From 0e2378d276bd6484c8e5e510619386fd558843dc Mon Sep 17 00:00:00 2001 From: photonstorm Date: Wed, 22 Oct 2014 23:53:32 +0100 Subject: [PATCH] Phaser 2.1.3 release. --- build/custom/phaser-arcade-physics.js | 181 +++++++++++++++++----- build/custom/phaser-arcade-physics.min.js | 26 ++-- build/custom/phaser-ninja-physics.js | 181 +++++++++++++++++----- build/custom/phaser-ninja-physics.min.js | 28 ++-- build/custom/phaser-no-libs.js | 102 +++++++----- build/custom/phaser-no-libs.min.js | 18 +-- build/custom/phaser-no-physics.js | 179 ++++++++++++++++----- build/custom/phaser-no-physics.min.js | 22 +-- build/custom/pixi.js | 77 +++++++++ build/custom/pixi.min.js | 8 +- build/phaser.js | 181 +++++++++++++++++----- build/phaser.map | 2 +- build/phaser.min.js | 37 +++-- 13 files changed, 793 insertions(+), 249 deletions(-) diff --git a/build/custom/phaser-arcade-physics.js b/build/custom/phaser-arcade-physics.js index 173043afe7..26506c6f39 100644 --- a/build/custom/phaser-arcade-physics.js +++ b/build/custom/phaser-arcade-physics.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.1.3 "Ravinda" - Built: Wed Oct 22 2014 22:48:37 +* v2.1.3 "Ravinda" - Built: Wed Oct 22 2014 23:49:48 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -153,6 +153,83 @@ PIXI.sayHello = function (type) PIXI.dontSayHello = true; }; +/** + * @author Adrien Brault + */ + +/** + * @class Polygon + * @constructor + * @param points* {Array|Array|Point...|Number...} This can be an array of Points that form the polygon, + * a flat array of numbers that will be interpreted as [x,y, x,y, ...], or the arguments passed can be + * all the points of the polygon e.g. `new PIXI.Polygon(new PIXI.Point(), new PIXI.Point(), ...)`, or the + * arguments passed can be flat x,y values e.g. `new PIXI.Polygon(x,y, x,y, x,y, ...)` where `x` and `y` are + * Numbers. + */ +PIXI.Polygon = function(points) +{ + //if points isn't an array, use arguments as the array + if(!(points instanceof Array))points = Array.prototype.slice.call(arguments); + + //if this is a flat array of numbers, convert it to points + if(points[0] instanceof PIXI.Point) + { + var p = []; + for(var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } + + this.closed = true; + this.points = points; +}; + +/** + * Creates a clone of this polygon + * + * @method clone + * @return {Polygon} a copy of the polygon + */ +PIXI.Polygon.prototype.clone = function() +{ + var points = this.points.slice(); + return new PIXI.Polygon(points); +}; + +/** + * Checks whether the x and y coordinates passed to this function are contained within this polygon + * + * @method contains + * @param x {Number} The X coordinate of the point to test + * @param y {Number} The Y coordinate of the point to test + * @return {Boolean} Whether the x/y coordinates are within this polygon + */ +PIXI.Polygon.prototype.contains = function(x, y) +{ + var inside = false; + + // use some raycasting to test hits + // https://github.com/substack/point-in-polygon/blob/master/index.js + var length = this.points.length / 2; + + for(var i = 0, j = length - 1; i < length; j = i++) + { + var xi = this.points[i * 2], yi = this.points[i * 2 + 1], + xj = this.points[j * 2], yj = this.points[j * 2 + 1], + intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); + + if(intersect) inside = !inside; + } + + return inside; +}; + +// constructor +PIXI.Polygon.prototype.constructor = PIXI.Polygon; + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -11477,7 +11554,7 @@ PIXI.AbstractFilter.prototype.apply = function(frameBuffer) * * Phaser - http://phaser.io * -* v2.1.3 "Ravinda" - Built: Wed Oct 22 2014 22:48:37 +* v2.1.3 "Ravinda" - Built: Wed Oct 22 2014 23:49:48 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -15272,13 +15349,39 @@ Phaser.Polygon = function (points) { */ this.type = Phaser.POLYGON; + // If points isn't an array, use arguments as the array + if (!(points instanceof Array)) + { + points = Array.prototype.slice.call(arguments); + } + + // If this is a flat array of numbers, convert it to points + if (points[0] instanceof Phaser.Point) + { + var p = []; + + for (var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } + + /** + * @property {array} points - An array of Points that make up this Polygon. + */ this.points = points; + + /** + * @property {boolean} closed - Is the Polygon closed or not? + */ + this.closed = true; + }; Phaser.Polygon.prototype = { - type: null, - /** * Creates a copy of the given Polygon. * This is a deep clone, the resulting copy contains new Phaser.Point objects @@ -15289,12 +15392,7 @@ Phaser.Polygon.prototype = { */ clone: function (output) { - var points = []; - - for (var i=0; i < this.points.length; i++) - { - points.push(this.points[i].clone()); - } + var points = this.points.slice(); if (typeof output === "undefined" || output === null) { @@ -15322,12 +15420,15 @@ Phaser.Polygon.prototype = { var inside = false; // use some raycasting to test hits https://github.com/substack/point-in-polygon/blob/master/index.js - for (var i = 0, j = this.points.length - 1; i < this.points.length; j = i++) + + var length = this.points.length / 2; + + for (var i = 0, j = length - 1; i < length; j = i++) { - var xi = this.points[i].x; - var yi = this.points[i].y; - var xj = this.points[j].x; - var yj = this.points[j].y; + var xi = this.points[i * 2].x; + var yi = this.points[i * 2 + 1].y; + var xj = this.points[j * 2].x; + var yj = this.points[j * 2 + 1].y; var intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); @@ -15341,7 +15442,33 @@ Phaser.Polygon.prototype = { }, - setTo : function(points) { + /** + * Sets this Polygon to the given points. + * + * @method Phaser.Polygon#setTo + * @param {Phaser.Point[]|number[]} points - The array of Points. + * @return {boolean} True if the coordinates are within this polygon, otherwise false. + */ + setTo: function (points) { + + // If points isn't an array, use arguments as the array + if (!(points instanceof Array)) + { + points = Array.prototype.slice.call(arguments); + } + + // If this is a flat array of numbers, convert it to points + if (points[0] instanceof Phaser.Point) + { + var p = []; + + for (var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } this.points = points; @@ -15394,7 +15521,7 @@ Object.defineProperty(Phaser.Polygon.prototype, 'points', { /** * Returns the area of the polygon. * -* @name Phaser.Circle#right +* @name Phaser.Polygon#area * @readonly */ Object.defineProperty(Phaser.Polygon.prototype, 'area', { @@ -15443,7 +15570,7 @@ Object.defineProperty(Phaser.Polygon.prototype, 'area', { }); // Because PIXI uses its own Polygon, we'll replace it with ours to avoid duplicating code or confusion. -PIXI.Polygon = Phaser.Polygon; +// PIXI.Polygon = Phaser.Polygon; /** * @author Mat Groves http://matgroves.com/ @Doormat23 @@ -40312,24 +40439,6 @@ Phaser.Graphics.prototype.destroy = function(destroyChildren) { }; -/* -* Draws a {Phaser.Polygon} or a {PIXI.Polygon} filled -* -* @method Phaser.Graphics.prototype.drawPolygon -*/ -Phaser.Graphics.prototype.drawPolygon = function (poly) { - - this.moveTo(poly.points[0].x, poly.points[0].y); - - for (var i = 1; i < poly.points.length; i += 1) - { - this.lineTo(poly.points[i].x, poly.points[i].y); - } - - this.lineTo(poly.points[0].x, poly.points[0].y); - -}; - /* * Draws a single {Phaser.Polygon} triangle from a {Phaser.Point} array * diff --git a/build/custom/phaser-arcade-physics.min.js b/build/custom/phaser-arcade-physics.min.js index 7a4fc796d7..3512b35f4a 100644 --- a/build/custom/phaser-arcade-physics.min.js +++ b/build/custom/phaser-arcade-physics.min.js @@ -1,18 +1,18 @@ /* Phaser (AP) v2.1.3 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.0.0",b.blendModes={NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},b.scaleModes={DEFAULT:0,LINEAR:0,NEAREST:1},b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array):(b.Float32Array=Array,b.Uint16Array=Array),b.INTERACTION_FREQUENCY=30,b.AUTO_PREVENT_DEFAULT=!0,b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.dontSayHello=!1,b.defaultRenderOptions={view:null,transparent:!1,antialias:!1,preserveDrawingBuffer:!1,resolution:1,clearBeforeRender:!0},b.sayHello=function(a){if(!b.dontSayHello){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var c=["%c %c %c Pixi.js "+b.VERSION+" - "+a+" %c %c http://www.pixijs.com/ %c %c ♥%c♥%c♥ ","background: #ff66a5","background: #ff66a5","color: #ff66a5; background: #030307;","background: #ff66a5","background: #ffc3dc","background: #ff66a5","color: #ff2424; background: #fff","color: #ff2424; background: #fff","color: #ff2424; background: #fff"];console.log.apply(console,c)}else window.console&&console.log("Pixi.js "+b.VERSION+" - http://www.pixijs.com/");b.dontSayHello=!0}},b.Matrix=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0},b.Matrix.prototype.fromArray=function(a){this.a=a[0],this.b=a[1],this.c=a[3],this.d=a[4],this.tx=a[2],this.ty=a[5]},b.Matrix.prototype.toArray=function(a){this.array||(this.array=new b.Float32Array(9));var c=this.array;return a?(c[0]=this.a,c[1]=this.b,c[2]=0,c[3]=this.c,c[4]=this.d,c[5]=0,c[6]=this.tx,c[7]=this.ty,c[8]=1):(c[0]=this.a,c[1]=this.c,c[2]=this.tx,c[3]=this.b,c[4]=this.d,c[5]=this.ty,c[6]=0,c[7]=0,c[8]=1),c},b.Matrix.prototype.apply=function(a,c){return c=c||new b.Point,c.x=this.a*a.x+this.b*a.y+this.tx,c.y=this.c*a.x+this.d*a.y+this.ty,c},b.Matrix.prototype.applyInverse=function(a,c){c=c||new b.Point;var d=1/(this.a*this.d+this.c*-this.b);return c.x=this.d*d*a.x+-this.c*d*a.y+(this.ty*this.c-this.tx*this.d)*d,c.y=this.a*d*a.y+-this.b*d*a.x+(-this.ty*this.a+this.tx*this.b)*d,c},b.Matrix.prototype.translate=function(a,b){return this.tx+=a,this.ty+=b,this},b.Matrix.prototype.scale=function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},b.Matrix.prototype.rotate=function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},b.Matrix.prototype.append=function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},b.Matrix.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this},b.identityMatrix=new b.Matrix,b.DisplayObject=function(){this.position=new b.Point,this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.buttonMode=!1,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this._interactive=!1,this.defaultCursor="pointer",this.worldTransform=new b.Matrix,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,Object.defineProperty(b.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var b=[],c=0;c=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;ga;a++)this.children[a].updateTransform()},b.DisplayObjectContainer.prototype.getBounds=function(){if(0===this.children.length)return b.EmptyRectangle;for(var a,c,d,e=1/0,f=1/0,g=-1/0,h=-1/0,i=!1,j=0,k=this.children.length;k>j;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a,this._interactive&&(this.stage.dirty=!0);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d.setStageReference(a)}},b.DisplayObjectContainer.prototype.removeStageReference=function(){for(var a=0,b=this.children.length;b>a;a++){var c=this.children[a];c.removeStageReference()}this._interactive&&(this.stage.dirty=!0),this.stage=null},b.DisplayObjectContainer.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);var b,c;if(this._mask||this._filters){for(this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);a.spriteBatch.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),a.spriteBatch.start()}else for(b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.DisplayObjectContainer.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);this._mask&&a.maskManager.pushMask(this._mask,a);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d._renderCanvas(a)}this._mask&&a.maskManager.popMask(a)}},b.Sprite=function(a){b.DisplayObjectContainer.call(this),this.anchor=new b.Point,this.texture=a,this._width=0,this._height=0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL,this.shader=null,a.baseTexture.hasLoaded?this.onTextureUpdate():(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.on("update",this.onTextureUpdateBind)),this.renderable=!0},b.Sprite.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Sprite.prototype.constructor=b.Sprite,Object.defineProperty(b.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(b.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),b.Sprite.prototype.setTexture=function(a){this.texture=a,this.cachedTint=16777215},b.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height)},b.Sprite.prototype.getBounds=function(a){var b=this.texture.frame.width,c=this.texture.frame.height,d=b*(1-this.anchor.x),e=b*-this.anchor.x,f=c*(1-this.anchor.y),g=c*-this.anchor.y,h=a||this.worldTransform,i=h.a,j=h.c,k=h.b,l=h.d,m=h.tx,n=h.ty,o=i*e+k*g+m,p=l*g+j*e+n,q=i*d+k*g+m,r=l*g+j*d+n,s=i*d+k*f+m,t=l*f+j*d+n,u=i*e+k*f+m,v=l*f+j*e+n,w=-1/0,x=-1/0,y=1/0,z=1/0;y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,z=z>p?p:z,z=z>r?r:z,z=z>t?t:z,z=z>v?v:z,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,x=p>x?p:x,x=r>x?r:x,x=t>x?t:x,x=v>x?v:x;var A=this._bounds;return A.x=y,A.width=w-y,A.y=z,A.height=x-z,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){var b,c;if(this._mask||this._filters){var d=a.spriteBatch;for(this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);d.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),d.start()}else for(a.spriteBatch.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.Sprite.prototype._renderCanvas=function(a){if(!(this.visible===!1||0===this.alpha||this.texture.crop.width<=0||this.texture.crop.height<=0)){if(this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,a.context.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a),this.texture.valid){var c=this.texture.baseTexture.resolution/a.resolution;a.context.globalAlpha=this.worldAlpha,a.roundPixels?a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution|0,this.worldTransform.ty*a.resolution|0):a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution,this.worldTransform.ty*a.resolution),a.smoothProperty&&a.scaleMode!==this.texture.baseTexture.scaleMode&&(a.scaleMode=this.texture.baseTexture.scaleMode,a.context[a.smoothProperty]=a.scaleMode===b.scaleModes.LINEAR);var d=this.texture.trim?this.texture.trim.x-this.anchor.x*this.texture.trim.width:this.anchor.x*-this.texture.frame.width,e=this.texture.trim?this.texture.trim.y-this.anchor.y*this.texture.trim.height:this.anchor.y*-this.texture.frame.height;16777215!==this.tint?(this.cachedTint!==this.tint&&(this.cachedTint=this.tint,this.tintedTexture=b.CanvasTinter.getTintedTexture(this,this.tint)),a.context.drawImage(this.tintedTexture,0,0,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)):a.context.drawImage(this.texture.baseTexture.source,this.texture.crop.x,this.texture.crop.y,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)}for(var f=0,g=this.children.length;g>f;f++)this.children[f]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},b.Sprite.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache'+this);return new b.Sprite(c)},b.Sprite.fromImage=function(a,c,d){var e=b.Texture.fromImage(a,c,d);return new b.Sprite(e)},b.SpriteBatch=function(a){b.DisplayObjectContainer.call(this),this.textureThing=a,this.ready=!1},b.SpriteBatch.prototype=Object.create(b.DisplayObjectContainer.prototype),b.SpriteBatch.prototype.constructor=b.SpriteBatch,b.SpriteBatch.prototype.initWebGL=function(a){this.fastSpriteBatch=new b.WebGLFastSpriteBatch(a),this.ready=!0},b.SpriteBatch.prototype.updateTransform=function(){b.DisplayObject.prototype.updateTransform.call(this)},b.SpriteBatch.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||!this.children.length||(this.ready||this.initWebGL(a.gl),a.spriteBatch.stop(),a.shaderManager.setShader(a.shaderManager.fastShader),this.fastSpriteBatch.begin(this,a),this.fastSpriteBatch.render(this),a.spriteBatch.start())},b.SpriteBatch.prototype._renderCanvas=function(a){if(this.visible&&!(this.alpha<=0)&&this.children.length){var c=a.context;c.globalAlpha=this.worldAlpha,b.DisplayObject.prototype.updateTransform.call(this);for(var d=this.worldTransform,e=!0,f=0;fi;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(c.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}c.descent=i-g,c.fontSize=c.ascent+c.descent,b.Text.fontPropertiesCache[a]=c}return c},b.Text.prototype.wordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g],e=this.style.wordWrapWidth-h):(e-=i,b+=" "+f[g])}d=2?parseInt(c[c.length-2],10):b.BitmapText.fonts[this.fontName].size,this.dirty=!0,this.tint=a.tint},b.BitmapText.prototype.updateText=function(){for(var a=b.BitmapText.fonts[this.fontName],c=new b.Point,d=null,e=[],f=0,g=[],h=0,i=this.fontSize/a.size,j=0;j=j;j++){var n=0;"right"===this.style.align?n=f-g[j]:"center"===this.style.align&&(n=(f-g[j])/2),m.push(n)}var o=this.children.length,p=e.length,q=this.tint||16777215;for(j=0;p>j;j++){var r=o>j?this.children[j]:this._pool.pop();r?r.setTexture(e[j].texture):r=new b.Sprite(e[j].texture),r.position.x=(e[j].position.x+m[e[j].line])*i,r.position.y=e[j].position.y*i,r.scale.x=r.scale.y=i,r.tint=q,r.parent||this.addChild(r)}for(;this.children.length>p;){var s=this.getChildAt(this.children.length-1);this._pool.push(s),this.removeChild(s)}this.textWidth=f*i,this.textHeight=(c.y+a.lineHeight)*i},b.BitmapText.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),b.DisplayObjectContainer.prototype.updateTransform.call(this)},b.BitmapText.fonts={},b.Stage=function(a){b.DisplayObjectContainer.call(this),this.worldTransform=new b.Matrix,this.interactive=!0,this.interactionManager=new b.InteractionManager(this),this.dirty=!0,this.stage=this,this.stage.hitArea=new b.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a)},b.Stage.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},b.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var a=0,b=this.children.length;b>a;a++)this.children[a].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},b.Stage.prototype.setBackgroundColor=function(a){this.backgroundColor=a||0,this.backgroundColorSplit=b.hex2rgb(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},b.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},function(a){for(var b=0,c=["ms","moz","webkit","o"],d=0;d>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){return function(a){function b(){for(var d=arguments.length,f=new Array(d);d--;)f[d]=arguments[d];return f=e.concat(f),c.apply(this instanceof b?this:a,f)}var c=this,d=arguments.length-1,e=[];if(d>0)for(e.length=d;d--;)e[d]=arguments[d+1];if("function"!=typeof c)throw new TypeError;return b.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(c.prototype),b}}()),b.AjaxRequest=function(){var a=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new window.XMLHttpRequest:!1;for(var b=0;b0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.EventTarget={call:function(a){a&&(a=a.prototype||a,b.EventTarget.mixin(a))},mixin:function(a){a.listeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?this._listeners[a].slice():[]},a.emit=a.dispatchEvent=function(a,c){if(this._listeners=this._listeners||{},"object"==typeof a&&(c=a,a=a.type),c&&c.__isEventObject===!0||(c=new b.Event(this,a,c)),this._listeners&&this._listeners[a]){var d,e=this._listeners[a],f=e.length,g=e[0];for(d=0;f>d;g=e[++d])if(g.call(this,c),c.stoppedImmediate)return this;if(c.stopped)return this}return this.parent&&this.parent.emit&&this.parent.emit.call(this.parent,a,c),this},a.on=a.addEventListener=function(a,b){return this._listeners=this._listeners||{},(this._listeners[a]=this._listeners[a]||[]).push(b),this},a.once=function(a,b){function c(){b.apply(d.off(a,c),arguments)}this._listeners=this._listeners||{};var d=this;return c._originalHandler=b,this.on(a,c)},a.off=a.removeEventListener=function(a,b){if(this._listeners=this._listeners||{},!this._listeners[a])return this;for(var c=this._listeners[a],d=b?c.length:0;d-->0;)(c[d]===b||c[d]._originalHandler===b)&&c.splice(d,1);return 0===c.length&&delete this._listeners[a],this},a.removeAllListeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?(delete this._listeners[a],this):this}}},b.Event=function(a,b,c){this.__isEventObject=!0,this.stopped=!1,this.stoppedImmediate=!1,this.target=a,this.type=b,this.data=c,this.content=c,this.timeStamp=Date.now()},b.Event.prototype.stopPropagation=function(){this.stopped=!0},b.Event.prototype.stopImmediatePropagation=function(){this.stoppedImmediate=!0},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return window.console.log("PIXI Warning: shape too complex to fill"),[];for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.initDefaultShaders=function(){},b.CompileVertexShader=function(a,c){return b._CompileShader(a,c,a.VERTEX_SHADER)},b.CompileFragmentShader=function(a,c){return b._CompileShader(a,c,a.FRAGMENT_SHADER)},b._CompileShader=function(a,b,c){var d=b.join("\n"),e=a.createShader(c); -return a.shaderSource(e,d),a.compileShader(e),a.getShaderParameter(e,a.COMPILE_STATUS)?e:(window.console.log(a.getShaderInfoLog(e)),null)},b.compileProgram=function(a,c,d){var e=b.CompileFragmentShader(a,d),f=b.CompileVertexShader(a,c),g=a.createProgram();return a.attachShader(g,f),a.attachShader(g,e),a.linkProgram(g),a.getProgramParameter(g,a.LINK_STATUS)||window.console.log("Could not initialise shaders"),g},b.PixiShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.textureCount=0,this.firstRun=!0,this.dirty=!0,this.attributes=[],this.init()},b.PixiShader.prototype.constructor=b.PixiShader,b.PixiShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc||b.PixiShader.defaultVertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute];for(var d in this.uniforms)this.uniforms[d].uniformLocation=a.getUniformLocation(c,d);this.initUniforms(),this.program=c},b.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a,b=this.gl;for(var c in this.uniforms){a=this.uniforms[c];var d=a.type;"sampler2D"===d?(a._init=!1,null!==a.value&&this.initSampler2D(a)):"mat2"===d||"mat3"===d||"mat4"===d?(a.glMatrix=!0,a.glValueLength=1,"mat2"===d?a.glFunc=b.uniformMatrix2fv:"mat3"===d?a.glFunc=b.uniformMatrix3fv:"mat4"===d&&(a.glFunc=b.uniformMatrix4fv)):(a.glFunc=b["uniform"+d],a.glValueLength="2f"===d||"2i"===d?2:"3f"===d||"3i"===d?3:"4f"===d||"4i"===d?4:1)}},b.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){var b=this.gl;if(b.activeTexture(b["TEXTURE"+this.textureCount]),b.bindTexture(b.TEXTURE_2D,a.value.baseTexture._glTextures[b.id]),a.textureData){var c=a.textureData,d=c.magFilter?c.magFilter:b.LINEAR,e=c.minFilter?c.minFilter:b.LINEAR,f=c.wrapS?c.wrapS:b.CLAMP_TO_EDGE,g=c.wrapT?c.wrapT:b.CLAMP_TO_EDGE,h=c.luminance?b.LUMINANCE:b.RGBA;if(c.repeat&&(f=b.REPEAT,g=b.REPEAT),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,!!c.flipY),c.width){var i=c.width?c.width:512,j=c.height?c.height:2,k=c.border?c.border:0;b.texImage2D(b.TEXTURE_2D,0,h,i,j,k,h,b.UNSIGNED_BYTE,null)}else b.texImage2D(b.TEXTURE_2D,0,h,b.RGBA,b.UNSIGNED_BYTE,a.value.baseTexture.source);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,d),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,f),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,g)}b.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},b.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a,c=this.gl;for(var d in this.uniforms)a=this.uniforms[d],1===a.glValueLength?a.glMatrix===!0?a.glFunc.call(c,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c,a.uniformLocation,a.value):2===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y):3===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z):4===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"===a.type&&(a._init?(c.activeTexture(c["TEXTURE"+this.textureCount]),a.value.baseTexture._dirty[c.id]?b.defaultRenderer.updateTexture(a.value.baseTexture):c.bindTexture(c.TEXTURE_2D,a.value.baseTexture._glTextures[c.id]),c.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},b.PixiShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec4 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"],b.PixiFastShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"],this.textureCount=0,this.init()},b.PixiFastShader.prototype.constructor=b.PixiFastShader,b.PixiFastShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.uMatrix=a.getUniformLocation(c,"uMatrix"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aPositionCoord=a.getAttribLocation(c,"aPositionCoord"),this.aScale=a.getAttribLocation(c,"aScale"),this.aRotation=a.getAttribLocation(c,"aRotation"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute],this.program=c},b.PixiFastShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.StripShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;","}"],this.init()},b.StripShader.prototype.constructor=b.StripShader,b.StripShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.attributes=[this.aVertexPosition,this.aTextureCoord],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.StripShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.PrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor * vec4(tint * alpha, alpha);","}"],this.init()},b.PrimitiveShader.prototype.constructor=b.PrimitiveShader,b.PrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.ComplexPrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform vec3 tint;","uniform float alpha;","uniform vec3 color;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = vec4(color * alpha * tint, alpha);","}"],this.init()},b.ComplexPrimitiveShader.prototype.constructor=b.ComplexPrimitiveShader,b.ComplexPrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.color=a.getUniformLocation(c,"color"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.ComplexPrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.WebGLGraphics=function(){},b.WebGLGraphics.renderGraphics=function(a,c){var d,e=c.gl,f=c.projection,g=c.offset,h=c.shaderManager.primitiveShader;a.dirty&&b.WebGLGraphics.updateGraphics(a,e);for(var i=a._webGL[e.id],j=0;j=6&&(h.points.length>10?(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g)):(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildPoly(h,g))),h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))):(g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g)),d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d),n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i)}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.lastIndex=0,this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[],this.lastIndex=0},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},b.glContexts=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)"undefined"==typeof d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.sayHello("webGL"),b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this.contextLostBound=this.handleContextLost.bind(this),this.contextRestoredBound=this.handleContextRestored.bind(this),this.view.addEventListener("webglcontextlost",this.contextLostBound,!1),this.view.addEventListener("webglcontextrestored",this.contextRestoredBound,!1),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(a.interactive&&a.interactionManager.removeEvents(),this.__stage=a),a.updateTransform();var b=this.gl;a._interactive?a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)):a._interactiveEventsAdded&&(a._interactiveEventsAdded=!1,a.interactionManager.setTarget(this)),b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.handleContextLost=function(a){a.preventDefault(),this.contextLost=!0},b.WebGLRenderer.prototype.handleContextRestored=function(){this.initContext();for(var a in b.TextureCache){var c=b.TextureCache[a].baseTexture;c._glTextures=[]}this.contextLost=!1},b.WebGLRenderer.prototype.destroy=function(){this.view.off("webglcontextlost",this.contextLostBound),this.view.off("webglcontextrestored",this.contextRestoredBound),b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a){var b=a.texture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=b.baseTexture);var c=b._uvs;if(c){var d,e,f,g,h=a.worldAlpha,i=a.tint,j=this.vertices,k=a.anchor.x,l=a.anchor.y;if(b.trim){var m=b.trim;e=m.x-k*m.width,d=e+b.crop.width,g=m.y-l*m.height,f=g+b.crop.height}else d=b.frame.width*(1-k),e=b.frame.width*-k,f=b.frame.height*(1-l),g=b.frame.height*-l;var n=4*this.currentBatchSize*this.vertSize,o=b.baseTexture.resolution,p=a.worldTransform,q=p.a/o,r=p.b/o,s=p.c/o,t=p.d/o,u=p.tx,v=p.ty;j[n++]=q*e+s*g+u,j[n++]=t*g+r*e+v,j[n++]=c.x0,j[n++]=c.y0,j[n++]=h,j[n++]=i,j[n++]=q*d+s*g+u,j[n++]=t*g+r*d+v,j[n++]=c.x1,j[n++]=c.y1,j[n++]=h,j[n++]=i,j[n++]=q*d+s*f+u,j[n++]=t*f+r*d+v,j[n++]=c.x2,j[n++]=c.y2,j[n++]=h,j[n++]=i,j[n++]=q*e+s*f+u,j[n++]=t*f+r*e+v,j[n++]=c.x3,j[n++]=c.y3,j[n++]=h,j[n++]=i,this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs;a.tilePosition.x%=c.baseTexture.width*a.tileScaleOffset.x,a.tilePosition.y%=c.baseTexture.height*a.tileScaleOffset.y;var e=a.tilePosition.x/(c.baseTexture.width*a.tileScaleOffset.x),f=a.tilePosition.y/(c.baseTexture.height*a.tileScaleOffset.y),g=a.width/c.baseTexture.width/(a.tileScale.x*a.tileScaleOffset.x),h=a.height/c.baseTexture.height/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-e,d.y0=0-f,d.x1=1*g-e,d.y1=0-f,d.x2=1*g-e,d.y2=1*h-f,d.x3=0-e,d.y3=1*h-f;var i=a.worldAlpha,j=a.tint,k=this.vertices,l=a.width,m=a.height,n=a.anchor.x,o=a.anchor.y,p=l*(1-n),q=l*-n,r=m*(1-o),s=m*-o,t=4*this.currentBatchSize*this.vertSize,u=c.baseTexture.resolution,v=a.worldTransform,w=v.a/u,x=v.b/u,y=v.c/u,z=v.d/u,A=v.tx,B=v.ty;k[t++]=w*q+y*s+A,k[t++]=z*s+x*q+B,k[t++]=d.x0,k[t++]=d.y0,k[t++]=i,k[t++]=j,k[t++]=w*p+y*s+A,k[t++]=z*s+x*p+B,k[t++]=d.x1,k[t++]=d.y1,k[t++]=i,k[t++]=j,k[t++]=w*p+y*r+A,k[t++]=z*r+x*p+B,k[t++]=d.x2,k[t++]=d.y2,k[t++]=i,k[t++]=j,k[t++]=w*q+y*r+A,k[t++]=z*r+x*q+B,k[t++]=d.x3,k[t++]=d.y3,k[t++]=i,k[t++]=j,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,2,c.FLOAT,!1,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var a=4*this.size*this.vertSize,b=6*this.maxSize;this.vertices=new Float32Array(a),this.indices=new Uint16Array(b),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var c=0,d=0;b>c;c+=6,d+=4)this.indices[c+0]=d+0,this.indices[c+1]=d+1,this.indices[c+2]=d+2,this.indices[c+3]=d+0,this.indices[c+4]=d+2,this.indices[c+5]=d+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(g.fillColor||0===g.fillColor)&&(c.globalAlpha=g.fillAlpha*d,c.fillStyle=e="#"+("00000"+(0|g.fillColor).toString(16)).substr(-6),c.fill()),g.lineWidth&&(c.globalAlpha=g.lineAlpha*d,c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){d>1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){c.beginPath();var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iA?A:z,c.beginPath(),c.moveTo(v,w+z),c.lineTo(v,w+y-z),c.quadraticCurveTo(v,w+y,v+z,w+y),c.lineTo(v+x-z,w+y),c.quadraticCurveTo(v+x,w+y,v+x,w+y-z),c.lineTo(v+x,w+z),c.quadraticCurveTo(v+x,w,v+x-z,w),c.lineTo(v+z,w),c.quadraticCurveTo(v,w,v,w+z),c.closePath()}}}},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.padding=0},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var b=a.gl,c=a.projection,d=a.offset,e=a.shaderManager.stripShader;b.blendFunc(b.ONE,b.ONE_MINUS_SRC_ALPHA),b.uniformMatrix3fv(e.translationMatrix,!1,this.worldTransform.toArray(!0)),b.uniform2f(e.projectionVector,c.x,-c.y),b.uniform2f(e.offsetVector,-d.x,-d.y),b.uniform1f(e.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.STATIC_DRAW),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)):(b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferSubData(b.ARRAY_BUFFER,0,this.verticies),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),b.drawElements(b.TRIANGLE_STRIP,this.indices.length,b.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var b=a.context,c=this.worldTransform;a.roundPixels?b.setTransform(c.a,c.b,c.c,c.d,0|c.tx,0|c.ty):b.setTransform(c.a,c.b,c.c,c.d,c.tx,c.ty);var d=this,e=d.verticies,f=d.uvs,g=e.length/2;this.count++;for(var h=0;g-2>h;h++){var i=2*h,j=e[i],k=e[i+2],l=e[i+4],m=e[i+1],n=e[i+3],o=e[i+5];if(this.padding>0){var p=(j+k+l)/3,q=(m+n+o)/3,r=j-p,s=m-q,t=Math.sqrt(r*r+s*s);j=p+r/t*(t+3),m=q+s/t*(t+3),r=k-p,s=n-q,t=Math.sqrt(r*r+s*s),k=p+r/t*(t+3),n=q+s/t*(t+3),r=l-p,s=o-q,t=Math.sqrt(r*r+s*s),l=p+r/t*(t+3),o=q+s/t*(t+3) -}var u=f[i]*d.texture.width,v=f[i+2]*d.texture.width,w=f[i+4]*d.texture.width,x=f[i+1]*d.texture.height,y=f[i+3]*d.texture.height,z=f[i+5]*d.texture.height;b.save(),b.beginPath(),b.moveTo(j,m),b.lineTo(k,n),b.lineTo(l,o),b.closePath(),b.clip();var A=u*y+x*w+v*z-y*w-x*v-u*z,B=j*y+x*l+k*z-y*l-x*k-j*z,C=u*k+j*w+v*l-k*w-j*v-u*l,D=u*y*l+x*k*w+j*v*z-j*y*w-x*v*l-u*k*z,E=m*y+x*o+n*z-y*o-x*n-m*z,F=u*n+m*w+v*o-n*w-m*v-u*o,G=u*y*o+x*n*w+m*v*z-m*y*w-x*v*o-u*n*z;b.transform(B/A,E/A,C/A,F/A,D/A,G/A),b.drawImage(d.texture.baseTexture.source,0,0),b.restore()}},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.verticies=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.verticies,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||100,this._height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this._mask,a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d,e,f=this.worldTransform,g=a.resolution;if(c.setTransform(f.a*g,f.c*g,f.b*g,f.d*g,f.tx*g,f.ty*g),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]);var h=this.tilePosition,i=this.tileScale;for(h.x%=this.tilingTexture.baseTexture.width,h.y%=this.tilingTexture.baseTexture.height,c.scale(i.x,i.y),c.translate(h.x+this.anchor.x*-this._width,h.y+this.anchor.y*-this._height),c.fillStyle=this.__tilePattern,c.fillRect(-h.x,-h.y,this._width/i.x,this._height/i.y),c.scale(1/i.x,1/i.y),c.translate(-h.x+this.anchor.x*this._width,-h.y+this.anchor.y*this._height),this._mask&&a.maskManager.popMask(a.context),d=0,e=this.children.length;e>d;d++)this.children[d]._renderCanvas(a)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.onTextureUpdate=function(){},b.TilingSprite.prototype.generateTilingTexture=function(a){if(this.texture.baseTexture.hasLoaded){var c,d,e=this.originalTexture||this.texture,f=e.frame,g=f.width!==e.baseTexture.width||f.height!==e.baseTexture.height,h=!1;if(a?(c=b.getNextPowerOfTwo(f.width),d=b.getNextPowerOfTwo(f.height),(f.width!==c||f.height!==d)&&(h=!0)):g&&(c=f.width,d=f.height,h=!0),h){var i;this.tilingTexture&&this.tilingTexture.isTiling?(i=this.tilingTexture.canvasBuffer,i.resize(c,d),this.tilingTexture.baseTexture.width=c,this.tilingTexture.baseTexture.height=d,this.tilingTexture.needsUpdate=!0):(i=new b.CanvasBuffer(c,d),this.tilingTexture=b.Texture.fromCanvas(i.canvas),this.tilingTexture.canvasBuffer=i,this.tilingTexture.isTiling=!0),i.context.drawImage(e.baseTexture.source,e.crop.x,e.crop.y,e.crop.width,e.crop.height,0,0,c,d),this.tileScaleOffset.x=f.width/c,this.tileScaleOffset.y=f.height/d}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=e;this.refreshTexture=!1,this.originalTexture=this.texture,this.texture=this.tilingTexture,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this._dirty=[!0,!0,!0,!0],a){if((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height)this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty();else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.naturalWidth||d.source.width,d.height=d.source.naturalHeight||d.source.height,d.dirty(),d.dispatchEvent({type:"loaded",content:d})},this.source.onerror=function(){d.dispatchEvent({type:"error",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.EventTarget.mixin(b.BaseTexture.prototype),b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,this.source.src=""):this.source&&this.source._pixiId&&delete b.BaseTextureCache[this.source._pixiId],this.source=null;for(var a=this._glTextures.length-1;a>=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;athis.baseTexture.width||a.y+a.height>this.baseTexture.height))throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width,this.height)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width*this.resolution,this.height*this.resolution,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=this.frame.width=this.crop.width=a,this.height=this.frame.height=this.crop.height=c,d&&(this.baseTexture.width=this.width,this.baseTexture.height=this.height),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width*this.resolution,this.height*this.resolution))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1),a.worldAlpha=1;for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();var h=this.renderer.gl;h.viewport(0,0,this.width*this.resolution,this.height*this.resolution),h.bindFramebuffer(h.FRAMEBUFFER,this.textureBuffer.frameBuffer),c&&this.textureBuffer.clear(),this.renderer.spriteBatch.dirty=!0,this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),this.renderer.spriteBatch.dirty=!0}},b.RenderTexture.prototype.renderCanvas=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),b&&d.append(b);for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();c&&this.textureBuffer.clear();var h=this.textureBuffer.context,i=this.renderer.resolution;this.renderer.resolution=this.resolution,this.renderer.renderDisplayObject(a,h),this.renderer.resolution=i}},b.RenderTexture.prototype.getImage=function(){var a=new Image;return a.src=this.getBase64(),a},b.RenderTexture.prototype.getBase64=function(){return this.getCanvas().toDataURL()},b.RenderTexture.prototype.getCanvas=function(){if(this.renderer.type===b.WEBGL_RENDERER){var a=this.renderer.gl,c=this.textureBuffer.width,d=this.textureBuffer.height,e=new Uint8Array(4*c*d);a.bindFramebuffer(a.FRAMEBUFFER,this.textureBuffer.frameBuffer),a.readPixels(0,0,c,d,a.RGBA,a.UNSIGNED_BYTE,e),a.bindFramebuffer(a.FRAMEBUFFER,null);for(var f=new b.CanvasBuffer(c,d),g=f.context.getImageData(0,0,c,d),h=g.data,i=0;ia;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this),function(){var a=this,b=b||{VERSION:"2.1.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};if(PIXI.InteractionManager=PIXI.InteractionManager||function(){},PIXI.dontSayHello=!0,b.Utils={getProperty:function(a,b){for(var c=b.split("."),d=c.pop(),e=c.length,f=1,g=c[0];e>f&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},transposeArray:function(a){for(var b=new Array(a[0].length),c=0;c-1;d--)b[c][d]=a[d][c]}return b},rotateArray:function(a,c){if("string"!=typeof c&&(c=(c%360+360)%360),90===c||-270===c||"rotateLeft"===c)a=b.Utils.transposeArray(a),a=a.reverse();else if(-90===c||270===c||"rotateRight"===c)a=a.reverse(),a=b.Utils.transposeArray(a);else if(180===Math.abs(c)||"rotate180"===c){for(var d=0;d0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h},mixin:function(a,c){if(!a||"object"!=typeof a)return c;for(var d in a){var e=a[d];if(!e.childNodes&&!e.cloneNode){var f=typeof a[d];c[d]=a[d]&&"object"===f?typeof c[d]===f?b.Utils.mixin(a[d],c[d]):b.Utils.mixin(a[d],new e.constructor):a[d]}}return c}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var c=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;b0?.5*c:0},b.Circle.prototype={type:null,circumference:function(){return 2*Math.PI*this._radius},getBounds:function(){return new b.Rectangle(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRounded(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},angleSq:function(a){return this.subtract(a).angle(a.subtract(this))},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},b.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},b.Point.angleSq=function(a,b){return a.subtract(b).angle(b.subtract(a))},b.Point.negative=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.x,-a.y)},b.Point.multiplyAdd=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+c.x*d,a.y+c.y*d)},b.Point.interpolate=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+(c.x-a.x)*d,a.y+(c.y-a.y)*d)},b.Point.perp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.y,a.x)},b.Point.rperp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(a.y,-a.x)},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRounded(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.project=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c)/c.getMagnitudeSq();return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.projectUnit=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c);return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.normalRightHand=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-1*a.y,a.x)},b.Point.normalize=function(a,c){"undefined"==typeof c&&(c=new b.Point);var d=a.getMagnitude();return 0!==d&&c.setTo(a.x/d,a.y/d),c},b.Point.rotate=function(a,c,d,e,f,g){f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y)));var h=e+Math.atan2(a.y-d,a.x-c);return a.setTo(c+g*Math.cos(h),d+g*Math.sin(h))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},b.Point.parse=function(a,c,d){c=c||"x",d=d||"y";var e=new b.Point;return a[c]&&(e.x=parseInt(a[c],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return"undefined"==typeof b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(a,this)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(b.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"topRight",{get:function(){return new b.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y) -},b.Rectangle.size=function(a,c){return"undefined"==typeof c||null===c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c||null===c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(c.x-a.x)-(e.x-d.x)*(c.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((c.x-a.x)*(a.y-d.y)-(c.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new b.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){this.type=b.POLYGON,this.points=a},b.Polygon.prototype={type:null,clone:function(a){for(var c=[],d=0;db!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!c)}return c},setTo:function(a){return this.points=a,this}},b.Polygon.prototype.constructor=b.Polygon,Object.defineProperty(b.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this._points=a}}),Object.defineProperty(b.Polygon.prototype,"area",{get:function(){var a,b,c,d,e,f=Number.MAX_VALUE,g=0;for(e=0;e=l;l++)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;q++)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[a,b]):this.moveTo(a,b),0===this.currentPath.length&&this.moveTo(a,b);var f=this.currentPath,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){var g=a+Math.cos(d)*c,h=b+Math.sin(d)*c,i=this.currentPath.shape.points;if((0!==i.length&&i[i.length-2]!==g||i[i.length-1]!==h)&&(this.moveTo(g,h),i=this.currentPath.shape.points),d===e)return this;!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var j=f?-1*(d-e):e-d,k=Math.abs(j)/(2*Math.PI)*40;if(0===j)return this;for(var l=j/(2*k),m=2*l,n=Math.cos(l),o=Math.sin(l),p=k-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);i.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape({points:[a,b,c,d,e],type:PIXI.Graphics.RREC}),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){return a instanceof Array||(a=Array.prototype.slice.call(arguments)),this.drawShape(new PIXI.Polygon(a)),this},PIXI.Graphics.prototype.clear=function(){return this.lineWidth=0,this.filling=!1,this.dirty=!0,this.clearDirty=!0,this.graphicsData=[],this},PIXI.Graphics.prototype.generateTexture=function(a,b){a=a||1;var c=this.getBounds(),d=new PIXI.CanvasBuffer(c.width*a,c.height*a),e=PIXI.Texture.fromCanvas(d.canvas,b);return e.baseTexture.resolution=a,d.context.scale(a,a),d.context.translate(-c.x,-c.y),PIXI.CanvasGraphics.renderGraphics(this,d.context),e},PIXI.Graphics.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite,a);if(a.spriteBatch.stop(),a.blendModeManager.setBlendMode(this.blendMode),this._mask&&a.maskManager.pushMask(this._mask,a),this._filters&&a.filterManager.pushFilter(this._filterBlock),this.blendMode!==a.spriteBatch.currentBlendMode){a.spriteBatch.currentBlendMode=this.blendMode;var b=PIXI.blendModesWebGL[a.spriteBatch.currentBlendMode];a.spriteBatch.gl.blendFunc(b[0],b[1])}if(this.webGLDirty&&(this.dirty=!0,this.webGLDirty=!1),PIXI.WebGLGraphics.renderGraphics(this,a),this.children.length){a.spriteBatch.start();for(var c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this.mask,a),a.drawCount++,a.spriteBatch.start()}},PIXI.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite,a);var b=a.context,c=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,b.globalCompositeOperation=PIXI.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a);var d=a.resolution;b.setTransform(c.a*d,c.b*d,c.c*d,c.d*d,c.tx*d,c.ty*d),PIXI.CanvasGraphics.renderGraphics(this,b);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},PIXI.Graphics.prototype.getBounds=function(a){this.dirty&&(this.updateBounds(),this.webGLDirty=!0,this.cachedSpriteDirty=!0,this.dirty=!1);var b=this._bounds,c=b.x,d=b.width+b.x,e=b.y,f=b.height+b.y,g=a||this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=n,w=o,x=n,y=o;return x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,b.x=x,b.width=v-x,b.y=y,b.height=w-y,b},PIXI.Graphics.prototype.updateBounds=function(){var a=1/0,b=-1/0,c=1/0,d=-1/0;if(this.graphicsData.length)for(var e,f,g,h,i,j,k=0;kg?g:a,b=g+i>b?g+i:b,c=c>h?h:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.CIRC)g=e.x,h=e.y,i=e.radius+n/2,j=e.radius+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.ELIP)g=e.x,h=e.y,i=e.width+n/2,j=e.height+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else{f=e.points;for(var o=0;og-n?g-n:a,b=g+n>b?g+n:b,c=c>h-n?h-n:c,d=h+n>d?h+n:d}}else a=0,b=0,c=0,d=0;var p=this.boundsPadding,q=this._bounds;q.x=a-p,q.width=b-a+2*p,q.y=c-p,q.height=d-c+2*p},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null;var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this.fillColor=d,this.fillAlpha=e,this.fill=f,this.shape=g,this.type=g.type},PIXI.Graphics.POLY=0,PIXI.Graphics.RECT=1,PIXI.Graphics.CIRC=2,PIXI.Graphics.ELIP=3,PIXI.Graphics.RREC=4,PIXI.Polygon.prototype.type=PIXI.Graphics.POLY,PIXI.Rectangle.prototype.type=PIXI.Graphics.RECT,PIXI.Circle.prototype.type=PIXI.Graphics.CIRC,PIXI.Ellipse.prototype.type=PIXI.Graphics.ELIP,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this._position=new b.Point,this.displayObject=null,this.scale=null,this._targetPosition=new b.Point},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target).multiply(this.target.parent?this.target.parent.worldTransform.a:1,this.target.parent?this.target.parent.worldTransform.d:1),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},resize:function(){},paused:function(){},pauseUpdate:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[])},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created&&this.onPauseUpdateCallback?this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.ArrayList=function(){this.total=0,this.position=0,this.list=[]},b.ArrayList.prototype={add:function(a){return this.exists(a)||(this.list.push(a),this.total++),a},getIndex:function(a){return this.list.indexOf(a)},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0,this.total=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),this.total--,a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)}},Object.defineProperty(b.ArrayList.prototype,"first",{get:function(){return this.position=0,this.total>0?this.list[0]:null}}),Object.defineProperty(b.ArrayList.prototype,"next",{get:function(){return this.positionb;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange;var a=this;this.game.device.cocoonJSApp&&(CocoonJS.App.onSuspended.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"pause"})}),CocoonJS.App.onActivated.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"resume"})}))},b.Stage.prototype.visibilityChange=function(a){return"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(this.disableVisibilityChange||(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden||"pause"===a.type?this.game.gamePaused(a):this.game.gameResumed(a)))},b.Stage.prototype.setBackgroundColor=function(a){if("string"==typeof a){var c=b.Color.hexToColor(a);this._backgroundColor=b.Color.getColor(c.r,c.g,c.b)}else{var c=b.Color.getRGB(a);this._backgroundColor=a}this.backgroundColorSplit=[c.r/255,c.g/255,c.b/255],this.backgroundColorString=b.Color.RGBtoString(c.r,c.g,c.b,255,"#")},b.Stage.prototype.destroy=function(){this._hiddenVar&&document.removeEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=null,window.onpageshow=null,window.onblur=null,window.onfocus=null},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this.game.transparent||this.setBackgroundColor(a)}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.ignoreDestroy=!1,this.classType=b.Sprite,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this.onDestroy=new b.Signal,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a,b){return"undefined"==typeof b&&(b=!1),a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,!b&&a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addMultiple=function(a,b){if(Array.isArray(a))for(var c=0;ca||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,b,c,d,e){"undefined"==typeof e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,f.events&&f.events.onAddedToGroup.dispatch(f,this),null===this.cursor&&(this.cursor=f),f},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.resetCursor=function(a){return"undefined"==typeof a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this._cache[8]=a,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},b.Group.prototype.setProperty=function(a,b,c,d,e){if("undefined"==typeof e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},b.Group.prototype.checkProperty=function(a,c,d,e){return"undefined"==typeof e&&(e=!1),!b.Utils.getProperty(a,c)&&e?!1:b.Utils.getProperty(a,c)!==d?!1:!0},b.Group.prototype.set=function(a,b,c,d,e,f,g){return"undefined"==typeof g&&(g=!1),b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},b.Group.prototype.setAll=function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof f&&(f=!1),a=a.split("."),e=e||0;for(var g=0,h=this.children.length;h>g;g++)(!c||c&&this.children[g].alive)&&(!d||d&&this.children[g].visible)&&this.setProperty(this.children[g],a,b,e,f)},b.Group.prototype.setAllChildren=function(a,c,d,e,f,g){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),"undefined"==typeof g&&(g=!1),f=f||0;for(var h=0,i=this.children.length;i>h;h++)(!d||d&&this.children[h].alive)&&(!e||e&&this.children[h].visible)&&(this.children[h]instanceof b.Group?this.children[h].setAllChildren(a,c,d,e,f,g):this.setProperty(this.children[h],a.split("."),c,f,g))},b.Group.prototype.checkAll=function(a,b,c,d,e){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);for(var f=0,g=this.children.length;g>f;f++)if((!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&!this.checkProperty(this.children[f],a,b,e))return!1;return!0},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.filter=function(a,c){for(var d=-1,e=this.children.length,f=new b.ArrayList;++de;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b,c){if("undefined"==typeof b&&(b=!1),"undefined"==typeof c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup.dispatch(a,this);var d=this.removeChild(a);return this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},b.Group.prototype.removeAll=function(a,b){if("undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);a&&c&&c.destroy(!0)}while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c,d){if("undefined"==typeof b&&(b=this.children.length-1),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup.dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},b.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},b.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(b.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){awindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.bounds=new b.Rectangle,this.aspectRatio=0,this.sourceAspectRatio=0,this.event=null,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this.parentIsWindow=!1,this.parentNode=null,this.parentScaleFactor=new b.Point(1,1),this.trackParentInterval=2e3,this.onResize=null,this.onResizeContext=null,this._scaleMode=b.ScaleManager.NO_SCALE,this._width=0,this._height=0,this._check=null,this._nextParentCheck=0,this._parentBounds=null,a.config&&this.parseConfig(a.config),this.setupScale(c,d) +(function(){var a=this,b=b||{};b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.0.0",b.blendModes={NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},b.scaleModes={DEFAULT:0,LINEAR:0,NEAREST:1},b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array):(b.Float32Array=Array,b.Uint16Array=Array),b.INTERACTION_FREQUENCY=30,b.AUTO_PREVENT_DEFAULT=!0,b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.dontSayHello=!1,b.defaultRenderOptions={view:null,transparent:!1,antialias:!1,preserveDrawingBuffer:!1,resolution:1,clearBeforeRender:!0},b.sayHello=function(a){if(!b.dontSayHello){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var c=["%c %c %c Pixi.js "+b.VERSION+" - "+a+" %c %c http://www.pixijs.com/ %c %c ♥%c♥%c♥ ","background: #ff66a5","background: #ff66a5","color: #ff66a5; background: #030307;","background: #ff66a5","background: #ffc3dc","background: #ff66a5","color: #ff2424; background: #fff","color: #ff2424; background: #fff","color: #ff2424; background: #fff"];console.log.apply(console,c)}else window.console&&console.log("Pixi.js "+b.VERSION+" - http://www.pixijs.com/");b.dontSayHello=!0}},b.Polygon=function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}this.closed=!0,this.points=a},b.Polygon.prototype.clone=function(){var a=this.points.slice();return new b.Polygon(a)},b.Polygon.prototype.contains=function(a,b){for(var c=!1,d=this.points.length/2,e=0,f=d-1;d>e;f=e++){var g=this.points[2*e],h=this.points[2*e+1],i=this.points[2*f],j=this.points[2*f+1],k=h>b!=j>b&&(i-g)*(b-h)/(j-h)+g>a;k&&(c=!c)}return c},b.Polygon.prototype.constructor=b.Polygon,b.Matrix=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0},b.Matrix.prototype.fromArray=function(a){this.a=a[0],this.b=a[1],this.c=a[3],this.d=a[4],this.tx=a[2],this.ty=a[5]},b.Matrix.prototype.toArray=function(a){this.array||(this.array=new b.Float32Array(9));var c=this.array;return a?(c[0]=this.a,c[1]=this.b,c[2]=0,c[3]=this.c,c[4]=this.d,c[5]=0,c[6]=this.tx,c[7]=this.ty,c[8]=1):(c[0]=this.a,c[1]=this.c,c[2]=this.tx,c[3]=this.b,c[4]=this.d,c[5]=this.ty,c[6]=0,c[7]=0,c[8]=1),c},b.Matrix.prototype.apply=function(a,c){return c=c||new b.Point,c.x=this.a*a.x+this.b*a.y+this.tx,c.y=this.c*a.x+this.d*a.y+this.ty,c},b.Matrix.prototype.applyInverse=function(a,c){c=c||new b.Point;var d=1/(this.a*this.d+this.c*-this.b);return c.x=this.d*d*a.x+-this.c*d*a.y+(this.ty*this.c-this.tx*this.d)*d,c.y=this.a*d*a.y+-this.b*d*a.x+(-this.ty*this.a+this.tx*this.b)*d,c},b.Matrix.prototype.translate=function(a,b){return this.tx+=a,this.ty+=b,this},b.Matrix.prototype.scale=function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},b.Matrix.prototype.rotate=function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},b.Matrix.prototype.append=function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},b.Matrix.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this},b.identityMatrix=new b.Matrix,b.DisplayObject=function(){this.position=new b.Point,this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.buttonMode=!1,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this._interactive=!1,this.defaultCursor="pointer",this.worldTransform=new b.Matrix,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,Object.defineProperty(b.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var b=[],c=0;c=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;ga;a++)this.children[a].updateTransform()},b.DisplayObjectContainer.prototype.getBounds=function(){if(0===this.children.length)return b.EmptyRectangle;for(var a,c,d,e=1/0,f=1/0,g=-1/0,h=-1/0,i=!1,j=0,k=this.children.length;k>j;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a,this._interactive&&(this.stage.dirty=!0);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d.setStageReference(a)}},b.DisplayObjectContainer.prototype.removeStageReference=function(){for(var a=0,b=this.children.length;b>a;a++){var c=this.children[a];c.removeStageReference()}this._interactive&&(this.stage.dirty=!0),this.stage=null},b.DisplayObjectContainer.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);var b,c;if(this._mask||this._filters){for(this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);a.spriteBatch.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),a.spriteBatch.start()}else for(b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.DisplayObjectContainer.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);this._mask&&a.maskManager.pushMask(this._mask,a);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d._renderCanvas(a)}this._mask&&a.maskManager.popMask(a)}},b.Sprite=function(a){b.DisplayObjectContainer.call(this),this.anchor=new b.Point,this.texture=a,this._width=0,this._height=0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL,this.shader=null,a.baseTexture.hasLoaded?this.onTextureUpdate():(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.on("update",this.onTextureUpdateBind)),this.renderable=!0},b.Sprite.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Sprite.prototype.constructor=b.Sprite,Object.defineProperty(b.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(b.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),b.Sprite.prototype.setTexture=function(a){this.texture=a,this.cachedTint=16777215},b.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height)},b.Sprite.prototype.getBounds=function(a){var b=this.texture.frame.width,c=this.texture.frame.height,d=b*(1-this.anchor.x),e=b*-this.anchor.x,f=c*(1-this.anchor.y),g=c*-this.anchor.y,h=a||this.worldTransform,i=h.a,j=h.c,k=h.b,l=h.d,m=h.tx,n=h.ty,o=i*e+k*g+m,p=l*g+j*e+n,q=i*d+k*g+m,r=l*g+j*d+n,s=i*d+k*f+m,t=l*f+j*d+n,u=i*e+k*f+m,v=l*f+j*e+n,w=-1/0,x=-1/0,y=1/0,z=1/0;y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,z=z>p?p:z,z=z>r?r:z,z=z>t?t:z,z=z>v?v:z,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,x=p>x?p:x,x=r>x?r:x,x=t>x?t:x,x=v>x?v:x;var A=this._bounds;return A.x=y,A.width=w-y,A.y=z,A.height=x-z,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){var b,c;if(this._mask||this._filters){var d=a.spriteBatch;for(this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);d.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),d.start()}else for(a.spriteBatch.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.Sprite.prototype._renderCanvas=function(a){if(!(this.visible===!1||0===this.alpha||this.texture.crop.width<=0||this.texture.crop.height<=0)){if(this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,a.context.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a),this.texture.valid){var c=this.texture.baseTexture.resolution/a.resolution;a.context.globalAlpha=this.worldAlpha,a.roundPixels?a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution|0,this.worldTransform.ty*a.resolution|0):a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution,this.worldTransform.ty*a.resolution),a.smoothProperty&&a.scaleMode!==this.texture.baseTexture.scaleMode&&(a.scaleMode=this.texture.baseTexture.scaleMode,a.context[a.smoothProperty]=a.scaleMode===b.scaleModes.LINEAR);var d=this.texture.trim?this.texture.trim.x-this.anchor.x*this.texture.trim.width:this.anchor.x*-this.texture.frame.width,e=this.texture.trim?this.texture.trim.y-this.anchor.y*this.texture.trim.height:this.anchor.y*-this.texture.frame.height;16777215!==this.tint?(this.cachedTint!==this.tint&&(this.cachedTint=this.tint,this.tintedTexture=b.CanvasTinter.getTintedTexture(this,this.tint)),a.context.drawImage(this.tintedTexture,0,0,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)):a.context.drawImage(this.texture.baseTexture.source,this.texture.crop.x,this.texture.crop.y,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)}for(var f=0,g=this.children.length;g>f;f++)this.children[f]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},b.Sprite.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache'+this);return new b.Sprite(c)},b.Sprite.fromImage=function(a,c,d){var e=b.Texture.fromImage(a,c,d);return new b.Sprite(e)},b.SpriteBatch=function(a){b.DisplayObjectContainer.call(this),this.textureThing=a,this.ready=!1},b.SpriteBatch.prototype=Object.create(b.DisplayObjectContainer.prototype),b.SpriteBatch.prototype.constructor=b.SpriteBatch,b.SpriteBatch.prototype.initWebGL=function(a){this.fastSpriteBatch=new b.WebGLFastSpriteBatch(a),this.ready=!0},b.SpriteBatch.prototype.updateTransform=function(){b.DisplayObject.prototype.updateTransform.call(this)},b.SpriteBatch.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||!this.children.length||(this.ready||this.initWebGL(a.gl),a.spriteBatch.stop(),a.shaderManager.setShader(a.shaderManager.fastShader),this.fastSpriteBatch.begin(this,a),this.fastSpriteBatch.render(this),a.spriteBatch.start())},b.SpriteBatch.prototype._renderCanvas=function(a){if(this.visible&&!(this.alpha<=0)&&this.children.length){var c=a.context;c.globalAlpha=this.worldAlpha,b.DisplayObject.prototype.updateTransform.call(this);for(var d=this.worldTransform,e=!0,f=0;fi;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(c.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}c.descent=i-g,c.fontSize=c.ascent+c.descent,b.Text.fontPropertiesCache[a]=c}return c},b.Text.prototype.wordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g],e=this.style.wordWrapWidth-h):(e-=i,b+=" "+f[g])}d=2?parseInt(c[c.length-2],10):b.BitmapText.fonts[this.fontName].size,this.dirty=!0,this.tint=a.tint},b.BitmapText.prototype.updateText=function(){for(var a=b.BitmapText.fonts[this.fontName],c=new b.Point,d=null,e=[],f=0,g=[],h=0,i=this.fontSize/a.size,j=0;j=j;j++){var n=0;"right"===this.style.align?n=f-g[j]:"center"===this.style.align&&(n=(f-g[j])/2),m.push(n)}var o=this.children.length,p=e.length,q=this.tint||16777215;for(j=0;p>j;j++){var r=o>j?this.children[j]:this._pool.pop();r?r.setTexture(e[j].texture):r=new b.Sprite(e[j].texture),r.position.x=(e[j].position.x+m[e[j].line])*i,r.position.y=e[j].position.y*i,r.scale.x=r.scale.y=i,r.tint=q,r.parent||this.addChild(r)}for(;this.children.length>p;){var s=this.getChildAt(this.children.length-1);this._pool.push(s),this.removeChild(s)}this.textWidth=f*i,this.textHeight=(c.y+a.lineHeight)*i},b.BitmapText.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),b.DisplayObjectContainer.prototype.updateTransform.call(this)},b.BitmapText.fonts={},b.Stage=function(a){b.DisplayObjectContainer.call(this),this.worldTransform=new b.Matrix,this.interactive=!0,this.interactionManager=new b.InteractionManager(this),this.dirty=!0,this.stage=this,this.stage.hitArea=new b.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a)},b.Stage.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},b.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var a=0,b=this.children.length;b>a;a++)this.children[a].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},b.Stage.prototype.setBackgroundColor=function(a){this.backgroundColor=a||0,this.backgroundColorSplit=b.hex2rgb(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},b.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},function(a){for(var b=0,c=["ms","moz","webkit","o"],d=0;d>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){return function(a){function b(){for(var d=arguments.length,f=new Array(d);d--;)f[d]=arguments[d];return f=e.concat(f),c.apply(this instanceof b?this:a,f)}var c=this,d=arguments.length-1,e=[];if(d>0)for(e.length=d;d--;)e[d]=arguments[d+1];if("function"!=typeof c)throw new TypeError;return b.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(c.prototype),b}}()),b.AjaxRequest=function(){var a=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new window.XMLHttpRequest:!1;for(var b=0;b0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.EventTarget={call:function(a){a&&(a=a.prototype||a,b.EventTarget.mixin(a))},mixin:function(a){a.listeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?this._listeners[a].slice():[]},a.emit=a.dispatchEvent=function(a,c){if(this._listeners=this._listeners||{},"object"==typeof a&&(c=a,a=a.type),c&&c.__isEventObject===!0||(c=new b.Event(this,a,c)),this._listeners&&this._listeners[a]){var d,e=this._listeners[a],f=e.length,g=e[0];for(d=0;f>d;g=e[++d])if(g.call(this,c),c.stoppedImmediate)return this;if(c.stopped)return this}return this.parent&&this.parent.emit&&this.parent.emit.call(this.parent,a,c),this},a.on=a.addEventListener=function(a,b){return this._listeners=this._listeners||{},(this._listeners[a]=this._listeners[a]||[]).push(b),this},a.once=function(a,b){function c(){b.apply(d.off(a,c),arguments)}this._listeners=this._listeners||{};var d=this;return c._originalHandler=b,this.on(a,c)},a.off=a.removeEventListener=function(a,b){if(this._listeners=this._listeners||{},!this._listeners[a])return this;for(var c=this._listeners[a],d=b?c.length:0;d-->0;)(c[d]===b||c[d]._originalHandler===b)&&c.splice(d,1);return 0===c.length&&delete this._listeners[a],this},a.removeAllListeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?(delete this._listeners[a],this):this}}},b.Event=function(a,b,c){this.__isEventObject=!0,this.stopped=!1,this.stoppedImmediate=!1,this.target=a,this.type=b,this.data=c,this.content=c,this.timeStamp=Date.now()},b.Event.prototype.stopPropagation=function(){this.stopped=!0},b.Event.prototype.stopImmediatePropagation=function(){this.stoppedImmediate=!0},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return window.console.log("PIXI Warning: shape too complex to fill"),[];for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e +},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.initDefaultShaders=function(){},b.CompileVertexShader=function(a,c){return b._CompileShader(a,c,a.VERTEX_SHADER)},b.CompileFragmentShader=function(a,c){return b._CompileShader(a,c,a.FRAGMENT_SHADER)},b._CompileShader=function(a,b,c){var d=b.join("\n"),e=a.createShader(c);return a.shaderSource(e,d),a.compileShader(e),a.getShaderParameter(e,a.COMPILE_STATUS)?e:(window.console.log(a.getShaderInfoLog(e)),null)},b.compileProgram=function(a,c,d){var e=b.CompileFragmentShader(a,d),f=b.CompileVertexShader(a,c),g=a.createProgram();return a.attachShader(g,f),a.attachShader(g,e),a.linkProgram(g),a.getProgramParameter(g,a.LINK_STATUS)||window.console.log("Could not initialise shaders"),g},b.PixiShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.textureCount=0,this.firstRun=!0,this.dirty=!0,this.attributes=[],this.init()},b.PixiShader.prototype.constructor=b.PixiShader,b.PixiShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc||b.PixiShader.defaultVertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute];for(var d in this.uniforms)this.uniforms[d].uniformLocation=a.getUniformLocation(c,d);this.initUniforms(),this.program=c},b.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a,b=this.gl;for(var c in this.uniforms){a=this.uniforms[c];var d=a.type;"sampler2D"===d?(a._init=!1,null!==a.value&&this.initSampler2D(a)):"mat2"===d||"mat3"===d||"mat4"===d?(a.glMatrix=!0,a.glValueLength=1,"mat2"===d?a.glFunc=b.uniformMatrix2fv:"mat3"===d?a.glFunc=b.uniformMatrix3fv:"mat4"===d&&(a.glFunc=b.uniformMatrix4fv)):(a.glFunc=b["uniform"+d],a.glValueLength="2f"===d||"2i"===d?2:"3f"===d||"3i"===d?3:"4f"===d||"4i"===d?4:1)}},b.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){var b=this.gl;if(b.activeTexture(b["TEXTURE"+this.textureCount]),b.bindTexture(b.TEXTURE_2D,a.value.baseTexture._glTextures[b.id]),a.textureData){var c=a.textureData,d=c.magFilter?c.magFilter:b.LINEAR,e=c.minFilter?c.minFilter:b.LINEAR,f=c.wrapS?c.wrapS:b.CLAMP_TO_EDGE,g=c.wrapT?c.wrapT:b.CLAMP_TO_EDGE,h=c.luminance?b.LUMINANCE:b.RGBA;if(c.repeat&&(f=b.REPEAT,g=b.REPEAT),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,!!c.flipY),c.width){var i=c.width?c.width:512,j=c.height?c.height:2,k=c.border?c.border:0;b.texImage2D(b.TEXTURE_2D,0,h,i,j,k,h,b.UNSIGNED_BYTE,null)}else b.texImage2D(b.TEXTURE_2D,0,h,b.RGBA,b.UNSIGNED_BYTE,a.value.baseTexture.source);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,d),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,f),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,g)}b.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},b.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a,c=this.gl;for(var d in this.uniforms)a=this.uniforms[d],1===a.glValueLength?a.glMatrix===!0?a.glFunc.call(c,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c,a.uniformLocation,a.value):2===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y):3===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z):4===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"===a.type&&(a._init?(c.activeTexture(c["TEXTURE"+this.textureCount]),a.value.baseTexture._dirty[c.id]?b.defaultRenderer.updateTexture(a.value.baseTexture):c.bindTexture(c.TEXTURE_2D,a.value.baseTexture._glTextures[c.id]),c.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},b.PixiShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec4 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"],b.PixiFastShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"],this.textureCount=0,this.init()},b.PixiFastShader.prototype.constructor=b.PixiFastShader,b.PixiFastShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.uMatrix=a.getUniformLocation(c,"uMatrix"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aPositionCoord=a.getAttribLocation(c,"aPositionCoord"),this.aScale=a.getAttribLocation(c,"aScale"),this.aRotation=a.getAttribLocation(c,"aRotation"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute],this.program=c},b.PixiFastShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.StripShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;","}"],this.init()},b.StripShader.prototype.constructor=b.StripShader,b.StripShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.attributes=[this.aVertexPosition,this.aTextureCoord],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.StripShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.PrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor * vec4(tint * alpha, alpha);","}"],this.init()},b.PrimitiveShader.prototype.constructor=b.PrimitiveShader,b.PrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.ComplexPrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform vec3 tint;","uniform float alpha;","uniform vec3 color;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = vec4(color * alpha * tint, alpha);","}"],this.init()},b.ComplexPrimitiveShader.prototype.constructor=b.ComplexPrimitiveShader,b.ComplexPrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.color=a.getUniformLocation(c,"color"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.ComplexPrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.WebGLGraphics=function(){},b.WebGLGraphics.renderGraphics=function(a,c){var d,e=c.gl,f=c.projection,g=c.offset,h=c.shaderManager.primitiveShader;a.dirty&&b.WebGLGraphics.updateGraphics(a,e);for(var i=a._webGL[e.id],j=0;j=6&&(h.points.length>10?(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g)):(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildPoly(h,g))),h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))):(g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g)),d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d),n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i)}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.lastIndex=0,this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[],this.lastIndex=0},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},b.glContexts=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)"undefined"==typeof d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.sayHello("webGL"),b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this.contextLostBound=this.handleContextLost.bind(this),this.contextRestoredBound=this.handleContextRestored.bind(this),this.view.addEventListener("webglcontextlost",this.contextLostBound,!1),this.view.addEventListener("webglcontextrestored",this.contextRestoredBound,!1),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(a.interactive&&a.interactionManager.removeEvents(),this.__stage=a),a.updateTransform();var b=this.gl;a._interactive?a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)):a._interactiveEventsAdded&&(a._interactiveEventsAdded=!1,a.interactionManager.setTarget(this)),b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.handleContextLost=function(a){a.preventDefault(),this.contextLost=!0},b.WebGLRenderer.prototype.handleContextRestored=function(){this.initContext();for(var a in b.TextureCache){var c=b.TextureCache[a].baseTexture;c._glTextures=[]}this.contextLost=!1},b.WebGLRenderer.prototype.destroy=function(){this.view.off("webglcontextlost",this.contextLostBound),this.view.off("webglcontextrestored",this.contextRestoredBound),b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a){var b=a.texture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=b.baseTexture);var c=b._uvs;if(c){var d,e,f,g,h=a.worldAlpha,i=a.tint,j=this.vertices,k=a.anchor.x,l=a.anchor.y;if(b.trim){var m=b.trim;e=m.x-k*m.width,d=e+b.crop.width,g=m.y-l*m.height,f=g+b.crop.height}else d=b.frame.width*(1-k),e=b.frame.width*-k,f=b.frame.height*(1-l),g=b.frame.height*-l;var n=4*this.currentBatchSize*this.vertSize,o=b.baseTexture.resolution,p=a.worldTransform,q=p.a/o,r=p.b/o,s=p.c/o,t=p.d/o,u=p.tx,v=p.ty;j[n++]=q*e+s*g+u,j[n++]=t*g+r*e+v,j[n++]=c.x0,j[n++]=c.y0,j[n++]=h,j[n++]=i,j[n++]=q*d+s*g+u,j[n++]=t*g+r*d+v,j[n++]=c.x1,j[n++]=c.y1,j[n++]=h,j[n++]=i,j[n++]=q*d+s*f+u,j[n++]=t*f+r*d+v,j[n++]=c.x2,j[n++]=c.y2,j[n++]=h,j[n++]=i,j[n++]=q*e+s*f+u,j[n++]=t*f+r*e+v,j[n++]=c.x3,j[n++]=c.y3,j[n++]=h,j[n++]=i,this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs;a.tilePosition.x%=c.baseTexture.width*a.tileScaleOffset.x,a.tilePosition.y%=c.baseTexture.height*a.tileScaleOffset.y;var e=a.tilePosition.x/(c.baseTexture.width*a.tileScaleOffset.x),f=a.tilePosition.y/(c.baseTexture.height*a.tileScaleOffset.y),g=a.width/c.baseTexture.width/(a.tileScale.x*a.tileScaleOffset.x),h=a.height/c.baseTexture.height/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-e,d.y0=0-f,d.x1=1*g-e,d.y1=0-f,d.x2=1*g-e,d.y2=1*h-f,d.x3=0-e,d.y3=1*h-f;var i=a.worldAlpha,j=a.tint,k=this.vertices,l=a.width,m=a.height,n=a.anchor.x,o=a.anchor.y,p=l*(1-n),q=l*-n,r=m*(1-o),s=m*-o,t=4*this.currentBatchSize*this.vertSize,u=c.baseTexture.resolution,v=a.worldTransform,w=v.a/u,x=v.b/u,y=v.c/u,z=v.d/u,A=v.tx,B=v.ty;k[t++]=w*q+y*s+A,k[t++]=z*s+x*q+B,k[t++]=d.x0,k[t++]=d.y0,k[t++]=i,k[t++]=j,k[t++]=w*p+y*s+A,k[t++]=z*s+x*p+B,k[t++]=d.x1,k[t++]=d.y1,k[t++]=i,k[t++]=j,k[t++]=w*p+y*r+A,k[t++]=z*r+x*p+B,k[t++]=d.x2,k[t++]=d.y2,k[t++]=i,k[t++]=j,k[t++]=w*q+y*r+A,k[t++]=z*r+x*q+B,k[t++]=d.x3,k[t++]=d.y3,k[t++]=i,k[t++]=j,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,2,c.FLOAT,!1,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var a=4*this.size*this.vertSize,b=6*this.maxSize;this.vertices=new Float32Array(a),this.indices=new Uint16Array(b),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var c=0,d=0;b>c;c+=6,d+=4)this.indices[c+0]=d+0,this.indices[c+1]=d+1,this.indices[c+2]=d+2,this.indices[c+3]=d+0,this.indices[c+4]=d+2,this.indices[c+5]=d+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(g.fillColor||0===g.fillColor)&&(c.globalAlpha=g.fillAlpha*d,c.fillStyle=e="#"+("00000"+(0|g.fillColor).toString(16)).substr(-6),c.fill()),g.lineWidth&&(c.globalAlpha=g.lineAlpha*d,c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){d>1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){c.beginPath();var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iA?A:z,c.beginPath(),c.moveTo(v,w+z),c.lineTo(v,w+y-z),c.quadraticCurveTo(v,w+y,v+z,w+y),c.lineTo(v+x-z,w+y),c.quadraticCurveTo(v+x,w+y,v+x,w+y-z),c.lineTo(v+x,w+z),c.quadraticCurveTo(v+x,w,v+x-z,w),c.lineTo(v+z,w),c.quadraticCurveTo(v,w,v,w+z),c.closePath()}}}},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.padding=0},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var b=a.gl,c=a.projection,d=a.offset,e=a.shaderManager.stripShader;b.blendFunc(b.ONE,b.ONE_MINUS_SRC_ALPHA),b.uniformMatrix3fv(e.translationMatrix,!1,this.worldTransform.toArray(!0)),b.uniform2f(e.projectionVector,c.x,-c.y),b.uniform2f(e.offsetVector,-d.x,-d.y),b.uniform1f(e.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.STATIC_DRAW),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)):(b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferSubData(b.ARRAY_BUFFER,0,this.verticies),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),b.drawElements(b.TRIANGLE_STRIP,this.indices.length,b.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var b=a.context,c=this.worldTransform; +a.roundPixels?b.setTransform(c.a,c.b,c.c,c.d,0|c.tx,0|c.ty):b.setTransform(c.a,c.b,c.c,c.d,c.tx,c.ty);var d=this,e=d.verticies,f=d.uvs,g=e.length/2;this.count++;for(var h=0;g-2>h;h++){var i=2*h,j=e[i],k=e[i+2],l=e[i+4],m=e[i+1],n=e[i+3],o=e[i+5];if(this.padding>0){var p=(j+k+l)/3,q=(m+n+o)/3,r=j-p,s=m-q,t=Math.sqrt(r*r+s*s);j=p+r/t*(t+3),m=q+s/t*(t+3),r=k-p,s=n-q,t=Math.sqrt(r*r+s*s),k=p+r/t*(t+3),n=q+s/t*(t+3),r=l-p,s=o-q,t=Math.sqrt(r*r+s*s),l=p+r/t*(t+3),o=q+s/t*(t+3)}var u=f[i]*d.texture.width,v=f[i+2]*d.texture.width,w=f[i+4]*d.texture.width,x=f[i+1]*d.texture.height,y=f[i+3]*d.texture.height,z=f[i+5]*d.texture.height;b.save(),b.beginPath(),b.moveTo(j,m),b.lineTo(k,n),b.lineTo(l,o),b.closePath(),b.clip();var A=u*y+x*w+v*z-y*w-x*v-u*z,B=j*y+x*l+k*z-y*l-x*k-j*z,C=u*k+j*w+v*l-k*w-j*v-u*l,D=u*y*l+x*k*w+j*v*z-j*y*w-x*v*l-u*k*z,E=m*y+x*o+n*z-y*o-x*n-m*z,F=u*n+m*w+v*o-n*w-m*v-u*o,G=u*y*o+x*n*w+m*v*z-m*y*w-x*v*o-u*n*z;b.transform(B/A,E/A,C/A,F/A,D/A,G/A),b.drawImage(d.texture.baseTexture.source,0,0),b.restore()}},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.verticies=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.verticies,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||100,this._height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this._mask,a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d,e,f=this.worldTransform,g=a.resolution;if(c.setTransform(f.a*g,f.c*g,f.b*g,f.d*g,f.tx*g,f.ty*g),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]);var h=this.tilePosition,i=this.tileScale;for(h.x%=this.tilingTexture.baseTexture.width,h.y%=this.tilingTexture.baseTexture.height,c.scale(i.x,i.y),c.translate(h.x+this.anchor.x*-this._width,h.y+this.anchor.y*-this._height),c.fillStyle=this.__tilePattern,c.fillRect(-h.x,-h.y,this._width/i.x,this._height/i.y),c.scale(1/i.x,1/i.y),c.translate(-h.x+this.anchor.x*this._width,-h.y+this.anchor.y*this._height),this._mask&&a.maskManager.popMask(a.context),d=0,e=this.children.length;e>d;d++)this.children[d]._renderCanvas(a)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.onTextureUpdate=function(){},b.TilingSprite.prototype.generateTilingTexture=function(a){if(this.texture.baseTexture.hasLoaded){var c,d,e=this.originalTexture||this.texture,f=e.frame,g=f.width!==e.baseTexture.width||f.height!==e.baseTexture.height,h=!1;if(a?(c=b.getNextPowerOfTwo(f.width),d=b.getNextPowerOfTwo(f.height),(f.width!==c||f.height!==d)&&(h=!0)):g&&(c=f.width,d=f.height,h=!0),h){var i;this.tilingTexture&&this.tilingTexture.isTiling?(i=this.tilingTexture.canvasBuffer,i.resize(c,d),this.tilingTexture.baseTexture.width=c,this.tilingTexture.baseTexture.height=d,this.tilingTexture.needsUpdate=!0):(i=new b.CanvasBuffer(c,d),this.tilingTexture=b.Texture.fromCanvas(i.canvas),this.tilingTexture.canvasBuffer=i,this.tilingTexture.isTiling=!0),i.context.drawImage(e.baseTexture.source,e.crop.x,e.crop.y,e.crop.width,e.crop.height,0,0,c,d),this.tileScaleOffset.x=f.width/c,this.tileScaleOffset.y=f.height/d}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=e;this.refreshTexture=!1,this.originalTexture=this.texture,this.texture=this.tilingTexture,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this._dirty=[!0,!0,!0,!0],a){if((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height)this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty();else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.naturalWidth||d.source.width,d.height=d.source.naturalHeight||d.source.height,d.dirty(),d.dispatchEvent({type:"loaded",content:d})},this.source.onerror=function(){d.dispatchEvent({type:"error",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.EventTarget.mixin(b.BaseTexture.prototype),b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,this.source.src=""):this.source&&this.source._pixiId&&delete b.BaseTextureCache[this.source._pixiId],this.source=null;for(var a=this._glTextures.length-1;a>=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;athis.baseTexture.width||a.y+a.height>this.baseTexture.height))throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width,this.height)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width*this.resolution,this.height*this.resolution,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=this.frame.width=this.crop.width=a,this.height=this.frame.height=this.crop.height=c,d&&(this.baseTexture.width=this.width,this.baseTexture.height=this.height),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width*this.resolution,this.height*this.resolution))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1),a.worldAlpha=1;for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();var h=this.renderer.gl;h.viewport(0,0,this.width*this.resolution,this.height*this.resolution),h.bindFramebuffer(h.FRAMEBUFFER,this.textureBuffer.frameBuffer),c&&this.textureBuffer.clear(),this.renderer.spriteBatch.dirty=!0,this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),this.renderer.spriteBatch.dirty=!0}},b.RenderTexture.prototype.renderCanvas=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),b&&d.append(b);for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();c&&this.textureBuffer.clear();var h=this.textureBuffer.context,i=this.renderer.resolution;this.renderer.resolution=this.resolution,this.renderer.renderDisplayObject(a,h),this.renderer.resolution=i}},b.RenderTexture.prototype.getImage=function(){var a=new Image;return a.src=this.getBase64(),a},b.RenderTexture.prototype.getBase64=function(){return this.getCanvas().toDataURL()},b.RenderTexture.prototype.getCanvas=function(){if(this.renderer.type===b.WEBGL_RENDERER){var a=this.renderer.gl,c=this.textureBuffer.width,d=this.textureBuffer.height,e=new Uint8Array(4*c*d);a.bindFramebuffer(a.FRAMEBUFFER,this.textureBuffer.frameBuffer),a.readPixels(0,0,c,d,a.RGBA,a.UNSIGNED_BYTE,e),a.bindFramebuffer(a.FRAMEBUFFER,null);for(var f=new b.CanvasBuffer(c,d),g=f.context.getImageData(0,0,c,d),h=g.data,i=0;ia;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this),function(){var a=this,b=b||{VERSION:"2.1.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};if(PIXI.InteractionManager=PIXI.InteractionManager||function(){},PIXI.dontSayHello=!0,b.Utils={getProperty:function(a,b){for(var c=b.split("."),d=c.pop(),e=c.length,f=1,g=c[0];e>f&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},transposeArray:function(a){for(var b=new Array(a[0].length),c=0;c-1;d--)b[c][d]=a[d][c]}return b},rotateArray:function(a,c){if("string"!=typeof c&&(c=(c%360+360)%360),90===c||-270===c||"rotateLeft"===c)a=b.Utils.transposeArray(a),a=a.reverse();else if(-90===c||270===c||"rotateRight"===c)a=a.reverse(),a=b.Utils.transposeArray(a);else if(180===Math.abs(c)||"rotate180"===c){for(var d=0;d0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h},mixin:function(a,c){if(!a||"object"!=typeof a)return c;for(var d in a){var e=a[d];if(!e.childNodes&&!e.cloneNode){var f=typeof a[d];c[d]=a[d]&&"object"===f?typeof c[d]===f?b.Utils.mixin(a[d],c[d]):b.Utils.mixin(a[d],new e.constructor):a[d]}}return c}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var c=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;b0?.5*c:0},b.Circle.prototype={type:null,circumference:function(){return 2*Math.PI*this._radius},getBounds:function(){return new b.Rectangle(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRounded(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},angleSq:function(a){return this.subtract(a).angle(a.subtract(this))},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},b.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},b.Point.angleSq=function(a,b){return a.subtract(b).angle(b.subtract(a))},b.Point.negative=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.x,-a.y)},b.Point.multiplyAdd=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+c.x*d,a.y+c.y*d)},b.Point.interpolate=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+(c.x-a.x)*d,a.y+(c.y-a.y)*d)},b.Point.perp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.y,a.x)},b.Point.rperp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(a.y,-a.x)},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRounded(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.project=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c)/c.getMagnitudeSq();return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.projectUnit=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c);return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.normalRightHand=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-1*a.y,a.x)},b.Point.normalize=function(a,c){"undefined"==typeof c&&(c=new b.Point);var d=a.getMagnitude();return 0!==d&&c.setTo(a.x/d,a.y/d),c},b.Point.rotate=function(a,c,d,e,f,g){f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y)));var h=e+Math.atan2(a.y-d,a.x-c);return a.setTo(c+g*Math.cos(h),d+g*Math.sin(h))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},b.Point.parse=function(a,c,d){c=c||"x",d=d||"y";var e=new b.Point;return a[c]&&(e.x=parseInt(a[c],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return"undefined"==typeof b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(a,this)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(b.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"topRight",{get:function(){return new b.Point(this.x+this.width,this.y) +},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y)},b.Rectangle.size=function(a,c){return"undefined"==typeof c||null===c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c||null===c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(c.x-a.x)-(e.x-d.x)*(c.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((c.x-a.x)*(a.y-d.y)-(c.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new b.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){if(this.type=b.POLYGON,a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}this.points=a,this.closed=!0},b.Polygon.prototype={clone:function(a){var c=this.points.slice();return"undefined"==typeof a||null===a?a=new b.Polygon(c):a.setTo(c),a},contains:function(a,b){for(var c=!1,d=this.points.length/2,e=0,f=d-1;d>e;f=e++){var g=this.points[2*e].x,h=this.points[2*e+1].y,i=this.points[2*f].x,j=this.points[2*f+1].y,k=h>b!=j>b&&(i-g)*(b-h)/(j-h)+g>a;k&&(c=!c)}return c},setTo:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}return this.points=a,this}},b.Polygon.prototype.constructor=b.Polygon,Object.defineProperty(b.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this._points=a}}),Object.defineProperty(b.Polygon.prototype,"area",{get:function(){var a,b,c,d,e,f=Number.MAX_VALUE,g=0;for(e=0;e=l;l++)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;q++)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[a,b]):this.moveTo(a,b),0===this.currentPath.length&&this.moveTo(a,b);var f=this.currentPath,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){var g=a+Math.cos(d)*c,h=b+Math.sin(d)*c,i=this.currentPath.shape.points;if((0!==i.length&&i[i.length-2]!==g||i[i.length-1]!==h)&&(this.moveTo(g,h),i=this.currentPath.shape.points),d===e)return this;!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var j=f?-1*(d-e):e-d,k=Math.abs(j)/(2*Math.PI)*40;if(0===j)return this;for(var l=j/(2*k),m=2*l,n=Math.cos(l),o=Math.sin(l),p=k-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);i.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape({points:[a,b,c,d,e],type:PIXI.Graphics.RREC}),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){return a instanceof Array||(a=Array.prototype.slice.call(arguments)),this.drawShape(new PIXI.Polygon(a)),this},PIXI.Graphics.prototype.clear=function(){return this.lineWidth=0,this.filling=!1,this.dirty=!0,this.clearDirty=!0,this.graphicsData=[],this},PIXI.Graphics.prototype.generateTexture=function(a,b){a=a||1;var c=this.getBounds(),d=new PIXI.CanvasBuffer(c.width*a,c.height*a),e=PIXI.Texture.fromCanvas(d.canvas,b);return e.baseTexture.resolution=a,d.context.scale(a,a),d.context.translate(-c.x,-c.y),PIXI.CanvasGraphics.renderGraphics(this,d.context),e},PIXI.Graphics.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite,a);if(a.spriteBatch.stop(),a.blendModeManager.setBlendMode(this.blendMode),this._mask&&a.maskManager.pushMask(this._mask,a),this._filters&&a.filterManager.pushFilter(this._filterBlock),this.blendMode!==a.spriteBatch.currentBlendMode){a.spriteBatch.currentBlendMode=this.blendMode;var b=PIXI.blendModesWebGL[a.spriteBatch.currentBlendMode];a.spriteBatch.gl.blendFunc(b[0],b[1])}if(this.webGLDirty&&(this.dirty=!0,this.webGLDirty=!1),PIXI.WebGLGraphics.renderGraphics(this,a),this.children.length){a.spriteBatch.start();for(var c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this.mask,a),a.drawCount++,a.spriteBatch.start()}},PIXI.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite,a);var b=a.context,c=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,b.globalCompositeOperation=PIXI.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a);var d=a.resolution;b.setTransform(c.a*d,c.b*d,c.c*d,c.d*d,c.tx*d,c.ty*d),PIXI.CanvasGraphics.renderGraphics(this,b);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},PIXI.Graphics.prototype.getBounds=function(a){this.dirty&&(this.updateBounds(),this.webGLDirty=!0,this.cachedSpriteDirty=!0,this.dirty=!1);var b=this._bounds,c=b.x,d=b.width+b.x,e=b.y,f=b.height+b.y,g=a||this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=n,w=o,x=n,y=o;return x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,b.x=x,b.width=v-x,b.y=y,b.height=w-y,b},PIXI.Graphics.prototype.updateBounds=function(){var a=1/0,b=-1/0,c=1/0,d=-1/0;if(this.graphicsData.length)for(var e,f,g,h,i,j,k=0;kg?g:a,b=g+i>b?g+i:b,c=c>h?h:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.CIRC)g=e.x,h=e.y,i=e.radius+n/2,j=e.radius+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.ELIP)g=e.x,h=e.y,i=e.width+n/2,j=e.height+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else{f=e.points;for(var o=0;og-n?g-n:a,b=g+n>b?g+n:b,c=c>h-n?h-n:c,d=h+n>d?h+n:d}}else a=0,b=0,c=0,d=0;var p=this.boundsPadding,q=this._bounds;q.x=a-p,q.width=b-a+2*p,q.y=c-p,q.height=d-c+2*p},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null;var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this.fillColor=d,this.fillAlpha=e,this.fill=f,this.shape=g,this.type=g.type},PIXI.Graphics.POLY=0,PIXI.Graphics.RECT=1,PIXI.Graphics.CIRC=2,PIXI.Graphics.ELIP=3,PIXI.Graphics.RREC=4,PIXI.Polygon.prototype.type=PIXI.Graphics.POLY,PIXI.Rectangle.prototype.type=PIXI.Graphics.RECT,PIXI.Circle.prototype.type=PIXI.Graphics.CIRC,PIXI.Ellipse.prototype.type=PIXI.Graphics.ELIP,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this._position=new b.Point,this.displayObject=null,this.scale=null,this._targetPosition=new b.Point},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target).multiply(this.target.parent?this.target.parent.worldTransform.a:1,this.target.parent?this.target.parent.worldTransform.d:1),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},resize:function(){},paused:function(){},pauseUpdate:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[])},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created&&this.onPauseUpdateCallback?this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.ArrayList=function(){this.total=0,this.position=0,this.list=[]},b.ArrayList.prototype={add:function(a){return this.exists(a)||(this.list.push(a),this.total++),a},getIndex:function(a){return this.list.indexOf(a)},exists:function(a){return this.list.indexOf(a)>-1 +},reset:function(){this.list.length=0,this.total=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),this.total--,a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)}},Object.defineProperty(b.ArrayList.prototype,"first",{get:function(){return this.position=0,this.total>0?this.list[0]:null}}),Object.defineProperty(b.ArrayList.prototype,"next",{get:function(){return this.positionb;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange;var a=this;this.game.device.cocoonJSApp&&(CocoonJS.App.onSuspended.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"pause"})}),CocoonJS.App.onActivated.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"resume"})}))},b.Stage.prototype.visibilityChange=function(a){return"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(this.disableVisibilityChange||(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden||"pause"===a.type?this.game.gamePaused(a):this.game.gameResumed(a)))},b.Stage.prototype.setBackgroundColor=function(a){if("string"==typeof a){var c=b.Color.hexToColor(a);this._backgroundColor=b.Color.getColor(c.r,c.g,c.b)}else{var c=b.Color.getRGB(a);this._backgroundColor=a}this.backgroundColorSplit=[c.r/255,c.g/255,c.b/255],this.backgroundColorString=b.Color.RGBtoString(c.r,c.g,c.b,255,"#")},b.Stage.prototype.destroy=function(){this._hiddenVar&&document.removeEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=null,window.onpageshow=null,window.onblur=null,window.onfocus=null},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this.game.transparent||this.setBackgroundColor(a)}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.ignoreDestroy=!1,this.classType=b.Sprite,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this.onDestroy=new b.Signal,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a,b){return"undefined"==typeof b&&(b=!1),a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,!b&&a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addMultiple=function(a,b){if(Array.isArray(a))for(var c=0;ca||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,b,c,d,e){"undefined"==typeof e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,f.events&&f.events.onAddedToGroup.dispatch(f,this),null===this.cursor&&(this.cursor=f),f},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.resetCursor=function(a){return"undefined"==typeof a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this._cache[8]=a,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},b.Group.prototype.setProperty=function(a,b,c,d,e){if("undefined"==typeof e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},b.Group.prototype.checkProperty=function(a,c,d,e){return"undefined"==typeof e&&(e=!1),!b.Utils.getProperty(a,c)&&e?!1:b.Utils.getProperty(a,c)!==d?!1:!0},b.Group.prototype.set=function(a,b,c,d,e,f,g){return"undefined"==typeof g&&(g=!1),b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},b.Group.prototype.setAll=function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof f&&(f=!1),a=a.split("."),e=e||0;for(var g=0,h=this.children.length;h>g;g++)(!c||c&&this.children[g].alive)&&(!d||d&&this.children[g].visible)&&this.setProperty(this.children[g],a,b,e,f)},b.Group.prototype.setAllChildren=function(a,c,d,e,f,g){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),"undefined"==typeof g&&(g=!1),f=f||0;for(var h=0,i=this.children.length;i>h;h++)(!d||d&&this.children[h].alive)&&(!e||e&&this.children[h].visible)&&(this.children[h]instanceof b.Group?this.children[h].setAllChildren(a,c,d,e,f,g):this.setProperty(this.children[h],a.split("."),c,f,g))},b.Group.prototype.checkAll=function(a,b,c,d,e){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);for(var f=0,g=this.children.length;g>f;f++)if((!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&!this.checkProperty(this.children[f],a,b,e))return!1;return!0},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.filter=function(a,c){for(var d=-1,e=this.children.length,f=new b.ArrayList;++de;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b,c){if("undefined"==typeof b&&(b=!1),"undefined"==typeof c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup.dispatch(a,this);var d=this.removeChild(a);return this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},b.Group.prototype.removeAll=function(a,b){if("undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);a&&c&&c.destroy(!0)}while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c,d){if("undefined"==typeof b&&(b=this.children.length-1),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup.dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},b.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},b.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(b.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){awindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.bounds=new b.Rectangle,this.aspectRatio=0,this.sourceAspectRatio=0,this.event=null,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this.parentIsWindow=!1,this.parentNode=null,this.parentScaleFactor=new b.Point(1,1),this.trackParentInterval=2e3,this.onResize=null,this.onResizeContext=null,this._scaleMode=b.ScaleManager.NO_SCALE,this._width=0,this._height=0,this._check=null,this._nextParentCheck=0,this._parentBounds=null,a.config&&this.parseConfig(a.config),this.setupScale(c,d) },b.ScaleManager.EXACT_FIT=0,b.ScaleManager.NO_SCALE=1,b.ScaleManager.SHOW_ALL=2,b.ScaleManager.RESIZE=3,b.ScaleManager.prototype={parseConfig:function(a){a.scaleMode&&(this.scaleMode=a.scaleMode),a.fullScreenScaleMode&&(this.fullScreenScaleMode=a.fullScreenScaleMode),a.fullScreenTarget&&(this.fullScreenTarget=a.fullScreenTarget)},setupScale:function(a,c){var d,e=new b.Rectangle;""!==this.game.parent&&("string"==typeof this.game.parent?d=document.getElementById(this.game.parent):"object"==typeof this.game.parent&&1===this.game.parent.nodeType&&(d=this.game.parent)),d?(this.parentNode=d,this.parentIsWindow=!1,this._parentBounds=this.parentNode.getBoundingClientRect(),e.width=this._parentBounds.width,e.height=this._parentBounds.height,this.offset.set(this._parentBounds.left,this._parentBounds.top)):(this.parentNode=null,this.parentIsWindow=!0,e.width=window.innerWidth,e.height=window.innerHeight);var f=0,g=0;"number"==typeof a?f=a:(this.parentScaleFactor.x=parseInt(a,10)/100,f=e.width*this.parentScaleFactor.x),"number"==typeof c?g=c:(this.parentScaleFactor.y=parseInt(c,10)/100,g=e.height*this.parentScaleFactor.y),this.grid=new b.FlexGrid(this,f,g),this.updateDimensions(f,g,!1)},boot:function(){this.fullScreenTarget=this.game.canvas;var a=this;this._checkOrientation=function(b){return a.checkOrientation(b)},this._checkResize=function(b){return a.checkResize(b)},this._fullScreenChange=function(b){return a.fullScreenChange(b)},window.addEventListener("orientationchange",this._checkOrientation,!1),window.addEventListener("resize",this._checkResize,!1),this.game.device.cocoonJS||(document.addEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.addEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.addEventListener("fullscreenchange",this._fullScreenChange,!1)),this.updateDimensions(this.width,this.height,!0),b.Canvas.getOffset(this.game.canvas,this.offset),this.bounds.setTo(this.offset.x,this.offset.y,this.width,this.height)},setResizeCallback:function(a,b){this.onResize=a,this.onResizeContext=b},setMinMax:function(a,b,c,d){this.minWidth=a,this.minHeight=b,"undefined"!=typeof c&&(this.maxWidth=c),"undefined"!=typeof d&&(this.maxHeight=d)},preUpdate:function(){this.game.time.nowwindow.innerHeight||this.forcePortrait&&window.innerHeight>window.innerWidth)&&(this.incorrectOrientation=!1,this.leaveIncorrectOrientation.dispatch(),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh()):(this.forceLandscape&&window.innerWidthwindow.outerHeight?90:0,c&&this.isPortrait?(this.enterPortrait.dispatch(this.orientation,!1,!0),this.forceLandscape?this.enterIncorrectOrientation.dispatch():this.forcePortrait&&this.leaveIncorrectOrientation.dispatch()):!c&&this.isLandscape&&(this.enterLandscape.dispatch(this.orientation,!0,!1),this.forceLandscape?this.leaveIncorrectOrientation.dispatch():this.forcePortrait&&this.enterIncorrectOrientation.dispatch()),this._scaleMode===b.ScaleManager.RESIZE&&this.parentIsWindow?this.updateDimensions(window.innerWidth,window.innerHeight,!0):(this._scaleMode===b.ScaleManager.EXACT_FIT||this._scaleMode===b.ScaleManager.SHOW_ALL)&&(this.refresh(),this.onResize&&this.onResize.call(this.onResizeContext,this.width,this.height)),this.checkOrientationState()},refresh:function(){if(this.scaleMode!==b.ScaleManager.RESIZE&&(this.game.device.iPad||this.game.device.webApp||this.game.device.desktop||(this.game.device.android&&!this.game.device.chrome?window.scrollTo(0,1):window.scrollTo(0,0)),null===this._check&&this.maxIterations>0)){this._iterations=this.maxIterations;var a=this;this._check=window.setInterval(function(){return a.setScreenSize()},10),this.setScreenSize()}},setScreenSize:function(a){this.scaleMode!==b.ScaleManager.RESIZE&&("undefined"==typeof a&&(a=!1),this.game.device.iPad||this.game.device.webApp||this.game.device.desktop||(this.game.device.android&&!this.game.device.chrome?window.scrollTo(0,1):window.scrollTo(0,0)),this._iterations--,(a||this._iterations<0)&&(document.documentElement.style.minHeight=window.innerHeight+"px",this.incorrectOrientation?this.setMaximum():this.isFullScreen?this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?this.setExactFit():this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&this.setShowAll():this.scaleMode===b.ScaleManager.EXACT_FIT?this.setExactFit():this.scaleMode===b.ScaleManager.SHOW_ALL&&this.setShowAll(),this.setSize(),clearInterval(this._check),this._check=null))},setSize:function(){this.incorrectOrientation||(this.maxWidth&&this.width>this.maxWidth&&(this.width=this.maxWidth),this.maxHeight&&this.height>this.maxHeight&&(this.height=this.maxHeight),this.minWidth&&this.widththis.maxWidth?this.maxWidth:a,this.height=this.maxHeight&&b>this.maxHeight?this.maxHeight:b},startFullScreen:function(a){!this.isFullScreen&&this.game.device.fullscreen&&("undefined"!=typeof a&&this.game.renderType===b.CANVAS&&(this.game.stage.smoothed=a),this._width=this.width,this._height=this.height,this.game.device.fullscreenKeyboard?this.fullScreenTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT):this.fullScreenTarget[this.game.device.requestFullscreen]())},stopFullScreen:function(){document[this.game.device.cancelFullscreen]()},fullScreenChange:function(a){this.event=a,this.isFullScreen?(this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?(this.fullScreenTarget.style.width="100%",this.fullScreenTarget.style.height="100%",this.width=window.outerWidth,this.height=window.outerHeight,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.checkResize()):this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&(this.setShowAll(),this.refresh()),this.enterFullScreen.dispatch(this.width,this.height)):(this.fullScreenTarget.style.width=this.game.width+"px",this.fullScreenTarget.style.height=this.game.height+"px",this.width=this._width,this.height=this._height,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.leaveFullScreen.dispatch(this.width,this.height))},destroy:function(){window.removeEventListener("orientationchange",this._checkOrientation,!1),window.removeEventListener("resize",this._checkResize,!1),this.game.device.cocoonJS||(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1))}},b.ScaleManager.prototype.constructor=b.ScaleManager,Object.defineProperty(b.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){a!==this._scaleMode&&(this._scaleMode=a)}}),Object.defineProperty(b.ScaleManager.prototype,"isFullScreen",{get:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement}}),Object.defineProperty(b.ScaleManager.prototype,"isPortrait",{get:function(){return 0===this.orientation||180===this.orientation}}),Object.defineProperty(b.ScaleManager.prototype,"isLandscape",{get:function(){return 90===this.orientation||-90===this.orientation}}),b.Game=function(a,c,d,e,f,g,h,i){this.id=b.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.transparent=!1,this.antialias=!0,this.preserveDrawingBuffer=!1,this.renderer=null,this.renderType=b.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.rnd=null,this.device=null,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,this._width=800,this._height=600,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):(this.config={enableDebug:!0},"undefined"!=typeof a&&(this._width=a),"undefined"!=typeof c&&(this._height=c),"undefined"!=typeof d&&(this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new b.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new b.StateManager(this,f));var j=this;return this._onBoot=function(){return j.boot()},"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(this._onBoot,0):"undefined"!=typeof window.cordova?document.addEventListener("deviceready",this._onBoot,!1):(document.addEventListener("DOMContentLoaded",this._onBoot,!1),window.addEventListener("load",this._onBoot,!1)),this},b.Game.prototype={parseConfig:function(a){this.config=a,"undefined"==typeof a.enableDebug&&(this.config.enableDebug=!0),a.width&&(this._width=a.width),a.height&&(this._height=a.height),a.renderer&&(this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.preserveDrawingBuffer&&(this.preserveDrawingBuffer=a.preserveDrawingBuffer),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var c=[(Date.now()*Math.random()).toString()];a.seed&&(c=a.seed),this.rnd=new b.RandomDataGenerator(c);var d=null;a.state&&(d=a.state),this.state=new b.StateManager(this,d)},boot:function(){this.isBooted||(document.body?(document.removeEventListener("DOMContentLoaded",this._onBoot),window.removeEventListener("load",this._onBoot),this.onPause=new b.Signal,this.onResume=new b.Signal,this.onBlur=new b.Signal,this.onFocus=new b.Signal,this.isBooted=!0,this.device=new b.Device(this),this.math=b.Math,this.scale=new b.ScaleManager(this,this._width,this._height),this.stage=new b.Stage(this),this.setUpRenderer(),this.device.checkFullScreenSupport(),this.world=new b.World(this),this.add=new b.GameObjectFactory(this),this.make=new b.GameObjectCreator(this),this.cache=new b.Cache(this),this.load=new b.Loader(this),this.time=new b.Time(this),this.tweens=new b.TweenManager(this),this.input=new b.Input(this),this.sound=new b.SoundManager(this),this.physics=new b.Physics(this,this.physicsConfig),this.particles=new b.Particles(this),this.plugins=new b.PluginManager(this),this.net=new b.Net(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.scale.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.config.enableDebug&&(this.debug=new b.Utils.Debug(this),this.debug.boot()),this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new b.RequestAnimationFrame(this,this.config.forceSetTimeOut):new b.RequestAnimationFrame(this,!1),this.raf.start()):window.setTimeout(this._onBoot,20))},showDebugHeader:function(){var a=b.VERSION,c="Canvas",d="HTML Audio",e=1;if(this.renderType===b.WEBGL?(c="WebGL",e++):this.renderType==b.HEADLESS&&(c="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+c+" | "+d+" %c %c http://phaser.io %c %c ♥%c♥%c♥ ","background: #7a66a3","background: #625186","color: #ffffff; background: #43375b;","background: #625186","background: #ccb9f2","background: #625186"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+c+" | "+d+" | http://phaser.io")},setUpRenderer:function(){if(this.canvas=this.config.canvasID?b.Canvas.create(this.width,this.height,this.config.canvasID):b.Canvas.create(this.width,this.height),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===b.CANVAS?!0:!1),this.renderType===b.HEADLESS||this.renderType===b.CANVAS||this.renderType===b.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===b.AUTO&&(this.renderType=b.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:1,clearBeforeRender:!0}),this.context=this.renderer.context}else this.renderType=b.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:1,antialias:this.antialias,preserveDrawingBuffer:this.preserveDrawingBuffer}),this.context=null;this.renderType!==b.HEADLESS&&(this.stage.smoothed=this.antialias,b.Canvas.addToDOM(this.canvas,this.parent,!1),b.Canvas.setTouchAction(this.canvas))},update:function(a){this.time.update(a),this._paused||this.pendingStep?(this.state.pauseUpdate(),this.config.enableDebug&&this.debug.preUpdate()):(this.stepping&&(this.pendingStep=!0),this.scale.preUpdate(),this.config.enableDebug&&this.debug.preUpdate(),this.physics.preUpdate(),this.state.preUpdate(),this.plugins.preUpdate(),this.stage.preUpdate(),this.state.update(),this.stage.update(),this.tweens.update(),this.sound.update(),this.input.update(),this.physics.update(),this.particles.update(),this.plugins.update(),this.stage.postUpdate(),this.plugins.postUpdate()),this.renderType!=b.HEADLESS&&(this.state.preRender(),this.renderer.render(this.stage),this.plugins.render(),this.state.render(),this.plugins.postRender(),this.device.cocoonJS&&this.renderType===b.CANVAS&&1===this.stage.currentRenderOrderID&&this.context.fillRect(0,0,0,0))},enableStep:function(){this.stepping=!0,this.pendingStep=!1,this.stepCount=0},disableStep:function(){this.stepping=!1,this.pendingStep=!1},step:function(){this.pendingStep=!1,this.stepCount++},destroy:function(){this.raf.stop(),this.state.destroy(),this.sound.destroy(),this.scale.destroy(),this.stage.destroy(),this.input.destroy(),this.physics.destroy(),this.state=null,this.cache=null,this.input=null,this.load=null,this.sound=null,this.stage=null,this.time=null,this.world=null,this.isBooted=!1,b.Canvas.removeFromDOM(this.canvas)},gamePaused:function(a){this._paused||(this._paused=!0,this.time.gamePaused(),this.sound.setMute(),this.onPause.dispatch(a))},gameResumed:function(a){this._paused&&!this._codePaused&&(this._paused=!1,this.time.gameResumed(),this.input.reset(),this.sound.unsetMute(),this.onResume.dispatch(a))},focusLoss:function(a){this.onBlur.dispatch(a),this.stage.disableVisibilityChange||this.gamePaused(a)},focusGain:function(a){this.onFocus.dispatch(a),this.stage.disableVisibilityChange||this.gameResumed(a)}},b.Game.prototype.constructor=b.Game,Object.defineProperty(b.Game.prototype,"paused",{get:function(){return this._paused},set:function(a){a===!0?(this._paused===!1&&(this._paused=!0,this.sound.setMute(),this.time.gamePaused(),this.onPause.dispatch(this)),this._codePaused=!0):(this._paused&&(this._paused=!1,this.input.reset(),this.sound.unsetMute(),this.time.gameResumed(),this.onResume.dispatch(this)),this._codePaused=!1)}}),b.Input=function(a){this.game=a,this.hitCanvas=null,this.hitContext=null,this.moveCallbacks=[],this.moveCallback=null,this.moveCallbackContext=this,this.pollRate=0,this.disabled=!1,this.multiInputOverride=b.Input.MOUSE_TOUCH_COMBINE,this.position=null,this.speed=null,this.circle=null,this.scale=null,this.maxPointers=10,this.currentPointers=0,this.tapRate=200,this.doubleTapRate=300,this.holdRate=2e3,this.justPressedRate=200,this.justReleasedRate=200,this.recordPointerHistory=!1,this.recordRate=100,this.recordLimit=100,this.pointer1=null,this.pointer2=null,this.pointer3=null,this.pointer4=null,this.pointer5=null,this.pointer6=null,this.pointer7=null,this.pointer8=null,this.pointer9=null,this.pointer10=null,this.activePointer=null,this.mousePointer=null,this.mouse=null,this.keyboard=null,this.touch=null,this.mspointer=null,this.gamepad=null,this.resetLocked=!1,this.onDown=null,this.onUp=null,this.onTap=null,this.onHold=null,this.minPriorityID=0,this.interactiveItems=new b.ArrayList,this._localPoint=new b.Point,this._pollCounter=0,this._oldPosition=null,this._x=0,this._y=0},b.Input.MOUSE_OVERRIDES_TOUCH=0,b.Input.TOUCH_OVERRIDES_MOUSE=1,b.Input.MOUSE_TOUCH_COMBINE=2,b.Input.prototype={boot:function(){this.mousePointer=new b.Pointer(this.game,0),this.pointer1=new b.Pointer(this.game,1),this.pointer2=new b.Pointer(this.game,2),this.mouse=new b.Mouse(this.game),this.keyboard=new b.Keyboard(this.game),this.touch=new b.Touch(this.game),this.mspointer=new b.MSPointer(this.game),this.gamepad=new b.Gamepad(this.game),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.scale=new b.Point(1,1),this.speed=new b.Point,this.position=new b.Point,this._oldPosition=new b.Point,this.circle=new b.Circle(0,0,44),this.activePointer=this.mousePointer,this.currentPointers=0,this.hitCanvas=document.createElement("canvas"),this.hitCanvas.width=1,this.hitCanvas.height=1,this.hitContext=this.hitCanvas.getContext("2d"),this.mouse.start(),this.keyboard.start(),this.touch.start(),this.mspointer.start(),this.mousePointer.active=!0},destroy:function(){this.mouse.stop(),this.keyboard.stop(),this.touch.stop(),this.mspointer.stop(),this.gamepad.stop(),this.moveCallbacks=[]},addMoveCallback:function(a,b){return this.moveCallbacks.push({callback:a,context:b})-1},deleteMoveCallback:function(a){this.moveCallbacks[a]&&this.moveCallbacks.splice(a,1)},addPointer:function(){for(var a=0,c=10;c>0;c--)null===this["pointer"+c]&&(a=c);return 0===a?(console.warn("You can only have 10 Pointer objects"),null):(this["pointer"+a]=new b.Pointer(this.game,a),this["pointer"+a])},update:function(){return this.keyboard.update(),this.pollRate>0&&this._pollCounter=c;c++)this["pointer"+c]&&this["pointer"+c].reset();this.currentPointers=0,"none"!==this.game.canvas.style.cursor&&(this.game.canvas.style.cursor="inherit"),a&&(this.onDown.dispose(),this.onUp.dispose(),this.onTap.dispose(),this.onHold.dispose(),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.moveCallbacks=[]),this._pollCounter=0}},resetSpeed:function(a,b){this._oldPosition.setTo(a,b),this.speed.setTo(0,0)},startPointer:function(a){if(this.maxPointers<10&&this.totalActivePointers==this.maxPointers)return null;if(this.pointer1.active===!1)return this.pointer1.start(a);if(this.pointer2.active===!1)return this.pointer2.start(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active===!1)return this["pointer"+b].start(a);return null},updatePointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.move(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.move(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].move(a);return null},stopPointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.stop(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.stop(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].stop(a);return null},getPointer:function(a){if(a=a||!1,this.pointer1.active==a)return this.pointer1;if(this.pointer2.active==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active==a)return this["pointer"+b];return null},getPointerFromIdentifier:function(a){if(this.pointer1.identifier===a)return this.pointer1;if(this.pointer2.identifier===a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].identifier===a)return this["pointer"+b];return null},getPointerFromId:function(a){if(this.pointer1.pointerId===a)return this.pointer1;if(this.pointer2.pointerId===a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].pointerId===a)return this["pointer"+b];return null},getLocalPosition:function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.worldTransform,f=1/(e.a*e.d+e.c*-e.b);return d.setTo(e.d*f*c.x+-e.c*f*c.y+(e.ty*e.c-e.tx*e.d)*f,e.a*f*c.y+-e.b*f*c.x+(-e.ty*e.a+e.tx*e.b)*f)},hitTest:function(a,c,d){if(!a.worldVisible)return!1;if(this.getLocalPosition(a,c,this._localPoint),d.copyFrom(this._localPoint),a.hitArea&&a.hitArea.contains)return a.hitArea.contains(this._localPoint.x,this._localPoint.y);if(a instanceof PIXI.Sprite){var e=a.texture.frame.width,f=a.texture.frame.height,g=-e*a.anchor.x;if(this._localPoint.x>=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],c,d))return!0;return!1}},b.Input.prototype.constructor=b.Input,Object.defineProperty(b.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounter=a;a++)this["pointer"+a]&&this["pointer"+a].active&&this.currentPointers++;return this.currentPointers}}),Object.defineProperty(b.Input.prototype,"worldX",{get:function(){return this.game.camera.view.x+this.x}}),Object.defineProperty(b.Input.prototype,"worldY",{get:function(){return this.game.camera.view.y+this.y}}),b.Key=function(a,c){this.game=a,this.enabled=!0,this.event=null,this.isDown=!1,this.isUp=!0,this.altKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.timeDown=0,this.duration=0,this.timeUp=-2500,this.repeats=0,this.keyCode=c,this.onDown=new b.Signal,this.onHoldCallback=null,this.onHoldContext=null,this.onUp=new b.Signal},b.Key.prototype={update:function(){this.enabled&&this.isDown&&(this.duration=this.game.time.now-this.timeDown,this.repeats++,this.onHoldCallback&&this.onHoldCallback.call(this.onHoldContext,this))},processKeyDown:function(a){this.enabled&&(this.event=a,this.isDown||(this.altKey=a.altKey,this.ctrlKey=a.ctrlKey,this.shiftKey=a.shiftKey,this.isDown=!0,this.isUp=!1,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0,this.onDown.dispatch(this)))},processKeyUp:function(a){this.enabled&&(this.event=a,this.isUp||(this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.onUp.dispatch(this)))},reset:function(a){"undefined"==typeof a&&(a=!0),this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=0,this.enabled=!0,a&&(this.onDown.removeAll(),this.onUp.removeAll(),this.onHoldCallback=null,this.onHoldContext=null)},justPressed:function(a){return"undefined"==typeof a&&(a=50),this.isDown&&this.duration0&&this.processInteractiveObjects(!0),this.dirty=!1),this._holdSent===!1&&this.duration>=this.game.input.holdRate&&((this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.now>=this._nextDrop&&(this._nextDrop=this.game.time.now+this.game.input.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>this.game.input.recordLimit&&this._history.shift()))},move:function(a,c){if(!this.game.input.pollLocked){if("undefined"==typeof c&&(c=!1),"undefined"!=typeof a.button&&(this.button=a.button),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&this.game.input.mouse.locked&&!c&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*this.game.input.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*this.game.input.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(this.game.input.multiInputOverride===b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.activePointer=this,this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.game.input.x,this.game.input.y),this.game.input.circle.x=this.game.input.x,this.game.input.circle.y=this.game.input.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var d=this.game.input.moveCallbacks.length;d--;)this.game.input.moveCallbacks[d].callback.call(this.game.input.moveCallbacks[d].context,this,this.x,this.y,c);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):this.game.input.interactiveItems.total>0&&this.processInteractiveObjects(c),this}},processInteractiveObjects:function(a){this.game.input.interactiveItems.setAll("checked",!1),this._highestRenderOrderID=Number.MAX_SAFE_INTEGER,this._highestRenderObject=null,this._highestInputPriorityID=-1;var b=this.game.input.interactiveItems.first;do b&&b.validForInput(this._highestInputPriorityID,this._highestRenderOrderID,!1)&&(b.checked=!0,(a&&b.checkPointerDown(this,!0)||!a&&b.checkPointerOver(this,!0))&&(this._highestRenderOrderID=b.sprite._cache[3],this._highestInputPriorityID=b.priorityID,this._highestRenderObject=b)),b=this.game.input.interactiveItems.next;while(null!==b);var b=this.game.input.interactiveItems.first;do b&&!b.checked&&b.validForInput(this._highestInputPriorityID,this._highestRenderOrderID,!0)&&(a&&b.checkPointerDown(this,!1)||!a&&b.checkPointerOver(this,!1))&&(this._highestRenderOrderID=b.sprite._cache[3],this._highestInputPriorityID=b.priorityID,this._highestRenderObject=b),b=this.game.input.interactiveItems.next;while(null!==b);return null===this._highestRenderObject?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=this._highestRenderObject,this._highestRenderObject._pointerOverHandler(this)):this.targetObject===this._highestRenderObject?this._highestRenderObject.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=this._highestRenderObject,this.targetObject._pointerOverHandler(this)),null!==this.targetObject},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){return this._stateReset?void a.preventDefault():(this.timeUp=this.game.time.now,(this.game.input.multiInputOverride===b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.onUp.dispatch(this,a),this.duration>=0&&this.duration<=this.game.input.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=!1,this.isDown=!1,this.isUp=!0,this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.callAll("_releasedHandler",this),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.now},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isMouse===!1&&(this.active=!1),this.pointerId=null,this.identifier=null,this.dirty=!1,this.isDown=!1,this.isUp=!0,this.totalTouches=0,this._holdSent=!1,this._history.length=0,this._stateReset=!0,this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null},resetMovement:function(){this.movementX=0,this.movementY=0}},b.Pointer.prototype.constructor=b.Pointer,Object.defineProperty(b.Pointer.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.now-this.timeDown}}),Object.defineProperty(b.Pointer.prototype,"worldX",{get:function(){return this.game.world.camera.x+this.x}}),Object.defineProperty(b.Pointer.prototype,"worldY",{get:function(){return this.game.world.camera.y+this.y}}),b.Touch=function(a){this.game=a,this.disabled=!1,this.callbackContext=this.game,this.touchStartCallback=null,this.touchMoveCallback=null,this.touchEndCallback=null,this.touchEnterCallback=null,this.touchLeaveCallback=null,this.touchCancelCallback=null,this.preventDefault=!0,this.event=null,this._onTouchStart=null,this._onTouchMove=null,this._onTouchEnd=null,this._onTouchEnter=null,this._onTouchLeave=null,this._onTouchCancel=null,this._onTouchMove=null},b.Touch.prototype={start:function(){if(null===this._onTouchStart){var a=this;this.game.device.touch&&(this._onTouchStart=function(b){return a.onTouchStart(b)},this._onTouchMove=function(b){return a.onTouchMove(b)},this._onTouchEnd=function(b){return a.onTouchEnd(b)},this._onTouchEnter=function(b){return a.onTouchEnter(b)},this._onTouchLeave=function(b){return a.onTouchLeave(b)},this._onTouchCancel=function(b){return a.onTouchCancel(b)},this.game.canvas.addEventListener("touchstart",this._onTouchStart,!1),this.game.canvas.addEventListener("touchmove",this._onTouchMove,!1),this.game.canvas.addEventListener("touchend",this._onTouchEnd,!1),this.game.canvas.addEventListener("touchcancel",this._onTouchCancel,!1),this.game.device.cocoonJS||(this.game.canvas.addEventListener("touchenter",this._onTouchEnter,!1),this.game.canvas.addEventListener("touchleave",this._onTouchLeave,!1)))}},consumeDocumentTouches:function(){this._documentTouchMove=function(a){a.preventDefault()},document.addEventListener("touchmove",this._documentTouchMove,!1)},onTouchStart:function(a){if(this.event=a,this.touchStartCallback&&this.touchStartCallback.call(this.callbackContext,a),!this.game.input.disabled&&!this.disabled){this.preventDefault&&a.preventDefault();for(var b=0;b0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var c=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.game.time.now},justReleased:function(a){return a=a||250,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.pad=null,this.game=null}},b.GamepadButton.prototype.constructor=b.GamepadButton,b.InputHandler=function(a){this.sprite=a,this.game=a.game,this.enabled=!1,this.checked=!1,this.priorityID=0,this.useHandCursor=!1,this._setHandCursor=!1,this.isDragged=!1,this.allowHorizontalDrag=!0,this.allowVerticalDrag=!0,this.bringToTop=!1,this.snapOffset=null,this.snapOnDrag=!1,this.snapOnRelease=!1,this.snapX=0,this.snapY=0,this.snapOffsetX=0,this.snapOffsetY=0,this.pixelPerfectOver=!1,this.pixelPerfectClick=!1,this.pixelPerfectAlpha=255,this.draggable=!1,this.boundsRect=null,this.boundsSprite=null,this.consumePointerEvent=!1,this.scaleLayer=!1,this._dragPhase=!1,this._wasEnabled=!1,this._tempPoint=new b.Point,this._pointerData=[],this._pointerData.push({id:0,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1})},b.InputHandler.prototype={start:function(a,c){if(a=a||0,"undefined"==typeof c&&(c=!1),this.enabled===!1){this.game.input.interactiveItems.add(this),this.useHandCursor=c,this.priorityID=a;for(var d=0;10>d;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new b.Point,this.enabled=!0,this._wasEnabled=!0,this.sprite.events&&null===this.sprite.events.onInputOver&&(this.sprite.events.onInputOver=new b.Signal,this.sprite.events.onInputOut=new b.Signal,this.sprite.events.onInputDown=new b.Signal,this.sprite.events.onInputUp=new b.Signal,this.sprite.events.onDragStart=new b.Signal,this.sprite.events.onDragStop=new b.Signal)}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1; for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return"undefined"==typeof c&&(c=!0),0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite._cache[3]b;b++)if(this._pointerData[b].isOver)return!0}return!1},pointerOut:function(a){if(this.enabled){if("undefined"!=typeof a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0}return!1},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?("undefined"==typeof b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?("undefined"==typeof b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){null!==this.sprite&&(this._pointerData[a.id].isOver===!1||a.dirty)&&(this._pointerData[a.id].isOver=!0,this._pointerData[a.id].isOut=!1,this._pointerData[a.id].timeOver=this.game.time.now,this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),this.sprite&&this.sprite.events&&this.sprite.events.onInputOver.dispatch(this.sprite,a))},_pointerOutHandler:function(a){null!==this.sprite&&(this._pointerData[a.id].isOver=!1,this._pointerData[a.id].isOut=!0,this._pointerData[a.id].timeOut=this.game.time.now,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut.dispatch(this.sprite,a))},_touchedHandler:function(a){if(null!==this.sprite){if(this._pointerData[a.id].isDown===!1&&this._pointerData[a.id].isOver===!0){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;this._pointerData[a.id].isDown=!0,this._pointerData[a.id].isUp=!1,this._pointerData[a.id].timeDown=this.game.time.now,this.sprite&&this.sprite.events&&this.sprite.events.onInputDown.dispatch(this.sprite,a),a.dirty=!0,this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){null!==this.sprite&&this._pointerData[a.id].isDown&&a.isUp&&(this._pointerData[a.id].isDown=!1,this._pointerData[a.id].isUp=!0,this._pointerData[a.id].timeUp=this.game.time.now,this._pointerData[a.id].downDuration=this._pointerData[a.id].timeUp-this._pointerData[a.id].timeDown,this.checkPointerOver(a)?this.sprite&&this.sprite.events&&this.sprite.events.onInputUp.dispatch(this.sprite,a,!0):(this.sprite&&this.sprite.events&&this.sprite.events.onInputUp.dispatch(this.sprite,a,!1),this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1)),a.dirty=!0,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a))},updateDrag:function(a){if(a.isUp)return this.stopDrag(a),!1;var b=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,c=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;return this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=b),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)):(this.allowHorizontalDrag&&(this.sprite.x=b),this.allowVerticalDrag&&(this.sprite.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1},startDrag:function(a){if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else{if(this.dragFromCenter){var b=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-b.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-b.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.sprite.events.onDragStart.dispatch(this.sprite,a)},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop.dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.xthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-this.sprite.width),this.sprite.ythis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-this.sprite.height))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.camerOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.camerOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.camerOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.camerOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.xthis.boundsSprite.x+this.boundsSprite.width&&(this.sprite.x=this.boundsSprite.x+this.boundsSprite.width-this.sprite.width),this.sprite.ythis.boundsSprite.y+this.boundsSprite.height&&(this.sprite.y=this.boundsSprite.y+this.boundsSprite.height-this.sprite.height))}},b.InputHandler.prototype.constructor=b.InputHandler,b.Events=function(a){this.parent=a,this.onAddedToGroup=new b.Signal,this.onRemovedFromGroup=new b.Signal,this.onDestroy=new b.Signal,this.onKilled=new b.Signal,this.onRevived=new b.Signal,this.onOutOfBounds=new b.Signal,this.onEnterBounds=new b.Signal,this.onInputOver=null,this.onInputOut=null,this.onInputDown=null,this.onInputUp=null,this.onDragStart=null,this.onDragStop=null,this.onAnimationStart=null,this.onAnimationComplete=null,this.onAnimationLoop=null},b.Events.prototype={destroy:function(){this.parent=null,this.onDestroy.dispose(),this.onAddedToGroup.dispose(),this.onRemovedFromGroup.dispose(),this.onKilled.dispose(),this.onRevived.dispose(),this.onOutOfBounds.dispose(),this.onInputOver&&(this.onInputOver.dispose(),this.onInputOut.dispose(),this.onInputDown.dispose(),this.onInputUp.dispose(),this.onDragStart.dispose(),this.onDragStop.dispose()),this.onAnimationStart&&(this.onAnimationStart.dispose(),this.onAnimationComplete.dispose(),this.onAnimationLoop.dispose())}},b.Events.prototype.constructor=b.Events,b.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},b.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Image(this.game,a,c,d,e))},sprite:function(a,b,c,d,e){return"undefined"==typeof e&&(e=this.world),e.create(a,b,c,d)},tween:function(a){return this.game.tweens.create(a)},group:function(a,c,d,e,f){return new b.Group(this.game,a,c,d,e,f)},physicsGroup:function(a,c,d,e){return new b.Group(this.game,c,d,e,!0,a)},spriteBatch:function(a,c,d){return"undefined"==typeof a&&(a=null),"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,c,d,e,f,g,h){return"undefined"==typeof h&&(h=this.world),h.add(new b.TileSprite(this.game,a,c,d,e,f,g))},rope:function(a,c,d,e,f,g){return"undefined"==typeof g&&(g=this.world),g.add(new b.Rope(this.game,a,c,d,e,f))},text:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Text(this.game,a,c,d,e))},button:function(a,c,d,e,f,g,h,i,j,k){return"undefined"==typeof k&&(k=this.world),k.add(new b.Button(this.game,a,c,d,e,f,g,h,i,j))},graphics:function(a,c,d){return"undefined"==typeof d&&(d=this.world),d.add(new b.Graphics(this.game,a,c))},emitter:function(a,c,d){return this.game.particles.add(new b.Particles.Arcade.Emitter(this.game,a,c,d))},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f,g){return"undefined"==typeof g&&(g=this.world),g.add(new b.BitmapText(this.game,a,c,d,e,f))},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a},plugin:function(a){return this.game.plugins.add(a)}},b.GameObjectFactory.prototype.constructor=b.GameObjectFactory,b.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},b.GameObjectCreator.prototype={image:function(a,c,d,e){return new b.Image(this.game,a,c,d,e)},sprite:function(a,c,d,e){return new b.Sprite(this.game,a,c,d,e)},tween:function(a){return new b.Tween(a,this.game)},group:function(a,c,d,e,f){return new b.Group(this.game,null,c,d,e,f)},spriteBatch:function(a,c,d){return"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,c,d,e,f,g){return new b.TileSprite(this.game,a,c,d,e,f,g)},rope:function(a,c,d,e,f){return new b.Rope(this.game,a,c,d,e,f)},text:function(a,c,d,e){return new b.Text(this.game,a,c,d,e)},button:function(a,c,d,e,f,g,h,i,j){return new b.Button(this.game,a,c,d,e,f,g,h,i,j)},graphics:function(a,c){return new b.Graphics(this.game,a,c)},emitter:function(a,c,d){return new b.Particles.Arcade.Emitter(this.game,a,c,d)},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f){return new b.BitmapText(this.game,a,c,d,e,f)},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a}},b.GameObjectCreator.prototype.constructor=b.GameObjectCreator,b.BitmapData=function(a,c,d,e){"undefined"==typeof d&&(d=256),"undefined"==typeof e&&(e=256),this.game=a,this.key=c,this.width=d,this.height=e,this.canvas=b.Canvas.create(d,e,"",!0),this.context=this.canvas.getContext("2d"),this.ctx=this.context,this.imageData=this.context.getImageData(0,0,d,e),this.data=this.imageData.data,this.pixels=null,this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data,this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,d,e,"bitmapData",a.rnd.uuid()),this.texture.frame=this.textureFrame,this.type=b.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new b.Point,this._size=new b.Point,this._scale=new b.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new b.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new b.Circle},b.BitmapData.prototype={add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)b.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(c,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){"undefined"==typeof c&&(c=0),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=this.width),"undefined"==typeof f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,c,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=b.Color.packPixel(a,c,d,e);void 0!==j&&j instanceof b.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,c,d,e){if(("undefined"==typeof a||null===a)&&(a=!1),("undefined"==typeof c||null===c)&&(c=!1),("undefined"==typeof d||null===d)&&(d=!1),a||c||d){"undefined"==typeof e&&(e=new b.Rectangle(0,0,this.width,this.height));for(var f=b.Color.createColor(),g=e.y;g=0&&a<=this.width&&c>=0&&c<=this.height&&(this.pixels[c*this.width+a]=b.Device.LITTLE_ENDIAN?g<<24|f<<16|e<<8|d:d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,c,d){d||(d=b.Color.createColor());var e=~~(a+c*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,c,d,e,f){return b.Color.unpackPixel(this.getPixel32(a,c),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){"undefined"==typeof a&&(a=0);var c=b.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do b.Color.unpackPixel(this.getPixel32(d,e),c),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===c.a&&!g);return c.x=d,c.y=e,c},getBounds:function(a){return"undefined"==typeof a&&(a=new b.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(("undefined"==typeof a||null===a)&&(a=this),this._image=a,a instanceof b.Sprite||a instanceof b.Image||a instanceof b.Text)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,this._image=a.texture.baseTexture.source,a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture);else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof b.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}return("undefined"==typeof c||null===c)&&(c=0),("undefined"==typeof d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),("undefined"==typeof g||null===g)&&(g=c),("undefined"==typeof h||null===h)&&(h=d),("undefined"==typeof i||null===i)&&(i=this._size.x),("undefined"==typeof j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),"undefined"==typeof q&&(q=null),"undefined"==typeof r&&(r=!1),this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y?void 0:(this._alpha.prev=this.context.globalAlpha,this.context.save(),this.context.globalAlpha=this._alpha.current,q&&(this.context.globalCompositeOperation=q),r&&(g|=0,h|=0),this.context.translate(g,h),this.context.scale(this._scale.x,this._scale.y),this.context.rotate(this._rotate),this.context.drawImage(this._image,this._pos.x+c,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),this.context.restore(),this.context.globalAlpha=this._alpha.prev,this.dirty=!0,this)},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},shadow:function(a,b,c,d){"undefined"==typeof a||null===a?this.context.shadowColor="rgba(0,0,0,0)":(this.context.shadowColor=a,this.context.shadowBlur=b||5,this.context.shadowOffsetX=c||10,this.context.shadowOffsetY=d||10)},alphaMask:function(a,b,c,d){return"undefined"==typeof d||null===d?this.draw(b).blendSourceAtop():this.draw(b,d.x,d.y,d.width,d.height).blendSourceAtop(),"undefined"==typeof c||null===c?this.draw(a).blendReset():this.draw(a,c.x,c.y,c.width,c.height).blendReset(),this},extract:function(a,b,c,d,e,f,g,h,i){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b),"undefined"==typeof h&&(h=c),"undefined"==typeof i&&(i=d),f&&a.resize(this.width,this.height),this.processPixelRGB(function(f,j,k){return f.r===b&&f.g===c&&f.b===d&&a.setPixel32(j,k,g,h,i,e,!1),!1},this),a.context.putImageData(a.imageData,0,0),a.dirty=!0,a},rect:function(a,b,c,d,e){return"undefined"!=typeof e&&(this.context.fillStyle=e),this.context.fillRect(a,b,c,d),this},circle:function(a,b,c,d){return"undefined"!=typeof d&&(this.context.fillStyle=d),this.context.beginPath(),this.context.arc(a,b,c,0,2*Math.PI,!1),this.context.closePath(),this.context.fill(),this},textureLine:function(a,c,d){if("undefined"==typeof d&&(d="repeat-x"),"string"!=typeof c||(c=this.game.cache.getImage(c))){var e=a.length;return"no-repeat"===d&&e>c.width&&(e=c.width),this.context.fillStyle=this.context.createPattern(c,d),this._circle=new b.Circle(a.start.x,a.start.y,c.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),this.context.save(),this.context.translate(this._pos.x,this._pos.y),this.context.rotate(a.angle),this.context.fillRect(0,0,e,c.height),this.context.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},blendReset:function(){return this.context.globalCompositeOperation="source-over",this},blendSourceOver:function(){return this.context.globalCompositeOperation="source-over",this},blendSourceIn:function(){return this.context.globalCompositeOperation="source-in",this},blendSourceOut:function(){return this.context.globalCompositeOperation="source-out",this},blendSourceAtop:function(){return this.context.globalCompositeOperation="source-atop",this},blendDestinationOver:function(){return this.context.globalCompositeOperation="destination-over",this},blendDestinationIn:function(){return this.context.globalCompositeOperation="destination-in",this},blendDestinationOut:function(){return this.context.globalCompositeOperation="destination-out",this},blendDestinationAtop:function(){return this.context.globalCompositeOperation="destination-atop",this},blendXor:function(){return this.context.globalCompositeOperation="xor",this},blendAdd:function(){return this.context.globalCompositeOperation="lighter",this},blendMultiply:function(){return this.context.globalCompositeOperation="multiply",this},blendScreen:function(){return this.context.globalCompositeOperation="screen",this},blendOverlay:function(){return this.context.globalCompositeOperation="overlay",this},blendDarken:function(){return this.context.globalCompositeOperation="darken",this},blendLighten:function(){return this.context.globalCompositeOperation="lighten",this},blendColorDodge:function(){return this.context.globalCompositeOperation="color-dodge",this},blendColorBurn:function(){return this.context.globalCompositeOperation="color-burn",this},blendHardLight:function(){return this.context.globalCompositeOperation="hard-light",this},blendSoftLight:function(){return this.context.globalCompositeOperation="soft-light",this},blendDifference:function(){return this.context.globalCompositeOperation="difference",this},blendExclusion:function(){return this.context.globalCompositeOperation="exclusion",this},blendHue:function(){return this.context.globalCompositeOperation="hue",this},blendSaturation:function(){return this.context.globalCompositeOperation="saturation",this},blendColor:function(){return this.context.globalCompositeOperation="color",this},blendLuminosity:function(){return this.context.globalCompositeOperation="luminosity",this}},Object.defineProperty(b.BitmapData.prototype,"smoothed",{get:function(){b.Canvas.getSmoothingEnabled(this.context)},set:function(a){b.Canvas.setSmoothingEnabled(this.context,a)}}),b.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b} },b.BitmapData.prototype.constructor=b.BitmapData,b.Sprite=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.name="",this.type=b.SPRITE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.position.set(c,d),this.world=new b.Point(c,d),this.autoCull=!1,this.input=null,this.body=null,this.alive=!0,this.health=1,this.lifespan=0,this.checkWorldBounds=!1,this.outOfBoundsKill=!1,this.debug=!1,this.cameraOffset=new b.Point,this.cropRect=null,this._cache=[0,0,0,0,1,0,1,0],this._crop=null,this._frame=null,this._bounds=new b.Rectangle,this.loadTexture(e,f)},b.Sprite.prototype=Object.create(PIXI.Sprite.prototype),b.Sprite.prototype.constructor=b.Sprite,b.Sprite.prototype.preUpdate=function(){if(1===this._cache[4]&&this.exists)return this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.body&&this.body.preUpdate(),this._cache[4]=0,!1;if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;if(this.lifespan>0&&(this.lifespan-=this.game.time.elapsed,this.lifespan<=0))return this.kill(),!1;if((this.autoCull||this.checkWorldBounds)&&this._bounds.copyFrom(this.getBounds()),this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.checkWorldBounds)if(1===this._cache[5]&&this.game.world.bounds.intersects(this._bounds))this._cache[5]=0,this.events.onEnterBounds.dispatch(this);else if(0===this._cache[5]&&!this.game.world.bounds.intersects(this._bounds)&&(this._cache[5]=1,this.events.onOutOfBounds.dispatch(this),this.outOfBoundsKill))return this.kill(),!1;this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),this.animations.update(),this.body&&this.body.preUpdate();for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Sprite.prototype.update=function(){},b.Sprite.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Sprite.prototype.loadTexture=function(a,c,d){c=c||0,(d||"undefined"==typeof d)&&this.animations.stop(),this.key=a;var e=!0,f=this.smoothed;a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?(this.setTexture(a.texture),this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA)&&(e=!this.animations.loadFrameData(this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA),c))):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),e=!this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty(),e&&(this._frame=b.Rectangle.clone(this.texture.frame)),f||(this.smoothed=!1)},b.Sprite.prototype.setFrame=function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture._updateUvs()},b.Sprite.prototype.resetFrame=function(){this._frame&&this.setFrame(this._frame)},b.Sprite.prototype.crop=function(a,c){"undefined"==typeof c&&(c=!1),a?(c&&null!==this.cropRect?this.cropRect.setTo(a.x,a.y,a.width,a.height):this.cropRect=c&&null===this.cropRect?new b.Rectangle(a.x,a.y,a.width,a.height):a,this.updateCrop()):(this._crop=null,this.cropRect=null,this.resetFrame())},b.Sprite.prototype.updateCrop=function(){if(this.cropRect){this._crop=b.Rectangle.clone(this.cropRect,this._crop),this._crop.x+=this._frame.x,this._crop.y+=this._frame.y;var a=Math.max(this._frame.x,this._crop.x),c=Math.max(this._frame.y,this._crop.y),d=Math.min(this._frame.right,this._crop.right)-a,e=Math.min(this._frame.bottom,this._crop.bottom)-c;this.texture.crop.x=a,this.texture.crop.y=c,this.texture.crop.width=d,this.texture.crop.height=e,this.texture.frame.width=Math.min(d,this.cropRect.width),this.texture.frame.height=Math.min(e,this.cropRect.height),this.texture.width=this.texture.frame.width,this.texture.height=this.texture.frame.height,this.texture._updateUvs()}},b.Sprite.prototype.revive=function(a){return"undefined"==typeof a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,this.health=a,this.events&&this.events.onRevived.dispatch(this),this},b.Sprite.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Sprite.prototype.destroy=function(a){if(null!==this.game&&1!==this._cache[8]){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.input&&this.input.destroy(),this.animations&&this.animations.destroy(),this.body&&this.body.destroy(),this.events&&this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this._crop&&(this._crop=null),this._frame&&(this._frame=null),this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Sprite.prototype.damage=function(a){return this.alive&&(this.health-=a,this.health<=0&&this.kill()),this},b.Sprite.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},b.Sprite.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},b.Sprite.prototype.play=function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0},b.Sprite.prototype.overlap=function(a){return b.Rectangle.intersects(this.getBounds(),a.getBounds())},Object.defineProperty(b.Sprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Sprite.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Sprite.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Sprite.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Sprite.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}}),Object.defineProperty(b.Sprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}),Object.defineProperty(b.Sprite.prototype,"renderOrderID",{get:function(){return this._cache[3]}}),Object.defineProperty(b.Sprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.Sprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&this.body.removeFromWorld(),this.visible=!1)}}),Object.defineProperty(b.Sprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.Sprite.prototype,"smoothed",{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}),Object.defineProperty(b.Sprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Sprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Sprite.prototype,"destroyPhase",{get:function(){return!!this._cache[8]}}),b.Image=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.exists=!0,this.name="",this.type=b.IMAGE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.position.set(c,d),this.world=new b.Point(c,d),this.alive=!0,this.autoCull=!1,this.input=null,this.debug=!1,this.cameraOffset=new b.Point,this.cropRect=null,this._cache=[0,0,0,0,1,0,1,0,0],this._crop=null,this._frame=null,this._bounds=new b.Rectangle,this.loadTexture(e,f)},b.Image.prototype=Object.create(PIXI.Sprite.prototype),b.Image.prototype.constructor=b.Image,b.Image.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;this.autoCull&&(this._bounds.copyFrom(this.getBounds()),this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Image.prototype.update=function(){},b.Image.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Image.prototype.loadTexture=function(a,c){c=c||0,this.key=a;var d=!0,e=this.smoothed;a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?(this.setTexture(a.texture),this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA)&&(d=!this.animations.loadFrameData(this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA),c))):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),d=!this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty(),d&&(this._frame=b.Rectangle.clone(this.texture.frame)),e||(this.smoothed=!1)},b.Image.prototype.setFrame=function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture._updateUvs()},b.Image.prototype.resetFrame=function(){this._frame&&this.setFrame(this._frame)},b.Image.prototype.crop=function(a,c){"undefined"==typeof c&&(c=!1),a?(c&&null!==this.cropRect?this.cropRect.setTo(a.x,a.y,a.width,a.height):this.cropRect=c&&null===this.cropRect?new b.Rectangle(a.x,a.y,a.width,a.height):a,this.updateCrop()):(this._crop=null,this.cropRect=null,this.resetFrame())},b.Image.prototype.updateCrop=function(){if(this.cropRect){this._crop=b.Rectangle.clone(this.cropRect,this._crop),this._crop.x+=this._frame.x,this._crop.y+=this._frame.y;var a=Math.max(this._frame.x,this._crop.x),c=Math.max(this._frame.y,this._crop.y),d=Math.min(this._frame.right,this._crop.right)-a,e=Math.min(this._frame.bottom,this._crop.bottom)-c;this.texture.crop.x=a,this.texture.crop.y=c,this.texture.crop.width=d,this.texture.crop.height=e,this.texture.frame.width=Math.min(d,this.cropRect.width),this.texture.frame.height=Math.min(e,this.cropRect.height),this.texture.width=this.texture.frame.width,this.texture.height=this.texture.frame.height,this.texture._updateUvs()}},b.Image.prototype.revive=function(){return this.alive=!0,this.exists=!0,this.visible=!0,this.events&&this.events.onRevived.dispatch(this),this},b.Image.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Image.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.events&&this.events.destroy(),this.input&&this.input.destroy(),this.animations&&this.animations.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Image.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this},b.Image.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},Object.defineProperty(b.Image.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Image.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Image.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Image.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Image.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"frame",{get:function(){return this._frame},set:function(a){if(a!==this.frame){var b=this.game.cache.getFrameData(this.key);b&&aa;a++)this.children[a].preUpdate();return!0},b.TileSprite.prototype.update=function(){},b.TileSprite.prototype.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=this.game.camera.view.x+this.cameraOffset.x,this.position.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.TileSprite.prototype.autoScroll=function(a,b){this._scroll.set(a,b)},b.TileSprite.prototype.stopScroll=function(){this._scroll.set(0,0)},b.TileSprite.prototype.loadTexture=function(a,c){c=c||0,this.key=a,a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?this.setTexture(a.texture):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty()},b.TileSprite.prototype.setFrame=function(a){this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.texture._updateUvs()},b.TileSprite.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.filters&&(this.filters=null),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.animations.destroy(),this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.alive=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.TileSprite.prototype.play=function(a,b,c,d){return this.animations.play(a,b,c,d)},b.TileSprite.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.tilePosition.x=0,this.tilePosition.y=0,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},Object.defineProperty(b.TileSprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.TileSprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){a!==this.animations.frame&&(this.animations.frame=a)}}),Object.defineProperty(b.TileSprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){a!==this.animations.frameName&&(this.animations.frameName=a)}}),Object.defineProperty(b.TileSprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.TileSprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&(this.body.safeRemove=!0),this.visible=!1)}}),Object.defineProperty(b.TileSprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.TileSprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.TileSprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.TileSprite.prototype,"destroyPhase",{get:function(){return!!this._cache[8]}}),b.Rope=function(a,c,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.name="",this.type=b.ROPE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,this._frame=0,this._frameName="",this._scroll=new b.Point,PIXI.Rope.call(this,e,this.points),this.position.set(c,d),this.input=null,this.world=new b.Point(c,d),this.autoCull=!1,this.checkWorldBounds=!1,this.cameraOffset=new b.Point,this.body=null,this._cache=[0,0,0,0,1,0,1,0,0],this.loadTexture(e,f)},b.Rope.prototype=Object.create(PIXI.Rope.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.preUpdate=function(){if(1===this._cache[4]&&this.exists)return this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.body&&this.body.preUpdate(),this._cache[4]=0,!1;if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;(this.autoCull||this.checkWorldBounds)&&this._bounds.copyFrom(this.getBounds()),this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.checkWorldBounds&&(1===this._cache[5]&&this.game.world.bounds.intersects(this._bounds)?(this._cache[5]=0,this.events.onEnterBounds.dispatch(this)):0!==this._cache[5]||this.game.world.bounds.intersects(this._bounds)||(this._cache[5]=1,this.events.onOutOfBounds.dispatch(this))),this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),this.animations.update(),0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.body&&this.body.preUpdate();for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},b.Rope.prototype.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=this.game.camera.view.x+this.cameraOffset.x,this.position.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Rope.prototype.loadTexture=function(a,c){c=c||0,this.key=a,a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?this.setTexture(a.texture):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key]))},b.Rope.prototype.setFrame=function(a){this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.texture._updateUvs()},b.Rope.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.filters&&(this.filters=null),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.animations.destroy(),this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Rope.prototype.play=function(a,b,c,d){return this.animations.play(a,b,c,d)},b.Rope.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.tilePosition.x=0,this.tilePosition.y=0,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},Object.defineProperty(b.Rope.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Rope.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){a!==this.animations.frame&&(this.animations.frame=a)}}),Object.defineProperty(b.Rope.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){a!==this.animations.frameName&&(this.animations.frameName=a)}}),Object.defineProperty(b.Rope.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.Rope.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&(this.body.safeRemove=!0),this.visible=!1)}}),Object.defineProperty(b.Rope.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.Rope.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Rope.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(b.Rope.prototype,"segments",{get:function(){for(var a,c,d,e,f,g,h,i,j=[],k=0;ka;a++)this.children[a].preUpdate();return!0},b.Text.prototype.update=function(){},b.Text.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Text.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.texture.destroy(!0),this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null);var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Text.prototype.setShadow=function(a,b,c,d){this.style.shadowOffsetX=a||0,this.style.shadowOffsetY=b||0,this.style.shadowColor=c||"rgba(0,0,0,0)",this.style.shadowBlur=d||0,this.dirty=!0},b.Text.prototype.setStyle=function(a){a=a||{},a.font=a.font||"bold 20pt Arial",a.fill=a.fill||"black",a.align=a.align||"left",a.stroke=a.stroke||"black",a.strokeThickness=a.strokeThickness||0,a.wordWrap=a.wordWrap||!1,a.wordWrapWidth=a.wordWrapWidth||100,a.shadowOffsetX=a.shadowOffsetX||0,a.shadowOffsetY=a.shadowOffsetY||0,a.shadowColor=a.shadowColor||"rgba(0,0,0,0)",a.shadowBlur=a.shadowBlur||0,this.style=a,this.dirty=!0},b.Text.prototype.updateText=function(){this.texture.baseTexture.resolution=this.resolution,this.context.font=this.style.font;var a=this.text;this.style.wordWrap&&(a=this.wordWrap(this.text));for(var b=a.split(/(?:\r\n|\r|\n)/),c=[],d=0,e=this.determineFontProperties(this.style.font),f=0;f0?this.updateLine(b[f],k,l):(this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(b[f],k,l),this.style.fill&&this.context.fillText(b[f],k,l));this.updateTexture()},b.Text.prototype.updateLine=function(a,b,c){for(var d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d0&&this.drawPolygon(d)}else this.drawPolygon(d)},b.Graphics.prototype.drawTriangles=function(a,c,d){"undefined"==typeof d&&(d=!1);var e,f=new b.Point,g=new b.Point,h=new b.Point,i=[];if(c)if(a[0]instanceof b.Point)for(e=0;e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.textureBuffer.clear(),this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},b.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d,PIXI.TextureCache[e[f].uuid].frame.x=e[f].x,PIXI.TextureCache[e[f].uuid].frame.y=e[f].y;this.buildRetroFontText()}},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(b.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c){a=a||256,b=b||256;var d=document.createElement("canvas");return"string"==typeof c&&""!==c&&(d.id=c),d.width=a,d.height=b,d.style.display="block",d},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkOS(),this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures()},b.Device.LITTLE_ENDIAN=!1,b.Device.prototype={_checkOS:function(){var a=navigator.userAgent; -/Playstation Vita/.test(a)?this.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?this.kindle=!0:/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1||this.chromeOS)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1)},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"opus"==a&&this.opus?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,c,d){a=+a||0;var e=typeof c;"number"!==e&&"string"!==e||!d||d[c]!==a||(c=d=null),d=null==d?1:+d||0,null===c?(c=a,a=0):c=+c||0;for(var f=-1,g=b.Math.max(b.Math.ceil((c-a)/(d||1)),0),h=new Array(g);++fc&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},limitValue:function(a,b,c){return b>a?b:a>c?c:a},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return"undefined"==typeof c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof b.Rectangle)var c=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var c=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?c=c.concat(this.nodes[d].retrieve(a)):(c=c.concat(this.nodes[0].retrieve(a)),c=c.concat(this.nodes[1].retrieve(a)),c=c.concat(this.nodes[2].retrieve(a)),c=c.concat(this.nodes[3].retrieve(a)))),c},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ac;)this._tweens[c].update(this.game.time.now)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Default,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1,g&&0===f&&(f=1);var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},from:function(a,b,c,d,e,f,g){var h={};for(var i in a)h[i]=this._object[i],this._object[i]=a[i];return this.to(h,b,c,d,e,f,g)},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):"string"==typeof l?l=k+parseFloat(l,10):"number"==typeof l&&(j[c]=k+(l-k)*i)}g.push(j),d+=f}var j={};for(c in this._valuesEnd)j[c]=this._valuesEnd[c];if(g.push(j),this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,a&&0===this._repeat&&(this._repeat=1),this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&(this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),!this.isRunning))return!1;if(1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._yoyo&&(this._reversed=!this._reversed),this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Easing.Default=b.Easing.Linear.None,b.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.timeCap=1/60*1e3,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;athis.timeCap&&(this.elapsed=this.timeCap),this.physicsElapsed=this.elapsed/1e3||1/60,this.deltaCap>0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.now,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.now,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.now;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(b.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(b.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a,b){if("undefined"==typeof a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,c,d,e,f){return c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null===this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.__tilePattern&&(this.sprite.__tilePattern=!1,this.tilingTexture=!1),this._anims[a]},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){"undefined"==typeof h&&(h=!1),this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onUpdate=null,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if("undefined"==typeof b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length&&(this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete()),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame)),!0):!1},next:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},previous:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose()},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(b.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new b.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new b.Frame(this.index,this.x,this.y,this.width,this.height,this.name,this.uuid);for(var c in this)this.hasOwnProperty(c)&&(a[c]=this[c]);return a},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new b.FrameData,c=0;c=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+c+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._packIndex=0,this.loadPack()):this.beginLoad())},beginLoad:function(){this.progress=0,this.progressFloat=0,this.hasLoaded=!1,this.isLoading=!0,this.onLoadStart.dispatch(this._fileList.length),this._fileList.length>0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.isLoading=!1,this.onLoadComplete.dispatch())},loadPack:function(){if(!this._packList[this._packIndex])return void console.warn("Phaser.Loader loadPackList invalid index "+this._packIndex);var a=this._packList[this._packIndex];null!==a.data?this.packLoadComplete(this._packIndex,!1):this.xhrLoad(this._packIndex,this.baseURL+a.url,"text","packLoadComplete","packLoadError")},packLoadComplete:function(a,c){if("undefined"==typeof c&&(c=!0),!this._packList[a])return void console.warn("Phaser.Loader packLoadComplete invalid index "+a);var d=this._packList[a];if(d.loaded=!0,c)var e=JSON.parse(this._xhr.responseText);else var e=this._packList[a].data;if(e[d.key])for(var f,g=0;g=0&&(b=b.substr(0,b.indexOf("?"))),this.game.device.canPlayAudio(b))return a[c];return null},fileError:function(a){this._fileList[a].loaded=!0,this._fileList[a].error=!0,this.onFileError.dispatch(this._fileList[a].key,this._fileList[a]),console.warn("Phaser.Loader error loading file: "+this._fileList[a].key+" from URL "+this._fileList[a].url),this.nextFile(a,!1)},fileComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader fileComplete invalid index "+a);var c=this._fileList[a];c.loaded=!0;var d=!0;switch(c.type){case"image":this.game.cache.addImage(c.key,c.url,c.data);break;case"spritesheet":this.game.cache.addSpriteSheet(c.key,c.url,c.data,c.frameWidth,c.frameHeight,c.frameMax,c.margin,c.spacing);break;case"textureatlas":if(null==c.atlasURL)this.game.cache.addTextureAtlas(c.key,c.url,c.data,c.atlasData,c.format);else if(d=!1,c.format==b.Loader.TEXTURE_ATLAS_JSON_ARRAY||c.format==b.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","jsonLoadComplete","dataLoadError");else{if(c.format!=b.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+c.format);this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","xmlLoadComplete","dataLoadError")}break;case"bitmapfont":null==c.xmlURL?this.game.cache.addBitmapFont(c.key,c.url,c.data,c.xmlData,c.xSpacing,c.ySpacing):(d=!1,this.xhrLoad(this._fileIndex,this.baseURL+c.xmlURL,"text","xmlLoadComplete","dataLoadError"));break;case"audio":if(this.game.sound.usingWebAudio){if(c.data=this._xhr.response,this.game.cache.addSound(c.key,c.url,c.data,!0,!1),c.autoDecode){var e=this,f=c.key;this.game.cache.updateSound(f,"isDecoding",!0),this.game.sound.context.decodeAudioData(c.data,function(a){a&&(e.game.cache.decodedSound(f,a),e.game.sound.onSoundDecode.dispatch(f,e.game.cache.getSound(f)))})}}else c.data.removeEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete),this.game.cache.addSound(c.key,c.url,c.data,!1,!0);break;case"text":c.data=this._xhr.responseText,this.game.cache.addText(c.key,c.url,c.data);break;case"physics":var g=JSON.parse(this._xhr.responseText);this.game.cache.addPhysicsData(c.key,c.url,g,c.format);break;case"script":c.data=document.createElement("script"),c.data.language="javascript",c.data.type="text/javascript",c.data.defer=!1,c.data.text=this._xhr.responseText,document.head.appendChild(c.data),c.callback&&(c.data=c.callback.call(c.callbackContext,c.key,this._xhr.responseText));break;case"binary":c.data=c.callback?c.callback.call(c.callbackContext,c.key,this._xhr.response):this._xhr.response,this.game.cache.addBinary(c.key,c.data)}d&&this.nextFile(a,!0)},jsonLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader jsonLoadComplete invalid index "+a);var b=this._fileList[a];if(this._ajax&&this._ajax.responseText)var c=JSON.parse(this._ajax.responseText);else var c=JSON.parse(this._xhr.responseText);b.loaded=!0,"tilemap"===b.type?this.game.cache.addTilemap(b.key,b.url,c,b.format):"json"===b.type?this.game.cache.addJSON(b.key,b.url,c):this.game.cache.addTextureAtlas(b.key,b.url,b.data,c,b.format),this.nextFile(a,!0)},csvLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader csvLoadComplete invalid index "+a);var b=this._fileList[a],c=this._xhr.responseText;b.loaded=!0,this.game.cache.addTilemap(b.key,b.url,c,b.format),this.nextFile(a,!0)},dataLoadError:function(a){var b=this._fileList[a];b.loaded=!0,b.error=!0,console.warn("Phaser.Loader dataLoadError: "+b.key),this.nextFile(a,!0)},xmlLoadComplete:function(a){""!==this._xhr.responseType&&"text"!==this._xhr.responseType&&(console.warn("Invalid XML Response Type",this._fileList[a]),console.warn(this._xhr));var b,c=this._xhr.responseText;try{if(window.DOMParser){var d=new DOMParser;b=d.parseFromString(c,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(c)}catch(e){b=void 0}if(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)throw new Error("Phaser.Loader. Invalid XML given");var f=this._fileList[a];f.loaded=!0,"bitmapfont"===f.type?this.game.cache.addBitmapFont(f.key,f.url,f.data,b,f.xSpacing,f.ySpacing):"textureatlas"===f.type?this.game.cache.addTextureAtlas(f.key,f.url,f.data,b,f.format):"xml"===f.type&&this.game.cache.addXML(f.key,f.url,b),this.nextFile(a,!0)},nextFile:function(a,b){this.progressFloat+=this._progressChunk,this.progress=Math.round(this.progressFloat),this.progress>100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.updateCrop()),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this.isPlaying&&!this.allowMultiple&&(this.override||e)&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist"),this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null===this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if("undefined"==typeof this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b){"undefined"==typeof b&&(b=!1),this.paused||(this.play("",0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,c){if(this.isPlaying&&!this.paused&&c!==this.volume){if("undefined"==typeof a&&(a=1e3),"undefined"==typeof c)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");var d=this.game.add.tween(this).to({volume:c},a,b.Easing.Linear.None,!0);d.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a>>0:(a<<24|c<<16|d<<8|e)>>>0},unpackPixel:function(a,c,d,e){return("undefined"==typeof c||null===c)&&(c=b.Color.createColor()),("undefined"==typeof d||null===d)&&(d=!1),("undefined"==typeof e||null===e)&&(e=!1),b.Device.LITTLE_ENDIAN?(c.a=(4278190080&a)>>>24,c.b=(16711680&a)>>>16,c.g=(65280&a)>>>8,c.r=255&a):(c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a),c.color=a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a/255+")",d&&b.Color.RGBtoHSL(c.r,c.g,c.b,c),e&&b.Color.RGBtoHSV(c.r,c.g,c.b,c),c},fromRGBA:function(a,c){return c||(c=b.Color.createColor()),c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a+")",c},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,1)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6}return e},HSLtoRGB:function(a,c,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=b.Color.createColor(d,d,d),0!==c){var f=.5>d?d*(1+c):d+c-d*c,g=2*d-f;e.r=b.Color.hueToColor(g,f,a+1/3),e.g=b.Color.hueToColor(g,f,a),e.b=b.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),b.Color.updateColor(e),e},RGBtoHSV:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,255)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6),e},HSVtoRGB:function(a,c,d,e){"undefined"==typeof e&&(e=b.Color.createColor(0,0,0,1,a,c,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-c),l=d*(1-j*c),m=d*(1-(1-j)*c);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),b.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,c,d,e,f,g,h,i){var j={r:a||0,g:c||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return j.color=b.Color.getColor(j.r,j.g,j.b),j.color32=b.Color.getColor32(j.a,j.r,j.g,j.b),b.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,c,d,e,f){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(c<<8)+d).toString(16).slice(1):"0x"+b.Color.componentToHex(e)+b.Color.componentToHex(a)+b.Color.componentToHex(c)+b.Color.componentToHex(d)},hexToRGB:function(a){var c=b.Color.hexToColor(a);return c?b.Color.getColor32(c.a,c.r,c.g,c.b):void 0},hexToColor:function(a,c){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);c?(c.r=e,c.g=f,c.b=g):c=b.Color.createColor(e,f,g)}return c},webToColor:function(a,c){c||(c=b.Color.createColor());var d=/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\)$/.exec(a);return d&&(c.r=parseInt(d[1],10),c.g=parseInt(d[2],10),c.b=parseInt(d[3],10)),c},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,c){"undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSVtoRGB(e/359,a,c));return d},HSLColorWheel:function(a,c){"undefined"==typeof a&&(a=.5),"undefined"==typeof c&&(c=.5);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSLtoRGB(e/359,a,c));return d},interpolateColor:function(a,c,d,e,f){"undefined"==typeof f&&(f=255);var g=b.Color.getRGB(a),h=b.Color.getRGB(c),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return b.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,c,d,e,f,g){var h=b.Color.getRGB(a),i=(c-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return b.Color.getColor(i,j,k)},interpolateRGB:function(a,c,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-c)*i/h+c,l=(g-d)*i/h+d;return b.Color.getColor(j,k,l)},getRandomColor:function(a,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof c&&(c=255),"undefined"==typeof d&&(d=255),c>255||a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var c=b.Color.getRGB(a);return"rgba("+c.r.toString()+","+c.g.toString()+","+c.b.toString()+","+(c.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=4,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&b.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new b.Physics.BOX2D(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else if(a===b.Physics.BOX2D&&null===this.box2d)this.box2d=new b.Physics.Box2D(this.game,this.config);else if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):c===b.Physics.BOX2D&&this.box2d&&this.box2d.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.skipQuadTree=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0,this.setBoundsToWorld()},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!0);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,g=a.length;g>f;f++)for(var h=0,i=b.length;i>h;h++)this.collideHandler(a[f],b[h],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!1);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,h=a.length;h>f;f++)for(var i=0,j=b.length;j>i;i++)this.collideHandler(a[f],b[i],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length&&a.body)if(a.body.skipQuadTree||this.skipQuadTree)for(var g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,c,d,e,f,g){if(0!==a.length&&0!==c.length)for(var h=0,i=a.children.length;i>h;h++)a.children[h].exists&&(a.children[h].type===b.GROUP?this.collideGroupVsGroup(a.children[h],c,d,e,f,g):this.collideSpriteVsGroup(a.children[h],c,d,e,f,g))},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(a.body&&(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length))for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=this._overlap,b.overlapX=this._overlap,0!==this._overlap)?c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=this._overlap,b.overlapY=this._overlap,0!==this._overlap)?c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0):!1)},separateTile:function(a,b,c){if(!b.enable||!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},getObjectsUnderPointer:function(a,c,d,e){if(0!==c.length&&a.exists){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(c);var f=new b.Rectangle(a.x,a.y,1,1),g=[];this._potentials=this.quadTree.retrieve(f);for(var h=0,i=this._potentials.length;i>h;h++)this._potentials[h].hitTest(a.x,a.y)&&(d&&d.call(e,a,this._potentials[h].sprite),g.push(this._potentials[h].sprite));return g}},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle -},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.enable=!0,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this.skipQuadTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite.body=null,this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){"undefined"==typeof c&&(c=this.offset.x),"undefined"==typeof d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.area=new b.Rectangle(c,d,1,1),this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.explode=function(a,b){this.start(!0,a,0,b,!1)},b.Particles.Arcade.Emitter.prototype.flow=function(a,b,c){this.start(!1,a,b,c,!0)},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=!1),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a||e?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit())},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.area.width=a,this.area.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.NORTH=0,b.Tilemap.EAST=1,b.Tilemap.SOUTH=2,b.Tilemap.WEST=3,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;if(c=a,!this.game.cache.checkImageKey(c))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+c+'"'),null}if("string"==typeof a&&(a=this.getTilesetIndex(a),null===a&&this.format===b.Tilemap.TILED_JSON))return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+c+'"'),null;if(this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0,!0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;c>l;l++)h.push(new b.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;he;e++)this.setCollisionByIndex(a[e],b,c,!1);d&&this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d,e){if("undefined"==typeof c&&(c=!0),"undefined"==typeof e&&(e=!0),d=this.getLayer(d),!(a>b)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){"undefined"==typeof b&&(b=!0),"undefined"==typeof d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,c,d){if(d=this.getLayer(d),a>=0&&a=0&&c=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,Object.defineProperty(b.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this.wrap=!1,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x)},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gc;c++){if(this._column=null,0>c&&this.wrap?this._column=this.layer.data[c+this.map.height]:c>=this.map.height&&this.wrap?this._column=this.layer.data[c-this.map.height]:this.layer.data[c]&&(this._column=this.layer.data[c]),this._column)for(var e=this._mc.startX,f=this._mc.startX+this._mc.maxX;f>e;e++){var a=null;0>e&&this.wrap?a=this._column[e+this.map.width]:e>=this.map.width&&this.wrap?a=this._column[e-this.map.width]:this._column[e]&&(a=this._column[e]),a&&a.index>-1&&(b=this.map.tilesets[this.map.tiles[a.index][2]],this.debug===!1&&a.alpha!==this.context.globalAlpha&&(this.context.globalAlpha=a.alpha),b.draw(this.context,Math.floor(this._mc.tx),Math.floor(this._mc.ty),a.index),a.debug&&(this.context.fillStyle="rgba(0, 255, 0, 0.4)",this.context.fillRect(Math.floor(this._mc.tx),Math.floor(this._mc.ty),this.map.tileWidth,this.map.tileHeight))),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}return this.debug&&(this.context.globalAlpha=1,this.renderDebug()),this.texture._updateUvs(),this.dirty=!1,this.layer.dirty=!1,!0}},b.TilemapLayer.prototype.renderDebug=function(){this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.strokeStyle=this.debugColor,this.context.fillStyle=this.debugFillColor;for(var a=this._mc.startY,b=this._mc.startY+this._mc.maxY;b>a;a++){if(this._column=null,0>a&&this.wrap?this._column=this.layer.data[a+this.map.height]:a>=this.map.height&&this.wrap?this._column=this.layer.data[a-this.map.height]:this.layer.data[a]&&(this._column=this.layer.data[a]),this._column)for(var c=this._mc.startX,d=this._mc.startX+this._mc.maxX;d>c;c++){var e=null;0>c&&this.wrap?e=this._column[c+this.map.width]:c>=this.map.width&&this.wrap?e=this._column[c-this.map.width]:this._column[c]&&(e=this._column[c]),e&&(e.faceTop||e.faceBottom||e.faceLeft||e.faceRight)&&(this._mc.tx=Math.floor(this._mc.tx),this.debugFill&&this.context.fillRect(this._mc.tx,this._mc.ty,this._mc.cw,this._mc.ch),this.context.beginPath(),e.faceTop&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty)),e.faceBottom&&(this.context.moveTo(this._mc.tx,this._mc.ty+this._mc.ch),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),e.faceLeft&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx,this._mc.ty+this._mc.ch)),e.faceRight&&(this.context.moveTo(this._mc.tx+this._mc.cw,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),this.context.stroke()),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}},Object.defineProperty(b.TilemapLayer.prototype,"scrollX",{get:function(){return this._mc.x},set:function(a){a!==this._mc.x&&(this._mc.x=a,this._mc.startX=this.game.math.floor(this._mc.x/this.map.tileWidth),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"scrollY",{get:function(){return this._mc.y},set:function(a){a!==this._mc.y&&(this._mc.y=a,this._mc.startY=this.game.math.floor(this._mc.y/this.map.tileHeight),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=a,this.dirty=!0}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=a,this.dirty=!0}}),b.TilemapParser={parse:function(a,c,d,e,f,g){if("undefined"==typeof d&&(d=32),"undefined"==typeof e&&(e=32),"undefined"==typeof f&&(f=10),"undefined"==typeof g&&(g=10),"undefined"==typeof c)return this.getEmptyData();if(null===c)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(c);if(h){if(h.format===b.Tilemap.CSV)return this.parseCSV(c,h.data,d,e);if(!h.format||h.format===b.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+c)},parseCSV:function(a,c,d,e){var f=this.getEmptyData();c=c.trim();for(var g=[],h=c.split("\n"),i=h.length,j=0,k=0;kk;k++)i.push(a.layers[f].data[k]>0?new b.Tile(g,a.layers[f].data[k],h,j.length,a.tilewidth,a.tileheight):new b.Tile(g,-1,h,j.length,a.tilewidth,a.tileheight)),h++,h===a.layers[f].width&&(j.push(i),h=0,i=[]);g.data=j,e.push(g)}d.layers=e;for(var m=[],f=0;ft;t++)if(a.layers[f].objects[t].gid){var u={gid:a.layers[f].objects[t].gid,name:a.layers[f].objects[t].name,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};r[a.layers[f].name].push(u)}else if(a.layers[f].objects[t].polyline){var u={name:a.layers[f].objects[t].name,type:a.layers[f].objects[t].type,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,width:a.layers[f].objects[t].width,height:a.layers[f].objects[t].height,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};u.polyline=[];for(var v=0;v=c)&&(c=32),("undefined"==typeof d||0>=d)&&(d=32),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.name=a,this.firstgid=b,this.tileWidth=c,this.tileHeight=d,this.tileMargin=e,this.tileSpacing=f,this.properties=g,this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},b.Tileset.prototype={draw:function(a,b,c,d){this.image&&this.drawCoords[d]&&a.drawImage(this.image,this.drawCoords[d][0],this.drawCoords[d][1],this.tileWidth,this.tileHeight,b,c,this.tileWidth,this.tileHeight)},setImage:function(a){this.image=a,this.rows=Math.round((a.height-this.tileMargin)/(this.tileHeight+this.tileSpacing)),this.columns=Math.round((a.width-this.tileMargin)/(this.tileWidth+this.tileSpacing)),this.total=this.rows*this.columns,this.drawCoords.length=0;for(var b=this.tileMargin,c=this.tileMargin,d=this.firstgid,e=0;ea;a++)this.children[a].preUpdate();return!0},b.Text.prototype.update=function(){},b.Text.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Text.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.texture.destroy(!0),this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null);var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Text.prototype.setShadow=function(a,b,c,d){this.style.shadowOffsetX=a||0,this.style.shadowOffsetY=b||0,this.style.shadowColor=c||"rgba(0,0,0,0)",this.style.shadowBlur=d||0,this.dirty=!0},b.Text.prototype.setStyle=function(a){a=a||{},a.font=a.font||"bold 20pt Arial",a.fill=a.fill||"black",a.align=a.align||"left",a.stroke=a.stroke||"black",a.strokeThickness=a.strokeThickness||0,a.wordWrap=a.wordWrap||!1,a.wordWrapWidth=a.wordWrapWidth||100,a.shadowOffsetX=a.shadowOffsetX||0,a.shadowOffsetY=a.shadowOffsetY||0,a.shadowColor=a.shadowColor||"rgba(0,0,0,0)",a.shadowBlur=a.shadowBlur||0,this.style=a,this.dirty=!0},b.Text.prototype.updateText=function(){this.texture.baseTexture.resolution=this.resolution,this.context.font=this.style.font;var a=this.text;this.style.wordWrap&&(a=this.wordWrap(this.text));for(var b=a.split(/(?:\r\n|\r|\n)/),c=[],d=0,e=this.determineFontProperties(this.style.font),f=0;f0?this.updateLine(b[f],k,l):(this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(b[f],k,l),this.style.fill&&this.context.fillText(b[f],k,l));this.updateTexture()},b.Text.prototype.updateLine=function(a,b,c){for(var d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d0&&this.drawPolygon(d)}else this.drawPolygon(d)},b.Graphics.prototype.drawTriangles=function(a,c,d){"undefined"==typeof d&&(d=!1);var e,f=new b.Point,g=new b.Point,h=new b.Point,i=[];if(c)if(a[0]instanceof b.Point)for(e=0;e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.textureBuffer.clear(),this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},b.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d,PIXI.TextureCache[e[f].uuid].frame.x=e[f].x,PIXI.TextureCache[e[f].uuid].frame.y=e[f].y;this.buildRetroFontText()}},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(b.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c){a=a||256,b=b||256;var d=document.createElement("canvas");return"string"==typeof c&&""!==c&&(d.id=c),d.width=a,d.height=b,d.style.display="block",d},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkOS(),this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures()},b.Device.LITTLE_ENDIAN=!1,b.Device.prototype={_checkOS:function(){var a=navigator.userAgent;/Playstation Vita/.test(a)?this.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?this.kindle=!0:/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1||this.chromeOS)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1) +},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"opus"==a&&this.opus?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,c,d){a=+a||0;var e=typeof c;"number"!==e&&"string"!==e||!d||d[c]!==a||(c=d=null),d=null==d?1:+d||0,null===c?(c=a,a=0):c=+c||0;for(var f=-1,g=b.Math.max(b.Math.ceil((c-a)/(d||1)),0),h=new Array(g);++fc&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},limitValue:function(a,b,c){return b>a?b:a>c?c:a},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return"undefined"==typeof c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof b.Rectangle)var c=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var c=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?c=c.concat(this.nodes[d].retrieve(a)):(c=c.concat(this.nodes[0].retrieve(a)),c=c.concat(this.nodes[1].retrieve(a)),c=c.concat(this.nodes[2].retrieve(a)),c=c.concat(this.nodes[3].retrieve(a)))),c},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ac;)this._tweens[c].update(this.game.time.now)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Default,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1,g&&0===f&&(f=1);var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},from:function(a,b,c,d,e,f,g){var h={};for(var i in a)h[i]=this._object[i],this._object[i]=a[i];return this.to(h,b,c,d,e,f,g)},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):"string"==typeof l?l=k+parseFloat(l,10):"number"==typeof l&&(j[c]=k+(l-k)*i)}g.push(j),d+=f}var j={};for(c in this._valuesEnd)j[c]=this._valuesEnd[c];if(g.push(j),this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,a&&0===this._repeat&&(this._repeat=1),this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&(this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),!this.isRunning))return!1;if(1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._yoyo&&(this._reversed=!this._reversed),this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Easing.Default=b.Easing.Linear.None,b.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.timeCap=1/60*1e3,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;athis.timeCap&&(this.elapsed=this.timeCap),this.physicsElapsed=this.elapsed/1e3||1/60,this.deltaCap>0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1); +this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.now,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.now,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.now;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(b.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(b.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a,b){if("undefined"==typeof a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,c,d,e,f){return c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null===this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.__tilePattern&&(this.sprite.__tilePattern=!1,this.tilingTexture=!1),this._anims[a]},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){"undefined"==typeof h&&(h=!1),this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onUpdate=null,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if("undefined"==typeof b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length&&(this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete()),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame)),!0):!1},next:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},previous:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose()},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(b.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new b.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new b.Frame(this.index,this.x,this.y,this.width,this.height,this.name,this.uuid);for(var c in this)this.hasOwnProperty(c)&&(a[c]=this[c]);return a},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new b.FrameData,c=0;c=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+c+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._packIndex=0,this.loadPack()):this.beginLoad())},beginLoad:function(){this.progress=0,this.progressFloat=0,this.hasLoaded=!1,this.isLoading=!0,this.onLoadStart.dispatch(this._fileList.length),this._fileList.length>0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.isLoading=!1,this.onLoadComplete.dispatch())},loadPack:function(){if(!this._packList[this._packIndex])return void console.warn("Phaser.Loader loadPackList invalid index "+this._packIndex);var a=this._packList[this._packIndex];null!==a.data?this.packLoadComplete(this._packIndex,!1):this.xhrLoad(this._packIndex,this.baseURL+a.url,"text","packLoadComplete","packLoadError")},packLoadComplete:function(a,c){if("undefined"==typeof c&&(c=!0),!this._packList[a])return void console.warn("Phaser.Loader packLoadComplete invalid index "+a);var d=this._packList[a];if(d.loaded=!0,c)var e=JSON.parse(this._xhr.responseText);else var e=this._packList[a].data;if(e[d.key])for(var f,g=0;g=0&&(b=b.substr(0,b.indexOf("?"))),this.game.device.canPlayAudio(b))return a[c];return null},fileError:function(a){this._fileList[a].loaded=!0,this._fileList[a].error=!0,this.onFileError.dispatch(this._fileList[a].key,this._fileList[a]),console.warn("Phaser.Loader error loading file: "+this._fileList[a].key+" from URL "+this._fileList[a].url),this.nextFile(a,!1)},fileComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader fileComplete invalid index "+a);var c=this._fileList[a];c.loaded=!0;var d=!0;switch(c.type){case"image":this.game.cache.addImage(c.key,c.url,c.data);break;case"spritesheet":this.game.cache.addSpriteSheet(c.key,c.url,c.data,c.frameWidth,c.frameHeight,c.frameMax,c.margin,c.spacing);break;case"textureatlas":if(null==c.atlasURL)this.game.cache.addTextureAtlas(c.key,c.url,c.data,c.atlasData,c.format);else if(d=!1,c.format==b.Loader.TEXTURE_ATLAS_JSON_ARRAY||c.format==b.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","jsonLoadComplete","dataLoadError");else{if(c.format!=b.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+c.format);this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","xmlLoadComplete","dataLoadError")}break;case"bitmapfont":null==c.xmlURL?this.game.cache.addBitmapFont(c.key,c.url,c.data,c.xmlData,c.xSpacing,c.ySpacing):(d=!1,this.xhrLoad(this._fileIndex,this.baseURL+c.xmlURL,"text","xmlLoadComplete","dataLoadError"));break;case"audio":if(this.game.sound.usingWebAudio){if(c.data=this._xhr.response,this.game.cache.addSound(c.key,c.url,c.data,!0,!1),c.autoDecode){var e=this,f=c.key;this.game.cache.updateSound(f,"isDecoding",!0),this.game.sound.context.decodeAudioData(c.data,function(a){a&&(e.game.cache.decodedSound(f,a),e.game.sound.onSoundDecode.dispatch(f,e.game.cache.getSound(f)))})}}else c.data.removeEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete),this.game.cache.addSound(c.key,c.url,c.data,!1,!0);break;case"text":c.data=this._xhr.responseText,this.game.cache.addText(c.key,c.url,c.data);break;case"physics":var g=JSON.parse(this._xhr.responseText);this.game.cache.addPhysicsData(c.key,c.url,g,c.format);break;case"script":c.data=document.createElement("script"),c.data.language="javascript",c.data.type="text/javascript",c.data.defer=!1,c.data.text=this._xhr.responseText,document.head.appendChild(c.data),c.callback&&(c.data=c.callback.call(c.callbackContext,c.key,this._xhr.responseText));break;case"binary":c.data=c.callback?c.callback.call(c.callbackContext,c.key,this._xhr.response):this._xhr.response,this.game.cache.addBinary(c.key,c.data)}d&&this.nextFile(a,!0)},jsonLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader jsonLoadComplete invalid index "+a);var b=this._fileList[a];if(this._ajax&&this._ajax.responseText)var c=JSON.parse(this._ajax.responseText);else var c=JSON.parse(this._xhr.responseText);b.loaded=!0,"tilemap"===b.type?this.game.cache.addTilemap(b.key,b.url,c,b.format):"json"===b.type?this.game.cache.addJSON(b.key,b.url,c):this.game.cache.addTextureAtlas(b.key,b.url,b.data,c,b.format),this.nextFile(a,!0)},csvLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader csvLoadComplete invalid index "+a);var b=this._fileList[a],c=this._xhr.responseText;b.loaded=!0,this.game.cache.addTilemap(b.key,b.url,c,b.format),this.nextFile(a,!0)},dataLoadError:function(a){var b=this._fileList[a];b.loaded=!0,b.error=!0,console.warn("Phaser.Loader dataLoadError: "+b.key),this.nextFile(a,!0)},xmlLoadComplete:function(a){""!==this._xhr.responseType&&"text"!==this._xhr.responseType&&(console.warn("Invalid XML Response Type",this._fileList[a]),console.warn(this._xhr));var b,c=this._xhr.responseText;try{if(window.DOMParser){var d=new DOMParser;b=d.parseFromString(c,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(c)}catch(e){b=void 0}if(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)throw new Error("Phaser.Loader. Invalid XML given");var f=this._fileList[a];f.loaded=!0,"bitmapfont"===f.type?this.game.cache.addBitmapFont(f.key,f.url,f.data,b,f.xSpacing,f.ySpacing):"textureatlas"===f.type?this.game.cache.addTextureAtlas(f.key,f.url,f.data,b,f.format):"xml"===f.type&&this.game.cache.addXML(f.key,f.url,b),this.nextFile(a,!0)},nextFile:function(a,b){this.progressFloat+=this._progressChunk,this.progress=Math.round(this.progressFloat),this.progress>100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.updateCrop()),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this.isPlaying&&!this.allowMultiple&&(this.override||e)&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist"),this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null===this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if("undefined"==typeof this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b){"undefined"==typeof b&&(b=!1),this.paused||(this.play("",0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,c){if(this.isPlaying&&!this.paused&&c!==this.volume){if("undefined"==typeof a&&(a=1e3),"undefined"==typeof c)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");var d=this.game.add.tween(this).to({volume:c},a,b.Easing.Linear.None,!0);d.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a>>0:(a<<24|c<<16|d<<8|e)>>>0},unpackPixel:function(a,c,d,e){return("undefined"==typeof c||null===c)&&(c=b.Color.createColor()),("undefined"==typeof d||null===d)&&(d=!1),("undefined"==typeof e||null===e)&&(e=!1),b.Device.LITTLE_ENDIAN?(c.a=(4278190080&a)>>>24,c.b=(16711680&a)>>>16,c.g=(65280&a)>>>8,c.r=255&a):(c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a),c.color=a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a/255+")",d&&b.Color.RGBtoHSL(c.r,c.g,c.b,c),e&&b.Color.RGBtoHSV(c.r,c.g,c.b,c),c},fromRGBA:function(a,c){return c||(c=b.Color.createColor()),c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a+")",c},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,1)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6}return e},HSLtoRGB:function(a,c,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=b.Color.createColor(d,d,d),0!==c){var f=.5>d?d*(1+c):d+c-d*c,g=2*d-f;e.r=b.Color.hueToColor(g,f,a+1/3),e.g=b.Color.hueToColor(g,f,a),e.b=b.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),b.Color.updateColor(e),e},RGBtoHSV:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,255)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6),e},HSVtoRGB:function(a,c,d,e){"undefined"==typeof e&&(e=b.Color.createColor(0,0,0,1,a,c,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-c),l=d*(1-j*c),m=d*(1-(1-j)*c);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),b.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,c,d,e,f,g,h,i){var j={r:a||0,g:c||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return j.color=b.Color.getColor(j.r,j.g,j.b),j.color32=b.Color.getColor32(j.a,j.r,j.g,j.b),b.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,c,d,e,f){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(c<<8)+d).toString(16).slice(1):"0x"+b.Color.componentToHex(e)+b.Color.componentToHex(a)+b.Color.componentToHex(c)+b.Color.componentToHex(d)},hexToRGB:function(a){var c=b.Color.hexToColor(a);return c?b.Color.getColor32(c.a,c.r,c.g,c.b):void 0},hexToColor:function(a,c){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);c?(c.r=e,c.g=f,c.b=g):c=b.Color.createColor(e,f,g)}return c},webToColor:function(a,c){c||(c=b.Color.createColor());var d=/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\)$/.exec(a);return d&&(c.r=parseInt(d[1],10),c.g=parseInt(d[2],10),c.b=parseInt(d[3],10)),c},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,c){"undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSVtoRGB(e/359,a,c));return d},HSLColorWheel:function(a,c){"undefined"==typeof a&&(a=.5),"undefined"==typeof c&&(c=.5);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSLtoRGB(e/359,a,c));return d},interpolateColor:function(a,c,d,e,f){"undefined"==typeof f&&(f=255);var g=b.Color.getRGB(a),h=b.Color.getRGB(c),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return b.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,c,d,e,f,g){var h=b.Color.getRGB(a),i=(c-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return b.Color.getColor(i,j,k)},interpolateRGB:function(a,c,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-c)*i/h+c,l=(g-d)*i/h+d;return b.Color.getColor(j,k,l)},getRandomColor:function(a,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof c&&(c=255),"undefined"==typeof d&&(d=255),c>255||a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var c=b.Color.getRGB(a);return"rgba("+c.r.toString()+","+c.g.toString()+","+c.b.toString()+","+(c.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=4,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&b.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new b.Physics.BOX2D(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else if(a===b.Physics.BOX2D&&null===this.box2d)this.box2d=new b.Physics.Box2D(this.game,this.config);else if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):c===b.Physics.BOX2D&&this.box2d&&this.box2d.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.skipQuadTree=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0,this.setBoundsToWorld()},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!0);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,g=a.length;g>f;f++)for(var h=0,i=b.length;i>h;h++)this.collideHandler(a[f],b[h],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!1);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,h=a.length;h>f;f++)for(var i=0,j=b.length;j>i;i++)this.collideHandler(a[f],b[i],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length&&a.body)if(a.body.skipQuadTree||this.skipQuadTree)for(var g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,c,d,e,f,g){if(0!==a.length&&0!==c.length)for(var h=0,i=a.children.length;i>h;h++)a.children[h].exists&&(a.children[h].type===b.GROUP?this.collideGroupVsGroup(a.children[h],c,d,e,f,g):this.collideSpriteVsGroup(a.children[h],c,d,e,f,g))},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(a.body&&(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length))for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=this._overlap,b.overlapX=this._overlap,0!==this._overlap)?c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=this._overlap,b.overlapY=this._overlap,0!==this._overlap)?c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0):!1)},separateTile:function(a,b,c){if(!b.enable||!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},getObjectsUnderPointer:function(a,c,d,e){if(0!==c.length&&a.exists){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(c);var f=new b.Rectangle(a.x,a.y,1,1),g=[];this._potentials=this.quadTree.retrieve(f);for(var h=0,i=this._potentials.length;i>h;h++)this._potentials[h].hitTest(a.x,a.y)&&(d&&d.call(e,a,this._potentials[h].sprite),g.push(this._potentials[h].sprite));return g}},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c) +},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.enable=!0,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this.skipQuadTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite.body=null,this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){"undefined"==typeof c&&(c=this.offset.x),"undefined"==typeof d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.area=new b.Rectangle(c,d,1,1),this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.explode=function(a,b){this.start(!0,a,0,b,!1)},b.Particles.Arcade.Emitter.prototype.flow=function(a,b,c){this.start(!1,a,b,c,!0)},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=!1),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a||e?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit())},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.area.width=a,this.area.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.NORTH=0,b.Tilemap.EAST=1,b.Tilemap.SOUTH=2,b.Tilemap.WEST=3,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;if(c=a,!this.game.cache.checkImageKey(c))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+c+'"'),null}if("string"==typeof a&&(a=this.getTilesetIndex(a),null===a&&this.format===b.Tilemap.TILED_JSON))return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+c+'"'),null;if(this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0,!0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;c>l;l++)h.push(new b.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;he;e++)this.setCollisionByIndex(a[e],b,c,!1);d&&this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d,e){if("undefined"==typeof c&&(c=!0),"undefined"==typeof e&&(e=!0),d=this.getLayer(d),!(a>b)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){"undefined"==typeof b&&(b=!0),"undefined"==typeof d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,c,d){if(d=this.getLayer(d),a>=0&&a=0&&c=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,Object.defineProperty(b.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this.wrap=!1,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x)},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gc;c++){if(this._column=null,0>c&&this.wrap?this._column=this.layer.data[c+this.map.height]:c>=this.map.height&&this.wrap?this._column=this.layer.data[c-this.map.height]:this.layer.data[c]&&(this._column=this.layer.data[c]),this._column)for(var e=this._mc.startX,f=this._mc.startX+this._mc.maxX;f>e;e++){var a=null;0>e&&this.wrap?a=this._column[e+this.map.width]:e>=this.map.width&&this.wrap?a=this._column[e-this.map.width]:this._column[e]&&(a=this._column[e]),a&&a.index>-1&&(b=this.map.tilesets[this.map.tiles[a.index][2]],this.debug===!1&&a.alpha!==this.context.globalAlpha&&(this.context.globalAlpha=a.alpha),b.draw(this.context,Math.floor(this._mc.tx),Math.floor(this._mc.ty),a.index),a.debug&&(this.context.fillStyle="rgba(0, 255, 0, 0.4)",this.context.fillRect(Math.floor(this._mc.tx),Math.floor(this._mc.ty),this.map.tileWidth,this.map.tileHeight))),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}return this.debug&&(this.context.globalAlpha=1,this.renderDebug()),this.texture._updateUvs(),this.dirty=!1,this.layer.dirty=!1,!0}},b.TilemapLayer.prototype.renderDebug=function(){this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.strokeStyle=this.debugColor,this.context.fillStyle=this.debugFillColor;for(var a=this._mc.startY,b=this._mc.startY+this._mc.maxY;b>a;a++){if(this._column=null,0>a&&this.wrap?this._column=this.layer.data[a+this.map.height]:a>=this.map.height&&this.wrap?this._column=this.layer.data[a-this.map.height]:this.layer.data[a]&&(this._column=this.layer.data[a]),this._column)for(var c=this._mc.startX,d=this._mc.startX+this._mc.maxX;d>c;c++){var e=null;0>c&&this.wrap?e=this._column[c+this.map.width]:c>=this.map.width&&this.wrap?e=this._column[c-this.map.width]:this._column[c]&&(e=this._column[c]),e&&(e.faceTop||e.faceBottom||e.faceLeft||e.faceRight)&&(this._mc.tx=Math.floor(this._mc.tx),this.debugFill&&this.context.fillRect(this._mc.tx,this._mc.ty,this._mc.cw,this._mc.ch),this.context.beginPath(),e.faceTop&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty)),e.faceBottom&&(this.context.moveTo(this._mc.tx,this._mc.ty+this._mc.ch),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),e.faceLeft&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx,this._mc.ty+this._mc.ch)),e.faceRight&&(this.context.moveTo(this._mc.tx+this._mc.cw,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),this.context.stroke()),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}},Object.defineProperty(b.TilemapLayer.prototype,"scrollX",{get:function(){return this._mc.x},set:function(a){a!==this._mc.x&&(this._mc.x=a,this._mc.startX=this.game.math.floor(this._mc.x/this.map.tileWidth),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"scrollY",{get:function(){return this._mc.y},set:function(a){a!==this._mc.y&&(this._mc.y=a,this._mc.startY=this.game.math.floor(this._mc.y/this.map.tileHeight),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=a,this.dirty=!0}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=a,this.dirty=!0}}),b.TilemapParser={parse:function(a,c,d,e,f,g){if("undefined"==typeof d&&(d=32),"undefined"==typeof e&&(e=32),"undefined"==typeof f&&(f=10),"undefined"==typeof g&&(g=10),"undefined"==typeof c)return this.getEmptyData();if(null===c)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(c);if(h){if(h.format===b.Tilemap.CSV)return this.parseCSV(c,h.data,d,e);if(!h.format||h.format===b.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+c)},parseCSV:function(a,c,d,e){var f=this.getEmptyData();c=c.trim();for(var g=[],h=c.split("\n"),i=h.length,j=0,k=0;kk;k++)i.push(a.layers[f].data[k]>0?new b.Tile(g,a.layers[f].data[k],h,j.length,a.tilewidth,a.tileheight):new b.Tile(g,-1,h,j.length,a.tilewidth,a.tileheight)),h++,h===a.layers[f].width&&(j.push(i),h=0,i=[]);g.data=j,e.push(g)}d.layers=e;for(var m=[],f=0;ft;t++)if(a.layers[f].objects[t].gid){var u={gid:a.layers[f].objects[t].gid,name:a.layers[f].objects[t].name,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};r[a.layers[f].name].push(u)}else if(a.layers[f].objects[t].polyline){var u={name:a.layers[f].objects[t].name,type:a.layers[f].objects[t].type,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,width:a.layers[f].objects[t].width,height:a.layers[f].objects[t].height,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};u.polyline=[];for(var v=0;v=c)&&(c=32),("undefined"==typeof d||0>=d)&&(d=32),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.name=a,this.firstgid=b,this.tileWidth=c,this.tileHeight=d,this.tileMargin=e,this.tileSpacing=f,this.properties=g,this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},b.Tileset.prototype={draw:function(a,b,c,d){this.image&&this.drawCoords[d]&&a.drawImage(this.image,this.drawCoords[d][0],this.drawCoords[d][1],this.tileWidth,this.tileHeight,b,c,this.tileWidth,this.tileHeight)},setImage:function(a){this.image=a,this.rows=Math.round((a.height-this.tileMargin)/(this.tileHeight+this.tileSpacing)),this.columns=Math.round((a.width-this.tileMargin)/(this.tileWidth+this.tileSpacing)),this.total=this.rows*this.columns,this.drawCoords.length=0;for(var b=this.tileMargin,c=this.tileMargin,d=this.firstgid,e=0;e + */ + +/** + * @class Polygon + * @constructor + * @param points* {Array|Array|Point...|Number...} This can be an array of Points that form the polygon, + * a flat array of numbers that will be interpreted as [x,y, x,y, ...], or the arguments passed can be + * all the points of the polygon e.g. `new PIXI.Polygon(new PIXI.Point(), new PIXI.Point(), ...)`, or the + * arguments passed can be flat x,y values e.g. `new PIXI.Polygon(x,y, x,y, x,y, ...)` where `x` and `y` are + * Numbers. + */ +PIXI.Polygon = function(points) +{ + //if points isn't an array, use arguments as the array + if(!(points instanceof Array))points = Array.prototype.slice.call(arguments); + + //if this is a flat array of numbers, convert it to points + if(points[0] instanceof PIXI.Point) + { + var p = []; + for(var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } + + this.closed = true; + this.points = points; +}; + +/** + * Creates a clone of this polygon + * + * @method clone + * @return {Polygon} a copy of the polygon + */ +PIXI.Polygon.prototype.clone = function() +{ + var points = this.points.slice(); + return new PIXI.Polygon(points); +}; + +/** + * Checks whether the x and y coordinates passed to this function are contained within this polygon + * + * @method contains + * @param x {Number} The X coordinate of the point to test + * @param y {Number} The Y coordinate of the point to test + * @return {Boolean} Whether the x/y coordinates are within this polygon + */ +PIXI.Polygon.prototype.contains = function(x, y) +{ + var inside = false; + + // use some raycasting to test hits + // https://github.com/substack/point-in-polygon/blob/master/index.js + var length = this.points.length / 2; + + for(var i = 0, j = length - 1; i < length; j = i++) + { + var xi = this.points[i * 2], yi = this.points[i * 2 + 1], + xj = this.points[j * 2], yj = this.points[j * 2 + 1], + intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); + + if(intersect) inside = !inside; + } + + return inside; +}; + +// constructor +PIXI.Polygon.prototype.constructor = PIXI.Polygon; + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -11477,7 +11554,7 @@ PIXI.AbstractFilter.prototype.apply = function(frameBuffer) * * Phaser - http://phaser.io * -* v2.1.3 "Ravinda" - Built: Wed Oct 22 2014 22:48:37 +* v2.1.3 "Ravinda" - Built: Wed Oct 22 2014 23:49:48 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -15272,13 +15349,39 @@ Phaser.Polygon = function (points) { */ this.type = Phaser.POLYGON; + // If points isn't an array, use arguments as the array + if (!(points instanceof Array)) + { + points = Array.prototype.slice.call(arguments); + } + + // If this is a flat array of numbers, convert it to points + if (points[0] instanceof Phaser.Point) + { + var p = []; + + for (var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } + + /** + * @property {array} points - An array of Points that make up this Polygon. + */ this.points = points; + + /** + * @property {boolean} closed - Is the Polygon closed or not? + */ + this.closed = true; + }; Phaser.Polygon.prototype = { - type: null, - /** * Creates a copy of the given Polygon. * This is a deep clone, the resulting copy contains new Phaser.Point objects @@ -15289,12 +15392,7 @@ Phaser.Polygon.prototype = { */ clone: function (output) { - var points = []; - - for (var i=0; i < this.points.length; i++) - { - points.push(this.points[i].clone()); - } + var points = this.points.slice(); if (typeof output === "undefined" || output === null) { @@ -15322,12 +15420,15 @@ Phaser.Polygon.prototype = { var inside = false; // use some raycasting to test hits https://github.com/substack/point-in-polygon/blob/master/index.js - for (var i = 0, j = this.points.length - 1; i < this.points.length; j = i++) + + var length = this.points.length / 2; + + for (var i = 0, j = length - 1; i < length; j = i++) { - var xi = this.points[i].x; - var yi = this.points[i].y; - var xj = this.points[j].x; - var yj = this.points[j].y; + var xi = this.points[i * 2].x; + var yi = this.points[i * 2 + 1].y; + var xj = this.points[j * 2].x; + var yj = this.points[j * 2 + 1].y; var intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); @@ -15341,7 +15442,33 @@ Phaser.Polygon.prototype = { }, - setTo : function(points) { + /** + * Sets this Polygon to the given points. + * + * @method Phaser.Polygon#setTo + * @param {Phaser.Point[]|number[]} points - The array of Points. + * @return {boolean} True if the coordinates are within this polygon, otherwise false. + */ + setTo: function (points) { + + // If points isn't an array, use arguments as the array + if (!(points instanceof Array)) + { + points = Array.prototype.slice.call(arguments); + } + + // If this is a flat array of numbers, convert it to points + if (points[0] instanceof Phaser.Point) + { + var p = []; + + for (var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } this.points = points; @@ -15394,7 +15521,7 @@ Object.defineProperty(Phaser.Polygon.prototype, 'points', { /** * Returns the area of the polygon. * -* @name Phaser.Circle#right +* @name Phaser.Polygon#area * @readonly */ Object.defineProperty(Phaser.Polygon.prototype, 'area', { @@ -15443,7 +15570,7 @@ Object.defineProperty(Phaser.Polygon.prototype, 'area', { }); // Because PIXI uses its own Polygon, we'll replace it with ours to avoid duplicating code or confusion. -PIXI.Polygon = Phaser.Polygon; +// PIXI.Polygon = Phaser.Polygon; /** * @author Mat Groves http://matgroves.com/ @Doormat23 @@ -40312,24 +40439,6 @@ Phaser.Graphics.prototype.destroy = function(destroyChildren) { }; -/* -* Draws a {Phaser.Polygon} or a {PIXI.Polygon} filled -* -* @method Phaser.Graphics.prototype.drawPolygon -*/ -Phaser.Graphics.prototype.drawPolygon = function (poly) { - - this.moveTo(poly.points[0].x, poly.points[0].y); - - for (var i = 1; i < poly.points.length; i += 1) - { - this.lineTo(poly.points[i].x, poly.points[i].y); - } - - this.lineTo(poly.points[0].x, poly.points[0].y); - -}; - /* * Draws a single {Phaser.Polygon} triangle from a {Phaser.Point} array * diff --git a/build/custom/phaser-ninja-physics.min.js b/build/custom/phaser-ninja-physics.min.js index 434fcbc698..911b38bcc7 100644 --- a/build/custom/phaser-ninja-physics.min.js +++ b/build/custom/phaser-ninja-physics.min.js @@ -1,19 +1,19 @@ /* Phaser (NJ) v2.1.3 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.0.0",b.blendModes={NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},b.scaleModes={DEFAULT:0,LINEAR:0,NEAREST:1},b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array):(b.Float32Array=Array,b.Uint16Array=Array),b.INTERACTION_FREQUENCY=30,b.AUTO_PREVENT_DEFAULT=!0,b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.dontSayHello=!1,b.defaultRenderOptions={view:null,transparent:!1,antialias:!1,preserveDrawingBuffer:!1,resolution:1,clearBeforeRender:!0},b.sayHello=function(a){if(!b.dontSayHello){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var c=["%c %c %c Pixi.js "+b.VERSION+" - "+a+" %c %c http://www.pixijs.com/ %c %c ♥%c♥%c♥ ","background: #ff66a5","background: #ff66a5","color: #ff66a5; background: #030307;","background: #ff66a5","background: #ffc3dc","background: #ff66a5","color: #ff2424; background: #fff","color: #ff2424; background: #fff","color: #ff2424; background: #fff"];console.log.apply(console,c)}else window.console&&console.log("Pixi.js "+b.VERSION+" - http://www.pixijs.com/");b.dontSayHello=!0}},b.Matrix=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0},b.Matrix.prototype.fromArray=function(a){this.a=a[0],this.b=a[1],this.c=a[3],this.d=a[4],this.tx=a[2],this.ty=a[5]},b.Matrix.prototype.toArray=function(a){this.array||(this.array=new b.Float32Array(9));var c=this.array;return a?(c[0]=this.a,c[1]=this.b,c[2]=0,c[3]=this.c,c[4]=this.d,c[5]=0,c[6]=this.tx,c[7]=this.ty,c[8]=1):(c[0]=this.a,c[1]=this.c,c[2]=this.tx,c[3]=this.b,c[4]=this.d,c[5]=this.ty,c[6]=0,c[7]=0,c[8]=1),c},b.Matrix.prototype.apply=function(a,c){return c=c||new b.Point,c.x=this.a*a.x+this.b*a.y+this.tx,c.y=this.c*a.x+this.d*a.y+this.ty,c},b.Matrix.prototype.applyInverse=function(a,c){c=c||new b.Point;var d=1/(this.a*this.d+this.c*-this.b);return c.x=this.d*d*a.x+-this.c*d*a.y+(this.ty*this.c-this.tx*this.d)*d,c.y=this.a*d*a.y+-this.b*d*a.x+(-this.ty*this.a+this.tx*this.b)*d,c},b.Matrix.prototype.translate=function(a,b){return this.tx+=a,this.ty+=b,this},b.Matrix.prototype.scale=function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},b.Matrix.prototype.rotate=function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},b.Matrix.prototype.append=function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},b.Matrix.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this},b.identityMatrix=new b.Matrix,b.DisplayObject=function(){this.position=new b.Point,this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.buttonMode=!1,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this._interactive=!1,this.defaultCursor="pointer",this.worldTransform=new b.Matrix,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,Object.defineProperty(b.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var b=[],c=0;c=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;ga;a++)this.children[a].updateTransform()},b.DisplayObjectContainer.prototype.getBounds=function(){if(0===this.children.length)return b.EmptyRectangle;for(var a,c,d,e=1/0,f=1/0,g=-1/0,h=-1/0,i=!1,j=0,k=this.children.length;k>j;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a,this._interactive&&(this.stage.dirty=!0);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d.setStageReference(a)}},b.DisplayObjectContainer.prototype.removeStageReference=function(){for(var a=0,b=this.children.length;b>a;a++){var c=this.children[a];c.removeStageReference()}this._interactive&&(this.stage.dirty=!0),this.stage=null},b.DisplayObjectContainer.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);var b,c;if(this._mask||this._filters){for(this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);a.spriteBatch.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),a.spriteBatch.start()}else for(b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.DisplayObjectContainer.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);this._mask&&a.maskManager.pushMask(this._mask,a);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d._renderCanvas(a)}this._mask&&a.maskManager.popMask(a)}},b.Sprite=function(a){b.DisplayObjectContainer.call(this),this.anchor=new b.Point,this.texture=a,this._width=0,this._height=0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL,this.shader=null,a.baseTexture.hasLoaded?this.onTextureUpdate():(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.on("update",this.onTextureUpdateBind)),this.renderable=!0},b.Sprite.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Sprite.prototype.constructor=b.Sprite,Object.defineProperty(b.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(b.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),b.Sprite.prototype.setTexture=function(a){this.texture=a,this.cachedTint=16777215},b.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height)},b.Sprite.prototype.getBounds=function(a){var b=this.texture.frame.width,c=this.texture.frame.height,d=b*(1-this.anchor.x),e=b*-this.anchor.x,f=c*(1-this.anchor.y),g=c*-this.anchor.y,h=a||this.worldTransform,i=h.a,j=h.c,k=h.b,l=h.d,m=h.tx,n=h.ty,o=i*e+k*g+m,p=l*g+j*e+n,q=i*d+k*g+m,r=l*g+j*d+n,s=i*d+k*f+m,t=l*f+j*d+n,u=i*e+k*f+m,v=l*f+j*e+n,w=-1/0,x=-1/0,y=1/0,z=1/0;y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,z=z>p?p:z,z=z>r?r:z,z=z>t?t:z,z=z>v?v:z,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,x=p>x?p:x,x=r>x?r:x,x=t>x?t:x,x=v>x?v:x;var A=this._bounds;return A.x=y,A.width=w-y,A.y=z,A.height=x-z,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){var b,c;if(this._mask||this._filters){var d=a.spriteBatch;for(this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);d.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),d.start()}else for(a.spriteBatch.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.Sprite.prototype._renderCanvas=function(a){if(!(this.visible===!1||0===this.alpha||this.texture.crop.width<=0||this.texture.crop.height<=0)){if(this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,a.context.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a),this.texture.valid){var c=this.texture.baseTexture.resolution/a.resolution;a.context.globalAlpha=this.worldAlpha,a.roundPixels?a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution|0,this.worldTransform.ty*a.resolution|0):a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution,this.worldTransform.ty*a.resolution),a.smoothProperty&&a.scaleMode!==this.texture.baseTexture.scaleMode&&(a.scaleMode=this.texture.baseTexture.scaleMode,a.context[a.smoothProperty]=a.scaleMode===b.scaleModes.LINEAR);var d=this.texture.trim?this.texture.trim.x-this.anchor.x*this.texture.trim.width:this.anchor.x*-this.texture.frame.width,e=this.texture.trim?this.texture.trim.y-this.anchor.y*this.texture.trim.height:this.anchor.y*-this.texture.frame.height;16777215!==this.tint?(this.cachedTint!==this.tint&&(this.cachedTint=this.tint,this.tintedTexture=b.CanvasTinter.getTintedTexture(this,this.tint)),a.context.drawImage(this.tintedTexture,0,0,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)):a.context.drawImage(this.texture.baseTexture.source,this.texture.crop.x,this.texture.crop.y,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)}for(var f=0,g=this.children.length;g>f;f++)this.children[f]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},b.Sprite.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache'+this);return new b.Sprite(c)},b.Sprite.fromImage=function(a,c,d){var e=b.Texture.fromImage(a,c,d);return new b.Sprite(e)},b.SpriteBatch=function(a){b.DisplayObjectContainer.call(this),this.textureThing=a,this.ready=!1},b.SpriteBatch.prototype=Object.create(b.DisplayObjectContainer.prototype),b.SpriteBatch.prototype.constructor=b.SpriteBatch,b.SpriteBatch.prototype.initWebGL=function(a){this.fastSpriteBatch=new b.WebGLFastSpriteBatch(a),this.ready=!0},b.SpriteBatch.prototype.updateTransform=function(){b.DisplayObject.prototype.updateTransform.call(this)},b.SpriteBatch.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||!this.children.length||(this.ready||this.initWebGL(a.gl),a.spriteBatch.stop(),a.shaderManager.setShader(a.shaderManager.fastShader),this.fastSpriteBatch.begin(this,a),this.fastSpriteBatch.render(this),a.spriteBatch.start())},b.SpriteBatch.prototype._renderCanvas=function(a){if(this.visible&&!(this.alpha<=0)&&this.children.length){var c=a.context;c.globalAlpha=this.worldAlpha,b.DisplayObject.prototype.updateTransform.call(this);for(var d=this.worldTransform,e=!0,f=0;fi;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(c.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}c.descent=i-g,c.fontSize=c.ascent+c.descent,b.Text.fontPropertiesCache[a]=c}return c},b.Text.prototype.wordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g],e=this.style.wordWrapWidth-h):(e-=i,b+=" "+f[g])}d=2?parseInt(c[c.length-2],10):b.BitmapText.fonts[this.fontName].size,this.dirty=!0,this.tint=a.tint},b.BitmapText.prototype.updateText=function(){for(var a=b.BitmapText.fonts[this.fontName],c=new b.Point,d=null,e=[],f=0,g=[],h=0,i=this.fontSize/a.size,j=0;j=j;j++){var n=0;"right"===this.style.align?n=f-g[j]:"center"===this.style.align&&(n=(f-g[j])/2),m.push(n)}var o=this.children.length,p=e.length,q=this.tint||16777215;for(j=0;p>j;j++){var r=o>j?this.children[j]:this._pool.pop();r?r.setTexture(e[j].texture):r=new b.Sprite(e[j].texture),r.position.x=(e[j].position.x+m[e[j].line])*i,r.position.y=e[j].position.y*i,r.scale.x=r.scale.y=i,r.tint=q,r.parent||this.addChild(r)}for(;this.children.length>p;){var s=this.getChildAt(this.children.length-1);this._pool.push(s),this.removeChild(s)}this.textWidth=f*i,this.textHeight=(c.y+a.lineHeight)*i},b.BitmapText.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),b.DisplayObjectContainer.prototype.updateTransform.call(this)},b.BitmapText.fonts={},b.Stage=function(a){b.DisplayObjectContainer.call(this),this.worldTransform=new b.Matrix,this.interactive=!0,this.interactionManager=new b.InteractionManager(this),this.dirty=!0,this.stage=this,this.stage.hitArea=new b.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a)},b.Stage.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},b.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var a=0,b=this.children.length;b>a;a++)this.children[a].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},b.Stage.prototype.setBackgroundColor=function(a){this.backgroundColor=a||0,this.backgroundColorSplit=b.hex2rgb(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},b.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},function(a){for(var b=0,c=["ms","moz","webkit","o"],d=0;d>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){return function(a){function b(){for(var d=arguments.length,f=new Array(d);d--;)f[d]=arguments[d];return f=e.concat(f),c.apply(this instanceof b?this:a,f)}var c=this,d=arguments.length-1,e=[];if(d>0)for(e.length=d;d--;)e[d]=arguments[d+1];if("function"!=typeof c)throw new TypeError;return b.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(c.prototype),b}}()),b.AjaxRequest=function(){var a=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new window.XMLHttpRequest:!1;for(var b=0;b0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.EventTarget={call:function(a){a&&(a=a.prototype||a,b.EventTarget.mixin(a))},mixin:function(a){a.listeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?this._listeners[a].slice():[]},a.emit=a.dispatchEvent=function(a,c){if(this._listeners=this._listeners||{},"object"==typeof a&&(c=a,a=a.type),c&&c.__isEventObject===!0||(c=new b.Event(this,a,c)),this._listeners&&this._listeners[a]){var d,e=this._listeners[a],f=e.length,g=e[0];for(d=0;f>d;g=e[++d])if(g.call(this,c),c.stoppedImmediate)return this;if(c.stopped)return this}return this.parent&&this.parent.emit&&this.parent.emit.call(this.parent,a,c),this},a.on=a.addEventListener=function(a,b){return this._listeners=this._listeners||{},(this._listeners[a]=this._listeners[a]||[]).push(b),this},a.once=function(a,b){function c(){b.apply(d.off(a,c),arguments)}this._listeners=this._listeners||{};var d=this;return c._originalHandler=b,this.on(a,c)},a.off=a.removeEventListener=function(a,b){if(this._listeners=this._listeners||{},!this._listeners[a])return this;for(var c=this._listeners[a],d=b?c.length:0;d-->0;)(c[d]===b||c[d]._originalHandler===b)&&c.splice(d,1);return 0===c.length&&delete this._listeners[a],this},a.removeAllListeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?(delete this._listeners[a],this):this}}},b.Event=function(a,b,c){this.__isEventObject=!0,this.stopped=!1,this.stoppedImmediate=!1,this.target=a,this.type=b,this.data=c,this.content=c,this.timeStamp=Date.now()},b.Event.prototype.stopPropagation=function(){this.stopped=!0},b.Event.prototype.stopImmediatePropagation=function(){this.stoppedImmediate=!0},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return window.console.log("PIXI Warning: shape too complex to fill"),[];for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.initDefaultShaders=function(){},b.CompileVertexShader=function(a,c){return b._CompileShader(a,c,a.VERTEX_SHADER)},b.CompileFragmentShader=function(a,c){return b._CompileShader(a,c,a.FRAGMENT_SHADER)},b._CompileShader=function(a,b,c){var d=b.join("\n"),e=a.createShader(c); -return a.shaderSource(e,d),a.compileShader(e),a.getShaderParameter(e,a.COMPILE_STATUS)?e:(window.console.log(a.getShaderInfoLog(e)),null)},b.compileProgram=function(a,c,d){var e=b.CompileFragmentShader(a,d),f=b.CompileVertexShader(a,c),g=a.createProgram();return a.attachShader(g,f),a.attachShader(g,e),a.linkProgram(g),a.getProgramParameter(g,a.LINK_STATUS)||window.console.log("Could not initialise shaders"),g},b.PixiShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.textureCount=0,this.firstRun=!0,this.dirty=!0,this.attributes=[],this.init()},b.PixiShader.prototype.constructor=b.PixiShader,b.PixiShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc||b.PixiShader.defaultVertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute];for(var d in this.uniforms)this.uniforms[d].uniformLocation=a.getUniformLocation(c,d);this.initUniforms(),this.program=c},b.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a,b=this.gl;for(var c in this.uniforms){a=this.uniforms[c];var d=a.type;"sampler2D"===d?(a._init=!1,null!==a.value&&this.initSampler2D(a)):"mat2"===d||"mat3"===d||"mat4"===d?(a.glMatrix=!0,a.glValueLength=1,"mat2"===d?a.glFunc=b.uniformMatrix2fv:"mat3"===d?a.glFunc=b.uniformMatrix3fv:"mat4"===d&&(a.glFunc=b.uniformMatrix4fv)):(a.glFunc=b["uniform"+d],a.glValueLength="2f"===d||"2i"===d?2:"3f"===d||"3i"===d?3:"4f"===d||"4i"===d?4:1)}},b.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){var b=this.gl;if(b.activeTexture(b["TEXTURE"+this.textureCount]),b.bindTexture(b.TEXTURE_2D,a.value.baseTexture._glTextures[b.id]),a.textureData){var c=a.textureData,d=c.magFilter?c.magFilter:b.LINEAR,e=c.minFilter?c.minFilter:b.LINEAR,f=c.wrapS?c.wrapS:b.CLAMP_TO_EDGE,g=c.wrapT?c.wrapT:b.CLAMP_TO_EDGE,h=c.luminance?b.LUMINANCE:b.RGBA;if(c.repeat&&(f=b.REPEAT,g=b.REPEAT),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,!!c.flipY),c.width){var i=c.width?c.width:512,j=c.height?c.height:2,k=c.border?c.border:0;b.texImage2D(b.TEXTURE_2D,0,h,i,j,k,h,b.UNSIGNED_BYTE,null)}else b.texImage2D(b.TEXTURE_2D,0,h,b.RGBA,b.UNSIGNED_BYTE,a.value.baseTexture.source);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,d),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,f),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,g)}b.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},b.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a,c=this.gl;for(var d in this.uniforms)a=this.uniforms[d],1===a.glValueLength?a.glMatrix===!0?a.glFunc.call(c,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c,a.uniformLocation,a.value):2===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y):3===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z):4===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"===a.type&&(a._init?(c.activeTexture(c["TEXTURE"+this.textureCount]),a.value.baseTexture._dirty[c.id]?b.defaultRenderer.updateTexture(a.value.baseTexture):c.bindTexture(c.TEXTURE_2D,a.value.baseTexture._glTextures[c.id]),c.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},b.PixiShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec4 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"],b.PixiFastShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"],this.textureCount=0,this.init()},b.PixiFastShader.prototype.constructor=b.PixiFastShader,b.PixiFastShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.uMatrix=a.getUniformLocation(c,"uMatrix"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aPositionCoord=a.getAttribLocation(c,"aPositionCoord"),this.aScale=a.getAttribLocation(c,"aScale"),this.aRotation=a.getAttribLocation(c,"aRotation"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute],this.program=c},b.PixiFastShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.StripShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;","}"],this.init()},b.StripShader.prototype.constructor=b.StripShader,b.StripShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.attributes=[this.aVertexPosition,this.aTextureCoord],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.StripShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.PrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor * vec4(tint * alpha, alpha);","}"],this.init()},b.PrimitiveShader.prototype.constructor=b.PrimitiveShader,b.PrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.ComplexPrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform vec3 tint;","uniform float alpha;","uniform vec3 color;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = vec4(color * alpha * tint, alpha);","}"],this.init()},b.ComplexPrimitiveShader.prototype.constructor=b.ComplexPrimitiveShader,b.ComplexPrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.color=a.getUniformLocation(c,"color"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.ComplexPrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.WebGLGraphics=function(){},b.WebGLGraphics.renderGraphics=function(a,c){var d,e=c.gl,f=c.projection,g=c.offset,h=c.shaderManager.primitiveShader;a.dirty&&b.WebGLGraphics.updateGraphics(a,e);for(var i=a._webGL[e.id],j=0;j=6&&(h.points.length>10?(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g)):(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildPoly(h,g))),h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))):(g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g)),d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d),n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i)}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.lastIndex=0,this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[],this.lastIndex=0},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},b.glContexts=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)"undefined"==typeof d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.sayHello("webGL"),b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this.contextLostBound=this.handleContextLost.bind(this),this.contextRestoredBound=this.handleContextRestored.bind(this),this.view.addEventListener("webglcontextlost",this.contextLostBound,!1),this.view.addEventListener("webglcontextrestored",this.contextRestoredBound,!1),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(a.interactive&&a.interactionManager.removeEvents(),this.__stage=a),a.updateTransform();var b=this.gl;a._interactive?a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)):a._interactiveEventsAdded&&(a._interactiveEventsAdded=!1,a.interactionManager.setTarget(this)),b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.handleContextLost=function(a){a.preventDefault(),this.contextLost=!0},b.WebGLRenderer.prototype.handleContextRestored=function(){this.initContext();for(var a in b.TextureCache){var c=b.TextureCache[a].baseTexture;c._glTextures=[]}this.contextLost=!1},b.WebGLRenderer.prototype.destroy=function(){this.view.off("webglcontextlost",this.contextLostBound),this.view.off("webglcontextrestored",this.contextRestoredBound),b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a){var b=a.texture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=b.baseTexture);var c=b._uvs;if(c){var d,e,f,g,h=a.worldAlpha,i=a.tint,j=this.vertices,k=a.anchor.x,l=a.anchor.y;if(b.trim){var m=b.trim;e=m.x-k*m.width,d=e+b.crop.width,g=m.y-l*m.height,f=g+b.crop.height}else d=b.frame.width*(1-k),e=b.frame.width*-k,f=b.frame.height*(1-l),g=b.frame.height*-l;var n=4*this.currentBatchSize*this.vertSize,o=b.baseTexture.resolution,p=a.worldTransform,q=p.a/o,r=p.b/o,s=p.c/o,t=p.d/o,u=p.tx,v=p.ty;j[n++]=q*e+s*g+u,j[n++]=t*g+r*e+v,j[n++]=c.x0,j[n++]=c.y0,j[n++]=h,j[n++]=i,j[n++]=q*d+s*g+u,j[n++]=t*g+r*d+v,j[n++]=c.x1,j[n++]=c.y1,j[n++]=h,j[n++]=i,j[n++]=q*d+s*f+u,j[n++]=t*f+r*d+v,j[n++]=c.x2,j[n++]=c.y2,j[n++]=h,j[n++]=i,j[n++]=q*e+s*f+u,j[n++]=t*f+r*e+v,j[n++]=c.x3,j[n++]=c.y3,j[n++]=h,j[n++]=i,this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs;a.tilePosition.x%=c.baseTexture.width*a.tileScaleOffset.x,a.tilePosition.y%=c.baseTexture.height*a.tileScaleOffset.y;var e=a.tilePosition.x/(c.baseTexture.width*a.tileScaleOffset.x),f=a.tilePosition.y/(c.baseTexture.height*a.tileScaleOffset.y),g=a.width/c.baseTexture.width/(a.tileScale.x*a.tileScaleOffset.x),h=a.height/c.baseTexture.height/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-e,d.y0=0-f,d.x1=1*g-e,d.y1=0-f,d.x2=1*g-e,d.y2=1*h-f,d.x3=0-e,d.y3=1*h-f;var i=a.worldAlpha,j=a.tint,k=this.vertices,l=a.width,m=a.height,n=a.anchor.x,o=a.anchor.y,p=l*(1-n),q=l*-n,r=m*(1-o),s=m*-o,t=4*this.currentBatchSize*this.vertSize,u=c.baseTexture.resolution,v=a.worldTransform,w=v.a/u,x=v.b/u,y=v.c/u,z=v.d/u,A=v.tx,B=v.ty;k[t++]=w*q+y*s+A,k[t++]=z*s+x*q+B,k[t++]=d.x0,k[t++]=d.y0,k[t++]=i,k[t++]=j,k[t++]=w*p+y*s+A,k[t++]=z*s+x*p+B,k[t++]=d.x1,k[t++]=d.y1,k[t++]=i,k[t++]=j,k[t++]=w*p+y*r+A,k[t++]=z*r+x*p+B,k[t++]=d.x2,k[t++]=d.y2,k[t++]=i,k[t++]=j,k[t++]=w*q+y*r+A,k[t++]=z*r+x*q+B,k[t++]=d.x3,k[t++]=d.y3,k[t++]=i,k[t++]=j,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,2,c.FLOAT,!1,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var a=4*this.size*this.vertSize,b=6*this.maxSize;this.vertices=new Float32Array(a),this.indices=new Uint16Array(b),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var c=0,d=0;b>c;c+=6,d+=4)this.indices[c+0]=d+0,this.indices[c+1]=d+1,this.indices[c+2]=d+2,this.indices[c+3]=d+0,this.indices[c+4]=d+2,this.indices[c+5]=d+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(g.fillColor||0===g.fillColor)&&(c.globalAlpha=g.fillAlpha*d,c.fillStyle=e="#"+("00000"+(0|g.fillColor).toString(16)).substr(-6),c.fill()),g.lineWidth&&(c.globalAlpha=g.lineAlpha*d,c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){d>1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){c.beginPath();var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iA?A:z,c.beginPath(),c.moveTo(v,w+z),c.lineTo(v,w+y-z),c.quadraticCurveTo(v,w+y,v+z,w+y),c.lineTo(v+x-z,w+y),c.quadraticCurveTo(v+x,w+y,v+x,w+y-z),c.lineTo(v+x,w+z),c.quadraticCurveTo(v+x,w,v+x-z,w),c.lineTo(v+z,w),c.quadraticCurveTo(v,w,v,w+z),c.closePath()}}}},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.padding=0},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var b=a.gl,c=a.projection,d=a.offset,e=a.shaderManager.stripShader;b.blendFunc(b.ONE,b.ONE_MINUS_SRC_ALPHA),b.uniformMatrix3fv(e.translationMatrix,!1,this.worldTransform.toArray(!0)),b.uniform2f(e.projectionVector,c.x,-c.y),b.uniform2f(e.offsetVector,-d.x,-d.y),b.uniform1f(e.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.STATIC_DRAW),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)):(b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferSubData(b.ARRAY_BUFFER,0,this.verticies),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),b.drawElements(b.TRIANGLE_STRIP,this.indices.length,b.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var b=a.context,c=this.worldTransform;a.roundPixels?b.setTransform(c.a,c.b,c.c,c.d,0|c.tx,0|c.ty):b.setTransform(c.a,c.b,c.c,c.d,c.tx,c.ty);var d=this,e=d.verticies,f=d.uvs,g=e.length/2;this.count++;for(var h=0;g-2>h;h++){var i=2*h,j=e[i],k=e[i+2],l=e[i+4],m=e[i+1],n=e[i+3],o=e[i+5];if(this.padding>0){var p=(j+k+l)/3,q=(m+n+o)/3,r=j-p,s=m-q,t=Math.sqrt(r*r+s*s);j=p+r/t*(t+3),m=q+s/t*(t+3),r=k-p,s=n-q,t=Math.sqrt(r*r+s*s),k=p+r/t*(t+3),n=q+s/t*(t+3),r=l-p,s=o-q,t=Math.sqrt(r*r+s*s),l=p+r/t*(t+3),o=q+s/t*(t+3) -}var u=f[i]*d.texture.width,v=f[i+2]*d.texture.width,w=f[i+4]*d.texture.width,x=f[i+1]*d.texture.height,y=f[i+3]*d.texture.height,z=f[i+5]*d.texture.height;b.save(),b.beginPath(),b.moveTo(j,m),b.lineTo(k,n),b.lineTo(l,o),b.closePath(),b.clip();var A=u*y+x*w+v*z-y*w-x*v-u*z,B=j*y+x*l+k*z-y*l-x*k-j*z,C=u*k+j*w+v*l-k*w-j*v-u*l,D=u*y*l+x*k*w+j*v*z-j*y*w-x*v*l-u*k*z,E=m*y+x*o+n*z-y*o-x*n-m*z,F=u*n+m*w+v*o-n*w-m*v-u*o,G=u*y*o+x*n*w+m*v*z-m*y*w-x*v*o-u*n*z;b.transform(B/A,E/A,C/A,F/A,D/A,G/A),b.drawImage(d.texture.baseTexture.source,0,0),b.restore()}},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.verticies=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.verticies,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||100,this._height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this._mask,a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d,e,f=this.worldTransform,g=a.resolution;if(c.setTransform(f.a*g,f.c*g,f.b*g,f.d*g,f.tx*g,f.ty*g),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]);var h=this.tilePosition,i=this.tileScale;for(h.x%=this.tilingTexture.baseTexture.width,h.y%=this.tilingTexture.baseTexture.height,c.scale(i.x,i.y),c.translate(h.x+this.anchor.x*-this._width,h.y+this.anchor.y*-this._height),c.fillStyle=this.__tilePattern,c.fillRect(-h.x,-h.y,this._width/i.x,this._height/i.y),c.scale(1/i.x,1/i.y),c.translate(-h.x+this.anchor.x*this._width,-h.y+this.anchor.y*this._height),this._mask&&a.maskManager.popMask(a.context),d=0,e=this.children.length;e>d;d++)this.children[d]._renderCanvas(a)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.onTextureUpdate=function(){},b.TilingSprite.prototype.generateTilingTexture=function(a){if(this.texture.baseTexture.hasLoaded){var c,d,e=this.originalTexture||this.texture,f=e.frame,g=f.width!==e.baseTexture.width||f.height!==e.baseTexture.height,h=!1;if(a?(c=b.getNextPowerOfTwo(f.width),d=b.getNextPowerOfTwo(f.height),(f.width!==c||f.height!==d)&&(h=!0)):g&&(c=f.width,d=f.height,h=!0),h){var i;this.tilingTexture&&this.tilingTexture.isTiling?(i=this.tilingTexture.canvasBuffer,i.resize(c,d),this.tilingTexture.baseTexture.width=c,this.tilingTexture.baseTexture.height=d,this.tilingTexture.needsUpdate=!0):(i=new b.CanvasBuffer(c,d),this.tilingTexture=b.Texture.fromCanvas(i.canvas),this.tilingTexture.canvasBuffer=i,this.tilingTexture.isTiling=!0),i.context.drawImage(e.baseTexture.source,e.crop.x,e.crop.y,e.crop.width,e.crop.height,0,0,c,d),this.tileScaleOffset.x=f.width/c,this.tileScaleOffset.y=f.height/d}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=e;this.refreshTexture=!1,this.originalTexture=this.texture,this.texture=this.tilingTexture,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this._dirty=[!0,!0,!0,!0],a){if((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height)this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty();else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.naturalWidth||d.source.width,d.height=d.source.naturalHeight||d.source.height,d.dirty(),d.dispatchEvent({type:"loaded",content:d})},this.source.onerror=function(){d.dispatchEvent({type:"error",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.EventTarget.mixin(b.BaseTexture.prototype),b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,this.source.src=""):this.source&&this.source._pixiId&&delete b.BaseTextureCache[this.source._pixiId],this.source=null;for(var a=this._glTextures.length-1;a>=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;athis.baseTexture.width||a.y+a.height>this.baseTexture.height))throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width,this.height)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width*this.resolution,this.height*this.resolution,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=this.frame.width=this.crop.width=a,this.height=this.frame.height=this.crop.height=c,d&&(this.baseTexture.width=this.width,this.baseTexture.height=this.height),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width*this.resolution,this.height*this.resolution))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1),a.worldAlpha=1;for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();var h=this.renderer.gl;h.viewport(0,0,this.width*this.resolution,this.height*this.resolution),h.bindFramebuffer(h.FRAMEBUFFER,this.textureBuffer.frameBuffer),c&&this.textureBuffer.clear(),this.renderer.spriteBatch.dirty=!0,this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),this.renderer.spriteBatch.dirty=!0}},b.RenderTexture.prototype.renderCanvas=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),b&&d.append(b);for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();c&&this.textureBuffer.clear();var h=this.textureBuffer.context,i=this.renderer.resolution;this.renderer.resolution=this.resolution,this.renderer.renderDisplayObject(a,h),this.renderer.resolution=i}},b.RenderTexture.prototype.getImage=function(){var a=new Image;return a.src=this.getBase64(),a},b.RenderTexture.prototype.getBase64=function(){return this.getCanvas().toDataURL()},b.RenderTexture.prototype.getCanvas=function(){if(this.renderer.type===b.WEBGL_RENDERER){var a=this.renderer.gl,c=this.textureBuffer.width,d=this.textureBuffer.height,e=new Uint8Array(4*c*d);a.bindFramebuffer(a.FRAMEBUFFER,this.textureBuffer.frameBuffer),a.readPixels(0,0,c,d,a.RGBA,a.UNSIGNED_BYTE,e),a.bindFramebuffer(a.FRAMEBUFFER,null);for(var f=new b.CanvasBuffer(c,d),g=f.context.getImageData(0,0,c,d),h=g.data,i=0;ia;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this),function(){var a=this,b=b||{VERSION:"2.1.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};if(PIXI.InteractionManager=PIXI.InteractionManager||function(){},PIXI.dontSayHello=!0,b.Utils={getProperty:function(a,b){for(var c=b.split("."),d=c.pop(),e=c.length,f=1,g=c[0];e>f&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},transposeArray:function(a){for(var b=new Array(a[0].length),c=0;c-1;d--)b[c][d]=a[d][c]}return b},rotateArray:function(a,c){if("string"!=typeof c&&(c=(c%360+360)%360),90===c||-270===c||"rotateLeft"===c)a=b.Utils.transposeArray(a),a=a.reverse();else if(-90===c||270===c||"rotateRight"===c)a=a.reverse(),a=b.Utils.transposeArray(a);else if(180===Math.abs(c)||"rotate180"===c){for(var d=0;d0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h},mixin:function(a,c){if(!a||"object"!=typeof a)return c;for(var d in a){var e=a[d];if(!e.childNodes&&!e.cloneNode){var f=typeof a[d];c[d]=a[d]&&"object"===f?typeof c[d]===f?b.Utils.mixin(a[d],c[d]):b.Utils.mixin(a[d],new e.constructor):a[d]}}return c}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var c=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;b0?.5*c:0},b.Circle.prototype={type:null,circumference:function(){return 2*Math.PI*this._radius},getBounds:function(){return new b.Rectangle(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRounded(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},angleSq:function(a){return this.subtract(a).angle(a.subtract(this))},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},b.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},b.Point.angleSq=function(a,b){return a.subtract(b).angle(b.subtract(a))},b.Point.negative=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.x,-a.y)},b.Point.multiplyAdd=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+c.x*d,a.y+c.y*d)},b.Point.interpolate=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+(c.x-a.x)*d,a.y+(c.y-a.y)*d)},b.Point.perp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.y,a.x)},b.Point.rperp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(a.y,-a.x)},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRounded(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.project=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c)/c.getMagnitudeSq();return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.projectUnit=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c);return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.normalRightHand=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-1*a.y,a.x)},b.Point.normalize=function(a,c){"undefined"==typeof c&&(c=new b.Point);var d=a.getMagnitude();return 0!==d&&c.setTo(a.x/d,a.y/d),c},b.Point.rotate=function(a,c,d,e,f,g){f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y)));var h=e+Math.atan2(a.y-d,a.x-c);return a.setTo(c+g*Math.cos(h),d+g*Math.sin(h))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},b.Point.parse=function(a,c,d){c=c||"x",d=d||"y";var e=new b.Point;return a[c]&&(e.x=parseInt(a[c],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return"undefined"==typeof b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(a,this)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(b.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"topRight",{get:function(){return new b.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y) -},b.Rectangle.size=function(a,c){return"undefined"==typeof c||null===c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c||null===c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(c.x-a.x)-(e.x-d.x)*(c.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((c.x-a.x)*(a.y-d.y)-(c.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new b.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){this.type=b.POLYGON,this.points=a},b.Polygon.prototype={type:null,clone:function(a){for(var c=[],d=0;db!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!c)}return c},setTo:function(a){return this.points=a,this}},b.Polygon.prototype.constructor=b.Polygon,Object.defineProperty(b.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this._points=a}}),Object.defineProperty(b.Polygon.prototype,"area",{get:function(){var a,b,c,d,e,f=Number.MAX_VALUE,g=0;for(e=0;e=l;l++)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;q++)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[a,b]):this.moveTo(a,b),0===this.currentPath.length&&this.moveTo(a,b);var f=this.currentPath,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){var g=a+Math.cos(d)*c,h=b+Math.sin(d)*c,i=this.currentPath.shape.points;if((0!==i.length&&i[i.length-2]!==g||i[i.length-1]!==h)&&(this.moveTo(g,h),i=this.currentPath.shape.points),d===e)return this;!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var j=f?-1*(d-e):e-d,k=Math.abs(j)/(2*Math.PI)*40;if(0===j)return this;for(var l=j/(2*k),m=2*l,n=Math.cos(l),o=Math.sin(l),p=k-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);i.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape({points:[a,b,c,d,e],type:PIXI.Graphics.RREC}),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){return a instanceof Array||(a=Array.prototype.slice.call(arguments)),this.drawShape(new PIXI.Polygon(a)),this},PIXI.Graphics.prototype.clear=function(){return this.lineWidth=0,this.filling=!1,this.dirty=!0,this.clearDirty=!0,this.graphicsData=[],this},PIXI.Graphics.prototype.generateTexture=function(a,b){a=a||1;var c=this.getBounds(),d=new PIXI.CanvasBuffer(c.width*a,c.height*a),e=PIXI.Texture.fromCanvas(d.canvas,b);return e.baseTexture.resolution=a,d.context.scale(a,a),d.context.translate(-c.x,-c.y),PIXI.CanvasGraphics.renderGraphics(this,d.context),e},PIXI.Graphics.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite,a);if(a.spriteBatch.stop(),a.blendModeManager.setBlendMode(this.blendMode),this._mask&&a.maskManager.pushMask(this._mask,a),this._filters&&a.filterManager.pushFilter(this._filterBlock),this.blendMode!==a.spriteBatch.currentBlendMode){a.spriteBatch.currentBlendMode=this.blendMode;var b=PIXI.blendModesWebGL[a.spriteBatch.currentBlendMode];a.spriteBatch.gl.blendFunc(b[0],b[1])}if(this.webGLDirty&&(this.dirty=!0,this.webGLDirty=!1),PIXI.WebGLGraphics.renderGraphics(this,a),this.children.length){a.spriteBatch.start();for(var c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this.mask,a),a.drawCount++,a.spriteBatch.start()}},PIXI.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite,a);var b=a.context,c=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,b.globalCompositeOperation=PIXI.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a);var d=a.resolution;b.setTransform(c.a*d,c.b*d,c.c*d,c.d*d,c.tx*d,c.ty*d),PIXI.CanvasGraphics.renderGraphics(this,b);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},PIXI.Graphics.prototype.getBounds=function(a){this.dirty&&(this.updateBounds(),this.webGLDirty=!0,this.cachedSpriteDirty=!0,this.dirty=!1);var b=this._bounds,c=b.x,d=b.width+b.x,e=b.y,f=b.height+b.y,g=a||this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=n,w=o,x=n,y=o;return x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,b.x=x,b.width=v-x,b.y=y,b.height=w-y,b},PIXI.Graphics.prototype.updateBounds=function(){var a=1/0,b=-1/0,c=1/0,d=-1/0;if(this.graphicsData.length)for(var e,f,g,h,i,j,k=0;kg?g:a,b=g+i>b?g+i:b,c=c>h?h:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.CIRC)g=e.x,h=e.y,i=e.radius+n/2,j=e.radius+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.ELIP)g=e.x,h=e.y,i=e.width+n/2,j=e.height+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else{f=e.points;for(var o=0;og-n?g-n:a,b=g+n>b?g+n:b,c=c>h-n?h-n:c,d=h+n>d?h+n:d}}else a=0,b=0,c=0,d=0;var p=this.boundsPadding,q=this._bounds;q.x=a-p,q.width=b-a+2*p,q.y=c-p,q.height=d-c+2*p},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null;var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this.fillColor=d,this.fillAlpha=e,this.fill=f,this.shape=g,this.type=g.type},PIXI.Graphics.POLY=0,PIXI.Graphics.RECT=1,PIXI.Graphics.CIRC=2,PIXI.Graphics.ELIP=3,PIXI.Graphics.RREC=4,PIXI.Polygon.prototype.type=PIXI.Graphics.POLY,PIXI.Rectangle.prototype.type=PIXI.Graphics.RECT,PIXI.Circle.prototype.type=PIXI.Graphics.CIRC,PIXI.Ellipse.prototype.type=PIXI.Graphics.ELIP,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this._position=new b.Point,this.displayObject=null,this.scale=null,this._targetPosition=new b.Point},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target).multiply(this.target.parent?this.target.parent.worldTransform.a:1,this.target.parent?this.target.parent.worldTransform.d:1),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},resize:function(){},paused:function(){},pauseUpdate:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[])},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created&&this.onPauseUpdateCallback?this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.ArrayList=function(){this.total=0,this.position=0,this.list=[]},b.ArrayList.prototype={add:function(a){return this.exists(a)||(this.list.push(a),this.total++),a},getIndex:function(a){return this.list.indexOf(a)},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0,this.total=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),this.total--,a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)}},Object.defineProperty(b.ArrayList.prototype,"first",{get:function(){return this.position=0,this.total>0?this.list[0]:null}}),Object.defineProperty(b.ArrayList.prototype,"next",{get:function(){return this.positionb;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange;var a=this;this.game.device.cocoonJSApp&&(CocoonJS.App.onSuspended.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"pause"})}),CocoonJS.App.onActivated.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"resume"})}))},b.Stage.prototype.visibilityChange=function(a){return"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(this.disableVisibilityChange||(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden||"pause"===a.type?this.game.gamePaused(a):this.game.gameResumed(a)))},b.Stage.prototype.setBackgroundColor=function(a){if("string"==typeof a){var c=b.Color.hexToColor(a);this._backgroundColor=b.Color.getColor(c.r,c.g,c.b)}else{var c=b.Color.getRGB(a);this._backgroundColor=a}this.backgroundColorSplit=[c.r/255,c.g/255,c.b/255],this.backgroundColorString=b.Color.RGBtoString(c.r,c.g,c.b,255,"#")},b.Stage.prototype.destroy=function(){this._hiddenVar&&document.removeEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=null,window.onpageshow=null,window.onblur=null,window.onfocus=null},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this.game.transparent||this.setBackgroundColor(a)}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.ignoreDestroy=!1,this.classType=b.Sprite,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this.onDestroy=new b.Signal,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a,b){return"undefined"==typeof b&&(b=!1),a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,!b&&a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addMultiple=function(a,b){if(Array.isArray(a))for(var c=0;ca||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,b,c,d,e){"undefined"==typeof e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,f.events&&f.events.onAddedToGroup.dispatch(f,this),null===this.cursor&&(this.cursor=f),f},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.resetCursor=function(a){return"undefined"==typeof a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this._cache[8]=a,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},b.Group.prototype.setProperty=function(a,b,c,d,e){if("undefined"==typeof e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},b.Group.prototype.checkProperty=function(a,c,d,e){return"undefined"==typeof e&&(e=!1),!b.Utils.getProperty(a,c)&&e?!1:b.Utils.getProperty(a,c)!==d?!1:!0},b.Group.prototype.set=function(a,b,c,d,e,f,g){return"undefined"==typeof g&&(g=!1),b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},b.Group.prototype.setAll=function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof f&&(f=!1),a=a.split("."),e=e||0;for(var g=0,h=this.children.length;h>g;g++)(!c||c&&this.children[g].alive)&&(!d||d&&this.children[g].visible)&&this.setProperty(this.children[g],a,b,e,f)},b.Group.prototype.setAllChildren=function(a,c,d,e,f,g){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),"undefined"==typeof g&&(g=!1),f=f||0;for(var h=0,i=this.children.length;i>h;h++)(!d||d&&this.children[h].alive)&&(!e||e&&this.children[h].visible)&&(this.children[h]instanceof b.Group?this.children[h].setAllChildren(a,c,d,e,f,g):this.setProperty(this.children[h],a.split("."),c,f,g))},b.Group.prototype.checkAll=function(a,b,c,d,e){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);for(var f=0,g=this.children.length;g>f;f++)if((!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&!this.checkProperty(this.children[f],a,b,e))return!1;return!0},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.filter=function(a,c){for(var d=-1,e=this.children.length,f=new b.ArrayList;++de;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b,c){if("undefined"==typeof b&&(b=!1),"undefined"==typeof c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup.dispatch(a,this);var d=this.removeChild(a);return this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},b.Group.prototype.removeAll=function(a,b){if("undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);a&&c&&c.destroy(!0)}while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c,d){if("undefined"==typeof b&&(b=this.children.length-1),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup.dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},b.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},b.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(b.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){awindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.bounds=new b.Rectangle,this.aspectRatio=0,this.sourceAspectRatio=0,this.event=null,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this.parentIsWindow=!1,this.parentNode=null,this.parentScaleFactor=new b.Point(1,1),this.trackParentInterval=2e3,this.onResize=null,this.onResizeContext=null,this._scaleMode=b.ScaleManager.NO_SCALE,this._width=0,this._height=0,this._check=null,this._nextParentCheck=0,this._parentBounds=null,a.config&&this.parseConfig(a.config),this.setupScale(c,d) +(function(){var a=this,b=b||{};b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.0.0",b.blendModes={NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},b.scaleModes={DEFAULT:0,LINEAR:0,NEAREST:1},b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array):(b.Float32Array=Array,b.Uint16Array=Array),b.INTERACTION_FREQUENCY=30,b.AUTO_PREVENT_DEFAULT=!0,b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.dontSayHello=!1,b.defaultRenderOptions={view:null,transparent:!1,antialias:!1,preserveDrawingBuffer:!1,resolution:1,clearBeforeRender:!0},b.sayHello=function(a){if(!b.dontSayHello){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var c=["%c %c %c Pixi.js "+b.VERSION+" - "+a+" %c %c http://www.pixijs.com/ %c %c ♥%c♥%c♥ ","background: #ff66a5","background: #ff66a5","color: #ff66a5; background: #030307;","background: #ff66a5","background: #ffc3dc","background: #ff66a5","color: #ff2424; background: #fff","color: #ff2424; background: #fff","color: #ff2424; background: #fff"];console.log.apply(console,c)}else window.console&&console.log("Pixi.js "+b.VERSION+" - http://www.pixijs.com/");b.dontSayHello=!0}},b.Polygon=function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}this.closed=!0,this.points=a},b.Polygon.prototype.clone=function(){var a=this.points.slice();return new b.Polygon(a)},b.Polygon.prototype.contains=function(a,b){for(var c=!1,d=this.points.length/2,e=0,f=d-1;d>e;f=e++){var g=this.points[2*e],h=this.points[2*e+1],i=this.points[2*f],j=this.points[2*f+1],k=h>b!=j>b&&(i-g)*(b-h)/(j-h)+g>a;k&&(c=!c)}return c},b.Polygon.prototype.constructor=b.Polygon,b.Matrix=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0},b.Matrix.prototype.fromArray=function(a){this.a=a[0],this.b=a[1],this.c=a[3],this.d=a[4],this.tx=a[2],this.ty=a[5]},b.Matrix.prototype.toArray=function(a){this.array||(this.array=new b.Float32Array(9));var c=this.array;return a?(c[0]=this.a,c[1]=this.b,c[2]=0,c[3]=this.c,c[4]=this.d,c[5]=0,c[6]=this.tx,c[7]=this.ty,c[8]=1):(c[0]=this.a,c[1]=this.c,c[2]=this.tx,c[3]=this.b,c[4]=this.d,c[5]=this.ty,c[6]=0,c[7]=0,c[8]=1),c},b.Matrix.prototype.apply=function(a,c){return c=c||new b.Point,c.x=this.a*a.x+this.b*a.y+this.tx,c.y=this.c*a.x+this.d*a.y+this.ty,c},b.Matrix.prototype.applyInverse=function(a,c){c=c||new b.Point;var d=1/(this.a*this.d+this.c*-this.b);return c.x=this.d*d*a.x+-this.c*d*a.y+(this.ty*this.c-this.tx*this.d)*d,c.y=this.a*d*a.y+-this.b*d*a.x+(-this.ty*this.a+this.tx*this.b)*d,c},b.Matrix.prototype.translate=function(a,b){return this.tx+=a,this.ty+=b,this},b.Matrix.prototype.scale=function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},b.Matrix.prototype.rotate=function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},b.Matrix.prototype.append=function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},b.Matrix.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this},b.identityMatrix=new b.Matrix,b.DisplayObject=function(){this.position=new b.Point,this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.buttonMode=!1,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this._interactive=!1,this.defaultCursor="pointer",this.worldTransform=new b.Matrix,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,Object.defineProperty(b.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var b=[],c=0;c=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;ga;a++)this.children[a].updateTransform()},b.DisplayObjectContainer.prototype.getBounds=function(){if(0===this.children.length)return b.EmptyRectangle;for(var a,c,d,e=1/0,f=1/0,g=-1/0,h=-1/0,i=!1,j=0,k=this.children.length;k>j;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a,this._interactive&&(this.stage.dirty=!0);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d.setStageReference(a)}},b.DisplayObjectContainer.prototype.removeStageReference=function(){for(var a=0,b=this.children.length;b>a;a++){var c=this.children[a];c.removeStageReference()}this._interactive&&(this.stage.dirty=!0),this.stage=null},b.DisplayObjectContainer.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);var b,c;if(this._mask||this._filters){for(this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);a.spriteBatch.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),a.spriteBatch.start()}else for(b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.DisplayObjectContainer.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);this._mask&&a.maskManager.pushMask(this._mask,a);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d._renderCanvas(a)}this._mask&&a.maskManager.popMask(a)}},b.Sprite=function(a){b.DisplayObjectContainer.call(this),this.anchor=new b.Point,this.texture=a,this._width=0,this._height=0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL,this.shader=null,a.baseTexture.hasLoaded?this.onTextureUpdate():(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.on("update",this.onTextureUpdateBind)),this.renderable=!0},b.Sprite.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Sprite.prototype.constructor=b.Sprite,Object.defineProperty(b.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(b.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),b.Sprite.prototype.setTexture=function(a){this.texture=a,this.cachedTint=16777215},b.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height)},b.Sprite.prototype.getBounds=function(a){var b=this.texture.frame.width,c=this.texture.frame.height,d=b*(1-this.anchor.x),e=b*-this.anchor.x,f=c*(1-this.anchor.y),g=c*-this.anchor.y,h=a||this.worldTransform,i=h.a,j=h.c,k=h.b,l=h.d,m=h.tx,n=h.ty,o=i*e+k*g+m,p=l*g+j*e+n,q=i*d+k*g+m,r=l*g+j*d+n,s=i*d+k*f+m,t=l*f+j*d+n,u=i*e+k*f+m,v=l*f+j*e+n,w=-1/0,x=-1/0,y=1/0,z=1/0;y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,z=z>p?p:z,z=z>r?r:z,z=z>t?t:z,z=z>v?v:z,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,x=p>x?p:x,x=r>x?r:x,x=t>x?t:x,x=v>x?v:x;var A=this._bounds;return A.x=y,A.width=w-y,A.y=z,A.height=x-z,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){var b,c;if(this._mask||this._filters){var d=a.spriteBatch;for(this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);d.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),d.start()}else for(a.spriteBatch.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.Sprite.prototype._renderCanvas=function(a){if(!(this.visible===!1||0===this.alpha||this.texture.crop.width<=0||this.texture.crop.height<=0)){if(this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,a.context.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a),this.texture.valid){var c=this.texture.baseTexture.resolution/a.resolution;a.context.globalAlpha=this.worldAlpha,a.roundPixels?a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution|0,this.worldTransform.ty*a.resolution|0):a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution,this.worldTransform.ty*a.resolution),a.smoothProperty&&a.scaleMode!==this.texture.baseTexture.scaleMode&&(a.scaleMode=this.texture.baseTexture.scaleMode,a.context[a.smoothProperty]=a.scaleMode===b.scaleModes.LINEAR);var d=this.texture.trim?this.texture.trim.x-this.anchor.x*this.texture.trim.width:this.anchor.x*-this.texture.frame.width,e=this.texture.trim?this.texture.trim.y-this.anchor.y*this.texture.trim.height:this.anchor.y*-this.texture.frame.height;16777215!==this.tint?(this.cachedTint!==this.tint&&(this.cachedTint=this.tint,this.tintedTexture=b.CanvasTinter.getTintedTexture(this,this.tint)),a.context.drawImage(this.tintedTexture,0,0,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)):a.context.drawImage(this.texture.baseTexture.source,this.texture.crop.x,this.texture.crop.y,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)}for(var f=0,g=this.children.length;g>f;f++)this.children[f]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},b.Sprite.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache'+this);return new b.Sprite(c)},b.Sprite.fromImage=function(a,c,d){var e=b.Texture.fromImage(a,c,d);return new b.Sprite(e)},b.SpriteBatch=function(a){b.DisplayObjectContainer.call(this),this.textureThing=a,this.ready=!1},b.SpriteBatch.prototype=Object.create(b.DisplayObjectContainer.prototype),b.SpriteBatch.prototype.constructor=b.SpriteBatch,b.SpriteBatch.prototype.initWebGL=function(a){this.fastSpriteBatch=new b.WebGLFastSpriteBatch(a),this.ready=!0},b.SpriteBatch.prototype.updateTransform=function(){b.DisplayObject.prototype.updateTransform.call(this)},b.SpriteBatch.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||!this.children.length||(this.ready||this.initWebGL(a.gl),a.spriteBatch.stop(),a.shaderManager.setShader(a.shaderManager.fastShader),this.fastSpriteBatch.begin(this,a),this.fastSpriteBatch.render(this),a.spriteBatch.start())},b.SpriteBatch.prototype._renderCanvas=function(a){if(this.visible&&!(this.alpha<=0)&&this.children.length){var c=a.context;c.globalAlpha=this.worldAlpha,b.DisplayObject.prototype.updateTransform.call(this);for(var d=this.worldTransform,e=!0,f=0;fi;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(c.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}c.descent=i-g,c.fontSize=c.ascent+c.descent,b.Text.fontPropertiesCache[a]=c}return c},b.Text.prototype.wordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g],e=this.style.wordWrapWidth-h):(e-=i,b+=" "+f[g])}d=2?parseInt(c[c.length-2],10):b.BitmapText.fonts[this.fontName].size,this.dirty=!0,this.tint=a.tint},b.BitmapText.prototype.updateText=function(){for(var a=b.BitmapText.fonts[this.fontName],c=new b.Point,d=null,e=[],f=0,g=[],h=0,i=this.fontSize/a.size,j=0;j=j;j++){var n=0;"right"===this.style.align?n=f-g[j]:"center"===this.style.align&&(n=(f-g[j])/2),m.push(n)}var o=this.children.length,p=e.length,q=this.tint||16777215;for(j=0;p>j;j++){var r=o>j?this.children[j]:this._pool.pop();r?r.setTexture(e[j].texture):r=new b.Sprite(e[j].texture),r.position.x=(e[j].position.x+m[e[j].line])*i,r.position.y=e[j].position.y*i,r.scale.x=r.scale.y=i,r.tint=q,r.parent||this.addChild(r)}for(;this.children.length>p;){var s=this.getChildAt(this.children.length-1);this._pool.push(s),this.removeChild(s)}this.textWidth=f*i,this.textHeight=(c.y+a.lineHeight)*i},b.BitmapText.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),b.DisplayObjectContainer.prototype.updateTransform.call(this)},b.BitmapText.fonts={},b.Stage=function(a){b.DisplayObjectContainer.call(this),this.worldTransform=new b.Matrix,this.interactive=!0,this.interactionManager=new b.InteractionManager(this),this.dirty=!0,this.stage=this,this.stage.hitArea=new b.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a)},b.Stage.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},b.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var a=0,b=this.children.length;b>a;a++)this.children[a].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},b.Stage.prototype.setBackgroundColor=function(a){this.backgroundColor=a||0,this.backgroundColorSplit=b.hex2rgb(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},b.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},function(a){for(var b=0,c=["ms","moz","webkit","o"],d=0;d>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){return function(a){function b(){for(var d=arguments.length,f=new Array(d);d--;)f[d]=arguments[d];return f=e.concat(f),c.apply(this instanceof b?this:a,f)}var c=this,d=arguments.length-1,e=[];if(d>0)for(e.length=d;d--;)e[d]=arguments[d+1];if("function"!=typeof c)throw new TypeError;return b.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(c.prototype),b}}()),b.AjaxRequest=function(){var a=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new window.XMLHttpRequest:!1;for(var b=0;b0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.EventTarget={call:function(a){a&&(a=a.prototype||a,b.EventTarget.mixin(a))},mixin:function(a){a.listeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?this._listeners[a].slice():[]},a.emit=a.dispatchEvent=function(a,c){if(this._listeners=this._listeners||{},"object"==typeof a&&(c=a,a=a.type),c&&c.__isEventObject===!0||(c=new b.Event(this,a,c)),this._listeners&&this._listeners[a]){var d,e=this._listeners[a],f=e.length,g=e[0];for(d=0;f>d;g=e[++d])if(g.call(this,c),c.stoppedImmediate)return this;if(c.stopped)return this}return this.parent&&this.parent.emit&&this.parent.emit.call(this.parent,a,c),this},a.on=a.addEventListener=function(a,b){return this._listeners=this._listeners||{},(this._listeners[a]=this._listeners[a]||[]).push(b),this},a.once=function(a,b){function c(){b.apply(d.off(a,c),arguments)}this._listeners=this._listeners||{};var d=this;return c._originalHandler=b,this.on(a,c)},a.off=a.removeEventListener=function(a,b){if(this._listeners=this._listeners||{},!this._listeners[a])return this;for(var c=this._listeners[a],d=b?c.length:0;d-->0;)(c[d]===b||c[d]._originalHandler===b)&&c.splice(d,1);return 0===c.length&&delete this._listeners[a],this},a.removeAllListeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?(delete this._listeners[a],this):this}}},b.Event=function(a,b,c){this.__isEventObject=!0,this.stopped=!1,this.stoppedImmediate=!1,this.target=a,this.type=b,this.data=c,this.content=c,this.timeStamp=Date.now()},b.Event.prototype.stopPropagation=function(){this.stopped=!0},b.Event.prototype.stopImmediatePropagation=function(){this.stoppedImmediate=!0},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return window.console.log("PIXI Warning: shape too complex to fill"),[];for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e +},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.initDefaultShaders=function(){},b.CompileVertexShader=function(a,c){return b._CompileShader(a,c,a.VERTEX_SHADER)},b.CompileFragmentShader=function(a,c){return b._CompileShader(a,c,a.FRAGMENT_SHADER)},b._CompileShader=function(a,b,c){var d=b.join("\n"),e=a.createShader(c);return a.shaderSource(e,d),a.compileShader(e),a.getShaderParameter(e,a.COMPILE_STATUS)?e:(window.console.log(a.getShaderInfoLog(e)),null)},b.compileProgram=function(a,c,d){var e=b.CompileFragmentShader(a,d),f=b.CompileVertexShader(a,c),g=a.createProgram();return a.attachShader(g,f),a.attachShader(g,e),a.linkProgram(g),a.getProgramParameter(g,a.LINK_STATUS)||window.console.log("Could not initialise shaders"),g},b.PixiShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.textureCount=0,this.firstRun=!0,this.dirty=!0,this.attributes=[],this.init()},b.PixiShader.prototype.constructor=b.PixiShader,b.PixiShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc||b.PixiShader.defaultVertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute];for(var d in this.uniforms)this.uniforms[d].uniformLocation=a.getUniformLocation(c,d);this.initUniforms(),this.program=c},b.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a,b=this.gl;for(var c in this.uniforms){a=this.uniforms[c];var d=a.type;"sampler2D"===d?(a._init=!1,null!==a.value&&this.initSampler2D(a)):"mat2"===d||"mat3"===d||"mat4"===d?(a.glMatrix=!0,a.glValueLength=1,"mat2"===d?a.glFunc=b.uniformMatrix2fv:"mat3"===d?a.glFunc=b.uniformMatrix3fv:"mat4"===d&&(a.glFunc=b.uniformMatrix4fv)):(a.glFunc=b["uniform"+d],a.glValueLength="2f"===d||"2i"===d?2:"3f"===d||"3i"===d?3:"4f"===d||"4i"===d?4:1)}},b.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){var b=this.gl;if(b.activeTexture(b["TEXTURE"+this.textureCount]),b.bindTexture(b.TEXTURE_2D,a.value.baseTexture._glTextures[b.id]),a.textureData){var c=a.textureData,d=c.magFilter?c.magFilter:b.LINEAR,e=c.minFilter?c.minFilter:b.LINEAR,f=c.wrapS?c.wrapS:b.CLAMP_TO_EDGE,g=c.wrapT?c.wrapT:b.CLAMP_TO_EDGE,h=c.luminance?b.LUMINANCE:b.RGBA;if(c.repeat&&(f=b.REPEAT,g=b.REPEAT),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,!!c.flipY),c.width){var i=c.width?c.width:512,j=c.height?c.height:2,k=c.border?c.border:0;b.texImage2D(b.TEXTURE_2D,0,h,i,j,k,h,b.UNSIGNED_BYTE,null)}else b.texImage2D(b.TEXTURE_2D,0,h,b.RGBA,b.UNSIGNED_BYTE,a.value.baseTexture.source);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,d),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,f),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,g)}b.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},b.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a,c=this.gl;for(var d in this.uniforms)a=this.uniforms[d],1===a.glValueLength?a.glMatrix===!0?a.glFunc.call(c,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c,a.uniformLocation,a.value):2===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y):3===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z):4===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"===a.type&&(a._init?(c.activeTexture(c["TEXTURE"+this.textureCount]),a.value.baseTexture._dirty[c.id]?b.defaultRenderer.updateTexture(a.value.baseTexture):c.bindTexture(c.TEXTURE_2D,a.value.baseTexture._glTextures[c.id]),c.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},b.PixiShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec4 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"],b.PixiFastShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"],this.textureCount=0,this.init()},b.PixiFastShader.prototype.constructor=b.PixiFastShader,b.PixiFastShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.uMatrix=a.getUniformLocation(c,"uMatrix"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aPositionCoord=a.getAttribLocation(c,"aPositionCoord"),this.aScale=a.getAttribLocation(c,"aScale"),this.aRotation=a.getAttribLocation(c,"aRotation"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute],this.program=c},b.PixiFastShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.StripShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;","}"],this.init()},b.StripShader.prototype.constructor=b.StripShader,b.StripShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.attributes=[this.aVertexPosition,this.aTextureCoord],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.StripShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.PrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor * vec4(tint * alpha, alpha);","}"],this.init()},b.PrimitiveShader.prototype.constructor=b.PrimitiveShader,b.PrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.ComplexPrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform vec3 tint;","uniform float alpha;","uniform vec3 color;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = vec4(color * alpha * tint, alpha);","}"],this.init()},b.ComplexPrimitiveShader.prototype.constructor=b.ComplexPrimitiveShader,b.ComplexPrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.color=a.getUniformLocation(c,"color"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.ComplexPrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.WebGLGraphics=function(){},b.WebGLGraphics.renderGraphics=function(a,c){var d,e=c.gl,f=c.projection,g=c.offset,h=c.shaderManager.primitiveShader;a.dirty&&b.WebGLGraphics.updateGraphics(a,e);for(var i=a._webGL[e.id],j=0;j=6&&(h.points.length>10?(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g)):(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildPoly(h,g))),h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))):(g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g)),d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d),n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i)}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.lastIndex=0,this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[],this.lastIndex=0},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},b.glContexts=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)"undefined"==typeof d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.sayHello("webGL"),b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this.contextLostBound=this.handleContextLost.bind(this),this.contextRestoredBound=this.handleContextRestored.bind(this),this.view.addEventListener("webglcontextlost",this.contextLostBound,!1),this.view.addEventListener("webglcontextrestored",this.contextRestoredBound,!1),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(a.interactive&&a.interactionManager.removeEvents(),this.__stage=a),a.updateTransform();var b=this.gl;a._interactive?a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)):a._interactiveEventsAdded&&(a._interactiveEventsAdded=!1,a.interactionManager.setTarget(this)),b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.handleContextLost=function(a){a.preventDefault(),this.contextLost=!0},b.WebGLRenderer.prototype.handleContextRestored=function(){this.initContext();for(var a in b.TextureCache){var c=b.TextureCache[a].baseTexture;c._glTextures=[]}this.contextLost=!1},b.WebGLRenderer.prototype.destroy=function(){this.view.off("webglcontextlost",this.contextLostBound),this.view.off("webglcontextrestored",this.contextRestoredBound),b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a){var b=a.texture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=b.baseTexture);var c=b._uvs;if(c){var d,e,f,g,h=a.worldAlpha,i=a.tint,j=this.vertices,k=a.anchor.x,l=a.anchor.y;if(b.trim){var m=b.trim;e=m.x-k*m.width,d=e+b.crop.width,g=m.y-l*m.height,f=g+b.crop.height}else d=b.frame.width*(1-k),e=b.frame.width*-k,f=b.frame.height*(1-l),g=b.frame.height*-l;var n=4*this.currentBatchSize*this.vertSize,o=b.baseTexture.resolution,p=a.worldTransform,q=p.a/o,r=p.b/o,s=p.c/o,t=p.d/o,u=p.tx,v=p.ty;j[n++]=q*e+s*g+u,j[n++]=t*g+r*e+v,j[n++]=c.x0,j[n++]=c.y0,j[n++]=h,j[n++]=i,j[n++]=q*d+s*g+u,j[n++]=t*g+r*d+v,j[n++]=c.x1,j[n++]=c.y1,j[n++]=h,j[n++]=i,j[n++]=q*d+s*f+u,j[n++]=t*f+r*d+v,j[n++]=c.x2,j[n++]=c.y2,j[n++]=h,j[n++]=i,j[n++]=q*e+s*f+u,j[n++]=t*f+r*e+v,j[n++]=c.x3,j[n++]=c.y3,j[n++]=h,j[n++]=i,this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs;a.tilePosition.x%=c.baseTexture.width*a.tileScaleOffset.x,a.tilePosition.y%=c.baseTexture.height*a.tileScaleOffset.y;var e=a.tilePosition.x/(c.baseTexture.width*a.tileScaleOffset.x),f=a.tilePosition.y/(c.baseTexture.height*a.tileScaleOffset.y),g=a.width/c.baseTexture.width/(a.tileScale.x*a.tileScaleOffset.x),h=a.height/c.baseTexture.height/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-e,d.y0=0-f,d.x1=1*g-e,d.y1=0-f,d.x2=1*g-e,d.y2=1*h-f,d.x3=0-e,d.y3=1*h-f;var i=a.worldAlpha,j=a.tint,k=this.vertices,l=a.width,m=a.height,n=a.anchor.x,o=a.anchor.y,p=l*(1-n),q=l*-n,r=m*(1-o),s=m*-o,t=4*this.currentBatchSize*this.vertSize,u=c.baseTexture.resolution,v=a.worldTransform,w=v.a/u,x=v.b/u,y=v.c/u,z=v.d/u,A=v.tx,B=v.ty;k[t++]=w*q+y*s+A,k[t++]=z*s+x*q+B,k[t++]=d.x0,k[t++]=d.y0,k[t++]=i,k[t++]=j,k[t++]=w*p+y*s+A,k[t++]=z*s+x*p+B,k[t++]=d.x1,k[t++]=d.y1,k[t++]=i,k[t++]=j,k[t++]=w*p+y*r+A,k[t++]=z*r+x*p+B,k[t++]=d.x2,k[t++]=d.y2,k[t++]=i,k[t++]=j,k[t++]=w*q+y*r+A,k[t++]=z*r+x*q+B,k[t++]=d.x3,k[t++]=d.y3,k[t++]=i,k[t++]=j,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,2,c.FLOAT,!1,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var a=4*this.size*this.vertSize,b=6*this.maxSize;this.vertices=new Float32Array(a),this.indices=new Uint16Array(b),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var c=0,d=0;b>c;c+=6,d+=4)this.indices[c+0]=d+0,this.indices[c+1]=d+1,this.indices[c+2]=d+2,this.indices[c+3]=d+0,this.indices[c+4]=d+2,this.indices[c+5]=d+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(g.fillColor||0===g.fillColor)&&(c.globalAlpha=g.fillAlpha*d,c.fillStyle=e="#"+("00000"+(0|g.fillColor).toString(16)).substr(-6),c.fill()),g.lineWidth&&(c.globalAlpha=g.lineAlpha*d,c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){d>1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){c.beginPath();var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iA?A:z,c.beginPath(),c.moveTo(v,w+z),c.lineTo(v,w+y-z),c.quadraticCurveTo(v,w+y,v+z,w+y),c.lineTo(v+x-z,w+y),c.quadraticCurveTo(v+x,w+y,v+x,w+y-z),c.lineTo(v+x,w+z),c.quadraticCurveTo(v+x,w,v+x-z,w),c.lineTo(v+z,w),c.quadraticCurveTo(v,w,v,w+z),c.closePath()}}}},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.padding=0},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var b=a.gl,c=a.projection,d=a.offset,e=a.shaderManager.stripShader;b.blendFunc(b.ONE,b.ONE_MINUS_SRC_ALPHA),b.uniformMatrix3fv(e.translationMatrix,!1,this.worldTransform.toArray(!0)),b.uniform2f(e.projectionVector,c.x,-c.y),b.uniform2f(e.offsetVector,-d.x,-d.y),b.uniform1f(e.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.STATIC_DRAW),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)):(b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferSubData(b.ARRAY_BUFFER,0,this.verticies),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),b.drawElements(b.TRIANGLE_STRIP,this.indices.length,b.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var b=a.context,c=this.worldTransform; +a.roundPixels?b.setTransform(c.a,c.b,c.c,c.d,0|c.tx,0|c.ty):b.setTransform(c.a,c.b,c.c,c.d,c.tx,c.ty);var d=this,e=d.verticies,f=d.uvs,g=e.length/2;this.count++;for(var h=0;g-2>h;h++){var i=2*h,j=e[i],k=e[i+2],l=e[i+4],m=e[i+1],n=e[i+3],o=e[i+5];if(this.padding>0){var p=(j+k+l)/3,q=(m+n+o)/3,r=j-p,s=m-q,t=Math.sqrt(r*r+s*s);j=p+r/t*(t+3),m=q+s/t*(t+3),r=k-p,s=n-q,t=Math.sqrt(r*r+s*s),k=p+r/t*(t+3),n=q+s/t*(t+3),r=l-p,s=o-q,t=Math.sqrt(r*r+s*s),l=p+r/t*(t+3),o=q+s/t*(t+3)}var u=f[i]*d.texture.width,v=f[i+2]*d.texture.width,w=f[i+4]*d.texture.width,x=f[i+1]*d.texture.height,y=f[i+3]*d.texture.height,z=f[i+5]*d.texture.height;b.save(),b.beginPath(),b.moveTo(j,m),b.lineTo(k,n),b.lineTo(l,o),b.closePath(),b.clip();var A=u*y+x*w+v*z-y*w-x*v-u*z,B=j*y+x*l+k*z-y*l-x*k-j*z,C=u*k+j*w+v*l-k*w-j*v-u*l,D=u*y*l+x*k*w+j*v*z-j*y*w-x*v*l-u*k*z,E=m*y+x*o+n*z-y*o-x*n-m*z,F=u*n+m*w+v*o-n*w-m*v-u*o,G=u*y*o+x*n*w+m*v*z-m*y*w-x*v*o-u*n*z;b.transform(B/A,E/A,C/A,F/A,D/A,G/A),b.drawImage(d.texture.baseTexture.source,0,0),b.restore()}},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.verticies=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.verticies,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||100,this._height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this._mask,a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d,e,f=this.worldTransform,g=a.resolution;if(c.setTransform(f.a*g,f.c*g,f.b*g,f.d*g,f.tx*g,f.ty*g),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]);var h=this.tilePosition,i=this.tileScale;for(h.x%=this.tilingTexture.baseTexture.width,h.y%=this.tilingTexture.baseTexture.height,c.scale(i.x,i.y),c.translate(h.x+this.anchor.x*-this._width,h.y+this.anchor.y*-this._height),c.fillStyle=this.__tilePattern,c.fillRect(-h.x,-h.y,this._width/i.x,this._height/i.y),c.scale(1/i.x,1/i.y),c.translate(-h.x+this.anchor.x*this._width,-h.y+this.anchor.y*this._height),this._mask&&a.maskManager.popMask(a.context),d=0,e=this.children.length;e>d;d++)this.children[d]._renderCanvas(a)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.onTextureUpdate=function(){},b.TilingSprite.prototype.generateTilingTexture=function(a){if(this.texture.baseTexture.hasLoaded){var c,d,e=this.originalTexture||this.texture,f=e.frame,g=f.width!==e.baseTexture.width||f.height!==e.baseTexture.height,h=!1;if(a?(c=b.getNextPowerOfTwo(f.width),d=b.getNextPowerOfTwo(f.height),(f.width!==c||f.height!==d)&&(h=!0)):g&&(c=f.width,d=f.height,h=!0),h){var i;this.tilingTexture&&this.tilingTexture.isTiling?(i=this.tilingTexture.canvasBuffer,i.resize(c,d),this.tilingTexture.baseTexture.width=c,this.tilingTexture.baseTexture.height=d,this.tilingTexture.needsUpdate=!0):(i=new b.CanvasBuffer(c,d),this.tilingTexture=b.Texture.fromCanvas(i.canvas),this.tilingTexture.canvasBuffer=i,this.tilingTexture.isTiling=!0),i.context.drawImage(e.baseTexture.source,e.crop.x,e.crop.y,e.crop.width,e.crop.height,0,0,c,d),this.tileScaleOffset.x=f.width/c,this.tileScaleOffset.y=f.height/d}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=e;this.refreshTexture=!1,this.originalTexture=this.texture,this.texture=this.tilingTexture,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this._dirty=[!0,!0,!0,!0],a){if((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height)this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty();else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.naturalWidth||d.source.width,d.height=d.source.naturalHeight||d.source.height,d.dirty(),d.dispatchEvent({type:"loaded",content:d})},this.source.onerror=function(){d.dispatchEvent({type:"error",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.EventTarget.mixin(b.BaseTexture.prototype),b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,this.source.src=""):this.source&&this.source._pixiId&&delete b.BaseTextureCache[this.source._pixiId],this.source=null;for(var a=this._glTextures.length-1;a>=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;athis.baseTexture.width||a.y+a.height>this.baseTexture.height))throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width,this.height)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width*this.resolution,this.height*this.resolution,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=this.frame.width=this.crop.width=a,this.height=this.frame.height=this.crop.height=c,d&&(this.baseTexture.width=this.width,this.baseTexture.height=this.height),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width*this.resolution,this.height*this.resolution))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1),a.worldAlpha=1;for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();var h=this.renderer.gl;h.viewport(0,0,this.width*this.resolution,this.height*this.resolution),h.bindFramebuffer(h.FRAMEBUFFER,this.textureBuffer.frameBuffer),c&&this.textureBuffer.clear(),this.renderer.spriteBatch.dirty=!0,this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),this.renderer.spriteBatch.dirty=!0}},b.RenderTexture.prototype.renderCanvas=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),b&&d.append(b);for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();c&&this.textureBuffer.clear();var h=this.textureBuffer.context,i=this.renderer.resolution;this.renderer.resolution=this.resolution,this.renderer.renderDisplayObject(a,h),this.renderer.resolution=i}},b.RenderTexture.prototype.getImage=function(){var a=new Image;return a.src=this.getBase64(),a},b.RenderTexture.prototype.getBase64=function(){return this.getCanvas().toDataURL()},b.RenderTexture.prototype.getCanvas=function(){if(this.renderer.type===b.WEBGL_RENDERER){var a=this.renderer.gl,c=this.textureBuffer.width,d=this.textureBuffer.height,e=new Uint8Array(4*c*d);a.bindFramebuffer(a.FRAMEBUFFER,this.textureBuffer.frameBuffer),a.readPixels(0,0,c,d,a.RGBA,a.UNSIGNED_BYTE,e),a.bindFramebuffer(a.FRAMEBUFFER,null);for(var f=new b.CanvasBuffer(c,d),g=f.context.getImageData(0,0,c,d),h=g.data,i=0;ia;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this),function(){var a=this,b=b||{VERSION:"2.1.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};if(PIXI.InteractionManager=PIXI.InteractionManager||function(){},PIXI.dontSayHello=!0,b.Utils={getProperty:function(a,b){for(var c=b.split("."),d=c.pop(),e=c.length,f=1,g=c[0];e>f&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},transposeArray:function(a){for(var b=new Array(a[0].length),c=0;c-1;d--)b[c][d]=a[d][c]}return b},rotateArray:function(a,c){if("string"!=typeof c&&(c=(c%360+360)%360),90===c||-270===c||"rotateLeft"===c)a=b.Utils.transposeArray(a),a=a.reverse();else if(-90===c||270===c||"rotateRight"===c)a=a.reverse(),a=b.Utils.transposeArray(a);else if(180===Math.abs(c)||"rotate180"===c){for(var d=0;d0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h},mixin:function(a,c){if(!a||"object"!=typeof a)return c;for(var d in a){var e=a[d];if(!e.childNodes&&!e.cloneNode){var f=typeof a[d];c[d]=a[d]&&"object"===f?typeof c[d]===f?b.Utils.mixin(a[d],c[d]):b.Utils.mixin(a[d],new e.constructor):a[d]}}return c}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var c=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;b0?.5*c:0},b.Circle.prototype={type:null,circumference:function(){return 2*Math.PI*this._radius},getBounds:function(){return new b.Rectangle(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRounded(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},angleSq:function(a){return this.subtract(a).angle(a.subtract(this))},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},b.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},b.Point.angleSq=function(a,b){return a.subtract(b).angle(b.subtract(a))},b.Point.negative=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.x,-a.y)},b.Point.multiplyAdd=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+c.x*d,a.y+c.y*d)},b.Point.interpolate=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+(c.x-a.x)*d,a.y+(c.y-a.y)*d)},b.Point.perp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.y,a.x)},b.Point.rperp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(a.y,-a.x)},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRounded(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.project=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c)/c.getMagnitudeSq();return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.projectUnit=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c);return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.normalRightHand=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-1*a.y,a.x)},b.Point.normalize=function(a,c){"undefined"==typeof c&&(c=new b.Point);var d=a.getMagnitude();return 0!==d&&c.setTo(a.x/d,a.y/d),c},b.Point.rotate=function(a,c,d,e,f,g){f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y)));var h=e+Math.atan2(a.y-d,a.x-c);return a.setTo(c+g*Math.cos(h),d+g*Math.sin(h))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},b.Point.parse=function(a,c,d){c=c||"x",d=d||"y";var e=new b.Point;return a[c]&&(e.x=parseInt(a[c],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return"undefined"==typeof b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(a,this)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(b.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"topRight",{get:function(){return new b.Point(this.x+this.width,this.y) +},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y)},b.Rectangle.size=function(a,c){return"undefined"==typeof c||null===c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c||null===c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(c.x-a.x)-(e.x-d.x)*(c.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((c.x-a.x)*(a.y-d.y)-(c.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new b.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){if(this.type=b.POLYGON,a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}this.points=a,this.closed=!0},b.Polygon.prototype={clone:function(a){var c=this.points.slice();return"undefined"==typeof a||null===a?a=new b.Polygon(c):a.setTo(c),a},contains:function(a,b){for(var c=!1,d=this.points.length/2,e=0,f=d-1;d>e;f=e++){var g=this.points[2*e].x,h=this.points[2*e+1].y,i=this.points[2*f].x,j=this.points[2*f+1].y,k=h>b!=j>b&&(i-g)*(b-h)/(j-h)+g>a;k&&(c=!c)}return c},setTo:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}return this.points=a,this}},b.Polygon.prototype.constructor=b.Polygon,Object.defineProperty(b.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this._points=a}}),Object.defineProperty(b.Polygon.prototype,"area",{get:function(){var a,b,c,d,e,f=Number.MAX_VALUE,g=0;for(e=0;e=l;l++)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;q++)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[a,b]):this.moveTo(a,b),0===this.currentPath.length&&this.moveTo(a,b);var f=this.currentPath,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){var g=a+Math.cos(d)*c,h=b+Math.sin(d)*c,i=this.currentPath.shape.points;if((0!==i.length&&i[i.length-2]!==g||i[i.length-1]!==h)&&(this.moveTo(g,h),i=this.currentPath.shape.points),d===e)return this;!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var j=f?-1*(d-e):e-d,k=Math.abs(j)/(2*Math.PI)*40;if(0===j)return this;for(var l=j/(2*k),m=2*l,n=Math.cos(l),o=Math.sin(l),p=k-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);i.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape({points:[a,b,c,d,e],type:PIXI.Graphics.RREC}),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){return a instanceof Array||(a=Array.prototype.slice.call(arguments)),this.drawShape(new PIXI.Polygon(a)),this},PIXI.Graphics.prototype.clear=function(){return this.lineWidth=0,this.filling=!1,this.dirty=!0,this.clearDirty=!0,this.graphicsData=[],this},PIXI.Graphics.prototype.generateTexture=function(a,b){a=a||1;var c=this.getBounds(),d=new PIXI.CanvasBuffer(c.width*a,c.height*a),e=PIXI.Texture.fromCanvas(d.canvas,b);return e.baseTexture.resolution=a,d.context.scale(a,a),d.context.translate(-c.x,-c.y),PIXI.CanvasGraphics.renderGraphics(this,d.context),e},PIXI.Graphics.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite,a);if(a.spriteBatch.stop(),a.blendModeManager.setBlendMode(this.blendMode),this._mask&&a.maskManager.pushMask(this._mask,a),this._filters&&a.filterManager.pushFilter(this._filterBlock),this.blendMode!==a.spriteBatch.currentBlendMode){a.spriteBatch.currentBlendMode=this.blendMode;var b=PIXI.blendModesWebGL[a.spriteBatch.currentBlendMode];a.spriteBatch.gl.blendFunc(b[0],b[1])}if(this.webGLDirty&&(this.dirty=!0,this.webGLDirty=!1),PIXI.WebGLGraphics.renderGraphics(this,a),this.children.length){a.spriteBatch.start();for(var c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this.mask,a),a.drawCount++,a.spriteBatch.start()}},PIXI.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite,a);var b=a.context,c=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,b.globalCompositeOperation=PIXI.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a);var d=a.resolution;b.setTransform(c.a*d,c.b*d,c.c*d,c.d*d,c.tx*d,c.ty*d),PIXI.CanvasGraphics.renderGraphics(this,b);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},PIXI.Graphics.prototype.getBounds=function(a){this.dirty&&(this.updateBounds(),this.webGLDirty=!0,this.cachedSpriteDirty=!0,this.dirty=!1);var b=this._bounds,c=b.x,d=b.width+b.x,e=b.y,f=b.height+b.y,g=a||this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=n,w=o,x=n,y=o;return x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,b.x=x,b.width=v-x,b.y=y,b.height=w-y,b},PIXI.Graphics.prototype.updateBounds=function(){var a=1/0,b=-1/0,c=1/0,d=-1/0;if(this.graphicsData.length)for(var e,f,g,h,i,j,k=0;kg?g:a,b=g+i>b?g+i:b,c=c>h?h:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.CIRC)g=e.x,h=e.y,i=e.radius+n/2,j=e.radius+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.ELIP)g=e.x,h=e.y,i=e.width+n/2,j=e.height+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else{f=e.points;for(var o=0;og-n?g-n:a,b=g+n>b?g+n:b,c=c>h-n?h-n:c,d=h+n>d?h+n:d}}else a=0,b=0,c=0,d=0;var p=this.boundsPadding,q=this._bounds;q.x=a-p,q.width=b-a+2*p,q.y=c-p,q.height=d-c+2*p},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null;var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this.fillColor=d,this.fillAlpha=e,this.fill=f,this.shape=g,this.type=g.type},PIXI.Graphics.POLY=0,PIXI.Graphics.RECT=1,PIXI.Graphics.CIRC=2,PIXI.Graphics.ELIP=3,PIXI.Graphics.RREC=4,PIXI.Polygon.prototype.type=PIXI.Graphics.POLY,PIXI.Rectangle.prototype.type=PIXI.Graphics.RECT,PIXI.Circle.prototype.type=PIXI.Graphics.CIRC,PIXI.Ellipse.prototype.type=PIXI.Graphics.ELIP,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this._position=new b.Point,this.displayObject=null,this.scale=null,this._targetPosition=new b.Point},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target).multiply(this.target.parent?this.target.parent.worldTransform.a:1,this.target.parent?this.target.parent.worldTransform.d:1),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},resize:function(){},paused:function(){},pauseUpdate:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[])},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created&&this.onPauseUpdateCallback?this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.ArrayList=function(){this.total=0,this.position=0,this.list=[]},b.ArrayList.prototype={add:function(a){return this.exists(a)||(this.list.push(a),this.total++),a},getIndex:function(a){return this.list.indexOf(a)},exists:function(a){return this.list.indexOf(a)>-1 +},reset:function(){this.list.length=0,this.total=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),this.total--,a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)}},Object.defineProperty(b.ArrayList.prototype,"first",{get:function(){return this.position=0,this.total>0?this.list[0]:null}}),Object.defineProperty(b.ArrayList.prototype,"next",{get:function(){return this.positionb;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange;var a=this;this.game.device.cocoonJSApp&&(CocoonJS.App.onSuspended.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"pause"})}),CocoonJS.App.onActivated.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"resume"})}))},b.Stage.prototype.visibilityChange=function(a){return"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(this.disableVisibilityChange||(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden||"pause"===a.type?this.game.gamePaused(a):this.game.gameResumed(a)))},b.Stage.prototype.setBackgroundColor=function(a){if("string"==typeof a){var c=b.Color.hexToColor(a);this._backgroundColor=b.Color.getColor(c.r,c.g,c.b)}else{var c=b.Color.getRGB(a);this._backgroundColor=a}this.backgroundColorSplit=[c.r/255,c.g/255,c.b/255],this.backgroundColorString=b.Color.RGBtoString(c.r,c.g,c.b,255,"#")},b.Stage.prototype.destroy=function(){this._hiddenVar&&document.removeEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=null,window.onpageshow=null,window.onblur=null,window.onfocus=null},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this.game.transparent||this.setBackgroundColor(a)}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.ignoreDestroy=!1,this.classType=b.Sprite,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this.onDestroy=new b.Signal,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a,b){return"undefined"==typeof b&&(b=!1),a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,!b&&a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addMultiple=function(a,b){if(Array.isArray(a))for(var c=0;ca||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,b,c,d,e){"undefined"==typeof e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,f.events&&f.events.onAddedToGroup.dispatch(f,this),null===this.cursor&&(this.cursor=f),f},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.resetCursor=function(a){return"undefined"==typeof a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this._cache[8]=a,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},b.Group.prototype.setProperty=function(a,b,c,d,e){if("undefined"==typeof e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},b.Group.prototype.checkProperty=function(a,c,d,e){return"undefined"==typeof e&&(e=!1),!b.Utils.getProperty(a,c)&&e?!1:b.Utils.getProperty(a,c)!==d?!1:!0},b.Group.prototype.set=function(a,b,c,d,e,f,g){return"undefined"==typeof g&&(g=!1),b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},b.Group.prototype.setAll=function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof f&&(f=!1),a=a.split("."),e=e||0;for(var g=0,h=this.children.length;h>g;g++)(!c||c&&this.children[g].alive)&&(!d||d&&this.children[g].visible)&&this.setProperty(this.children[g],a,b,e,f)},b.Group.prototype.setAllChildren=function(a,c,d,e,f,g){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),"undefined"==typeof g&&(g=!1),f=f||0;for(var h=0,i=this.children.length;i>h;h++)(!d||d&&this.children[h].alive)&&(!e||e&&this.children[h].visible)&&(this.children[h]instanceof b.Group?this.children[h].setAllChildren(a,c,d,e,f,g):this.setProperty(this.children[h],a.split("."),c,f,g))},b.Group.prototype.checkAll=function(a,b,c,d,e){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);for(var f=0,g=this.children.length;g>f;f++)if((!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&!this.checkProperty(this.children[f],a,b,e))return!1;return!0},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.filter=function(a,c){for(var d=-1,e=this.children.length,f=new b.ArrayList;++de;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b,c){if("undefined"==typeof b&&(b=!1),"undefined"==typeof c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup.dispatch(a,this);var d=this.removeChild(a);return this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},b.Group.prototype.removeAll=function(a,b){if("undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);a&&c&&c.destroy(!0)}while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c,d){if("undefined"==typeof b&&(b=this.children.length-1),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup.dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},b.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},b.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(b.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){awindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.bounds=new b.Rectangle,this.aspectRatio=0,this.sourceAspectRatio=0,this.event=null,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this.parentIsWindow=!1,this.parentNode=null,this.parentScaleFactor=new b.Point(1,1),this.trackParentInterval=2e3,this.onResize=null,this.onResizeContext=null,this._scaleMode=b.ScaleManager.NO_SCALE,this._width=0,this._height=0,this._check=null,this._nextParentCheck=0,this._parentBounds=null,a.config&&this.parseConfig(a.config),this.setupScale(c,d) },b.ScaleManager.EXACT_FIT=0,b.ScaleManager.NO_SCALE=1,b.ScaleManager.SHOW_ALL=2,b.ScaleManager.RESIZE=3,b.ScaleManager.prototype={parseConfig:function(a){a.scaleMode&&(this.scaleMode=a.scaleMode),a.fullScreenScaleMode&&(this.fullScreenScaleMode=a.fullScreenScaleMode),a.fullScreenTarget&&(this.fullScreenTarget=a.fullScreenTarget)},setupScale:function(a,c){var d,e=new b.Rectangle;""!==this.game.parent&&("string"==typeof this.game.parent?d=document.getElementById(this.game.parent):"object"==typeof this.game.parent&&1===this.game.parent.nodeType&&(d=this.game.parent)),d?(this.parentNode=d,this.parentIsWindow=!1,this._parentBounds=this.parentNode.getBoundingClientRect(),e.width=this._parentBounds.width,e.height=this._parentBounds.height,this.offset.set(this._parentBounds.left,this._parentBounds.top)):(this.parentNode=null,this.parentIsWindow=!0,e.width=window.innerWidth,e.height=window.innerHeight);var f=0,g=0;"number"==typeof a?f=a:(this.parentScaleFactor.x=parseInt(a,10)/100,f=e.width*this.parentScaleFactor.x),"number"==typeof c?g=c:(this.parentScaleFactor.y=parseInt(c,10)/100,g=e.height*this.parentScaleFactor.y),this.grid=new b.FlexGrid(this,f,g),this.updateDimensions(f,g,!1)},boot:function(){this.fullScreenTarget=this.game.canvas;var a=this;this._checkOrientation=function(b){return a.checkOrientation(b)},this._checkResize=function(b){return a.checkResize(b)},this._fullScreenChange=function(b){return a.fullScreenChange(b)},window.addEventListener("orientationchange",this._checkOrientation,!1),window.addEventListener("resize",this._checkResize,!1),this.game.device.cocoonJS||(document.addEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.addEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.addEventListener("fullscreenchange",this._fullScreenChange,!1)),this.updateDimensions(this.width,this.height,!0),b.Canvas.getOffset(this.game.canvas,this.offset),this.bounds.setTo(this.offset.x,this.offset.y,this.width,this.height)},setResizeCallback:function(a,b){this.onResize=a,this.onResizeContext=b},setMinMax:function(a,b,c,d){this.minWidth=a,this.minHeight=b,"undefined"!=typeof c&&(this.maxWidth=c),"undefined"!=typeof d&&(this.maxHeight=d)},preUpdate:function(){this.game.time.nowwindow.innerHeight||this.forcePortrait&&window.innerHeight>window.innerWidth)&&(this.incorrectOrientation=!1,this.leaveIncorrectOrientation.dispatch(),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh()):(this.forceLandscape&&window.innerWidthwindow.outerHeight?90:0,c&&this.isPortrait?(this.enterPortrait.dispatch(this.orientation,!1,!0),this.forceLandscape?this.enterIncorrectOrientation.dispatch():this.forcePortrait&&this.leaveIncorrectOrientation.dispatch()):!c&&this.isLandscape&&(this.enterLandscape.dispatch(this.orientation,!0,!1),this.forceLandscape?this.leaveIncorrectOrientation.dispatch():this.forcePortrait&&this.enterIncorrectOrientation.dispatch()),this._scaleMode===b.ScaleManager.RESIZE&&this.parentIsWindow?this.updateDimensions(window.innerWidth,window.innerHeight,!0):(this._scaleMode===b.ScaleManager.EXACT_FIT||this._scaleMode===b.ScaleManager.SHOW_ALL)&&(this.refresh(),this.onResize&&this.onResize.call(this.onResizeContext,this.width,this.height)),this.checkOrientationState()},refresh:function(){if(this.scaleMode!==b.ScaleManager.RESIZE&&(this.game.device.iPad||this.game.device.webApp||this.game.device.desktop||(this.game.device.android&&!this.game.device.chrome?window.scrollTo(0,1):window.scrollTo(0,0)),null===this._check&&this.maxIterations>0)){this._iterations=this.maxIterations;var a=this;this._check=window.setInterval(function(){return a.setScreenSize()},10),this.setScreenSize()}},setScreenSize:function(a){this.scaleMode!==b.ScaleManager.RESIZE&&("undefined"==typeof a&&(a=!1),this.game.device.iPad||this.game.device.webApp||this.game.device.desktop||(this.game.device.android&&!this.game.device.chrome?window.scrollTo(0,1):window.scrollTo(0,0)),this._iterations--,(a||this._iterations<0)&&(document.documentElement.style.minHeight=window.innerHeight+"px",this.incorrectOrientation?this.setMaximum():this.isFullScreen?this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?this.setExactFit():this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&this.setShowAll():this.scaleMode===b.ScaleManager.EXACT_FIT?this.setExactFit():this.scaleMode===b.ScaleManager.SHOW_ALL&&this.setShowAll(),this.setSize(),clearInterval(this._check),this._check=null))},setSize:function(){this.incorrectOrientation||(this.maxWidth&&this.width>this.maxWidth&&(this.width=this.maxWidth),this.maxHeight&&this.height>this.maxHeight&&(this.height=this.maxHeight),this.minWidth&&this.widththis.maxWidth?this.maxWidth:a,this.height=this.maxHeight&&b>this.maxHeight?this.maxHeight:b},startFullScreen:function(a){!this.isFullScreen&&this.game.device.fullscreen&&("undefined"!=typeof a&&this.game.renderType===b.CANVAS&&(this.game.stage.smoothed=a),this._width=this.width,this._height=this.height,this.game.device.fullscreenKeyboard?this.fullScreenTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT):this.fullScreenTarget[this.game.device.requestFullscreen]())},stopFullScreen:function(){document[this.game.device.cancelFullscreen]()},fullScreenChange:function(a){this.event=a,this.isFullScreen?(this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?(this.fullScreenTarget.style.width="100%",this.fullScreenTarget.style.height="100%",this.width=window.outerWidth,this.height=window.outerHeight,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.checkResize()):this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&(this.setShowAll(),this.refresh()),this.enterFullScreen.dispatch(this.width,this.height)):(this.fullScreenTarget.style.width=this.game.width+"px",this.fullScreenTarget.style.height=this.game.height+"px",this.width=this._width,this.height=this._height,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.leaveFullScreen.dispatch(this.width,this.height))},destroy:function(){window.removeEventListener("orientationchange",this._checkOrientation,!1),window.removeEventListener("resize",this._checkResize,!1),this.game.device.cocoonJS||(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1))}},b.ScaleManager.prototype.constructor=b.ScaleManager,Object.defineProperty(b.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){a!==this._scaleMode&&(this._scaleMode=a)}}),Object.defineProperty(b.ScaleManager.prototype,"isFullScreen",{get:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement}}),Object.defineProperty(b.ScaleManager.prototype,"isPortrait",{get:function(){return 0===this.orientation||180===this.orientation}}),Object.defineProperty(b.ScaleManager.prototype,"isLandscape",{get:function(){return 90===this.orientation||-90===this.orientation}}),b.Game=function(a,c,d,e,f,g,h,i){this.id=b.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.transparent=!1,this.antialias=!0,this.preserveDrawingBuffer=!1,this.renderer=null,this.renderType=b.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.rnd=null,this.device=null,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,this._width=800,this._height=600,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):(this.config={enableDebug:!0},"undefined"!=typeof a&&(this._width=a),"undefined"!=typeof c&&(this._height=c),"undefined"!=typeof d&&(this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new b.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new b.StateManager(this,f));var j=this;return this._onBoot=function(){return j.boot()},"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(this._onBoot,0):"undefined"!=typeof window.cordova?document.addEventListener("deviceready",this._onBoot,!1):(document.addEventListener("DOMContentLoaded",this._onBoot,!1),window.addEventListener("load",this._onBoot,!1)),this},b.Game.prototype={parseConfig:function(a){this.config=a,"undefined"==typeof a.enableDebug&&(this.config.enableDebug=!0),a.width&&(this._width=a.width),a.height&&(this._height=a.height),a.renderer&&(this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.preserveDrawingBuffer&&(this.preserveDrawingBuffer=a.preserveDrawingBuffer),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var c=[(Date.now()*Math.random()).toString()];a.seed&&(c=a.seed),this.rnd=new b.RandomDataGenerator(c);var d=null;a.state&&(d=a.state),this.state=new b.StateManager(this,d)},boot:function(){this.isBooted||(document.body?(document.removeEventListener("DOMContentLoaded",this._onBoot),window.removeEventListener("load",this._onBoot),this.onPause=new b.Signal,this.onResume=new b.Signal,this.onBlur=new b.Signal,this.onFocus=new b.Signal,this.isBooted=!0,this.device=new b.Device(this),this.math=b.Math,this.scale=new b.ScaleManager(this,this._width,this._height),this.stage=new b.Stage(this),this.setUpRenderer(),this.device.checkFullScreenSupport(),this.world=new b.World(this),this.add=new b.GameObjectFactory(this),this.make=new b.GameObjectCreator(this),this.cache=new b.Cache(this),this.load=new b.Loader(this),this.time=new b.Time(this),this.tweens=new b.TweenManager(this),this.input=new b.Input(this),this.sound=new b.SoundManager(this),this.physics=new b.Physics(this,this.physicsConfig),this.particles=new b.Particles(this),this.plugins=new b.PluginManager(this),this.net=new b.Net(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.scale.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.config.enableDebug&&(this.debug=new b.Utils.Debug(this),this.debug.boot()),this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new b.RequestAnimationFrame(this,this.config.forceSetTimeOut):new b.RequestAnimationFrame(this,!1),this.raf.start()):window.setTimeout(this._onBoot,20))},showDebugHeader:function(){var a=b.VERSION,c="Canvas",d="HTML Audio",e=1;if(this.renderType===b.WEBGL?(c="WebGL",e++):this.renderType==b.HEADLESS&&(c="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+c+" | "+d+" %c %c http://phaser.io %c %c ♥%c♥%c♥ ","background: #7a66a3","background: #625186","color: #ffffff; background: #43375b;","background: #625186","background: #ccb9f2","background: #625186"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+c+" | "+d+" | http://phaser.io")},setUpRenderer:function(){if(this.canvas=this.config.canvasID?b.Canvas.create(this.width,this.height,this.config.canvasID):b.Canvas.create(this.width,this.height),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===b.CANVAS?!0:!1),this.renderType===b.HEADLESS||this.renderType===b.CANVAS||this.renderType===b.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===b.AUTO&&(this.renderType=b.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:1,clearBeforeRender:!0}),this.context=this.renderer.context}else this.renderType=b.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:1,antialias:this.antialias,preserveDrawingBuffer:this.preserveDrawingBuffer}),this.context=null;this.renderType!==b.HEADLESS&&(this.stage.smoothed=this.antialias,b.Canvas.addToDOM(this.canvas,this.parent,!1),b.Canvas.setTouchAction(this.canvas))},update:function(a){this.time.update(a),this._paused||this.pendingStep?(this.state.pauseUpdate(),this.config.enableDebug&&this.debug.preUpdate()):(this.stepping&&(this.pendingStep=!0),this.scale.preUpdate(),this.config.enableDebug&&this.debug.preUpdate(),this.physics.preUpdate(),this.state.preUpdate(),this.plugins.preUpdate(),this.stage.preUpdate(),this.state.update(),this.stage.update(),this.tweens.update(),this.sound.update(),this.input.update(),this.physics.update(),this.particles.update(),this.plugins.update(),this.stage.postUpdate(),this.plugins.postUpdate()),this.renderType!=b.HEADLESS&&(this.state.preRender(),this.renderer.render(this.stage),this.plugins.render(),this.state.render(),this.plugins.postRender(),this.device.cocoonJS&&this.renderType===b.CANVAS&&1===this.stage.currentRenderOrderID&&this.context.fillRect(0,0,0,0))},enableStep:function(){this.stepping=!0,this.pendingStep=!1,this.stepCount=0},disableStep:function(){this.stepping=!1,this.pendingStep=!1},step:function(){this.pendingStep=!1,this.stepCount++},destroy:function(){this.raf.stop(),this.state.destroy(),this.sound.destroy(),this.scale.destroy(),this.stage.destroy(),this.input.destroy(),this.physics.destroy(),this.state=null,this.cache=null,this.input=null,this.load=null,this.sound=null,this.stage=null,this.time=null,this.world=null,this.isBooted=!1,b.Canvas.removeFromDOM(this.canvas)},gamePaused:function(a){this._paused||(this._paused=!0,this.time.gamePaused(),this.sound.setMute(),this.onPause.dispatch(a))},gameResumed:function(a){this._paused&&!this._codePaused&&(this._paused=!1,this.time.gameResumed(),this.input.reset(),this.sound.unsetMute(),this.onResume.dispatch(a))},focusLoss:function(a){this.onBlur.dispatch(a),this.stage.disableVisibilityChange||this.gamePaused(a)},focusGain:function(a){this.onFocus.dispatch(a),this.stage.disableVisibilityChange||this.gameResumed(a)}},b.Game.prototype.constructor=b.Game,Object.defineProperty(b.Game.prototype,"paused",{get:function(){return this._paused},set:function(a){a===!0?(this._paused===!1&&(this._paused=!0,this.sound.setMute(),this.time.gamePaused(),this.onPause.dispatch(this)),this._codePaused=!0):(this._paused&&(this._paused=!1,this.input.reset(),this.sound.unsetMute(),this.time.gameResumed(),this.onResume.dispatch(this)),this._codePaused=!1)}}),b.Input=function(a){this.game=a,this.hitCanvas=null,this.hitContext=null,this.moveCallbacks=[],this.moveCallback=null,this.moveCallbackContext=this,this.pollRate=0,this.disabled=!1,this.multiInputOverride=b.Input.MOUSE_TOUCH_COMBINE,this.position=null,this.speed=null,this.circle=null,this.scale=null,this.maxPointers=10,this.currentPointers=0,this.tapRate=200,this.doubleTapRate=300,this.holdRate=2e3,this.justPressedRate=200,this.justReleasedRate=200,this.recordPointerHistory=!1,this.recordRate=100,this.recordLimit=100,this.pointer1=null,this.pointer2=null,this.pointer3=null,this.pointer4=null,this.pointer5=null,this.pointer6=null,this.pointer7=null,this.pointer8=null,this.pointer9=null,this.pointer10=null,this.activePointer=null,this.mousePointer=null,this.mouse=null,this.keyboard=null,this.touch=null,this.mspointer=null,this.gamepad=null,this.resetLocked=!1,this.onDown=null,this.onUp=null,this.onTap=null,this.onHold=null,this.minPriorityID=0,this.interactiveItems=new b.ArrayList,this._localPoint=new b.Point,this._pollCounter=0,this._oldPosition=null,this._x=0,this._y=0},b.Input.MOUSE_OVERRIDES_TOUCH=0,b.Input.TOUCH_OVERRIDES_MOUSE=1,b.Input.MOUSE_TOUCH_COMBINE=2,b.Input.prototype={boot:function(){this.mousePointer=new b.Pointer(this.game,0),this.pointer1=new b.Pointer(this.game,1),this.pointer2=new b.Pointer(this.game,2),this.mouse=new b.Mouse(this.game),this.keyboard=new b.Keyboard(this.game),this.touch=new b.Touch(this.game),this.mspointer=new b.MSPointer(this.game),this.gamepad=new b.Gamepad(this.game),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.scale=new b.Point(1,1),this.speed=new b.Point,this.position=new b.Point,this._oldPosition=new b.Point,this.circle=new b.Circle(0,0,44),this.activePointer=this.mousePointer,this.currentPointers=0,this.hitCanvas=document.createElement("canvas"),this.hitCanvas.width=1,this.hitCanvas.height=1,this.hitContext=this.hitCanvas.getContext("2d"),this.mouse.start(),this.keyboard.start(),this.touch.start(),this.mspointer.start(),this.mousePointer.active=!0},destroy:function(){this.mouse.stop(),this.keyboard.stop(),this.touch.stop(),this.mspointer.stop(),this.gamepad.stop(),this.moveCallbacks=[]},addMoveCallback:function(a,b){return this.moveCallbacks.push({callback:a,context:b})-1},deleteMoveCallback:function(a){this.moveCallbacks[a]&&this.moveCallbacks.splice(a,1)},addPointer:function(){for(var a=0,c=10;c>0;c--)null===this["pointer"+c]&&(a=c);return 0===a?(console.warn("You can only have 10 Pointer objects"),null):(this["pointer"+a]=new b.Pointer(this.game,a),this["pointer"+a])},update:function(){return this.keyboard.update(),this.pollRate>0&&this._pollCounter=c;c++)this["pointer"+c]&&this["pointer"+c].reset();this.currentPointers=0,"none"!==this.game.canvas.style.cursor&&(this.game.canvas.style.cursor="inherit"),a&&(this.onDown.dispose(),this.onUp.dispose(),this.onTap.dispose(),this.onHold.dispose(),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.moveCallbacks=[]),this._pollCounter=0}},resetSpeed:function(a,b){this._oldPosition.setTo(a,b),this.speed.setTo(0,0)},startPointer:function(a){if(this.maxPointers<10&&this.totalActivePointers==this.maxPointers)return null;if(this.pointer1.active===!1)return this.pointer1.start(a);if(this.pointer2.active===!1)return this.pointer2.start(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active===!1)return this["pointer"+b].start(a);return null},updatePointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.move(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.move(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].move(a);return null},stopPointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.stop(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.stop(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].stop(a);return null},getPointer:function(a){if(a=a||!1,this.pointer1.active==a)return this.pointer1;if(this.pointer2.active==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active==a)return this["pointer"+b];return null},getPointerFromIdentifier:function(a){if(this.pointer1.identifier===a)return this.pointer1;if(this.pointer2.identifier===a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].identifier===a)return this["pointer"+b];return null},getPointerFromId:function(a){if(this.pointer1.pointerId===a)return this.pointer1;if(this.pointer2.pointerId===a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].pointerId===a)return this["pointer"+b];return null},getLocalPosition:function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.worldTransform,f=1/(e.a*e.d+e.c*-e.b);return d.setTo(e.d*f*c.x+-e.c*f*c.y+(e.ty*e.c-e.tx*e.d)*f,e.a*f*c.y+-e.b*f*c.x+(-e.ty*e.a+e.tx*e.b)*f)},hitTest:function(a,c,d){if(!a.worldVisible)return!1;if(this.getLocalPosition(a,c,this._localPoint),d.copyFrom(this._localPoint),a.hitArea&&a.hitArea.contains)return a.hitArea.contains(this._localPoint.x,this._localPoint.y);if(a instanceof PIXI.Sprite){var e=a.texture.frame.width,f=a.texture.frame.height,g=-e*a.anchor.x;if(this._localPoint.x>=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],c,d))return!0;return!1}},b.Input.prototype.constructor=b.Input,Object.defineProperty(b.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounter=a;a++)this["pointer"+a]&&this["pointer"+a].active&&this.currentPointers++;return this.currentPointers}}),Object.defineProperty(b.Input.prototype,"worldX",{get:function(){return this.game.camera.view.x+this.x}}),Object.defineProperty(b.Input.prototype,"worldY",{get:function(){return this.game.camera.view.y+this.y}}),b.Key=function(a,c){this.game=a,this.enabled=!0,this.event=null,this.isDown=!1,this.isUp=!0,this.altKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.timeDown=0,this.duration=0,this.timeUp=-2500,this.repeats=0,this.keyCode=c,this.onDown=new b.Signal,this.onHoldCallback=null,this.onHoldContext=null,this.onUp=new b.Signal},b.Key.prototype={update:function(){this.enabled&&this.isDown&&(this.duration=this.game.time.now-this.timeDown,this.repeats++,this.onHoldCallback&&this.onHoldCallback.call(this.onHoldContext,this))},processKeyDown:function(a){this.enabled&&(this.event=a,this.isDown||(this.altKey=a.altKey,this.ctrlKey=a.ctrlKey,this.shiftKey=a.shiftKey,this.isDown=!0,this.isUp=!1,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0,this.onDown.dispatch(this)))},processKeyUp:function(a){this.enabled&&(this.event=a,this.isUp||(this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.onUp.dispatch(this)))},reset:function(a){"undefined"==typeof a&&(a=!0),this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=0,this.enabled=!0,a&&(this.onDown.removeAll(),this.onUp.removeAll(),this.onHoldCallback=null,this.onHoldContext=null)},justPressed:function(a){return"undefined"==typeof a&&(a=50),this.isDown&&this.duration0&&this.processInteractiveObjects(!0),this.dirty=!1),this._holdSent===!1&&this.duration>=this.game.input.holdRate&&((this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.now>=this._nextDrop&&(this._nextDrop=this.game.time.now+this.game.input.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>this.game.input.recordLimit&&this._history.shift()))},move:function(a,c){if(!this.game.input.pollLocked){if("undefined"==typeof c&&(c=!1),"undefined"!=typeof a.button&&(this.button=a.button),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&this.game.input.mouse.locked&&!c&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*this.game.input.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*this.game.input.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(this.game.input.multiInputOverride===b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.activePointer=this,this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.game.input.x,this.game.input.y),this.game.input.circle.x=this.game.input.x,this.game.input.circle.y=this.game.input.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var d=this.game.input.moveCallbacks.length;d--;)this.game.input.moveCallbacks[d].callback.call(this.game.input.moveCallbacks[d].context,this,this.x,this.y,c);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):this.game.input.interactiveItems.total>0&&this.processInteractiveObjects(c),this}},processInteractiveObjects:function(a){this.game.input.interactiveItems.setAll("checked",!1),this._highestRenderOrderID=Number.MAX_SAFE_INTEGER,this._highestRenderObject=null,this._highestInputPriorityID=-1;var b=this.game.input.interactiveItems.first;do b&&b.validForInput(this._highestInputPriorityID,this._highestRenderOrderID,!1)&&(b.checked=!0,(a&&b.checkPointerDown(this,!0)||!a&&b.checkPointerOver(this,!0))&&(this._highestRenderOrderID=b.sprite._cache[3],this._highestInputPriorityID=b.priorityID,this._highestRenderObject=b)),b=this.game.input.interactiveItems.next;while(null!==b);var b=this.game.input.interactiveItems.first;do b&&!b.checked&&b.validForInput(this._highestInputPriorityID,this._highestRenderOrderID,!0)&&(a&&b.checkPointerDown(this,!1)||!a&&b.checkPointerOver(this,!1))&&(this._highestRenderOrderID=b.sprite._cache[3],this._highestInputPriorityID=b.priorityID,this._highestRenderObject=b),b=this.game.input.interactiveItems.next;while(null!==b);return null===this._highestRenderObject?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=this._highestRenderObject,this._highestRenderObject._pointerOverHandler(this)):this.targetObject===this._highestRenderObject?this._highestRenderObject.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=this._highestRenderObject,this.targetObject._pointerOverHandler(this)),null!==this.targetObject},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){return this._stateReset?void a.preventDefault():(this.timeUp=this.game.time.now,(this.game.input.multiInputOverride===b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.onUp.dispatch(this,a),this.duration>=0&&this.duration<=this.game.input.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=!1,this.isDown=!1,this.isUp=!0,this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.callAll("_releasedHandler",this),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.now},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isMouse===!1&&(this.active=!1),this.pointerId=null,this.identifier=null,this.dirty=!1,this.isDown=!1,this.isUp=!0,this.totalTouches=0,this._holdSent=!1,this._history.length=0,this._stateReset=!0,this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null},resetMovement:function(){this.movementX=0,this.movementY=0}},b.Pointer.prototype.constructor=b.Pointer,Object.defineProperty(b.Pointer.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.now-this.timeDown}}),Object.defineProperty(b.Pointer.prototype,"worldX",{get:function(){return this.game.world.camera.x+this.x}}),Object.defineProperty(b.Pointer.prototype,"worldY",{get:function(){return this.game.world.camera.y+this.y}}),b.Touch=function(a){this.game=a,this.disabled=!1,this.callbackContext=this.game,this.touchStartCallback=null,this.touchMoveCallback=null,this.touchEndCallback=null,this.touchEnterCallback=null,this.touchLeaveCallback=null,this.touchCancelCallback=null,this.preventDefault=!0,this.event=null,this._onTouchStart=null,this._onTouchMove=null,this._onTouchEnd=null,this._onTouchEnter=null,this._onTouchLeave=null,this._onTouchCancel=null,this._onTouchMove=null},b.Touch.prototype={start:function(){if(null===this._onTouchStart){var a=this;this.game.device.touch&&(this._onTouchStart=function(b){return a.onTouchStart(b)},this._onTouchMove=function(b){return a.onTouchMove(b)},this._onTouchEnd=function(b){return a.onTouchEnd(b)},this._onTouchEnter=function(b){return a.onTouchEnter(b)},this._onTouchLeave=function(b){return a.onTouchLeave(b)},this._onTouchCancel=function(b){return a.onTouchCancel(b)},this.game.canvas.addEventListener("touchstart",this._onTouchStart,!1),this.game.canvas.addEventListener("touchmove",this._onTouchMove,!1),this.game.canvas.addEventListener("touchend",this._onTouchEnd,!1),this.game.canvas.addEventListener("touchcancel",this._onTouchCancel,!1),this.game.device.cocoonJS||(this.game.canvas.addEventListener("touchenter",this._onTouchEnter,!1),this.game.canvas.addEventListener("touchleave",this._onTouchLeave,!1)))}},consumeDocumentTouches:function(){this._documentTouchMove=function(a){a.preventDefault()},document.addEventListener("touchmove",this._documentTouchMove,!1)},onTouchStart:function(a){if(this.event=a,this.touchStartCallback&&this.touchStartCallback.call(this.callbackContext,a),!this.game.input.disabled&&!this.disabled){this.preventDefault&&a.preventDefault();for(var b=0;b0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var c=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.game.time.now},justReleased:function(a){return a=a||250,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.pad=null,this.game=null}},b.GamepadButton.prototype.constructor=b.GamepadButton,b.InputHandler=function(a){this.sprite=a,this.game=a.game,this.enabled=!1,this.checked=!1,this.priorityID=0,this.useHandCursor=!1,this._setHandCursor=!1,this.isDragged=!1,this.allowHorizontalDrag=!0,this.allowVerticalDrag=!0,this.bringToTop=!1,this.snapOffset=null,this.snapOnDrag=!1,this.snapOnRelease=!1,this.snapX=0,this.snapY=0,this.snapOffsetX=0,this.snapOffsetY=0,this.pixelPerfectOver=!1,this.pixelPerfectClick=!1,this.pixelPerfectAlpha=255,this.draggable=!1,this.boundsRect=null,this.boundsSprite=null,this.consumePointerEvent=!1,this.scaleLayer=!1,this._dragPhase=!1,this._wasEnabled=!1,this._tempPoint=new b.Point,this._pointerData=[],this._pointerData.push({id:0,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1})},b.InputHandler.prototype={start:function(a,c){if(a=a||0,"undefined"==typeof c&&(c=!1),this.enabled===!1){this.game.input.interactiveItems.add(this),this.useHandCursor=c,this.priorityID=a;for(var d=0;10>d;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new b.Point,this.enabled=!0,this._wasEnabled=!0,this.sprite.events&&null===this.sprite.events.onInputOver&&(this.sprite.events.onInputOver=new b.Signal,this.sprite.events.onInputOut=new b.Signal,this.sprite.events.onInputDown=new b.Signal,this.sprite.events.onInputUp=new b.Signal,this.sprite.events.onDragStart=new b.Signal,this.sprite.events.onDragStop=new b.Signal)}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1; for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return"undefined"==typeof c&&(c=!0),0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite._cache[3]b;b++)if(this._pointerData[b].isOver)return!0}return!1},pointerOut:function(a){if(this.enabled){if("undefined"!=typeof a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0}return!1},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?("undefined"==typeof b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?("undefined"==typeof b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){null!==this.sprite&&(this._pointerData[a.id].isOver===!1||a.dirty)&&(this._pointerData[a.id].isOver=!0,this._pointerData[a.id].isOut=!1,this._pointerData[a.id].timeOver=this.game.time.now,this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),this.sprite&&this.sprite.events&&this.sprite.events.onInputOver.dispatch(this.sprite,a))},_pointerOutHandler:function(a){null!==this.sprite&&(this._pointerData[a.id].isOver=!1,this._pointerData[a.id].isOut=!0,this._pointerData[a.id].timeOut=this.game.time.now,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut.dispatch(this.sprite,a))},_touchedHandler:function(a){if(null!==this.sprite){if(this._pointerData[a.id].isDown===!1&&this._pointerData[a.id].isOver===!0){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;this._pointerData[a.id].isDown=!0,this._pointerData[a.id].isUp=!1,this._pointerData[a.id].timeDown=this.game.time.now,this.sprite&&this.sprite.events&&this.sprite.events.onInputDown.dispatch(this.sprite,a),a.dirty=!0,this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){null!==this.sprite&&this._pointerData[a.id].isDown&&a.isUp&&(this._pointerData[a.id].isDown=!1,this._pointerData[a.id].isUp=!0,this._pointerData[a.id].timeUp=this.game.time.now,this._pointerData[a.id].downDuration=this._pointerData[a.id].timeUp-this._pointerData[a.id].timeDown,this.checkPointerOver(a)?this.sprite&&this.sprite.events&&this.sprite.events.onInputUp.dispatch(this.sprite,a,!0):(this.sprite&&this.sprite.events&&this.sprite.events.onInputUp.dispatch(this.sprite,a,!1),this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1)),a.dirty=!0,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a))},updateDrag:function(a){if(a.isUp)return this.stopDrag(a),!1;var b=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,c=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;return this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=b),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)):(this.allowHorizontalDrag&&(this.sprite.x=b),this.allowVerticalDrag&&(this.sprite.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1},startDrag:function(a){if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else{if(this.dragFromCenter){var b=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-b.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-b.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.sprite.events.onDragStart.dispatch(this.sprite,a)},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop.dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.xthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-this.sprite.width),this.sprite.ythis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-this.sprite.height))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.camerOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.camerOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.camerOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.camerOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.xthis.boundsSprite.x+this.boundsSprite.width&&(this.sprite.x=this.boundsSprite.x+this.boundsSprite.width-this.sprite.width),this.sprite.ythis.boundsSprite.y+this.boundsSprite.height&&(this.sprite.y=this.boundsSprite.y+this.boundsSprite.height-this.sprite.height))}},b.InputHandler.prototype.constructor=b.InputHandler,b.Events=function(a){this.parent=a,this.onAddedToGroup=new b.Signal,this.onRemovedFromGroup=new b.Signal,this.onDestroy=new b.Signal,this.onKilled=new b.Signal,this.onRevived=new b.Signal,this.onOutOfBounds=new b.Signal,this.onEnterBounds=new b.Signal,this.onInputOver=null,this.onInputOut=null,this.onInputDown=null,this.onInputUp=null,this.onDragStart=null,this.onDragStop=null,this.onAnimationStart=null,this.onAnimationComplete=null,this.onAnimationLoop=null},b.Events.prototype={destroy:function(){this.parent=null,this.onDestroy.dispose(),this.onAddedToGroup.dispose(),this.onRemovedFromGroup.dispose(),this.onKilled.dispose(),this.onRevived.dispose(),this.onOutOfBounds.dispose(),this.onInputOver&&(this.onInputOver.dispose(),this.onInputOut.dispose(),this.onInputDown.dispose(),this.onInputUp.dispose(),this.onDragStart.dispose(),this.onDragStop.dispose()),this.onAnimationStart&&(this.onAnimationStart.dispose(),this.onAnimationComplete.dispose(),this.onAnimationLoop.dispose())}},b.Events.prototype.constructor=b.Events,b.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},b.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Image(this.game,a,c,d,e))},sprite:function(a,b,c,d,e){return"undefined"==typeof e&&(e=this.world),e.create(a,b,c,d)},tween:function(a){return this.game.tweens.create(a)},group:function(a,c,d,e,f){return new b.Group(this.game,a,c,d,e,f)},physicsGroup:function(a,c,d,e){return new b.Group(this.game,c,d,e,!0,a)},spriteBatch:function(a,c,d){return"undefined"==typeof a&&(a=null),"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,c,d,e,f,g,h){return"undefined"==typeof h&&(h=this.world),h.add(new b.TileSprite(this.game,a,c,d,e,f,g))},rope:function(a,c,d,e,f,g){return"undefined"==typeof g&&(g=this.world),g.add(new b.Rope(this.game,a,c,d,e,f))},text:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Text(this.game,a,c,d,e))},button:function(a,c,d,e,f,g,h,i,j,k){return"undefined"==typeof k&&(k=this.world),k.add(new b.Button(this.game,a,c,d,e,f,g,h,i,j))},graphics:function(a,c,d){return"undefined"==typeof d&&(d=this.world),d.add(new b.Graphics(this.game,a,c))},emitter:function(a,c,d){return this.game.particles.add(new b.Particles.Arcade.Emitter(this.game,a,c,d))},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f,g){return"undefined"==typeof g&&(g=this.world),g.add(new b.BitmapText(this.game,a,c,d,e,f))},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a},plugin:function(a){return this.game.plugins.add(a)}},b.GameObjectFactory.prototype.constructor=b.GameObjectFactory,b.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},b.GameObjectCreator.prototype={image:function(a,c,d,e){return new b.Image(this.game,a,c,d,e)},sprite:function(a,c,d,e){return new b.Sprite(this.game,a,c,d,e)},tween:function(a){return new b.Tween(a,this.game)},group:function(a,c,d,e,f){return new b.Group(this.game,null,c,d,e,f)},spriteBatch:function(a,c,d){return"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,c,d,e,f,g){return new b.TileSprite(this.game,a,c,d,e,f,g)},rope:function(a,c,d,e,f){return new b.Rope(this.game,a,c,d,e,f)},text:function(a,c,d,e){return new b.Text(this.game,a,c,d,e)},button:function(a,c,d,e,f,g,h,i,j){return new b.Button(this.game,a,c,d,e,f,g,h,i,j)},graphics:function(a,c){return new b.Graphics(this.game,a,c)},emitter:function(a,c,d){return new b.Particles.Arcade.Emitter(this.game,a,c,d)},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f){return new b.BitmapText(this.game,a,c,d,e,f)},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a}},b.GameObjectCreator.prototype.constructor=b.GameObjectCreator,b.BitmapData=function(a,c,d,e){"undefined"==typeof d&&(d=256),"undefined"==typeof e&&(e=256),this.game=a,this.key=c,this.width=d,this.height=e,this.canvas=b.Canvas.create(d,e,"",!0),this.context=this.canvas.getContext("2d"),this.ctx=this.context,this.imageData=this.context.getImageData(0,0,d,e),this.data=this.imageData.data,this.pixels=null,this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data,this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,d,e,"bitmapData",a.rnd.uuid()),this.texture.frame=this.textureFrame,this.type=b.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new b.Point,this._size=new b.Point,this._scale=new b.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new b.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new b.Circle},b.BitmapData.prototype={add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)b.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(c,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){"undefined"==typeof c&&(c=0),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=this.width),"undefined"==typeof f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,c,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=b.Color.packPixel(a,c,d,e);void 0!==j&&j instanceof b.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,c,d,e){if(("undefined"==typeof a||null===a)&&(a=!1),("undefined"==typeof c||null===c)&&(c=!1),("undefined"==typeof d||null===d)&&(d=!1),a||c||d){"undefined"==typeof e&&(e=new b.Rectangle(0,0,this.width,this.height));for(var f=b.Color.createColor(),g=e.y;g=0&&a<=this.width&&c>=0&&c<=this.height&&(this.pixels[c*this.width+a]=b.Device.LITTLE_ENDIAN?g<<24|f<<16|e<<8|d:d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,c,d){d||(d=b.Color.createColor());var e=~~(a+c*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,c,d,e,f){return b.Color.unpackPixel(this.getPixel32(a,c),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){"undefined"==typeof a&&(a=0);var c=b.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do b.Color.unpackPixel(this.getPixel32(d,e),c),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===c.a&&!g);return c.x=d,c.y=e,c},getBounds:function(a){return"undefined"==typeof a&&(a=new b.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(("undefined"==typeof a||null===a)&&(a=this),this._image=a,a instanceof b.Sprite||a instanceof b.Image||a instanceof b.Text)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,this._image=a.texture.baseTexture.source,a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture);else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof b.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}return("undefined"==typeof c||null===c)&&(c=0),("undefined"==typeof d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),("undefined"==typeof g||null===g)&&(g=c),("undefined"==typeof h||null===h)&&(h=d),("undefined"==typeof i||null===i)&&(i=this._size.x),("undefined"==typeof j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),"undefined"==typeof q&&(q=null),"undefined"==typeof r&&(r=!1),this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y?void 0:(this._alpha.prev=this.context.globalAlpha,this.context.save(),this.context.globalAlpha=this._alpha.current,q&&(this.context.globalCompositeOperation=q),r&&(g|=0,h|=0),this.context.translate(g,h),this.context.scale(this._scale.x,this._scale.y),this.context.rotate(this._rotate),this.context.drawImage(this._image,this._pos.x+c,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),this.context.restore(),this.context.globalAlpha=this._alpha.prev,this.dirty=!0,this)},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},shadow:function(a,b,c,d){"undefined"==typeof a||null===a?this.context.shadowColor="rgba(0,0,0,0)":(this.context.shadowColor=a,this.context.shadowBlur=b||5,this.context.shadowOffsetX=c||10,this.context.shadowOffsetY=d||10)},alphaMask:function(a,b,c,d){return"undefined"==typeof d||null===d?this.draw(b).blendSourceAtop():this.draw(b,d.x,d.y,d.width,d.height).blendSourceAtop(),"undefined"==typeof c||null===c?this.draw(a).blendReset():this.draw(a,c.x,c.y,c.width,c.height).blendReset(),this},extract:function(a,b,c,d,e,f,g,h,i){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b),"undefined"==typeof h&&(h=c),"undefined"==typeof i&&(i=d),f&&a.resize(this.width,this.height),this.processPixelRGB(function(f,j,k){return f.r===b&&f.g===c&&f.b===d&&a.setPixel32(j,k,g,h,i,e,!1),!1},this),a.context.putImageData(a.imageData,0,0),a.dirty=!0,a},rect:function(a,b,c,d,e){return"undefined"!=typeof e&&(this.context.fillStyle=e),this.context.fillRect(a,b,c,d),this},circle:function(a,b,c,d){return"undefined"!=typeof d&&(this.context.fillStyle=d),this.context.beginPath(),this.context.arc(a,b,c,0,2*Math.PI,!1),this.context.closePath(),this.context.fill(),this},textureLine:function(a,c,d){if("undefined"==typeof d&&(d="repeat-x"),"string"!=typeof c||(c=this.game.cache.getImage(c))){var e=a.length;return"no-repeat"===d&&e>c.width&&(e=c.width),this.context.fillStyle=this.context.createPattern(c,d),this._circle=new b.Circle(a.start.x,a.start.y,c.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),this.context.save(),this.context.translate(this._pos.x,this._pos.y),this.context.rotate(a.angle),this.context.fillRect(0,0,e,c.height),this.context.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},blendReset:function(){return this.context.globalCompositeOperation="source-over",this},blendSourceOver:function(){return this.context.globalCompositeOperation="source-over",this},blendSourceIn:function(){return this.context.globalCompositeOperation="source-in",this},blendSourceOut:function(){return this.context.globalCompositeOperation="source-out",this},blendSourceAtop:function(){return this.context.globalCompositeOperation="source-atop",this},blendDestinationOver:function(){return this.context.globalCompositeOperation="destination-over",this},blendDestinationIn:function(){return this.context.globalCompositeOperation="destination-in",this},blendDestinationOut:function(){return this.context.globalCompositeOperation="destination-out",this},blendDestinationAtop:function(){return this.context.globalCompositeOperation="destination-atop",this},blendXor:function(){return this.context.globalCompositeOperation="xor",this},blendAdd:function(){return this.context.globalCompositeOperation="lighter",this},blendMultiply:function(){return this.context.globalCompositeOperation="multiply",this},blendScreen:function(){return this.context.globalCompositeOperation="screen",this},blendOverlay:function(){return this.context.globalCompositeOperation="overlay",this},blendDarken:function(){return this.context.globalCompositeOperation="darken",this},blendLighten:function(){return this.context.globalCompositeOperation="lighten",this},blendColorDodge:function(){return this.context.globalCompositeOperation="color-dodge",this},blendColorBurn:function(){return this.context.globalCompositeOperation="color-burn",this},blendHardLight:function(){return this.context.globalCompositeOperation="hard-light",this},blendSoftLight:function(){return this.context.globalCompositeOperation="soft-light",this},blendDifference:function(){return this.context.globalCompositeOperation="difference",this},blendExclusion:function(){return this.context.globalCompositeOperation="exclusion",this},blendHue:function(){return this.context.globalCompositeOperation="hue",this},blendSaturation:function(){return this.context.globalCompositeOperation="saturation",this},blendColor:function(){return this.context.globalCompositeOperation="color",this},blendLuminosity:function(){return this.context.globalCompositeOperation="luminosity",this}},Object.defineProperty(b.BitmapData.prototype,"smoothed",{get:function(){b.Canvas.getSmoothingEnabled(this.context)},set:function(a){b.Canvas.setSmoothingEnabled(this.context,a)}}),b.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b} },b.BitmapData.prototype.constructor=b.BitmapData,b.Sprite=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.name="",this.type=b.SPRITE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.position.set(c,d),this.world=new b.Point(c,d),this.autoCull=!1,this.input=null,this.body=null,this.alive=!0,this.health=1,this.lifespan=0,this.checkWorldBounds=!1,this.outOfBoundsKill=!1,this.debug=!1,this.cameraOffset=new b.Point,this.cropRect=null,this._cache=[0,0,0,0,1,0,1,0],this._crop=null,this._frame=null,this._bounds=new b.Rectangle,this.loadTexture(e,f)},b.Sprite.prototype=Object.create(PIXI.Sprite.prototype),b.Sprite.prototype.constructor=b.Sprite,b.Sprite.prototype.preUpdate=function(){if(1===this._cache[4]&&this.exists)return this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.body&&this.body.preUpdate(),this._cache[4]=0,!1;if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;if(this.lifespan>0&&(this.lifespan-=this.game.time.elapsed,this.lifespan<=0))return this.kill(),!1;if((this.autoCull||this.checkWorldBounds)&&this._bounds.copyFrom(this.getBounds()),this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.checkWorldBounds)if(1===this._cache[5]&&this.game.world.bounds.intersects(this._bounds))this._cache[5]=0,this.events.onEnterBounds.dispatch(this);else if(0===this._cache[5]&&!this.game.world.bounds.intersects(this._bounds)&&(this._cache[5]=1,this.events.onOutOfBounds.dispatch(this),this.outOfBoundsKill))return this.kill(),!1;this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),this.animations.update(),this.body&&this.body.preUpdate();for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Sprite.prototype.update=function(){},b.Sprite.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Sprite.prototype.loadTexture=function(a,c,d){c=c||0,(d||"undefined"==typeof d)&&this.animations.stop(),this.key=a;var e=!0,f=this.smoothed;a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?(this.setTexture(a.texture),this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA)&&(e=!this.animations.loadFrameData(this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA),c))):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),e=!this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty(),e&&(this._frame=b.Rectangle.clone(this.texture.frame)),f||(this.smoothed=!1)},b.Sprite.prototype.setFrame=function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture._updateUvs()},b.Sprite.prototype.resetFrame=function(){this._frame&&this.setFrame(this._frame)},b.Sprite.prototype.crop=function(a,c){"undefined"==typeof c&&(c=!1),a?(c&&null!==this.cropRect?this.cropRect.setTo(a.x,a.y,a.width,a.height):this.cropRect=c&&null===this.cropRect?new b.Rectangle(a.x,a.y,a.width,a.height):a,this.updateCrop()):(this._crop=null,this.cropRect=null,this.resetFrame())},b.Sprite.prototype.updateCrop=function(){if(this.cropRect){this._crop=b.Rectangle.clone(this.cropRect,this._crop),this._crop.x+=this._frame.x,this._crop.y+=this._frame.y;var a=Math.max(this._frame.x,this._crop.x),c=Math.max(this._frame.y,this._crop.y),d=Math.min(this._frame.right,this._crop.right)-a,e=Math.min(this._frame.bottom,this._crop.bottom)-c;this.texture.crop.x=a,this.texture.crop.y=c,this.texture.crop.width=d,this.texture.crop.height=e,this.texture.frame.width=Math.min(d,this.cropRect.width),this.texture.frame.height=Math.min(e,this.cropRect.height),this.texture.width=this.texture.frame.width,this.texture.height=this.texture.frame.height,this.texture._updateUvs()}},b.Sprite.prototype.revive=function(a){return"undefined"==typeof a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,this.health=a,this.events&&this.events.onRevived.dispatch(this),this},b.Sprite.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Sprite.prototype.destroy=function(a){if(null!==this.game&&1!==this._cache[8]){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.input&&this.input.destroy(),this.animations&&this.animations.destroy(),this.body&&this.body.destroy(),this.events&&this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this._crop&&(this._crop=null),this._frame&&(this._frame=null),this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Sprite.prototype.damage=function(a){return this.alive&&(this.health-=a,this.health<=0&&this.kill()),this},b.Sprite.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},b.Sprite.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},b.Sprite.prototype.play=function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0},b.Sprite.prototype.overlap=function(a){return b.Rectangle.intersects(this.getBounds(),a.getBounds())},Object.defineProperty(b.Sprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Sprite.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Sprite.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Sprite.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Sprite.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}}),Object.defineProperty(b.Sprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}),Object.defineProperty(b.Sprite.prototype,"renderOrderID",{get:function(){return this._cache[3]}}),Object.defineProperty(b.Sprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.Sprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&this.body.removeFromWorld(),this.visible=!1)}}),Object.defineProperty(b.Sprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.Sprite.prototype,"smoothed",{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}),Object.defineProperty(b.Sprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Sprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Sprite.prototype,"destroyPhase",{get:function(){return!!this._cache[8]}}),b.Image=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.exists=!0,this.name="",this.type=b.IMAGE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.position.set(c,d),this.world=new b.Point(c,d),this.alive=!0,this.autoCull=!1,this.input=null,this.debug=!1,this.cameraOffset=new b.Point,this.cropRect=null,this._cache=[0,0,0,0,1,0,1,0,0],this._crop=null,this._frame=null,this._bounds=new b.Rectangle,this.loadTexture(e,f)},b.Image.prototype=Object.create(PIXI.Sprite.prototype),b.Image.prototype.constructor=b.Image,b.Image.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;this.autoCull&&(this._bounds.copyFrom(this.getBounds()),this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Image.prototype.update=function(){},b.Image.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Image.prototype.loadTexture=function(a,c){c=c||0,this.key=a;var d=!0,e=this.smoothed;a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?(this.setTexture(a.texture),this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA)&&(d=!this.animations.loadFrameData(this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA),c))):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),d=!this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty(),d&&(this._frame=b.Rectangle.clone(this.texture.frame)),e||(this.smoothed=!1)},b.Image.prototype.setFrame=function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture._updateUvs()},b.Image.prototype.resetFrame=function(){this._frame&&this.setFrame(this._frame)},b.Image.prototype.crop=function(a,c){"undefined"==typeof c&&(c=!1),a?(c&&null!==this.cropRect?this.cropRect.setTo(a.x,a.y,a.width,a.height):this.cropRect=c&&null===this.cropRect?new b.Rectangle(a.x,a.y,a.width,a.height):a,this.updateCrop()):(this._crop=null,this.cropRect=null,this.resetFrame())},b.Image.prototype.updateCrop=function(){if(this.cropRect){this._crop=b.Rectangle.clone(this.cropRect,this._crop),this._crop.x+=this._frame.x,this._crop.y+=this._frame.y;var a=Math.max(this._frame.x,this._crop.x),c=Math.max(this._frame.y,this._crop.y),d=Math.min(this._frame.right,this._crop.right)-a,e=Math.min(this._frame.bottom,this._crop.bottom)-c;this.texture.crop.x=a,this.texture.crop.y=c,this.texture.crop.width=d,this.texture.crop.height=e,this.texture.frame.width=Math.min(d,this.cropRect.width),this.texture.frame.height=Math.min(e,this.cropRect.height),this.texture.width=this.texture.frame.width,this.texture.height=this.texture.frame.height,this.texture._updateUvs()}},b.Image.prototype.revive=function(){return this.alive=!0,this.exists=!0,this.visible=!0,this.events&&this.events.onRevived.dispatch(this),this},b.Image.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Image.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.events&&this.events.destroy(),this.input&&this.input.destroy(),this.animations&&this.animations.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Image.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this},b.Image.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},Object.defineProperty(b.Image.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Image.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Image.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Image.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Image.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"frame",{get:function(){return this._frame},set:function(a){if(a!==this.frame){var b=this.game.cache.getFrameData(this.key);b&&aa;a++)this.children[a].preUpdate();return!0},b.TileSprite.prototype.update=function(){},b.TileSprite.prototype.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=this.game.camera.view.x+this.cameraOffset.x,this.position.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.TileSprite.prototype.autoScroll=function(a,b){this._scroll.set(a,b)},b.TileSprite.prototype.stopScroll=function(){this._scroll.set(0,0)},b.TileSprite.prototype.loadTexture=function(a,c){c=c||0,this.key=a,a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?this.setTexture(a.texture):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty()},b.TileSprite.prototype.setFrame=function(a){this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.texture._updateUvs()},b.TileSprite.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.filters&&(this.filters=null),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.animations.destroy(),this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.alive=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.TileSprite.prototype.play=function(a,b,c,d){return this.animations.play(a,b,c,d)},b.TileSprite.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.tilePosition.x=0,this.tilePosition.y=0,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},Object.defineProperty(b.TileSprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.TileSprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){a!==this.animations.frame&&(this.animations.frame=a)}}),Object.defineProperty(b.TileSprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){a!==this.animations.frameName&&(this.animations.frameName=a)}}),Object.defineProperty(b.TileSprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.TileSprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&(this.body.safeRemove=!0),this.visible=!1)}}),Object.defineProperty(b.TileSprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.TileSprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.TileSprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.TileSprite.prototype,"destroyPhase",{get:function(){return!!this._cache[8]}}),b.Rope=function(a,c,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.name="",this.type=b.ROPE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,this._frame=0,this._frameName="",this._scroll=new b.Point,PIXI.Rope.call(this,e,this.points),this.position.set(c,d),this.input=null,this.world=new b.Point(c,d),this.autoCull=!1,this.checkWorldBounds=!1,this.cameraOffset=new b.Point,this.body=null,this._cache=[0,0,0,0,1,0,1,0,0],this.loadTexture(e,f)},b.Rope.prototype=Object.create(PIXI.Rope.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.preUpdate=function(){if(1===this._cache[4]&&this.exists)return this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.body&&this.body.preUpdate(),this._cache[4]=0,!1;if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;(this.autoCull||this.checkWorldBounds)&&this._bounds.copyFrom(this.getBounds()),this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.checkWorldBounds&&(1===this._cache[5]&&this.game.world.bounds.intersects(this._bounds)?(this._cache[5]=0,this.events.onEnterBounds.dispatch(this)):0!==this._cache[5]||this.game.world.bounds.intersects(this._bounds)||(this._cache[5]=1,this.events.onOutOfBounds.dispatch(this))),this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),this.animations.update(),0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.body&&this.body.preUpdate();for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},b.Rope.prototype.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=this.game.camera.view.x+this.cameraOffset.x,this.position.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Rope.prototype.loadTexture=function(a,c){c=c||0,this.key=a,a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?this.setTexture(a.texture):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key]))},b.Rope.prototype.setFrame=function(a){this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.texture._updateUvs()},b.Rope.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.filters&&(this.filters=null),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.animations.destroy(),this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Rope.prototype.play=function(a,b,c,d){return this.animations.play(a,b,c,d)},b.Rope.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.tilePosition.x=0,this.tilePosition.y=0,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},Object.defineProperty(b.Rope.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Rope.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){a!==this.animations.frame&&(this.animations.frame=a)}}),Object.defineProperty(b.Rope.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){a!==this.animations.frameName&&(this.animations.frameName=a)}}),Object.defineProperty(b.Rope.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.Rope.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&(this.body.safeRemove=!0),this.visible=!1)}}),Object.defineProperty(b.Rope.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.Rope.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Rope.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(b.Rope.prototype,"segments",{get:function(){for(var a,c,d,e,f,g,h,i,j=[],k=0;ka;a++)this.children[a].preUpdate();return!0},b.Text.prototype.update=function(){},b.Text.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Text.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.texture.destroy(!0),this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null);var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Text.prototype.setShadow=function(a,b,c,d){this.style.shadowOffsetX=a||0,this.style.shadowOffsetY=b||0,this.style.shadowColor=c||"rgba(0,0,0,0)",this.style.shadowBlur=d||0,this.dirty=!0},b.Text.prototype.setStyle=function(a){a=a||{},a.font=a.font||"bold 20pt Arial",a.fill=a.fill||"black",a.align=a.align||"left",a.stroke=a.stroke||"black",a.strokeThickness=a.strokeThickness||0,a.wordWrap=a.wordWrap||!1,a.wordWrapWidth=a.wordWrapWidth||100,a.shadowOffsetX=a.shadowOffsetX||0,a.shadowOffsetY=a.shadowOffsetY||0,a.shadowColor=a.shadowColor||"rgba(0,0,0,0)",a.shadowBlur=a.shadowBlur||0,this.style=a,this.dirty=!0},b.Text.prototype.updateText=function(){this.texture.baseTexture.resolution=this.resolution,this.context.font=this.style.font;var a=this.text;this.style.wordWrap&&(a=this.wordWrap(this.text));for(var b=a.split(/(?:\r\n|\r|\n)/),c=[],d=0,e=this.determineFontProperties(this.style.font),f=0;f0?this.updateLine(b[f],k,l):(this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(b[f],k,l),this.style.fill&&this.context.fillText(b[f],k,l));this.updateTexture()},b.Text.prototype.updateLine=function(a,b,c){for(var d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d0&&this.drawPolygon(d)}else this.drawPolygon(d)},b.Graphics.prototype.drawTriangles=function(a,c,d){"undefined"==typeof d&&(d=!1);var e,f=new b.Point,g=new b.Point,h=new b.Point,i=[];if(c)if(a[0]instanceof b.Point)for(e=0;e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.textureBuffer.clear(),this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},b.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d,PIXI.TextureCache[e[f].uuid].frame.x=e[f].x,PIXI.TextureCache[e[f].uuid].frame.y=e[f].y;this.buildRetroFontText()}},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(b.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c){a=a||256,b=b||256;var d=document.createElement("canvas");return"string"==typeof c&&""!==c&&(d.id=c),d.width=a,d.height=b,d.style.display="block",d},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkOS(),this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures()},b.Device.LITTLE_ENDIAN=!1,b.Device.prototype={_checkOS:function(){var a=navigator.userAgent; -/Playstation Vita/.test(a)?this.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?this.kindle=!0:/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1||this.chromeOS)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1)},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"opus"==a&&this.opus?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,c,d){a=+a||0;var e=typeof c;"number"!==e&&"string"!==e||!d||d[c]!==a||(c=d=null),d=null==d?1:+d||0,null===c?(c=a,a=0):c=+c||0;for(var f=-1,g=b.Math.max(b.Math.ceil((c-a)/(d||1)),0),h=new Array(g);++fc&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},limitValue:function(a,b,c){return b>a?b:a>c?c:a},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return"undefined"==typeof c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof b.Rectangle)var c=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var c=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?c=c.concat(this.nodes[d].retrieve(a)):(c=c.concat(this.nodes[0].retrieve(a)),c=c.concat(this.nodes[1].retrieve(a)),c=c.concat(this.nodes[2].retrieve(a)),c=c.concat(this.nodes[3].retrieve(a)))),c},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ac;)this._tweens[c].update(this.game.time.now)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Default,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1,g&&0===f&&(f=1);var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},from:function(a,b,c,d,e,f,g){var h={};for(var i in a)h[i]=this._object[i],this._object[i]=a[i];return this.to(h,b,c,d,e,f,g)},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):"string"==typeof l?l=k+parseFloat(l,10):"number"==typeof l&&(j[c]=k+(l-k)*i)}g.push(j),d+=f}var j={};for(c in this._valuesEnd)j[c]=this._valuesEnd[c];if(g.push(j),this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,a&&0===this._repeat&&(this._repeat=1),this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&(this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),!this.isRunning))return!1;if(1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._yoyo&&(this._reversed=!this._reversed),this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Easing.Default=b.Easing.Linear.None,b.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.timeCap=1/60*1e3,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;athis.timeCap&&(this.elapsed=this.timeCap),this.physicsElapsed=this.elapsed/1e3||1/60,this.deltaCap>0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.now,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.now,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.now;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(b.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(b.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a,b){if("undefined"==typeof a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,c,d,e,f){return c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null===this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.__tilePattern&&(this.sprite.__tilePattern=!1,this.tilingTexture=!1),this._anims[a]},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){"undefined"==typeof h&&(h=!1),this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onUpdate=null,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if("undefined"==typeof b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length&&(this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete()),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame)),!0):!1},next:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},previous:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose()},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(b.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new b.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new b.Frame(this.index,this.x,this.y,this.width,this.height,this.name,this.uuid);for(var c in this)this.hasOwnProperty(c)&&(a[c]=this[c]);return a},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new b.FrameData,c=0;c=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+c+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._packIndex=0,this.loadPack()):this.beginLoad())},beginLoad:function(){this.progress=0,this.progressFloat=0,this.hasLoaded=!1,this.isLoading=!0,this.onLoadStart.dispatch(this._fileList.length),this._fileList.length>0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.isLoading=!1,this.onLoadComplete.dispatch())},loadPack:function(){if(!this._packList[this._packIndex])return void console.warn("Phaser.Loader loadPackList invalid index "+this._packIndex);var a=this._packList[this._packIndex];null!==a.data?this.packLoadComplete(this._packIndex,!1):this.xhrLoad(this._packIndex,this.baseURL+a.url,"text","packLoadComplete","packLoadError")},packLoadComplete:function(a,c){if("undefined"==typeof c&&(c=!0),!this._packList[a])return void console.warn("Phaser.Loader packLoadComplete invalid index "+a);var d=this._packList[a];if(d.loaded=!0,c)var e=JSON.parse(this._xhr.responseText);else var e=this._packList[a].data;if(e[d.key])for(var f,g=0;g=0&&(b=b.substr(0,b.indexOf("?"))),this.game.device.canPlayAudio(b))return a[c];return null},fileError:function(a){this._fileList[a].loaded=!0,this._fileList[a].error=!0,this.onFileError.dispatch(this._fileList[a].key,this._fileList[a]),console.warn("Phaser.Loader error loading file: "+this._fileList[a].key+" from URL "+this._fileList[a].url),this.nextFile(a,!1)},fileComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader fileComplete invalid index "+a);var c=this._fileList[a];c.loaded=!0;var d=!0;switch(c.type){case"image":this.game.cache.addImage(c.key,c.url,c.data);break;case"spritesheet":this.game.cache.addSpriteSheet(c.key,c.url,c.data,c.frameWidth,c.frameHeight,c.frameMax,c.margin,c.spacing);break;case"textureatlas":if(null==c.atlasURL)this.game.cache.addTextureAtlas(c.key,c.url,c.data,c.atlasData,c.format);else if(d=!1,c.format==b.Loader.TEXTURE_ATLAS_JSON_ARRAY||c.format==b.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","jsonLoadComplete","dataLoadError");else{if(c.format!=b.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+c.format);this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","xmlLoadComplete","dataLoadError")}break;case"bitmapfont":null==c.xmlURL?this.game.cache.addBitmapFont(c.key,c.url,c.data,c.xmlData,c.xSpacing,c.ySpacing):(d=!1,this.xhrLoad(this._fileIndex,this.baseURL+c.xmlURL,"text","xmlLoadComplete","dataLoadError"));break;case"audio":if(this.game.sound.usingWebAudio){if(c.data=this._xhr.response,this.game.cache.addSound(c.key,c.url,c.data,!0,!1),c.autoDecode){var e=this,f=c.key;this.game.cache.updateSound(f,"isDecoding",!0),this.game.sound.context.decodeAudioData(c.data,function(a){a&&(e.game.cache.decodedSound(f,a),e.game.sound.onSoundDecode.dispatch(f,e.game.cache.getSound(f)))})}}else c.data.removeEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete),this.game.cache.addSound(c.key,c.url,c.data,!1,!0);break;case"text":c.data=this._xhr.responseText,this.game.cache.addText(c.key,c.url,c.data);break;case"physics":var g=JSON.parse(this._xhr.responseText);this.game.cache.addPhysicsData(c.key,c.url,g,c.format);break;case"script":c.data=document.createElement("script"),c.data.language="javascript",c.data.type="text/javascript",c.data.defer=!1,c.data.text=this._xhr.responseText,document.head.appendChild(c.data),c.callback&&(c.data=c.callback.call(c.callbackContext,c.key,this._xhr.responseText));break;case"binary":c.data=c.callback?c.callback.call(c.callbackContext,c.key,this._xhr.response):this._xhr.response,this.game.cache.addBinary(c.key,c.data)}d&&this.nextFile(a,!0)},jsonLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader jsonLoadComplete invalid index "+a);var b=this._fileList[a];if(this._ajax&&this._ajax.responseText)var c=JSON.parse(this._ajax.responseText);else var c=JSON.parse(this._xhr.responseText);b.loaded=!0,"tilemap"===b.type?this.game.cache.addTilemap(b.key,b.url,c,b.format):"json"===b.type?this.game.cache.addJSON(b.key,b.url,c):this.game.cache.addTextureAtlas(b.key,b.url,b.data,c,b.format),this.nextFile(a,!0)},csvLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader csvLoadComplete invalid index "+a);var b=this._fileList[a],c=this._xhr.responseText;b.loaded=!0,this.game.cache.addTilemap(b.key,b.url,c,b.format),this.nextFile(a,!0)},dataLoadError:function(a){var b=this._fileList[a];b.loaded=!0,b.error=!0,console.warn("Phaser.Loader dataLoadError: "+b.key),this.nextFile(a,!0)},xmlLoadComplete:function(a){""!==this._xhr.responseType&&"text"!==this._xhr.responseType&&(console.warn("Invalid XML Response Type",this._fileList[a]),console.warn(this._xhr));var b,c=this._xhr.responseText;try{if(window.DOMParser){var d=new DOMParser;b=d.parseFromString(c,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(c)}catch(e){b=void 0}if(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)throw new Error("Phaser.Loader. Invalid XML given");var f=this._fileList[a];f.loaded=!0,"bitmapfont"===f.type?this.game.cache.addBitmapFont(f.key,f.url,f.data,b,f.xSpacing,f.ySpacing):"textureatlas"===f.type?this.game.cache.addTextureAtlas(f.key,f.url,f.data,b,f.format):"xml"===f.type&&this.game.cache.addXML(f.key,f.url,b),this.nextFile(a,!0)},nextFile:function(a,b){this.progressFloat+=this._progressChunk,this.progress=Math.round(this.progressFloat),this.progress>100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.updateCrop()),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this.isPlaying&&!this.allowMultiple&&(this.override||e)&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist"),this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null===this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if("undefined"==typeof this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b){"undefined"==typeof b&&(b=!1),this.paused||(this.play("",0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,c){if(this.isPlaying&&!this.paused&&c!==this.volume){if("undefined"==typeof a&&(a=1e3),"undefined"==typeof c)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");var d=this.game.add.tween(this).to({volume:c},a,b.Easing.Linear.None,!0);d.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a>>0:(a<<24|c<<16|d<<8|e)>>>0},unpackPixel:function(a,c,d,e){return("undefined"==typeof c||null===c)&&(c=b.Color.createColor()),("undefined"==typeof d||null===d)&&(d=!1),("undefined"==typeof e||null===e)&&(e=!1),b.Device.LITTLE_ENDIAN?(c.a=(4278190080&a)>>>24,c.b=(16711680&a)>>>16,c.g=(65280&a)>>>8,c.r=255&a):(c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a),c.color=a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a/255+")",d&&b.Color.RGBtoHSL(c.r,c.g,c.b,c),e&&b.Color.RGBtoHSV(c.r,c.g,c.b,c),c},fromRGBA:function(a,c){return c||(c=b.Color.createColor()),c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a+")",c},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,1)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6}return e},HSLtoRGB:function(a,c,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=b.Color.createColor(d,d,d),0!==c){var f=.5>d?d*(1+c):d+c-d*c,g=2*d-f;e.r=b.Color.hueToColor(g,f,a+1/3),e.g=b.Color.hueToColor(g,f,a),e.b=b.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),b.Color.updateColor(e),e},RGBtoHSV:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,255)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6),e},HSVtoRGB:function(a,c,d,e){"undefined"==typeof e&&(e=b.Color.createColor(0,0,0,1,a,c,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-c),l=d*(1-j*c),m=d*(1-(1-j)*c);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),b.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,c,d,e,f,g,h,i){var j={r:a||0,g:c||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return j.color=b.Color.getColor(j.r,j.g,j.b),j.color32=b.Color.getColor32(j.a,j.r,j.g,j.b),b.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,c,d,e,f){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(c<<8)+d).toString(16).slice(1):"0x"+b.Color.componentToHex(e)+b.Color.componentToHex(a)+b.Color.componentToHex(c)+b.Color.componentToHex(d)},hexToRGB:function(a){var c=b.Color.hexToColor(a);return c?b.Color.getColor32(c.a,c.r,c.g,c.b):void 0},hexToColor:function(a,c){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);c?(c.r=e,c.g=f,c.b=g):c=b.Color.createColor(e,f,g)}return c},webToColor:function(a,c){c||(c=b.Color.createColor());var d=/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\)$/.exec(a);return d&&(c.r=parseInt(d[1],10),c.g=parseInt(d[2],10),c.b=parseInt(d[3],10)),c},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,c){"undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSVtoRGB(e/359,a,c));return d},HSLColorWheel:function(a,c){"undefined"==typeof a&&(a=.5),"undefined"==typeof c&&(c=.5);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSLtoRGB(e/359,a,c));return d},interpolateColor:function(a,c,d,e,f){"undefined"==typeof f&&(f=255);var g=b.Color.getRGB(a),h=b.Color.getRGB(c),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return b.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,c,d,e,f,g){var h=b.Color.getRGB(a),i=(c-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return b.Color.getColor(i,j,k)},interpolateRGB:function(a,c,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-c)*i/h+c,l=(g-d)*i/h+d;return b.Color.getColor(j,k,l)},getRandomColor:function(a,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof c&&(c=255),"undefined"==typeof d&&(d=255),c>255||a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var c=b.Color.getRGB(a);return"rgba("+c.r.toString()+","+c.g.toString()+","+c.b.toString()+","+(c.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=4,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&b.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new b.Physics.BOX2D(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else if(a===b.Physics.BOX2D&&null===this.box2d)this.box2d=new b.Physics.Box2D(this.game,this.config);else if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):c===b.Physics.BOX2D&&this.box2d&&this.box2d.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.skipQuadTree=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0,this.setBoundsToWorld()},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!0);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,g=a.length;g>f;f++)for(var h=0,i=b.length;i>h;h++)this.collideHandler(a[f],b[h],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!1);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,h=a.length;h>f;f++)for(var i=0,j=b.length;j>i;i++)this.collideHandler(a[f],b[i],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length&&a.body)if(a.body.skipQuadTree||this.skipQuadTree)for(var g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,c,d,e,f,g){if(0!==a.length&&0!==c.length)for(var h=0,i=a.children.length;i>h;h++)a.children[h].exists&&(a.children[h].type===b.GROUP?this.collideGroupVsGroup(a.children[h],c,d,e,f,g):this.collideSpriteVsGroup(a.children[h],c,d,e,f,g))},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(a.body&&(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length))for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=this._overlap,b.overlapX=this._overlap,0!==this._overlap)?c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=this._overlap,b.overlapY=this._overlap,0!==this._overlap)?c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0):!1)},separateTile:function(a,b,c){if(!b.enable||!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},getObjectsUnderPointer:function(a,c,d,e){if(0!==c.length&&a.exists){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(c);var f=new b.Rectangle(a.x,a.y,1,1),g=[];this._potentials=this.quadTree.retrieve(f);for(var h=0,i=this._potentials.length;i>h;h++)this._potentials[h].hitTest(a.x,a.y)&&(d&&d.call(e,a,this._potentials[h].sprite),g.push(this._potentials[h].sprite));return g}},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle -},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.enable=!0,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this.skipQuadTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite.body=null,this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){"undefined"==typeof c&&(c=this.offset.x),"undefined"==typeof d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.area=new b.Rectangle(c,d,1,1),this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.explode=function(a,b){this.start(!0,a,0,b,!1)},b.Particles.Arcade.Emitter.prototype.flow=function(a,b,c){this.start(!1,a,b,c,!0)},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=!1),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a||e?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit())},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.area.width=a,this.area.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.NORTH=0,b.Tilemap.EAST=1,b.Tilemap.SOUTH=2,b.Tilemap.WEST=3,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;if(c=a,!this.game.cache.checkImageKey(c))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+c+'"'),null}if("string"==typeof a&&(a=this.getTilesetIndex(a),null===a&&this.format===b.Tilemap.TILED_JSON))return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+c+'"'),null;if(this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0,!0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;c>l;l++)h.push(new b.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;he;e++)this.setCollisionByIndex(a[e],b,c,!1);d&&this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d,e){if("undefined"==typeof c&&(c=!0),"undefined"==typeof e&&(e=!0),d=this.getLayer(d),!(a>b)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){"undefined"==typeof b&&(b=!0),"undefined"==typeof d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,c,d){if(d=this.getLayer(d),a>=0&&a=0&&c=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,Object.defineProperty(b.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this.wrap=!1,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x)},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gc;c++){if(this._column=null,0>c&&this.wrap?this._column=this.layer.data[c+this.map.height]:c>=this.map.height&&this.wrap?this._column=this.layer.data[c-this.map.height]:this.layer.data[c]&&(this._column=this.layer.data[c]),this._column)for(var e=this._mc.startX,f=this._mc.startX+this._mc.maxX;f>e;e++){var a=null;0>e&&this.wrap?a=this._column[e+this.map.width]:e>=this.map.width&&this.wrap?a=this._column[e-this.map.width]:this._column[e]&&(a=this._column[e]),a&&a.index>-1&&(b=this.map.tilesets[this.map.tiles[a.index][2]],this.debug===!1&&a.alpha!==this.context.globalAlpha&&(this.context.globalAlpha=a.alpha),b.draw(this.context,Math.floor(this._mc.tx),Math.floor(this._mc.ty),a.index),a.debug&&(this.context.fillStyle="rgba(0, 255, 0, 0.4)",this.context.fillRect(Math.floor(this._mc.tx),Math.floor(this._mc.ty),this.map.tileWidth,this.map.tileHeight))),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}return this.debug&&(this.context.globalAlpha=1,this.renderDebug()),this.texture._updateUvs(),this.dirty=!1,this.layer.dirty=!1,!0}},b.TilemapLayer.prototype.renderDebug=function(){this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.strokeStyle=this.debugColor,this.context.fillStyle=this.debugFillColor;for(var a=this._mc.startY,b=this._mc.startY+this._mc.maxY;b>a;a++){if(this._column=null,0>a&&this.wrap?this._column=this.layer.data[a+this.map.height]:a>=this.map.height&&this.wrap?this._column=this.layer.data[a-this.map.height]:this.layer.data[a]&&(this._column=this.layer.data[a]),this._column)for(var c=this._mc.startX,d=this._mc.startX+this._mc.maxX;d>c;c++){var e=null;0>c&&this.wrap?e=this._column[c+this.map.width]:c>=this.map.width&&this.wrap?e=this._column[c-this.map.width]:this._column[c]&&(e=this._column[c]),e&&(e.faceTop||e.faceBottom||e.faceLeft||e.faceRight)&&(this._mc.tx=Math.floor(this._mc.tx),this.debugFill&&this.context.fillRect(this._mc.tx,this._mc.ty,this._mc.cw,this._mc.ch),this.context.beginPath(),e.faceTop&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty)),e.faceBottom&&(this.context.moveTo(this._mc.tx,this._mc.ty+this._mc.ch),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),e.faceLeft&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx,this._mc.ty+this._mc.ch)),e.faceRight&&(this.context.moveTo(this._mc.tx+this._mc.cw,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),this.context.stroke()),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}},Object.defineProperty(b.TilemapLayer.prototype,"scrollX",{get:function(){return this._mc.x},set:function(a){a!==this._mc.x&&(this._mc.x=a,this._mc.startX=this.game.math.floor(this._mc.x/this.map.tileWidth),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"scrollY",{get:function(){return this._mc.y},set:function(a){a!==this._mc.y&&(this._mc.y=a,this._mc.startY=this.game.math.floor(this._mc.y/this.map.tileHeight),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=a,this.dirty=!0}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=a,this.dirty=!0}}),b.TilemapParser={parse:function(a,c,d,e,f,g){if("undefined"==typeof d&&(d=32),"undefined"==typeof e&&(e=32),"undefined"==typeof f&&(f=10),"undefined"==typeof g&&(g=10),"undefined"==typeof c)return this.getEmptyData();if(null===c)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(c);if(h){if(h.format===b.Tilemap.CSV)return this.parseCSV(c,h.data,d,e);if(!h.format||h.format===b.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+c)},parseCSV:function(a,c,d,e){var f=this.getEmptyData();c=c.trim();for(var g=[],h=c.split("\n"),i=h.length,j=0,k=0;kk;k++)i.push(a.layers[f].data[k]>0?new b.Tile(g,a.layers[f].data[k],h,j.length,a.tilewidth,a.tileheight):new b.Tile(g,-1,h,j.length,a.tilewidth,a.tileheight)),h++,h===a.layers[f].width&&(j.push(i),h=0,i=[]);g.data=j,e.push(g)}d.layers=e;for(var m=[],f=0;ft;t++)if(a.layers[f].objects[t].gid){var u={gid:a.layers[f].objects[t].gid,name:a.layers[f].objects[t].name,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};r[a.layers[f].name].push(u)}else if(a.layers[f].objects[t].polyline){var u={name:a.layers[f].objects[t].name,type:a.layers[f].objects[t].type,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,width:a.layers[f].objects[t].width,height:a.layers[f].objects[t].height,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};u.polyline=[];for(var v=0;v=c)&&(c=32),("undefined"==typeof d||0>=d)&&(d=32),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.name=a,this.firstgid=b,this.tileWidth=c,this.tileHeight=d,this.tileMargin=e,this.tileSpacing=f,this.properties=g,this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},b.Tileset.prototype={draw:function(a,b,c,d){this.image&&this.drawCoords[d]&&a.drawImage(this.image,this.drawCoords[d][0],this.drawCoords[d][1],this.tileWidth,this.tileHeight,b,c,this.tileWidth,this.tileHeight)},setImage:function(a){this.image=a,this.rows=Math.round((a.height-this.tileMargin)/(this.tileHeight+this.tileSpacing)),this.columns=Math.round((a.width-this.tileMargin)/(this.tileWidth+this.tileSpacing)),this.total=this.rows*this.columns,this.drawCoords.length=0;for(var b=this.tileMargin,c=this.tileMargin,d=this.firstgid,e=0;e0&&this.enable(a[f],b,c,d,!0));else a instanceof Phaser.Group?this.enable(a.children,b,c,d,e):(this.enableBody(a,b,c,d),e&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,c,d,!0))},enableBody:function(a,b,c,d){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Physics.Ninja.Body(this,a,b,c,d),a.anchor.set(.5))},setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=[]},convertTilemap:function(a,b,c){b=a.getLayer(b),this.clearTilemapLayerBodies(a,b);for(var d=0,e=a.layers[b].height;e>d;d++)for(var f=0,g=a.layers[b].width;g>f;f++){var h=a.layers[b].data[d][f];if(h&&c.hasOwnProperty(h.index)){var i=new Phaser.Physics.Ninja.Body(this,null,3,c[h.index],0,h.worldX+h.centerX,h.worldY+h.centerY,h.width,h.height);a.layers[b].bodies.push(i)}}return a.layers[b].bodies},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,b,c,d,e,f){return"undefined"!=typeof b||a.type!==Phaser.GROUP&&a.type!==Phaser.EMITTER?void(a&&b&&a.exists&&b.exists&&(a.type==Phaser.SPRITE||a.type==Phaser.TILESPRITE?b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsSprite(a,b,c,d,e,f):b.type==Phaser.GROUP||b.type==Phaser.EMITTER?this.collideSpriteVsGroup(a,b,c,d,e,f):b.type==Phaser.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,c,d,e):a.type==Phaser.GROUP?b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type==Phaser.GROUP||b.type==Phaser.EMITTER?this.collideGroupVsGroup(a,b,c,d,e,f):b.type==Phaser.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,c,d,e):a.type==Phaser.TILEMAPLAYER?b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsTilemapLayer(b,a,c,d,e):(b.type==Phaser.GROUP||b.type==Phaser.EMITTER)&&this.collideGroupVsTilemapLayer(b,a,c,d,e):a.type==Phaser.EMITTER&&(b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type==Phaser.GROUP||b.type==Phaser.EMITTER?this.collideGroupVsGroup(a,b,c,d,e,f):b.type==Phaser.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,c,d,e)))):void this.collideGroupVsSelf(a,c,d,e,f)},collideSpriteVsSprite:function(a,b,c,d,e,f){this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++)},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length)for(var g=0,h=b.children.length;h>g;g++)b.children[g].exists&&b.children[g].body&&this.separate(a.body,b.children[g].body,d,e,f)&&(c&&c.call(e,a,b.children[g]),this._total++)},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},separate:function(a,b){return a.type!==Phaser.Physics.NINJA||b.type!==Phaser.Physics.NINJA?!1:a.aabb&&b.aabb?a.aabb.collideAABBVsAABB(b.aabb):a.aabb&&b.tile?a.aabb.collideAABBVsTile(b.tile):a.tile&&b.aabb?b.aabb.collideAABBVsTile(a.tile):a.circle&&b.tile?a.circle.collideCircleVsTile(b.tile):a.tile&&b.circle?b.circle.collideCircleVsTile(a.tile):void 0}},Phaser.Physics.Ninja.Body=function(a,b,c,d,e,f,g,h,i){b=b||null,"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=16),this.sprite=b,this.game=a.game,this.type=Phaser.Physics.NINJA,this.system=a,this.aabb=null,this.tile=null,this.circle=null,this.shape=null,this.drag=1,this.friction=.05,this.gravityScale=1,this.bounce=.3,this.velocity=new Phaser.Point,this.facing=Phaser.NONE,this.immovable=!1,this.collideWorldBounds=!0,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.maxSpeed=8,b&&(f=b.x,g=b.y,h=b.width,i=b.height,0===b.anchor.x&&(f+=.5*b.width),0===b.anchor.y&&(g+=.5*b.height)),1===c?(this.aabb=new Phaser.Physics.Ninja.AABB(this,f,g,h,i),this.shape=this.aabb):2===c?(this.circle=new Phaser.Physics.Ninja.Circle(this,f,g,e),this.shape=this.circle):3===c&&(this.tile=new Phaser.Physics.Ninja.Tile(this,f,g,h,i,d),this.shape=this.tile)},Phaser.Physics.Ninja.Body.prototype={preUpdate:function(){this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.shape.integrate(),this.collideWorldBounds&&this.shape.collideWorldBounds()},postUpdate:function(){this.sprite&&(this.sprite.type===Phaser.TILESPRITE?(this.sprite.x=this.shape.pos.x-this.shape.xw,this.sprite.y=this.shape.pos.y-this.shape.yw):(this.sprite.x=this.shape.pos.x,this.sprite.y=this.shape.pos.y)),this.velocity.x<0?this.facing=Phaser.LEFT:this.velocity.x>0&&(this.facing=Phaser.RIGHT),this.velocity.y<0?this.facing=Phaser.UP:this.velocity.y>0&&(this.facing=Phaser.DOWN)},setZeroVelocity:function(){this.shape.oldpos.x=this.shape.pos.x,this.shape.oldpos.y=this.shape.pos.y},moveTo:function(a,b){var c=a*this.game.time.physicsElapsed,b=this.game.math.degToRad(b);this.shape.pos.x=this.shape.oldpos.x+c*Math.cos(b),this.shape.pos.y=this.shape.oldpos.y+c*Math.sin(b)},moveFrom:function(a,b){var c=-a*this.game.time.physicsElapsed,b=this.game.math.degToRad(b);this.shape.pos.x=this.shape.oldpos.x+c*Math.cos(b),this.shape.pos.y=this.shape.oldpos.y+c*Math.sin(b)},moveLeft:function(a){var b=-a*this.game.time.physicsElapsed;this.shape.pos.x=this.shape.oldpos.x+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.x-this.shape.oldpos.x+b))},moveRight:function(a){var b=a*this.game.time.physicsElapsed;this.shape.pos.x=this.shape.oldpos.x+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.x-this.shape.oldpos.x+b))},moveUp:function(a){var b=-a*this.game.time.physicsElapsed;this.shape.pos.y=this.shape.oldpos.y+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.y-this.shape.oldpos.y+b))},moveDown:function(a){var b=a*this.game.time.physicsElapsed;this.shape.pos.y=this.shape.oldpos.y+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.y-this.shape.oldpos.y+b))},reset:function(){this.velocity.set(0),this.shape.pos.x=this.sprite.x,this.shape.pos.y=this.sprite.y,this.shape.oldpos.copyFrom(this.shape.pos)},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.shape.pos.x-this.shape.oldpos.x},deltaY:function(){return this.shape.pos.y-this.shape.oldpos.y},destroy:function(){this.sprite=null,this.system=null,this.aabb=null,this.tile=null,this.circle=null,this.shape.destroy(),this.shape=null}},Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"x",{get:function(){return this.shape.pos.x},set:function(a){this.shape.pos.x=a}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"y",{get:function(){return this.shape.pos.y},set:function(a){this.shape.pos.y=a}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"width",{get:function(){return this.shape.width}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"height",{get:function(){return this.shape.height}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"bottom",{get:function(){return this.shape.pos.y+this.shape.yw}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"right",{get:function(){return this.shape.pos.x+this.shape.xw}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"speed",{get:function(){return Math.sqrt(this.shape.velocity.x*this.shape.velocity.x+this.shape.velocity.y*this.shape.velocity.y)}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"angle",{get:function(){return Math.atan2(this.shape.velocity.y,this.shape.velocity.x)}}),Phaser.Physics.Ninja.Body.render=function(a,b,c,d){c=c||"rgba(0,255,0,0.4)","undefined"==typeof d&&(d=!0),(b.aabb||b.circle)&&b.shape.render(a,b.game.camera.x,b.game.camera.y,c,d)},Phaser.Physics.Ninja.AABB=function(a,b,c,d,e){this.body=a,this.system=a.system,this.pos=new Phaser.Point(b,c),this.oldpos=new Phaser.Point(b,c),this.xw=Math.abs(d/2),this.yw=Math.abs(e/2),this.width=d,this.height=e,this.oH=0,this.oV=0,this.velocity=new Phaser.Point,this.aabbTileProjections={},this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_FULL]=this.projAABB_Full,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_45DEG]=this.projAABB_45Deg,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_CONCAVE]=this.projAABB_Concave,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_CONVEX]=this.projAABB_Convex,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_22DEGs]=this.projAABB_22DegS,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_22DEGb]=this.projAABB_22DegB,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_67DEGs]=this.projAABB_67DegS,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_67DEGb]=this.projAABB_67DegB,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_HALF]=this.projAABB_Half},Phaser.Physics.Ninja.AABB.prototype.constructor=Phaser.Physics.Ninja.AABB,Phaser.Physics.Ninja.AABB.COL_NONE=0,Phaser.Physics.Ninja.AABB.COL_AXIS=1,Phaser.Physics.Ninja.AABB.COL_OTHER=2,Phaser.Physics.Ninja.AABB.prototype={integrate:function(){var a=this.pos.x,b=this.pos.y;this.pos.x+=this.body.drag*this.pos.x-this.body.drag*this.oldpos.x,this.pos.y+=this.body.drag*this.pos.y-this.body.drag*this.oldpos.y+this.system.gravity*this.body.gravityScale,this.velocity.set(this.pos.x-a,this.pos.y-b),this.oldpos.set(a,b)},reportCollisionVsWorld:function(a,b,c,d){var e,f,g,h,i,j=this.pos,k=this.oldpos,l=j.x-k.x,m=j.y-k.y,n=l*c+m*d,o=n*c,p=n*d,q=l-o,r=m-p;0>n?(h=q*this.body.friction,i=r*this.body.friction,e=1+this.body.bounce,f=o*e,g=p*e,1===c?this.body.touching.left=!0:-1===c&&(this.body.touching.right=!0),1===d?this.body.touching.up=!0:-1===d&&(this.body.touching.down=!0)):f=g=h=i=0,j.x+=a,j.y+=b,k.x+=a+f+h,k.y+=b+g+i},reverse:function(){var a=this.pos.x-this.oldpos.x,b=this.pos.y-this.oldpos.y;this.oldpos.xthis.pos.x&&(this.oldpos.x=this.pos.x-a),this.oldpos.ythis.pos.y&&(this.oldpos.y=this.pos.y-b)},reportCollisionVsBody:function(a,b,c,d,e){var f=this.pos.x-this.oldpos.x,g=this.pos.y-this.oldpos.y,h=f*c+g*d;return this.body.immovable&&e.body.immovable?(a*=.5,b*=.5,this.pos.add(a,b),this.oldpos.set(this.pos.x,this.pos.y),e.pos.subtract(a,b),void e.oldpos.set(e.pos.x,e.pos.y)):void(this.body.immovable||e.body.immovable?this.body.immovable?e.body.immovable||(e.pos.subtract(a,b),0>h&&e.reverse()):(this.pos.subtract(a,b),0>h&&this.reverse()):(a*=.5,b*=.5,this.pos.add(a,b),e.pos.subtract(a,b),0>h&&(this.reverse(),e.reverse())))},collideWorldBounds:function(){var a=this.system.bounds.x-(this.pos.x-this.xw);a>0?this.reportCollisionVsWorld(a,0,1,0,null):(a=this.pos.x+this.xw-this.system.bounds.right,a>0&&this.reportCollisionVsWorld(-a,0,-1,0,null));var b=this.system.bounds.y-(this.pos.y-this.yw);b>0?this.reportCollisionVsWorld(0,b,0,1,null):(b=this.pos.y+this.yw-this.system.bounds.bottom,b>0&&this.reportCollisionVsWorld(0,-b,0,-1,null))},collideAABBVsAABB:function(a){var b=this.pos,c=a,d=c.pos.x,e=c.pos.y,f=c.xw,g=c.yw,h=b.x-d,i=f+this.xw-Math.abs(h);if(i>0){var j=b.y-e,k=g+this.yw-Math.abs(j);if(k>0){k>i?0>h?(i*=-1,k=0):k=0:0>j?(i=0,k*=-1):i=0;var l=Math.sqrt(i*i+k*k);return this.reportCollisionVsBody(i,k,i/l,k/l,c),Phaser.Physics.Ninja.AABB.COL_AXIS}}return!1},collideAABBVsTile:function(a){var b=this.pos.x-a.pos.x,c=a.xw+this.xw-Math.abs(b);if(c>0){var d=this.pos.y-a.pos.y,e=a.yw+this.yw-Math.abs(d);if(e>0)return e>c?0>b?(c*=-1,e=0):e=0:0>d?(c=0,e*=-1):c=0,this.resolveTile(c,e,this,a)}return!1},resolveTile:function(a,b,c,d){return 0i){e*=-i,f*=-i;var j=Math.sqrt(e*e+f*f),k=Math.sqrt(a*a+b*b);return j>k?(c.reportCollisionVsWorld(a,b,a/k,b/k,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(e,f,d.signx,d.signy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_45Deg:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-d.pos.x,h=c.pos.y-f*c.yw-d.pos.y,i=d.sx,j=d.sy,k=g*i+h*j;if(0>k){i*=-k,j*=-k;var l=Math.sqrt(i*i+j*j),m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(i,j,d.sx,d.sy),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_22DegS:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.y-f*c.yw,h=d.pos.y-g;if(h*f>0){var i=c.pos.x-e*c.xw-(d.pos.x+e*d.xw),j=c.pos.y-f*c.yw-(d.pos.y-f*d.yw),k=d.sx,l=d.sy,m=i*k+j*l;if(0>m){k*=-m,l*=-m;var n=Math.sqrt(k*k+l*l),o=Math.sqrt(a*a+b*b),p=Math.abs(h);return n>o?o>p?(c.reportCollisionVsWorld(0,h,0,h/p,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(a,b,a/o,b/o,d),Phaser.Physics.Ninja.AABB.COL_AXIS):n>p?(c.reportCollisionVsWorld(0,h,0,h/p,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(k,l,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER) -}}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_22DegB:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-(d.pos.x-e*d.xw),h=c.pos.y-f*c.yw-(d.pos.y+f*d.yw),i=d.sx,j=d.sy,k=g*i+h*j;if(0>k){i*=-k,j*=-k;var l=Math.sqrt(i*i+j*j),m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(i,j,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_67DegS:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw,h=d.pos.x-g;if(h*e>0){var i=c.pos.x-e*c.xw-(d.pos.x-e*d.xw),j=c.pos.y-f*c.yw-(d.pos.y+f*d.yw),k=d.sx,l=d.sy,m=i*k+j*l;if(0>m){k*=-m,l*=-m;var n=Math.sqrt(k*k+l*l),o=Math.sqrt(a*a+b*b),p=Math.abs(h);return n>o?o>p?(c.reportCollisionVsWorld(h,0,h/p,0,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(a,b,a/o,b/o,d),Phaser.Physics.Ninja.AABB.COL_AXIS):n>p?(c.reportCollisionVsWorld(h,0,h/p,0,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(k,l,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_67DegB:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-(d.pos.x+e*d.xw),h=c.pos.y-f*c.yw-(d.pos.y-f*d.yw),i=d.sx,j=d.sy,k=g*i+h*j;if(0>k){i*=-k,j*=-k;var l=Math.sqrt(i*i+j*j),m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(i,j,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_Convex:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-(d.pos.x-e*d.xw),h=c.pos.y-f*c.yw-(d.pos.y-f*d.yw),i=Math.sqrt(g*g+h*h),j=2*d.xw,k=Math.sqrt(j*j+0),l=k-i;if(0>e*g||0>f*h){var m=Math.sqrt(a*a+b*b);return c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS}return l>0?(g/=i,h/=i,c.reportCollisionVsWorld(g*l,h*l,g,h,d),Phaser.Physics.Ninja.AABB.COL_OTHER):Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_Concave:function(a,b,c,d){var e=d.signx,f=d.signy,g=d.pos.x+e*d.xw-(c.pos.x-e*c.xw),h=d.pos.y+f*d.yw-(c.pos.y-f*c.yw),i=2*d.xw,j=Math.sqrt(i*i+0),k=Math.sqrt(g*g+h*h),l=k-j;if(l>0){var m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(g/=k,h/=k,c.reportCollisionVsWorld(g*l,h*l,g,h,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},destroy:function(){this.body=null,this.system=null},render:function(a,b,c,d,e){var f=this.pos.x-this.xw-b,g=this.pos.y-this.yw-c;e?(a.fillStyle=d,a.fillRect(f,g,this.width,this.height)):(a.strokeStyle=d,a.strokeRect(f,g,this.width,this.height))}},Phaser.Physics.Ninja.Tile=function(a,b,c,d,e,f){"undefined"==typeof f&&(f=Phaser.Physics.Ninja.Tile.EMPTY),this.body=a,this.system=a.system,this.id=f,this.type=Phaser.Physics.Ninja.Tile.TYPE_EMPTY,this.pos=new Phaser.Point(b,c),this.oldpos=new Phaser.Point(b,c),this.id>1&&this.id<30&&(e=d),this.xw=Math.abs(d/2),this.yw=Math.abs(e/2),this.width=d,this.height=e,this.velocity=new Phaser.Point,this.signx=0,this.signy=0,this.sx=0,this.sy=0,this.body.gravityScale=0,this.body.collideWorldBounds=!1,this.id>0&&this.setType(this.id)},Phaser.Physics.Ninja.Tile.prototype.constructor=Phaser.Physics.Ninja.Tile,Phaser.Physics.Ninja.Tile.prototype={integrate:function(){var a=this.pos.x,b=this.pos.y;this.pos.x+=this.body.drag*this.pos.x-this.body.drag*this.oldpos.x,this.pos.y+=this.body.drag*this.pos.y-this.body.drag*this.oldpos.y+this.system.gravity*this.body.gravityScale,this.velocity.set(this.pos.x-a,this.pos.y-b),this.oldpos.set(a,b)},collideWorldBounds:function(){var a=this.system.bounds.x-(this.pos.x-this.xw);a>0?this.reportCollisionVsWorld(a,0,1,0,null):(a=this.pos.x+this.xw-this.system.bounds.right,a>0&&this.reportCollisionVsWorld(-a,0,-1,0,null));var b=this.system.bounds.y-(this.pos.y-this.yw);b>0?this.reportCollisionVsWorld(0,b,0,1,null):(b=this.pos.y+this.yw-this.system.bounds.bottom,b>0&&this.reportCollisionVsWorld(0,-b,0,-1,null))},reportCollisionVsWorld:function(a,b,c,d){var e,f,g,h,i,j=this.pos,k=this.oldpos,l=j.x-k.x,m=j.y-k.y,n=l*c+m*d,o=n*c,p=n*d,q=l-o,r=m-p;0>n?(h=q*this.body.friction,i=r*this.body.friction,e=1+this.body.bounce,f=o*e,g=p*e,1===c?this.body.touching.left=!0:-1===c&&(this.body.touching.right=!0),1===d?this.body.touching.up=!0:-1===d&&(this.body.touching.down=!0)):f=g=h=i=0,j.x+=a,j.y+=b,k.x+=a+f+h,k.y+=b+g+i},setType:function(a){return a===Phaser.Physics.Ninja.Tile.EMPTY?this.clear():(this.id=a,this.updateType()),this},clear:function(){this.id=Phaser.Physics.Ninja.Tile.EMPTY,this.updateType()},destroy:function(){this.body=null,this.system=null},updateType:function(){if(0===this.id)return this.type=Phaser.Physics.Ninja.Tile.TYPE_EMPTY,this.signx=0,this.signy=0,this.sx=0,this.sy=0,!0;if(this.idn?(h=q*this.body.friction,i=r*this.body.friction,e=1+this.body.bounce,f=o*e,g=p*e,1===c?this.body.touching.left=!0:-1===c&&(this.body.touching.right=!0),1===d?this.body.touching.up=!0:-1===d&&(this.body.touching.down=!0)):f=g=h=i=0,j.x+=a,j.y+=b,k.x+=a+f+h,k.y+=b+g+i},collideWorldBounds:function(){var a=this.system.bounds.x-(this.pos.x-this.radius);a>0?this.reportCollisionVsWorld(a,0,1,0,null):(a=this.pos.x+this.radius-this.system.bounds.right,a>0&&this.reportCollisionVsWorld(-a,0,-1,0,null));var b=this.system.bounds.y-(this.pos.y-this.radius);b>0?this.reportCollisionVsWorld(0,b,0,1,null):(b=this.pos.y+this.radius-this.system.bounds.bottom,b>0&&this.reportCollisionVsWorld(0,-b,0,-1,null))},collideCircleVsTile:function(a){var b=this.pos,c=this.radius,d=a,e=d.pos.x,f=d.pos.y,g=d.xw,h=d.yw,i=b.x-e,j=g+c-Math.abs(i);if(j>0){var k=b.y-f,l=h+c-Math.abs(k);if(l>0)return this.oH=0,this.oV=0,-g>i?this.oH=-1:i>g&&(this.oH=1),-h>k?this.oV=-1:k>h&&(this.oV=1),this.resolveCircleTile(j,l,this.oH,this.oV,this,d)}},resolveCircleTile:function(a,b,c,d,e,f){return 0a){var g=e.pos.x-f.pos.x;return 0>g?(e.reportCollisionVsWorld(-a,0,-1,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(a,0,1,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS)}var h=e.pos.y-f.pos.y;return 0>h?(e.reportCollisionVsWorld(0,-b,0,-1,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(0,b,0,1,f),Phaser.Physics.Ninja.Circle.COL_AXIS)}return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS}if(0===d)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var i=f.pos.x+c*f.xw,j=f.pos.y+d*f.yw,g=e.pos.x-i,h=e.pos.y-j,k=Math.sqrt(g*g+h*h),l=e.radius-k;return l>0?(0===k?(g=c/Math.SQRT2,h=d/Math.SQRT2):(g/=k,h/=k),e.reportCollisionVsWorld(g*l,h*l,g,h,f),Phaser.Physics.Ninja.Circle.COL_OTHER):Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_45Deg:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c)if(0===d){var j=f.sx,k=f.sy,l=e.pos.x-j*e.radius-f.pos.x,m=e.pos.y-k*e.radius-f.pos.y,n=l*j+m*k;if(0>n){j*=-n,k*=-n,b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1));var o=Math.sqrt(j*j+k*k);return o>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,l=e.pos.x-(f.pos.x-h*f.xw),m=e.pos.y-(f.pos.y+d*f.yw),p=l*-k+m*j;if(p*h*i>0){var q=Math.sqrt(l*l+m*m),r=e.radius-q;if(r>0)return l/=q,m/=q,e.reportCollisionVsWorld(l*r,m*r,l,m,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var n=l*j+m*k,r=e.radius-Math.abs(n);if(r>0)return e.reportCollisionVsWorld(j*r,k*r,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,l=e.pos.x-(f.pos.x+c*f.xw),m=e.pos.y-(f.pos.y-i*f.yw),p=l*-k+m*j;if(0>p*h*i){var q=Math.sqrt(l*l+m*m),r=e.radius-q;if(r>0)return l/=q,m/=q,e.reportCollisionVsWorld(l*r,m*r,l,m,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var n=l*j+m*k,r=e.radius-Math.abs(n);if(r>0)return e.reportCollisionVsWorld(j*r,k*r,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(h*c+i*d>0)return Phaser.Physics.Ninja.Circle.COL_NONE;var s=f.pos.x+c*f.xw,t=f.pos.y+d*f.yw,u=e.pos.x-s,v=e.pos.y-t,q=Math.sqrt(u*u+v*v),r=e.radius-q;if(r>0)return 0===q?(u=c/Math.SQRT2,v=d/Math.SQRT2):(u/=q,v/=q),e.reportCollisionVsWorld(u*r,v*r,u,v,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_Concave:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c){if(0===d){var j=f.pos.x+h*f.xw-e.pos.x,k=f.pos.y+i*f.yw-e.pos.y,l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=n+e.radius-m;return o>0?(b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),o>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER)):Phaser.Physics.Ninja.Circle.COL_NONE}if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=f.pos.x-h*f.xw,q=f.pos.y+d*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=0,s=d):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=f.pos.x+c*f.xw,q=f.pos.y-i*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=c,s=0):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{if(h*c+i*d>0)return Phaser.Physics.Ninja.Circle.COL_NONE;var p=f.pos.x+c*f.xw,q=f.pos.y+d*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=c/Math.SQRT2,s=d/Math.SQRT2):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_Convex:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c)if(0===d){var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),o>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}else{if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(h*c+i*d>0){var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var p=f.pos.x+c*f.xw,q=f.pos.y+d*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=c/Math.SQRT2,s=d/Math.SQRT2):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_Half:function(a,b,c,d,e,f){var g=f.signx,h=f.signy,i=c*g+d*h;if(i>0)return Phaser.Physics.Ninja.Circle.COL_NONE;if(0===c)if(0===d){var j=e.radius,k=e.pos.x-g*j-f.pos.x,l=e.pos.y-h*j-f.pos.y,m=g,n=h,o=k*m+l*n;if(0>o){m*=-o,n*=-o;var p=Math.sqrt(m*m+n*n),q=Math.sqrt(a*a+b*b);return p>q?(e.reportCollisionVsWorld(a,b,a/q,b/q,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(m,n,f.signx,f.signy),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0!==i)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var r=e.pos.x-f.pos.x;if(0>r*g)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var s=e.pos.y-(f.pos.y+d*f.yw),t=Math.sqrt(r*r+s*s),u=e.radius-t;if(u>0)return 0===t?(r=g/Math.SQRT2,s=d/Math.SQRT2):(r/=t,s/=t),e.reportCollisionVsWorld(r*u,s*u,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(0===d){if(0!==i)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var s=e.pos.y-f.pos.y;if(0>s*h)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var r=e.pos.x-(f.pos.x+c*f.xw),t=Math.sqrt(r*r+s*s),u=e.radius-t;if(u>0)return 0===t?(r=g/Math.SQRT2,s=d/Math.SQRT2):(r/=t,s/=t),e.reportCollisionVsWorld(r*u,s*u,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var v=f.pos.x+c*f.xw,w=f.pos.y+d*f.yw,r=e.pos.x-v,s=e.pos.y-w,t=Math.sqrt(r*r+s*s),u=e.radius-t;if(u>0)return 0===t?(r=c/Math.SQRT2,s=d/Math.SQRT2):(r/=t,s/=t),e.reportCollisionVsWorld(r*u,s*u,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_22DegS:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(i*d>0)return Phaser.Physics.Ninja.Circle.COL_NONE;if(0===c){if(0!==d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-(f.pos.x-h*f.xw),n=e.pos.y-f.pos.y,o=m*-k+n*j;if(o*h*i>0){var p=Math.sqrt(m*m+n*n),q=l-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{m-=l*j,n-=l*k;var r=m*j+n*k;if(0>r){j*=-r,k*=-r;var s=Math.sqrt(j*j+k*k);return b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),s>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}}else if(0===d)if(0>h*c){var t=f.pos.x-h*f.xw,u=f.pos.y,v=e.pos.x-t,w=e.pos.y-u;if(0>w*i)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var j=f.sx,k=f.sy,m=e.pos.x-(f.pos.x+c*f.xw),n=e.pos.y-(f.pos.y-i*f.yw),o=m*-k+n*j;if(0>o*h*i){var p=Math.sqrt(m*m+n*n),q=e.radius-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var r=m*j+n*k,q=e.radius-Math.abs(r);if(q>0)return e.reportCollisionVsWorld(j*q,k*q,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{var t=f.pos.x+c*f.xw,u=f.pos.y+d*f.yw,v=e.pos.x-t,w=e.pos.y-u,p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_22DegB:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c)if(0===d){var j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-j*l-(f.pos.x-h*f.xw),n=e.pos.y-k*l-(f.pos.y+i*f.yw),o=m*j+n*k;if(0>o){j*=-o,k*=-o;var p=Math.sqrt(j*j+k*k);return b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),p>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,m=e.pos.x-(f.pos.x-h*f.xw),n=e.pos.y-(f.pos.y+i*f.yw),q=m*-k+n*j;if(q*h*i>0){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var m=e.pos.x-(f.pos.x+h*f.xw),n=e.pos.y-f.pos.y;if(0>n*i)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,q=m*-k+n*j;if(0>q*h*i){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(h*c+i*d>0){var t=Math.sqrt(5),j=1*h/t,k=2*i/t,l=e.radius,m=e.pos.x-j*l-(f.pos.x-h*f.xw),n=e.pos.y-k*l-(f.pos.y+i*f.yw),o=m*j+n*k;return 0>o?(e.reportCollisionVsWorld(-j*o,-k*o,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER):Phaser.Physics.Ninja.Circle.COL_NONE}var u=f.pos.x+c*f.xw,v=f.pos.y+d*f.yw,w=e.pos.x-u,x=e.pos.y-v,r=Math.sqrt(w*w+x*x),s=e.radius-r;if(s>0)return 0===r?(w=c/Math.SQRT2,x=d/Math.SQRT2):(w/=r,x/=r),e.reportCollisionVsWorld(w*s,x*s,w,x,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_67DegS:function(a,b,c,d,e,f){var g=f.signx,h=f.signy;if(g*c>0)return Phaser.Physics.Ninja.Circle.COL_NONE;if(0===c)if(0===d){var i,j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-f.pos.x,n=e.pos.y-(f.pos.y-h*f.yw),o=m*-k+n*j;if(0>o*g*h){var p=Math.sqrt(m*m+n*n),q=l-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{m-=l*j,n-=l*k;var r=m*j+n*k;if(0>r){j*=-r,k*=-r;var s=Math.sqrt(j*j+k*k);return b>a?(i=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(i=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),s>i?(e.reportCollisionVsWorld(a,b,a/i,b/i,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}}else if(0>h*d){var t=f.pos.x,u=f.pos.y-h*f.yw,v=e.pos.x-t,w=e.pos.y-u;if(0>v*g)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var j=f.sx,k=f.sy,m=e.pos.x-(f.pos.x-g*f.xw),n=e.pos.y-(f.pos.y+d*f.yw),o=m*-k+n*j;if(o*g*h>0){var p=Math.sqrt(m*m+n*n),q=e.radius-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var r=m*j+n*k,q=e.radius-Math.abs(r);if(q>0)return e.reportCollisionVsWorld(j*q,k*q,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(0===d)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var t=f.pos.x+c*f.xw,u=f.pos.y+d*f.yw,v=e.pos.x-t,w=e.pos.y-u,p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_67DegB:function(a,b,c,d,e,f){var g=f.signx,h=f.signy;if(0===c)if(0===d){var i,j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-j*l-(f.pos.x+g*f.xw),n=e.pos.y-k*l-(f.pos.y-h*f.yw),o=m*j+n*k;if(0>o){j*=-o,k*=-o;var p=Math.sqrt(j*j+k*k);return b>a?(i=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(i=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),p>i?(e.reportCollisionVsWorld(a,b,a/i,b/i,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0>h*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var m=e.pos.x-f.pos.x,n=e.pos.y-(f.pos.y+h*f.yw);if(0>m*g)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,q=m*-k+n*j;if(q*g*h>0){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else if(0===d){if(0>g*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var t=Math.sqrt(5),j=2*g/t,k=1*h/t,m=e.pos.x-(f.pos.x+g*f.xw),n=e.pos.y-(f.pos.y-h*f.yw),q=m*-k+n*j;if(0>q*g*h){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(g*c+h*d>0){var j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-j*l-(f.pos.x+g*f.xw),n=e.pos.y-k*l-(f.pos.y-h*f.yw),o=m*j+n*k;return 0>o?(e.reportCollisionVsWorld(-j*o,-k*o,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER):Phaser.Physics.Ninja.Circle.COL_NONE}var u=f.pos.x+c*f.xw,v=f.pos.y+d*f.yw,w=e.pos.x-u,x=e.pos.y-v,r=Math.sqrt(w*w+x*x),s=e.radius-r;if(s>0)return 0===r?(w=c/Math.SQRT2,x=d/Math.SQRT2):(w/=r,x/=r),e.reportCollisionVsWorld(w*s,x*s,w,x,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},destroy:function(){this.body=null,this.system=null},render:function(a,b,c,d,e){var f=this.pos.x-b,g=this.pos.y-c;a.beginPath(),a.arc(f,g,this.radius,0,2*Math.PI,!1),e?(a.fillStyle=d,a.fill()):(a.strokeStyle=d,a.stroke())}}; \ No newline at end of file +return j}}),Object.defineProperty(b.Rope.prototype,"destroyPhase",{get:function(){return!!this._cache[8]}}),b.Text=function(a,c,d,e,f){c=c||0,d=d||0,e=e||" ",f=f||{},e=0===e.length?" ":e.toString(),this.game=a,this.exists=!0,this.name="",this.type=b.TEXT,this.z=0,this.world=new b.Point(c,d),this._text=e,this._font="",this._fontSize=32,this._fontWeight="normal",this._lineSpacing=0,this._charCount=0,this.events=new b.Events(this),this.input=null,this.cameraOffset=new b.Point,this.colors=[],this.setStyle(f),PIXI.Text.call(this,e,this.style),this.position.set(c,d),this._cache=[0,0,0,0,1,0,1,0,0]," "!==e&&this.updateText()},b.Text.prototype=Object.create(PIXI.Text.prototype),b.Text.prototype.constructor=b.Text,b.Text.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this.getBounds())),this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Text.prototype.update=function(){},b.Text.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Text.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.texture.destroy(!0),this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null);var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Text.prototype.setShadow=function(a,b,c,d){this.style.shadowOffsetX=a||0,this.style.shadowOffsetY=b||0,this.style.shadowColor=c||"rgba(0,0,0,0)",this.style.shadowBlur=d||0,this.dirty=!0},b.Text.prototype.setStyle=function(a){a=a||{},a.font=a.font||"bold 20pt Arial",a.fill=a.fill||"black",a.align=a.align||"left",a.stroke=a.stroke||"black",a.strokeThickness=a.strokeThickness||0,a.wordWrap=a.wordWrap||!1,a.wordWrapWidth=a.wordWrapWidth||100,a.shadowOffsetX=a.shadowOffsetX||0,a.shadowOffsetY=a.shadowOffsetY||0,a.shadowColor=a.shadowColor||"rgba(0,0,0,0)",a.shadowBlur=a.shadowBlur||0,this.style=a,this.dirty=!0},b.Text.prototype.updateText=function(){this.texture.baseTexture.resolution=this.resolution,this.context.font=this.style.font;var a=this.text;this.style.wordWrap&&(a=this.wordWrap(this.text));for(var b=a.split(/(?:\r\n|\r|\n)/),c=[],d=0,e=this.determineFontProperties(this.style.font),f=0;f0?this.updateLine(b[f],k,l):(this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(b[f],k,l),this.style.fill&&this.context.fillText(b[f],k,l));this.updateTexture()},b.Text.prototype.updateLine=function(a,b,c){for(var d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d0&&this.drawPolygon(d)}else this.drawPolygon(d)},b.Graphics.prototype.drawTriangles=function(a,c,d){"undefined"==typeof d&&(d=!1);var e,f=new b.Point,g=new b.Point,h=new b.Point,i=[];if(c)if(a[0]instanceof b.Point)for(e=0;e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.textureBuffer.clear(),this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},b.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d,PIXI.TextureCache[e[f].uuid].frame.x=e[f].x,PIXI.TextureCache[e[f].uuid].frame.y=e[f].y;this.buildRetroFontText()}},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(b.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c){a=a||256,b=b||256;var d=document.createElement("canvas");return"string"==typeof c&&""!==c&&(d.id=c),d.width=a,d.height=b,d.style.display="block",d},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkOS(),this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures()},b.Device.LITTLE_ENDIAN=!1,b.Device.prototype={_checkOS:function(){var a=navigator.userAgent;/Playstation Vita/.test(a)?this.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?this.kindle=!0:/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1||this.chromeOS)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1) +},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"opus"==a&&this.opus?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,c,d){a=+a||0;var e=typeof c;"number"!==e&&"string"!==e||!d||d[c]!==a||(c=d=null),d=null==d?1:+d||0,null===c?(c=a,a=0):c=+c||0;for(var f=-1,g=b.Math.max(b.Math.ceil((c-a)/(d||1)),0),h=new Array(g);++fc&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},limitValue:function(a,b,c){return b>a?b:a>c?c:a},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return"undefined"==typeof c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof b.Rectangle)var c=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var c=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?c=c.concat(this.nodes[d].retrieve(a)):(c=c.concat(this.nodes[0].retrieve(a)),c=c.concat(this.nodes[1].retrieve(a)),c=c.concat(this.nodes[2].retrieve(a)),c=c.concat(this.nodes[3].retrieve(a)))),c},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ac;)this._tweens[c].update(this.game.time.now)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Default,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1,g&&0===f&&(f=1);var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},from:function(a,b,c,d,e,f,g){var h={};for(var i in a)h[i]=this._object[i],this._object[i]=a[i];return this.to(h,b,c,d,e,f,g)},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):"string"==typeof l?l=k+parseFloat(l,10):"number"==typeof l&&(j[c]=k+(l-k)*i)}g.push(j),d+=f}var j={};for(c in this._valuesEnd)j[c]=this._valuesEnd[c];if(g.push(j),this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,a&&0===this._repeat&&(this._repeat=1),this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&(this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),!this.isRunning))return!1;if(1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._yoyo&&(this._reversed=!this._reversed),this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Easing.Default=b.Easing.Linear.None,b.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.timeCap=1/60*1e3,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;athis.timeCap&&(this.elapsed=this.timeCap),this.physicsElapsed=this.elapsed/1e3||1/60,this.deltaCap>0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1); +this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.now,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.now,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.now;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(b.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(b.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a,b){if("undefined"==typeof a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,c,d,e,f){return c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null===this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.__tilePattern&&(this.sprite.__tilePattern=!1,this.tilingTexture=!1),this._anims[a]},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){"undefined"==typeof h&&(h=!1),this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onUpdate=null,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if("undefined"==typeof b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length&&(this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete()),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame)),!0):!1},next:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},previous:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose()},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(b.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new b.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new b.Frame(this.index,this.x,this.y,this.width,this.height,this.name,this.uuid);for(var c in this)this.hasOwnProperty(c)&&(a[c]=this[c]);return a},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new b.FrameData,c=0;c=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+c+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._packIndex=0,this.loadPack()):this.beginLoad())},beginLoad:function(){this.progress=0,this.progressFloat=0,this.hasLoaded=!1,this.isLoading=!0,this.onLoadStart.dispatch(this._fileList.length),this._fileList.length>0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.isLoading=!1,this.onLoadComplete.dispatch())},loadPack:function(){if(!this._packList[this._packIndex])return void console.warn("Phaser.Loader loadPackList invalid index "+this._packIndex);var a=this._packList[this._packIndex];null!==a.data?this.packLoadComplete(this._packIndex,!1):this.xhrLoad(this._packIndex,this.baseURL+a.url,"text","packLoadComplete","packLoadError")},packLoadComplete:function(a,c){if("undefined"==typeof c&&(c=!0),!this._packList[a])return void console.warn("Phaser.Loader packLoadComplete invalid index "+a);var d=this._packList[a];if(d.loaded=!0,c)var e=JSON.parse(this._xhr.responseText);else var e=this._packList[a].data;if(e[d.key])for(var f,g=0;g=0&&(b=b.substr(0,b.indexOf("?"))),this.game.device.canPlayAudio(b))return a[c];return null},fileError:function(a){this._fileList[a].loaded=!0,this._fileList[a].error=!0,this.onFileError.dispatch(this._fileList[a].key,this._fileList[a]),console.warn("Phaser.Loader error loading file: "+this._fileList[a].key+" from URL "+this._fileList[a].url),this.nextFile(a,!1)},fileComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader fileComplete invalid index "+a);var c=this._fileList[a];c.loaded=!0;var d=!0;switch(c.type){case"image":this.game.cache.addImage(c.key,c.url,c.data);break;case"spritesheet":this.game.cache.addSpriteSheet(c.key,c.url,c.data,c.frameWidth,c.frameHeight,c.frameMax,c.margin,c.spacing);break;case"textureatlas":if(null==c.atlasURL)this.game.cache.addTextureAtlas(c.key,c.url,c.data,c.atlasData,c.format);else if(d=!1,c.format==b.Loader.TEXTURE_ATLAS_JSON_ARRAY||c.format==b.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","jsonLoadComplete","dataLoadError");else{if(c.format!=b.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+c.format);this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","xmlLoadComplete","dataLoadError")}break;case"bitmapfont":null==c.xmlURL?this.game.cache.addBitmapFont(c.key,c.url,c.data,c.xmlData,c.xSpacing,c.ySpacing):(d=!1,this.xhrLoad(this._fileIndex,this.baseURL+c.xmlURL,"text","xmlLoadComplete","dataLoadError"));break;case"audio":if(this.game.sound.usingWebAudio){if(c.data=this._xhr.response,this.game.cache.addSound(c.key,c.url,c.data,!0,!1),c.autoDecode){var e=this,f=c.key;this.game.cache.updateSound(f,"isDecoding",!0),this.game.sound.context.decodeAudioData(c.data,function(a){a&&(e.game.cache.decodedSound(f,a),e.game.sound.onSoundDecode.dispatch(f,e.game.cache.getSound(f)))})}}else c.data.removeEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete),this.game.cache.addSound(c.key,c.url,c.data,!1,!0);break;case"text":c.data=this._xhr.responseText,this.game.cache.addText(c.key,c.url,c.data);break;case"physics":var g=JSON.parse(this._xhr.responseText);this.game.cache.addPhysicsData(c.key,c.url,g,c.format);break;case"script":c.data=document.createElement("script"),c.data.language="javascript",c.data.type="text/javascript",c.data.defer=!1,c.data.text=this._xhr.responseText,document.head.appendChild(c.data),c.callback&&(c.data=c.callback.call(c.callbackContext,c.key,this._xhr.responseText));break;case"binary":c.data=c.callback?c.callback.call(c.callbackContext,c.key,this._xhr.response):this._xhr.response,this.game.cache.addBinary(c.key,c.data)}d&&this.nextFile(a,!0)},jsonLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader jsonLoadComplete invalid index "+a);var b=this._fileList[a];if(this._ajax&&this._ajax.responseText)var c=JSON.parse(this._ajax.responseText);else var c=JSON.parse(this._xhr.responseText);b.loaded=!0,"tilemap"===b.type?this.game.cache.addTilemap(b.key,b.url,c,b.format):"json"===b.type?this.game.cache.addJSON(b.key,b.url,c):this.game.cache.addTextureAtlas(b.key,b.url,b.data,c,b.format),this.nextFile(a,!0)},csvLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader csvLoadComplete invalid index "+a);var b=this._fileList[a],c=this._xhr.responseText;b.loaded=!0,this.game.cache.addTilemap(b.key,b.url,c,b.format),this.nextFile(a,!0)},dataLoadError:function(a){var b=this._fileList[a];b.loaded=!0,b.error=!0,console.warn("Phaser.Loader dataLoadError: "+b.key),this.nextFile(a,!0)},xmlLoadComplete:function(a){""!==this._xhr.responseType&&"text"!==this._xhr.responseType&&(console.warn("Invalid XML Response Type",this._fileList[a]),console.warn(this._xhr));var b,c=this._xhr.responseText;try{if(window.DOMParser){var d=new DOMParser;b=d.parseFromString(c,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(c)}catch(e){b=void 0}if(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)throw new Error("Phaser.Loader. Invalid XML given");var f=this._fileList[a];f.loaded=!0,"bitmapfont"===f.type?this.game.cache.addBitmapFont(f.key,f.url,f.data,b,f.xSpacing,f.ySpacing):"textureatlas"===f.type?this.game.cache.addTextureAtlas(f.key,f.url,f.data,b,f.format):"xml"===f.type&&this.game.cache.addXML(f.key,f.url,b),this.nextFile(a,!0)},nextFile:function(a,b){this.progressFloat+=this._progressChunk,this.progress=Math.round(this.progressFloat),this.progress>100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.updateCrop()),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this.isPlaying&&!this.allowMultiple&&(this.override||e)&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist"),this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null===this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if("undefined"==typeof this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b){"undefined"==typeof b&&(b=!1),this.paused||(this.play("",0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,c){if(this.isPlaying&&!this.paused&&c!==this.volume){if("undefined"==typeof a&&(a=1e3),"undefined"==typeof c)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");var d=this.game.add.tween(this).to({volume:c},a,b.Easing.Linear.None,!0);d.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a>>0:(a<<24|c<<16|d<<8|e)>>>0},unpackPixel:function(a,c,d,e){return("undefined"==typeof c||null===c)&&(c=b.Color.createColor()),("undefined"==typeof d||null===d)&&(d=!1),("undefined"==typeof e||null===e)&&(e=!1),b.Device.LITTLE_ENDIAN?(c.a=(4278190080&a)>>>24,c.b=(16711680&a)>>>16,c.g=(65280&a)>>>8,c.r=255&a):(c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a),c.color=a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a/255+")",d&&b.Color.RGBtoHSL(c.r,c.g,c.b,c),e&&b.Color.RGBtoHSV(c.r,c.g,c.b,c),c},fromRGBA:function(a,c){return c||(c=b.Color.createColor()),c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a+")",c},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,1)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6}return e},HSLtoRGB:function(a,c,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=b.Color.createColor(d,d,d),0!==c){var f=.5>d?d*(1+c):d+c-d*c,g=2*d-f;e.r=b.Color.hueToColor(g,f,a+1/3),e.g=b.Color.hueToColor(g,f,a),e.b=b.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),b.Color.updateColor(e),e},RGBtoHSV:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,255)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6),e},HSVtoRGB:function(a,c,d,e){"undefined"==typeof e&&(e=b.Color.createColor(0,0,0,1,a,c,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-c),l=d*(1-j*c),m=d*(1-(1-j)*c);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),b.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,c,d,e,f,g,h,i){var j={r:a||0,g:c||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return j.color=b.Color.getColor(j.r,j.g,j.b),j.color32=b.Color.getColor32(j.a,j.r,j.g,j.b),b.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,c,d,e,f){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(c<<8)+d).toString(16).slice(1):"0x"+b.Color.componentToHex(e)+b.Color.componentToHex(a)+b.Color.componentToHex(c)+b.Color.componentToHex(d)},hexToRGB:function(a){var c=b.Color.hexToColor(a);return c?b.Color.getColor32(c.a,c.r,c.g,c.b):void 0},hexToColor:function(a,c){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);c?(c.r=e,c.g=f,c.b=g):c=b.Color.createColor(e,f,g)}return c},webToColor:function(a,c){c||(c=b.Color.createColor());var d=/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\)$/.exec(a);return d&&(c.r=parseInt(d[1],10),c.g=parseInt(d[2],10),c.b=parseInt(d[3],10)),c},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,c){"undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSVtoRGB(e/359,a,c));return d},HSLColorWheel:function(a,c){"undefined"==typeof a&&(a=.5),"undefined"==typeof c&&(c=.5);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSLtoRGB(e/359,a,c));return d},interpolateColor:function(a,c,d,e,f){"undefined"==typeof f&&(f=255);var g=b.Color.getRGB(a),h=b.Color.getRGB(c),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return b.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,c,d,e,f,g){var h=b.Color.getRGB(a),i=(c-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return b.Color.getColor(i,j,k)},interpolateRGB:function(a,c,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-c)*i/h+c,l=(g-d)*i/h+d;return b.Color.getColor(j,k,l)},getRandomColor:function(a,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof c&&(c=255),"undefined"==typeof d&&(d=255),c>255||a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var c=b.Color.getRGB(a);return"rgba("+c.r.toString()+","+c.g.toString()+","+c.b.toString()+","+(c.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=4,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&b.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new b.Physics.BOX2D(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else if(a===b.Physics.BOX2D&&null===this.box2d)this.box2d=new b.Physics.Box2D(this.game,this.config);else if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):c===b.Physics.BOX2D&&this.box2d&&this.box2d.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.skipQuadTree=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0,this.setBoundsToWorld()},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!0);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,g=a.length;g>f;f++)for(var h=0,i=b.length;i>h;h++)this.collideHandler(a[f],b[h],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!1);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,h=a.length;h>f;f++)for(var i=0,j=b.length;j>i;i++)this.collideHandler(a[f],b[i],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length&&a.body)if(a.body.skipQuadTree||this.skipQuadTree)for(var g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,c,d,e,f,g){if(0!==a.length&&0!==c.length)for(var h=0,i=a.children.length;i>h;h++)a.children[h].exists&&(a.children[h].type===b.GROUP?this.collideGroupVsGroup(a.children[h],c,d,e,f,g):this.collideSpriteVsGroup(a.children[h],c,d,e,f,g))},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(a.body&&(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length))for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=this._overlap,b.overlapX=this._overlap,0!==this._overlap)?c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=this._overlap,b.overlapY=this._overlap,0!==this._overlap)?c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0):!1)},separateTile:function(a,b,c){if(!b.enable||!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},getObjectsUnderPointer:function(a,c,d,e){if(0!==c.length&&a.exists){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(c);var f=new b.Rectangle(a.x,a.y,1,1),g=[];this._potentials=this.quadTree.retrieve(f);for(var h=0,i=this._potentials.length;i>h;h++)this._potentials[h].hitTest(a.x,a.y)&&(d&&d.call(e,a,this._potentials[h].sprite),g.push(this._potentials[h].sprite));return g}},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c) +},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.enable=!0,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this.skipQuadTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite.body=null,this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){"undefined"==typeof c&&(c=this.offset.x),"undefined"==typeof d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.area=new b.Rectangle(c,d,1,1),this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.explode=function(a,b){this.start(!0,a,0,b,!1)},b.Particles.Arcade.Emitter.prototype.flow=function(a,b,c){this.start(!1,a,b,c,!0)},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=!1),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a||e?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit())},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.area.width=a,this.area.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.NORTH=0,b.Tilemap.EAST=1,b.Tilemap.SOUTH=2,b.Tilemap.WEST=3,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;if(c=a,!this.game.cache.checkImageKey(c))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+c+'"'),null}if("string"==typeof a&&(a=this.getTilesetIndex(a),null===a&&this.format===b.Tilemap.TILED_JSON))return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+c+'"'),null;if(this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0,!0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;c>l;l++)h.push(new b.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;he;e++)this.setCollisionByIndex(a[e],b,c,!1);d&&this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d,e){if("undefined"==typeof c&&(c=!0),"undefined"==typeof e&&(e=!0),d=this.getLayer(d),!(a>b)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){"undefined"==typeof b&&(b=!0),"undefined"==typeof d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,c,d){if(d=this.getLayer(d),a>=0&&a=0&&c=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,Object.defineProperty(b.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this.wrap=!1,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x)},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gc;c++){if(this._column=null,0>c&&this.wrap?this._column=this.layer.data[c+this.map.height]:c>=this.map.height&&this.wrap?this._column=this.layer.data[c-this.map.height]:this.layer.data[c]&&(this._column=this.layer.data[c]),this._column)for(var e=this._mc.startX,f=this._mc.startX+this._mc.maxX;f>e;e++){var a=null;0>e&&this.wrap?a=this._column[e+this.map.width]:e>=this.map.width&&this.wrap?a=this._column[e-this.map.width]:this._column[e]&&(a=this._column[e]),a&&a.index>-1&&(b=this.map.tilesets[this.map.tiles[a.index][2]],this.debug===!1&&a.alpha!==this.context.globalAlpha&&(this.context.globalAlpha=a.alpha),b.draw(this.context,Math.floor(this._mc.tx),Math.floor(this._mc.ty),a.index),a.debug&&(this.context.fillStyle="rgba(0, 255, 0, 0.4)",this.context.fillRect(Math.floor(this._mc.tx),Math.floor(this._mc.ty),this.map.tileWidth,this.map.tileHeight))),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}return this.debug&&(this.context.globalAlpha=1,this.renderDebug()),this.texture._updateUvs(),this.dirty=!1,this.layer.dirty=!1,!0}},b.TilemapLayer.prototype.renderDebug=function(){this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.strokeStyle=this.debugColor,this.context.fillStyle=this.debugFillColor;for(var a=this._mc.startY,b=this._mc.startY+this._mc.maxY;b>a;a++){if(this._column=null,0>a&&this.wrap?this._column=this.layer.data[a+this.map.height]:a>=this.map.height&&this.wrap?this._column=this.layer.data[a-this.map.height]:this.layer.data[a]&&(this._column=this.layer.data[a]),this._column)for(var c=this._mc.startX,d=this._mc.startX+this._mc.maxX;d>c;c++){var e=null;0>c&&this.wrap?e=this._column[c+this.map.width]:c>=this.map.width&&this.wrap?e=this._column[c-this.map.width]:this._column[c]&&(e=this._column[c]),e&&(e.faceTop||e.faceBottom||e.faceLeft||e.faceRight)&&(this._mc.tx=Math.floor(this._mc.tx),this.debugFill&&this.context.fillRect(this._mc.tx,this._mc.ty,this._mc.cw,this._mc.ch),this.context.beginPath(),e.faceTop&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty)),e.faceBottom&&(this.context.moveTo(this._mc.tx,this._mc.ty+this._mc.ch),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),e.faceLeft&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx,this._mc.ty+this._mc.ch)),e.faceRight&&(this.context.moveTo(this._mc.tx+this._mc.cw,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),this.context.stroke()),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}},Object.defineProperty(b.TilemapLayer.prototype,"scrollX",{get:function(){return this._mc.x},set:function(a){a!==this._mc.x&&(this._mc.x=a,this._mc.startX=this.game.math.floor(this._mc.x/this.map.tileWidth),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"scrollY",{get:function(){return this._mc.y},set:function(a){a!==this._mc.y&&(this._mc.y=a,this._mc.startY=this.game.math.floor(this._mc.y/this.map.tileHeight),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=a,this.dirty=!0}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=a,this.dirty=!0}}),b.TilemapParser={parse:function(a,c,d,e,f,g){if("undefined"==typeof d&&(d=32),"undefined"==typeof e&&(e=32),"undefined"==typeof f&&(f=10),"undefined"==typeof g&&(g=10),"undefined"==typeof c)return this.getEmptyData();if(null===c)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(c);if(h){if(h.format===b.Tilemap.CSV)return this.parseCSV(c,h.data,d,e);if(!h.format||h.format===b.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+c)},parseCSV:function(a,c,d,e){var f=this.getEmptyData();c=c.trim();for(var g=[],h=c.split("\n"),i=h.length,j=0,k=0;kk;k++)i.push(a.layers[f].data[k]>0?new b.Tile(g,a.layers[f].data[k],h,j.length,a.tilewidth,a.tileheight):new b.Tile(g,-1,h,j.length,a.tilewidth,a.tileheight)),h++,h===a.layers[f].width&&(j.push(i),h=0,i=[]);g.data=j,e.push(g)}d.layers=e;for(var m=[],f=0;ft;t++)if(a.layers[f].objects[t].gid){var u={gid:a.layers[f].objects[t].gid,name:a.layers[f].objects[t].name,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};r[a.layers[f].name].push(u)}else if(a.layers[f].objects[t].polyline){var u={name:a.layers[f].objects[t].name,type:a.layers[f].objects[t].type,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,width:a.layers[f].objects[t].width,height:a.layers[f].objects[t].height,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};u.polyline=[];for(var v=0;v=c)&&(c=32),("undefined"==typeof d||0>=d)&&(d=32),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.name=a,this.firstgid=b,this.tileWidth=c,this.tileHeight=d,this.tileMargin=e,this.tileSpacing=f,this.properties=g,this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},b.Tileset.prototype={draw:function(a,b,c,d){this.image&&this.drawCoords[d]&&a.drawImage(this.image,this.drawCoords[d][0],this.drawCoords[d][1],this.tileWidth,this.tileHeight,b,c,this.tileWidth,this.tileHeight)},setImage:function(a){this.image=a,this.rows=Math.round((a.height-this.tileMargin)/(this.tileHeight+this.tileSpacing)),this.columns=Math.round((a.width-this.tileMargin)/(this.tileWidth+this.tileSpacing)),this.total=this.rows*this.columns,this.drawCoords.length=0;for(var b=this.tileMargin,c=this.tileMargin,d=this.firstgid,e=0;e0&&this.enable(a[f],b,c,d,!0));else a instanceof Phaser.Group?this.enable(a.children,b,c,d,e):(this.enableBody(a,b,c,d),e&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,c,d,!0))},enableBody:function(a,b,c,d){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Physics.Ninja.Body(this,a,b,c,d),a.anchor.set(.5))},setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=[]},convertTilemap:function(a,b,c){b=a.getLayer(b),this.clearTilemapLayerBodies(a,b);for(var d=0,e=a.layers[b].height;e>d;d++)for(var f=0,g=a.layers[b].width;g>f;f++){var h=a.layers[b].data[d][f];if(h&&c.hasOwnProperty(h.index)){var i=new Phaser.Physics.Ninja.Body(this,null,3,c[h.index],0,h.worldX+h.centerX,h.worldY+h.centerY,h.width,h.height);a.layers[b].bodies.push(i)}}return a.layers[b].bodies},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,b,c,d,e,f){return"undefined"!=typeof b||a.type!==Phaser.GROUP&&a.type!==Phaser.EMITTER?void(a&&b&&a.exists&&b.exists&&(a.type==Phaser.SPRITE||a.type==Phaser.TILESPRITE?b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsSprite(a,b,c,d,e,f):b.type==Phaser.GROUP||b.type==Phaser.EMITTER?this.collideSpriteVsGroup(a,b,c,d,e,f):b.type==Phaser.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,c,d,e):a.type==Phaser.GROUP?b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type==Phaser.GROUP||b.type==Phaser.EMITTER?this.collideGroupVsGroup(a,b,c,d,e,f):b.type==Phaser.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,c,d,e):a.type==Phaser.TILEMAPLAYER?b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsTilemapLayer(b,a,c,d,e):(b.type==Phaser.GROUP||b.type==Phaser.EMITTER)&&this.collideGroupVsTilemapLayer(b,a,c,d,e):a.type==Phaser.EMITTER&&(b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type==Phaser.GROUP||b.type==Phaser.EMITTER?this.collideGroupVsGroup(a,b,c,d,e,f):b.type==Phaser.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,c,d,e)))):void this.collideGroupVsSelf(a,c,d,e,f)},collideSpriteVsSprite:function(a,b,c,d,e,f){this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++)},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length)for(var g=0,h=b.children.length;h>g;g++)b.children[g].exists&&b.children[g].body&&this.separate(a.body,b.children[g].body,d,e,f)&&(c&&c.call(e,a,b.children[g]),this._total++)},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},separate:function(a,b){return a.type!==Phaser.Physics.NINJA||b.type!==Phaser.Physics.NINJA?!1:a.aabb&&b.aabb?a.aabb.collideAABBVsAABB(b.aabb):a.aabb&&b.tile?a.aabb.collideAABBVsTile(b.tile):a.tile&&b.aabb?b.aabb.collideAABBVsTile(a.tile):a.circle&&b.tile?a.circle.collideCircleVsTile(b.tile):a.tile&&b.circle?b.circle.collideCircleVsTile(a.tile):void 0}},Phaser.Physics.Ninja.Body=function(a,b,c,d,e,f,g,h,i){b=b||null,"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=16),this.sprite=b,this.game=a.game,this.type=Phaser.Physics.NINJA,this.system=a,this.aabb=null,this.tile=null,this.circle=null,this.shape=null,this.drag=1,this.friction=.05,this.gravityScale=1,this.bounce=.3,this.velocity=new Phaser.Point,this.facing=Phaser.NONE,this.immovable=!1,this.collideWorldBounds=!0,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.maxSpeed=8,b&&(f=b.x,g=b.y,h=b.width,i=b.height,0===b.anchor.x&&(f+=.5*b.width),0===b.anchor.y&&(g+=.5*b.height)),1===c?(this.aabb=new Phaser.Physics.Ninja.AABB(this,f,g,h,i),this.shape=this.aabb):2===c?(this.circle=new Phaser.Physics.Ninja.Circle(this,f,g,e),this.shape=this.circle):3===c&&(this.tile=new Phaser.Physics.Ninja.Tile(this,f,g,h,i,d),this.shape=this.tile)},Phaser.Physics.Ninja.Body.prototype={preUpdate:function(){this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.shape.integrate(),this.collideWorldBounds&&this.shape.collideWorldBounds()},postUpdate:function(){this.sprite&&(this.sprite.type===Phaser.TILESPRITE?(this.sprite.x=this.shape.pos.x-this.shape.xw,this.sprite.y=this.shape.pos.y-this.shape.yw):(this.sprite.x=this.shape.pos.x,this.sprite.y=this.shape.pos.y)),this.velocity.x<0?this.facing=Phaser.LEFT:this.velocity.x>0&&(this.facing=Phaser.RIGHT),this.velocity.y<0?this.facing=Phaser.UP:this.velocity.y>0&&(this.facing=Phaser.DOWN)},setZeroVelocity:function(){this.shape.oldpos.x=this.shape.pos.x,this.shape.oldpos.y=this.shape.pos.y},moveTo:function(a,b){var c=a*this.game.time.physicsElapsed,b=this.game.math.degToRad(b);this.shape.pos.x=this.shape.oldpos.x+c*Math.cos(b),this.shape.pos.y=this.shape.oldpos.y+c*Math.sin(b)},moveFrom:function(a,b){var c=-a*this.game.time.physicsElapsed,b=this.game.math.degToRad(b);this.shape.pos.x=this.shape.oldpos.x+c*Math.cos(b),this.shape.pos.y=this.shape.oldpos.y+c*Math.sin(b)},moveLeft:function(a){var b=-a*this.game.time.physicsElapsed;this.shape.pos.x=this.shape.oldpos.x+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.x-this.shape.oldpos.x+b))},moveRight:function(a){var b=a*this.game.time.physicsElapsed;this.shape.pos.x=this.shape.oldpos.x+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.x-this.shape.oldpos.x+b))},moveUp:function(a){var b=-a*this.game.time.physicsElapsed;this.shape.pos.y=this.shape.oldpos.y+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.y-this.shape.oldpos.y+b))},moveDown:function(a){var b=a*this.game.time.physicsElapsed;this.shape.pos.y=this.shape.oldpos.y+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.y-this.shape.oldpos.y+b))},reset:function(){this.velocity.set(0),this.shape.pos.x=this.sprite.x,this.shape.pos.y=this.sprite.y,this.shape.oldpos.copyFrom(this.shape.pos)},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.shape.pos.x-this.shape.oldpos.x},deltaY:function(){return this.shape.pos.y-this.shape.oldpos.y},destroy:function(){this.sprite=null,this.system=null,this.aabb=null,this.tile=null,this.circle=null,this.shape.destroy(),this.shape=null}},Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"x",{get:function(){return this.shape.pos.x},set:function(a){this.shape.pos.x=a}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"y",{get:function(){return this.shape.pos.y},set:function(a){this.shape.pos.y=a}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"width",{get:function(){return this.shape.width}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"height",{get:function(){return this.shape.height}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"bottom",{get:function(){return this.shape.pos.y+this.shape.yw}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"right",{get:function(){return this.shape.pos.x+this.shape.xw}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"speed",{get:function(){return Math.sqrt(this.shape.velocity.x*this.shape.velocity.x+this.shape.velocity.y*this.shape.velocity.y)}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"angle",{get:function(){return Math.atan2(this.shape.velocity.y,this.shape.velocity.x)}}),Phaser.Physics.Ninja.Body.render=function(a,b,c,d){c=c||"rgba(0,255,0,0.4)","undefined"==typeof d&&(d=!0),(b.aabb||b.circle)&&b.shape.render(a,b.game.camera.x,b.game.camera.y,c,d)},Phaser.Physics.Ninja.AABB=function(a,b,c,d,e){this.body=a,this.system=a.system,this.pos=new Phaser.Point(b,c),this.oldpos=new Phaser.Point(b,c),this.xw=Math.abs(d/2),this.yw=Math.abs(e/2),this.width=d,this.height=e,this.oH=0,this.oV=0,this.velocity=new Phaser.Point,this.aabbTileProjections={},this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_FULL]=this.projAABB_Full,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_45DEG]=this.projAABB_45Deg,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_CONCAVE]=this.projAABB_Concave,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_CONVEX]=this.projAABB_Convex,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_22DEGs]=this.projAABB_22DegS,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_22DEGb]=this.projAABB_22DegB,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_67DEGs]=this.projAABB_67DegS,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_67DEGb]=this.projAABB_67DegB,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_HALF]=this.projAABB_Half},Phaser.Physics.Ninja.AABB.prototype.constructor=Phaser.Physics.Ninja.AABB,Phaser.Physics.Ninja.AABB.COL_NONE=0,Phaser.Physics.Ninja.AABB.COL_AXIS=1,Phaser.Physics.Ninja.AABB.COL_OTHER=2,Phaser.Physics.Ninja.AABB.prototype={integrate:function(){var a=this.pos.x,b=this.pos.y;this.pos.x+=this.body.drag*this.pos.x-this.body.drag*this.oldpos.x,this.pos.y+=this.body.drag*this.pos.y-this.body.drag*this.oldpos.y+this.system.gravity*this.body.gravityScale,this.velocity.set(this.pos.x-a,this.pos.y-b),this.oldpos.set(a,b)},reportCollisionVsWorld:function(a,b,c,d){var e,f,g,h,i,j=this.pos,k=this.oldpos,l=j.x-k.x,m=j.y-k.y,n=l*c+m*d,o=n*c,p=n*d,q=l-o,r=m-p;0>n?(h=q*this.body.friction,i=r*this.body.friction,e=1+this.body.bounce,f=o*e,g=p*e,1===c?this.body.touching.left=!0:-1===c&&(this.body.touching.right=!0),1===d?this.body.touching.up=!0:-1===d&&(this.body.touching.down=!0)):f=g=h=i=0,j.x+=a,j.y+=b,k.x+=a+f+h,k.y+=b+g+i},reverse:function(){var a=this.pos.x-this.oldpos.x,b=this.pos.y-this.oldpos.y;this.oldpos.xthis.pos.x&&(this.oldpos.x=this.pos.x-a),this.oldpos.ythis.pos.y&&(this.oldpos.y=this.pos.y-b)},reportCollisionVsBody:function(a,b,c,d,e){var f=this.pos.x-this.oldpos.x,g=this.pos.y-this.oldpos.y,h=f*c+g*d;return this.body.immovable&&e.body.immovable?(a*=.5,b*=.5,this.pos.add(a,b),this.oldpos.set(this.pos.x,this.pos.y),e.pos.subtract(a,b),void e.oldpos.set(e.pos.x,e.pos.y)):void(this.body.immovable||e.body.immovable?this.body.immovable?e.body.immovable||(e.pos.subtract(a,b),0>h&&e.reverse()):(this.pos.subtract(a,b),0>h&&this.reverse()):(a*=.5,b*=.5,this.pos.add(a,b),e.pos.subtract(a,b),0>h&&(this.reverse(),e.reverse())))},collideWorldBounds:function(){var a=this.system.bounds.x-(this.pos.x-this.xw);a>0?this.reportCollisionVsWorld(a,0,1,0,null):(a=this.pos.x+this.xw-this.system.bounds.right,a>0&&this.reportCollisionVsWorld(-a,0,-1,0,null));var b=this.system.bounds.y-(this.pos.y-this.yw);b>0?this.reportCollisionVsWorld(0,b,0,1,null):(b=this.pos.y+this.yw-this.system.bounds.bottom,b>0&&this.reportCollisionVsWorld(0,-b,0,-1,null))},collideAABBVsAABB:function(a){var b=this.pos,c=a,d=c.pos.x,e=c.pos.y,f=c.xw,g=c.yw,h=b.x-d,i=f+this.xw-Math.abs(h);if(i>0){var j=b.y-e,k=g+this.yw-Math.abs(j);if(k>0){k>i?0>h?(i*=-1,k=0):k=0:0>j?(i=0,k*=-1):i=0;var l=Math.sqrt(i*i+k*k);return this.reportCollisionVsBody(i,k,i/l,k/l,c),Phaser.Physics.Ninja.AABB.COL_AXIS}}return!1},collideAABBVsTile:function(a){var b=this.pos.x-a.pos.x,c=a.xw+this.xw-Math.abs(b);if(c>0){var d=this.pos.y-a.pos.y,e=a.yw+this.yw-Math.abs(d);if(e>0)return e>c?0>b?(c*=-1,e=0):e=0:0>d?(c=0,e*=-1):c=0,this.resolveTile(c,e,this,a)}return!1},resolveTile:function(a,b,c,d){return 0i){e*=-i,f*=-i;var j=Math.sqrt(e*e+f*f),k=Math.sqrt(a*a+b*b);return j>k?(c.reportCollisionVsWorld(a,b,a/k,b/k,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(e,f,d.signx,d.signy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_45Deg:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-d.pos.x,h=c.pos.y-f*c.yw-d.pos.y,i=d.sx,j=d.sy,k=g*i+h*j;if(0>k){i*=-k,j*=-k;var l=Math.sqrt(i*i+j*j),m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(i,j,d.sx,d.sy),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_22DegS:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.y-f*c.yw,h=d.pos.y-g;if(h*f>0){var i=c.pos.x-e*c.xw-(d.pos.x+e*d.xw),j=c.pos.y-f*c.yw-(d.pos.y-f*d.yw),k=d.sx,l=d.sy,m=i*k+j*l;if(0>m){k*=-m,l*=-m;var n=Math.sqrt(k*k+l*l),o=Math.sqrt(a*a+b*b),p=Math.abs(h);return n>o?o>p?(c.reportCollisionVsWorld(0,h,0,h/p,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(a,b,a/o,b/o,d),Phaser.Physics.Ninja.AABB.COL_AXIS):n>p?(c.reportCollisionVsWorld(0,h,0,h/p,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(k,l,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_22DegB:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-(d.pos.x-e*d.xw),h=c.pos.y-f*c.yw-(d.pos.y+f*d.yw),i=d.sx,j=d.sy,k=g*i+h*j;if(0>k){i*=-k,j*=-k;var l=Math.sqrt(i*i+j*j),m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(i,j,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER) +}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_67DegS:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw,h=d.pos.x-g;if(h*e>0){var i=c.pos.x-e*c.xw-(d.pos.x-e*d.xw),j=c.pos.y-f*c.yw-(d.pos.y+f*d.yw),k=d.sx,l=d.sy,m=i*k+j*l;if(0>m){k*=-m,l*=-m;var n=Math.sqrt(k*k+l*l),o=Math.sqrt(a*a+b*b),p=Math.abs(h);return n>o?o>p?(c.reportCollisionVsWorld(h,0,h/p,0,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(a,b,a/o,b/o,d),Phaser.Physics.Ninja.AABB.COL_AXIS):n>p?(c.reportCollisionVsWorld(h,0,h/p,0,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(k,l,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_67DegB:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-(d.pos.x+e*d.xw),h=c.pos.y-f*c.yw-(d.pos.y-f*d.yw),i=d.sx,j=d.sy,k=g*i+h*j;if(0>k){i*=-k,j*=-k;var l=Math.sqrt(i*i+j*j),m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(i,j,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_Convex:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-(d.pos.x-e*d.xw),h=c.pos.y-f*c.yw-(d.pos.y-f*d.yw),i=Math.sqrt(g*g+h*h),j=2*d.xw,k=Math.sqrt(j*j+0),l=k-i;if(0>e*g||0>f*h){var m=Math.sqrt(a*a+b*b);return c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS}return l>0?(g/=i,h/=i,c.reportCollisionVsWorld(g*l,h*l,g,h,d),Phaser.Physics.Ninja.AABB.COL_OTHER):Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_Concave:function(a,b,c,d){var e=d.signx,f=d.signy,g=d.pos.x+e*d.xw-(c.pos.x-e*c.xw),h=d.pos.y+f*d.yw-(c.pos.y-f*c.yw),i=2*d.xw,j=Math.sqrt(i*i+0),k=Math.sqrt(g*g+h*h),l=k-j;if(l>0){var m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(g/=k,h/=k,c.reportCollisionVsWorld(g*l,h*l,g,h,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},destroy:function(){this.body=null,this.system=null},render:function(a,b,c,d,e){var f=this.pos.x-this.xw-b,g=this.pos.y-this.yw-c;e?(a.fillStyle=d,a.fillRect(f,g,this.width,this.height)):(a.strokeStyle=d,a.strokeRect(f,g,this.width,this.height))}},Phaser.Physics.Ninja.Tile=function(a,b,c,d,e,f){"undefined"==typeof f&&(f=Phaser.Physics.Ninja.Tile.EMPTY),this.body=a,this.system=a.system,this.id=f,this.type=Phaser.Physics.Ninja.Tile.TYPE_EMPTY,this.pos=new Phaser.Point(b,c),this.oldpos=new Phaser.Point(b,c),this.id>1&&this.id<30&&(e=d),this.xw=Math.abs(d/2),this.yw=Math.abs(e/2),this.width=d,this.height=e,this.velocity=new Phaser.Point,this.signx=0,this.signy=0,this.sx=0,this.sy=0,this.body.gravityScale=0,this.body.collideWorldBounds=!1,this.id>0&&this.setType(this.id)},Phaser.Physics.Ninja.Tile.prototype.constructor=Phaser.Physics.Ninja.Tile,Phaser.Physics.Ninja.Tile.prototype={integrate:function(){var a=this.pos.x,b=this.pos.y;this.pos.x+=this.body.drag*this.pos.x-this.body.drag*this.oldpos.x,this.pos.y+=this.body.drag*this.pos.y-this.body.drag*this.oldpos.y+this.system.gravity*this.body.gravityScale,this.velocity.set(this.pos.x-a,this.pos.y-b),this.oldpos.set(a,b)},collideWorldBounds:function(){var a=this.system.bounds.x-(this.pos.x-this.xw);a>0?this.reportCollisionVsWorld(a,0,1,0,null):(a=this.pos.x+this.xw-this.system.bounds.right,a>0&&this.reportCollisionVsWorld(-a,0,-1,0,null));var b=this.system.bounds.y-(this.pos.y-this.yw);b>0?this.reportCollisionVsWorld(0,b,0,1,null):(b=this.pos.y+this.yw-this.system.bounds.bottom,b>0&&this.reportCollisionVsWorld(0,-b,0,-1,null))},reportCollisionVsWorld:function(a,b,c,d){var e,f,g,h,i,j=this.pos,k=this.oldpos,l=j.x-k.x,m=j.y-k.y,n=l*c+m*d,o=n*c,p=n*d,q=l-o,r=m-p;0>n?(h=q*this.body.friction,i=r*this.body.friction,e=1+this.body.bounce,f=o*e,g=p*e,1===c?this.body.touching.left=!0:-1===c&&(this.body.touching.right=!0),1===d?this.body.touching.up=!0:-1===d&&(this.body.touching.down=!0)):f=g=h=i=0,j.x+=a,j.y+=b,k.x+=a+f+h,k.y+=b+g+i},setType:function(a){return a===Phaser.Physics.Ninja.Tile.EMPTY?this.clear():(this.id=a,this.updateType()),this},clear:function(){this.id=Phaser.Physics.Ninja.Tile.EMPTY,this.updateType()},destroy:function(){this.body=null,this.system=null},updateType:function(){if(0===this.id)return this.type=Phaser.Physics.Ninja.Tile.TYPE_EMPTY,this.signx=0,this.signy=0,this.sx=0,this.sy=0,!0;if(this.idn?(h=q*this.body.friction,i=r*this.body.friction,e=1+this.body.bounce,f=o*e,g=p*e,1===c?this.body.touching.left=!0:-1===c&&(this.body.touching.right=!0),1===d?this.body.touching.up=!0:-1===d&&(this.body.touching.down=!0)):f=g=h=i=0,j.x+=a,j.y+=b,k.x+=a+f+h,k.y+=b+g+i},collideWorldBounds:function(){var a=this.system.bounds.x-(this.pos.x-this.radius);a>0?this.reportCollisionVsWorld(a,0,1,0,null):(a=this.pos.x+this.radius-this.system.bounds.right,a>0&&this.reportCollisionVsWorld(-a,0,-1,0,null));var b=this.system.bounds.y-(this.pos.y-this.radius);b>0?this.reportCollisionVsWorld(0,b,0,1,null):(b=this.pos.y+this.radius-this.system.bounds.bottom,b>0&&this.reportCollisionVsWorld(0,-b,0,-1,null))},collideCircleVsTile:function(a){var b=this.pos,c=this.radius,d=a,e=d.pos.x,f=d.pos.y,g=d.xw,h=d.yw,i=b.x-e,j=g+c-Math.abs(i);if(j>0){var k=b.y-f,l=h+c-Math.abs(k);if(l>0)return this.oH=0,this.oV=0,-g>i?this.oH=-1:i>g&&(this.oH=1),-h>k?this.oV=-1:k>h&&(this.oV=1),this.resolveCircleTile(j,l,this.oH,this.oV,this,d)}},resolveCircleTile:function(a,b,c,d,e,f){return 0a){var g=e.pos.x-f.pos.x;return 0>g?(e.reportCollisionVsWorld(-a,0,-1,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(a,0,1,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS)}var h=e.pos.y-f.pos.y;return 0>h?(e.reportCollisionVsWorld(0,-b,0,-1,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(0,b,0,1,f),Phaser.Physics.Ninja.Circle.COL_AXIS)}return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS}if(0===d)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var i=f.pos.x+c*f.xw,j=f.pos.y+d*f.yw,g=e.pos.x-i,h=e.pos.y-j,k=Math.sqrt(g*g+h*h),l=e.radius-k;return l>0?(0===k?(g=c/Math.SQRT2,h=d/Math.SQRT2):(g/=k,h/=k),e.reportCollisionVsWorld(g*l,h*l,g,h,f),Phaser.Physics.Ninja.Circle.COL_OTHER):Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_45Deg:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c)if(0===d){var j=f.sx,k=f.sy,l=e.pos.x-j*e.radius-f.pos.x,m=e.pos.y-k*e.radius-f.pos.y,n=l*j+m*k;if(0>n){j*=-n,k*=-n,b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1));var o=Math.sqrt(j*j+k*k);return o>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,l=e.pos.x-(f.pos.x-h*f.xw),m=e.pos.y-(f.pos.y+d*f.yw),p=l*-k+m*j;if(p*h*i>0){var q=Math.sqrt(l*l+m*m),r=e.radius-q;if(r>0)return l/=q,m/=q,e.reportCollisionVsWorld(l*r,m*r,l,m,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var n=l*j+m*k,r=e.radius-Math.abs(n);if(r>0)return e.reportCollisionVsWorld(j*r,k*r,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,l=e.pos.x-(f.pos.x+c*f.xw),m=e.pos.y-(f.pos.y-i*f.yw),p=l*-k+m*j;if(0>p*h*i){var q=Math.sqrt(l*l+m*m),r=e.radius-q;if(r>0)return l/=q,m/=q,e.reportCollisionVsWorld(l*r,m*r,l,m,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var n=l*j+m*k,r=e.radius-Math.abs(n);if(r>0)return e.reportCollisionVsWorld(j*r,k*r,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(h*c+i*d>0)return Phaser.Physics.Ninja.Circle.COL_NONE;var s=f.pos.x+c*f.xw,t=f.pos.y+d*f.yw,u=e.pos.x-s,v=e.pos.y-t,q=Math.sqrt(u*u+v*v),r=e.radius-q;if(r>0)return 0===q?(u=c/Math.SQRT2,v=d/Math.SQRT2):(u/=q,v/=q),e.reportCollisionVsWorld(u*r,v*r,u,v,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_Concave:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c){if(0===d){var j=f.pos.x+h*f.xw-e.pos.x,k=f.pos.y+i*f.yw-e.pos.y,l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=n+e.radius-m;return o>0?(b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),o>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER)):Phaser.Physics.Ninja.Circle.COL_NONE}if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=f.pos.x-h*f.xw,q=f.pos.y+d*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=0,s=d):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=f.pos.x+c*f.xw,q=f.pos.y-i*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=c,s=0):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{if(h*c+i*d>0)return Phaser.Physics.Ninja.Circle.COL_NONE;var p=f.pos.x+c*f.xw,q=f.pos.y+d*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=c/Math.SQRT2,s=d/Math.SQRT2):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_Convex:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c)if(0===d){var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),o>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}else{if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(h*c+i*d>0){var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var p=f.pos.x+c*f.xw,q=f.pos.y+d*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=c/Math.SQRT2,s=d/Math.SQRT2):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_Half:function(a,b,c,d,e,f){var g=f.signx,h=f.signy,i=c*g+d*h;if(i>0)return Phaser.Physics.Ninja.Circle.COL_NONE;if(0===c)if(0===d){var j=e.radius,k=e.pos.x-g*j-f.pos.x,l=e.pos.y-h*j-f.pos.y,m=g,n=h,o=k*m+l*n;if(0>o){m*=-o,n*=-o;var p=Math.sqrt(m*m+n*n),q=Math.sqrt(a*a+b*b);return p>q?(e.reportCollisionVsWorld(a,b,a/q,b/q,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(m,n,f.signx,f.signy),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0!==i)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var r=e.pos.x-f.pos.x;if(0>r*g)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var s=e.pos.y-(f.pos.y+d*f.yw),t=Math.sqrt(r*r+s*s),u=e.radius-t;if(u>0)return 0===t?(r=g/Math.SQRT2,s=d/Math.SQRT2):(r/=t,s/=t),e.reportCollisionVsWorld(r*u,s*u,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(0===d){if(0!==i)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var s=e.pos.y-f.pos.y;if(0>s*h)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var r=e.pos.x-(f.pos.x+c*f.xw),t=Math.sqrt(r*r+s*s),u=e.radius-t;if(u>0)return 0===t?(r=g/Math.SQRT2,s=d/Math.SQRT2):(r/=t,s/=t),e.reportCollisionVsWorld(r*u,s*u,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var v=f.pos.x+c*f.xw,w=f.pos.y+d*f.yw,r=e.pos.x-v,s=e.pos.y-w,t=Math.sqrt(r*r+s*s),u=e.radius-t;if(u>0)return 0===t?(r=c/Math.SQRT2,s=d/Math.SQRT2):(r/=t,s/=t),e.reportCollisionVsWorld(r*u,s*u,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_22DegS:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(i*d>0)return Phaser.Physics.Ninja.Circle.COL_NONE;if(0===c){if(0!==d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-(f.pos.x-h*f.xw),n=e.pos.y-f.pos.y,o=m*-k+n*j;if(o*h*i>0){var p=Math.sqrt(m*m+n*n),q=l-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{m-=l*j,n-=l*k;var r=m*j+n*k;if(0>r){j*=-r,k*=-r;var s=Math.sqrt(j*j+k*k);return b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),s>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}}else if(0===d)if(0>h*c){var t=f.pos.x-h*f.xw,u=f.pos.y,v=e.pos.x-t,w=e.pos.y-u;if(0>w*i)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var j=f.sx,k=f.sy,m=e.pos.x-(f.pos.x+c*f.xw),n=e.pos.y-(f.pos.y-i*f.yw),o=m*-k+n*j;if(0>o*h*i){var p=Math.sqrt(m*m+n*n),q=e.radius-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var r=m*j+n*k,q=e.radius-Math.abs(r);if(q>0)return e.reportCollisionVsWorld(j*q,k*q,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{var t=f.pos.x+c*f.xw,u=f.pos.y+d*f.yw,v=e.pos.x-t,w=e.pos.y-u,p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_22DegB:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c)if(0===d){var j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-j*l-(f.pos.x-h*f.xw),n=e.pos.y-k*l-(f.pos.y+i*f.yw),o=m*j+n*k;if(0>o){j*=-o,k*=-o;var p=Math.sqrt(j*j+k*k);return b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),p>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,m=e.pos.x-(f.pos.x-h*f.xw),n=e.pos.y-(f.pos.y+i*f.yw),q=m*-k+n*j;if(q*h*i>0){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var m=e.pos.x-(f.pos.x+h*f.xw),n=e.pos.y-f.pos.y;if(0>n*i)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,q=m*-k+n*j;if(0>q*h*i){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(h*c+i*d>0){var t=Math.sqrt(5),j=1*h/t,k=2*i/t,l=e.radius,m=e.pos.x-j*l-(f.pos.x-h*f.xw),n=e.pos.y-k*l-(f.pos.y+i*f.yw),o=m*j+n*k;return 0>o?(e.reportCollisionVsWorld(-j*o,-k*o,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER):Phaser.Physics.Ninja.Circle.COL_NONE}var u=f.pos.x+c*f.xw,v=f.pos.y+d*f.yw,w=e.pos.x-u,x=e.pos.y-v,r=Math.sqrt(w*w+x*x),s=e.radius-r;if(s>0)return 0===r?(w=c/Math.SQRT2,x=d/Math.SQRT2):(w/=r,x/=r),e.reportCollisionVsWorld(w*s,x*s,w,x,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_67DegS:function(a,b,c,d,e,f){var g=f.signx,h=f.signy;if(g*c>0)return Phaser.Physics.Ninja.Circle.COL_NONE;if(0===c)if(0===d){var i,j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-f.pos.x,n=e.pos.y-(f.pos.y-h*f.yw),o=m*-k+n*j;if(0>o*g*h){var p=Math.sqrt(m*m+n*n),q=l-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{m-=l*j,n-=l*k;var r=m*j+n*k;if(0>r){j*=-r,k*=-r;var s=Math.sqrt(j*j+k*k);return b>a?(i=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(i=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),s>i?(e.reportCollisionVsWorld(a,b,a/i,b/i,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}}else if(0>h*d){var t=f.pos.x,u=f.pos.y-h*f.yw,v=e.pos.x-t,w=e.pos.y-u;if(0>v*g)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var j=f.sx,k=f.sy,m=e.pos.x-(f.pos.x-g*f.xw),n=e.pos.y-(f.pos.y+d*f.yw),o=m*-k+n*j;if(o*g*h>0){var p=Math.sqrt(m*m+n*n),q=e.radius-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var r=m*j+n*k,q=e.radius-Math.abs(r);if(q>0)return e.reportCollisionVsWorld(j*q,k*q,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(0===d)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var t=f.pos.x+c*f.xw,u=f.pos.y+d*f.yw,v=e.pos.x-t,w=e.pos.y-u,p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_67DegB:function(a,b,c,d,e,f){var g=f.signx,h=f.signy;if(0===c)if(0===d){var i,j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-j*l-(f.pos.x+g*f.xw),n=e.pos.y-k*l-(f.pos.y-h*f.yw),o=m*j+n*k;if(0>o){j*=-o,k*=-o;var p=Math.sqrt(j*j+k*k);return b>a?(i=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(i=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),p>i?(e.reportCollisionVsWorld(a,b,a/i,b/i,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0>h*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var m=e.pos.x-f.pos.x,n=e.pos.y-(f.pos.y+h*f.yw);if(0>m*g)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,q=m*-k+n*j;if(q*g*h>0){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else if(0===d){if(0>g*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var t=Math.sqrt(5),j=2*g/t,k=1*h/t,m=e.pos.x-(f.pos.x+g*f.xw),n=e.pos.y-(f.pos.y-h*f.yw),q=m*-k+n*j;if(0>q*g*h){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(g*c+h*d>0){var j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-j*l-(f.pos.x+g*f.xw),n=e.pos.y-k*l-(f.pos.y-h*f.yw),o=m*j+n*k;return 0>o?(e.reportCollisionVsWorld(-j*o,-k*o,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER):Phaser.Physics.Ninja.Circle.COL_NONE}var u=f.pos.x+c*f.xw,v=f.pos.y+d*f.yw,w=e.pos.x-u,x=e.pos.y-v,r=Math.sqrt(w*w+x*x),s=e.radius-r;if(s>0)return 0===r?(w=c/Math.SQRT2,x=d/Math.SQRT2):(w/=r,x/=r),e.reportCollisionVsWorld(w*s,x*s,w,x,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},destroy:function(){this.body=null,this.system=null},render:function(a,b,c,d,e){var f=this.pos.x-b,g=this.pos.y-c;a.beginPath(),a.arc(f,g,this.radius,0,2*Math.PI,!1),e?(a.fillStyle=d,a.fill()):(a.strokeStyle=d,a.stroke())}}; \ No newline at end of file diff --git a/build/custom/phaser-no-libs.js b/build/custom/phaser-no-libs.js index d54e70ef64..541abaf6b9 100644 --- a/build/custom/phaser-no-libs.js +++ b/build/custom/phaser-no-libs.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.1.3 "Ravinda" - Built: Wed Oct 22 2014 22:48:37 +* v2.1.3 "Ravinda" - Built: Wed Oct 22 2014 23:49:48 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -3802,13 +3802,39 @@ Phaser.Polygon = function (points) { */ this.type = Phaser.POLYGON; + // If points isn't an array, use arguments as the array + if (!(points instanceof Array)) + { + points = Array.prototype.slice.call(arguments); + } + + // If this is a flat array of numbers, convert it to points + if (points[0] instanceof Phaser.Point) + { + var p = []; + + for (var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } + + /** + * @property {array} points - An array of Points that make up this Polygon. + */ this.points = points; + + /** + * @property {boolean} closed - Is the Polygon closed or not? + */ + this.closed = true; + }; Phaser.Polygon.prototype = { - type: null, - /** * Creates a copy of the given Polygon. * This is a deep clone, the resulting copy contains new Phaser.Point objects @@ -3819,12 +3845,7 @@ Phaser.Polygon.prototype = { */ clone: function (output) { - var points = []; - - for (var i=0; i < this.points.length; i++) - { - points.push(this.points[i].clone()); - } + var points = this.points.slice(); if (typeof output === "undefined" || output === null) { @@ -3852,12 +3873,15 @@ Phaser.Polygon.prototype = { var inside = false; // use some raycasting to test hits https://github.com/substack/point-in-polygon/blob/master/index.js - for (var i = 0, j = this.points.length - 1; i < this.points.length; j = i++) + + var length = this.points.length / 2; + + for (var i = 0, j = length - 1; i < length; j = i++) { - var xi = this.points[i].x; - var yi = this.points[i].y; - var xj = this.points[j].x; - var yj = this.points[j].y; + var xi = this.points[i * 2].x; + var yi = this.points[i * 2 + 1].y; + var xj = this.points[j * 2].x; + var yj = this.points[j * 2 + 1].y; var intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); @@ -3871,7 +3895,33 @@ Phaser.Polygon.prototype = { }, - setTo : function(points) { + /** + * Sets this Polygon to the given points. + * + * @method Phaser.Polygon#setTo + * @param {Phaser.Point[]|number[]} points - The array of Points. + * @return {boolean} True if the coordinates are within this polygon, otherwise false. + */ + setTo: function (points) { + + // If points isn't an array, use arguments as the array + if (!(points instanceof Array)) + { + points = Array.prototype.slice.call(arguments); + } + + // If this is a flat array of numbers, convert it to points + if (points[0] instanceof Phaser.Point) + { + var p = []; + + for (var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } this.points = points; @@ -3924,7 +3974,7 @@ Object.defineProperty(Phaser.Polygon.prototype, 'points', { /** * Returns the area of the polygon. * -* @name Phaser.Circle#right +* @name Phaser.Polygon#area * @readonly */ Object.defineProperty(Phaser.Polygon.prototype, 'area', { @@ -3973,7 +4023,7 @@ Object.defineProperty(Phaser.Polygon.prototype, 'area', { }); // Because PIXI uses its own Polygon, we'll replace it with ours to avoid duplicating code or confusion. -PIXI.Polygon = Phaser.Polygon; +// PIXI.Polygon = Phaser.Polygon; /** * @author Mat Groves http://matgroves.com/ @Doormat23 @@ -28842,24 +28892,6 @@ Phaser.Graphics.prototype.destroy = function(destroyChildren) { }; -/* -* Draws a {Phaser.Polygon} or a {PIXI.Polygon} filled -* -* @method Phaser.Graphics.prototype.drawPolygon -*/ -Phaser.Graphics.prototype.drawPolygon = function (poly) { - - this.moveTo(poly.points[0].x, poly.points[0].y); - - for (var i = 1; i < poly.points.length; i += 1) - { - this.lineTo(poly.points[i].x, poly.points[i].y); - } - - this.lineTo(poly.points[0].x, poly.points[0].y); - -}; - /* * Draws a single {Phaser.Polygon} triangle from a {Phaser.Point} array * diff --git a/build/custom/phaser-no-libs.min.js b/build/custom/phaser-no-libs.min.js index 46293066ff..0a26da035e 100644 --- a/build/custom/phaser-no-libs.min.js +++ b/build/custom/phaser-no-libs.min.js @@ -1,15 +1,15 @@ /* Phaser (no libs) v2.1.3 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ -(function(){var a=this,b=b||{VERSION:"2.1.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};if(PIXI.InteractionManager=PIXI.InteractionManager||function(){},PIXI.dontSayHello=!0,b.Utils={getProperty:function(a,b){for(var c=b.split("."),d=c.pop(),e=c.length,f=1,g=c[0];e>f&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},transposeArray:function(a){for(var b=new Array(a[0].length),c=0;c-1;d--)b[c][d]=a[d][c]}return b},rotateArray:function(a,c){if("string"!=typeof c&&(c=(c%360+360)%360),90===c||-270===c||"rotateLeft"===c)a=b.Utils.transposeArray(a),a=a.reverse();else if(-90===c||270===c||"rotateRight"===c)a=a.reverse(),a=b.Utils.transposeArray(a);else if(180===Math.abs(c)||"rotate180"===c){for(var d=0;d0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h},mixin:function(a,c){if(!a||"object"!=typeof a)return c;for(var d in a){var e=a[d];if(!e.childNodes&&!e.cloneNode){var f=typeof a[d];c[d]=a[d]&&"object"===f?typeof c[d]===f?b.Utils.mixin(a[d],c[d]):b.Utils.mixin(a[d],new e.constructor):a[d]}}return c}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var c=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;b0?.5*c:0},b.Circle.prototype={type:null,circumference:function(){return 2*Math.PI*this._radius},getBounds:function(){return new b.Rectangle(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRounded(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},angleSq:function(a){return this.subtract(a).angle(a.subtract(this))},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},b.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},b.Point.angleSq=function(a,b){return a.subtract(b).angle(b.subtract(a))},b.Point.negative=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.x,-a.y)},b.Point.multiplyAdd=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+c.x*d,a.y+c.y*d)},b.Point.interpolate=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+(c.x-a.x)*d,a.y+(c.y-a.y)*d)},b.Point.perp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.y,a.x)},b.Point.rperp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(a.y,-a.x)},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRounded(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.project=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c)/c.getMagnitudeSq();return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.projectUnit=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c);return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.normalRightHand=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-1*a.y,a.x)},b.Point.normalize=function(a,c){"undefined"==typeof c&&(c=new b.Point);var d=a.getMagnitude();return 0!==d&&c.setTo(a.x/d,a.y/d),c},b.Point.rotate=function(a,c,d,e,f,g){f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y)));var h=e+Math.atan2(a.y-d,a.x-c);return a.setTo(c+g*Math.cos(h),d+g*Math.sin(h))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},b.Point.parse=function(a,c,d){c=c||"x",d=d||"y";var e=new b.Point;return a[c]&&(e.x=parseInt(a[c],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return"undefined"==typeof b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(a,this)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(b.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"topRight",{get:function(){return new b.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y)},b.Rectangle.size=function(a,c){return"undefined"==typeof c||null===c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c||null===c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(c.x-a.x)-(e.x-d.x)*(c.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((c.x-a.x)*(a.y-d.y)-(c.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new b.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){this.type=b.POLYGON,this.points=a},b.Polygon.prototype={type:null,clone:function(a){for(var c=[],d=0;db!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!c)}return c},setTo:function(a){return this.points=a,this}},b.Polygon.prototype.constructor=b.Polygon,Object.defineProperty(b.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this._points=a}}),Object.defineProperty(b.Polygon.prototype,"area",{get:function(){var a,b,c,d,e,f=Number.MAX_VALUE,g=0;for(e=0;e=l;l++)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;q++)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[a,b]):this.moveTo(a,b),0===this.currentPath.length&&this.moveTo(a,b);var f=this.currentPath,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){var g=a+Math.cos(d)*c,h=b+Math.sin(d)*c,i=this.currentPath.shape.points;if((0!==i.length&&i[i.length-2]!==g||i[i.length-1]!==h)&&(this.moveTo(g,h),i=this.currentPath.shape.points),d===e)return this;!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var j=f?-1*(d-e):e-d,k=Math.abs(j)/(2*Math.PI)*40;if(0===j)return this;for(var l=j/(2*k),m=2*l,n=Math.cos(l),o=Math.sin(l),p=k-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);i.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape({points:[a,b,c,d,e],type:PIXI.Graphics.RREC}),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){return a instanceof Array||(a=Array.prototype.slice.call(arguments)),this.drawShape(new PIXI.Polygon(a)),this},PIXI.Graphics.prototype.clear=function(){return this.lineWidth=0,this.filling=!1,this.dirty=!0,this.clearDirty=!0,this.graphicsData=[],this},PIXI.Graphics.prototype.generateTexture=function(a,b){a=a||1;var c=this.getBounds(),d=new PIXI.CanvasBuffer(c.width*a,c.height*a),e=PIXI.Texture.fromCanvas(d.canvas,b);return e.baseTexture.resolution=a,d.context.scale(a,a),d.context.translate(-c.x,-c.y),PIXI.CanvasGraphics.renderGraphics(this,d.context),e},PIXI.Graphics.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite,a);if(a.spriteBatch.stop(),a.blendModeManager.setBlendMode(this.blendMode),this._mask&&a.maskManager.pushMask(this._mask,a),this._filters&&a.filterManager.pushFilter(this._filterBlock),this.blendMode!==a.spriteBatch.currentBlendMode){a.spriteBatch.currentBlendMode=this.blendMode;var b=PIXI.blendModesWebGL[a.spriteBatch.currentBlendMode];a.spriteBatch.gl.blendFunc(b[0],b[1])}if(this.webGLDirty&&(this.dirty=!0,this.webGLDirty=!1),PIXI.WebGLGraphics.renderGraphics(this,a),this.children.length){a.spriteBatch.start();for(var c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this.mask,a),a.drawCount++,a.spriteBatch.start()}},PIXI.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite,a);var b=a.context,c=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,b.globalCompositeOperation=PIXI.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a);var d=a.resolution;b.setTransform(c.a*d,c.b*d,c.c*d,c.d*d,c.tx*d,c.ty*d),PIXI.CanvasGraphics.renderGraphics(this,b);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},PIXI.Graphics.prototype.getBounds=function(a){this.dirty&&(this.updateBounds(),this.webGLDirty=!0,this.cachedSpriteDirty=!0,this.dirty=!1);var b=this._bounds,c=b.x,d=b.width+b.x,e=b.y,f=b.height+b.y,g=a||this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=n,w=o,x=n,y=o;return x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,b.x=x,b.width=v-x,b.y=y,b.height=w-y,b},PIXI.Graphics.prototype.updateBounds=function(){var a=1/0,b=-1/0,c=1/0,d=-1/0;if(this.graphicsData.length)for(var e,f,g,h,i,j,k=0;kg?g:a,b=g+i>b?g+i:b,c=c>h?h:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.CIRC)g=e.x,h=e.y,i=e.radius+n/2,j=e.radius+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.ELIP)g=e.x,h=e.y,i=e.width+n/2,j=e.height+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else{f=e.points;for(var o=0;og-n?g-n:a,b=g+n>b?g+n:b,c=c>h-n?h-n:c,d=h+n>d?h+n:d}}else a=0,b=0,c=0,d=0;var p=this.boundsPadding,q=this._bounds;q.x=a-p,q.width=b-a+2*p,q.y=c-p,q.height=d-c+2*p},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null;var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this.fillColor=d,this.fillAlpha=e,this.fill=f,this.shape=g,this.type=g.type},PIXI.Graphics.POLY=0,PIXI.Graphics.RECT=1,PIXI.Graphics.CIRC=2,PIXI.Graphics.ELIP=3,PIXI.Graphics.RREC=4,PIXI.Polygon.prototype.type=PIXI.Graphics.POLY,PIXI.Rectangle.prototype.type=PIXI.Graphics.RECT,PIXI.Circle.prototype.type=PIXI.Graphics.CIRC,PIXI.Ellipse.prototype.type=PIXI.Graphics.ELIP,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this._position=new b.Point,this.displayObject=null,this.scale=null,this._targetPosition=new b.Point},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target).multiply(this.target.parent?this.target.parent.worldTransform.a:1,this.target.parent?this.target.parent.worldTransform.d:1),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},resize:function(){},paused:function(){},pauseUpdate:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[])},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created&&this.onPauseUpdateCallback?this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.ArrayList=function(){this.total=0,this.position=0,this.list=[]},b.ArrayList.prototype={add:function(a){return this.exists(a)||(this.list.push(a),this.total++),a},getIndex:function(a){return this.list.indexOf(a)},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0,this.total=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),this.total--,a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)}},Object.defineProperty(b.ArrayList.prototype,"first",{get:function(){return this.position=0,this.total>0?this.list[0]:null}}),Object.defineProperty(b.ArrayList.prototype,"next",{get:function(){return this.positionb;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange;var a=this;this.game.device.cocoonJSApp&&(CocoonJS.App.onSuspended.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"pause"})}),CocoonJS.App.onActivated.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"resume"})}))},b.Stage.prototype.visibilityChange=function(a){return"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(this.disableVisibilityChange||(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden||"pause"===a.type?this.game.gamePaused(a):this.game.gameResumed(a)))},b.Stage.prototype.setBackgroundColor=function(a){if("string"==typeof a){var c=b.Color.hexToColor(a);this._backgroundColor=b.Color.getColor(c.r,c.g,c.b)}else{var c=b.Color.getRGB(a);this._backgroundColor=a}this.backgroundColorSplit=[c.r/255,c.g/255,c.b/255],this.backgroundColorString=b.Color.RGBtoString(c.r,c.g,c.b,255,"#")},b.Stage.prototype.destroy=function(){this._hiddenVar&&document.removeEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=null,window.onpageshow=null,window.onblur=null,window.onfocus=null},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this.game.transparent||this.setBackgroundColor(a)}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.ignoreDestroy=!1,this.classType=b.Sprite,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this.onDestroy=new b.Signal,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a,b){return"undefined"==typeof b&&(b=!1),a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,!b&&a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addMultiple=function(a,b){if(Array.isArray(a))for(var c=0;ca||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,b,c,d,e){"undefined"==typeof e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,f.events&&f.events.onAddedToGroup.dispatch(f,this),null===this.cursor&&(this.cursor=f),f},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.resetCursor=function(a){return"undefined"==typeof a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this._cache[8]=a,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},b.Group.prototype.setProperty=function(a,b,c,d,e){if("undefined"==typeof e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0 +(function(){var a=this,b=b||{VERSION:"2.1.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};if(PIXI.InteractionManager=PIXI.InteractionManager||function(){},PIXI.dontSayHello=!0,b.Utils={getProperty:function(a,b){for(var c=b.split("."),d=c.pop(),e=c.length,f=1,g=c[0];e>f&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},transposeArray:function(a){for(var b=new Array(a[0].length),c=0;c-1;d--)b[c][d]=a[d][c]}return b},rotateArray:function(a,c){if("string"!=typeof c&&(c=(c%360+360)%360),90===c||-270===c||"rotateLeft"===c)a=b.Utils.transposeArray(a),a=a.reverse();else if(-90===c||270===c||"rotateRight"===c)a=a.reverse(),a=b.Utils.transposeArray(a);else if(180===Math.abs(c)||"rotate180"===c){for(var d=0;d0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h},mixin:function(a,c){if(!a||"object"!=typeof a)return c;for(var d in a){var e=a[d];if(!e.childNodes&&!e.cloneNode){var f=typeof a[d];c[d]=a[d]&&"object"===f?typeof c[d]===f?b.Utils.mixin(a[d],c[d]):b.Utils.mixin(a[d],new e.constructor):a[d]}}return c}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var c=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;b0?.5*c:0},b.Circle.prototype={type:null,circumference:function(){return 2*Math.PI*this._radius},getBounds:function(){return new b.Rectangle(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRounded(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},angleSq:function(a){return this.subtract(a).angle(a.subtract(this))},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},b.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},b.Point.angleSq=function(a,b){return a.subtract(b).angle(b.subtract(a))},b.Point.negative=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.x,-a.y)},b.Point.multiplyAdd=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+c.x*d,a.y+c.y*d)},b.Point.interpolate=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+(c.x-a.x)*d,a.y+(c.y-a.y)*d)},b.Point.perp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.y,a.x)},b.Point.rperp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(a.y,-a.x)},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRounded(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.project=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c)/c.getMagnitudeSq();return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.projectUnit=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c);return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.normalRightHand=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-1*a.y,a.x)},b.Point.normalize=function(a,c){"undefined"==typeof c&&(c=new b.Point);var d=a.getMagnitude();return 0!==d&&c.setTo(a.x/d,a.y/d),c},b.Point.rotate=function(a,c,d,e,f,g){f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y)));var h=e+Math.atan2(a.y-d,a.x-c);return a.setTo(c+g*Math.cos(h),d+g*Math.sin(h))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},b.Point.parse=function(a,c,d){c=c||"x",d=d||"y";var e=new b.Point;return a[c]&&(e.x=parseInt(a[c],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return"undefined"==typeof b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(a,this)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(b.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"topRight",{get:function(){return new b.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y)},b.Rectangle.size=function(a,c){return"undefined"==typeof c||null===c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c||null===c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(c.x-a.x)-(e.x-d.x)*(c.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((c.x-a.x)*(a.y-d.y)-(c.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new b.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){if(this.type=b.POLYGON,a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}this.points=a,this.closed=!0},b.Polygon.prototype={clone:function(a){var c=this.points.slice();return"undefined"==typeof a||null===a?a=new b.Polygon(c):a.setTo(c),a},contains:function(a,b){for(var c=!1,d=this.points.length/2,e=0,f=d-1;d>e;f=e++){var g=this.points[2*e].x,h=this.points[2*e+1].y,i=this.points[2*f].x,j=this.points[2*f+1].y,k=h>b!=j>b&&(i-g)*(b-h)/(j-h)+g>a;k&&(c=!c)}return c},setTo:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}return this.points=a,this}},b.Polygon.prototype.constructor=b.Polygon,Object.defineProperty(b.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this._points=a}}),Object.defineProperty(b.Polygon.prototype,"area",{get:function(){var a,b,c,d,e,f=Number.MAX_VALUE,g=0;for(e=0;e=l;l++)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;q++)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[a,b]):this.moveTo(a,b),0===this.currentPath.length&&this.moveTo(a,b);var f=this.currentPath,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){var g=a+Math.cos(d)*c,h=b+Math.sin(d)*c,i=this.currentPath.shape.points;if((0!==i.length&&i[i.length-2]!==g||i[i.length-1]!==h)&&(this.moveTo(g,h),i=this.currentPath.shape.points),d===e)return this;!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var j=f?-1*(d-e):e-d,k=Math.abs(j)/(2*Math.PI)*40;if(0===j)return this;for(var l=j/(2*k),m=2*l,n=Math.cos(l),o=Math.sin(l),p=k-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);i.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape({points:[a,b,c,d,e],type:PIXI.Graphics.RREC}),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){return a instanceof Array||(a=Array.prototype.slice.call(arguments)),this.drawShape(new PIXI.Polygon(a)),this},PIXI.Graphics.prototype.clear=function(){return this.lineWidth=0,this.filling=!1,this.dirty=!0,this.clearDirty=!0,this.graphicsData=[],this},PIXI.Graphics.prototype.generateTexture=function(a,b){a=a||1;var c=this.getBounds(),d=new PIXI.CanvasBuffer(c.width*a,c.height*a),e=PIXI.Texture.fromCanvas(d.canvas,b);return e.baseTexture.resolution=a,d.context.scale(a,a),d.context.translate(-c.x,-c.y),PIXI.CanvasGraphics.renderGraphics(this,d.context),e},PIXI.Graphics.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite,a);if(a.spriteBatch.stop(),a.blendModeManager.setBlendMode(this.blendMode),this._mask&&a.maskManager.pushMask(this._mask,a),this._filters&&a.filterManager.pushFilter(this._filterBlock),this.blendMode!==a.spriteBatch.currentBlendMode){a.spriteBatch.currentBlendMode=this.blendMode;var b=PIXI.blendModesWebGL[a.spriteBatch.currentBlendMode];a.spriteBatch.gl.blendFunc(b[0],b[1])}if(this.webGLDirty&&(this.dirty=!0,this.webGLDirty=!1),PIXI.WebGLGraphics.renderGraphics(this,a),this.children.length){a.spriteBatch.start();for(var c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this.mask,a),a.drawCount++,a.spriteBatch.start()}},PIXI.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite,a);var b=a.context,c=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,b.globalCompositeOperation=PIXI.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a);var d=a.resolution;b.setTransform(c.a*d,c.b*d,c.c*d,c.d*d,c.tx*d,c.ty*d),PIXI.CanvasGraphics.renderGraphics(this,b);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},PIXI.Graphics.prototype.getBounds=function(a){this.dirty&&(this.updateBounds(),this.webGLDirty=!0,this.cachedSpriteDirty=!0,this.dirty=!1);var b=this._bounds,c=b.x,d=b.width+b.x,e=b.y,f=b.height+b.y,g=a||this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=n,w=o,x=n,y=o;return x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,b.x=x,b.width=v-x,b.y=y,b.height=w-y,b +},PIXI.Graphics.prototype.updateBounds=function(){var a=1/0,b=-1/0,c=1/0,d=-1/0;if(this.graphicsData.length)for(var e,f,g,h,i,j,k=0;kg?g:a,b=g+i>b?g+i:b,c=c>h?h:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.CIRC)g=e.x,h=e.y,i=e.radius+n/2,j=e.radius+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.ELIP)g=e.x,h=e.y,i=e.width+n/2,j=e.height+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else{f=e.points;for(var o=0;og-n?g-n:a,b=g+n>b?g+n:b,c=c>h-n?h-n:c,d=h+n>d?h+n:d}}else a=0,b=0,c=0,d=0;var p=this.boundsPadding,q=this._bounds;q.x=a-p,q.width=b-a+2*p,q.y=c-p,q.height=d-c+2*p},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null;var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this.fillColor=d,this.fillAlpha=e,this.fill=f,this.shape=g,this.type=g.type},PIXI.Graphics.POLY=0,PIXI.Graphics.RECT=1,PIXI.Graphics.CIRC=2,PIXI.Graphics.ELIP=3,PIXI.Graphics.RREC=4,PIXI.Polygon.prototype.type=PIXI.Graphics.POLY,PIXI.Rectangle.prototype.type=PIXI.Graphics.RECT,PIXI.Circle.prototype.type=PIXI.Graphics.CIRC,PIXI.Ellipse.prototype.type=PIXI.Graphics.ELIP,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this._position=new b.Point,this.displayObject=null,this.scale=null,this._targetPosition=new b.Point},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target).multiply(this.target.parent?this.target.parent.worldTransform.a:1,this.target.parent?this.target.parent.worldTransform.d:1),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},resize:function(){},paused:function(){},pauseUpdate:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[])},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created&&this.onPauseUpdateCallback?this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.ArrayList=function(){this.total=0,this.position=0,this.list=[]},b.ArrayList.prototype={add:function(a){return this.exists(a)||(this.list.push(a),this.total++),a},getIndex:function(a){return this.list.indexOf(a)},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0,this.total=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),this.total--,a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)}},Object.defineProperty(b.ArrayList.prototype,"first",{get:function(){return this.position=0,this.total>0?this.list[0]:null}}),Object.defineProperty(b.ArrayList.prototype,"next",{get:function(){return this.positionb;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange;var a=this;this.game.device.cocoonJSApp&&(CocoonJS.App.onSuspended.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"pause"})}),CocoonJS.App.onActivated.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"resume"})}))},b.Stage.prototype.visibilityChange=function(a){return"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(this.disableVisibilityChange||(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden||"pause"===a.type?this.game.gamePaused(a):this.game.gameResumed(a)))},b.Stage.prototype.setBackgroundColor=function(a){if("string"==typeof a){var c=b.Color.hexToColor(a);this._backgroundColor=b.Color.getColor(c.r,c.g,c.b)}else{var c=b.Color.getRGB(a);this._backgroundColor=a}this.backgroundColorSplit=[c.r/255,c.g/255,c.b/255],this.backgroundColorString=b.Color.RGBtoString(c.r,c.g,c.b,255,"#")},b.Stage.prototype.destroy=function(){this._hiddenVar&&document.removeEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=null,window.onpageshow=null,window.onblur=null,window.onfocus=null},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this.game.transparent||this.setBackgroundColor(a)}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.ignoreDestroy=!1,this.classType=b.Sprite,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this.onDestroy=new b.Signal,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a,b){return"undefined"==typeof b&&(b=!1),a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,!b&&a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addMultiple=function(a,b){if(Array.isArray(a))for(var c=0;ca||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,b,c,d,e){"undefined"==typeof e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,f.events&&f.events.onAddedToGroup.dispatch(f,this),null===this.cursor&&(this.cursor=f),f},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.resetCursor=function(a){return"undefined"==typeof a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this._cache[8]=a,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},b.Group.prototype.setProperty=function(a,b,c,d,e){if("undefined"==typeof e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0 },b.Group.prototype.checkProperty=function(a,c,d,e){return"undefined"==typeof e&&(e=!1),!b.Utils.getProperty(a,c)&&e?!1:b.Utils.getProperty(a,c)!==d?!1:!0},b.Group.prototype.set=function(a,b,c,d,e,f,g){return"undefined"==typeof g&&(g=!1),b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},b.Group.prototype.setAll=function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof f&&(f=!1),a=a.split("."),e=e||0;for(var g=0,h=this.children.length;h>g;g++)(!c||c&&this.children[g].alive)&&(!d||d&&this.children[g].visible)&&this.setProperty(this.children[g],a,b,e,f)},b.Group.prototype.setAllChildren=function(a,c,d,e,f,g){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),"undefined"==typeof g&&(g=!1),f=f||0;for(var h=0,i=this.children.length;i>h;h++)(!d||d&&this.children[h].alive)&&(!e||e&&this.children[h].visible)&&(this.children[h]instanceof b.Group?this.children[h].setAllChildren(a,c,d,e,f,g):this.setProperty(this.children[h],a.split("."),c,f,g))},b.Group.prototype.checkAll=function(a,b,c,d,e){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);for(var f=0,g=this.children.length;g>f;f++)if((!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&!this.checkProperty(this.children[f],a,b,e))return!1;return!0},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.filter=function(a,c){for(var d=-1,e=this.children.length,f=new b.ArrayList;++de;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b,c){if("undefined"==typeof b&&(b=!1),"undefined"==typeof c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup.dispatch(a,this);var d=this.removeChild(a);return this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},b.Group.prototype.removeAll=function(a,b){if("undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);a&&c&&c.destroy(!0)}while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c,d){if("undefined"==typeof b&&(b=this.children.length-1),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup.dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},b.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},b.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(b.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){awindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.bounds=new b.Rectangle,this.aspectRatio=0,this.sourceAspectRatio=0,this.event=null,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this.parentIsWindow=!1,this.parentNode=null,this.parentScaleFactor=new b.Point(1,1),this.trackParentInterval=2e3,this.onResize=null,this.onResizeContext=null,this._scaleMode=b.ScaleManager.NO_SCALE,this._width=0,this._height=0,this._check=null,this._nextParentCheck=0,this._parentBounds=null,a.config&&this.parseConfig(a.config),this.setupScale(c,d)},b.ScaleManager.EXACT_FIT=0,b.ScaleManager.NO_SCALE=1,b.ScaleManager.SHOW_ALL=2,b.ScaleManager.RESIZE=3,b.ScaleManager.prototype={parseConfig:function(a){a.scaleMode&&(this.scaleMode=a.scaleMode),a.fullScreenScaleMode&&(this.fullScreenScaleMode=a.fullScreenScaleMode),a.fullScreenTarget&&(this.fullScreenTarget=a.fullScreenTarget)},setupScale:function(a,c){var d,e=new b.Rectangle;""!==this.game.parent&&("string"==typeof this.game.parent?d=document.getElementById(this.game.parent):"object"==typeof this.game.parent&&1===this.game.parent.nodeType&&(d=this.game.parent)),d?(this.parentNode=d,this.parentIsWindow=!1,this._parentBounds=this.parentNode.getBoundingClientRect(),e.width=this._parentBounds.width,e.height=this._parentBounds.height,this.offset.set(this._parentBounds.left,this._parentBounds.top)):(this.parentNode=null,this.parentIsWindow=!0,e.width=window.innerWidth,e.height=window.innerHeight);var f=0,g=0;"number"==typeof a?f=a:(this.parentScaleFactor.x=parseInt(a,10)/100,f=e.width*this.parentScaleFactor.x),"number"==typeof c?g=c:(this.parentScaleFactor.y=parseInt(c,10)/100,g=e.height*this.parentScaleFactor.y),this.grid=new b.FlexGrid(this,f,g),this.updateDimensions(f,g,!1)},boot:function(){this.fullScreenTarget=this.game.canvas;var a=this;this._checkOrientation=function(b){return a.checkOrientation(b)},this._checkResize=function(b){return a.checkResize(b)},this._fullScreenChange=function(b){return a.fullScreenChange(b)},window.addEventListener("orientationchange",this._checkOrientation,!1),window.addEventListener("resize",this._checkResize,!1),this.game.device.cocoonJS||(document.addEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.addEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.addEventListener("fullscreenchange",this._fullScreenChange,!1)),this.updateDimensions(this.width,this.height,!0),b.Canvas.getOffset(this.game.canvas,this.offset),this.bounds.setTo(this.offset.x,this.offset.y,this.width,this.height)},setResizeCallback:function(a,b){this.onResize=a,this.onResizeContext=b},setMinMax:function(a,b,c,d){this.minWidth=a,this.minHeight=b,"undefined"!=typeof c&&(this.maxWidth=c),"undefined"!=typeof d&&(this.maxHeight=d)},preUpdate:function(){this.game.time.nowwindow.innerHeight||this.forcePortrait&&window.innerHeight>window.innerWidth)&&(this.incorrectOrientation=!1,this.leaveIncorrectOrientation.dispatch(),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh()):(this.forceLandscape&&window.innerWidthwindow.outerHeight?90:0,c&&this.isPortrait?(this.enterPortrait.dispatch(this.orientation,!1,!0),this.forceLandscape?this.enterIncorrectOrientation.dispatch():this.forcePortrait&&this.leaveIncorrectOrientation.dispatch()):!c&&this.isLandscape&&(this.enterLandscape.dispatch(this.orientation,!0,!1),this.forceLandscape?this.leaveIncorrectOrientation.dispatch():this.forcePortrait&&this.enterIncorrectOrientation.dispatch()),this._scaleMode===b.ScaleManager.RESIZE&&this.parentIsWindow?this.updateDimensions(window.innerWidth,window.innerHeight,!0):(this._scaleMode===b.ScaleManager.EXACT_FIT||this._scaleMode===b.ScaleManager.SHOW_ALL)&&(this.refresh(),this.onResize&&this.onResize.call(this.onResizeContext,this.width,this.height)),this.checkOrientationState()},refresh:function(){if(this.scaleMode!==b.ScaleManager.RESIZE&&(this.game.device.iPad||this.game.device.webApp||this.game.device.desktop||(this.game.device.android&&!this.game.device.chrome?window.scrollTo(0,1):window.scrollTo(0,0)),null===this._check&&this.maxIterations>0)){this._iterations=this.maxIterations;var a=this;this._check=window.setInterval(function(){return a.setScreenSize()},10),this.setScreenSize()}},setScreenSize:function(a){this.scaleMode!==b.ScaleManager.RESIZE&&("undefined"==typeof a&&(a=!1),this.game.device.iPad||this.game.device.webApp||this.game.device.desktop||(this.game.device.android&&!this.game.device.chrome?window.scrollTo(0,1):window.scrollTo(0,0)),this._iterations--,(a||this._iterations<0)&&(document.documentElement.style.minHeight=window.innerHeight+"px",this.incorrectOrientation?this.setMaximum():this.isFullScreen?this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?this.setExactFit():this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&this.setShowAll():this.scaleMode===b.ScaleManager.EXACT_FIT?this.setExactFit():this.scaleMode===b.ScaleManager.SHOW_ALL&&this.setShowAll(),this.setSize(),clearInterval(this._check),this._check=null))},setSize:function(){this.incorrectOrientation||(this.maxWidth&&this.width>this.maxWidth&&(this.width=this.maxWidth),this.maxHeight&&this.height>this.maxHeight&&(this.height=this.maxHeight),this.minWidth&&this.widththis.maxWidth?this.maxWidth:a,this.height=this.maxHeight&&b>this.maxHeight?this.maxHeight:b},startFullScreen:function(a){!this.isFullScreen&&this.game.device.fullscreen&&("undefined"!=typeof a&&this.game.renderType===b.CANVAS&&(this.game.stage.smoothed=a),this._width=this.width,this._height=this.height,this.game.device.fullscreenKeyboard?this.fullScreenTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT):this.fullScreenTarget[this.game.device.requestFullscreen]())},stopFullScreen:function(){document[this.game.device.cancelFullscreen]()},fullScreenChange:function(a){this.event=a,this.isFullScreen?(this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?(this.fullScreenTarget.style.width="100%",this.fullScreenTarget.style.height="100%",this.width=window.outerWidth,this.height=window.outerHeight,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.checkResize()):this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&(this.setShowAll(),this.refresh()),this.enterFullScreen.dispatch(this.width,this.height)):(this.fullScreenTarget.style.width=this.game.width+"px",this.fullScreenTarget.style.height=this.game.height+"px",this.width=this._width,this.height=this._height,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.leaveFullScreen.dispatch(this.width,this.height))},destroy:function(){window.removeEventListener("orientationchange",this._checkOrientation,!1),window.removeEventListener("resize",this._checkResize,!1),this.game.device.cocoonJS||(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1))}},b.ScaleManager.prototype.constructor=b.ScaleManager,Object.defineProperty(b.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){a!==this._scaleMode&&(this._scaleMode=a)}}),Object.defineProperty(b.ScaleManager.prototype,"isFullScreen",{get:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement}}),Object.defineProperty(b.ScaleManager.prototype,"isPortrait",{get:function(){return 0===this.orientation||180===this.orientation}}),Object.defineProperty(b.ScaleManager.prototype,"isLandscape",{get:function(){return 90===this.orientation||-90===this.orientation}}),b.Game=function(a,c,d,e,f,g,h,i){this.id=b.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.transparent=!1,this.antialias=!0,this.preserveDrawingBuffer=!1,this.renderer=null,this.renderType=b.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.rnd=null,this.device=null,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,this._width=800,this._height=600,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):(this.config={enableDebug:!0},"undefined"!=typeof a&&(this._width=a),"undefined"!=typeof c&&(this._height=c),"undefined"!=typeof d&&(this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new b.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new b.StateManager(this,f));var j=this;return this._onBoot=function(){return j.boot()},"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(this._onBoot,0):"undefined"!=typeof window.cordova?document.addEventListener("deviceready",this._onBoot,!1):(document.addEventListener("DOMContentLoaded",this._onBoot,!1),window.addEventListener("load",this._onBoot,!1)),this},b.Game.prototype={parseConfig:function(a){this.config=a,"undefined"==typeof a.enableDebug&&(this.config.enableDebug=!0),a.width&&(this._width=a.width),a.height&&(this._height=a.height),a.renderer&&(this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.preserveDrawingBuffer&&(this.preserveDrawingBuffer=a.preserveDrawingBuffer),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var c=[(Date.now()*Math.random()).toString()];a.seed&&(c=a.seed),this.rnd=new b.RandomDataGenerator(c);var d=null;a.state&&(d=a.state),this.state=new b.StateManager(this,d)},boot:function(){this.isBooted||(document.body?(document.removeEventListener("DOMContentLoaded",this._onBoot),window.removeEventListener("load",this._onBoot),this.onPause=new b.Signal,this.onResume=new b.Signal,this.onBlur=new b.Signal,this.onFocus=new b.Signal,this.isBooted=!0,this.device=new b.Device(this),this.math=b.Math,this.scale=new b.ScaleManager(this,this._width,this._height),this.stage=new b.Stage(this),this.setUpRenderer(),this.device.checkFullScreenSupport(),this.world=new b.World(this),this.add=new b.GameObjectFactory(this),this.make=new b.GameObjectCreator(this),this.cache=new b.Cache(this),this.load=new b.Loader(this),this.time=new b.Time(this),this.tweens=new b.TweenManager(this),this.input=new b.Input(this),this.sound=new b.SoundManager(this),this.physics=new b.Physics(this,this.physicsConfig),this.particles=new b.Particles(this),this.plugins=new b.PluginManager(this),this.net=new b.Net(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.scale.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.config.enableDebug&&(this.debug=new b.Utils.Debug(this),this.debug.boot()),this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new b.RequestAnimationFrame(this,this.config.forceSetTimeOut):new b.RequestAnimationFrame(this,!1),this.raf.start()):window.setTimeout(this._onBoot,20))},showDebugHeader:function(){var a=b.VERSION,c="Canvas",d="HTML Audio",e=1;if(this.renderType===b.WEBGL?(c="WebGL",e++):this.renderType==b.HEADLESS&&(c="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+c+" | "+d+" %c %c http://phaser.io %c %c ♥%c♥%c♥ ","background: #7a66a3","background: #625186","color: #ffffff; background: #43375b;","background: #625186","background: #ccb9f2","background: #625186"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+c+" | "+d+" | http://phaser.io")},setUpRenderer:function(){if(this.canvas=this.config.canvasID?b.Canvas.create(this.width,this.height,this.config.canvasID):b.Canvas.create(this.width,this.height),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===b.CANVAS?!0:!1),this.renderType===b.HEADLESS||this.renderType===b.CANVAS||this.renderType===b.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting."); this.renderType===b.AUTO&&(this.renderType=b.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:1,clearBeforeRender:!0}),this.context=this.renderer.context}else this.renderType=b.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:1,antialias:this.antialias,preserveDrawingBuffer:this.preserveDrawingBuffer}),this.context=null;this.renderType!==b.HEADLESS&&(this.stage.smoothed=this.antialias,b.Canvas.addToDOM(this.canvas,this.parent,!1),b.Canvas.setTouchAction(this.canvas))},update:function(a){this.time.update(a),this._paused||this.pendingStep?(this.state.pauseUpdate(),this.config.enableDebug&&this.debug.preUpdate()):(this.stepping&&(this.pendingStep=!0),this.scale.preUpdate(),this.config.enableDebug&&this.debug.preUpdate(),this.physics.preUpdate(),this.state.preUpdate(),this.plugins.preUpdate(),this.stage.preUpdate(),this.state.update(),this.stage.update(),this.tweens.update(),this.sound.update(),this.input.update(),this.physics.update(),this.particles.update(),this.plugins.update(),this.stage.postUpdate(),this.plugins.postUpdate()),this.renderType!=b.HEADLESS&&(this.state.preRender(),this.renderer.render(this.stage),this.plugins.render(),this.state.render(),this.plugins.postRender(),this.device.cocoonJS&&this.renderType===b.CANVAS&&1===this.stage.currentRenderOrderID&&this.context.fillRect(0,0,0,0))},enableStep:function(){this.stepping=!0,this.pendingStep=!1,this.stepCount=0},disableStep:function(){this.stepping=!1,this.pendingStep=!1},step:function(){this.pendingStep=!1,this.stepCount++},destroy:function(){this.raf.stop(),this.state.destroy(),this.sound.destroy(),this.scale.destroy(),this.stage.destroy(),this.input.destroy(),this.physics.destroy(),this.state=null,this.cache=null,this.input=null,this.load=null,this.sound=null,this.stage=null,this.time=null,this.world=null,this.isBooted=!1,b.Canvas.removeFromDOM(this.canvas)},gamePaused:function(a){this._paused||(this._paused=!0,this.time.gamePaused(),this.sound.setMute(),this.onPause.dispatch(a))},gameResumed:function(a){this._paused&&!this._codePaused&&(this._paused=!1,this.time.gameResumed(),this.input.reset(),this.sound.unsetMute(),this.onResume.dispatch(a))},focusLoss:function(a){this.onBlur.dispatch(a),this.stage.disableVisibilityChange||this.gamePaused(a)},focusGain:function(a){this.onFocus.dispatch(a),this.stage.disableVisibilityChange||this.gameResumed(a)}},b.Game.prototype.constructor=b.Game,Object.defineProperty(b.Game.prototype,"paused",{get:function(){return this._paused},set:function(a){a===!0?(this._paused===!1&&(this._paused=!0,this.sound.setMute(),this.time.gamePaused(),this.onPause.dispatch(this)),this._codePaused=!0):(this._paused&&(this._paused=!1,this.input.reset(),this.sound.unsetMute(),this.time.gameResumed(),this.onResume.dispatch(this)),this._codePaused=!1)}}),b.Input=function(a){this.game=a,this.hitCanvas=null,this.hitContext=null,this.moveCallbacks=[],this.moveCallback=null,this.moveCallbackContext=this,this.pollRate=0,this.disabled=!1,this.multiInputOverride=b.Input.MOUSE_TOUCH_COMBINE,this.position=null,this.speed=null,this.circle=null,this.scale=null,this.maxPointers=10,this.currentPointers=0,this.tapRate=200,this.doubleTapRate=300,this.holdRate=2e3,this.justPressedRate=200,this.justReleasedRate=200,this.recordPointerHistory=!1,this.recordRate=100,this.recordLimit=100,this.pointer1=null,this.pointer2=null,this.pointer3=null,this.pointer4=null,this.pointer5=null,this.pointer6=null,this.pointer7=null,this.pointer8=null,this.pointer9=null,this.pointer10=null,this.activePointer=null,this.mousePointer=null,this.mouse=null,this.keyboard=null,this.touch=null,this.mspointer=null,this.gamepad=null,this.resetLocked=!1,this.onDown=null,this.onUp=null,this.onTap=null,this.onHold=null,this.minPriorityID=0,this.interactiveItems=new b.ArrayList,this._localPoint=new b.Point,this._pollCounter=0,this._oldPosition=null,this._x=0,this._y=0},b.Input.MOUSE_OVERRIDES_TOUCH=0,b.Input.TOUCH_OVERRIDES_MOUSE=1,b.Input.MOUSE_TOUCH_COMBINE=2,b.Input.prototype={boot:function(){this.mousePointer=new b.Pointer(this.game,0),this.pointer1=new b.Pointer(this.game,1),this.pointer2=new b.Pointer(this.game,2),this.mouse=new b.Mouse(this.game),this.keyboard=new b.Keyboard(this.game),this.touch=new b.Touch(this.game),this.mspointer=new b.MSPointer(this.game),this.gamepad=new b.Gamepad(this.game),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.scale=new b.Point(1,1),this.speed=new b.Point,this.position=new b.Point,this._oldPosition=new b.Point,this.circle=new b.Circle(0,0,44),this.activePointer=this.mousePointer,this.currentPointers=0,this.hitCanvas=document.createElement("canvas"),this.hitCanvas.width=1,this.hitCanvas.height=1,this.hitContext=this.hitCanvas.getContext("2d"),this.mouse.start(),this.keyboard.start(),this.touch.start(),this.mspointer.start(),this.mousePointer.active=!0},destroy:function(){this.mouse.stop(),this.keyboard.stop(),this.touch.stop(),this.mspointer.stop(),this.gamepad.stop(),this.moveCallbacks=[]},addMoveCallback:function(a,b){return this.moveCallbacks.push({callback:a,context:b})-1},deleteMoveCallback:function(a){this.moveCallbacks[a]&&this.moveCallbacks.splice(a,1)},addPointer:function(){for(var a=0,c=10;c>0;c--)null===this["pointer"+c]&&(a=c);return 0===a?(console.warn("You can only have 10 Pointer objects"),null):(this["pointer"+a]=new b.Pointer(this.game,a),this["pointer"+a])},update:function(){return this.keyboard.update(),this.pollRate>0&&this._pollCounter=c;c++)this["pointer"+c]&&this["pointer"+c].reset();this.currentPointers=0,"none"!==this.game.canvas.style.cursor&&(this.game.canvas.style.cursor="inherit"),a&&(this.onDown.dispose(),this.onUp.dispose(),this.onTap.dispose(),this.onHold.dispose(),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.moveCallbacks=[]),this._pollCounter=0}},resetSpeed:function(a,b){this._oldPosition.setTo(a,b),this.speed.setTo(0,0)},startPointer:function(a){if(this.maxPointers<10&&this.totalActivePointers==this.maxPointers)return null;if(this.pointer1.active===!1)return this.pointer1.start(a);if(this.pointer2.active===!1)return this.pointer2.start(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active===!1)return this["pointer"+b].start(a);return null},updatePointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.move(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.move(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].move(a);return null},stopPointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.stop(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.stop(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].stop(a);return null},getPointer:function(a){if(a=a||!1,this.pointer1.active==a)return this.pointer1;if(this.pointer2.active==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active==a)return this["pointer"+b];return null},getPointerFromIdentifier:function(a){if(this.pointer1.identifier===a)return this.pointer1;if(this.pointer2.identifier===a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].identifier===a)return this["pointer"+b];return null},getPointerFromId:function(a){if(this.pointer1.pointerId===a)return this.pointer1;if(this.pointer2.pointerId===a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].pointerId===a)return this["pointer"+b];return null},getLocalPosition:function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.worldTransform,f=1/(e.a*e.d+e.c*-e.b);return d.setTo(e.d*f*c.x+-e.c*f*c.y+(e.ty*e.c-e.tx*e.d)*f,e.a*f*c.y+-e.b*f*c.x+(-e.ty*e.a+e.tx*e.b)*f)},hitTest:function(a,c,d){if(!a.worldVisible)return!1;if(this.getLocalPosition(a,c,this._localPoint),d.copyFrom(this._localPoint),a.hitArea&&a.hitArea.contains)return a.hitArea.contains(this._localPoint.x,this._localPoint.y);if(a instanceof PIXI.Sprite){var e=a.texture.frame.width,f=a.texture.frame.height,g=-e*a.anchor.x;if(this._localPoint.x>=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],c,d))return!0;return!1}},b.Input.prototype.constructor=b.Input,Object.defineProperty(b.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounter=a;a++)this["pointer"+a]&&this["pointer"+a].active&&this.currentPointers++;return this.currentPointers}}),Object.defineProperty(b.Input.prototype,"worldX",{get:function(){return this.game.camera.view.x+this.x}}),Object.defineProperty(b.Input.prototype,"worldY",{get:function(){return this.game.camera.view.y+this.y}}),b.Key=function(a,c){this.game=a,this.enabled=!0,this.event=null,this.isDown=!1,this.isUp=!0,this.altKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.timeDown=0,this.duration=0,this.timeUp=-2500,this.repeats=0,this.keyCode=c,this.onDown=new b.Signal,this.onHoldCallback=null,this.onHoldContext=null,this.onUp=new b.Signal},b.Key.prototype={update:function(){this.enabled&&this.isDown&&(this.duration=this.game.time.now-this.timeDown,this.repeats++,this.onHoldCallback&&this.onHoldCallback.call(this.onHoldContext,this))},processKeyDown:function(a){this.enabled&&(this.event=a,this.isDown||(this.altKey=a.altKey,this.ctrlKey=a.ctrlKey,this.shiftKey=a.shiftKey,this.isDown=!0,this.isUp=!1,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0,this.onDown.dispatch(this)))},processKeyUp:function(a){this.enabled&&(this.event=a,this.isUp||(this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.onUp.dispatch(this)))},reset:function(a){"undefined"==typeof a&&(a=!0),this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=0,this.enabled=!0,a&&(this.onDown.removeAll(),this.onUp.removeAll(),this.onHoldCallback=null,this.onHoldContext=null)},justPressed:function(a){return"undefined"==typeof a&&(a=50),this.isDown&&this.duration0&&this.processInteractiveObjects(!0),this.dirty=!1),this._holdSent===!1&&this.duration>=this.game.input.holdRate&&((this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.now>=this._nextDrop&&(this._nextDrop=this.game.time.now+this.game.input.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>this.game.input.recordLimit&&this._history.shift()))},move:function(a,c){if(!this.game.input.pollLocked){if("undefined"==typeof c&&(c=!1),"undefined"!=typeof a.button&&(this.button=a.button),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&this.game.input.mouse.locked&&!c&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*this.game.input.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*this.game.input.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(this.game.input.multiInputOverride===b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.activePointer=this,this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.game.input.x,this.game.input.y),this.game.input.circle.x=this.game.input.x,this.game.input.circle.y=this.game.input.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var d=this.game.input.moveCallbacks.length;d--;)this.game.input.moveCallbacks[d].callback.call(this.game.input.moveCallbacks[d].context,this,this.x,this.y,c);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):this.game.input.interactiveItems.total>0&&this.processInteractiveObjects(c),this}},processInteractiveObjects:function(a){this.game.input.interactiveItems.setAll("checked",!1),this._highestRenderOrderID=Number.MAX_SAFE_INTEGER,this._highestRenderObject=null,this._highestInputPriorityID=-1;var b=this.game.input.interactiveItems.first;do b&&b.validForInput(this._highestInputPriorityID,this._highestRenderOrderID,!1)&&(b.checked=!0,(a&&b.checkPointerDown(this,!0)||!a&&b.checkPointerOver(this,!0))&&(this._highestRenderOrderID=b.sprite._cache[3],this._highestInputPriorityID=b.priorityID,this._highestRenderObject=b)),b=this.game.input.interactiveItems.next;while(null!==b);var b=this.game.input.interactiveItems.first;do b&&!b.checked&&b.validForInput(this._highestInputPriorityID,this._highestRenderOrderID,!0)&&(a&&b.checkPointerDown(this,!1)||!a&&b.checkPointerOver(this,!1))&&(this._highestRenderOrderID=b.sprite._cache[3],this._highestInputPriorityID=b.priorityID,this._highestRenderObject=b),b=this.game.input.interactiveItems.next;while(null!==b);return null===this._highestRenderObject?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=this._highestRenderObject,this._highestRenderObject._pointerOverHandler(this)):this.targetObject===this._highestRenderObject?this._highestRenderObject.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=this._highestRenderObject,this.targetObject._pointerOverHandler(this)),null!==this.targetObject},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){return this._stateReset?void a.preventDefault():(this.timeUp=this.game.time.now,(this.game.input.multiInputOverride===b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.onUp.dispatch(this,a),this.duration>=0&&this.duration<=this.game.input.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=!1,this.isDown=!1,this.isUp=!0,this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.callAll("_releasedHandler",this),this.targetObject=null,this) },justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.now},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isMouse===!1&&(this.active=!1),this.pointerId=null,this.identifier=null,this.dirty=!1,this.isDown=!1,this.isUp=!0,this.totalTouches=0,this._holdSent=!1,this._history.length=0,this._stateReset=!0,this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null},resetMovement:function(){this.movementX=0,this.movementY=0}},b.Pointer.prototype.constructor=b.Pointer,Object.defineProperty(b.Pointer.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.now-this.timeDown}}),Object.defineProperty(b.Pointer.prototype,"worldX",{get:function(){return this.game.world.camera.x+this.x}}),Object.defineProperty(b.Pointer.prototype,"worldY",{get:function(){return this.game.world.camera.y+this.y}}),b.Touch=function(a){this.game=a,this.disabled=!1,this.callbackContext=this.game,this.touchStartCallback=null,this.touchMoveCallback=null,this.touchEndCallback=null,this.touchEnterCallback=null,this.touchLeaveCallback=null,this.touchCancelCallback=null,this.preventDefault=!0,this.event=null,this._onTouchStart=null,this._onTouchMove=null,this._onTouchEnd=null,this._onTouchEnter=null,this._onTouchLeave=null,this._onTouchCancel=null,this._onTouchMove=null},b.Touch.prototype={start:function(){if(null===this._onTouchStart){var a=this;this.game.device.touch&&(this._onTouchStart=function(b){return a.onTouchStart(b)},this._onTouchMove=function(b){return a.onTouchMove(b)},this._onTouchEnd=function(b){return a.onTouchEnd(b)},this._onTouchEnter=function(b){return a.onTouchEnter(b)},this._onTouchLeave=function(b){return a.onTouchLeave(b)},this._onTouchCancel=function(b){return a.onTouchCancel(b)},this.game.canvas.addEventListener("touchstart",this._onTouchStart,!1),this.game.canvas.addEventListener("touchmove",this._onTouchMove,!1),this.game.canvas.addEventListener("touchend",this._onTouchEnd,!1),this.game.canvas.addEventListener("touchcancel",this._onTouchCancel,!1),this.game.device.cocoonJS||(this.game.canvas.addEventListener("touchenter",this._onTouchEnter,!1),this.game.canvas.addEventListener("touchleave",this._onTouchLeave,!1)))}},consumeDocumentTouches:function(){this._documentTouchMove=function(a){a.preventDefault()},document.addEventListener("touchmove",this._documentTouchMove,!1)},onTouchStart:function(a){if(this.event=a,this.touchStartCallback&&this.touchStartCallback.call(this.callbackContext,a),!this.game.input.disabled&&!this.disabled){this.preventDefault&&a.preventDefault();for(var b=0;b0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var c=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.game.time.now},justReleased:function(a){return a=a||250,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.pad=null,this.game=null}},b.GamepadButton.prototype.constructor=b.GamepadButton,b.InputHandler=function(a){this.sprite=a,this.game=a.game,this.enabled=!1,this.checked=!1,this.priorityID=0,this.useHandCursor=!1,this._setHandCursor=!1,this.isDragged=!1,this.allowHorizontalDrag=!0,this.allowVerticalDrag=!0,this.bringToTop=!1,this.snapOffset=null,this.snapOnDrag=!1,this.snapOnRelease=!1,this.snapX=0,this.snapY=0,this.snapOffsetX=0,this.snapOffsetY=0,this.pixelPerfectOver=!1,this.pixelPerfectClick=!1,this.pixelPerfectAlpha=255,this.draggable=!1,this.boundsRect=null,this.boundsSprite=null,this.consumePointerEvent=!1,this.scaleLayer=!1,this._dragPhase=!1,this._wasEnabled=!1,this._tempPoint=new b.Point,this._pointerData=[],this._pointerData.push({id:0,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1})},b.InputHandler.prototype={start:function(a,c){if(a=a||0,"undefined"==typeof c&&(c=!1),this.enabled===!1){this.game.input.interactiveItems.add(this),this.useHandCursor=c,this.priorityID=a;for(var d=0;10>d;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new b.Point,this.enabled=!0,this._wasEnabled=!0,this.sprite.events&&null===this.sprite.events.onInputOver&&(this.sprite.events.onInputOver=new b.Signal,this.sprite.events.onInputOut=new b.Signal,this.sprite.events.onInputDown=new b.Signal,this.sprite.events.onInputUp=new b.Signal,this.sprite.events.onDragStart=new b.Signal,this.sprite.events.onDragStop=new b.Signal)}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return"undefined"==typeof c&&(c=!0),0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite._cache[3]b;b++)if(this._pointerData[b].isOver)return!0}return!1},pointerOut:function(a){if(this.enabled){if("undefined"!=typeof a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0}return!1},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?("undefined"==typeof b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?("undefined"==typeof b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){null!==this.sprite&&(this._pointerData[a.id].isOver===!1||a.dirty)&&(this._pointerData[a.id].isOver=!0,this._pointerData[a.id].isOut=!1,this._pointerData[a.id].timeOver=this.game.time.now,this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),this.sprite&&this.sprite.events&&this.sprite.events.onInputOver.dispatch(this.sprite,a))},_pointerOutHandler:function(a){null!==this.sprite&&(this._pointerData[a.id].isOver=!1,this._pointerData[a.id].isOut=!0,this._pointerData[a.id].timeOut=this.game.time.now,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut.dispatch(this.sprite,a))},_touchedHandler:function(a){if(null!==this.sprite){if(this._pointerData[a.id].isDown===!1&&this._pointerData[a.id].isOver===!0){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;this._pointerData[a.id].isDown=!0,this._pointerData[a.id].isUp=!1,this._pointerData[a.id].timeDown=this.game.time.now,this.sprite&&this.sprite.events&&this.sprite.events.onInputDown.dispatch(this.sprite,a),a.dirty=!0,this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){null!==this.sprite&&this._pointerData[a.id].isDown&&a.isUp&&(this._pointerData[a.id].isDown=!1,this._pointerData[a.id].isUp=!0,this._pointerData[a.id].timeUp=this.game.time.now,this._pointerData[a.id].downDuration=this._pointerData[a.id].timeUp-this._pointerData[a.id].timeDown,this.checkPointerOver(a)?this.sprite&&this.sprite.events&&this.sprite.events.onInputUp.dispatch(this.sprite,a,!0):(this.sprite&&this.sprite.events&&this.sprite.events.onInputUp.dispatch(this.sprite,a,!1),this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1)),a.dirty=!0,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a))},updateDrag:function(a){if(a.isUp)return this.stopDrag(a),!1;var b=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,c=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;return this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=b),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)):(this.allowHorizontalDrag&&(this.sprite.x=b),this.allowVerticalDrag&&(this.sprite.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1},startDrag:function(a){if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else{if(this.dragFromCenter){var b=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-b.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-b.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.sprite.events.onDragStart.dispatch(this.sprite,a)},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop.dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.xthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-this.sprite.width),this.sprite.ythis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-this.sprite.height))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.camerOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.camerOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.camerOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.camerOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.xthis.boundsSprite.x+this.boundsSprite.width&&(this.sprite.x=this.boundsSprite.x+this.boundsSprite.width-this.sprite.width),this.sprite.ythis.boundsSprite.y+this.boundsSprite.height&&(this.sprite.y=this.boundsSprite.y+this.boundsSprite.height-this.sprite.height))}},b.InputHandler.prototype.constructor=b.InputHandler,b.Events=function(a){this.parent=a,this.onAddedToGroup=new b.Signal,this.onRemovedFromGroup=new b.Signal,this.onDestroy=new b.Signal,this.onKilled=new b.Signal,this.onRevived=new b.Signal,this.onOutOfBounds=new b.Signal,this.onEnterBounds=new b.Signal,this.onInputOver=null,this.onInputOut=null,this.onInputDown=null,this.onInputUp=null,this.onDragStart=null,this.onDragStop=null,this.onAnimationStart=null,this.onAnimationComplete=null,this.onAnimationLoop=null},b.Events.prototype={destroy:function(){this.parent=null,this.onDestroy.dispose(),this.onAddedToGroup.dispose(),this.onRemovedFromGroup.dispose(),this.onKilled.dispose(),this.onRevived.dispose(),this.onOutOfBounds.dispose(),this.onInputOver&&(this.onInputOver.dispose(),this.onInputOut.dispose(),this.onInputDown.dispose(),this.onInputUp.dispose(),this.onDragStart.dispose(),this.onDragStop.dispose()),this.onAnimationStart&&(this.onAnimationStart.dispose(),this.onAnimationComplete.dispose(),this.onAnimationLoop.dispose()) }},b.Events.prototype.constructor=b.Events,b.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},b.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Image(this.game,a,c,d,e))},sprite:function(a,b,c,d,e){return"undefined"==typeof e&&(e=this.world),e.create(a,b,c,d)},tween:function(a){return this.game.tweens.create(a)},group:function(a,c,d,e,f){return new b.Group(this.game,a,c,d,e,f)},physicsGroup:function(a,c,d,e){return new b.Group(this.game,c,d,e,!0,a)},spriteBatch:function(a,c,d){return"undefined"==typeof a&&(a=null),"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,c,d,e,f,g,h){return"undefined"==typeof h&&(h=this.world),h.add(new b.TileSprite(this.game,a,c,d,e,f,g))},rope:function(a,c,d,e,f,g){return"undefined"==typeof g&&(g=this.world),g.add(new b.Rope(this.game,a,c,d,e,f))},text:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Text(this.game,a,c,d,e))},button:function(a,c,d,e,f,g,h,i,j,k){return"undefined"==typeof k&&(k=this.world),k.add(new b.Button(this.game,a,c,d,e,f,g,h,i,j))},graphics:function(a,c,d){return"undefined"==typeof d&&(d=this.world),d.add(new b.Graphics(this.game,a,c))},emitter:function(a,c,d){return this.game.particles.add(new b.Particles.Arcade.Emitter(this.game,a,c,d))},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f,g){return"undefined"==typeof g&&(g=this.world),g.add(new b.BitmapText(this.game,a,c,d,e,f))},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a},plugin:function(a){return this.game.plugins.add(a)}},b.GameObjectFactory.prototype.constructor=b.GameObjectFactory,b.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},b.GameObjectCreator.prototype={image:function(a,c,d,e){return new b.Image(this.game,a,c,d,e)},sprite:function(a,c,d,e){return new b.Sprite(this.game,a,c,d,e)},tween:function(a){return new b.Tween(a,this.game)},group:function(a,c,d,e,f){return new b.Group(this.game,null,c,d,e,f)},spriteBatch:function(a,c,d){return"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,c,d,e,f,g){return new b.TileSprite(this.game,a,c,d,e,f,g)},rope:function(a,c,d,e,f){return new b.Rope(this.game,a,c,d,e,f)},text:function(a,c,d,e){return new b.Text(this.game,a,c,d,e)},button:function(a,c,d,e,f,g,h,i,j){return new b.Button(this.game,a,c,d,e,f,g,h,i,j)},graphics:function(a,c){return new b.Graphics(this.game,a,c)},emitter:function(a,c,d){return new b.Particles.Arcade.Emitter(this.game,a,c,d)},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f){return new b.BitmapText(this.game,a,c,d,e,f)},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a}},b.GameObjectCreator.prototype.constructor=b.GameObjectCreator,b.BitmapData=function(a,c,d,e){"undefined"==typeof d&&(d=256),"undefined"==typeof e&&(e=256),this.game=a,this.key=c,this.width=d,this.height=e,this.canvas=b.Canvas.create(d,e,"",!0),this.context=this.canvas.getContext("2d"),this.ctx=this.context,this.imageData=this.context.getImageData(0,0,d,e),this.data=this.imageData.data,this.pixels=null,this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data,this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,d,e,"bitmapData",a.rnd.uuid()),this.texture.frame=this.textureFrame,this.type=b.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new b.Point,this._size=new b.Point,this._scale=new b.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new b.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new b.Circle},b.BitmapData.prototype={add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)b.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(c,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){"undefined"==typeof c&&(c=0),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=this.width),"undefined"==typeof f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,c,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=b.Color.packPixel(a,c,d,e);void 0!==j&&j instanceof b.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,c,d,e){if(("undefined"==typeof a||null===a)&&(a=!1),("undefined"==typeof c||null===c)&&(c=!1),("undefined"==typeof d||null===d)&&(d=!1),a||c||d){"undefined"==typeof e&&(e=new b.Rectangle(0,0,this.width,this.height));for(var f=b.Color.createColor(),g=e.y;g=0&&a<=this.width&&c>=0&&c<=this.height&&(this.pixels[c*this.width+a]=b.Device.LITTLE_ENDIAN?g<<24|f<<16|e<<8|d:d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,c,d){d||(d=b.Color.createColor());var e=~~(a+c*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,c,d,e,f){return b.Color.unpackPixel(this.getPixel32(a,c),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){"undefined"==typeof a&&(a=0);var c=b.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do b.Color.unpackPixel(this.getPixel32(d,e),c),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===c.a&&!g);return c.x=d,c.y=e,c},getBounds:function(a){return"undefined"==typeof a&&(a=new b.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(("undefined"==typeof a||null===a)&&(a=this),this._image=a,a instanceof b.Sprite||a instanceof b.Image||a instanceof b.Text)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,this._image=a.texture.baseTexture.source,a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture);else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof b.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}return("undefined"==typeof c||null===c)&&(c=0),("undefined"==typeof d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),("undefined"==typeof g||null===g)&&(g=c),("undefined"==typeof h||null===h)&&(h=d),("undefined"==typeof i||null===i)&&(i=this._size.x),("undefined"==typeof j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),"undefined"==typeof q&&(q=null),"undefined"==typeof r&&(r=!1),this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y?void 0:(this._alpha.prev=this.context.globalAlpha,this.context.save(),this.context.globalAlpha=this._alpha.current,q&&(this.context.globalCompositeOperation=q),r&&(g|=0,h|=0),this.context.translate(g,h),this.context.scale(this._scale.x,this._scale.y),this.context.rotate(this._rotate),this.context.drawImage(this._image,this._pos.x+c,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),this.context.restore(),this.context.globalAlpha=this._alpha.prev,this.dirty=!0,this)},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},shadow:function(a,b,c,d){"undefined"==typeof a||null===a?this.context.shadowColor="rgba(0,0,0,0)":(this.context.shadowColor=a,this.context.shadowBlur=b||5,this.context.shadowOffsetX=c||10,this.context.shadowOffsetY=d||10)},alphaMask:function(a,b,c,d){return"undefined"==typeof d||null===d?this.draw(b).blendSourceAtop():this.draw(b,d.x,d.y,d.width,d.height).blendSourceAtop(),"undefined"==typeof c||null===c?this.draw(a).blendReset():this.draw(a,c.x,c.y,c.width,c.height).blendReset(),this},extract:function(a,b,c,d,e,f,g,h,i){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b),"undefined"==typeof h&&(h=c),"undefined"==typeof i&&(i=d),f&&a.resize(this.width,this.height),this.processPixelRGB(function(f,j,k){return f.r===b&&f.g===c&&f.b===d&&a.setPixel32(j,k,g,h,i,e,!1),!1},this),a.context.putImageData(a.imageData,0,0),a.dirty=!0,a},rect:function(a,b,c,d,e){return"undefined"!=typeof e&&(this.context.fillStyle=e),this.context.fillRect(a,b,c,d),this},circle:function(a,b,c,d){return"undefined"!=typeof d&&(this.context.fillStyle=d),this.context.beginPath(),this.context.arc(a,b,c,0,2*Math.PI,!1),this.context.closePath(),this.context.fill(),this},textureLine:function(a,c,d){if("undefined"==typeof d&&(d="repeat-x"),"string"!=typeof c||(c=this.game.cache.getImage(c))){var e=a.length;return"no-repeat"===d&&e>c.width&&(e=c.width),this.context.fillStyle=this.context.createPattern(c,d),this._circle=new b.Circle(a.start.x,a.start.y,c.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),this.context.save(),this.context.translate(this._pos.x,this._pos.y),this.context.rotate(a.angle),this.context.fillRect(0,0,e,c.height),this.context.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},blendReset:function(){return this.context.globalCompositeOperation="source-over",this},blendSourceOver:function(){return this.context.globalCompositeOperation="source-over",this},blendSourceIn:function(){return this.context.globalCompositeOperation="source-in",this},blendSourceOut:function(){return this.context.globalCompositeOperation="source-out",this},blendSourceAtop:function(){return this.context.globalCompositeOperation="source-atop",this},blendDestinationOver:function(){return this.context.globalCompositeOperation="destination-over",this},blendDestinationIn:function(){return this.context.globalCompositeOperation="destination-in",this},blendDestinationOut:function(){return this.context.globalCompositeOperation="destination-out",this},blendDestinationAtop:function(){return this.context.globalCompositeOperation="destination-atop",this},blendXor:function(){return this.context.globalCompositeOperation="xor",this},blendAdd:function(){return this.context.globalCompositeOperation="lighter",this},blendMultiply:function(){return this.context.globalCompositeOperation="multiply",this},blendScreen:function(){return this.context.globalCompositeOperation="screen",this},blendOverlay:function(){return this.context.globalCompositeOperation="overlay",this},blendDarken:function(){return this.context.globalCompositeOperation="darken",this},blendLighten:function(){return this.context.globalCompositeOperation="lighten",this},blendColorDodge:function(){return this.context.globalCompositeOperation="color-dodge",this},blendColorBurn:function(){return this.context.globalCompositeOperation="color-burn",this},blendHardLight:function(){return this.context.globalCompositeOperation="hard-light",this},blendSoftLight:function(){return this.context.globalCompositeOperation="soft-light",this},blendDifference:function(){return this.context.globalCompositeOperation="difference",this},blendExclusion:function(){return this.context.globalCompositeOperation="exclusion",this},blendHue:function(){return this.context.globalCompositeOperation="hue",this},blendSaturation:function(){return this.context.globalCompositeOperation="saturation",this},blendColor:function(){return this.context.globalCompositeOperation="color",this},blendLuminosity:function(){return this.context.globalCompositeOperation="luminosity",this}},Object.defineProperty(b.BitmapData.prototype,"smoothed",{get:function(){b.Canvas.getSmoothingEnabled(this.context)},set:function(a){b.Canvas.setSmoothingEnabled(this.context,a)}}),b.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},b.BitmapData.prototype.constructor=b.BitmapData,b.Sprite=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.name="",this.type=b.SPRITE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.position.set(c,d),this.world=new b.Point(c,d),this.autoCull=!1,this.input=null,this.body=null,this.alive=!0,this.health=1,this.lifespan=0,this.checkWorldBounds=!1,this.outOfBoundsKill=!1,this.debug=!1,this.cameraOffset=new b.Point,this.cropRect=null,this._cache=[0,0,0,0,1,0,1,0],this._crop=null,this._frame=null,this._bounds=new b.Rectangle,this.loadTexture(e,f)},b.Sprite.prototype=Object.create(PIXI.Sprite.prototype),b.Sprite.prototype.constructor=b.Sprite,b.Sprite.prototype.preUpdate=function(){if(1===this._cache[4]&&this.exists)return this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.body&&this.body.preUpdate(),this._cache[4]=0,!1;if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;if(this.lifespan>0&&(this.lifespan-=this.game.time.elapsed,this.lifespan<=0))return this.kill(),!1;if((this.autoCull||this.checkWorldBounds)&&this._bounds.copyFrom(this.getBounds()),this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.checkWorldBounds)if(1===this._cache[5]&&this.game.world.bounds.intersects(this._bounds))this._cache[5]=0,this.events.onEnterBounds.dispatch(this);else if(0===this._cache[5]&&!this.game.world.bounds.intersects(this._bounds)&&(this._cache[5]=1,this.events.onOutOfBounds.dispatch(this),this.outOfBoundsKill))return this.kill(),!1;this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),this.animations.update(),this.body&&this.body.preUpdate();for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Sprite.prototype.update=function(){},b.Sprite.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Sprite.prototype.loadTexture=function(a,c,d){c=c||0,(d||"undefined"==typeof d)&&this.animations.stop(),this.key=a;var e=!0,f=this.smoothed;a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?(this.setTexture(a.texture),this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA)&&(e=!this.animations.loadFrameData(this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA),c))):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),e=!this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty(),e&&(this._frame=b.Rectangle.clone(this.texture.frame)),f||(this.smoothed=!1)},b.Sprite.prototype.setFrame=function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture._updateUvs()},b.Sprite.prototype.resetFrame=function(){this._frame&&this.setFrame(this._frame)},b.Sprite.prototype.crop=function(a,c){"undefined"==typeof c&&(c=!1),a?(c&&null!==this.cropRect?this.cropRect.setTo(a.x,a.y,a.width,a.height):this.cropRect=c&&null===this.cropRect?new b.Rectangle(a.x,a.y,a.width,a.height):a,this.updateCrop()):(this._crop=null,this.cropRect=null,this.resetFrame())},b.Sprite.prototype.updateCrop=function(){if(this.cropRect){this._crop=b.Rectangle.clone(this.cropRect,this._crop),this._crop.x+=this._frame.x,this._crop.y+=this._frame.y;var a=Math.max(this._frame.x,this._crop.x),c=Math.max(this._frame.y,this._crop.y),d=Math.min(this._frame.right,this._crop.right)-a,e=Math.min(this._frame.bottom,this._crop.bottom)-c;this.texture.crop.x=a,this.texture.crop.y=c,this.texture.crop.width=d,this.texture.crop.height=e,this.texture.frame.width=Math.min(d,this.cropRect.width),this.texture.frame.height=Math.min(e,this.cropRect.height),this.texture.width=this.texture.frame.width,this.texture.height=this.texture.frame.height,this.texture._updateUvs()}},b.Sprite.prototype.revive=function(a){return"undefined"==typeof a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,this.health=a,this.events&&this.events.onRevived.dispatch(this),this},b.Sprite.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Sprite.prototype.destroy=function(a){if(null!==this.game&&1!==this._cache[8]){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.input&&this.input.destroy(),this.animations&&this.animations.destroy(),this.body&&this.body.destroy(),this.events&&this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this._crop&&(this._crop=null),this._frame&&(this._frame=null),this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Sprite.prototype.damage=function(a){return this.alive&&(this.health-=a,this.health<=0&&this.kill()),this},b.Sprite.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},b.Sprite.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},b.Sprite.prototype.play=function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0},b.Sprite.prototype.overlap=function(a){return b.Rectangle.intersects(this.getBounds(),a.getBounds())},Object.defineProperty(b.Sprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Sprite.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Sprite.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Sprite.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Sprite.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}}),Object.defineProperty(b.Sprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}),Object.defineProperty(b.Sprite.prototype,"renderOrderID",{get:function(){return this._cache[3]}}),Object.defineProperty(b.Sprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.Sprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&this.body.removeFromWorld(),this.visible=!1)}}),Object.defineProperty(b.Sprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.Sprite.prototype,"smoothed",{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}),Object.defineProperty(b.Sprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Sprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Sprite.prototype,"destroyPhase",{get:function(){return!!this._cache[8]}}),b.Image=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.exists=!0,this.name="",this.type=b.IMAGE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.position.set(c,d),this.world=new b.Point(c,d),this.alive=!0,this.autoCull=!1,this.input=null,this.debug=!1,this.cameraOffset=new b.Point,this.cropRect=null,this._cache=[0,0,0,0,1,0,1,0,0],this._crop=null,this._frame=null,this._bounds=new b.Rectangle,this.loadTexture(e,f)},b.Image.prototype=Object.create(PIXI.Sprite.prototype),b.Image.prototype.constructor=b.Image,b.Image.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;this.autoCull&&(this._bounds.copyFrom(this.getBounds()),this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Image.prototype.update=function(){},b.Image.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Image.prototype.loadTexture=function(a,c){c=c||0,this.key=a;var d=!0,e=this.smoothed;a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?(this.setTexture(a.texture),this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA)&&(d=!this.animations.loadFrameData(this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA),c))):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),d=!this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty(),d&&(this._frame=b.Rectangle.clone(this.texture.frame)),e||(this.smoothed=!1)},b.Image.prototype.setFrame=function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture._updateUvs()},b.Image.prototype.resetFrame=function(){this._frame&&this.setFrame(this._frame)},b.Image.prototype.crop=function(a,c){"undefined"==typeof c&&(c=!1),a?(c&&null!==this.cropRect?this.cropRect.setTo(a.x,a.y,a.width,a.height):this.cropRect=c&&null===this.cropRect?new b.Rectangle(a.x,a.y,a.width,a.height):a,this.updateCrop()):(this._crop=null,this.cropRect=null,this.resetFrame())},b.Image.prototype.updateCrop=function(){if(this.cropRect){this._crop=b.Rectangle.clone(this.cropRect,this._crop),this._crop.x+=this._frame.x,this._crop.y+=this._frame.y; var a=Math.max(this._frame.x,this._crop.x),c=Math.max(this._frame.y,this._crop.y),d=Math.min(this._frame.right,this._crop.right)-a,e=Math.min(this._frame.bottom,this._crop.bottom)-c;this.texture.crop.x=a,this.texture.crop.y=c,this.texture.crop.width=d,this.texture.crop.height=e,this.texture.frame.width=Math.min(d,this.cropRect.width),this.texture.frame.height=Math.min(e,this.cropRect.height),this.texture.width=this.texture.frame.width,this.texture.height=this.texture.frame.height,this.texture._updateUvs()}},b.Image.prototype.revive=function(){return this.alive=!0,this.exists=!0,this.visible=!0,this.events&&this.events.onRevived.dispatch(this),this},b.Image.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Image.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.events&&this.events.destroy(),this.input&&this.input.destroy(),this.animations&&this.animations.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Image.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this},b.Image.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},Object.defineProperty(b.Image.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Image.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Image.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Image.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Image.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"frame",{get:function(){return this._frame},set:function(a){if(a!==this.frame){var b=this.game.cache.getFrameData(this.key);b&&aa;a++)this.children[a].preUpdate();return!0},b.TileSprite.prototype.update=function(){},b.TileSprite.prototype.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=this.game.camera.view.x+this.cameraOffset.x,this.position.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.TileSprite.prototype.autoScroll=function(a,b){this._scroll.set(a,b)},b.TileSprite.prototype.stopScroll=function(){this._scroll.set(0,0)},b.TileSprite.prototype.loadTexture=function(a,c){c=c||0,this.key=a,a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?this.setTexture(a.texture):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty()},b.TileSprite.prototype.setFrame=function(a){this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.texture._updateUvs()},b.TileSprite.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.filters&&(this.filters=null),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.animations.destroy(),this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.alive=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.TileSprite.prototype.play=function(a,b,c,d){return this.animations.play(a,b,c,d)},b.TileSprite.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.tilePosition.x=0,this.tilePosition.y=0,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},Object.defineProperty(b.TileSprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.TileSprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){a!==this.animations.frame&&(this.animations.frame=a)}}),Object.defineProperty(b.TileSprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){a!==this.animations.frameName&&(this.animations.frameName=a)}}),Object.defineProperty(b.TileSprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.TileSprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&(this.body.safeRemove=!0),this.visible=!1)}}),Object.defineProperty(b.TileSprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.TileSprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.TileSprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.TileSprite.prototype,"destroyPhase",{get:function(){return!!this._cache[8]}}),b.Rope=function(a,c,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.name="",this.type=b.ROPE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,this._frame=0,this._frameName="",this._scroll=new b.Point,PIXI.Rope.call(this,e,this.points),this.position.set(c,d),this.input=null,this.world=new b.Point(c,d),this.autoCull=!1,this.checkWorldBounds=!1,this.cameraOffset=new b.Point,this.body=null,this._cache=[0,0,0,0,1,0,1,0,0],this.loadTexture(e,f)},b.Rope.prototype=Object.create(PIXI.Rope.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.preUpdate=function(){if(1===this._cache[4]&&this.exists)return this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.body&&this.body.preUpdate(),this._cache[4]=0,!1;if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;(this.autoCull||this.checkWorldBounds)&&this._bounds.copyFrom(this.getBounds()),this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.checkWorldBounds&&(1===this._cache[5]&&this.game.world.bounds.intersects(this._bounds)?(this._cache[5]=0,this.events.onEnterBounds.dispatch(this)):0!==this._cache[5]||this.game.world.bounds.intersects(this._bounds)||(this._cache[5]=1,this.events.onOutOfBounds.dispatch(this))),this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),this.animations.update(),0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.body&&this.body.preUpdate();for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},b.Rope.prototype.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=this.game.camera.view.x+this.cameraOffset.x,this.position.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Rope.prototype.loadTexture=function(a,c){c=c||0,this.key=a,a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?this.setTexture(a.texture):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key]))},b.Rope.prototype.setFrame=function(a){this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.texture._updateUvs()},b.Rope.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.filters&&(this.filters=null),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.animations.destroy(),this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Rope.prototype.play=function(a,b,c,d){return this.animations.play(a,b,c,d)},b.Rope.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.tilePosition.x=0,this.tilePosition.y=0,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},Object.defineProperty(b.Rope.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Rope.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){a!==this.animations.frame&&(this.animations.frame=a)}}),Object.defineProperty(b.Rope.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){a!==this.animations.frameName&&(this.animations.frameName=a)}}),Object.defineProperty(b.Rope.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.Rope.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&(this.body.safeRemove=!0),this.visible=!1)}}),Object.defineProperty(b.Rope.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.Rope.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Rope.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(b.Rope.prototype,"segments",{get:function(){for(var a,c,d,e,f,g,h,i,j=[],k=0;ka;a++)this.children[a].preUpdate();return!0},b.Text.prototype.update=function(){},b.Text.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Text.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.texture.destroy(!0),this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null);var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Text.prototype.setShadow=function(a,b,c,d){this.style.shadowOffsetX=a||0,this.style.shadowOffsetY=b||0,this.style.shadowColor=c||"rgba(0,0,0,0)",this.style.shadowBlur=d||0,this.dirty=!0},b.Text.prototype.setStyle=function(a){a=a||{},a.font=a.font||"bold 20pt Arial",a.fill=a.fill||"black",a.align=a.align||"left",a.stroke=a.stroke||"black",a.strokeThickness=a.strokeThickness||0,a.wordWrap=a.wordWrap||!1,a.wordWrapWidth=a.wordWrapWidth||100,a.shadowOffsetX=a.shadowOffsetX||0,a.shadowOffsetY=a.shadowOffsetY||0,a.shadowColor=a.shadowColor||"rgba(0,0,0,0)",a.shadowBlur=a.shadowBlur||0,this.style=a,this.dirty=!0},b.Text.prototype.updateText=function(){this.texture.baseTexture.resolution=this.resolution,this.context.font=this.style.font;var a=this.text;this.style.wordWrap&&(a=this.wordWrap(this.text));for(var b=a.split(/(?:\r\n|\r|\n)/),c=[],d=0,e=this.determineFontProperties(this.style.font),f=0;f0?this.updateLine(b[f],k,l):(this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(b[f],k,l),this.style.fill&&this.context.fillText(b[f],k,l));this.updateTexture()},b.Text.prototype.updateLine=function(a,b,c){for(var d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d0&&this.drawPolygon(d)}else this.drawPolygon(d)},b.Graphics.prototype.drawTriangles=function(a,c,d){"undefined"==typeof d&&(d=!1);var e,f=new b.Point,g=new b.Point,h=new b.Point,i=[];if(c)if(a[0]instanceof b.Point)for(e=0;e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.textureBuffer.clear(),this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},b.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d,PIXI.TextureCache[e[f].uuid].frame.x=e[f].x,PIXI.TextureCache[e[f].uuid].frame.y=e[f].y;this.buildRetroFontText()}},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(b.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c){a=a||256,b=b||256;var d=document.createElement("canvas");return"string"==typeof c&&""!==c&&(d.id=c),d.width=a,d.height=b,d.style.display="block",d},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkOS(),this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures()},b.Device.LITTLE_ENDIAN=!1,b.Device.prototype={_checkOS:function(){var a=navigator.userAgent;/Playstation Vita/.test(a)?this.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?this.kindle=!0:/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1||this.chromeOS)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1)},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"opus"==a&&this.opus?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,c,d){a=+a||0;var e=typeof c;"number"!==e&&"string"!==e||!d||d[c]!==a||(c=d=null),d=null==d?1:+d||0,null===c?(c=a,a=0):c=+c||0;for(var f=-1,g=b.Math.max(b.Math.ceil((c-a)/(d||1)),0),h=new Array(g);++fc&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},limitValue:function(a,b,c){return b>a?b:a>c?c:a},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e)) -},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return"undefined"==typeof c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof b.Rectangle)var c=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var c=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?c=c.concat(this.nodes[d].retrieve(a)):(c=c.concat(this.nodes[0].retrieve(a)),c=c.concat(this.nodes[1].retrieve(a)),c=c.concat(this.nodes[2].retrieve(a)),c=c.concat(this.nodes[3].retrieve(a)))),c},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ac;)this._tweens[c].update(this.game.time.now)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Default,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1,g&&0===f&&(f=1);var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},from:function(a,b,c,d,e,f,g){var h={};for(var i in a)h[i]=this._object[i],this._object[i]=a[i];return this.to(h,b,c,d,e,f,g)},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):"string"==typeof l?l=k+parseFloat(l,10):"number"==typeof l&&(j[c]=k+(l-k)*i)}g.push(j),d+=f}var j={};for(c in this._valuesEnd)j[c]=this._valuesEnd[c];if(g.push(j),this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,a&&0===this._repeat&&(this._repeat=1),this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&(this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),!this.isRunning))return!1;if(1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._yoyo&&(this._reversed=!this._reversed),this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Easing.Default=b.Easing.Linear.None,b.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.timeCap=1/60*1e3,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;athis.timeCap&&(this.elapsed=this.timeCap),this.physicsElapsed=this.elapsed/1e3||1/60,this.deltaCap>0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.now,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.now,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.now;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(b.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(b.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a,b){if("undefined"==typeof a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,c,d,e,f){return c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null===this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.__tilePattern&&(this.sprite.__tilePattern=!1,this.tilingTexture=!1),this._anims[a]},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){"undefined"==typeof h&&(h=!1),this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onUpdate=null,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if("undefined"==typeof b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length&&(this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete()),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame)),!0):!1},next:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},previous:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose()},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex -},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(b.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new b.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new b.Frame(this.index,this.x,this.y,this.width,this.height,this.name,this.uuid);for(var c in this)this.hasOwnProperty(c)&&(a[c]=this[c]);return a},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new b.FrameData,c=0;c=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+c+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._packIndex=0,this.loadPack()):this.beginLoad())},beginLoad:function(){this.progress=0,this.progressFloat=0,this.hasLoaded=!1,this.isLoading=!0,this.onLoadStart.dispatch(this._fileList.length),this._fileList.length>0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.isLoading=!1,this.onLoadComplete.dispatch())},loadPack:function(){if(!this._packList[this._packIndex])return void console.warn("Phaser.Loader loadPackList invalid index "+this._packIndex);var a=this._packList[this._packIndex];null!==a.data?this.packLoadComplete(this._packIndex,!1):this.xhrLoad(this._packIndex,this.baseURL+a.url,"text","packLoadComplete","packLoadError")},packLoadComplete:function(a,c){if("undefined"==typeof c&&(c=!0),!this._packList[a])return void console.warn("Phaser.Loader packLoadComplete invalid index "+a);var d=this._packList[a];if(d.loaded=!0,c)var e=JSON.parse(this._xhr.responseText);else var e=this._packList[a].data;if(e[d.key])for(var f,g=0;g=0&&(b=b.substr(0,b.indexOf("?"))),this.game.device.canPlayAudio(b))return a[c];return null},fileError:function(a){this._fileList[a].loaded=!0,this._fileList[a].error=!0,this.onFileError.dispatch(this._fileList[a].key,this._fileList[a]),console.warn("Phaser.Loader error loading file: "+this._fileList[a].key+" from URL "+this._fileList[a].url),this.nextFile(a,!1)},fileComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader fileComplete invalid index "+a);var c=this._fileList[a];c.loaded=!0;var d=!0;switch(c.type){case"image":this.game.cache.addImage(c.key,c.url,c.data);break;case"spritesheet":this.game.cache.addSpriteSheet(c.key,c.url,c.data,c.frameWidth,c.frameHeight,c.frameMax,c.margin,c.spacing);break;case"textureatlas":if(null==c.atlasURL)this.game.cache.addTextureAtlas(c.key,c.url,c.data,c.atlasData,c.format);else if(d=!1,c.format==b.Loader.TEXTURE_ATLAS_JSON_ARRAY||c.format==b.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","jsonLoadComplete","dataLoadError");else{if(c.format!=b.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+c.format);this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","xmlLoadComplete","dataLoadError")}break;case"bitmapfont":null==c.xmlURL?this.game.cache.addBitmapFont(c.key,c.url,c.data,c.xmlData,c.xSpacing,c.ySpacing):(d=!1,this.xhrLoad(this._fileIndex,this.baseURL+c.xmlURL,"text","xmlLoadComplete","dataLoadError")); -break;case"audio":if(this.game.sound.usingWebAudio){if(c.data=this._xhr.response,this.game.cache.addSound(c.key,c.url,c.data,!0,!1),c.autoDecode){var e=this,f=c.key;this.game.cache.updateSound(f,"isDecoding",!0),this.game.sound.context.decodeAudioData(c.data,function(a){a&&(e.game.cache.decodedSound(f,a),e.game.sound.onSoundDecode.dispatch(f,e.game.cache.getSound(f)))})}}else c.data.removeEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete),this.game.cache.addSound(c.key,c.url,c.data,!1,!0);break;case"text":c.data=this._xhr.responseText,this.game.cache.addText(c.key,c.url,c.data);break;case"physics":var g=JSON.parse(this._xhr.responseText);this.game.cache.addPhysicsData(c.key,c.url,g,c.format);break;case"script":c.data=document.createElement("script"),c.data.language="javascript",c.data.type="text/javascript",c.data.defer=!1,c.data.text=this._xhr.responseText,document.head.appendChild(c.data),c.callback&&(c.data=c.callback.call(c.callbackContext,c.key,this._xhr.responseText));break;case"binary":c.data=c.callback?c.callback.call(c.callbackContext,c.key,this._xhr.response):this._xhr.response,this.game.cache.addBinary(c.key,c.data)}d&&this.nextFile(a,!0)},jsonLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader jsonLoadComplete invalid index "+a);var b=this._fileList[a];if(this._ajax&&this._ajax.responseText)var c=JSON.parse(this._ajax.responseText);else var c=JSON.parse(this._xhr.responseText);b.loaded=!0,"tilemap"===b.type?this.game.cache.addTilemap(b.key,b.url,c,b.format):"json"===b.type?this.game.cache.addJSON(b.key,b.url,c):this.game.cache.addTextureAtlas(b.key,b.url,b.data,c,b.format),this.nextFile(a,!0)},csvLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader csvLoadComplete invalid index "+a);var b=this._fileList[a],c=this._xhr.responseText;b.loaded=!0,this.game.cache.addTilemap(b.key,b.url,c,b.format),this.nextFile(a,!0)},dataLoadError:function(a){var b=this._fileList[a];b.loaded=!0,b.error=!0,console.warn("Phaser.Loader dataLoadError: "+b.key),this.nextFile(a,!0)},xmlLoadComplete:function(a){""!==this._xhr.responseType&&"text"!==this._xhr.responseType&&(console.warn("Invalid XML Response Type",this._fileList[a]),console.warn(this._xhr));var b,c=this._xhr.responseText;try{if(window.DOMParser){var d=new DOMParser;b=d.parseFromString(c,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(c)}catch(e){b=void 0}if(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)throw new Error("Phaser.Loader. Invalid XML given");var f=this._fileList[a];f.loaded=!0,"bitmapfont"===f.type?this.game.cache.addBitmapFont(f.key,f.url,f.data,b,f.xSpacing,f.ySpacing):"textureatlas"===f.type?this.game.cache.addTextureAtlas(f.key,f.url,f.data,b,f.format):"xml"===f.type&&this.game.cache.addXML(f.key,f.url,b),this.nextFile(a,!0)},nextFile:function(a,b){this.progressFloat+=this._progressChunk,this.progress=Math.round(this.progressFloat),this.progress>100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.updateCrop()),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this.isPlaying&&!this.allowMultiple&&(this.override||e)&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist"),this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null===this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if("undefined"==typeof this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b){"undefined"==typeof b&&(b=!1),this.paused||(this.play("",0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,c){if(this.isPlaying&&!this.paused&&c!==this.volume){if("undefined"==typeof a&&(a=1e3),"undefined"==typeof c)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");var d=this.game.add.tween(this).to({volume:c},a,b.Easing.Linear.None,!0);d.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a>>0:(a<<24|c<<16|d<<8|e)>>>0},unpackPixel:function(a,c,d,e){return("undefined"==typeof c||null===c)&&(c=b.Color.createColor()),("undefined"==typeof d||null===d)&&(d=!1),("undefined"==typeof e||null===e)&&(e=!1),b.Device.LITTLE_ENDIAN?(c.a=(4278190080&a)>>>24,c.b=(16711680&a)>>>16,c.g=(65280&a)>>>8,c.r=255&a):(c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a),c.color=a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a/255+")",d&&b.Color.RGBtoHSL(c.r,c.g,c.b,c),e&&b.Color.RGBtoHSV(c.r,c.g,c.b,c),c},fromRGBA:function(a,c){return c||(c=b.Color.createColor()),c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a+")",c},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,1)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6}return e},HSLtoRGB:function(a,c,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=b.Color.createColor(d,d,d),0!==c){var f=.5>d?d*(1+c):d+c-d*c,g=2*d-f;e.r=b.Color.hueToColor(g,f,a+1/3),e.g=b.Color.hueToColor(g,f,a),e.b=b.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),b.Color.updateColor(e),e},RGBtoHSV:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,255)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6),e},HSVtoRGB:function(a,c,d,e){"undefined"==typeof e&&(e=b.Color.createColor(0,0,0,1,a,c,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-c),l=d*(1-j*c),m=d*(1-(1-j)*c);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),b.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,c,d,e,f,g,h,i){var j={r:a||0,g:c||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return j.color=b.Color.getColor(j.r,j.g,j.b),j.color32=b.Color.getColor32(j.a,j.r,j.g,j.b),b.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,c,d,e,f){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(c<<8)+d).toString(16).slice(1):"0x"+b.Color.componentToHex(e)+b.Color.componentToHex(a)+b.Color.componentToHex(c)+b.Color.componentToHex(d) -},hexToRGB:function(a){var c=b.Color.hexToColor(a);return c?b.Color.getColor32(c.a,c.r,c.g,c.b):void 0},hexToColor:function(a,c){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);c?(c.r=e,c.g=f,c.b=g):c=b.Color.createColor(e,f,g)}return c},webToColor:function(a,c){c||(c=b.Color.createColor());var d=/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\)$/.exec(a);return d&&(c.r=parseInt(d[1],10),c.g=parseInt(d[2],10),c.b=parseInt(d[3],10)),c},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,c){"undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSVtoRGB(e/359,a,c));return d},HSLColorWheel:function(a,c){"undefined"==typeof a&&(a=.5),"undefined"==typeof c&&(c=.5);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSLtoRGB(e/359,a,c));return d},interpolateColor:function(a,c,d,e,f){"undefined"==typeof f&&(f=255);var g=b.Color.getRGB(a),h=b.Color.getRGB(c),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return b.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,c,d,e,f,g){var h=b.Color.getRGB(a),i=(c-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return b.Color.getColor(i,j,k)},interpolateRGB:function(a,c,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-c)*i/h+c,l=(g-d)*i/h+d;return b.Color.getColor(j,k,l)},getRandomColor:function(a,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof c&&(c=255),"undefined"==typeof d&&(d=255),c>255||a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var c=b.Color.getRGB(a);return"rgba("+c.r.toString()+","+c.g.toString()+","+c.b.toString()+","+(c.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=4,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&b.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new b.Physics.BOX2D(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else if(a===b.Physics.BOX2D&&null===this.box2d)this.box2d=new b.Physics.Box2D(this.game,this.config);else if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):c===b.Physics.BOX2D&&this.box2d&&this.box2d.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.skipQuadTree=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0,this.setBoundsToWorld()},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!0);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,g=a.length;g>f;f++)for(var h=0,i=b.length;i>h;h++)this.collideHandler(a[f],b[h],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!1);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,h=a.length;h>f;f++)for(var i=0,j=b.length;j>i;i++)this.collideHandler(a[f],b[i],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length&&a.body)if(a.body.skipQuadTree||this.skipQuadTree)for(var g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,c,d,e,f,g){if(0!==a.length&&0!==c.length)for(var h=0,i=a.children.length;i>h;h++)a.children[h].exists&&(a.children[h].type===b.GROUP?this.collideGroupVsGroup(a.children[h],c,d,e,f,g):this.collideSpriteVsGroup(a.children[h],c,d,e,f,g))},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(a.body&&(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length))for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=this._overlap,b.overlapX=this._overlap,0!==this._overlap)?c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=this._overlap,b.overlapY=this._overlap,0!==this._overlap)?c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0):!1)},separateTile:function(a,b,c){if(!b.enable||!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},getObjectsUnderPointer:function(a,c,d,e){if(0!==c.length&&a.exists){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(c);var f=new b.Rectangle(a.x,a.y,1,1),g=[];this._potentials=this.quadTree.retrieve(f);for(var h=0,i=this._potentials.length;i>h;h++)this._potentials[h].hitTest(a.x,a.y)&&(d&&d.call(e,a,this._potentials[h].sprite),g.push(this._potentials[h].sprite));return g}},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.enable=!0,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this.skipQuadTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite.body=null,this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){"undefined"==typeof c&&(c=this.offset.x),"undefined"==typeof d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.area=new b.Rectangle(c,d,1,1),this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.explode=function(a,b){this.start(!0,a,0,b,!1)},b.Particles.Arcade.Emitter.prototype.flow=function(a,b,c){this.start(!1,a,b,c,!0)},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=!1),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a||e?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1); -null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit())},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.area.width=a,this.area.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.NORTH=0,b.Tilemap.EAST=1,b.Tilemap.SOUTH=2,b.Tilemap.WEST=3,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;if(c=a,!this.game.cache.checkImageKey(c))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+c+'"'),null}if("string"==typeof a&&(a=this.getTilesetIndex(a),null===a&&this.format===b.Tilemap.TILED_JSON))return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+c+'"'),null;if(this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0,!0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;c>l;l++)h.push(new b.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;he;e++)this.setCollisionByIndex(a[e],b,c,!1);d&&this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d,e){if("undefined"==typeof c&&(c=!0),"undefined"==typeof e&&(e=!0),d=this.getLayer(d),!(a>b)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){"undefined"==typeof b&&(b=!0),"undefined"==typeof d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,c,d){if(d=this.getLayer(d),a>=0&&a=0&&c=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,Object.defineProperty(b.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this.wrap=!1,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x)},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gc;c++){if(this._column=null,0>c&&this.wrap?this._column=this.layer.data[c+this.map.height]:c>=this.map.height&&this.wrap?this._column=this.layer.data[c-this.map.height]:this.layer.data[c]&&(this._column=this.layer.data[c]),this._column)for(var e=this._mc.startX,f=this._mc.startX+this._mc.maxX;f>e;e++){var a=null;0>e&&this.wrap?a=this._column[e+this.map.width]:e>=this.map.width&&this.wrap?a=this._column[e-this.map.width]:this._column[e]&&(a=this._column[e]),a&&a.index>-1&&(b=this.map.tilesets[this.map.tiles[a.index][2]],this.debug===!1&&a.alpha!==this.context.globalAlpha&&(this.context.globalAlpha=a.alpha),b.draw(this.context,Math.floor(this._mc.tx),Math.floor(this._mc.ty),a.index),a.debug&&(this.context.fillStyle="rgba(0, 255, 0, 0.4)",this.context.fillRect(Math.floor(this._mc.tx),Math.floor(this._mc.ty),this.map.tileWidth,this.map.tileHeight))),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}return this.debug&&(this.context.globalAlpha=1,this.renderDebug()),this.texture._updateUvs(),this.dirty=!1,this.layer.dirty=!1,!0}},b.TilemapLayer.prototype.renderDebug=function(){this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.strokeStyle=this.debugColor,this.context.fillStyle=this.debugFillColor;for(var a=this._mc.startY,b=this._mc.startY+this._mc.maxY;b>a;a++){if(this._column=null,0>a&&this.wrap?this._column=this.layer.data[a+this.map.height]:a>=this.map.height&&this.wrap?this._column=this.layer.data[a-this.map.height]:this.layer.data[a]&&(this._column=this.layer.data[a]),this._column)for(var c=this._mc.startX,d=this._mc.startX+this._mc.maxX;d>c;c++){var e=null;0>c&&this.wrap?e=this._column[c+this.map.width]:c>=this.map.width&&this.wrap?e=this._column[c-this.map.width]:this._column[c]&&(e=this._column[c]),e&&(e.faceTop||e.faceBottom||e.faceLeft||e.faceRight)&&(this._mc.tx=Math.floor(this._mc.tx),this.debugFill&&this.context.fillRect(this._mc.tx,this._mc.ty,this._mc.cw,this._mc.ch),this.context.beginPath(),e.faceTop&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty)),e.faceBottom&&(this.context.moveTo(this._mc.tx,this._mc.ty+this._mc.ch),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),e.faceLeft&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx,this._mc.ty+this._mc.ch)),e.faceRight&&(this.context.moveTo(this._mc.tx+this._mc.cw,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),this.context.stroke()),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}},Object.defineProperty(b.TilemapLayer.prototype,"scrollX",{get:function(){return this._mc.x},set:function(a){a!==this._mc.x&&(this._mc.x=a,this._mc.startX=this.game.math.floor(this._mc.x/this.map.tileWidth),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"scrollY",{get:function(){return this._mc.y},set:function(a){a!==this._mc.y&&(this._mc.y=a,this._mc.startY=this.game.math.floor(this._mc.y/this.map.tileHeight),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=a,this.dirty=!0}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=a,this.dirty=!0}}),b.TilemapParser={parse:function(a,c,d,e,f,g){if("undefined"==typeof d&&(d=32),"undefined"==typeof e&&(e=32),"undefined"==typeof f&&(f=10),"undefined"==typeof g&&(g=10),"undefined"==typeof c)return this.getEmptyData();if(null===c)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(c);if(h){if(h.format===b.Tilemap.CSV)return this.parseCSV(c,h.data,d,e);if(!h.format||h.format===b.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+c)},parseCSV:function(a,c,d,e){var f=this.getEmptyData();c=c.trim();for(var g=[],h=c.split("\n"),i=h.length,j=0,k=0;kk;k++)i.push(a.layers[f].data[k]>0?new b.Tile(g,a.layers[f].data[k],h,j.length,a.tilewidth,a.tileheight):new b.Tile(g,-1,h,j.length,a.tilewidth,a.tileheight)),h++,h===a.layers[f].width&&(j.push(i),h=0,i=[]);g.data=j,e.push(g)}d.layers=e;for(var m=[],f=0;ft;t++)if(a.layers[f].objects[t].gid){var u={gid:a.layers[f].objects[t].gid,name:a.layers[f].objects[t].name,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};r[a.layers[f].name].push(u)}else if(a.layers[f].objects[t].polyline){var u={name:a.layers[f].objects[t].name,type:a.layers[f].objects[t].type,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,width:a.layers[f].objects[t].width,height:a.layers[f].objects[t].height,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties}; -u.polyline=[];for(var v=0;v=c)&&(c=32),("undefined"==typeof d||0>=d)&&(d=32),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.name=a,this.firstgid=b,this.tileWidth=c,this.tileHeight=d,this.tileMargin=e,this.tileSpacing=f,this.properties=g,this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},b.Tileset.prototype={draw:function(a,b,c,d){this.image&&this.drawCoords[d]&&a.drawImage(this.image,this.drawCoords[d][0],this.drawCoords[d][1],this.tileWidth,this.tileHeight,b,c,this.tileWidth,this.tileHeight)},setImage:function(a){this.image=a,this.rows=Math.round((a.height-this.tileMargin)/(this.tileHeight+this.tileSpacing)),this.columns=Math.round((a.width-this.tileMargin)/(this.tileWidth+this.tileSpacing)),this.total=this.rows*this.columns,this.drawCoords.length=0;for(var b=this.tileMargin,c=this.tileMargin,d=this.firstgid,e=0;e0&&this.drawPolygon(d)}else this.drawPolygon(d)},b.Graphics.prototype.drawTriangles=function(a,c,d){"undefined"==typeof d&&(d=!1);var e,f=new b.Point,g=new b.Point,h=new b.Point,i=[];if(c)if(a[0]instanceof b.Point)for(e=0;e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.textureBuffer.clear(),this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},b.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d,PIXI.TextureCache[e[f].uuid].frame.x=e[f].x,PIXI.TextureCache[e[f].uuid].frame.y=e[f].y;this.buildRetroFontText()}},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(b.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c){a=a||256,b=b||256;var d=document.createElement("canvas");return"string"==typeof c&&""!==c&&(d.id=c),d.width=a,d.height=b,d.style.display="block",d},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkOS(),this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures()},b.Device.LITTLE_ENDIAN=!1,b.Device.prototype={_checkOS:function(){var a=navigator.userAgent;/Playstation Vita/.test(a)?this.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?this.kindle=!0:/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1||this.chromeOS)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1)},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"opus"==a&&this.opus?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,c,d){a=+a||0;var e=typeof c;"number"!==e&&"string"!==e||!d||d[c]!==a||(c=d=null),d=null==d?1:+d||0,null===c?(c=a,a=0):c=+c||0;for(var f=-1,g=b.Math.max(b.Math.ceil((c-a)/(d||1)),0),h=new Array(g);++fc&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},limitValue:function(a,b,c){return b>a?b:a>c?c:a},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c +},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return"undefined"==typeof c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof b.Rectangle)var c=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var c=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?c=c.concat(this.nodes[d].retrieve(a)):(c=c.concat(this.nodes[0].retrieve(a)),c=c.concat(this.nodes[1].retrieve(a)),c=c.concat(this.nodes[2].retrieve(a)),c=c.concat(this.nodes[3].retrieve(a)))),c},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ac;)this._tweens[c].update(this.game.time.now)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Default,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1,g&&0===f&&(f=1);var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},from:function(a,b,c,d,e,f,g){var h={};for(var i in a)h[i]=this._object[i],this._object[i]=a[i];return this.to(h,b,c,d,e,f,g)},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):"string"==typeof l?l=k+parseFloat(l,10):"number"==typeof l&&(j[c]=k+(l-k)*i)}g.push(j),d+=f}var j={};for(c in this._valuesEnd)j[c]=this._valuesEnd[c];if(g.push(j),this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,a&&0===this._repeat&&(this._repeat=1),this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&(this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),!this.isRunning))return!1;if(1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._yoyo&&(this._reversed=!this._reversed),this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Easing.Default=b.Easing.Linear.None,b.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.timeCap=1/60*1e3,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;athis.timeCap&&(this.elapsed=this.timeCap),this.physicsElapsed=this.elapsed/1e3||1/60,this.deltaCap>0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.now,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.now,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.now;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(b.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(b.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a,b){if("undefined"==typeof a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,c,d,e,f){return c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null===this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.__tilePattern&&(this.sprite.__tilePattern=!1,this.tilingTexture=!1),this._anims[a]},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){"undefined"==typeof h&&(h=!1),this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onUpdate=null,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if("undefined"==typeof b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length&&(this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete()),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame)),!0):!1},next:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},previous:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose()},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame)) +}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(b.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new b.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new b.Frame(this.index,this.x,this.y,this.width,this.height,this.name,this.uuid);for(var c in this)this.hasOwnProperty(c)&&(a[c]=this[c]);return a},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new b.FrameData,c=0;c=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+c+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._packIndex=0,this.loadPack()):this.beginLoad())},beginLoad:function(){this.progress=0,this.progressFloat=0,this.hasLoaded=!1,this.isLoading=!0,this.onLoadStart.dispatch(this._fileList.length),this._fileList.length>0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.isLoading=!1,this.onLoadComplete.dispatch())},loadPack:function(){if(!this._packList[this._packIndex])return void console.warn("Phaser.Loader loadPackList invalid index "+this._packIndex);var a=this._packList[this._packIndex];null!==a.data?this.packLoadComplete(this._packIndex,!1):this.xhrLoad(this._packIndex,this.baseURL+a.url,"text","packLoadComplete","packLoadError")},packLoadComplete:function(a,c){if("undefined"==typeof c&&(c=!0),!this._packList[a])return void console.warn("Phaser.Loader packLoadComplete invalid index "+a);var d=this._packList[a];if(d.loaded=!0,c)var e=JSON.parse(this._xhr.responseText);else var e=this._packList[a].data;if(e[d.key])for(var f,g=0;g=0&&(b=b.substr(0,b.indexOf("?"))),this.game.device.canPlayAudio(b))return a[c];return null},fileError:function(a){this._fileList[a].loaded=!0,this._fileList[a].error=!0,this.onFileError.dispatch(this._fileList[a].key,this._fileList[a]),console.warn("Phaser.Loader error loading file: "+this._fileList[a].key+" from URL "+this._fileList[a].url),this.nextFile(a,!1)},fileComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader fileComplete invalid index "+a);var c=this._fileList[a];c.loaded=!0;var d=!0;switch(c.type){case"image":this.game.cache.addImage(c.key,c.url,c.data);break;case"spritesheet":this.game.cache.addSpriteSheet(c.key,c.url,c.data,c.frameWidth,c.frameHeight,c.frameMax,c.margin,c.spacing);break;case"textureatlas":if(null==c.atlasURL)this.game.cache.addTextureAtlas(c.key,c.url,c.data,c.atlasData,c.format);else if(d=!1,c.format==b.Loader.TEXTURE_ATLAS_JSON_ARRAY||c.format==b.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","jsonLoadComplete","dataLoadError");else{if(c.format!=b.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+c.format);this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","xmlLoadComplete","dataLoadError")}break;case"bitmapfont":null==c.xmlURL?this.game.cache.addBitmapFont(c.key,c.url,c.data,c.xmlData,c.xSpacing,c.ySpacing):(d=!1,this.xhrLoad(this._fileIndex,this.baseURL+c.xmlURL,"text","xmlLoadComplete","dataLoadError"));break;case"audio":if(this.game.sound.usingWebAudio){if(c.data=this._xhr.response,this.game.cache.addSound(c.key,c.url,c.data,!0,!1),c.autoDecode){var e=this,f=c.key;this.game.cache.updateSound(f,"isDecoding",!0),this.game.sound.context.decodeAudioData(c.data,function(a){a&&(e.game.cache.decodedSound(f,a),e.game.sound.onSoundDecode.dispatch(f,e.game.cache.getSound(f))) +})}}else c.data.removeEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete),this.game.cache.addSound(c.key,c.url,c.data,!1,!0);break;case"text":c.data=this._xhr.responseText,this.game.cache.addText(c.key,c.url,c.data);break;case"physics":var g=JSON.parse(this._xhr.responseText);this.game.cache.addPhysicsData(c.key,c.url,g,c.format);break;case"script":c.data=document.createElement("script"),c.data.language="javascript",c.data.type="text/javascript",c.data.defer=!1,c.data.text=this._xhr.responseText,document.head.appendChild(c.data),c.callback&&(c.data=c.callback.call(c.callbackContext,c.key,this._xhr.responseText));break;case"binary":c.data=c.callback?c.callback.call(c.callbackContext,c.key,this._xhr.response):this._xhr.response,this.game.cache.addBinary(c.key,c.data)}d&&this.nextFile(a,!0)},jsonLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader jsonLoadComplete invalid index "+a);var b=this._fileList[a];if(this._ajax&&this._ajax.responseText)var c=JSON.parse(this._ajax.responseText);else var c=JSON.parse(this._xhr.responseText);b.loaded=!0,"tilemap"===b.type?this.game.cache.addTilemap(b.key,b.url,c,b.format):"json"===b.type?this.game.cache.addJSON(b.key,b.url,c):this.game.cache.addTextureAtlas(b.key,b.url,b.data,c,b.format),this.nextFile(a,!0)},csvLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader csvLoadComplete invalid index "+a);var b=this._fileList[a],c=this._xhr.responseText;b.loaded=!0,this.game.cache.addTilemap(b.key,b.url,c,b.format),this.nextFile(a,!0)},dataLoadError:function(a){var b=this._fileList[a];b.loaded=!0,b.error=!0,console.warn("Phaser.Loader dataLoadError: "+b.key),this.nextFile(a,!0)},xmlLoadComplete:function(a){""!==this._xhr.responseType&&"text"!==this._xhr.responseType&&(console.warn("Invalid XML Response Type",this._fileList[a]),console.warn(this._xhr));var b,c=this._xhr.responseText;try{if(window.DOMParser){var d=new DOMParser;b=d.parseFromString(c,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(c)}catch(e){b=void 0}if(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)throw new Error("Phaser.Loader. Invalid XML given");var f=this._fileList[a];f.loaded=!0,"bitmapfont"===f.type?this.game.cache.addBitmapFont(f.key,f.url,f.data,b,f.xSpacing,f.ySpacing):"textureatlas"===f.type?this.game.cache.addTextureAtlas(f.key,f.url,f.data,b,f.format):"xml"===f.type&&this.game.cache.addXML(f.key,f.url,b),this.nextFile(a,!0)},nextFile:function(a,b){this.progressFloat+=this._progressChunk,this.progress=Math.round(this.progressFloat),this.progress>100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.updateCrop()),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this.isPlaying&&!this.allowMultiple&&(this.override||e)&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist"),this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null===this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if("undefined"==typeof this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b){"undefined"==typeof b&&(b=!1),this.paused||(this.play("",0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,c){if(this.isPlaying&&!this.paused&&c!==this.volume){if("undefined"==typeof a&&(a=1e3),"undefined"==typeof c)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");var d=this.game.add.tween(this).to({volume:c},a,b.Easing.Linear.None,!0);d.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a>>0:(a<<24|c<<16|d<<8|e)>>>0},unpackPixel:function(a,c,d,e){return("undefined"==typeof c||null===c)&&(c=b.Color.createColor()),("undefined"==typeof d||null===d)&&(d=!1),("undefined"==typeof e||null===e)&&(e=!1),b.Device.LITTLE_ENDIAN?(c.a=(4278190080&a)>>>24,c.b=(16711680&a)>>>16,c.g=(65280&a)>>>8,c.r=255&a):(c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a),c.color=a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a/255+")",d&&b.Color.RGBtoHSL(c.r,c.g,c.b,c),e&&b.Color.RGBtoHSV(c.r,c.g,c.b,c),c},fromRGBA:function(a,c){return c||(c=b.Color.createColor()),c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a+")",c},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,1)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6}return e},HSLtoRGB:function(a,c,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=b.Color.createColor(d,d,d),0!==c){var f=.5>d?d*(1+c):d+c-d*c,g=2*d-f;e.r=b.Color.hueToColor(g,f,a+1/3),e.g=b.Color.hueToColor(g,f,a),e.b=b.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),b.Color.updateColor(e),e},RGBtoHSV:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,255)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6),e},HSVtoRGB:function(a,c,d,e){"undefined"==typeof e&&(e=b.Color.createColor(0,0,0,1,a,c,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-c),l=d*(1-j*c),m=d*(1-(1-j)*c);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),b.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,c,d,e,f,g,h,i){var j={r:a||0,g:c||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return j.color=b.Color.getColor(j.r,j.g,j.b),j.color32=b.Color.getColor32(j.a,j.r,j.g,j.b),b.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,c,d,e,f){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(c<<8)+d).toString(16).slice(1):"0x"+b.Color.componentToHex(e)+b.Color.componentToHex(a)+b.Color.componentToHex(c)+b.Color.componentToHex(d)},hexToRGB:function(a){var c=b.Color.hexToColor(a);return c?b.Color.getColor32(c.a,c.r,c.g,c.b):void 0},hexToColor:function(a,c){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d +});var d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);c?(c.r=e,c.g=f,c.b=g):c=b.Color.createColor(e,f,g)}return c},webToColor:function(a,c){c||(c=b.Color.createColor());var d=/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\)$/.exec(a);return d&&(c.r=parseInt(d[1],10),c.g=parseInt(d[2],10),c.b=parseInt(d[3],10)),c},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,c){"undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSVtoRGB(e/359,a,c));return d},HSLColorWheel:function(a,c){"undefined"==typeof a&&(a=.5),"undefined"==typeof c&&(c=.5);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSLtoRGB(e/359,a,c));return d},interpolateColor:function(a,c,d,e,f){"undefined"==typeof f&&(f=255);var g=b.Color.getRGB(a),h=b.Color.getRGB(c),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return b.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,c,d,e,f,g){var h=b.Color.getRGB(a),i=(c-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return b.Color.getColor(i,j,k)},interpolateRGB:function(a,c,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-c)*i/h+c,l=(g-d)*i/h+d;return b.Color.getColor(j,k,l)},getRandomColor:function(a,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof c&&(c=255),"undefined"==typeof d&&(d=255),c>255||a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var c=b.Color.getRGB(a);return"rgba("+c.r.toString()+","+c.g.toString()+","+c.b.toString()+","+(c.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=4,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&b.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new b.Physics.BOX2D(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else if(a===b.Physics.BOX2D&&null===this.box2d)this.box2d=new b.Physics.Box2D(this.game,this.config);else if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):c===b.Physics.BOX2D&&this.box2d&&this.box2d.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.skipQuadTree=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0,this.setBoundsToWorld()},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!0);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,g=a.length;g>f;f++)for(var h=0,i=b.length;i>h;h++)this.collideHandler(a[f],b[h],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!1);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,h=a.length;h>f;f++)for(var i=0,j=b.length;j>i;i++)this.collideHandler(a[f],b[i],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length&&a.body)if(a.body.skipQuadTree||this.skipQuadTree)for(var g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,c,d,e,f,g){if(0!==a.length&&0!==c.length)for(var h=0,i=a.children.length;i>h;h++)a.children[h].exists&&(a.children[h].type===b.GROUP?this.collideGroupVsGroup(a.children[h],c,d,e,f,g):this.collideSpriteVsGroup(a.children[h],c,d,e,f,g))},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(a.body&&(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length))for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=this._overlap,b.overlapX=this._overlap,0!==this._overlap)?c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=this._overlap,b.overlapY=this._overlap,0!==this._overlap)?c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0):!1)},separateTile:function(a,b,c){if(!b.enable||!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},getObjectsUnderPointer:function(a,c,d,e){if(0!==c.length&&a.exists){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(c);var f=new b.Rectangle(a.x,a.y,1,1),g=[];this._potentials=this.quadTree.retrieve(f);for(var h=0,i=this._potentials.length;i>h;h++)this._potentials[h].hitTest(a.x,a.y)&&(d&&d.call(e,a,this._potentials[h].sprite),g.push(this._potentials[h].sprite));return g}},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.enable=!0,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this.skipQuadTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite.body=null,this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){"undefined"==typeof c&&(c=this.offset.x),"undefined"==typeof d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.area=new b.Rectangle(c,d,1,1),this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.explode=function(a,b){this.start(!0,a,0,b,!1)},b.Particles.Arcade.Emitter.prototype.flow=function(a,b,c){this.start(!1,a,b,c,!0)},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=!1),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a||e?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit()) +},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.area.width=a,this.area.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.NORTH=0,b.Tilemap.EAST=1,b.Tilemap.SOUTH=2,b.Tilemap.WEST=3,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;if(c=a,!this.game.cache.checkImageKey(c))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+c+'"'),null}if("string"==typeof a&&(a=this.getTilesetIndex(a),null===a&&this.format===b.Tilemap.TILED_JSON))return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+c+'"'),null;if(this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0,!0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;c>l;l++)h.push(new b.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;he;e++)this.setCollisionByIndex(a[e],b,c,!1);d&&this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d,e){if("undefined"==typeof c&&(c=!0),"undefined"==typeof e&&(e=!0),d=this.getLayer(d),!(a>b)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){"undefined"==typeof b&&(b=!0),"undefined"==typeof d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,c,d){if(d=this.getLayer(d),a>=0&&a=0&&c=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,Object.defineProperty(b.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this.wrap=!1,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x)},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gc;c++){if(this._column=null,0>c&&this.wrap?this._column=this.layer.data[c+this.map.height]:c>=this.map.height&&this.wrap?this._column=this.layer.data[c-this.map.height]:this.layer.data[c]&&(this._column=this.layer.data[c]),this._column)for(var e=this._mc.startX,f=this._mc.startX+this._mc.maxX;f>e;e++){var a=null;0>e&&this.wrap?a=this._column[e+this.map.width]:e>=this.map.width&&this.wrap?a=this._column[e-this.map.width]:this._column[e]&&(a=this._column[e]),a&&a.index>-1&&(b=this.map.tilesets[this.map.tiles[a.index][2]],this.debug===!1&&a.alpha!==this.context.globalAlpha&&(this.context.globalAlpha=a.alpha),b.draw(this.context,Math.floor(this._mc.tx),Math.floor(this._mc.ty),a.index),a.debug&&(this.context.fillStyle="rgba(0, 255, 0, 0.4)",this.context.fillRect(Math.floor(this._mc.tx),Math.floor(this._mc.ty),this.map.tileWidth,this.map.tileHeight))),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}return this.debug&&(this.context.globalAlpha=1,this.renderDebug()),this.texture._updateUvs(),this.dirty=!1,this.layer.dirty=!1,!0}},b.TilemapLayer.prototype.renderDebug=function(){this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.strokeStyle=this.debugColor,this.context.fillStyle=this.debugFillColor;for(var a=this._mc.startY,b=this._mc.startY+this._mc.maxY;b>a;a++){if(this._column=null,0>a&&this.wrap?this._column=this.layer.data[a+this.map.height]:a>=this.map.height&&this.wrap?this._column=this.layer.data[a-this.map.height]:this.layer.data[a]&&(this._column=this.layer.data[a]),this._column)for(var c=this._mc.startX,d=this._mc.startX+this._mc.maxX;d>c;c++){var e=null;0>c&&this.wrap?e=this._column[c+this.map.width]:c>=this.map.width&&this.wrap?e=this._column[c-this.map.width]:this._column[c]&&(e=this._column[c]),e&&(e.faceTop||e.faceBottom||e.faceLeft||e.faceRight)&&(this._mc.tx=Math.floor(this._mc.tx),this.debugFill&&this.context.fillRect(this._mc.tx,this._mc.ty,this._mc.cw,this._mc.ch),this.context.beginPath(),e.faceTop&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty)),e.faceBottom&&(this.context.moveTo(this._mc.tx,this._mc.ty+this._mc.ch),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),e.faceLeft&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx,this._mc.ty+this._mc.ch)),e.faceRight&&(this.context.moveTo(this._mc.tx+this._mc.cw,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),this.context.stroke()),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}},Object.defineProperty(b.TilemapLayer.prototype,"scrollX",{get:function(){return this._mc.x},set:function(a){a!==this._mc.x&&(this._mc.x=a,this._mc.startX=this.game.math.floor(this._mc.x/this.map.tileWidth),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"scrollY",{get:function(){return this._mc.y},set:function(a){a!==this._mc.y&&(this._mc.y=a,this._mc.startY=this.game.math.floor(this._mc.y/this.map.tileHeight),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=a,this.dirty=!0}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=a,this.dirty=!0}}),b.TilemapParser={parse:function(a,c,d,e,f,g){if("undefined"==typeof d&&(d=32),"undefined"==typeof e&&(e=32),"undefined"==typeof f&&(f=10),"undefined"==typeof g&&(g=10),"undefined"==typeof c)return this.getEmptyData();if(null===c)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(c);if(h){if(h.format===b.Tilemap.CSV)return this.parseCSV(c,h.data,d,e);if(!h.format||h.format===b.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+c)},parseCSV:function(a,c,d,e){var f=this.getEmptyData();c=c.trim();for(var g=[],h=c.split("\n"),i=h.length,j=0,k=0;kk;k++)i.push(a.layers[f].data[k]>0?new b.Tile(g,a.layers[f].data[k],h,j.length,a.tilewidth,a.tileheight):new b.Tile(g,-1,h,j.length,a.tilewidth,a.tileheight)),h++,h===a.layers[f].width&&(j.push(i),h=0,i=[]);g.data=j,e.push(g)}d.layers=e;for(var m=[],f=0;ft;t++)if(a.layers[f].objects[t].gid){var u={gid:a.layers[f].objects[t].gid,name:a.layers[f].objects[t].name,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};r[a.layers[f].name].push(u)}else if(a.layers[f].objects[t].polyline){var u={name:a.layers[f].objects[t].name,type:a.layers[f].objects[t].type,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,width:a.layers[f].objects[t].width,height:a.layers[f].objects[t].height,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};u.polyline=[];for(var v=0;v=c)&&(c=32),("undefined"==typeof d||0>=d)&&(d=32),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.name=a,this.firstgid=b,this.tileWidth=c,this.tileHeight=d,this.tileMargin=e,this.tileSpacing=f,this.properties=g,this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},b.Tileset.prototype={draw:function(a,b,c,d){this.image&&this.drawCoords[d]&&a.drawImage(this.image,this.drawCoords[d][0],this.drawCoords[d][1],this.tileWidth,this.tileHeight,b,c,this.tileWidth,this.tileHeight)},setImage:function(a){this.image=a,this.rows=Math.round((a.height-this.tileMargin)/(this.tileHeight+this.tileSpacing)),this.columns=Math.round((a.width-this.tileMargin)/(this.tileWidth+this.tileSpacing)),this.total=this.rows*this.columns,this.drawCoords.length=0;for(var b=this.tileMargin,c=this.tileMargin,d=this.firstgid,e=0;e + */ + +/** + * @class Polygon + * @constructor + * @param points* {Array|Array|Point...|Number...} This can be an array of Points that form the polygon, + * a flat array of numbers that will be interpreted as [x,y, x,y, ...], or the arguments passed can be + * all the points of the polygon e.g. `new PIXI.Polygon(new PIXI.Point(), new PIXI.Point(), ...)`, or the + * arguments passed can be flat x,y values e.g. `new PIXI.Polygon(x,y, x,y, x,y, ...)` where `x` and `y` are + * Numbers. + */ +PIXI.Polygon = function(points) +{ + //if points isn't an array, use arguments as the array + if(!(points instanceof Array))points = Array.prototype.slice.call(arguments); + + //if this is a flat array of numbers, convert it to points + if(points[0] instanceof PIXI.Point) + { + var p = []; + for(var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } + + this.closed = true; + this.points = points; +}; + +/** + * Creates a clone of this polygon + * + * @method clone + * @return {Polygon} a copy of the polygon + */ +PIXI.Polygon.prototype.clone = function() +{ + var points = this.points.slice(); + return new PIXI.Polygon(points); +}; + +/** + * Checks whether the x and y coordinates passed to this function are contained within this polygon + * + * @method contains + * @param x {Number} The X coordinate of the point to test + * @param y {Number} The Y coordinate of the point to test + * @return {Boolean} Whether the x/y coordinates are within this polygon + */ +PIXI.Polygon.prototype.contains = function(x, y) +{ + var inside = false; + + // use some raycasting to test hits + // https://github.com/substack/point-in-polygon/blob/master/index.js + var length = this.points.length / 2; + + for(var i = 0, j = length - 1; i < length; j = i++) + { + var xi = this.points[i * 2], yi = this.points[i * 2 + 1], + xj = this.points[j * 2], yj = this.points[j * 2 + 1], + intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); + + if(intersect) inside = !inside; + } + + return inside; +}; + +// constructor +PIXI.Polygon.prototype.constructor = PIXI.Polygon; + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -15242,13 +15319,39 @@ Phaser.Polygon = function (points) { */ this.type = Phaser.POLYGON; + // If points isn't an array, use arguments as the array + if (!(points instanceof Array)) + { + points = Array.prototype.slice.call(arguments); + } + + // If this is a flat array of numbers, convert it to points + if (points[0] instanceof Phaser.Point) + { + var p = []; + + for (var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } + + /** + * @property {array} points - An array of Points that make up this Polygon. + */ this.points = points; + + /** + * @property {boolean} closed - Is the Polygon closed or not? + */ + this.closed = true; + }; Phaser.Polygon.prototype = { - type: null, - /** * Creates a copy of the given Polygon. * This is a deep clone, the resulting copy contains new Phaser.Point objects @@ -15259,12 +15362,7 @@ Phaser.Polygon.prototype = { */ clone: function (output) { - var points = []; - - for (var i=0; i < this.points.length; i++) - { - points.push(this.points[i].clone()); - } + var points = this.points.slice(); if (typeof output === "undefined" || output === null) { @@ -15292,12 +15390,15 @@ Phaser.Polygon.prototype = { var inside = false; // use some raycasting to test hits https://github.com/substack/point-in-polygon/blob/master/index.js - for (var i = 0, j = this.points.length - 1; i < this.points.length; j = i++) + + var length = this.points.length / 2; + + for (var i = 0, j = length - 1; i < length; j = i++) { - var xi = this.points[i].x; - var yi = this.points[i].y; - var xj = this.points[j].x; - var yj = this.points[j].y; + var xi = this.points[i * 2].x; + var yi = this.points[i * 2 + 1].y; + var xj = this.points[j * 2].x; + var yj = this.points[j * 2 + 1].y; var intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); @@ -15311,7 +15412,33 @@ Phaser.Polygon.prototype = { }, - setTo : function(points) { + /** + * Sets this Polygon to the given points. + * + * @method Phaser.Polygon#setTo + * @param {Phaser.Point[]|number[]} points - The array of Points. + * @return {boolean} True if the coordinates are within this polygon, otherwise false. + */ + setTo: function (points) { + + // If points isn't an array, use arguments as the array + if (!(points instanceof Array)) + { + points = Array.prototype.slice.call(arguments); + } + + // If this is a flat array of numbers, convert it to points + if (points[0] instanceof Phaser.Point) + { + var p = []; + + for (var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } this.points = points; @@ -15364,7 +15491,7 @@ Object.defineProperty(Phaser.Polygon.prototype, 'points', { /** * Returns the area of the polygon. * -* @name Phaser.Circle#right +* @name Phaser.Polygon#area * @readonly */ Object.defineProperty(Phaser.Polygon.prototype, 'area', { @@ -15413,7 +15540,7 @@ Object.defineProperty(Phaser.Polygon.prototype, 'area', { }); // Because PIXI uses its own Polygon, we'll replace it with ours to avoid duplicating code or confusion. -PIXI.Polygon = Phaser.Polygon; +// PIXI.Polygon = Phaser.Polygon; /** * @author Mat Groves http://matgroves.com/ @Doormat23 @@ -40282,24 +40409,6 @@ Phaser.Graphics.prototype.destroy = function(destroyChildren) { }; -/* -* Draws a {Phaser.Polygon} or a {PIXI.Polygon} filled -* -* @method Phaser.Graphics.prototype.drawPolygon -*/ -Phaser.Graphics.prototype.drawPolygon = function (poly) { - - this.moveTo(poly.points[0].x, poly.points[0].y); - - for (var i = 1; i < poly.points.length; i += 1) - { - this.lineTo(poly.points[i].x, poly.points[i].y); - } - - this.lineTo(poly.points[0].x, poly.points[0].y); - -}; - /* * Draws a single {Phaser.Polygon} triangle from a {Phaser.Point} array * diff --git a/build/custom/phaser-no-physics.min.js b/build/custom/phaser-no-physics.min.js index 55cc282e38..be48df8729 100644 --- a/build/custom/phaser-no-physics.min.js +++ b/build/custom/phaser-no-physics.min.js @@ -1,16 +1,16 @@ /* Phaser (NP) v2.1.3 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.0.0",b.blendModes={NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},b.scaleModes={DEFAULT:0,LINEAR:0,NEAREST:1},b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array):(b.Float32Array=Array,b.Uint16Array=Array),b.INTERACTION_FREQUENCY=30,b.AUTO_PREVENT_DEFAULT=!0,b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.dontSayHello=!1,b.defaultRenderOptions={view:null,transparent:!1,antialias:!1,preserveDrawingBuffer:!1,resolution:1,clearBeforeRender:!0},b.sayHello=function(a){if(!b.dontSayHello){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var c=["%c %c %c Pixi.js "+b.VERSION+" - "+a+" %c %c http://www.pixijs.com/ %c %c ♥%c♥%c♥ ","background: #ff66a5","background: #ff66a5","color: #ff66a5; background: #030307;","background: #ff66a5","background: #ffc3dc","background: #ff66a5","color: #ff2424; background: #fff","color: #ff2424; background: #fff","color: #ff2424; background: #fff"];console.log.apply(console,c)}else window.console&&console.log("Pixi.js "+b.VERSION+" - http://www.pixijs.com/");b.dontSayHello=!0}},b.Matrix=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0},b.Matrix.prototype.fromArray=function(a){this.a=a[0],this.b=a[1],this.c=a[3],this.d=a[4],this.tx=a[2],this.ty=a[5]},b.Matrix.prototype.toArray=function(a){this.array||(this.array=new b.Float32Array(9));var c=this.array;return a?(c[0]=this.a,c[1]=this.b,c[2]=0,c[3]=this.c,c[4]=this.d,c[5]=0,c[6]=this.tx,c[7]=this.ty,c[8]=1):(c[0]=this.a,c[1]=this.c,c[2]=this.tx,c[3]=this.b,c[4]=this.d,c[5]=this.ty,c[6]=0,c[7]=0,c[8]=1),c},b.Matrix.prototype.apply=function(a,c){return c=c||new b.Point,c.x=this.a*a.x+this.b*a.y+this.tx,c.y=this.c*a.x+this.d*a.y+this.ty,c},b.Matrix.prototype.applyInverse=function(a,c){c=c||new b.Point;var d=1/(this.a*this.d+this.c*-this.b);return c.x=this.d*d*a.x+-this.c*d*a.y+(this.ty*this.c-this.tx*this.d)*d,c.y=this.a*d*a.y+-this.b*d*a.x+(-this.ty*this.a+this.tx*this.b)*d,c},b.Matrix.prototype.translate=function(a,b){return this.tx+=a,this.ty+=b,this},b.Matrix.prototype.scale=function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},b.Matrix.prototype.rotate=function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},b.Matrix.prototype.append=function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},b.Matrix.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this},b.identityMatrix=new b.Matrix,b.DisplayObject=function(){this.position=new b.Point,this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.buttonMode=!1,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this._interactive=!1,this.defaultCursor="pointer",this.worldTransform=new b.Matrix,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,Object.defineProperty(b.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var b=[],c=0;c=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;ga;a++)this.children[a].updateTransform()},b.DisplayObjectContainer.prototype.getBounds=function(){if(0===this.children.length)return b.EmptyRectangle;for(var a,c,d,e=1/0,f=1/0,g=-1/0,h=-1/0,i=!1,j=0,k=this.children.length;k>j;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a,this._interactive&&(this.stage.dirty=!0);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d.setStageReference(a)}},b.DisplayObjectContainer.prototype.removeStageReference=function(){for(var a=0,b=this.children.length;b>a;a++){var c=this.children[a];c.removeStageReference()}this._interactive&&(this.stage.dirty=!0),this.stage=null},b.DisplayObjectContainer.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);var b,c;if(this._mask||this._filters){for(this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);a.spriteBatch.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),a.spriteBatch.start()}else for(b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.DisplayObjectContainer.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);this._mask&&a.maskManager.pushMask(this._mask,a);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d._renderCanvas(a)}this._mask&&a.maskManager.popMask(a)}},b.Sprite=function(a){b.DisplayObjectContainer.call(this),this.anchor=new b.Point,this.texture=a,this._width=0,this._height=0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL,this.shader=null,a.baseTexture.hasLoaded?this.onTextureUpdate():(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.on("update",this.onTextureUpdateBind)),this.renderable=!0},b.Sprite.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Sprite.prototype.constructor=b.Sprite,Object.defineProperty(b.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(b.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),b.Sprite.prototype.setTexture=function(a){this.texture=a,this.cachedTint=16777215},b.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height)},b.Sprite.prototype.getBounds=function(a){var b=this.texture.frame.width,c=this.texture.frame.height,d=b*(1-this.anchor.x),e=b*-this.anchor.x,f=c*(1-this.anchor.y),g=c*-this.anchor.y,h=a||this.worldTransform,i=h.a,j=h.c,k=h.b,l=h.d,m=h.tx,n=h.ty,o=i*e+k*g+m,p=l*g+j*e+n,q=i*d+k*g+m,r=l*g+j*d+n,s=i*d+k*f+m,t=l*f+j*d+n,u=i*e+k*f+m,v=l*f+j*e+n,w=-1/0,x=-1/0,y=1/0,z=1/0;y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,z=z>p?p:z,z=z>r?r:z,z=z>t?t:z,z=z>v?v:z,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,x=p>x?p:x,x=r>x?r:x,x=t>x?t:x,x=v>x?v:x;var A=this._bounds;return A.x=y,A.width=w-y,A.y=z,A.height=x-z,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){var b,c;if(this._mask||this._filters){var d=a.spriteBatch;for(this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);d.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),d.start()}else for(a.spriteBatch.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.Sprite.prototype._renderCanvas=function(a){if(!(this.visible===!1||0===this.alpha||this.texture.crop.width<=0||this.texture.crop.height<=0)){if(this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,a.context.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a),this.texture.valid){var c=this.texture.baseTexture.resolution/a.resolution;a.context.globalAlpha=this.worldAlpha,a.roundPixels?a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution|0,this.worldTransform.ty*a.resolution|0):a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution,this.worldTransform.ty*a.resolution),a.smoothProperty&&a.scaleMode!==this.texture.baseTexture.scaleMode&&(a.scaleMode=this.texture.baseTexture.scaleMode,a.context[a.smoothProperty]=a.scaleMode===b.scaleModes.LINEAR);var d=this.texture.trim?this.texture.trim.x-this.anchor.x*this.texture.trim.width:this.anchor.x*-this.texture.frame.width,e=this.texture.trim?this.texture.trim.y-this.anchor.y*this.texture.trim.height:this.anchor.y*-this.texture.frame.height;16777215!==this.tint?(this.cachedTint!==this.tint&&(this.cachedTint=this.tint,this.tintedTexture=b.CanvasTinter.getTintedTexture(this,this.tint)),a.context.drawImage(this.tintedTexture,0,0,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)):a.context.drawImage(this.texture.baseTexture.source,this.texture.crop.x,this.texture.crop.y,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)}for(var f=0,g=this.children.length;g>f;f++)this.children[f]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},b.Sprite.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache'+this);return new b.Sprite(c)},b.Sprite.fromImage=function(a,c,d){var e=b.Texture.fromImage(a,c,d);return new b.Sprite(e)},b.SpriteBatch=function(a){b.DisplayObjectContainer.call(this),this.textureThing=a,this.ready=!1},b.SpriteBatch.prototype=Object.create(b.DisplayObjectContainer.prototype),b.SpriteBatch.prototype.constructor=b.SpriteBatch,b.SpriteBatch.prototype.initWebGL=function(a){this.fastSpriteBatch=new b.WebGLFastSpriteBatch(a),this.ready=!0},b.SpriteBatch.prototype.updateTransform=function(){b.DisplayObject.prototype.updateTransform.call(this)},b.SpriteBatch.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||!this.children.length||(this.ready||this.initWebGL(a.gl),a.spriteBatch.stop(),a.shaderManager.setShader(a.shaderManager.fastShader),this.fastSpriteBatch.begin(this,a),this.fastSpriteBatch.render(this),a.spriteBatch.start())},b.SpriteBatch.prototype._renderCanvas=function(a){if(this.visible&&!(this.alpha<=0)&&this.children.length){var c=a.context;c.globalAlpha=this.worldAlpha,b.DisplayObject.prototype.updateTransform.call(this);for(var d=this.worldTransform,e=!0,f=0;fi;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(c.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}c.descent=i-g,c.fontSize=c.ascent+c.descent,b.Text.fontPropertiesCache[a]=c}return c},b.Text.prototype.wordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g],e=this.style.wordWrapWidth-h):(e-=i,b+=" "+f[g])}d=2?parseInt(c[c.length-2],10):b.BitmapText.fonts[this.fontName].size,this.dirty=!0,this.tint=a.tint},b.BitmapText.prototype.updateText=function(){for(var a=b.BitmapText.fonts[this.fontName],c=new b.Point,d=null,e=[],f=0,g=[],h=0,i=this.fontSize/a.size,j=0;j=j;j++){var n=0;"right"===this.style.align?n=f-g[j]:"center"===this.style.align&&(n=(f-g[j])/2),m.push(n)}var o=this.children.length,p=e.length,q=this.tint||16777215;for(j=0;p>j;j++){var r=o>j?this.children[j]:this._pool.pop();r?r.setTexture(e[j].texture):r=new b.Sprite(e[j].texture),r.position.x=(e[j].position.x+m[e[j].line])*i,r.position.y=e[j].position.y*i,r.scale.x=r.scale.y=i,r.tint=q,r.parent||this.addChild(r)}for(;this.children.length>p;){var s=this.getChildAt(this.children.length-1);this._pool.push(s),this.removeChild(s)}this.textWidth=f*i,this.textHeight=(c.y+a.lineHeight)*i},b.BitmapText.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),b.DisplayObjectContainer.prototype.updateTransform.call(this)},b.BitmapText.fonts={},b.Stage=function(a){b.DisplayObjectContainer.call(this),this.worldTransform=new b.Matrix,this.interactive=!0,this.interactionManager=new b.InteractionManager(this),this.dirty=!0,this.stage=this,this.stage.hitArea=new b.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a)},b.Stage.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},b.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var a=0,b=this.children.length;b>a;a++)this.children[a].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},b.Stage.prototype.setBackgroundColor=function(a){this.backgroundColor=a||0,this.backgroundColorSplit=b.hex2rgb(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},b.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},function(a){for(var b=0,c=["ms","moz","webkit","o"],d=0;d>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){return function(a){function b(){for(var d=arguments.length,f=new Array(d);d--;)f[d]=arguments[d];return f=e.concat(f),c.apply(this instanceof b?this:a,f)}var c=this,d=arguments.length-1,e=[];if(d>0)for(e.length=d;d--;)e[d]=arguments[d+1];if("function"!=typeof c)throw new TypeError;return b.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(c.prototype),b}}()),b.AjaxRequest=function(){var a=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new window.XMLHttpRequest:!1;for(var b=0;b0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.EventTarget={call:function(a){a&&(a=a.prototype||a,b.EventTarget.mixin(a))},mixin:function(a){a.listeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?this._listeners[a].slice():[]},a.emit=a.dispatchEvent=function(a,c){if(this._listeners=this._listeners||{},"object"==typeof a&&(c=a,a=a.type),c&&c.__isEventObject===!0||(c=new b.Event(this,a,c)),this._listeners&&this._listeners[a]){var d,e=this._listeners[a],f=e.length,g=e[0];for(d=0;f>d;g=e[++d])if(g.call(this,c),c.stoppedImmediate)return this;if(c.stopped)return this}return this.parent&&this.parent.emit&&this.parent.emit.call(this.parent,a,c),this},a.on=a.addEventListener=function(a,b){return this._listeners=this._listeners||{},(this._listeners[a]=this._listeners[a]||[]).push(b),this},a.once=function(a,b){function c(){b.apply(d.off(a,c),arguments)}this._listeners=this._listeners||{};var d=this;return c._originalHandler=b,this.on(a,c)},a.off=a.removeEventListener=function(a,b){if(this._listeners=this._listeners||{},!this._listeners[a])return this;for(var c=this._listeners[a],d=b?c.length:0;d-->0;)(c[d]===b||c[d]._originalHandler===b)&&c.splice(d,1);return 0===c.length&&delete this._listeners[a],this},a.removeAllListeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?(delete this._listeners[a],this):this}}},b.Event=function(a,b,c){this.__isEventObject=!0,this.stopped=!1,this.stoppedImmediate=!1,this.target=a,this.type=b,this.data=c,this.content=c,this.timeStamp=Date.now()},b.Event.prototype.stopPropagation=function(){this.stopped=!0},b.Event.prototype.stopImmediatePropagation=function(){this.stoppedImmediate=!0},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return window.console.log("PIXI Warning: shape too complex to fill"),[];for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.initDefaultShaders=function(){},b.CompileVertexShader=function(a,c){return b._CompileShader(a,c,a.VERTEX_SHADER)},b.CompileFragmentShader=function(a,c){return b._CompileShader(a,c,a.FRAGMENT_SHADER)},b._CompileShader=function(a,b,c){var d=b.join("\n"),e=a.createShader(c); -return a.shaderSource(e,d),a.compileShader(e),a.getShaderParameter(e,a.COMPILE_STATUS)?e:(window.console.log(a.getShaderInfoLog(e)),null)},b.compileProgram=function(a,c,d){var e=b.CompileFragmentShader(a,d),f=b.CompileVertexShader(a,c),g=a.createProgram();return a.attachShader(g,f),a.attachShader(g,e),a.linkProgram(g),a.getProgramParameter(g,a.LINK_STATUS)||window.console.log("Could not initialise shaders"),g},b.PixiShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.textureCount=0,this.firstRun=!0,this.dirty=!0,this.attributes=[],this.init()},b.PixiShader.prototype.constructor=b.PixiShader,b.PixiShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc||b.PixiShader.defaultVertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute];for(var d in this.uniforms)this.uniforms[d].uniformLocation=a.getUniformLocation(c,d);this.initUniforms(),this.program=c},b.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a,b=this.gl;for(var c in this.uniforms){a=this.uniforms[c];var d=a.type;"sampler2D"===d?(a._init=!1,null!==a.value&&this.initSampler2D(a)):"mat2"===d||"mat3"===d||"mat4"===d?(a.glMatrix=!0,a.glValueLength=1,"mat2"===d?a.glFunc=b.uniformMatrix2fv:"mat3"===d?a.glFunc=b.uniformMatrix3fv:"mat4"===d&&(a.glFunc=b.uniformMatrix4fv)):(a.glFunc=b["uniform"+d],a.glValueLength="2f"===d||"2i"===d?2:"3f"===d||"3i"===d?3:"4f"===d||"4i"===d?4:1)}},b.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){var b=this.gl;if(b.activeTexture(b["TEXTURE"+this.textureCount]),b.bindTexture(b.TEXTURE_2D,a.value.baseTexture._glTextures[b.id]),a.textureData){var c=a.textureData,d=c.magFilter?c.magFilter:b.LINEAR,e=c.minFilter?c.minFilter:b.LINEAR,f=c.wrapS?c.wrapS:b.CLAMP_TO_EDGE,g=c.wrapT?c.wrapT:b.CLAMP_TO_EDGE,h=c.luminance?b.LUMINANCE:b.RGBA;if(c.repeat&&(f=b.REPEAT,g=b.REPEAT),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,!!c.flipY),c.width){var i=c.width?c.width:512,j=c.height?c.height:2,k=c.border?c.border:0;b.texImage2D(b.TEXTURE_2D,0,h,i,j,k,h,b.UNSIGNED_BYTE,null)}else b.texImage2D(b.TEXTURE_2D,0,h,b.RGBA,b.UNSIGNED_BYTE,a.value.baseTexture.source);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,d),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,f),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,g)}b.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},b.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a,c=this.gl;for(var d in this.uniforms)a=this.uniforms[d],1===a.glValueLength?a.glMatrix===!0?a.glFunc.call(c,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c,a.uniformLocation,a.value):2===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y):3===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z):4===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"===a.type&&(a._init?(c.activeTexture(c["TEXTURE"+this.textureCount]),a.value.baseTexture._dirty[c.id]?b.defaultRenderer.updateTexture(a.value.baseTexture):c.bindTexture(c.TEXTURE_2D,a.value.baseTexture._glTextures[c.id]),c.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},b.PixiShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec4 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"],b.PixiFastShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"],this.textureCount=0,this.init()},b.PixiFastShader.prototype.constructor=b.PixiFastShader,b.PixiFastShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.uMatrix=a.getUniformLocation(c,"uMatrix"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aPositionCoord=a.getAttribLocation(c,"aPositionCoord"),this.aScale=a.getAttribLocation(c,"aScale"),this.aRotation=a.getAttribLocation(c,"aRotation"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute],this.program=c},b.PixiFastShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.StripShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;","}"],this.init()},b.StripShader.prototype.constructor=b.StripShader,b.StripShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.attributes=[this.aVertexPosition,this.aTextureCoord],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.StripShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.PrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor * vec4(tint * alpha, alpha);","}"],this.init()},b.PrimitiveShader.prototype.constructor=b.PrimitiveShader,b.PrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.ComplexPrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform vec3 tint;","uniform float alpha;","uniform vec3 color;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = vec4(color * alpha * tint, alpha);","}"],this.init()},b.ComplexPrimitiveShader.prototype.constructor=b.ComplexPrimitiveShader,b.ComplexPrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.color=a.getUniformLocation(c,"color"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.ComplexPrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.WebGLGraphics=function(){},b.WebGLGraphics.renderGraphics=function(a,c){var d,e=c.gl,f=c.projection,g=c.offset,h=c.shaderManager.primitiveShader;a.dirty&&b.WebGLGraphics.updateGraphics(a,e);for(var i=a._webGL[e.id],j=0;j=6&&(h.points.length>10?(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g)):(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildPoly(h,g))),h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))):(g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g)),d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d),n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i)}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.lastIndex=0,this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[],this.lastIndex=0},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},b.glContexts=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)"undefined"==typeof d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.sayHello("webGL"),b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this.contextLostBound=this.handleContextLost.bind(this),this.contextRestoredBound=this.handleContextRestored.bind(this),this.view.addEventListener("webglcontextlost",this.contextLostBound,!1),this.view.addEventListener("webglcontextrestored",this.contextRestoredBound,!1),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(a.interactive&&a.interactionManager.removeEvents(),this.__stage=a),a.updateTransform();var b=this.gl;a._interactive?a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)):a._interactiveEventsAdded&&(a._interactiveEventsAdded=!1,a.interactionManager.setTarget(this)),b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.handleContextLost=function(a){a.preventDefault(),this.contextLost=!0},b.WebGLRenderer.prototype.handleContextRestored=function(){this.initContext();for(var a in b.TextureCache){var c=b.TextureCache[a].baseTexture;c._glTextures=[]}this.contextLost=!1},b.WebGLRenderer.prototype.destroy=function(){this.view.off("webglcontextlost",this.contextLostBound),this.view.off("webglcontextrestored",this.contextRestoredBound),b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a){var b=a.texture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=b.baseTexture);var c=b._uvs;if(c){var d,e,f,g,h=a.worldAlpha,i=a.tint,j=this.vertices,k=a.anchor.x,l=a.anchor.y;if(b.trim){var m=b.trim;e=m.x-k*m.width,d=e+b.crop.width,g=m.y-l*m.height,f=g+b.crop.height}else d=b.frame.width*(1-k),e=b.frame.width*-k,f=b.frame.height*(1-l),g=b.frame.height*-l;var n=4*this.currentBatchSize*this.vertSize,o=b.baseTexture.resolution,p=a.worldTransform,q=p.a/o,r=p.b/o,s=p.c/o,t=p.d/o,u=p.tx,v=p.ty;j[n++]=q*e+s*g+u,j[n++]=t*g+r*e+v,j[n++]=c.x0,j[n++]=c.y0,j[n++]=h,j[n++]=i,j[n++]=q*d+s*g+u,j[n++]=t*g+r*d+v,j[n++]=c.x1,j[n++]=c.y1,j[n++]=h,j[n++]=i,j[n++]=q*d+s*f+u,j[n++]=t*f+r*d+v,j[n++]=c.x2,j[n++]=c.y2,j[n++]=h,j[n++]=i,j[n++]=q*e+s*f+u,j[n++]=t*f+r*e+v,j[n++]=c.x3,j[n++]=c.y3,j[n++]=h,j[n++]=i,this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs;a.tilePosition.x%=c.baseTexture.width*a.tileScaleOffset.x,a.tilePosition.y%=c.baseTexture.height*a.tileScaleOffset.y;var e=a.tilePosition.x/(c.baseTexture.width*a.tileScaleOffset.x),f=a.tilePosition.y/(c.baseTexture.height*a.tileScaleOffset.y),g=a.width/c.baseTexture.width/(a.tileScale.x*a.tileScaleOffset.x),h=a.height/c.baseTexture.height/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-e,d.y0=0-f,d.x1=1*g-e,d.y1=0-f,d.x2=1*g-e,d.y2=1*h-f,d.x3=0-e,d.y3=1*h-f;var i=a.worldAlpha,j=a.tint,k=this.vertices,l=a.width,m=a.height,n=a.anchor.x,o=a.anchor.y,p=l*(1-n),q=l*-n,r=m*(1-o),s=m*-o,t=4*this.currentBatchSize*this.vertSize,u=c.baseTexture.resolution,v=a.worldTransform,w=v.a/u,x=v.b/u,y=v.c/u,z=v.d/u,A=v.tx,B=v.ty;k[t++]=w*q+y*s+A,k[t++]=z*s+x*q+B,k[t++]=d.x0,k[t++]=d.y0,k[t++]=i,k[t++]=j,k[t++]=w*p+y*s+A,k[t++]=z*s+x*p+B,k[t++]=d.x1,k[t++]=d.y1,k[t++]=i,k[t++]=j,k[t++]=w*p+y*r+A,k[t++]=z*r+x*p+B,k[t++]=d.x2,k[t++]=d.y2,k[t++]=i,k[t++]=j,k[t++]=w*q+y*r+A,k[t++]=z*r+x*q+B,k[t++]=d.x3,k[t++]=d.y3,k[t++]=i,k[t++]=j,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,2,c.FLOAT,!1,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var a=4*this.size*this.vertSize,b=6*this.maxSize;this.vertices=new Float32Array(a),this.indices=new Uint16Array(b),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var c=0,d=0;b>c;c+=6,d+=4)this.indices[c+0]=d+0,this.indices[c+1]=d+1,this.indices[c+2]=d+2,this.indices[c+3]=d+0,this.indices[c+4]=d+2,this.indices[c+5]=d+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(g.fillColor||0===g.fillColor)&&(c.globalAlpha=g.fillAlpha*d,c.fillStyle=e="#"+("00000"+(0|g.fillColor).toString(16)).substr(-6),c.fill()),g.lineWidth&&(c.globalAlpha=g.lineAlpha*d,c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){d>1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){c.beginPath();var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iA?A:z,c.beginPath(),c.moveTo(v,w+z),c.lineTo(v,w+y-z),c.quadraticCurveTo(v,w+y,v+z,w+y),c.lineTo(v+x-z,w+y),c.quadraticCurveTo(v+x,w+y,v+x,w+y-z),c.lineTo(v+x,w+z),c.quadraticCurveTo(v+x,w,v+x-z,w),c.lineTo(v+z,w),c.quadraticCurveTo(v,w,v,w+z),c.closePath()}}}},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.padding=0},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var b=a.gl,c=a.projection,d=a.offset,e=a.shaderManager.stripShader;b.blendFunc(b.ONE,b.ONE_MINUS_SRC_ALPHA),b.uniformMatrix3fv(e.translationMatrix,!1,this.worldTransform.toArray(!0)),b.uniform2f(e.projectionVector,c.x,-c.y),b.uniform2f(e.offsetVector,-d.x,-d.y),b.uniform1f(e.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.STATIC_DRAW),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)):(b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferSubData(b.ARRAY_BUFFER,0,this.verticies),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),b.drawElements(b.TRIANGLE_STRIP,this.indices.length,b.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var b=a.context,c=this.worldTransform;a.roundPixels?b.setTransform(c.a,c.b,c.c,c.d,0|c.tx,0|c.ty):b.setTransform(c.a,c.b,c.c,c.d,c.tx,c.ty);var d=this,e=d.verticies,f=d.uvs,g=e.length/2;this.count++;for(var h=0;g-2>h;h++){var i=2*h,j=e[i],k=e[i+2],l=e[i+4],m=e[i+1],n=e[i+3],o=e[i+5];if(this.padding>0){var p=(j+k+l)/3,q=(m+n+o)/3,r=j-p,s=m-q,t=Math.sqrt(r*r+s*s);j=p+r/t*(t+3),m=q+s/t*(t+3),r=k-p,s=n-q,t=Math.sqrt(r*r+s*s),k=p+r/t*(t+3),n=q+s/t*(t+3),r=l-p,s=o-q,t=Math.sqrt(r*r+s*s),l=p+r/t*(t+3),o=q+s/t*(t+3) -}var u=f[i]*d.texture.width,v=f[i+2]*d.texture.width,w=f[i+4]*d.texture.width,x=f[i+1]*d.texture.height,y=f[i+3]*d.texture.height,z=f[i+5]*d.texture.height;b.save(),b.beginPath(),b.moveTo(j,m),b.lineTo(k,n),b.lineTo(l,o),b.closePath(),b.clip();var A=u*y+x*w+v*z-y*w-x*v-u*z,B=j*y+x*l+k*z-y*l-x*k-j*z,C=u*k+j*w+v*l-k*w-j*v-u*l,D=u*y*l+x*k*w+j*v*z-j*y*w-x*v*l-u*k*z,E=m*y+x*o+n*z-y*o-x*n-m*z,F=u*n+m*w+v*o-n*w-m*v-u*o,G=u*y*o+x*n*w+m*v*z-m*y*w-x*v*o-u*n*z;b.transform(B/A,E/A,C/A,F/A,D/A,G/A),b.drawImage(d.texture.baseTexture.source,0,0),b.restore()}},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.verticies=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.verticies,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||100,this._height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this._mask,a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d,e,f=this.worldTransform,g=a.resolution;if(c.setTransform(f.a*g,f.c*g,f.b*g,f.d*g,f.tx*g,f.ty*g),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]);var h=this.tilePosition,i=this.tileScale;for(h.x%=this.tilingTexture.baseTexture.width,h.y%=this.tilingTexture.baseTexture.height,c.scale(i.x,i.y),c.translate(h.x+this.anchor.x*-this._width,h.y+this.anchor.y*-this._height),c.fillStyle=this.__tilePattern,c.fillRect(-h.x,-h.y,this._width/i.x,this._height/i.y),c.scale(1/i.x,1/i.y),c.translate(-h.x+this.anchor.x*this._width,-h.y+this.anchor.y*this._height),this._mask&&a.maskManager.popMask(a.context),d=0,e=this.children.length;e>d;d++)this.children[d]._renderCanvas(a)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.onTextureUpdate=function(){},b.TilingSprite.prototype.generateTilingTexture=function(a){if(this.texture.baseTexture.hasLoaded){var c,d,e=this.originalTexture||this.texture,f=e.frame,g=f.width!==e.baseTexture.width||f.height!==e.baseTexture.height,h=!1;if(a?(c=b.getNextPowerOfTwo(f.width),d=b.getNextPowerOfTwo(f.height),(f.width!==c||f.height!==d)&&(h=!0)):g&&(c=f.width,d=f.height,h=!0),h){var i;this.tilingTexture&&this.tilingTexture.isTiling?(i=this.tilingTexture.canvasBuffer,i.resize(c,d),this.tilingTexture.baseTexture.width=c,this.tilingTexture.baseTexture.height=d,this.tilingTexture.needsUpdate=!0):(i=new b.CanvasBuffer(c,d),this.tilingTexture=b.Texture.fromCanvas(i.canvas),this.tilingTexture.canvasBuffer=i,this.tilingTexture.isTiling=!0),i.context.drawImage(e.baseTexture.source,e.crop.x,e.crop.y,e.crop.width,e.crop.height,0,0,c,d),this.tileScaleOffset.x=f.width/c,this.tileScaleOffset.y=f.height/d}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=e;this.refreshTexture=!1,this.originalTexture=this.texture,this.texture=this.tilingTexture,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this._dirty=[!0,!0,!0,!0],a){if((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height)this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty();else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.naturalWidth||d.source.width,d.height=d.source.naturalHeight||d.source.height,d.dirty(),d.dispatchEvent({type:"loaded",content:d})},this.source.onerror=function(){d.dispatchEvent({type:"error",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.EventTarget.mixin(b.BaseTexture.prototype),b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,this.source.src=""):this.source&&this.source._pixiId&&delete b.BaseTextureCache[this.source._pixiId],this.source=null;for(var a=this._glTextures.length-1;a>=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;athis.baseTexture.width||a.y+a.height>this.baseTexture.height))throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width,this.height)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width*this.resolution,this.height*this.resolution,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=this.frame.width=this.crop.width=a,this.height=this.frame.height=this.crop.height=c,d&&(this.baseTexture.width=this.width,this.baseTexture.height=this.height),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width*this.resolution,this.height*this.resolution))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1),a.worldAlpha=1;for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();var h=this.renderer.gl;h.viewport(0,0,this.width*this.resolution,this.height*this.resolution),h.bindFramebuffer(h.FRAMEBUFFER,this.textureBuffer.frameBuffer),c&&this.textureBuffer.clear(),this.renderer.spriteBatch.dirty=!0,this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),this.renderer.spriteBatch.dirty=!0}},b.RenderTexture.prototype.renderCanvas=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),b&&d.append(b);for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();c&&this.textureBuffer.clear();var h=this.textureBuffer.context,i=this.renderer.resolution;this.renderer.resolution=this.resolution,this.renderer.renderDisplayObject(a,h),this.renderer.resolution=i}},b.RenderTexture.prototype.getImage=function(){var a=new Image;return a.src=this.getBase64(),a},b.RenderTexture.prototype.getBase64=function(){return this.getCanvas().toDataURL()},b.RenderTexture.prototype.getCanvas=function(){if(this.renderer.type===b.WEBGL_RENDERER){var a=this.renderer.gl,c=this.textureBuffer.width,d=this.textureBuffer.height,e=new Uint8Array(4*c*d);a.bindFramebuffer(a.FRAMEBUFFER,this.textureBuffer.frameBuffer),a.readPixels(0,0,c,d,a.RGBA,a.UNSIGNED_BYTE,e),a.bindFramebuffer(a.FRAMEBUFFER,null);for(var f=new b.CanvasBuffer(c,d),g=f.context.getImageData(0,0,c,d),h=g.data,i=0;ia;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this),function(){var a=this,b=b||{VERSION:"2.1.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};if(PIXI.InteractionManager=PIXI.InteractionManager||function(){},PIXI.dontSayHello=!0,b.Utils={getProperty:function(a,b){for(var c=b.split("."),d=c.pop(),e=c.length,f=1,g=c[0];e>f&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},transposeArray:function(a){for(var b=new Array(a[0].length),c=0;c-1;d--)b[c][d]=a[d][c]}return b},rotateArray:function(a,c){if("string"!=typeof c&&(c=(c%360+360)%360),90===c||-270===c||"rotateLeft"===c)a=b.Utils.transposeArray(a),a=a.reverse();else if(-90===c||270===c||"rotateRight"===c)a=a.reverse(),a=b.Utils.transposeArray(a);else if(180===Math.abs(c)||"rotate180"===c){for(var d=0;d0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h},mixin:function(a,c){if(!a||"object"!=typeof a)return c;for(var d in a){var e=a[d];if(!e.childNodes&&!e.cloneNode){var f=typeof a[d];c[d]=a[d]&&"object"===f?typeof c[d]===f?b.Utils.mixin(a[d],c[d]):b.Utils.mixin(a[d],new e.constructor):a[d]}}return c}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var c=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;b0?.5*c:0},b.Circle.prototype={type:null,circumference:function(){return 2*Math.PI*this._radius},getBounds:function(){return new b.Rectangle(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRounded(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},angleSq:function(a){return this.subtract(a).angle(a.subtract(this))},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},b.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},b.Point.angleSq=function(a,b){return a.subtract(b).angle(b.subtract(a))},b.Point.negative=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.x,-a.y)},b.Point.multiplyAdd=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+c.x*d,a.y+c.y*d)},b.Point.interpolate=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+(c.x-a.x)*d,a.y+(c.y-a.y)*d)},b.Point.perp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.y,a.x)},b.Point.rperp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(a.y,-a.x)},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRounded(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.project=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c)/c.getMagnitudeSq();return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.projectUnit=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c);return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.normalRightHand=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-1*a.y,a.x)},b.Point.normalize=function(a,c){"undefined"==typeof c&&(c=new b.Point);var d=a.getMagnitude();return 0!==d&&c.setTo(a.x/d,a.y/d),c},b.Point.rotate=function(a,c,d,e,f,g){f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y)));var h=e+Math.atan2(a.y-d,a.x-c);return a.setTo(c+g*Math.cos(h),d+g*Math.sin(h))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},b.Point.parse=function(a,c,d){c=c||"x",d=d||"y";var e=new b.Point;return a[c]&&(e.x=parseInt(a[c],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return"undefined"==typeof b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(a,this)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(b.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"topRight",{get:function(){return new b.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y) -},b.Rectangle.size=function(a,c){return"undefined"==typeof c||null===c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c||null===c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(c.x-a.x)-(e.x-d.x)*(c.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((c.x-a.x)*(a.y-d.y)-(c.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new b.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){this.type=b.POLYGON,this.points=a},b.Polygon.prototype={type:null,clone:function(a){for(var c=[],d=0;db!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!c)}return c},setTo:function(a){return this.points=a,this}},b.Polygon.prototype.constructor=b.Polygon,Object.defineProperty(b.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this._points=a}}),Object.defineProperty(b.Polygon.prototype,"area",{get:function(){var a,b,c,d,e,f=Number.MAX_VALUE,g=0;for(e=0;e=l;l++)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;q++)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[a,b]):this.moveTo(a,b),0===this.currentPath.length&&this.moveTo(a,b);var f=this.currentPath,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){var g=a+Math.cos(d)*c,h=b+Math.sin(d)*c,i=this.currentPath.shape.points;if((0!==i.length&&i[i.length-2]!==g||i[i.length-1]!==h)&&(this.moveTo(g,h),i=this.currentPath.shape.points),d===e)return this;!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var j=f?-1*(d-e):e-d,k=Math.abs(j)/(2*Math.PI)*40;if(0===j)return this;for(var l=j/(2*k),m=2*l,n=Math.cos(l),o=Math.sin(l),p=k-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);i.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape({points:[a,b,c,d,e],type:PIXI.Graphics.RREC}),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){return a instanceof Array||(a=Array.prototype.slice.call(arguments)),this.drawShape(new PIXI.Polygon(a)),this},PIXI.Graphics.prototype.clear=function(){return this.lineWidth=0,this.filling=!1,this.dirty=!0,this.clearDirty=!0,this.graphicsData=[],this},PIXI.Graphics.prototype.generateTexture=function(a,b){a=a||1;var c=this.getBounds(),d=new PIXI.CanvasBuffer(c.width*a,c.height*a),e=PIXI.Texture.fromCanvas(d.canvas,b);return e.baseTexture.resolution=a,d.context.scale(a,a),d.context.translate(-c.x,-c.y),PIXI.CanvasGraphics.renderGraphics(this,d.context),e},PIXI.Graphics.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite,a);if(a.spriteBatch.stop(),a.blendModeManager.setBlendMode(this.blendMode),this._mask&&a.maskManager.pushMask(this._mask,a),this._filters&&a.filterManager.pushFilter(this._filterBlock),this.blendMode!==a.spriteBatch.currentBlendMode){a.spriteBatch.currentBlendMode=this.blendMode;var b=PIXI.blendModesWebGL[a.spriteBatch.currentBlendMode];a.spriteBatch.gl.blendFunc(b[0],b[1])}if(this.webGLDirty&&(this.dirty=!0,this.webGLDirty=!1),PIXI.WebGLGraphics.renderGraphics(this,a),this.children.length){a.spriteBatch.start();for(var c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this.mask,a),a.drawCount++,a.spriteBatch.start()}},PIXI.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite,a);var b=a.context,c=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,b.globalCompositeOperation=PIXI.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a);var d=a.resolution;b.setTransform(c.a*d,c.b*d,c.c*d,c.d*d,c.tx*d,c.ty*d),PIXI.CanvasGraphics.renderGraphics(this,b);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},PIXI.Graphics.prototype.getBounds=function(a){this.dirty&&(this.updateBounds(),this.webGLDirty=!0,this.cachedSpriteDirty=!0,this.dirty=!1);var b=this._bounds,c=b.x,d=b.width+b.x,e=b.y,f=b.height+b.y,g=a||this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=n,w=o,x=n,y=o;return x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,b.x=x,b.width=v-x,b.y=y,b.height=w-y,b},PIXI.Graphics.prototype.updateBounds=function(){var a=1/0,b=-1/0,c=1/0,d=-1/0;if(this.graphicsData.length)for(var e,f,g,h,i,j,k=0;kg?g:a,b=g+i>b?g+i:b,c=c>h?h:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.CIRC)g=e.x,h=e.y,i=e.radius+n/2,j=e.radius+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.ELIP)g=e.x,h=e.y,i=e.width+n/2,j=e.height+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else{f=e.points;for(var o=0;og-n?g-n:a,b=g+n>b?g+n:b,c=c>h-n?h-n:c,d=h+n>d?h+n:d}}else a=0,b=0,c=0,d=0;var p=this.boundsPadding,q=this._bounds;q.x=a-p,q.width=b-a+2*p,q.y=c-p,q.height=d-c+2*p},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null;var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this.fillColor=d,this.fillAlpha=e,this.fill=f,this.shape=g,this.type=g.type},PIXI.Graphics.POLY=0,PIXI.Graphics.RECT=1,PIXI.Graphics.CIRC=2,PIXI.Graphics.ELIP=3,PIXI.Graphics.RREC=4,PIXI.Polygon.prototype.type=PIXI.Graphics.POLY,PIXI.Rectangle.prototype.type=PIXI.Graphics.RECT,PIXI.Circle.prototype.type=PIXI.Graphics.CIRC,PIXI.Ellipse.prototype.type=PIXI.Graphics.ELIP,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this._position=new b.Point,this.displayObject=null,this.scale=null,this._targetPosition=new b.Point},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target).multiply(this.target.parent?this.target.parent.worldTransform.a:1,this.target.parent?this.target.parent.worldTransform.d:1),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},resize:function(){},paused:function(){},pauseUpdate:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[])},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created&&this.onPauseUpdateCallback?this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.ArrayList=function(){this.total=0,this.position=0,this.list=[]},b.ArrayList.prototype={add:function(a){return this.exists(a)||(this.list.push(a),this.total++),a},getIndex:function(a){return this.list.indexOf(a)},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0,this.total=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),this.total--,a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)}},Object.defineProperty(b.ArrayList.prototype,"first",{get:function(){return this.position=0,this.total>0?this.list[0]:null}}),Object.defineProperty(b.ArrayList.prototype,"next",{get:function(){return this.positionb;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange;var a=this;this.game.device.cocoonJSApp&&(CocoonJS.App.onSuspended.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"pause"})}),CocoonJS.App.onActivated.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"resume"})}))},b.Stage.prototype.visibilityChange=function(a){return"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(this.disableVisibilityChange||(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden||"pause"===a.type?this.game.gamePaused(a):this.game.gameResumed(a)))},b.Stage.prototype.setBackgroundColor=function(a){if("string"==typeof a){var c=b.Color.hexToColor(a);this._backgroundColor=b.Color.getColor(c.r,c.g,c.b)}else{var c=b.Color.getRGB(a);this._backgroundColor=a}this.backgroundColorSplit=[c.r/255,c.g/255,c.b/255],this.backgroundColorString=b.Color.RGBtoString(c.r,c.g,c.b,255,"#")},b.Stage.prototype.destroy=function(){this._hiddenVar&&document.removeEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=null,window.onpageshow=null,window.onblur=null,window.onfocus=null},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this.game.transparent||this.setBackgroundColor(a)}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.ignoreDestroy=!1,this.classType=b.Sprite,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this.onDestroy=new b.Signal,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a,b){return"undefined"==typeof b&&(b=!1),a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,!b&&a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addMultiple=function(a,b){if(Array.isArray(a))for(var c=0;ca||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,b,c,d,e){"undefined"==typeof e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,f.events&&f.events.onAddedToGroup.dispatch(f,this),null===this.cursor&&(this.cursor=f),f},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.resetCursor=function(a){return"undefined"==typeof a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this._cache[8]=a,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},b.Group.prototype.setProperty=function(a,b,c,d,e){if("undefined"==typeof e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},b.Group.prototype.checkProperty=function(a,c,d,e){return"undefined"==typeof e&&(e=!1),!b.Utils.getProperty(a,c)&&e?!1:b.Utils.getProperty(a,c)!==d?!1:!0},b.Group.prototype.set=function(a,b,c,d,e,f,g){return"undefined"==typeof g&&(g=!1),b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},b.Group.prototype.setAll=function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof f&&(f=!1),a=a.split("."),e=e||0;for(var g=0,h=this.children.length;h>g;g++)(!c||c&&this.children[g].alive)&&(!d||d&&this.children[g].visible)&&this.setProperty(this.children[g],a,b,e,f)},b.Group.prototype.setAllChildren=function(a,c,d,e,f,g){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),"undefined"==typeof g&&(g=!1),f=f||0;for(var h=0,i=this.children.length;i>h;h++)(!d||d&&this.children[h].alive)&&(!e||e&&this.children[h].visible)&&(this.children[h]instanceof b.Group?this.children[h].setAllChildren(a,c,d,e,f,g):this.setProperty(this.children[h],a.split("."),c,f,g))},b.Group.prototype.checkAll=function(a,b,c,d,e){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);for(var f=0,g=this.children.length;g>f;f++)if((!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&!this.checkProperty(this.children[f],a,b,e))return!1;return!0},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.filter=function(a,c){for(var d=-1,e=this.children.length,f=new b.ArrayList;++de;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b,c){if("undefined"==typeof b&&(b=!1),"undefined"==typeof c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup.dispatch(a,this);var d=this.removeChild(a);return this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},b.Group.prototype.removeAll=function(a,b){if("undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);a&&c&&c.destroy(!0)}while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c,d){if("undefined"==typeof b&&(b=this.children.length-1),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup.dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},b.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},b.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(b.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){awindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.bounds=new b.Rectangle,this.aspectRatio=0,this.sourceAspectRatio=0,this.event=null,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this.parentIsWindow=!1,this.parentNode=null,this.parentScaleFactor=new b.Point(1,1),this.trackParentInterval=2e3,this.onResize=null,this.onResizeContext=null,this._scaleMode=b.ScaleManager.NO_SCALE,this._width=0,this._height=0,this._check=null,this._nextParentCheck=0,this._parentBounds=null,a.config&&this.parseConfig(a.config),this.setupScale(c,d) +(function(){var a=this,b=b||{};b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.0.0",b.blendModes={NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},b.scaleModes={DEFAULT:0,LINEAR:0,NEAREST:1},b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array):(b.Float32Array=Array,b.Uint16Array=Array),b.INTERACTION_FREQUENCY=30,b.AUTO_PREVENT_DEFAULT=!0,b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.dontSayHello=!1,b.defaultRenderOptions={view:null,transparent:!1,antialias:!1,preserveDrawingBuffer:!1,resolution:1,clearBeforeRender:!0},b.sayHello=function(a){if(!b.dontSayHello){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var c=["%c %c %c Pixi.js "+b.VERSION+" - "+a+" %c %c http://www.pixijs.com/ %c %c ♥%c♥%c♥ ","background: #ff66a5","background: #ff66a5","color: #ff66a5; background: #030307;","background: #ff66a5","background: #ffc3dc","background: #ff66a5","color: #ff2424; background: #fff","color: #ff2424; background: #fff","color: #ff2424; background: #fff"];console.log.apply(console,c)}else window.console&&console.log("Pixi.js "+b.VERSION+" - http://www.pixijs.com/");b.dontSayHello=!0}},b.Polygon=function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}this.closed=!0,this.points=a},b.Polygon.prototype.clone=function(){var a=this.points.slice();return new b.Polygon(a)},b.Polygon.prototype.contains=function(a,b){for(var c=!1,d=this.points.length/2,e=0,f=d-1;d>e;f=e++){var g=this.points[2*e],h=this.points[2*e+1],i=this.points[2*f],j=this.points[2*f+1],k=h>b!=j>b&&(i-g)*(b-h)/(j-h)+g>a;k&&(c=!c)}return c},b.Polygon.prototype.constructor=b.Polygon,b.Matrix=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0},b.Matrix.prototype.fromArray=function(a){this.a=a[0],this.b=a[1],this.c=a[3],this.d=a[4],this.tx=a[2],this.ty=a[5]},b.Matrix.prototype.toArray=function(a){this.array||(this.array=new b.Float32Array(9));var c=this.array;return a?(c[0]=this.a,c[1]=this.b,c[2]=0,c[3]=this.c,c[4]=this.d,c[5]=0,c[6]=this.tx,c[7]=this.ty,c[8]=1):(c[0]=this.a,c[1]=this.c,c[2]=this.tx,c[3]=this.b,c[4]=this.d,c[5]=this.ty,c[6]=0,c[7]=0,c[8]=1),c},b.Matrix.prototype.apply=function(a,c){return c=c||new b.Point,c.x=this.a*a.x+this.b*a.y+this.tx,c.y=this.c*a.x+this.d*a.y+this.ty,c},b.Matrix.prototype.applyInverse=function(a,c){c=c||new b.Point;var d=1/(this.a*this.d+this.c*-this.b);return c.x=this.d*d*a.x+-this.c*d*a.y+(this.ty*this.c-this.tx*this.d)*d,c.y=this.a*d*a.y+-this.b*d*a.x+(-this.ty*this.a+this.tx*this.b)*d,c},b.Matrix.prototype.translate=function(a,b){return this.tx+=a,this.ty+=b,this},b.Matrix.prototype.scale=function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},b.Matrix.prototype.rotate=function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},b.Matrix.prototype.append=function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},b.Matrix.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this},b.identityMatrix=new b.Matrix,b.DisplayObject=function(){this.position=new b.Point,this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.buttonMode=!1,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this._interactive=!1,this.defaultCursor="pointer",this.worldTransform=new b.Matrix,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,Object.defineProperty(b.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var b=[],c=0;c=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;ga;a++)this.children[a].updateTransform()},b.DisplayObjectContainer.prototype.getBounds=function(){if(0===this.children.length)return b.EmptyRectangle;for(var a,c,d,e=1/0,f=1/0,g=-1/0,h=-1/0,i=!1,j=0,k=this.children.length;k>j;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a,this._interactive&&(this.stage.dirty=!0);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d.setStageReference(a)}},b.DisplayObjectContainer.prototype.removeStageReference=function(){for(var a=0,b=this.children.length;b>a;a++){var c=this.children[a];c.removeStageReference()}this._interactive&&(this.stage.dirty=!0),this.stage=null},b.DisplayObjectContainer.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);var b,c;if(this._mask||this._filters){for(this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);a.spriteBatch.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),a.spriteBatch.start()}else for(b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.DisplayObjectContainer.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);this._mask&&a.maskManager.pushMask(this._mask,a);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d._renderCanvas(a)}this._mask&&a.maskManager.popMask(a)}},b.Sprite=function(a){b.DisplayObjectContainer.call(this),this.anchor=new b.Point,this.texture=a,this._width=0,this._height=0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL,this.shader=null,a.baseTexture.hasLoaded?this.onTextureUpdate():(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.on("update",this.onTextureUpdateBind)),this.renderable=!0},b.Sprite.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Sprite.prototype.constructor=b.Sprite,Object.defineProperty(b.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(b.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),b.Sprite.prototype.setTexture=function(a){this.texture=a,this.cachedTint=16777215},b.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height)},b.Sprite.prototype.getBounds=function(a){var b=this.texture.frame.width,c=this.texture.frame.height,d=b*(1-this.anchor.x),e=b*-this.anchor.x,f=c*(1-this.anchor.y),g=c*-this.anchor.y,h=a||this.worldTransform,i=h.a,j=h.c,k=h.b,l=h.d,m=h.tx,n=h.ty,o=i*e+k*g+m,p=l*g+j*e+n,q=i*d+k*g+m,r=l*g+j*d+n,s=i*d+k*f+m,t=l*f+j*d+n,u=i*e+k*f+m,v=l*f+j*e+n,w=-1/0,x=-1/0,y=1/0,z=1/0;y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,z=z>p?p:z,z=z>r?r:z,z=z>t?t:z,z=z>v?v:z,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,x=p>x?p:x,x=r>x?r:x,x=t>x?t:x,x=v>x?v:x;var A=this._bounds;return A.x=y,A.width=w-y,A.y=z,A.height=x-z,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){var b,c;if(this._mask||this._filters){var d=a.spriteBatch;for(this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);d.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),d.start()}else for(a.spriteBatch.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.Sprite.prototype._renderCanvas=function(a){if(!(this.visible===!1||0===this.alpha||this.texture.crop.width<=0||this.texture.crop.height<=0)){if(this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,a.context.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a),this.texture.valid){var c=this.texture.baseTexture.resolution/a.resolution;a.context.globalAlpha=this.worldAlpha,a.roundPixels?a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution|0,this.worldTransform.ty*a.resolution|0):a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution,this.worldTransform.ty*a.resolution),a.smoothProperty&&a.scaleMode!==this.texture.baseTexture.scaleMode&&(a.scaleMode=this.texture.baseTexture.scaleMode,a.context[a.smoothProperty]=a.scaleMode===b.scaleModes.LINEAR);var d=this.texture.trim?this.texture.trim.x-this.anchor.x*this.texture.trim.width:this.anchor.x*-this.texture.frame.width,e=this.texture.trim?this.texture.trim.y-this.anchor.y*this.texture.trim.height:this.anchor.y*-this.texture.frame.height;16777215!==this.tint?(this.cachedTint!==this.tint&&(this.cachedTint=this.tint,this.tintedTexture=b.CanvasTinter.getTintedTexture(this,this.tint)),a.context.drawImage(this.tintedTexture,0,0,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)):a.context.drawImage(this.texture.baseTexture.source,this.texture.crop.x,this.texture.crop.y,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)}for(var f=0,g=this.children.length;g>f;f++)this.children[f]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},b.Sprite.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache'+this);return new b.Sprite(c)},b.Sprite.fromImage=function(a,c,d){var e=b.Texture.fromImage(a,c,d);return new b.Sprite(e)},b.SpriteBatch=function(a){b.DisplayObjectContainer.call(this),this.textureThing=a,this.ready=!1},b.SpriteBatch.prototype=Object.create(b.DisplayObjectContainer.prototype),b.SpriteBatch.prototype.constructor=b.SpriteBatch,b.SpriteBatch.prototype.initWebGL=function(a){this.fastSpriteBatch=new b.WebGLFastSpriteBatch(a),this.ready=!0},b.SpriteBatch.prototype.updateTransform=function(){b.DisplayObject.prototype.updateTransform.call(this)},b.SpriteBatch.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||!this.children.length||(this.ready||this.initWebGL(a.gl),a.spriteBatch.stop(),a.shaderManager.setShader(a.shaderManager.fastShader),this.fastSpriteBatch.begin(this,a),this.fastSpriteBatch.render(this),a.spriteBatch.start())},b.SpriteBatch.prototype._renderCanvas=function(a){if(this.visible&&!(this.alpha<=0)&&this.children.length){var c=a.context;c.globalAlpha=this.worldAlpha,b.DisplayObject.prototype.updateTransform.call(this);for(var d=this.worldTransform,e=!0,f=0;fi;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(c.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}c.descent=i-g,c.fontSize=c.ascent+c.descent,b.Text.fontPropertiesCache[a]=c}return c},b.Text.prototype.wordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g],e=this.style.wordWrapWidth-h):(e-=i,b+=" "+f[g])}d=2?parseInt(c[c.length-2],10):b.BitmapText.fonts[this.fontName].size,this.dirty=!0,this.tint=a.tint},b.BitmapText.prototype.updateText=function(){for(var a=b.BitmapText.fonts[this.fontName],c=new b.Point,d=null,e=[],f=0,g=[],h=0,i=this.fontSize/a.size,j=0;j=j;j++){var n=0;"right"===this.style.align?n=f-g[j]:"center"===this.style.align&&(n=(f-g[j])/2),m.push(n)}var o=this.children.length,p=e.length,q=this.tint||16777215;for(j=0;p>j;j++){var r=o>j?this.children[j]:this._pool.pop();r?r.setTexture(e[j].texture):r=new b.Sprite(e[j].texture),r.position.x=(e[j].position.x+m[e[j].line])*i,r.position.y=e[j].position.y*i,r.scale.x=r.scale.y=i,r.tint=q,r.parent||this.addChild(r)}for(;this.children.length>p;){var s=this.getChildAt(this.children.length-1);this._pool.push(s),this.removeChild(s)}this.textWidth=f*i,this.textHeight=(c.y+a.lineHeight)*i},b.BitmapText.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),b.DisplayObjectContainer.prototype.updateTransform.call(this)},b.BitmapText.fonts={},b.Stage=function(a){b.DisplayObjectContainer.call(this),this.worldTransform=new b.Matrix,this.interactive=!0,this.interactionManager=new b.InteractionManager(this),this.dirty=!0,this.stage=this,this.stage.hitArea=new b.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a)},b.Stage.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},b.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var a=0,b=this.children.length;b>a;a++)this.children[a].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},b.Stage.prototype.setBackgroundColor=function(a){this.backgroundColor=a||0,this.backgroundColorSplit=b.hex2rgb(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},b.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},function(a){for(var b=0,c=["ms","moz","webkit","o"],d=0;d>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){return function(a){function b(){for(var d=arguments.length,f=new Array(d);d--;)f[d]=arguments[d];return f=e.concat(f),c.apply(this instanceof b?this:a,f)}var c=this,d=arguments.length-1,e=[];if(d>0)for(e.length=d;d--;)e[d]=arguments[d+1];if("function"!=typeof c)throw new TypeError;return b.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(c.prototype),b}}()),b.AjaxRequest=function(){var a=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new window.XMLHttpRequest:!1;for(var b=0;b0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.EventTarget={call:function(a){a&&(a=a.prototype||a,b.EventTarget.mixin(a))},mixin:function(a){a.listeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?this._listeners[a].slice():[]},a.emit=a.dispatchEvent=function(a,c){if(this._listeners=this._listeners||{},"object"==typeof a&&(c=a,a=a.type),c&&c.__isEventObject===!0||(c=new b.Event(this,a,c)),this._listeners&&this._listeners[a]){var d,e=this._listeners[a],f=e.length,g=e[0];for(d=0;f>d;g=e[++d])if(g.call(this,c),c.stoppedImmediate)return this;if(c.stopped)return this}return this.parent&&this.parent.emit&&this.parent.emit.call(this.parent,a,c),this},a.on=a.addEventListener=function(a,b){return this._listeners=this._listeners||{},(this._listeners[a]=this._listeners[a]||[]).push(b),this},a.once=function(a,b){function c(){b.apply(d.off(a,c),arguments)}this._listeners=this._listeners||{};var d=this;return c._originalHandler=b,this.on(a,c)},a.off=a.removeEventListener=function(a,b){if(this._listeners=this._listeners||{},!this._listeners[a])return this;for(var c=this._listeners[a],d=b?c.length:0;d-->0;)(c[d]===b||c[d]._originalHandler===b)&&c.splice(d,1);return 0===c.length&&delete this._listeners[a],this},a.removeAllListeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?(delete this._listeners[a],this):this}}},b.Event=function(a,b,c){this.__isEventObject=!0,this.stopped=!1,this.stoppedImmediate=!1,this.target=a,this.type=b,this.data=c,this.content=c,this.timeStamp=Date.now()},b.Event.prototype.stopPropagation=function(){this.stopped=!0},b.Event.prototype.stopImmediatePropagation=function(){this.stoppedImmediate=!0},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return window.console.log("PIXI Warning: shape too complex to fill"),[];for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e +},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.initDefaultShaders=function(){},b.CompileVertexShader=function(a,c){return b._CompileShader(a,c,a.VERTEX_SHADER)},b.CompileFragmentShader=function(a,c){return b._CompileShader(a,c,a.FRAGMENT_SHADER)},b._CompileShader=function(a,b,c){var d=b.join("\n"),e=a.createShader(c);return a.shaderSource(e,d),a.compileShader(e),a.getShaderParameter(e,a.COMPILE_STATUS)?e:(window.console.log(a.getShaderInfoLog(e)),null)},b.compileProgram=function(a,c,d){var e=b.CompileFragmentShader(a,d),f=b.CompileVertexShader(a,c),g=a.createProgram();return a.attachShader(g,f),a.attachShader(g,e),a.linkProgram(g),a.getProgramParameter(g,a.LINK_STATUS)||window.console.log("Could not initialise shaders"),g},b.PixiShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.textureCount=0,this.firstRun=!0,this.dirty=!0,this.attributes=[],this.init()},b.PixiShader.prototype.constructor=b.PixiShader,b.PixiShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc||b.PixiShader.defaultVertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute];for(var d in this.uniforms)this.uniforms[d].uniformLocation=a.getUniformLocation(c,d);this.initUniforms(),this.program=c},b.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a,b=this.gl;for(var c in this.uniforms){a=this.uniforms[c];var d=a.type;"sampler2D"===d?(a._init=!1,null!==a.value&&this.initSampler2D(a)):"mat2"===d||"mat3"===d||"mat4"===d?(a.glMatrix=!0,a.glValueLength=1,"mat2"===d?a.glFunc=b.uniformMatrix2fv:"mat3"===d?a.glFunc=b.uniformMatrix3fv:"mat4"===d&&(a.glFunc=b.uniformMatrix4fv)):(a.glFunc=b["uniform"+d],a.glValueLength="2f"===d||"2i"===d?2:"3f"===d||"3i"===d?3:"4f"===d||"4i"===d?4:1)}},b.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){var b=this.gl;if(b.activeTexture(b["TEXTURE"+this.textureCount]),b.bindTexture(b.TEXTURE_2D,a.value.baseTexture._glTextures[b.id]),a.textureData){var c=a.textureData,d=c.magFilter?c.magFilter:b.LINEAR,e=c.minFilter?c.minFilter:b.LINEAR,f=c.wrapS?c.wrapS:b.CLAMP_TO_EDGE,g=c.wrapT?c.wrapT:b.CLAMP_TO_EDGE,h=c.luminance?b.LUMINANCE:b.RGBA;if(c.repeat&&(f=b.REPEAT,g=b.REPEAT),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,!!c.flipY),c.width){var i=c.width?c.width:512,j=c.height?c.height:2,k=c.border?c.border:0;b.texImage2D(b.TEXTURE_2D,0,h,i,j,k,h,b.UNSIGNED_BYTE,null)}else b.texImage2D(b.TEXTURE_2D,0,h,b.RGBA,b.UNSIGNED_BYTE,a.value.baseTexture.source);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,d),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,f),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,g)}b.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},b.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a,c=this.gl;for(var d in this.uniforms)a=this.uniforms[d],1===a.glValueLength?a.glMatrix===!0?a.glFunc.call(c,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c,a.uniformLocation,a.value):2===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y):3===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z):4===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"===a.type&&(a._init?(c.activeTexture(c["TEXTURE"+this.textureCount]),a.value.baseTexture._dirty[c.id]?b.defaultRenderer.updateTexture(a.value.baseTexture):c.bindTexture(c.TEXTURE_2D,a.value.baseTexture._glTextures[c.id]),c.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},b.PixiShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec4 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"],b.PixiFastShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"],this.textureCount=0,this.init()},b.PixiFastShader.prototype.constructor=b.PixiFastShader,b.PixiFastShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.uMatrix=a.getUniformLocation(c,"uMatrix"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aPositionCoord=a.getAttribLocation(c,"aPositionCoord"),this.aScale=a.getAttribLocation(c,"aScale"),this.aRotation=a.getAttribLocation(c,"aRotation"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute],this.program=c},b.PixiFastShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.StripShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;","}"],this.init()},b.StripShader.prototype.constructor=b.StripShader,b.StripShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.attributes=[this.aVertexPosition,this.aTextureCoord],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.StripShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.PrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor * vec4(tint * alpha, alpha);","}"],this.init()},b.PrimitiveShader.prototype.constructor=b.PrimitiveShader,b.PrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.ComplexPrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform vec3 tint;","uniform float alpha;","uniform vec3 color;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = vec4(color * alpha * tint, alpha);","}"],this.init()},b.ComplexPrimitiveShader.prototype.constructor=b.ComplexPrimitiveShader,b.ComplexPrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.color=a.getUniformLocation(c,"color"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.ComplexPrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.WebGLGraphics=function(){},b.WebGLGraphics.renderGraphics=function(a,c){var d,e=c.gl,f=c.projection,g=c.offset,h=c.shaderManager.primitiveShader;a.dirty&&b.WebGLGraphics.updateGraphics(a,e);for(var i=a._webGL[e.id],j=0;j=6&&(h.points.length>10?(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g)):(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildPoly(h,g))),h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))):(g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g)),d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d),n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i)}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.lastIndex=0,this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[],this.lastIndex=0},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},b.glContexts=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)"undefined"==typeof d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.sayHello("webGL"),b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this.contextLostBound=this.handleContextLost.bind(this),this.contextRestoredBound=this.handleContextRestored.bind(this),this.view.addEventListener("webglcontextlost",this.contextLostBound,!1),this.view.addEventListener("webglcontextrestored",this.contextRestoredBound,!1),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(a.interactive&&a.interactionManager.removeEvents(),this.__stage=a),a.updateTransform();var b=this.gl;a._interactive?a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)):a._interactiveEventsAdded&&(a._interactiveEventsAdded=!1,a.interactionManager.setTarget(this)),b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.handleContextLost=function(a){a.preventDefault(),this.contextLost=!0},b.WebGLRenderer.prototype.handleContextRestored=function(){this.initContext();for(var a in b.TextureCache){var c=b.TextureCache[a].baseTexture;c._glTextures=[]}this.contextLost=!1},b.WebGLRenderer.prototype.destroy=function(){this.view.off("webglcontextlost",this.contextLostBound),this.view.off("webglcontextrestored",this.contextRestoredBound),b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a){var b=a.texture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=b.baseTexture);var c=b._uvs;if(c){var d,e,f,g,h=a.worldAlpha,i=a.tint,j=this.vertices,k=a.anchor.x,l=a.anchor.y;if(b.trim){var m=b.trim;e=m.x-k*m.width,d=e+b.crop.width,g=m.y-l*m.height,f=g+b.crop.height}else d=b.frame.width*(1-k),e=b.frame.width*-k,f=b.frame.height*(1-l),g=b.frame.height*-l;var n=4*this.currentBatchSize*this.vertSize,o=b.baseTexture.resolution,p=a.worldTransform,q=p.a/o,r=p.b/o,s=p.c/o,t=p.d/o,u=p.tx,v=p.ty;j[n++]=q*e+s*g+u,j[n++]=t*g+r*e+v,j[n++]=c.x0,j[n++]=c.y0,j[n++]=h,j[n++]=i,j[n++]=q*d+s*g+u,j[n++]=t*g+r*d+v,j[n++]=c.x1,j[n++]=c.y1,j[n++]=h,j[n++]=i,j[n++]=q*d+s*f+u,j[n++]=t*f+r*d+v,j[n++]=c.x2,j[n++]=c.y2,j[n++]=h,j[n++]=i,j[n++]=q*e+s*f+u,j[n++]=t*f+r*e+v,j[n++]=c.x3,j[n++]=c.y3,j[n++]=h,j[n++]=i,this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs;a.tilePosition.x%=c.baseTexture.width*a.tileScaleOffset.x,a.tilePosition.y%=c.baseTexture.height*a.tileScaleOffset.y;var e=a.tilePosition.x/(c.baseTexture.width*a.tileScaleOffset.x),f=a.tilePosition.y/(c.baseTexture.height*a.tileScaleOffset.y),g=a.width/c.baseTexture.width/(a.tileScale.x*a.tileScaleOffset.x),h=a.height/c.baseTexture.height/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-e,d.y0=0-f,d.x1=1*g-e,d.y1=0-f,d.x2=1*g-e,d.y2=1*h-f,d.x3=0-e,d.y3=1*h-f;var i=a.worldAlpha,j=a.tint,k=this.vertices,l=a.width,m=a.height,n=a.anchor.x,o=a.anchor.y,p=l*(1-n),q=l*-n,r=m*(1-o),s=m*-o,t=4*this.currentBatchSize*this.vertSize,u=c.baseTexture.resolution,v=a.worldTransform,w=v.a/u,x=v.b/u,y=v.c/u,z=v.d/u,A=v.tx,B=v.ty;k[t++]=w*q+y*s+A,k[t++]=z*s+x*q+B,k[t++]=d.x0,k[t++]=d.y0,k[t++]=i,k[t++]=j,k[t++]=w*p+y*s+A,k[t++]=z*s+x*p+B,k[t++]=d.x1,k[t++]=d.y1,k[t++]=i,k[t++]=j,k[t++]=w*p+y*r+A,k[t++]=z*r+x*p+B,k[t++]=d.x2,k[t++]=d.y2,k[t++]=i,k[t++]=j,k[t++]=w*q+y*r+A,k[t++]=z*r+x*q+B,k[t++]=d.x3,k[t++]=d.y3,k[t++]=i,k[t++]=j,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,2,c.FLOAT,!1,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var a=4*this.size*this.vertSize,b=6*this.maxSize;this.vertices=new Float32Array(a),this.indices=new Uint16Array(b),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var c=0,d=0;b>c;c+=6,d+=4)this.indices[c+0]=d+0,this.indices[c+1]=d+1,this.indices[c+2]=d+2,this.indices[c+3]=d+0,this.indices[c+4]=d+2,this.indices[c+5]=d+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(g.fillColor||0===g.fillColor)&&(c.globalAlpha=g.fillAlpha*d,c.fillStyle=e="#"+("00000"+(0|g.fillColor).toString(16)).substr(-6),c.fill()),g.lineWidth&&(c.globalAlpha=g.lineAlpha*d,c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){d>1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){c.beginPath();var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iA?A:z,c.beginPath(),c.moveTo(v,w+z),c.lineTo(v,w+y-z),c.quadraticCurveTo(v,w+y,v+z,w+y),c.lineTo(v+x-z,w+y),c.quadraticCurveTo(v+x,w+y,v+x,w+y-z),c.lineTo(v+x,w+z),c.quadraticCurveTo(v+x,w,v+x-z,w),c.lineTo(v+z,w),c.quadraticCurveTo(v,w,v,w+z),c.closePath()}}}},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.padding=0},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var b=a.gl,c=a.projection,d=a.offset,e=a.shaderManager.stripShader;b.blendFunc(b.ONE,b.ONE_MINUS_SRC_ALPHA),b.uniformMatrix3fv(e.translationMatrix,!1,this.worldTransform.toArray(!0)),b.uniform2f(e.projectionVector,c.x,-c.y),b.uniform2f(e.offsetVector,-d.x,-d.y),b.uniform1f(e.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.STATIC_DRAW),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)):(b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferSubData(b.ARRAY_BUFFER,0,this.verticies),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),b.drawElements(b.TRIANGLE_STRIP,this.indices.length,b.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var b=a.context,c=this.worldTransform; +a.roundPixels?b.setTransform(c.a,c.b,c.c,c.d,0|c.tx,0|c.ty):b.setTransform(c.a,c.b,c.c,c.d,c.tx,c.ty);var d=this,e=d.verticies,f=d.uvs,g=e.length/2;this.count++;for(var h=0;g-2>h;h++){var i=2*h,j=e[i],k=e[i+2],l=e[i+4],m=e[i+1],n=e[i+3],o=e[i+5];if(this.padding>0){var p=(j+k+l)/3,q=(m+n+o)/3,r=j-p,s=m-q,t=Math.sqrt(r*r+s*s);j=p+r/t*(t+3),m=q+s/t*(t+3),r=k-p,s=n-q,t=Math.sqrt(r*r+s*s),k=p+r/t*(t+3),n=q+s/t*(t+3),r=l-p,s=o-q,t=Math.sqrt(r*r+s*s),l=p+r/t*(t+3),o=q+s/t*(t+3)}var u=f[i]*d.texture.width,v=f[i+2]*d.texture.width,w=f[i+4]*d.texture.width,x=f[i+1]*d.texture.height,y=f[i+3]*d.texture.height,z=f[i+5]*d.texture.height;b.save(),b.beginPath(),b.moveTo(j,m),b.lineTo(k,n),b.lineTo(l,o),b.closePath(),b.clip();var A=u*y+x*w+v*z-y*w-x*v-u*z,B=j*y+x*l+k*z-y*l-x*k-j*z,C=u*k+j*w+v*l-k*w-j*v-u*l,D=u*y*l+x*k*w+j*v*z-j*y*w-x*v*l-u*k*z,E=m*y+x*o+n*z-y*o-x*n-m*z,F=u*n+m*w+v*o-n*w-m*v-u*o,G=u*y*o+x*n*w+m*v*z-m*y*w-x*v*o-u*n*z;b.transform(B/A,E/A,C/A,F/A,D/A,G/A),b.drawImage(d.texture.baseTexture.source,0,0),b.restore()}},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.verticies=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.verticies,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||100,this._height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this._mask,a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d,e,f=this.worldTransform,g=a.resolution;if(c.setTransform(f.a*g,f.c*g,f.b*g,f.d*g,f.tx*g,f.ty*g),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]);var h=this.tilePosition,i=this.tileScale;for(h.x%=this.tilingTexture.baseTexture.width,h.y%=this.tilingTexture.baseTexture.height,c.scale(i.x,i.y),c.translate(h.x+this.anchor.x*-this._width,h.y+this.anchor.y*-this._height),c.fillStyle=this.__tilePattern,c.fillRect(-h.x,-h.y,this._width/i.x,this._height/i.y),c.scale(1/i.x,1/i.y),c.translate(-h.x+this.anchor.x*this._width,-h.y+this.anchor.y*this._height),this._mask&&a.maskManager.popMask(a.context),d=0,e=this.children.length;e>d;d++)this.children[d]._renderCanvas(a)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.onTextureUpdate=function(){},b.TilingSprite.prototype.generateTilingTexture=function(a){if(this.texture.baseTexture.hasLoaded){var c,d,e=this.originalTexture||this.texture,f=e.frame,g=f.width!==e.baseTexture.width||f.height!==e.baseTexture.height,h=!1;if(a?(c=b.getNextPowerOfTwo(f.width),d=b.getNextPowerOfTwo(f.height),(f.width!==c||f.height!==d)&&(h=!0)):g&&(c=f.width,d=f.height,h=!0),h){var i;this.tilingTexture&&this.tilingTexture.isTiling?(i=this.tilingTexture.canvasBuffer,i.resize(c,d),this.tilingTexture.baseTexture.width=c,this.tilingTexture.baseTexture.height=d,this.tilingTexture.needsUpdate=!0):(i=new b.CanvasBuffer(c,d),this.tilingTexture=b.Texture.fromCanvas(i.canvas),this.tilingTexture.canvasBuffer=i,this.tilingTexture.isTiling=!0),i.context.drawImage(e.baseTexture.source,e.crop.x,e.crop.y,e.crop.width,e.crop.height,0,0,c,d),this.tileScaleOffset.x=f.width/c,this.tileScaleOffset.y=f.height/d}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=e;this.refreshTexture=!1,this.originalTexture=this.texture,this.texture=this.tilingTexture,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this._dirty=[!0,!0,!0,!0],a){if((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height)this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty();else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.naturalWidth||d.source.width,d.height=d.source.naturalHeight||d.source.height,d.dirty(),d.dispatchEvent({type:"loaded",content:d})},this.source.onerror=function(){d.dispatchEvent({type:"error",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.EventTarget.mixin(b.BaseTexture.prototype),b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,this.source.src=""):this.source&&this.source._pixiId&&delete b.BaseTextureCache[this.source._pixiId],this.source=null;for(var a=this._glTextures.length-1;a>=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;athis.baseTexture.width||a.y+a.height>this.baseTexture.height))throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width,this.height)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width*this.resolution,this.height*this.resolution,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=this.frame.width=this.crop.width=a,this.height=this.frame.height=this.crop.height=c,d&&(this.baseTexture.width=this.width,this.baseTexture.height=this.height),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width*this.resolution,this.height*this.resolution))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1),a.worldAlpha=1;for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();var h=this.renderer.gl;h.viewport(0,0,this.width*this.resolution,this.height*this.resolution),h.bindFramebuffer(h.FRAMEBUFFER,this.textureBuffer.frameBuffer),c&&this.textureBuffer.clear(),this.renderer.spriteBatch.dirty=!0,this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),this.renderer.spriteBatch.dirty=!0}},b.RenderTexture.prototype.renderCanvas=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),b&&d.append(b);for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();c&&this.textureBuffer.clear();var h=this.textureBuffer.context,i=this.renderer.resolution;this.renderer.resolution=this.resolution,this.renderer.renderDisplayObject(a,h),this.renderer.resolution=i}},b.RenderTexture.prototype.getImage=function(){var a=new Image;return a.src=this.getBase64(),a},b.RenderTexture.prototype.getBase64=function(){return this.getCanvas().toDataURL()},b.RenderTexture.prototype.getCanvas=function(){if(this.renderer.type===b.WEBGL_RENDERER){var a=this.renderer.gl,c=this.textureBuffer.width,d=this.textureBuffer.height,e=new Uint8Array(4*c*d);a.bindFramebuffer(a.FRAMEBUFFER,this.textureBuffer.frameBuffer),a.readPixels(0,0,c,d,a.RGBA,a.UNSIGNED_BYTE,e),a.bindFramebuffer(a.FRAMEBUFFER,null);for(var f=new b.CanvasBuffer(c,d),g=f.context.getImageData(0,0,c,d),h=g.data,i=0;ia;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this),function(){var a=this,b=b||{VERSION:"2.1.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};if(PIXI.InteractionManager=PIXI.InteractionManager||function(){},PIXI.dontSayHello=!0,b.Utils={getProperty:function(a,b){for(var c=b.split("."),d=c.pop(),e=c.length,f=1,g=c[0];e>f&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},transposeArray:function(a){for(var b=new Array(a[0].length),c=0;c-1;d--)b[c][d]=a[d][c]}return b},rotateArray:function(a,c){if("string"!=typeof c&&(c=(c%360+360)%360),90===c||-270===c||"rotateLeft"===c)a=b.Utils.transposeArray(a),a=a.reverse();else if(-90===c||270===c||"rotateRight"===c)a=a.reverse(),a=b.Utils.transposeArray(a);else if(180===Math.abs(c)||"rotate180"===c){for(var d=0;d0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h},mixin:function(a,c){if(!a||"object"!=typeof a)return c;for(var d in a){var e=a[d];if(!e.childNodes&&!e.cloneNode){var f=typeof a[d];c[d]=a[d]&&"object"===f?typeof c[d]===f?b.Utils.mixin(a[d],c[d]):b.Utils.mixin(a[d],new e.constructor):a[d]}}return c}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var c=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;b0?.5*c:0},b.Circle.prototype={type:null,circumference:function(){return 2*Math.PI*this._radius},getBounds:function(){return new b.Rectangle(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRounded(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},angleSq:function(a){return this.subtract(a).angle(a.subtract(this))},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},b.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},b.Point.angleSq=function(a,b){return a.subtract(b).angle(b.subtract(a))},b.Point.negative=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.x,-a.y)},b.Point.multiplyAdd=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+c.x*d,a.y+c.y*d)},b.Point.interpolate=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+(c.x-a.x)*d,a.y+(c.y-a.y)*d)},b.Point.perp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.y,a.x)},b.Point.rperp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(a.y,-a.x)},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRounded(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.project=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c)/c.getMagnitudeSq();return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.projectUnit=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c);return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.normalRightHand=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-1*a.y,a.x)},b.Point.normalize=function(a,c){"undefined"==typeof c&&(c=new b.Point);var d=a.getMagnitude();return 0!==d&&c.setTo(a.x/d,a.y/d),c},b.Point.rotate=function(a,c,d,e,f,g){f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y)));var h=e+Math.atan2(a.y-d,a.x-c);return a.setTo(c+g*Math.cos(h),d+g*Math.sin(h))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},b.Point.parse=function(a,c,d){c=c||"x",d=d||"y";var e=new b.Point;return a[c]&&(e.x=parseInt(a[c],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return"undefined"==typeof b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(a,this)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(b.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"topRight",{get:function(){return new b.Point(this.x+this.width,this.y) +},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y)},b.Rectangle.size=function(a,c){return"undefined"==typeof c||null===c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c||null===c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(c.x-a.x)-(e.x-d.x)*(c.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((c.x-a.x)*(a.y-d.y)-(c.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new b.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){if(this.type=b.POLYGON,a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}this.points=a,this.closed=!0},b.Polygon.prototype={clone:function(a){var c=this.points.slice();return"undefined"==typeof a||null===a?a=new b.Polygon(c):a.setTo(c),a},contains:function(a,b){for(var c=!1,d=this.points.length/2,e=0,f=d-1;d>e;f=e++){var g=this.points[2*e].x,h=this.points[2*e+1].y,i=this.points[2*f].x,j=this.points[2*f+1].y,k=h>b!=j>b&&(i-g)*(b-h)/(j-h)+g>a;k&&(c=!c)}return c},setTo:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}return this.points=a,this}},b.Polygon.prototype.constructor=b.Polygon,Object.defineProperty(b.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this._points=a}}),Object.defineProperty(b.Polygon.prototype,"area",{get:function(){var a,b,c,d,e,f=Number.MAX_VALUE,g=0;for(e=0;e=l;l++)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;q++)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[a,b]):this.moveTo(a,b),0===this.currentPath.length&&this.moveTo(a,b);var f=this.currentPath,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){var g=a+Math.cos(d)*c,h=b+Math.sin(d)*c,i=this.currentPath.shape.points;if((0!==i.length&&i[i.length-2]!==g||i[i.length-1]!==h)&&(this.moveTo(g,h),i=this.currentPath.shape.points),d===e)return this;!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var j=f?-1*(d-e):e-d,k=Math.abs(j)/(2*Math.PI)*40;if(0===j)return this;for(var l=j/(2*k),m=2*l,n=Math.cos(l),o=Math.sin(l),p=k-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);i.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape({points:[a,b,c,d,e],type:PIXI.Graphics.RREC}),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){return a instanceof Array||(a=Array.prototype.slice.call(arguments)),this.drawShape(new PIXI.Polygon(a)),this},PIXI.Graphics.prototype.clear=function(){return this.lineWidth=0,this.filling=!1,this.dirty=!0,this.clearDirty=!0,this.graphicsData=[],this},PIXI.Graphics.prototype.generateTexture=function(a,b){a=a||1;var c=this.getBounds(),d=new PIXI.CanvasBuffer(c.width*a,c.height*a),e=PIXI.Texture.fromCanvas(d.canvas,b);return e.baseTexture.resolution=a,d.context.scale(a,a),d.context.translate(-c.x,-c.y),PIXI.CanvasGraphics.renderGraphics(this,d.context),e},PIXI.Graphics.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite,a);if(a.spriteBatch.stop(),a.blendModeManager.setBlendMode(this.blendMode),this._mask&&a.maskManager.pushMask(this._mask,a),this._filters&&a.filterManager.pushFilter(this._filterBlock),this.blendMode!==a.spriteBatch.currentBlendMode){a.spriteBatch.currentBlendMode=this.blendMode;var b=PIXI.blendModesWebGL[a.spriteBatch.currentBlendMode];a.spriteBatch.gl.blendFunc(b[0],b[1])}if(this.webGLDirty&&(this.dirty=!0,this.webGLDirty=!1),PIXI.WebGLGraphics.renderGraphics(this,a),this.children.length){a.spriteBatch.start();for(var c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this.mask,a),a.drawCount++,a.spriteBatch.start()}},PIXI.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite,a);var b=a.context,c=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,b.globalCompositeOperation=PIXI.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a);var d=a.resolution;b.setTransform(c.a*d,c.b*d,c.c*d,c.d*d,c.tx*d,c.ty*d),PIXI.CanvasGraphics.renderGraphics(this,b);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},PIXI.Graphics.prototype.getBounds=function(a){this.dirty&&(this.updateBounds(),this.webGLDirty=!0,this.cachedSpriteDirty=!0,this.dirty=!1);var b=this._bounds,c=b.x,d=b.width+b.x,e=b.y,f=b.height+b.y,g=a||this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=n,w=o,x=n,y=o;return x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,b.x=x,b.width=v-x,b.y=y,b.height=w-y,b},PIXI.Graphics.prototype.updateBounds=function(){var a=1/0,b=-1/0,c=1/0,d=-1/0;if(this.graphicsData.length)for(var e,f,g,h,i,j,k=0;kg?g:a,b=g+i>b?g+i:b,c=c>h?h:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.CIRC)g=e.x,h=e.y,i=e.radius+n/2,j=e.radius+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.ELIP)g=e.x,h=e.y,i=e.width+n/2,j=e.height+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else{f=e.points;for(var o=0;og-n?g-n:a,b=g+n>b?g+n:b,c=c>h-n?h-n:c,d=h+n>d?h+n:d}}else a=0,b=0,c=0,d=0;var p=this.boundsPadding,q=this._bounds;q.x=a-p,q.width=b-a+2*p,q.y=c-p,q.height=d-c+2*p},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null;var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this.fillColor=d,this.fillAlpha=e,this.fill=f,this.shape=g,this.type=g.type},PIXI.Graphics.POLY=0,PIXI.Graphics.RECT=1,PIXI.Graphics.CIRC=2,PIXI.Graphics.ELIP=3,PIXI.Graphics.RREC=4,PIXI.Polygon.prototype.type=PIXI.Graphics.POLY,PIXI.Rectangle.prototype.type=PIXI.Graphics.RECT,PIXI.Circle.prototype.type=PIXI.Graphics.CIRC,PIXI.Ellipse.prototype.type=PIXI.Graphics.ELIP,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this._position=new b.Point,this.displayObject=null,this.scale=null,this._targetPosition=new b.Point},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target).multiply(this.target.parent?this.target.parent.worldTransform.a:1,this.target.parent?this.target.parent.worldTransform.d:1),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},resize:function(){},paused:function(){},pauseUpdate:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[])},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created&&this.onPauseUpdateCallback?this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.ArrayList=function(){this.total=0,this.position=0,this.list=[]},b.ArrayList.prototype={add:function(a){return this.exists(a)||(this.list.push(a),this.total++),a},getIndex:function(a){return this.list.indexOf(a)},exists:function(a){return this.list.indexOf(a)>-1 +},reset:function(){this.list.length=0,this.total=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),this.total--,a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)}},Object.defineProperty(b.ArrayList.prototype,"first",{get:function(){return this.position=0,this.total>0?this.list[0]:null}}),Object.defineProperty(b.ArrayList.prototype,"next",{get:function(){return this.positionb;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange;var a=this;this.game.device.cocoonJSApp&&(CocoonJS.App.onSuspended.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"pause"})}),CocoonJS.App.onActivated.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"resume"})}))},b.Stage.prototype.visibilityChange=function(a){return"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(this.disableVisibilityChange||(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden||"pause"===a.type?this.game.gamePaused(a):this.game.gameResumed(a)))},b.Stage.prototype.setBackgroundColor=function(a){if("string"==typeof a){var c=b.Color.hexToColor(a);this._backgroundColor=b.Color.getColor(c.r,c.g,c.b)}else{var c=b.Color.getRGB(a);this._backgroundColor=a}this.backgroundColorSplit=[c.r/255,c.g/255,c.b/255],this.backgroundColorString=b.Color.RGBtoString(c.r,c.g,c.b,255,"#")},b.Stage.prototype.destroy=function(){this._hiddenVar&&document.removeEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=null,window.onpageshow=null,window.onblur=null,window.onfocus=null},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this.game.transparent||this.setBackgroundColor(a)}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.ignoreDestroy=!1,this.classType=b.Sprite,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this.onDestroy=new b.Signal,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a,b){return"undefined"==typeof b&&(b=!1),a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,!b&&a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addMultiple=function(a,b){if(Array.isArray(a))for(var c=0;ca||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,b,c,d,e){"undefined"==typeof e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,f.events&&f.events.onAddedToGroup.dispatch(f,this),null===this.cursor&&(this.cursor=f),f},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.resetCursor=function(a){return"undefined"==typeof a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this._cache[8]=a,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},b.Group.prototype.setProperty=function(a,b,c,d,e){if("undefined"==typeof e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},b.Group.prototype.checkProperty=function(a,c,d,e){return"undefined"==typeof e&&(e=!1),!b.Utils.getProperty(a,c)&&e?!1:b.Utils.getProperty(a,c)!==d?!1:!0},b.Group.prototype.set=function(a,b,c,d,e,f,g){return"undefined"==typeof g&&(g=!1),b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},b.Group.prototype.setAll=function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof f&&(f=!1),a=a.split("."),e=e||0;for(var g=0,h=this.children.length;h>g;g++)(!c||c&&this.children[g].alive)&&(!d||d&&this.children[g].visible)&&this.setProperty(this.children[g],a,b,e,f)},b.Group.prototype.setAllChildren=function(a,c,d,e,f,g){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),"undefined"==typeof g&&(g=!1),f=f||0;for(var h=0,i=this.children.length;i>h;h++)(!d||d&&this.children[h].alive)&&(!e||e&&this.children[h].visible)&&(this.children[h]instanceof b.Group?this.children[h].setAllChildren(a,c,d,e,f,g):this.setProperty(this.children[h],a.split("."),c,f,g))},b.Group.prototype.checkAll=function(a,b,c,d,e){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);for(var f=0,g=this.children.length;g>f;f++)if((!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&!this.checkProperty(this.children[f],a,b,e))return!1;return!0},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.filter=function(a,c){for(var d=-1,e=this.children.length,f=new b.ArrayList;++de;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b,c){if("undefined"==typeof b&&(b=!1),"undefined"==typeof c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup.dispatch(a,this);var d=this.removeChild(a);return this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},b.Group.prototype.removeAll=function(a,b){if("undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);a&&c&&c.destroy(!0)}while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c,d){if("undefined"==typeof b&&(b=this.children.length-1),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup.dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},b.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},b.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(b.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){awindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.bounds=new b.Rectangle,this.aspectRatio=0,this.sourceAspectRatio=0,this.event=null,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this.parentIsWindow=!1,this.parentNode=null,this.parentScaleFactor=new b.Point(1,1),this.trackParentInterval=2e3,this.onResize=null,this.onResizeContext=null,this._scaleMode=b.ScaleManager.NO_SCALE,this._width=0,this._height=0,this._check=null,this._nextParentCheck=0,this._parentBounds=null,a.config&&this.parseConfig(a.config),this.setupScale(c,d) },b.ScaleManager.EXACT_FIT=0,b.ScaleManager.NO_SCALE=1,b.ScaleManager.SHOW_ALL=2,b.ScaleManager.RESIZE=3,b.ScaleManager.prototype={parseConfig:function(a){a.scaleMode&&(this.scaleMode=a.scaleMode),a.fullScreenScaleMode&&(this.fullScreenScaleMode=a.fullScreenScaleMode),a.fullScreenTarget&&(this.fullScreenTarget=a.fullScreenTarget)},setupScale:function(a,c){var d,e=new b.Rectangle;""!==this.game.parent&&("string"==typeof this.game.parent?d=document.getElementById(this.game.parent):"object"==typeof this.game.parent&&1===this.game.parent.nodeType&&(d=this.game.parent)),d?(this.parentNode=d,this.parentIsWindow=!1,this._parentBounds=this.parentNode.getBoundingClientRect(),e.width=this._parentBounds.width,e.height=this._parentBounds.height,this.offset.set(this._parentBounds.left,this._parentBounds.top)):(this.parentNode=null,this.parentIsWindow=!0,e.width=window.innerWidth,e.height=window.innerHeight);var f=0,g=0;"number"==typeof a?f=a:(this.parentScaleFactor.x=parseInt(a,10)/100,f=e.width*this.parentScaleFactor.x),"number"==typeof c?g=c:(this.parentScaleFactor.y=parseInt(c,10)/100,g=e.height*this.parentScaleFactor.y),this.grid=new b.FlexGrid(this,f,g),this.updateDimensions(f,g,!1)},boot:function(){this.fullScreenTarget=this.game.canvas;var a=this;this._checkOrientation=function(b){return a.checkOrientation(b)},this._checkResize=function(b){return a.checkResize(b)},this._fullScreenChange=function(b){return a.fullScreenChange(b)},window.addEventListener("orientationchange",this._checkOrientation,!1),window.addEventListener("resize",this._checkResize,!1),this.game.device.cocoonJS||(document.addEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.addEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.addEventListener("fullscreenchange",this._fullScreenChange,!1)),this.updateDimensions(this.width,this.height,!0),b.Canvas.getOffset(this.game.canvas,this.offset),this.bounds.setTo(this.offset.x,this.offset.y,this.width,this.height)},setResizeCallback:function(a,b){this.onResize=a,this.onResizeContext=b},setMinMax:function(a,b,c,d){this.minWidth=a,this.minHeight=b,"undefined"!=typeof c&&(this.maxWidth=c),"undefined"!=typeof d&&(this.maxHeight=d)},preUpdate:function(){this.game.time.nowwindow.innerHeight||this.forcePortrait&&window.innerHeight>window.innerWidth)&&(this.incorrectOrientation=!1,this.leaveIncorrectOrientation.dispatch(),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh()):(this.forceLandscape&&window.innerWidthwindow.outerHeight?90:0,c&&this.isPortrait?(this.enterPortrait.dispatch(this.orientation,!1,!0),this.forceLandscape?this.enterIncorrectOrientation.dispatch():this.forcePortrait&&this.leaveIncorrectOrientation.dispatch()):!c&&this.isLandscape&&(this.enterLandscape.dispatch(this.orientation,!0,!1),this.forceLandscape?this.leaveIncorrectOrientation.dispatch():this.forcePortrait&&this.enterIncorrectOrientation.dispatch()),this._scaleMode===b.ScaleManager.RESIZE&&this.parentIsWindow?this.updateDimensions(window.innerWidth,window.innerHeight,!0):(this._scaleMode===b.ScaleManager.EXACT_FIT||this._scaleMode===b.ScaleManager.SHOW_ALL)&&(this.refresh(),this.onResize&&this.onResize.call(this.onResizeContext,this.width,this.height)),this.checkOrientationState()},refresh:function(){if(this.scaleMode!==b.ScaleManager.RESIZE&&(this.game.device.iPad||this.game.device.webApp||this.game.device.desktop||(this.game.device.android&&!this.game.device.chrome?window.scrollTo(0,1):window.scrollTo(0,0)),null===this._check&&this.maxIterations>0)){this._iterations=this.maxIterations;var a=this;this._check=window.setInterval(function(){return a.setScreenSize()},10),this.setScreenSize()}},setScreenSize:function(a){this.scaleMode!==b.ScaleManager.RESIZE&&("undefined"==typeof a&&(a=!1),this.game.device.iPad||this.game.device.webApp||this.game.device.desktop||(this.game.device.android&&!this.game.device.chrome?window.scrollTo(0,1):window.scrollTo(0,0)),this._iterations--,(a||this._iterations<0)&&(document.documentElement.style.minHeight=window.innerHeight+"px",this.incorrectOrientation?this.setMaximum():this.isFullScreen?this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?this.setExactFit():this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&this.setShowAll():this.scaleMode===b.ScaleManager.EXACT_FIT?this.setExactFit():this.scaleMode===b.ScaleManager.SHOW_ALL&&this.setShowAll(),this.setSize(),clearInterval(this._check),this._check=null))},setSize:function(){this.incorrectOrientation||(this.maxWidth&&this.width>this.maxWidth&&(this.width=this.maxWidth),this.maxHeight&&this.height>this.maxHeight&&(this.height=this.maxHeight),this.minWidth&&this.widththis.maxWidth?this.maxWidth:a,this.height=this.maxHeight&&b>this.maxHeight?this.maxHeight:b},startFullScreen:function(a){!this.isFullScreen&&this.game.device.fullscreen&&("undefined"!=typeof a&&this.game.renderType===b.CANVAS&&(this.game.stage.smoothed=a),this._width=this.width,this._height=this.height,this.game.device.fullscreenKeyboard?this.fullScreenTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT):this.fullScreenTarget[this.game.device.requestFullscreen]())},stopFullScreen:function(){document[this.game.device.cancelFullscreen]()},fullScreenChange:function(a){this.event=a,this.isFullScreen?(this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?(this.fullScreenTarget.style.width="100%",this.fullScreenTarget.style.height="100%",this.width=window.outerWidth,this.height=window.outerHeight,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.checkResize()):this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&(this.setShowAll(),this.refresh()),this.enterFullScreen.dispatch(this.width,this.height)):(this.fullScreenTarget.style.width=this.game.width+"px",this.fullScreenTarget.style.height=this.game.height+"px",this.width=this._width,this.height=this._height,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.leaveFullScreen.dispatch(this.width,this.height))},destroy:function(){window.removeEventListener("orientationchange",this._checkOrientation,!1),window.removeEventListener("resize",this._checkResize,!1),this.game.device.cocoonJS||(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1))}},b.ScaleManager.prototype.constructor=b.ScaleManager,Object.defineProperty(b.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){a!==this._scaleMode&&(this._scaleMode=a)}}),Object.defineProperty(b.ScaleManager.prototype,"isFullScreen",{get:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement}}),Object.defineProperty(b.ScaleManager.prototype,"isPortrait",{get:function(){return 0===this.orientation||180===this.orientation}}),Object.defineProperty(b.ScaleManager.prototype,"isLandscape",{get:function(){return 90===this.orientation||-90===this.orientation}}),b.Game=function(a,c,d,e,f,g,h,i){this.id=b.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.transparent=!1,this.antialias=!0,this.preserveDrawingBuffer=!1,this.renderer=null,this.renderType=b.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.rnd=null,this.device=null,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,this._width=800,this._height=600,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):(this.config={enableDebug:!0},"undefined"!=typeof a&&(this._width=a),"undefined"!=typeof c&&(this._height=c),"undefined"!=typeof d&&(this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new b.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new b.StateManager(this,f));var j=this;return this._onBoot=function(){return j.boot()},"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(this._onBoot,0):"undefined"!=typeof window.cordova?document.addEventListener("deviceready",this._onBoot,!1):(document.addEventListener("DOMContentLoaded",this._onBoot,!1),window.addEventListener("load",this._onBoot,!1)),this},b.Game.prototype={parseConfig:function(a){this.config=a,"undefined"==typeof a.enableDebug&&(this.config.enableDebug=!0),a.width&&(this._width=a.width),a.height&&(this._height=a.height),a.renderer&&(this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.preserveDrawingBuffer&&(this.preserveDrawingBuffer=a.preserveDrawingBuffer),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var c=[(Date.now()*Math.random()).toString()];a.seed&&(c=a.seed),this.rnd=new b.RandomDataGenerator(c);var d=null;a.state&&(d=a.state),this.state=new b.StateManager(this,d)},boot:function(){this.isBooted||(document.body?(document.removeEventListener("DOMContentLoaded",this._onBoot),window.removeEventListener("load",this._onBoot),this.onPause=new b.Signal,this.onResume=new b.Signal,this.onBlur=new b.Signal,this.onFocus=new b.Signal,this.isBooted=!0,this.device=new b.Device(this),this.math=b.Math,this.scale=new b.ScaleManager(this,this._width,this._height),this.stage=new b.Stage(this),this.setUpRenderer(),this.device.checkFullScreenSupport(),this.world=new b.World(this),this.add=new b.GameObjectFactory(this),this.make=new b.GameObjectCreator(this),this.cache=new b.Cache(this),this.load=new b.Loader(this),this.time=new b.Time(this),this.tweens=new b.TweenManager(this),this.input=new b.Input(this),this.sound=new b.SoundManager(this),this.physics=new b.Physics(this,this.physicsConfig),this.particles=new b.Particles(this),this.plugins=new b.PluginManager(this),this.net=new b.Net(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.scale.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.config.enableDebug&&(this.debug=new b.Utils.Debug(this),this.debug.boot()),this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new b.RequestAnimationFrame(this,this.config.forceSetTimeOut):new b.RequestAnimationFrame(this,!1),this.raf.start()):window.setTimeout(this._onBoot,20))},showDebugHeader:function(){var a=b.VERSION,c="Canvas",d="HTML Audio",e=1;if(this.renderType===b.WEBGL?(c="WebGL",e++):this.renderType==b.HEADLESS&&(c="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+c+" | "+d+" %c %c http://phaser.io %c %c ♥%c♥%c♥ ","background: #7a66a3","background: #625186","color: #ffffff; background: #43375b;","background: #625186","background: #ccb9f2","background: #625186"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+c+" | "+d+" | http://phaser.io")},setUpRenderer:function(){if(this.canvas=this.config.canvasID?b.Canvas.create(this.width,this.height,this.config.canvasID):b.Canvas.create(this.width,this.height),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===b.CANVAS?!0:!1),this.renderType===b.HEADLESS||this.renderType===b.CANVAS||this.renderType===b.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===b.AUTO&&(this.renderType=b.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:1,clearBeforeRender:!0}),this.context=this.renderer.context}else this.renderType=b.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:1,antialias:this.antialias,preserveDrawingBuffer:this.preserveDrawingBuffer}),this.context=null;this.renderType!==b.HEADLESS&&(this.stage.smoothed=this.antialias,b.Canvas.addToDOM(this.canvas,this.parent,!1),b.Canvas.setTouchAction(this.canvas))},update:function(a){this.time.update(a),this._paused||this.pendingStep?(this.state.pauseUpdate(),this.config.enableDebug&&this.debug.preUpdate()):(this.stepping&&(this.pendingStep=!0),this.scale.preUpdate(),this.config.enableDebug&&this.debug.preUpdate(),this.physics.preUpdate(),this.state.preUpdate(),this.plugins.preUpdate(),this.stage.preUpdate(),this.state.update(),this.stage.update(),this.tweens.update(),this.sound.update(),this.input.update(),this.physics.update(),this.particles.update(),this.plugins.update(),this.stage.postUpdate(),this.plugins.postUpdate()),this.renderType!=b.HEADLESS&&(this.state.preRender(),this.renderer.render(this.stage),this.plugins.render(),this.state.render(),this.plugins.postRender(),this.device.cocoonJS&&this.renderType===b.CANVAS&&1===this.stage.currentRenderOrderID&&this.context.fillRect(0,0,0,0))},enableStep:function(){this.stepping=!0,this.pendingStep=!1,this.stepCount=0},disableStep:function(){this.stepping=!1,this.pendingStep=!1},step:function(){this.pendingStep=!1,this.stepCount++},destroy:function(){this.raf.stop(),this.state.destroy(),this.sound.destroy(),this.scale.destroy(),this.stage.destroy(),this.input.destroy(),this.physics.destroy(),this.state=null,this.cache=null,this.input=null,this.load=null,this.sound=null,this.stage=null,this.time=null,this.world=null,this.isBooted=!1,b.Canvas.removeFromDOM(this.canvas)},gamePaused:function(a){this._paused||(this._paused=!0,this.time.gamePaused(),this.sound.setMute(),this.onPause.dispatch(a))},gameResumed:function(a){this._paused&&!this._codePaused&&(this._paused=!1,this.time.gameResumed(),this.input.reset(),this.sound.unsetMute(),this.onResume.dispatch(a))},focusLoss:function(a){this.onBlur.dispatch(a),this.stage.disableVisibilityChange||this.gamePaused(a)},focusGain:function(a){this.onFocus.dispatch(a),this.stage.disableVisibilityChange||this.gameResumed(a)}},b.Game.prototype.constructor=b.Game,Object.defineProperty(b.Game.prototype,"paused",{get:function(){return this._paused},set:function(a){a===!0?(this._paused===!1&&(this._paused=!0,this.sound.setMute(),this.time.gamePaused(),this.onPause.dispatch(this)),this._codePaused=!0):(this._paused&&(this._paused=!1,this.input.reset(),this.sound.unsetMute(),this.time.gameResumed(),this.onResume.dispatch(this)),this._codePaused=!1)}}),b.Input=function(a){this.game=a,this.hitCanvas=null,this.hitContext=null,this.moveCallbacks=[],this.moveCallback=null,this.moveCallbackContext=this,this.pollRate=0,this.disabled=!1,this.multiInputOverride=b.Input.MOUSE_TOUCH_COMBINE,this.position=null,this.speed=null,this.circle=null,this.scale=null,this.maxPointers=10,this.currentPointers=0,this.tapRate=200,this.doubleTapRate=300,this.holdRate=2e3,this.justPressedRate=200,this.justReleasedRate=200,this.recordPointerHistory=!1,this.recordRate=100,this.recordLimit=100,this.pointer1=null,this.pointer2=null,this.pointer3=null,this.pointer4=null,this.pointer5=null,this.pointer6=null,this.pointer7=null,this.pointer8=null,this.pointer9=null,this.pointer10=null,this.activePointer=null,this.mousePointer=null,this.mouse=null,this.keyboard=null,this.touch=null,this.mspointer=null,this.gamepad=null,this.resetLocked=!1,this.onDown=null,this.onUp=null,this.onTap=null,this.onHold=null,this.minPriorityID=0,this.interactiveItems=new b.ArrayList,this._localPoint=new b.Point,this._pollCounter=0,this._oldPosition=null,this._x=0,this._y=0},b.Input.MOUSE_OVERRIDES_TOUCH=0,b.Input.TOUCH_OVERRIDES_MOUSE=1,b.Input.MOUSE_TOUCH_COMBINE=2,b.Input.prototype={boot:function(){this.mousePointer=new b.Pointer(this.game,0),this.pointer1=new b.Pointer(this.game,1),this.pointer2=new b.Pointer(this.game,2),this.mouse=new b.Mouse(this.game),this.keyboard=new b.Keyboard(this.game),this.touch=new b.Touch(this.game),this.mspointer=new b.MSPointer(this.game),this.gamepad=new b.Gamepad(this.game),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.scale=new b.Point(1,1),this.speed=new b.Point,this.position=new b.Point,this._oldPosition=new b.Point,this.circle=new b.Circle(0,0,44),this.activePointer=this.mousePointer,this.currentPointers=0,this.hitCanvas=document.createElement("canvas"),this.hitCanvas.width=1,this.hitCanvas.height=1,this.hitContext=this.hitCanvas.getContext("2d"),this.mouse.start(),this.keyboard.start(),this.touch.start(),this.mspointer.start(),this.mousePointer.active=!0},destroy:function(){this.mouse.stop(),this.keyboard.stop(),this.touch.stop(),this.mspointer.stop(),this.gamepad.stop(),this.moveCallbacks=[]},addMoveCallback:function(a,b){return this.moveCallbacks.push({callback:a,context:b})-1},deleteMoveCallback:function(a){this.moveCallbacks[a]&&this.moveCallbacks.splice(a,1)},addPointer:function(){for(var a=0,c=10;c>0;c--)null===this["pointer"+c]&&(a=c);return 0===a?(console.warn("You can only have 10 Pointer objects"),null):(this["pointer"+a]=new b.Pointer(this.game,a),this["pointer"+a])},update:function(){return this.keyboard.update(),this.pollRate>0&&this._pollCounter=c;c++)this["pointer"+c]&&this["pointer"+c].reset();this.currentPointers=0,"none"!==this.game.canvas.style.cursor&&(this.game.canvas.style.cursor="inherit"),a&&(this.onDown.dispose(),this.onUp.dispose(),this.onTap.dispose(),this.onHold.dispose(),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.moveCallbacks=[]),this._pollCounter=0}},resetSpeed:function(a,b){this._oldPosition.setTo(a,b),this.speed.setTo(0,0)},startPointer:function(a){if(this.maxPointers<10&&this.totalActivePointers==this.maxPointers)return null;if(this.pointer1.active===!1)return this.pointer1.start(a);if(this.pointer2.active===!1)return this.pointer2.start(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active===!1)return this["pointer"+b].start(a);return null},updatePointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.move(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.move(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].move(a);return null},stopPointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.stop(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.stop(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].stop(a);return null},getPointer:function(a){if(a=a||!1,this.pointer1.active==a)return this.pointer1;if(this.pointer2.active==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active==a)return this["pointer"+b];return null},getPointerFromIdentifier:function(a){if(this.pointer1.identifier===a)return this.pointer1;if(this.pointer2.identifier===a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].identifier===a)return this["pointer"+b];return null},getPointerFromId:function(a){if(this.pointer1.pointerId===a)return this.pointer1;if(this.pointer2.pointerId===a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].pointerId===a)return this["pointer"+b];return null},getLocalPosition:function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.worldTransform,f=1/(e.a*e.d+e.c*-e.b);return d.setTo(e.d*f*c.x+-e.c*f*c.y+(e.ty*e.c-e.tx*e.d)*f,e.a*f*c.y+-e.b*f*c.x+(-e.ty*e.a+e.tx*e.b)*f)},hitTest:function(a,c,d){if(!a.worldVisible)return!1;if(this.getLocalPosition(a,c,this._localPoint),d.copyFrom(this._localPoint),a.hitArea&&a.hitArea.contains)return a.hitArea.contains(this._localPoint.x,this._localPoint.y);if(a instanceof PIXI.Sprite){var e=a.texture.frame.width,f=a.texture.frame.height,g=-e*a.anchor.x;if(this._localPoint.x>=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],c,d))return!0;return!1}},b.Input.prototype.constructor=b.Input,Object.defineProperty(b.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounter=a;a++)this["pointer"+a]&&this["pointer"+a].active&&this.currentPointers++;return this.currentPointers}}),Object.defineProperty(b.Input.prototype,"worldX",{get:function(){return this.game.camera.view.x+this.x}}),Object.defineProperty(b.Input.prototype,"worldY",{get:function(){return this.game.camera.view.y+this.y}}),b.Key=function(a,c){this.game=a,this.enabled=!0,this.event=null,this.isDown=!1,this.isUp=!0,this.altKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.timeDown=0,this.duration=0,this.timeUp=-2500,this.repeats=0,this.keyCode=c,this.onDown=new b.Signal,this.onHoldCallback=null,this.onHoldContext=null,this.onUp=new b.Signal},b.Key.prototype={update:function(){this.enabled&&this.isDown&&(this.duration=this.game.time.now-this.timeDown,this.repeats++,this.onHoldCallback&&this.onHoldCallback.call(this.onHoldContext,this))},processKeyDown:function(a){this.enabled&&(this.event=a,this.isDown||(this.altKey=a.altKey,this.ctrlKey=a.ctrlKey,this.shiftKey=a.shiftKey,this.isDown=!0,this.isUp=!1,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0,this.onDown.dispatch(this)))},processKeyUp:function(a){this.enabled&&(this.event=a,this.isUp||(this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.onUp.dispatch(this)))},reset:function(a){"undefined"==typeof a&&(a=!0),this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=0,this.enabled=!0,a&&(this.onDown.removeAll(),this.onUp.removeAll(),this.onHoldCallback=null,this.onHoldContext=null)},justPressed:function(a){return"undefined"==typeof a&&(a=50),this.isDown&&this.duration0&&this.processInteractiveObjects(!0),this.dirty=!1),this._holdSent===!1&&this.duration>=this.game.input.holdRate&&((this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.now>=this._nextDrop&&(this._nextDrop=this.game.time.now+this.game.input.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>this.game.input.recordLimit&&this._history.shift()))},move:function(a,c){if(!this.game.input.pollLocked){if("undefined"==typeof c&&(c=!1),"undefined"!=typeof a.button&&(this.button=a.button),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&this.game.input.mouse.locked&&!c&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*this.game.input.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*this.game.input.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(this.game.input.multiInputOverride===b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.activePointer=this,this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.game.input.x,this.game.input.y),this.game.input.circle.x=this.game.input.x,this.game.input.circle.y=this.game.input.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var d=this.game.input.moveCallbacks.length;d--;)this.game.input.moveCallbacks[d].callback.call(this.game.input.moveCallbacks[d].context,this,this.x,this.y,c);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):this.game.input.interactiveItems.total>0&&this.processInteractiveObjects(c),this}},processInteractiveObjects:function(a){this.game.input.interactiveItems.setAll("checked",!1),this._highestRenderOrderID=Number.MAX_SAFE_INTEGER,this._highestRenderObject=null,this._highestInputPriorityID=-1;var b=this.game.input.interactiveItems.first;do b&&b.validForInput(this._highestInputPriorityID,this._highestRenderOrderID,!1)&&(b.checked=!0,(a&&b.checkPointerDown(this,!0)||!a&&b.checkPointerOver(this,!0))&&(this._highestRenderOrderID=b.sprite._cache[3],this._highestInputPriorityID=b.priorityID,this._highestRenderObject=b)),b=this.game.input.interactiveItems.next;while(null!==b);var b=this.game.input.interactiveItems.first;do b&&!b.checked&&b.validForInput(this._highestInputPriorityID,this._highestRenderOrderID,!0)&&(a&&b.checkPointerDown(this,!1)||!a&&b.checkPointerOver(this,!1))&&(this._highestRenderOrderID=b.sprite._cache[3],this._highestInputPriorityID=b.priorityID,this._highestRenderObject=b),b=this.game.input.interactiveItems.next;while(null!==b);return null===this._highestRenderObject?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=this._highestRenderObject,this._highestRenderObject._pointerOverHandler(this)):this.targetObject===this._highestRenderObject?this._highestRenderObject.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=this._highestRenderObject,this.targetObject._pointerOverHandler(this)),null!==this.targetObject},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){return this._stateReset?void a.preventDefault():(this.timeUp=this.game.time.now,(this.game.input.multiInputOverride===b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.onUp.dispatch(this,a),this.duration>=0&&this.duration<=this.game.input.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=!1,this.isDown=!1,this.isUp=!0,this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.callAll("_releasedHandler",this),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.now},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isMouse===!1&&(this.active=!1),this.pointerId=null,this.identifier=null,this.dirty=!1,this.isDown=!1,this.isUp=!0,this.totalTouches=0,this._holdSent=!1,this._history.length=0,this._stateReset=!0,this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null},resetMovement:function(){this.movementX=0,this.movementY=0}},b.Pointer.prototype.constructor=b.Pointer,Object.defineProperty(b.Pointer.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.now-this.timeDown}}),Object.defineProperty(b.Pointer.prototype,"worldX",{get:function(){return this.game.world.camera.x+this.x}}),Object.defineProperty(b.Pointer.prototype,"worldY",{get:function(){return this.game.world.camera.y+this.y}}),b.Touch=function(a){this.game=a,this.disabled=!1,this.callbackContext=this.game,this.touchStartCallback=null,this.touchMoveCallback=null,this.touchEndCallback=null,this.touchEnterCallback=null,this.touchLeaveCallback=null,this.touchCancelCallback=null,this.preventDefault=!0,this.event=null,this._onTouchStart=null,this._onTouchMove=null,this._onTouchEnd=null,this._onTouchEnter=null,this._onTouchLeave=null,this._onTouchCancel=null,this._onTouchMove=null},b.Touch.prototype={start:function(){if(null===this._onTouchStart){var a=this;this.game.device.touch&&(this._onTouchStart=function(b){return a.onTouchStart(b)},this._onTouchMove=function(b){return a.onTouchMove(b)},this._onTouchEnd=function(b){return a.onTouchEnd(b)},this._onTouchEnter=function(b){return a.onTouchEnter(b)},this._onTouchLeave=function(b){return a.onTouchLeave(b)},this._onTouchCancel=function(b){return a.onTouchCancel(b)},this.game.canvas.addEventListener("touchstart",this._onTouchStart,!1),this.game.canvas.addEventListener("touchmove",this._onTouchMove,!1),this.game.canvas.addEventListener("touchend",this._onTouchEnd,!1),this.game.canvas.addEventListener("touchcancel",this._onTouchCancel,!1),this.game.device.cocoonJS||(this.game.canvas.addEventListener("touchenter",this._onTouchEnter,!1),this.game.canvas.addEventListener("touchleave",this._onTouchLeave,!1)))}},consumeDocumentTouches:function(){this._documentTouchMove=function(a){a.preventDefault()},document.addEventListener("touchmove",this._documentTouchMove,!1)},onTouchStart:function(a){if(this.event=a,this.touchStartCallback&&this.touchStartCallback.call(this.callbackContext,a),!this.game.input.disabled&&!this.disabled){this.preventDefault&&a.preventDefault();for(var b=0;b0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var c=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.game.time.now},justReleased:function(a){return a=a||250,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.pad=null,this.game=null}},b.GamepadButton.prototype.constructor=b.GamepadButton,b.InputHandler=function(a){this.sprite=a,this.game=a.game,this.enabled=!1,this.checked=!1,this.priorityID=0,this.useHandCursor=!1,this._setHandCursor=!1,this.isDragged=!1,this.allowHorizontalDrag=!0,this.allowVerticalDrag=!0,this.bringToTop=!1,this.snapOffset=null,this.snapOnDrag=!1,this.snapOnRelease=!1,this.snapX=0,this.snapY=0,this.snapOffsetX=0,this.snapOffsetY=0,this.pixelPerfectOver=!1,this.pixelPerfectClick=!1,this.pixelPerfectAlpha=255,this.draggable=!1,this.boundsRect=null,this.boundsSprite=null,this.consumePointerEvent=!1,this.scaleLayer=!1,this._dragPhase=!1,this._wasEnabled=!1,this._tempPoint=new b.Point,this._pointerData=[],this._pointerData.push({id:0,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1})},b.InputHandler.prototype={start:function(a,c){if(a=a||0,"undefined"==typeof c&&(c=!1),this.enabled===!1){this.game.input.interactiveItems.add(this),this.useHandCursor=c,this.priorityID=a;for(var d=0;10>d;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new b.Point,this.enabled=!0,this._wasEnabled=!0,this.sprite.events&&null===this.sprite.events.onInputOver&&(this.sprite.events.onInputOver=new b.Signal,this.sprite.events.onInputOut=new b.Signal,this.sprite.events.onInputDown=new b.Signal,this.sprite.events.onInputUp=new b.Signal,this.sprite.events.onDragStart=new b.Signal,this.sprite.events.onDragStop=new b.Signal)}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1; for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return"undefined"==typeof c&&(c=!0),0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite._cache[3]b;b++)if(this._pointerData[b].isOver)return!0}return!1},pointerOut:function(a){if(this.enabled){if("undefined"!=typeof a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0}return!1},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?("undefined"==typeof b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?("undefined"==typeof b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){null!==this.sprite&&(this._pointerData[a.id].isOver===!1||a.dirty)&&(this._pointerData[a.id].isOver=!0,this._pointerData[a.id].isOut=!1,this._pointerData[a.id].timeOver=this.game.time.now,this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),this.sprite&&this.sprite.events&&this.sprite.events.onInputOver.dispatch(this.sprite,a))},_pointerOutHandler:function(a){null!==this.sprite&&(this._pointerData[a.id].isOver=!1,this._pointerData[a.id].isOut=!0,this._pointerData[a.id].timeOut=this.game.time.now,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut.dispatch(this.sprite,a))},_touchedHandler:function(a){if(null!==this.sprite){if(this._pointerData[a.id].isDown===!1&&this._pointerData[a.id].isOver===!0){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;this._pointerData[a.id].isDown=!0,this._pointerData[a.id].isUp=!1,this._pointerData[a.id].timeDown=this.game.time.now,this.sprite&&this.sprite.events&&this.sprite.events.onInputDown.dispatch(this.sprite,a),a.dirty=!0,this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){null!==this.sprite&&this._pointerData[a.id].isDown&&a.isUp&&(this._pointerData[a.id].isDown=!1,this._pointerData[a.id].isUp=!0,this._pointerData[a.id].timeUp=this.game.time.now,this._pointerData[a.id].downDuration=this._pointerData[a.id].timeUp-this._pointerData[a.id].timeDown,this.checkPointerOver(a)?this.sprite&&this.sprite.events&&this.sprite.events.onInputUp.dispatch(this.sprite,a,!0):(this.sprite&&this.sprite.events&&this.sprite.events.onInputUp.dispatch(this.sprite,a,!1),this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1)),a.dirty=!0,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a))},updateDrag:function(a){if(a.isUp)return this.stopDrag(a),!1;var b=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,c=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;return this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=b),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)):(this.allowHorizontalDrag&&(this.sprite.x=b),this.allowVerticalDrag&&(this.sprite.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1},startDrag:function(a){if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else{if(this.dragFromCenter){var b=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-b.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-b.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.sprite.events.onDragStart.dispatch(this.sprite,a)},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop.dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.xthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-this.sprite.width),this.sprite.ythis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-this.sprite.height))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.camerOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.camerOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.camerOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.camerOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.xthis.boundsSprite.x+this.boundsSprite.width&&(this.sprite.x=this.boundsSprite.x+this.boundsSprite.width-this.sprite.width),this.sprite.ythis.boundsSprite.y+this.boundsSprite.height&&(this.sprite.y=this.boundsSprite.y+this.boundsSprite.height-this.sprite.height))}},b.InputHandler.prototype.constructor=b.InputHandler,b.Events=function(a){this.parent=a,this.onAddedToGroup=new b.Signal,this.onRemovedFromGroup=new b.Signal,this.onDestroy=new b.Signal,this.onKilled=new b.Signal,this.onRevived=new b.Signal,this.onOutOfBounds=new b.Signal,this.onEnterBounds=new b.Signal,this.onInputOver=null,this.onInputOut=null,this.onInputDown=null,this.onInputUp=null,this.onDragStart=null,this.onDragStop=null,this.onAnimationStart=null,this.onAnimationComplete=null,this.onAnimationLoop=null},b.Events.prototype={destroy:function(){this.parent=null,this.onDestroy.dispose(),this.onAddedToGroup.dispose(),this.onRemovedFromGroup.dispose(),this.onKilled.dispose(),this.onRevived.dispose(),this.onOutOfBounds.dispose(),this.onInputOver&&(this.onInputOver.dispose(),this.onInputOut.dispose(),this.onInputDown.dispose(),this.onInputUp.dispose(),this.onDragStart.dispose(),this.onDragStop.dispose()),this.onAnimationStart&&(this.onAnimationStart.dispose(),this.onAnimationComplete.dispose(),this.onAnimationLoop.dispose())}},b.Events.prototype.constructor=b.Events,b.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},b.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Image(this.game,a,c,d,e))},sprite:function(a,b,c,d,e){return"undefined"==typeof e&&(e=this.world),e.create(a,b,c,d)},tween:function(a){return this.game.tweens.create(a)},group:function(a,c,d,e,f){return new b.Group(this.game,a,c,d,e,f)},physicsGroup:function(a,c,d,e){return new b.Group(this.game,c,d,e,!0,a)},spriteBatch:function(a,c,d){return"undefined"==typeof a&&(a=null),"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,c,d,e,f,g,h){return"undefined"==typeof h&&(h=this.world),h.add(new b.TileSprite(this.game,a,c,d,e,f,g))},rope:function(a,c,d,e,f,g){return"undefined"==typeof g&&(g=this.world),g.add(new b.Rope(this.game,a,c,d,e,f))},text:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Text(this.game,a,c,d,e))},button:function(a,c,d,e,f,g,h,i,j,k){return"undefined"==typeof k&&(k=this.world),k.add(new b.Button(this.game,a,c,d,e,f,g,h,i,j))},graphics:function(a,c,d){return"undefined"==typeof d&&(d=this.world),d.add(new b.Graphics(this.game,a,c))},emitter:function(a,c,d){return this.game.particles.add(new b.Particles.Arcade.Emitter(this.game,a,c,d))},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f,g){return"undefined"==typeof g&&(g=this.world),g.add(new b.BitmapText(this.game,a,c,d,e,f))},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a},plugin:function(a){return this.game.plugins.add(a)}},b.GameObjectFactory.prototype.constructor=b.GameObjectFactory,b.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},b.GameObjectCreator.prototype={image:function(a,c,d,e){return new b.Image(this.game,a,c,d,e)},sprite:function(a,c,d,e){return new b.Sprite(this.game,a,c,d,e)},tween:function(a){return new b.Tween(a,this.game)},group:function(a,c,d,e,f){return new b.Group(this.game,null,c,d,e,f)},spriteBatch:function(a,c,d){return"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,c,d,e,f,g){return new b.TileSprite(this.game,a,c,d,e,f,g)},rope:function(a,c,d,e,f){return new b.Rope(this.game,a,c,d,e,f)},text:function(a,c,d,e){return new b.Text(this.game,a,c,d,e)},button:function(a,c,d,e,f,g,h,i,j){return new b.Button(this.game,a,c,d,e,f,g,h,i,j)},graphics:function(a,c){return new b.Graphics(this.game,a,c)},emitter:function(a,c,d){return new b.Particles.Arcade.Emitter(this.game,a,c,d)},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f){return new b.BitmapText(this.game,a,c,d,e,f)},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a}},b.GameObjectCreator.prototype.constructor=b.GameObjectCreator,b.BitmapData=function(a,c,d,e){"undefined"==typeof d&&(d=256),"undefined"==typeof e&&(e=256),this.game=a,this.key=c,this.width=d,this.height=e,this.canvas=b.Canvas.create(d,e,"",!0),this.context=this.canvas.getContext("2d"),this.ctx=this.context,this.imageData=this.context.getImageData(0,0,d,e),this.data=this.imageData.data,this.pixels=null,this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data,this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,d,e,"bitmapData",a.rnd.uuid()),this.texture.frame=this.textureFrame,this.type=b.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new b.Point,this._size=new b.Point,this._scale=new b.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new b.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new b.Circle},b.BitmapData.prototype={add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)b.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(c,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){"undefined"==typeof c&&(c=0),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=this.width),"undefined"==typeof f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,c,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=b.Color.packPixel(a,c,d,e);void 0!==j&&j instanceof b.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,c,d,e){if(("undefined"==typeof a||null===a)&&(a=!1),("undefined"==typeof c||null===c)&&(c=!1),("undefined"==typeof d||null===d)&&(d=!1),a||c||d){"undefined"==typeof e&&(e=new b.Rectangle(0,0,this.width,this.height));for(var f=b.Color.createColor(),g=e.y;g=0&&a<=this.width&&c>=0&&c<=this.height&&(this.pixels[c*this.width+a]=b.Device.LITTLE_ENDIAN?g<<24|f<<16|e<<8|d:d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,c,d){d||(d=b.Color.createColor());var e=~~(a+c*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,c,d,e,f){return b.Color.unpackPixel(this.getPixel32(a,c),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){"undefined"==typeof a&&(a=0);var c=b.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do b.Color.unpackPixel(this.getPixel32(d,e),c),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===c.a&&!g);return c.x=d,c.y=e,c},getBounds:function(a){return"undefined"==typeof a&&(a=new b.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(("undefined"==typeof a||null===a)&&(a=this),this._image=a,a instanceof b.Sprite||a instanceof b.Image||a instanceof b.Text)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,this._image=a.texture.baseTexture.source,a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture);else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof b.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}return("undefined"==typeof c||null===c)&&(c=0),("undefined"==typeof d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),("undefined"==typeof g||null===g)&&(g=c),("undefined"==typeof h||null===h)&&(h=d),("undefined"==typeof i||null===i)&&(i=this._size.x),("undefined"==typeof j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),"undefined"==typeof q&&(q=null),"undefined"==typeof r&&(r=!1),this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y?void 0:(this._alpha.prev=this.context.globalAlpha,this.context.save(),this.context.globalAlpha=this._alpha.current,q&&(this.context.globalCompositeOperation=q),r&&(g|=0,h|=0),this.context.translate(g,h),this.context.scale(this._scale.x,this._scale.y),this.context.rotate(this._rotate),this.context.drawImage(this._image,this._pos.x+c,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),this.context.restore(),this.context.globalAlpha=this._alpha.prev,this.dirty=!0,this)},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},shadow:function(a,b,c,d){"undefined"==typeof a||null===a?this.context.shadowColor="rgba(0,0,0,0)":(this.context.shadowColor=a,this.context.shadowBlur=b||5,this.context.shadowOffsetX=c||10,this.context.shadowOffsetY=d||10)},alphaMask:function(a,b,c,d){return"undefined"==typeof d||null===d?this.draw(b).blendSourceAtop():this.draw(b,d.x,d.y,d.width,d.height).blendSourceAtop(),"undefined"==typeof c||null===c?this.draw(a).blendReset():this.draw(a,c.x,c.y,c.width,c.height).blendReset(),this},extract:function(a,b,c,d,e,f,g,h,i){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b),"undefined"==typeof h&&(h=c),"undefined"==typeof i&&(i=d),f&&a.resize(this.width,this.height),this.processPixelRGB(function(f,j,k){return f.r===b&&f.g===c&&f.b===d&&a.setPixel32(j,k,g,h,i,e,!1),!1},this),a.context.putImageData(a.imageData,0,0),a.dirty=!0,a},rect:function(a,b,c,d,e){return"undefined"!=typeof e&&(this.context.fillStyle=e),this.context.fillRect(a,b,c,d),this},circle:function(a,b,c,d){return"undefined"!=typeof d&&(this.context.fillStyle=d),this.context.beginPath(),this.context.arc(a,b,c,0,2*Math.PI,!1),this.context.closePath(),this.context.fill(),this},textureLine:function(a,c,d){if("undefined"==typeof d&&(d="repeat-x"),"string"!=typeof c||(c=this.game.cache.getImage(c))){var e=a.length;return"no-repeat"===d&&e>c.width&&(e=c.width),this.context.fillStyle=this.context.createPattern(c,d),this._circle=new b.Circle(a.start.x,a.start.y,c.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),this.context.save(),this.context.translate(this._pos.x,this._pos.y),this.context.rotate(a.angle),this.context.fillRect(0,0,e,c.height),this.context.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},blendReset:function(){return this.context.globalCompositeOperation="source-over",this},blendSourceOver:function(){return this.context.globalCompositeOperation="source-over",this},blendSourceIn:function(){return this.context.globalCompositeOperation="source-in",this},blendSourceOut:function(){return this.context.globalCompositeOperation="source-out",this},blendSourceAtop:function(){return this.context.globalCompositeOperation="source-atop",this},blendDestinationOver:function(){return this.context.globalCompositeOperation="destination-over",this},blendDestinationIn:function(){return this.context.globalCompositeOperation="destination-in",this},blendDestinationOut:function(){return this.context.globalCompositeOperation="destination-out",this},blendDestinationAtop:function(){return this.context.globalCompositeOperation="destination-atop",this},blendXor:function(){return this.context.globalCompositeOperation="xor",this},blendAdd:function(){return this.context.globalCompositeOperation="lighter",this},blendMultiply:function(){return this.context.globalCompositeOperation="multiply",this},blendScreen:function(){return this.context.globalCompositeOperation="screen",this},blendOverlay:function(){return this.context.globalCompositeOperation="overlay",this},blendDarken:function(){return this.context.globalCompositeOperation="darken",this},blendLighten:function(){return this.context.globalCompositeOperation="lighten",this},blendColorDodge:function(){return this.context.globalCompositeOperation="color-dodge",this},blendColorBurn:function(){return this.context.globalCompositeOperation="color-burn",this},blendHardLight:function(){return this.context.globalCompositeOperation="hard-light",this},blendSoftLight:function(){return this.context.globalCompositeOperation="soft-light",this},blendDifference:function(){return this.context.globalCompositeOperation="difference",this},blendExclusion:function(){return this.context.globalCompositeOperation="exclusion",this},blendHue:function(){return this.context.globalCompositeOperation="hue",this},blendSaturation:function(){return this.context.globalCompositeOperation="saturation",this},blendColor:function(){return this.context.globalCompositeOperation="color",this},blendLuminosity:function(){return this.context.globalCompositeOperation="luminosity",this}},Object.defineProperty(b.BitmapData.prototype,"smoothed",{get:function(){b.Canvas.getSmoothingEnabled(this.context)},set:function(a){b.Canvas.setSmoothingEnabled(this.context,a)}}),b.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b} },b.BitmapData.prototype.constructor=b.BitmapData,b.Sprite=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.name="",this.type=b.SPRITE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.position.set(c,d),this.world=new b.Point(c,d),this.autoCull=!1,this.input=null,this.body=null,this.alive=!0,this.health=1,this.lifespan=0,this.checkWorldBounds=!1,this.outOfBoundsKill=!1,this.debug=!1,this.cameraOffset=new b.Point,this.cropRect=null,this._cache=[0,0,0,0,1,0,1,0],this._crop=null,this._frame=null,this._bounds=new b.Rectangle,this.loadTexture(e,f)},b.Sprite.prototype=Object.create(PIXI.Sprite.prototype),b.Sprite.prototype.constructor=b.Sprite,b.Sprite.prototype.preUpdate=function(){if(1===this._cache[4]&&this.exists)return this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.body&&this.body.preUpdate(),this._cache[4]=0,!1;if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;if(this.lifespan>0&&(this.lifespan-=this.game.time.elapsed,this.lifespan<=0))return this.kill(),!1;if((this.autoCull||this.checkWorldBounds)&&this._bounds.copyFrom(this.getBounds()),this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.checkWorldBounds)if(1===this._cache[5]&&this.game.world.bounds.intersects(this._bounds))this._cache[5]=0,this.events.onEnterBounds.dispatch(this);else if(0===this._cache[5]&&!this.game.world.bounds.intersects(this._bounds)&&(this._cache[5]=1,this.events.onOutOfBounds.dispatch(this),this.outOfBoundsKill))return this.kill(),!1;this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),this.animations.update(),this.body&&this.body.preUpdate();for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Sprite.prototype.update=function(){},b.Sprite.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Sprite.prototype.loadTexture=function(a,c,d){c=c||0,(d||"undefined"==typeof d)&&this.animations.stop(),this.key=a;var e=!0,f=this.smoothed;a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?(this.setTexture(a.texture),this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA)&&(e=!this.animations.loadFrameData(this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA),c))):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),e=!this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty(),e&&(this._frame=b.Rectangle.clone(this.texture.frame)),f||(this.smoothed=!1)},b.Sprite.prototype.setFrame=function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture._updateUvs()},b.Sprite.prototype.resetFrame=function(){this._frame&&this.setFrame(this._frame)},b.Sprite.prototype.crop=function(a,c){"undefined"==typeof c&&(c=!1),a?(c&&null!==this.cropRect?this.cropRect.setTo(a.x,a.y,a.width,a.height):this.cropRect=c&&null===this.cropRect?new b.Rectangle(a.x,a.y,a.width,a.height):a,this.updateCrop()):(this._crop=null,this.cropRect=null,this.resetFrame())},b.Sprite.prototype.updateCrop=function(){if(this.cropRect){this._crop=b.Rectangle.clone(this.cropRect,this._crop),this._crop.x+=this._frame.x,this._crop.y+=this._frame.y;var a=Math.max(this._frame.x,this._crop.x),c=Math.max(this._frame.y,this._crop.y),d=Math.min(this._frame.right,this._crop.right)-a,e=Math.min(this._frame.bottom,this._crop.bottom)-c;this.texture.crop.x=a,this.texture.crop.y=c,this.texture.crop.width=d,this.texture.crop.height=e,this.texture.frame.width=Math.min(d,this.cropRect.width),this.texture.frame.height=Math.min(e,this.cropRect.height),this.texture.width=this.texture.frame.width,this.texture.height=this.texture.frame.height,this.texture._updateUvs()}},b.Sprite.prototype.revive=function(a){return"undefined"==typeof a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,this.health=a,this.events&&this.events.onRevived.dispatch(this),this},b.Sprite.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Sprite.prototype.destroy=function(a){if(null!==this.game&&1!==this._cache[8]){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.input&&this.input.destroy(),this.animations&&this.animations.destroy(),this.body&&this.body.destroy(),this.events&&this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this._crop&&(this._crop=null),this._frame&&(this._frame=null),this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Sprite.prototype.damage=function(a){return this.alive&&(this.health-=a,this.health<=0&&this.kill()),this},b.Sprite.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},b.Sprite.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},b.Sprite.prototype.play=function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0},b.Sprite.prototype.overlap=function(a){return b.Rectangle.intersects(this.getBounds(),a.getBounds())},Object.defineProperty(b.Sprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Sprite.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Sprite.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Sprite.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Sprite.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}}),Object.defineProperty(b.Sprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}),Object.defineProperty(b.Sprite.prototype,"renderOrderID",{get:function(){return this._cache[3]}}),Object.defineProperty(b.Sprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.Sprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&this.body.removeFromWorld(),this.visible=!1)}}),Object.defineProperty(b.Sprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.Sprite.prototype,"smoothed",{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}),Object.defineProperty(b.Sprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Sprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Sprite.prototype,"destroyPhase",{get:function(){return!!this._cache[8]}}),b.Image=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.exists=!0,this.name="",this.type=b.IMAGE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.position.set(c,d),this.world=new b.Point(c,d),this.alive=!0,this.autoCull=!1,this.input=null,this.debug=!1,this.cameraOffset=new b.Point,this.cropRect=null,this._cache=[0,0,0,0,1,0,1,0,0],this._crop=null,this._frame=null,this._bounds=new b.Rectangle,this.loadTexture(e,f)},b.Image.prototype=Object.create(PIXI.Sprite.prototype),b.Image.prototype.constructor=b.Image,b.Image.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;this.autoCull&&(this._bounds.copyFrom(this.getBounds()),this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Image.prototype.update=function(){},b.Image.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Image.prototype.loadTexture=function(a,c){c=c||0,this.key=a;var d=!0,e=this.smoothed;a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?(this.setTexture(a.texture),this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA)&&(d=!this.animations.loadFrameData(this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA),c))):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),d=!this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty(),d&&(this._frame=b.Rectangle.clone(this.texture.frame)),e||(this.smoothed=!1)},b.Image.prototype.setFrame=function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture._updateUvs()},b.Image.prototype.resetFrame=function(){this._frame&&this.setFrame(this._frame)},b.Image.prototype.crop=function(a,c){"undefined"==typeof c&&(c=!1),a?(c&&null!==this.cropRect?this.cropRect.setTo(a.x,a.y,a.width,a.height):this.cropRect=c&&null===this.cropRect?new b.Rectangle(a.x,a.y,a.width,a.height):a,this.updateCrop()):(this._crop=null,this.cropRect=null,this.resetFrame())},b.Image.prototype.updateCrop=function(){if(this.cropRect){this._crop=b.Rectangle.clone(this.cropRect,this._crop),this._crop.x+=this._frame.x,this._crop.y+=this._frame.y;var a=Math.max(this._frame.x,this._crop.x),c=Math.max(this._frame.y,this._crop.y),d=Math.min(this._frame.right,this._crop.right)-a,e=Math.min(this._frame.bottom,this._crop.bottom)-c;this.texture.crop.x=a,this.texture.crop.y=c,this.texture.crop.width=d,this.texture.crop.height=e,this.texture.frame.width=Math.min(d,this.cropRect.width),this.texture.frame.height=Math.min(e,this.cropRect.height),this.texture.width=this.texture.frame.width,this.texture.height=this.texture.frame.height,this.texture._updateUvs()}},b.Image.prototype.revive=function(){return this.alive=!0,this.exists=!0,this.visible=!0,this.events&&this.events.onRevived.dispatch(this),this},b.Image.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Image.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.events&&this.events.destroy(),this.input&&this.input.destroy(),this.animations&&this.animations.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Image.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this},b.Image.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},Object.defineProperty(b.Image.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Image.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Image.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Image.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Image.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"frame",{get:function(){return this._frame},set:function(a){if(a!==this.frame){var b=this.game.cache.getFrameData(this.key);b&&aa;a++)this.children[a].preUpdate();return!0},b.TileSprite.prototype.update=function(){},b.TileSprite.prototype.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=this.game.camera.view.x+this.cameraOffset.x,this.position.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.TileSprite.prototype.autoScroll=function(a,b){this._scroll.set(a,b)},b.TileSprite.prototype.stopScroll=function(){this._scroll.set(0,0)},b.TileSprite.prototype.loadTexture=function(a,c){c=c||0,this.key=a,a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?this.setTexture(a.texture):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty()},b.TileSprite.prototype.setFrame=function(a){this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.texture._updateUvs()},b.TileSprite.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.filters&&(this.filters=null),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.animations.destroy(),this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.alive=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.TileSprite.prototype.play=function(a,b,c,d){return this.animations.play(a,b,c,d)},b.TileSprite.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.tilePosition.x=0,this.tilePosition.y=0,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},Object.defineProperty(b.TileSprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.TileSprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){a!==this.animations.frame&&(this.animations.frame=a)}}),Object.defineProperty(b.TileSprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){a!==this.animations.frameName&&(this.animations.frameName=a)}}),Object.defineProperty(b.TileSprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.TileSprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&(this.body.safeRemove=!0),this.visible=!1)}}),Object.defineProperty(b.TileSprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.TileSprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.TileSprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.TileSprite.prototype,"destroyPhase",{get:function(){return!!this._cache[8]}}),b.Rope=function(a,c,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.name="",this.type=b.ROPE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,this._frame=0,this._frameName="",this._scroll=new b.Point,PIXI.Rope.call(this,e,this.points),this.position.set(c,d),this.input=null,this.world=new b.Point(c,d),this.autoCull=!1,this.checkWorldBounds=!1,this.cameraOffset=new b.Point,this.body=null,this._cache=[0,0,0,0,1,0,1,0,0],this.loadTexture(e,f)},b.Rope.prototype=Object.create(PIXI.Rope.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.preUpdate=function(){if(1===this._cache[4]&&this.exists)return this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.body&&this.body.preUpdate(),this._cache[4]=0,!1;if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;(this.autoCull||this.checkWorldBounds)&&this._bounds.copyFrom(this.getBounds()),this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.checkWorldBounds&&(1===this._cache[5]&&this.game.world.bounds.intersects(this._bounds)?(this._cache[5]=0,this.events.onEnterBounds.dispatch(this)):0!==this._cache[5]||this.game.world.bounds.intersects(this._bounds)||(this._cache[5]=1,this.events.onOutOfBounds.dispatch(this))),this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),this.animations.update(),0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.body&&this.body.preUpdate();for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},b.Rope.prototype.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=this.game.camera.view.x+this.cameraOffset.x,this.position.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Rope.prototype.loadTexture=function(a,c){c=c||0,this.key=a,a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?this.setTexture(a.texture):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key]))},b.Rope.prototype.setFrame=function(a){this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.texture._updateUvs()},b.Rope.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.filters&&(this.filters=null),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.animations.destroy(),this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Rope.prototype.play=function(a,b,c,d){return this.animations.play(a,b,c,d)},b.Rope.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.tilePosition.x=0,this.tilePosition.y=0,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},Object.defineProperty(b.Rope.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Rope.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){a!==this.animations.frame&&(this.animations.frame=a)}}),Object.defineProperty(b.Rope.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){a!==this.animations.frameName&&(this.animations.frameName=a)}}),Object.defineProperty(b.Rope.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.Rope.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&(this.body.safeRemove=!0),this.visible=!1)}}),Object.defineProperty(b.Rope.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.Rope.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Rope.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(b.Rope.prototype,"segments",{get:function(){for(var a,c,d,e,f,g,h,i,j=[],k=0;ka;a++)this.children[a].preUpdate();return!0},b.Text.prototype.update=function(){},b.Text.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Text.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.texture.destroy(!0),this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null);var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Text.prototype.setShadow=function(a,b,c,d){this.style.shadowOffsetX=a||0,this.style.shadowOffsetY=b||0,this.style.shadowColor=c||"rgba(0,0,0,0)",this.style.shadowBlur=d||0,this.dirty=!0},b.Text.prototype.setStyle=function(a){a=a||{},a.font=a.font||"bold 20pt Arial",a.fill=a.fill||"black",a.align=a.align||"left",a.stroke=a.stroke||"black",a.strokeThickness=a.strokeThickness||0,a.wordWrap=a.wordWrap||!1,a.wordWrapWidth=a.wordWrapWidth||100,a.shadowOffsetX=a.shadowOffsetX||0,a.shadowOffsetY=a.shadowOffsetY||0,a.shadowColor=a.shadowColor||"rgba(0,0,0,0)",a.shadowBlur=a.shadowBlur||0,this.style=a,this.dirty=!0},b.Text.prototype.updateText=function(){this.texture.baseTexture.resolution=this.resolution,this.context.font=this.style.font;var a=this.text;this.style.wordWrap&&(a=this.wordWrap(this.text));for(var b=a.split(/(?:\r\n|\r|\n)/),c=[],d=0,e=this.determineFontProperties(this.style.font),f=0;f0?this.updateLine(b[f],k,l):(this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(b[f],k,l),this.style.fill&&this.context.fillText(b[f],k,l));this.updateTexture()},b.Text.prototype.updateLine=function(a,b,c){for(var d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d0&&this.drawPolygon(d)}else this.drawPolygon(d)},b.Graphics.prototype.drawTriangles=function(a,c,d){"undefined"==typeof d&&(d=!1);var e,f=new b.Point,g=new b.Point,h=new b.Point,i=[];if(c)if(a[0]instanceof b.Point)for(e=0;e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.textureBuffer.clear(),this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},b.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d,PIXI.TextureCache[e[f].uuid].frame.x=e[f].x,PIXI.TextureCache[e[f].uuid].frame.y=e[f].y;this.buildRetroFontText()}},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(b.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c){a=a||256,b=b||256;var d=document.createElement("canvas");return"string"==typeof c&&""!==c&&(d.id=c),d.width=a,d.height=b,d.style.display="block",d},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkOS(),this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures()},b.Device.LITTLE_ENDIAN=!1,b.Device.prototype={_checkOS:function(){var a=navigator.userAgent; -/Playstation Vita/.test(a)?this.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?this.kindle=!0:/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1||this.chromeOS)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1)},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"opus"==a&&this.opus?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,c,d){a=+a||0;var e=typeof c;"number"!==e&&"string"!==e||!d||d[c]!==a||(c=d=null),d=null==d?1:+d||0,null===c?(c=a,a=0):c=+c||0;for(var f=-1,g=b.Math.max(b.Math.ceil((c-a)/(d||1)),0),h=new Array(g);++fc&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},limitValue:function(a,b,c){return b>a?b:a>c?c:a},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return"undefined"==typeof c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof b.Rectangle)var c=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var c=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?c=c.concat(this.nodes[d].retrieve(a)):(c=c.concat(this.nodes[0].retrieve(a)),c=c.concat(this.nodes[1].retrieve(a)),c=c.concat(this.nodes[2].retrieve(a)),c=c.concat(this.nodes[3].retrieve(a)))),c},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ac;)this._tweens[c].update(this.game.time.now)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Default,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1,g&&0===f&&(f=1);var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},from:function(a,b,c,d,e,f,g){var h={};for(var i in a)h[i]=this._object[i],this._object[i]=a[i];return this.to(h,b,c,d,e,f,g)},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):"string"==typeof l?l=k+parseFloat(l,10):"number"==typeof l&&(j[c]=k+(l-k)*i)}g.push(j),d+=f}var j={};for(c in this._valuesEnd)j[c]=this._valuesEnd[c];if(g.push(j),this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,a&&0===this._repeat&&(this._repeat=1),this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&(this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),!this.isRunning))return!1;if(1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._yoyo&&(this._reversed=!this._reversed),this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Easing.Default=b.Easing.Linear.None,b.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.timeCap=1/60*1e3,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;athis.timeCap&&(this.elapsed=this.timeCap),this.physicsElapsed=this.elapsed/1e3||1/60,this.deltaCap>0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.now,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.now,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.now;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(b.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(b.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a,b){if("undefined"==typeof a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,c,d,e,f){return c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null===this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.__tilePattern&&(this.sprite.__tilePattern=!1,this.tilingTexture=!1),this._anims[a]},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){"undefined"==typeof h&&(h=!1),this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onUpdate=null,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if("undefined"==typeof b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length&&(this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete()),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame)),!0):!1},next:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},previous:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose()},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(b.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new b.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new b.Frame(this.index,this.x,this.y,this.width,this.height,this.name,this.uuid);for(var c in this)this.hasOwnProperty(c)&&(a[c]=this[c]);return a},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new b.FrameData,c=0;c=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+c+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._packIndex=0,this.loadPack()):this.beginLoad())},beginLoad:function(){this.progress=0,this.progressFloat=0,this.hasLoaded=!1,this.isLoading=!0,this.onLoadStart.dispatch(this._fileList.length),this._fileList.length>0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.isLoading=!1,this.onLoadComplete.dispatch())},loadPack:function(){if(!this._packList[this._packIndex])return void console.warn("Phaser.Loader loadPackList invalid index "+this._packIndex);var a=this._packList[this._packIndex];null!==a.data?this.packLoadComplete(this._packIndex,!1):this.xhrLoad(this._packIndex,this.baseURL+a.url,"text","packLoadComplete","packLoadError")},packLoadComplete:function(a,c){if("undefined"==typeof c&&(c=!0),!this._packList[a])return void console.warn("Phaser.Loader packLoadComplete invalid index "+a);var d=this._packList[a];if(d.loaded=!0,c)var e=JSON.parse(this._xhr.responseText);else var e=this._packList[a].data;if(e[d.key])for(var f,g=0;g=0&&(b=b.substr(0,b.indexOf("?"))),this.game.device.canPlayAudio(b))return a[c];return null},fileError:function(a){this._fileList[a].loaded=!0,this._fileList[a].error=!0,this.onFileError.dispatch(this._fileList[a].key,this._fileList[a]),console.warn("Phaser.Loader error loading file: "+this._fileList[a].key+" from URL "+this._fileList[a].url),this.nextFile(a,!1)},fileComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader fileComplete invalid index "+a);var c=this._fileList[a];c.loaded=!0;var d=!0;switch(c.type){case"image":this.game.cache.addImage(c.key,c.url,c.data);break;case"spritesheet":this.game.cache.addSpriteSheet(c.key,c.url,c.data,c.frameWidth,c.frameHeight,c.frameMax,c.margin,c.spacing);break;case"textureatlas":if(null==c.atlasURL)this.game.cache.addTextureAtlas(c.key,c.url,c.data,c.atlasData,c.format);else if(d=!1,c.format==b.Loader.TEXTURE_ATLAS_JSON_ARRAY||c.format==b.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","jsonLoadComplete","dataLoadError");else{if(c.format!=b.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+c.format);this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","xmlLoadComplete","dataLoadError")}break;case"bitmapfont":null==c.xmlURL?this.game.cache.addBitmapFont(c.key,c.url,c.data,c.xmlData,c.xSpacing,c.ySpacing):(d=!1,this.xhrLoad(this._fileIndex,this.baseURL+c.xmlURL,"text","xmlLoadComplete","dataLoadError"));break;case"audio":if(this.game.sound.usingWebAudio){if(c.data=this._xhr.response,this.game.cache.addSound(c.key,c.url,c.data,!0,!1),c.autoDecode){var e=this,f=c.key;this.game.cache.updateSound(f,"isDecoding",!0),this.game.sound.context.decodeAudioData(c.data,function(a){a&&(e.game.cache.decodedSound(f,a),e.game.sound.onSoundDecode.dispatch(f,e.game.cache.getSound(f)))})}}else c.data.removeEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete),this.game.cache.addSound(c.key,c.url,c.data,!1,!0);break;case"text":c.data=this._xhr.responseText,this.game.cache.addText(c.key,c.url,c.data);break;case"physics":var g=JSON.parse(this._xhr.responseText);this.game.cache.addPhysicsData(c.key,c.url,g,c.format);break;case"script":c.data=document.createElement("script"),c.data.language="javascript",c.data.type="text/javascript",c.data.defer=!1,c.data.text=this._xhr.responseText,document.head.appendChild(c.data),c.callback&&(c.data=c.callback.call(c.callbackContext,c.key,this._xhr.responseText));break;case"binary":c.data=c.callback?c.callback.call(c.callbackContext,c.key,this._xhr.response):this._xhr.response,this.game.cache.addBinary(c.key,c.data)}d&&this.nextFile(a,!0)},jsonLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader jsonLoadComplete invalid index "+a);var b=this._fileList[a];if(this._ajax&&this._ajax.responseText)var c=JSON.parse(this._ajax.responseText);else var c=JSON.parse(this._xhr.responseText);b.loaded=!0,"tilemap"===b.type?this.game.cache.addTilemap(b.key,b.url,c,b.format):"json"===b.type?this.game.cache.addJSON(b.key,b.url,c):this.game.cache.addTextureAtlas(b.key,b.url,b.data,c,b.format),this.nextFile(a,!0)},csvLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader csvLoadComplete invalid index "+a);var b=this._fileList[a],c=this._xhr.responseText;b.loaded=!0,this.game.cache.addTilemap(b.key,b.url,c,b.format),this.nextFile(a,!0)},dataLoadError:function(a){var b=this._fileList[a];b.loaded=!0,b.error=!0,console.warn("Phaser.Loader dataLoadError: "+b.key),this.nextFile(a,!0)},xmlLoadComplete:function(a){""!==this._xhr.responseType&&"text"!==this._xhr.responseType&&(console.warn("Invalid XML Response Type",this._fileList[a]),console.warn(this._xhr));var b,c=this._xhr.responseText;try{if(window.DOMParser){var d=new DOMParser;b=d.parseFromString(c,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(c)}catch(e){b=void 0}if(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)throw new Error("Phaser.Loader. Invalid XML given");var f=this._fileList[a];f.loaded=!0,"bitmapfont"===f.type?this.game.cache.addBitmapFont(f.key,f.url,f.data,b,f.xSpacing,f.ySpacing):"textureatlas"===f.type?this.game.cache.addTextureAtlas(f.key,f.url,f.data,b,f.format):"xml"===f.type&&this.game.cache.addXML(f.key,f.url,b),this.nextFile(a,!0)},nextFile:function(a,b){this.progressFloat+=this._progressChunk,this.progress=Math.round(this.progressFloat),this.progress>100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.updateCrop()),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this.isPlaying&&!this.allowMultiple&&(this.override||e)&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist"),this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null===this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if("undefined"==typeof this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b){"undefined"==typeof b&&(b=!1),this.paused||(this.play("",0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,c){if(this.isPlaying&&!this.paused&&c!==this.volume){if("undefined"==typeof a&&(a=1e3),"undefined"==typeof c)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");var d=this.game.add.tween(this).to({volume:c},a,b.Easing.Linear.None,!0);d.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a>>0:(a<<24|c<<16|d<<8|e)>>>0},unpackPixel:function(a,c,d,e){return("undefined"==typeof c||null===c)&&(c=b.Color.createColor()),("undefined"==typeof d||null===d)&&(d=!1),("undefined"==typeof e||null===e)&&(e=!1),b.Device.LITTLE_ENDIAN?(c.a=(4278190080&a)>>>24,c.b=(16711680&a)>>>16,c.g=(65280&a)>>>8,c.r=255&a):(c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a),c.color=a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a/255+")",d&&b.Color.RGBtoHSL(c.r,c.g,c.b,c),e&&b.Color.RGBtoHSV(c.r,c.g,c.b,c),c},fromRGBA:function(a,c){return c||(c=b.Color.createColor()),c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a+")",c},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,1)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6}return e},HSLtoRGB:function(a,c,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=b.Color.createColor(d,d,d),0!==c){var f=.5>d?d*(1+c):d+c-d*c,g=2*d-f;e.r=b.Color.hueToColor(g,f,a+1/3),e.g=b.Color.hueToColor(g,f,a),e.b=b.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),b.Color.updateColor(e),e},RGBtoHSV:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,255)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6),e},HSVtoRGB:function(a,c,d,e){"undefined"==typeof e&&(e=b.Color.createColor(0,0,0,1,a,c,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-c),l=d*(1-j*c),m=d*(1-(1-j)*c);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),b.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,c,d,e,f,g,h,i){var j={r:a||0,g:c||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return j.color=b.Color.getColor(j.r,j.g,j.b),j.color32=b.Color.getColor32(j.a,j.r,j.g,j.b),b.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,c,d,e,f){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(c<<8)+d).toString(16).slice(1):"0x"+b.Color.componentToHex(e)+b.Color.componentToHex(a)+b.Color.componentToHex(c)+b.Color.componentToHex(d)},hexToRGB:function(a){var c=b.Color.hexToColor(a);return c?b.Color.getColor32(c.a,c.r,c.g,c.b):void 0},hexToColor:function(a,c){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);c?(c.r=e,c.g=f,c.b=g):c=b.Color.createColor(e,f,g)}return c},webToColor:function(a,c){c||(c=b.Color.createColor());var d=/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\)$/.exec(a);return d&&(c.r=parseInt(d[1],10),c.g=parseInt(d[2],10),c.b=parseInt(d[3],10)),c},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,c){"undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSVtoRGB(e/359,a,c));return d},HSLColorWheel:function(a,c){"undefined"==typeof a&&(a=.5),"undefined"==typeof c&&(c=.5);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSLtoRGB(e/359,a,c));return d},interpolateColor:function(a,c,d,e,f){"undefined"==typeof f&&(f=255);var g=b.Color.getRGB(a),h=b.Color.getRGB(c),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return b.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,c,d,e,f,g){var h=b.Color.getRGB(a),i=(c-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return b.Color.getColor(i,j,k)},interpolateRGB:function(a,c,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-c)*i/h+c,l=(g-d)*i/h+d;return b.Color.getColor(j,k,l)},getRandomColor:function(a,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof c&&(c=255),"undefined"==typeof d&&(d=255),c>255||a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var c=b.Color.getRGB(a);return"rgba("+c.r.toString()+","+c.g.toString()+","+c.b.toString()+","+(c.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=4,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&b.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new b.Physics.BOX2D(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else if(a===b.Physics.BOX2D&&null===this.box2d)this.box2d=new b.Physics.Box2D(this.game,this.config);else if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):c===b.Physics.BOX2D&&this.box2d&&this.box2d.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null}},b.Physics.prototype.constructor=b.Physics,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.Phaser=b):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return a.Phaser=b}()):a.Phaser=b}.call(this); \ No newline at end of file +return j}}),Object.defineProperty(b.Rope.prototype,"destroyPhase",{get:function(){return!!this._cache[8]}}),b.Text=function(a,c,d,e,f){c=c||0,d=d||0,e=e||" ",f=f||{},e=0===e.length?" ":e.toString(),this.game=a,this.exists=!0,this.name="",this.type=b.TEXT,this.z=0,this.world=new b.Point(c,d),this._text=e,this._font="",this._fontSize=32,this._fontWeight="normal",this._lineSpacing=0,this._charCount=0,this.events=new b.Events(this),this.input=null,this.cameraOffset=new b.Point,this.colors=[],this.setStyle(f),PIXI.Text.call(this,e,this.style),this.position.set(c,d),this._cache=[0,0,0,0,1,0,1,0,0]," "!==e&&this.updateText()},b.Text.prototype=Object.create(PIXI.Text.prototype),b.Text.prototype.constructor=b.Text,b.Text.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this.getBounds())),this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Text.prototype.update=function(){},b.Text.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Text.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.texture.destroy(!0),this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null);var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Text.prototype.setShadow=function(a,b,c,d){this.style.shadowOffsetX=a||0,this.style.shadowOffsetY=b||0,this.style.shadowColor=c||"rgba(0,0,0,0)",this.style.shadowBlur=d||0,this.dirty=!0},b.Text.prototype.setStyle=function(a){a=a||{},a.font=a.font||"bold 20pt Arial",a.fill=a.fill||"black",a.align=a.align||"left",a.stroke=a.stroke||"black",a.strokeThickness=a.strokeThickness||0,a.wordWrap=a.wordWrap||!1,a.wordWrapWidth=a.wordWrapWidth||100,a.shadowOffsetX=a.shadowOffsetX||0,a.shadowOffsetY=a.shadowOffsetY||0,a.shadowColor=a.shadowColor||"rgba(0,0,0,0)",a.shadowBlur=a.shadowBlur||0,this.style=a,this.dirty=!0},b.Text.prototype.updateText=function(){this.texture.baseTexture.resolution=this.resolution,this.context.font=this.style.font;var a=this.text;this.style.wordWrap&&(a=this.wordWrap(this.text));for(var b=a.split(/(?:\r\n|\r|\n)/),c=[],d=0,e=this.determineFontProperties(this.style.font),f=0;f0?this.updateLine(b[f],k,l):(this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(b[f],k,l),this.style.fill&&this.context.fillText(b[f],k,l));this.updateTexture()},b.Text.prototype.updateLine=function(a,b,c){for(var d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d0&&this.drawPolygon(d)}else this.drawPolygon(d)},b.Graphics.prototype.drawTriangles=function(a,c,d){"undefined"==typeof d&&(d=!1);var e,f=new b.Point,g=new b.Point,h=new b.Point,i=[];if(c)if(a[0]instanceof b.Point)for(e=0;e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.textureBuffer.clear(),this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},b.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d,PIXI.TextureCache[e[f].uuid].frame.x=e[f].x,PIXI.TextureCache[e[f].uuid].frame.y=e[f].y;this.buildRetroFontText()}},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(b.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c){a=a||256,b=b||256;var d=document.createElement("canvas");return"string"==typeof c&&""!==c&&(d.id=c),d.width=a,d.height=b,d.style.display="block",d},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkOS(),this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures()},b.Device.LITTLE_ENDIAN=!1,b.Device.prototype={_checkOS:function(){var a=navigator.userAgent;/Playstation Vita/.test(a)?this.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?this.kindle=!0:/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1||this.chromeOS)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1) +},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"opus"==a&&this.opus?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,c,d){a=+a||0;var e=typeof c;"number"!==e&&"string"!==e||!d||d[c]!==a||(c=d=null),d=null==d?1:+d||0,null===c?(c=a,a=0):c=+c||0;for(var f=-1,g=b.Math.max(b.Math.ceil((c-a)/(d||1)),0),h=new Array(g);++fc&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},limitValue:function(a,b,c){return b>a?b:a>c?c:a},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return"undefined"==typeof c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof b.Rectangle)var c=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var c=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?c=c.concat(this.nodes[d].retrieve(a)):(c=c.concat(this.nodes[0].retrieve(a)),c=c.concat(this.nodes[1].retrieve(a)),c=c.concat(this.nodes[2].retrieve(a)),c=c.concat(this.nodes[3].retrieve(a)))),c},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ac;)this._tweens[c].update(this.game.time.now)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Default,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1,g&&0===f&&(f=1);var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},from:function(a,b,c,d,e,f,g){var h={};for(var i in a)h[i]=this._object[i],this._object[i]=a[i];return this.to(h,b,c,d,e,f,g)},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):"string"==typeof l?l=k+parseFloat(l,10):"number"==typeof l&&(j[c]=k+(l-k)*i)}g.push(j),d+=f}var j={};for(c in this._valuesEnd)j[c]=this._valuesEnd[c];if(g.push(j),this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,a&&0===this._repeat&&(this._repeat=1),this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&(this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),!this.isRunning))return!1;if(1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._yoyo&&(this._reversed=!this._reversed),this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Easing.Default=b.Easing.Linear.None,b.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.timeCap=1/60*1e3,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;athis.timeCap&&(this.elapsed=this.timeCap),this.physicsElapsed=this.elapsed/1e3||1/60,this.deltaCap>0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1); +this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.now,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.now,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.now;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(b.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(b.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a,b){if("undefined"==typeof a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,c,d,e,f){return c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null===this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.__tilePattern&&(this.sprite.__tilePattern=!1,this.tilingTexture=!1),this._anims[a]},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){"undefined"==typeof h&&(h=!1),this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onUpdate=null,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if("undefined"==typeof b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length&&(this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete()),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame)),!0):!1},next:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},previous:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose()},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(b.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new b.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new b.Frame(this.index,this.x,this.y,this.width,this.height,this.name,this.uuid);for(var c in this)this.hasOwnProperty(c)&&(a[c]=this[c]);return a},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new b.FrameData,c=0;c=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+c+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._packIndex=0,this.loadPack()):this.beginLoad())},beginLoad:function(){this.progress=0,this.progressFloat=0,this.hasLoaded=!1,this.isLoading=!0,this.onLoadStart.dispatch(this._fileList.length),this._fileList.length>0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.isLoading=!1,this.onLoadComplete.dispatch())},loadPack:function(){if(!this._packList[this._packIndex])return void console.warn("Phaser.Loader loadPackList invalid index "+this._packIndex);var a=this._packList[this._packIndex];null!==a.data?this.packLoadComplete(this._packIndex,!1):this.xhrLoad(this._packIndex,this.baseURL+a.url,"text","packLoadComplete","packLoadError")},packLoadComplete:function(a,c){if("undefined"==typeof c&&(c=!0),!this._packList[a])return void console.warn("Phaser.Loader packLoadComplete invalid index "+a);var d=this._packList[a];if(d.loaded=!0,c)var e=JSON.parse(this._xhr.responseText);else var e=this._packList[a].data;if(e[d.key])for(var f,g=0;g=0&&(b=b.substr(0,b.indexOf("?"))),this.game.device.canPlayAudio(b))return a[c];return null},fileError:function(a){this._fileList[a].loaded=!0,this._fileList[a].error=!0,this.onFileError.dispatch(this._fileList[a].key,this._fileList[a]),console.warn("Phaser.Loader error loading file: "+this._fileList[a].key+" from URL "+this._fileList[a].url),this.nextFile(a,!1)},fileComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader fileComplete invalid index "+a);var c=this._fileList[a];c.loaded=!0;var d=!0;switch(c.type){case"image":this.game.cache.addImage(c.key,c.url,c.data);break;case"spritesheet":this.game.cache.addSpriteSheet(c.key,c.url,c.data,c.frameWidth,c.frameHeight,c.frameMax,c.margin,c.spacing);break;case"textureatlas":if(null==c.atlasURL)this.game.cache.addTextureAtlas(c.key,c.url,c.data,c.atlasData,c.format);else if(d=!1,c.format==b.Loader.TEXTURE_ATLAS_JSON_ARRAY||c.format==b.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","jsonLoadComplete","dataLoadError");else{if(c.format!=b.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+c.format);this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","xmlLoadComplete","dataLoadError")}break;case"bitmapfont":null==c.xmlURL?this.game.cache.addBitmapFont(c.key,c.url,c.data,c.xmlData,c.xSpacing,c.ySpacing):(d=!1,this.xhrLoad(this._fileIndex,this.baseURL+c.xmlURL,"text","xmlLoadComplete","dataLoadError"));break;case"audio":if(this.game.sound.usingWebAudio){if(c.data=this._xhr.response,this.game.cache.addSound(c.key,c.url,c.data,!0,!1),c.autoDecode){var e=this,f=c.key;this.game.cache.updateSound(f,"isDecoding",!0),this.game.sound.context.decodeAudioData(c.data,function(a){a&&(e.game.cache.decodedSound(f,a),e.game.sound.onSoundDecode.dispatch(f,e.game.cache.getSound(f)))})}}else c.data.removeEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete),this.game.cache.addSound(c.key,c.url,c.data,!1,!0);break;case"text":c.data=this._xhr.responseText,this.game.cache.addText(c.key,c.url,c.data);break;case"physics":var g=JSON.parse(this._xhr.responseText);this.game.cache.addPhysicsData(c.key,c.url,g,c.format);break;case"script":c.data=document.createElement("script"),c.data.language="javascript",c.data.type="text/javascript",c.data.defer=!1,c.data.text=this._xhr.responseText,document.head.appendChild(c.data),c.callback&&(c.data=c.callback.call(c.callbackContext,c.key,this._xhr.responseText));break;case"binary":c.data=c.callback?c.callback.call(c.callbackContext,c.key,this._xhr.response):this._xhr.response,this.game.cache.addBinary(c.key,c.data)}d&&this.nextFile(a,!0)},jsonLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader jsonLoadComplete invalid index "+a);var b=this._fileList[a];if(this._ajax&&this._ajax.responseText)var c=JSON.parse(this._ajax.responseText);else var c=JSON.parse(this._xhr.responseText);b.loaded=!0,"tilemap"===b.type?this.game.cache.addTilemap(b.key,b.url,c,b.format):"json"===b.type?this.game.cache.addJSON(b.key,b.url,c):this.game.cache.addTextureAtlas(b.key,b.url,b.data,c,b.format),this.nextFile(a,!0)},csvLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader csvLoadComplete invalid index "+a);var b=this._fileList[a],c=this._xhr.responseText;b.loaded=!0,this.game.cache.addTilemap(b.key,b.url,c,b.format),this.nextFile(a,!0)},dataLoadError:function(a){var b=this._fileList[a];b.loaded=!0,b.error=!0,console.warn("Phaser.Loader dataLoadError: "+b.key),this.nextFile(a,!0)},xmlLoadComplete:function(a){""!==this._xhr.responseType&&"text"!==this._xhr.responseType&&(console.warn("Invalid XML Response Type",this._fileList[a]),console.warn(this._xhr));var b,c=this._xhr.responseText;try{if(window.DOMParser){var d=new DOMParser;b=d.parseFromString(c,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(c)}catch(e){b=void 0}if(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)throw new Error("Phaser.Loader. Invalid XML given");var f=this._fileList[a];f.loaded=!0,"bitmapfont"===f.type?this.game.cache.addBitmapFont(f.key,f.url,f.data,b,f.xSpacing,f.ySpacing):"textureatlas"===f.type?this.game.cache.addTextureAtlas(f.key,f.url,f.data,b,f.format):"xml"===f.type&&this.game.cache.addXML(f.key,f.url,b),this.nextFile(a,!0)},nextFile:function(a,b){this.progressFloat+=this._progressChunk,this.progress=Math.round(this.progressFloat),this.progress>100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.updateCrop()),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this.isPlaying&&!this.allowMultiple&&(this.override||e)&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist"),this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null===this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if("undefined"==typeof this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b){"undefined"==typeof b&&(b=!1),this.paused||(this.play("",0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,c){if(this.isPlaying&&!this.paused&&c!==this.volume){if("undefined"==typeof a&&(a=1e3),"undefined"==typeof c)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");var d=this.game.add.tween(this).to({volume:c},a,b.Easing.Linear.None,!0);d.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a>>0:(a<<24|c<<16|d<<8|e)>>>0},unpackPixel:function(a,c,d,e){return("undefined"==typeof c||null===c)&&(c=b.Color.createColor()),("undefined"==typeof d||null===d)&&(d=!1),("undefined"==typeof e||null===e)&&(e=!1),b.Device.LITTLE_ENDIAN?(c.a=(4278190080&a)>>>24,c.b=(16711680&a)>>>16,c.g=(65280&a)>>>8,c.r=255&a):(c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a),c.color=a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a/255+")",d&&b.Color.RGBtoHSL(c.r,c.g,c.b,c),e&&b.Color.RGBtoHSV(c.r,c.g,c.b,c),c},fromRGBA:function(a,c){return c||(c=b.Color.createColor()),c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a+")",c},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,1)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6}return e},HSLtoRGB:function(a,c,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=b.Color.createColor(d,d,d),0!==c){var f=.5>d?d*(1+c):d+c-d*c,g=2*d-f;e.r=b.Color.hueToColor(g,f,a+1/3),e.g=b.Color.hueToColor(g,f,a),e.b=b.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),b.Color.updateColor(e),e},RGBtoHSV:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,255)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6),e},HSVtoRGB:function(a,c,d,e){"undefined"==typeof e&&(e=b.Color.createColor(0,0,0,1,a,c,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-c),l=d*(1-j*c),m=d*(1-(1-j)*c);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),b.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,c,d,e,f,g,h,i){var j={r:a||0,g:c||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return j.color=b.Color.getColor(j.r,j.g,j.b),j.color32=b.Color.getColor32(j.a,j.r,j.g,j.b),b.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,c,d,e,f){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(c<<8)+d).toString(16).slice(1):"0x"+b.Color.componentToHex(e)+b.Color.componentToHex(a)+b.Color.componentToHex(c)+b.Color.componentToHex(d)},hexToRGB:function(a){var c=b.Color.hexToColor(a);return c?b.Color.getColor32(c.a,c.r,c.g,c.b):void 0},hexToColor:function(a,c){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);c?(c.r=e,c.g=f,c.b=g):c=b.Color.createColor(e,f,g)}return c},webToColor:function(a,c){c||(c=b.Color.createColor());var d=/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\)$/.exec(a);return d&&(c.r=parseInt(d[1],10),c.g=parseInt(d[2],10),c.b=parseInt(d[3],10)),c},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,c){"undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSVtoRGB(e/359,a,c));return d},HSLColorWheel:function(a,c){"undefined"==typeof a&&(a=.5),"undefined"==typeof c&&(c=.5);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSLtoRGB(e/359,a,c));return d},interpolateColor:function(a,c,d,e,f){"undefined"==typeof f&&(f=255);var g=b.Color.getRGB(a),h=b.Color.getRGB(c),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return b.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,c,d,e,f,g){var h=b.Color.getRGB(a),i=(c-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return b.Color.getColor(i,j,k)},interpolateRGB:function(a,c,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-c)*i/h+c,l=(g-d)*i/h+d;return b.Color.getColor(j,k,l)},getRandomColor:function(a,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof c&&(c=255),"undefined"==typeof d&&(d=255),c>255||a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var c=b.Color.getRGB(a);return"rgba("+c.r.toString()+","+c.g.toString()+","+c.b.toString()+","+(c.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=4,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&b.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new b.Physics.BOX2D(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else if(a===b.Physics.BOX2D&&null===this.box2d)this.box2d=new b.Physics.Box2D(this.game,this.config);else if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):c===b.Physics.BOX2D&&this.box2d&&this.box2d.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null}},b.Physics.prototype.constructor=b.Physics,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.Phaser=b):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return a.Phaser=b}()):a.Phaser=b}.call(this); \ No newline at end of file diff --git a/build/custom/pixi.js b/build/custom/pixi.js index e53e1cdba6..45be895519 100644 --- a/build/custom/pixi.js +++ b/build/custom/pixi.js @@ -123,6 +123,83 @@ PIXI.sayHello = function (type) PIXI.dontSayHello = true; }; +/** + * @author Adrien Brault + */ + +/** + * @class Polygon + * @constructor + * @param points* {Array|Array|Point...|Number...} This can be an array of Points that form the polygon, + * a flat array of numbers that will be interpreted as [x,y, x,y, ...], or the arguments passed can be + * all the points of the polygon e.g. `new PIXI.Polygon(new PIXI.Point(), new PIXI.Point(), ...)`, or the + * arguments passed can be flat x,y values e.g. `new PIXI.Polygon(x,y, x,y, x,y, ...)` where `x` and `y` are + * Numbers. + */ +PIXI.Polygon = function(points) +{ + //if points isn't an array, use arguments as the array + if(!(points instanceof Array))points = Array.prototype.slice.call(arguments); + + //if this is a flat array of numbers, convert it to points + if(points[0] instanceof PIXI.Point) + { + var p = []; + for(var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } + + this.closed = true; + this.points = points; +}; + +/** + * Creates a clone of this polygon + * + * @method clone + * @return {Polygon} a copy of the polygon + */ +PIXI.Polygon.prototype.clone = function() +{ + var points = this.points.slice(); + return new PIXI.Polygon(points); +}; + +/** + * Checks whether the x and y coordinates passed to this function are contained within this polygon + * + * @method contains + * @param x {Number} The X coordinate of the point to test + * @param y {Number} The Y coordinate of the point to test + * @return {Boolean} Whether the x/y coordinates are within this polygon + */ +PIXI.Polygon.prototype.contains = function(x, y) +{ + var inside = false; + + // use some raycasting to test hits + // https://github.com/substack/point-in-polygon/blob/master/index.js + var length = this.points.length / 2; + + for(var i = 0, j = length - 1; i < length; j = i++) + { + var xi = this.points[i * 2], yi = this.points[i * 2 + 1], + xj = this.points[j * 2], yj = this.points[j * 2 + 1], + intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); + + if(intersect) inside = !inside; + } + + return inside; +}; + +// constructor +PIXI.Polygon.prototype.constructor = PIXI.Polygon; + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ diff --git a/build/custom/pixi.min.js b/build/custom/pixi.min.js index 31c7af8ee6..59f48427a1 100644 --- a/build/custom/pixi.min.js +++ b/build/custom/pixi.min.js @@ -1,5 +1,5 @@ /* Pixi.js custom build for Phaser v2.1.3 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.0.0",b.blendModes={NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},b.scaleModes={DEFAULT:0,LINEAR:0,NEAREST:1},b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array):(b.Float32Array=Array,b.Uint16Array=Array),b.INTERACTION_FREQUENCY=30,b.AUTO_PREVENT_DEFAULT=!0,b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.dontSayHello=!1,b.defaultRenderOptions={view:null,transparent:!1,antialias:!1,preserveDrawingBuffer:!1,resolution:1,clearBeforeRender:!0},b.sayHello=function(a){if(!b.dontSayHello){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var c=["%c %c %c Pixi.js "+b.VERSION+" - "+a+" %c %c http://www.pixijs.com/ %c %c ♥%c♥%c♥ ","background: #ff66a5","background: #ff66a5","color: #ff66a5; background: #030307;","background: #ff66a5","background: #ffc3dc","background: #ff66a5","color: #ff2424; background: #fff","color: #ff2424; background: #fff","color: #ff2424; background: #fff"];console.log.apply(console,c)}else window.console&&console.log("Pixi.js "+b.VERSION+" - http://www.pixijs.com/");b.dontSayHello=!0}},b.Matrix=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0},b.Matrix.prototype.fromArray=function(a){this.a=a[0],this.b=a[1],this.c=a[3],this.d=a[4],this.tx=a[2],this.ty=a[5]},b.Matrix.prototype.toArray=function(a){this.array||(this.array=new b.Float32Array(9));var c=this.array;return a?(c[0]=this.a,c[1]=this.b,c[2]=0,c[3]=this.c,c[4]=this.d,c[5]=0,c[6]=this.tx,c[7]=this.ty,c[8]=1):(c[0]=this.a,c[1]=this.c,c[2]=this.tx,c[3]=this.b,c[4]=this.d,c[5]=this.ty,c[6]=0,c[7]=0,c[8]=1),c},b.Matrix.prototype.apply=function(a,c){return c=c||new b.Point,c.x=this.a*a.x+this.b*a.y+this.tx,c.y=this.c*a.x+this.d*a.y+this.ty,c},b.Matrix.prototype.applyInverse=function(a,c){c=c||new b.Point;var d=1/(this.a*this.d+this.c*-this.b);return c.x=this.d*d*a.x+-this.c*d*a.y+(this.ty*this.c-this.tx*this.d)*d,c.y=this.a*d*a.y+-this.b*d*a.x+(-this.ty*this.a+this.tx*this.b)*d,c},b.Matrix.prototype.translate=function(a,b){return this.tx+=a,this.ty+=b,this},b.Matrix.prototype.scale=function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},b.Matrix.prototype.rotate=function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},b.Matrix.prototype.append=function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},b.Matrix.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this},b.identityMatrix=new b.Matrix,b.DisplayObject=function(){this.position=new b.Point,this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.buttonMode=!1,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this._interactive=!1,this.defaultCursor="pointer",this.worldTransform=new b.Matrix,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,Object.defineProperty(b.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var b=[],c=0;c=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;ga;a++)this.children[a].updateTransform()},b.DisplayObjectContainer.prototype.getBounds=function(){if(0===this.children.length)return b.EmptyRectangle;for(var a,c,d,e=1/0,f=1/0,g=-1/0,h=-1/0,i=!1,j=0,k=this.children.length;k>j;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a,this._interactive&&(this.stage.dirty=!0);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d.setStageReference(a)}},b.DisplayObjectContainer.prototype.removeStageReference=function(){for(var a=0,b=this.children.length;b>a;a++){var c=this.children[a];c.removeStageReference()}this._interactive&&(this.stage.dirty=!0),this.stage=null},b.DisplayObjectContainer.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);var b,c;if(this._mask||this._filters){for(this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);a.spriteBatch.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),a.spriteBatch.start()}else for(b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.DisplayObjectContainer.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);this._mask&&a.maskManager.pushMask(this._mask,a);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d._renderCanvas(a)}this._mask&&a.maskManager.popMask(a)}},b.Sprite=function(a){b.DisplayObjectContainer.call(this),this.anchor=new b.Point,this.texture=a,this._width=0,this._height=0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL,this.shader=null,a.baseTexture.hasLoaded?this.onTextureUpdate():(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.on("update",this.onTextureUpdateBind)),this.renderable=!0},b.Sprite.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Sprite.prototype.constructor=b.Sprite,Object.defineProperty(b.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(b.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),b.Sprite.prototype.setTexture=function(a){this.texture=a,this.cachedTint=16777215},b.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height)},b.Sprite.prototype.getBounds=function(a){var b=this.texture.frame.width,c=this.texture.frame.height,d=b*(1-this.anchor.x),e=b*-this.anchor.x,f=c*(1-this.anchor.y),g=c*-this.anchor.y,h=a||this.worldTransform,i=h.a,j=h.c,k=h.b,l=h.d,m=h.tx,n=h.ty,o=i*e+k*g+m,p=l*g+j*e+n,q=i*d+k*g+m,r=l*g+j*d+n,s=i*d+k*f+m,t=l*f+j*d+n,u=i*e+k*f+m,v=l*f+j*e+n,w=-1/0,x=-1/0,y=1/0,z=1/0;y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,z=z>p?p:z,z=z>r?r:z,z=z>t?t:z,z=z>v?v:z,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,x=p>x?p:x,x=r>x?r:x,x=t>x?t:x,x=v>x?v:x;var A=this._bounds;return A.x=y,A.width=w-y,A.y=z,A.height=x-z,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){var b,c;if(this._mask||this._filters){var d=a.spriteBatch;for(this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);d.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),d.start()}else for(a.spriteBatch.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.Sprite.prototype._renderCanvas=function(a){if(!(this.visible===!1||0===this.alpha||this.texture.crop.width<=0||this.texture.crop.height<=0)){if(this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,a.context.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a),this.texture.valid){var c=this.texture.baseTexture.resolution/a.resolution;a.context.globalAlpha=this.worldAlpha,a.roundPixels?a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution|0,this.worldTransform.ty*a.resolution|0):a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution,this.worldTransform.ty*a.resolution),a.smoothProperty&&a.scaleMode!==this.texture.baseTexture.scaleMode&&(a.scaleMode=this.texture.baseTexture.scaleMode,a.context[a.smoothProperty]=a.scaleMode===b.scaleModes.LINEAR);var d=this.texture.trim?this.texture.trim.x-this.anchor.x*this.texture.trim.width:this.anchor.x*-this.texture.frame.width,e=this.texture.trim?this.texture.trim.y-this.anchor.y*this.texture.trim.height:this.anchor.y*-this.texture.frame.height;16777215!==this.tint?(this.cachedTint!==this.tint&&(this.cachedTint=this.tint,this.tintedTexture=b.CanvasTinter.getTintedTexture(this,this.tint)),a.context.drawImage(this.tintedTexture,0,0,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)):a.context.drawImage(this.texture.baseTexture.source,this.texture.crop.x,this.texture.crop.y,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)}for(var f=0,g=this.children.length;g>f;f++)this.children[f]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},b.Sprite.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache'+this);return new b.Sprite(c)},b.Sprite.fromImage=function(a,c,d){var e=b.Texture.fromImage(a,c,d);return new b.Sprite(e)},b.SpriteBatch=function(a){b.DisplayObjectContainer.call(this),this.textureThing=a,this.ready=!1},b.SpriteBatch.prototype=Object.create(b.DisplayObjectContainer.prototype),b.SpriteBatch.prototype.constructor=b.SpriteBatch,b.SpriteBatch.prototype.initWebGL=function(a){this.fastSpriteBatch=new b.WebGLFastSpriteBatch(a),this.ready=!0},b.SpriteBatch.prototype.updateTransform=function(){b.DisplayObject.prototype.updateTransform.call(this)},b.SpriteBatch.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||!this.children.length||(this.ready||this.initWebGL(a.gl),a.spriteBatch.stop(),a.shaderManager.setShader(a.shaderManager.fastShader),this.fastSpriteBatch.begin(this,a),this.fastSpriteBatch.render(this),a.spriteBatch.start())},b.SpriteBatch.prototype._renderCanvas=function(a){if(this.visible&&!(this.alpha<=0)&&this.children.length){var c=a.context;c.globalAlpha=this.worldAlpha,b.DisplayObject.prototype.updateTransform.call(this);for(var d=this.worldTransform,e=!0,f=0;fi;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(c.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}c.descent=i-g,c.fontSize=c.ascent+c.descent,b.Text.fontPropertiesCache[a]=c}return c},b.Text.prototype.wordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g],e=this.style.wordWrapWidth-h):(e-=i,b+=" "+f[g])}d=2?parseInt(c[c.length-2],10):b.BitmapText.fonts[this.fontName].size,this.dirty=!0,this.tint=a.tint},b.BitmapText.prototype.updateText=function(){for(var a=b.BitmapText.fonts[this.fontName],c=new b.Point,d=null,e=[],f=0,g=[],h=0,i=this.fontSize/a.size,j=0;j=j;j++){var n=0;"right"===this.style.align?n=f-g[j]:"center"===this.style.align&&(n=(f-g[j])/2),m.push(n)}var o=this.children.length,p=e.length,q=this.tint||16777215;for(j=0;p>j;j++){var r=o>j?this.children[j]:this._pool.pop();r?r.setTexture(e[j].texture):r=new b.Sprite(e[j].texture),r.position.x=(e[j].position.x+m[e[j].line])*i,r.position.y=e[j].position.y*i,r.scale.x=r.scale.y=i,r.tint=q,r.parent||this.addChild(r)}for(;this.children.length>p;){var s=this.getChildAt(this.children.length-1);this._pool.push(s),this.removeChild(s)}this.textWidth=f*i,this.textHeight=(c.y+a.lineHeight)*i},b.BitmapText.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),b.DisplayObjectContainer.prototype.updateTransform.call(this)},b.BitmapText.fonts={},b.Stage=function(a){b.DisplayObjectContainer.call(this),this.worldTransform=new b.Matrix,this.interactive=!0,this.interactionManager=new b.InteractionManager(this),this.dirty=!0,this.stage=this,this.stage.hitArea=new b.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a)},b.Stage.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},b.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var a=0,b=this.children.length;b>a;a++)this.children[a].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},b.Stage.prototype.setBackgroundColor=function(a){this.backgroundColor=a||0,this.backgroundColorSplit=b.hex2rgb(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},b.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},function(a){for(var b=0,c=["ms","moz","webkit","o"],d=0;d>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){return function(a){function b(){for(var d=arguments.length,f=new Array(d);d--;)f[d]=arguments[d];return f=e.concat(f),c.apply(this instanceof b?this:a,f)}var c=this,d=arguments.length-1,e=[];if(d>0)for(e.length=d;d--;)e[d]=arguments[d+1];if("function"!=typeof c)throw new TypeError;return b.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(c.prototype),b}}()),b.AjaxRequest=function(){var a=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new window.XMLHttpRequest:!1;for(var b=0;b0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.EventTarget={call:function(a){a&&(a=a.prototype||a,b.EventTarget.mixin(a))},mixin:function(a){a.listeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?this._listeners[a].slice():[]},a.emit=a.dispatchEvent=function(a,c){if(this._listeners=this._listeners||{},"object"==typeof a&&(c=a,a=a.type),c&&c.__isEventObject===!0||(c=new b.Event(this,a,c)),this._listeners&&this._listeners[a]){var d,e=this._listeners[a],f=e.length,g=e[0];for(d=0;f>d;g=e[++d])if(g.call(this,c),c.stoppedImmediate)return this;if(c.stopped)return this}return this.parent&&this.parent.emit&&this.parent.emit.call(this.parent,a,c),this},a.on=a.addEventListener=function(a,b){return this._listeners=this._listeners||{},(this._listeners[a]=this._listeners[a]||[]).push(b),this},a.once=function(a,b){function c(){b.apply(d.off(a,c),arguments)}this._listeners=this._listeners||{};var d=this;return c._originalHandler=b,this.on(a,c)},a.off=a.removeEventListener=function(a,b){if(this._listeners=this._listeners||{},!this._listeners[a])return this;for(var c=this._listeners[a],d=b?c.length:0;d-->0;)(c[d]===b||c[d]._originalHandler===b)&&c.splice(d,1);return 0===c.length&&delete this._listeners[a],this},a.removeAllListeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?(delete this._listeners[a],this):this}}},b.Event=function(a,b,c){this.__isEventObject=!0,this.stopped=!1,this.stoppedImmediate=!1,this.target=a,this.type=b,this.data=c,this.content=c,this.timeStamp=Date.now()},b.Event.prototype.stopPropagation=function(){this.stopped=!0},b.Event.prototype.stopImmediatePropagation=function(){this.stoppedImmediate=!0},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return window.console.log("PIXI Warning: shape too complex to fill"),[];for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.initDefaultShaders=function(){},b.CompileVertexShader=function(a,c){return b._CompileShader(a,c,a.VERTEX_SHADER)},b.CompileFragmentShader=function(a,c){return b._CompileShader(a,c,a.FRAGMENT_SHADER)},b._CompileShader=function(a,b,c){var d=b.join("\n"),e=a.createShader(c); -return a.shaderSource(e,d),a.compileShader(e),a.getShaderParameter(e,a.COMPILE_STATUS)?e:(window.console.log(a.getShaderInfoLog(e)),null)},b.compileProgram=function(a,c,d){var e=b.CompileFragmentShader(a,d),f=b.CompileVertexShader(a,c),g=a.createProgram();return a.attachShader(g,f),a.attachShader(g,e),a.linkProgram(g),a.getProgramParameter(g,a.LINK_STATUS)||window.console.log("Could not initialise shaders"),g},b.PixiShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.textureCount=0,this.firstRun=!0,this.dirty=!0,this.attributes=[],this.init()},b.PixiShader.prototype.constructor=b.PixiShader,b.PixiShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc||b.PixiShader.defaultVertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute];for(var d in this.uniforms)this.uniforms[d].uniformLocation=a.getUniformLocation(c,d);this.initUniforms(),this.program=c},b.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a,b=this.gl;for(var c in this.uniforms){a=this.uniforms[c];var d=a.type;"sampler2D"===d?(a._init=!1,null!==a.value&&this.initSampler2D(a)):"mat2"===d||"mat3"===d||"mat4"===d?(a.glMatrix=!0,a.glValueLength=1,"mat2"===d?a.glFunc=b.uniformMatrix2fv:"mat3"===d?a.glFunc=b.uniformMatrix3fv:"mat4"===d&&(a.glFunc=b.uniformMatrix4fv)):(a.glFunc=b["uniform"+d],a.glValueLength="2f"===d||"2i"===d?2:"3f"===d||"3i"===d?3:"4f"===d||"4i"===d?4:1)}},b.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){var b=this.gl;if(b.activeTexture(b["TEXTURE"+this.textureCount]),b.bindTexture(b.TEXTURE_2D,a.value.baseTexture._glTextures[b.id]),a.textureData){var c=a.textureData,d=c.magFilter?c.magFilter:b.LINEAR,e=c.minFilter?c.minFilter:b.LINEAR,f=c.wrapS?c.wrapS:b.CLAMP_TO_EDGE,g=c.wrapT?c.wrapT:b.CLAMP_TO_EDGE,h=c.luminance?b.LUMINANCE:b.RGBA;if(c.repeat&&(f=b.REPEAT,g=b.REPEAT),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,!!c.flipY),c.width){var i=c.width?c.width:512,j=c.height?c.height:2,k=c.border?c.border:0;b.texImage2D(b.TEXTURE_2D,0,h,i,j,k,h,b.UNSIGNED_BYTE,null)}else b.texImage2D(b.TEXTURE_2D,0,h,b.RGBA,b.UNSIGNED_BYTE,a.value.baseTexture.source);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,d),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,f),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,g)}b.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},b.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a,c=this.gl;for(var d in this.uniforms)a=this.uniforms[d],1===a.glValueLength?a.glMatrix===!0?a.glFunc.call(c,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c,a.uniformLocation,a.value):2===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y):3===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z):4===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"===a.type&&(a._init?(c.activeTexture(c["TEXTURE"+this.textureCount]),a.value.baseTexture._dirty[c.id]?b.defaultRenderer.updateTexture(a.value.baseTexture):c.bindTexture(c.TEXTURE_2D,a.value.baseTexture._glTextures[c.id]),c.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},b.PixiShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec4 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"],b.PixiFastShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"],this.textureCount=0,this.init()},b.PixiFastShader.prototype.constructor=b.PixiFastShader,b.PixiFastShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.uMatrix=a.getUniformLocation(c,"uMatrix"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aPositionCoord=a.getAttribLocation(c,"aPositionCoord"),this.aScale=a.getAttribLocation(c,"aScale"),this.aRotation=a.getAttribLocation(c,"aRotation"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute],this.program=c},b.PixiFastShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.StripShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;","}"],this.init()},b.StripShader.prototype.constructor=b.StripShader,b.StripShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.attributes=[this.aVertexPosition,this.aTextureCoord],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.StripShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.PrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor * vec4(tint * alpha, alpha);","}"],this.init()},b.PrimitiveShader.prototype.constructor=b.PrimitiveShader,b.PrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.ComplexPrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform vec3 tint;","uniform float alpha;","uniform vec3 color;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = vec4(color * alpha * tint, alpha);","}"],this.init()},b.ComplexPrimitiveShader.prototype.constructor=b.ComplexPrimitiveShader,b.ComplexPrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.color=a.getUniformLocation(c,"color"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.ComplexPrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.WebGLGraphics=function(){},b.WebGLGraphics.renderGraphics=function(a,c){var d,e=c.gl,f=c.projection,g=c.offset,h=c.shaderManager.primitiveShader;a.dirty&&b.WebGLGraphics.updateGraphics(a,e);for(var i=a._webGL[e.id],j=0;j=6&&(h.points.length>10?(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g)):(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildPoly(h,g))),h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))):(g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g)),d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d),n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i)}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.lastIndex=0,this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[],this.lastIndex=0},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},b.glContexts=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)"undefined"==typeof d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.sayHello("webGL"),b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this.contextLostBound=this.handleContextLost.bind(this),this.contextRestoredBound=this.handleContextRestored.bind(this),this.view.addEventListener("webglcontextlost",this.contextLostBound,!1),this.view.addEventListener("webglcontextrestored",this.contextRestoredBound,!1),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(a.interactive&&a.interactionManager.removeEvents(),this.__stage=a),a.updateTransform();var b=this.gl;a._interactive?a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)):a._interactiveEventsAdded&&(a._interactiveEventsAdded=!1,a.interactionManager.setTarget(this)),b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.handleContextLost=function(a){a.preventDefault(),this.contextLost=!0},b.WebGLRenderer.prototype.handleContextRestored=function(){this.initContext();for(var a in b.TextureCache){var c=b.TextureCache[a].baseTexture;c._glTextures=[]}this.contextLost=!1},b.WebGLRenderer.prototype.destroy=function(){this.view.off("webglcontextlost",this.contextLostBound),this.view.off("webglcontextrestored",this.contextRestoredBound),b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a){var b=a.texture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=b.baseTexture);var c=b._uvs;if(c){var d,e,f,g,h=a.worldAlpha,i=a.tint,j=this.vertices,k=a.anchor.x,l=a.anchor.y;if(b.trim){var m=b.trim;e=m.x-k*m.width,d=e+b.crop.width,g=m.y-l*m.height,f=g+b.crop.height}else d=b.frame.width*(1-k),e=b.frame.width*-k,f=b.frame.height*(1-l),g=b.frame.height*-l;var n=4*this.currentBatchSize*this.vertSize,o=b.baseTexture.resolution,p=a.worldTransform,q=p.a/o,r=p.b/o,s=p.c/o,t=p.d/o,u=p.tx,v=p.ty;j[n++]=q*e+s*g+u,j[n++]=t*g+r*e+v,j[n++]=c.x0,j[n++]=c.y0,j[n++]=h,j[n++]=i,j[n++]=q*d+s*g+u,j[n++]=t*g+r*d+v,j[n++]=c.x1,j[n++]=c.y1,j[n++]=h,j[n++]=i,j[n++]=q*d+s*f+u,j[n++]=t*f+r*d+v,j[n++]=c.x2,j[n++]=c.y2,j[n++]=h,j[n++]=i,j[n++]=q*e+s*f+u,j[n++]=t*f+r*e+v,j[n++]=c.x3,j[n++]=c.y3,j[n++]=h,j[n++]=i,this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs;a.tilePosition.x%=c.baseTexture.width*a.tileScaleOffset.x,a.tilePosition.y%=c.baseTexture.height*a.tileScaleOffset.y;var e=a.tilePosition.x/(c.baseTexture.width*a.tileScaleOffset.x),f=a.tilePosition.y/(c.baseTexture.height*a.tileScaleOffset.y),g=a.width/c.baseTexture.width/(a.tileScale.x*a.tileScaleOffset.x),h=a.height/c.baseTexture.height/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-e,d.y0=0-f,d.x1=1*g-e,d.y1=0-f,d.x2=1*g-e,d.y2=1*h-f,d.x3=0-e,d.y3=1*h-f;var i=a.worldAlpha,j=a.tint,k=this.vertices,l=a.width,m=a.height,n=a.anchor.x,o=a.anchor.y,p=l*(1-n),q=l*-n,r=m*(1-o),s=m*-o,t=4*this.currentBatchSize*this.vertSize,u=c.baseTexture.resolution,v=a.worldTransform,w=v.a/u,x=v.b/u,y=v.c/u,z=v.d/u,A=v.tx,B=v.ty;k[t++]=w*q+y*s+A,k[t++]=z*s+x*q+B,k[t++]=d.x0,k[t++]=d.y0,k[t++]=i,k[t++]=j,k[t++]=w*p+y*s+A,k[t++]=z*s+x*p+B,k[t++]=d.x1,k[t++]=d.y1,k[t++]=i,k[t++]=j,k[t++]=w*p+y*r+A,k[t++]=z*r+x*p+B,k[t++]=d.x2,k[t++]=d.y2,k[t++]=i,k[t++]=j,k[t++]=w*q+y*r+A,k[t++]=z*r+x*q+B,k[t++]=d.x3,k[t++]=d.y3,k[t++]=i,k[t++]=j,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,2,c.FLOAT,!1,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var a=4*this.size*this.vertSize,b=6*this.maxSize;this.vertices=new Float32Array(a),this.indices=new Uint16Array(b),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var c=0,d=0;b>c;c+=6,d+=4)this.indices[c+0]=d+0,this.indices[c+1]=d+1,this.indices[c+2]=d+2,this.indices[c+3]=d+0,this.indices[c+4]=d+2,this.indices[c+5]=d+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(g.fillColor||0===g.fillColor)&&(c.globalAlpha=g.fillAlpha*d,c.fillStyle=e="#"+("00000"+(0|g.fillColor).toString(16)).substr(-6),c.fill()),g.lineWidth&&(c.globalAlpha=g.lineAlpha*d,c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){d>1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){c.beginPath();var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iA?A:z,c.beginPath(),c.moveTo(v,w+z),c.lineTo(v,w+y-z),c.quadraticCurveTo(v,w+y,v+z,w+y),c.lineTo(v+x-z,w+y),c.quadraticCurveTo(v+x,w+y,v+x,w+y-z),c.lineTo(v+x,w+z),c.quadraticCurveTo(v+x,w,v+x-z,w),c.lineTo(v+z,w),c.quadraticCurveTo(v,w,v,w+z),c.closePath()}}}},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.padding=0},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var b=a.gl,c=a.projection,d=a.offset,e=a.shaderManager.stripShader;b.blendFunc(b.ONE,b.ONE_MINUS_SRC_ALPHA),b.uniformMatrix3fv(e.translationMatrix,!1,this.worldTransform.toArray(!0)),b.uniform2f(e.projectionVector,c.x,-c.y),b.uniform2f(e.offsetVector,-d.x,-d.y),b.uniform1f(e.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.STATIC_DRAW),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)):(b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferSubData(b.ARRAY_BUFFER,0,this.verticies),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),b.drawElements(b.TRIANGLE_STRIP,this.indices.length,b.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var b=a.context,c=this.worldTransform;a.roundPixels?b.setTransform(c.a,c.b,c.c,c.d,0|c.tx,0|c.ty):b.setTransform(c.a,c.b,c.c,c.d,c.tx,c.ty);var d=this,e=d.verticies,f=d.uvs,g=e.length/2;this.count++;for(var h=0;g-2>h;h++){var i=2*h,j=e[i],k=e[i+2],l=e[i+4],m=e[i+1],n=e[i+3],o=e[i+5];if(this.padding>0){var p=(j+k+l)/3,q=(m+n+o)/3,r=j-p,s=m-q,t=Math.sqrt(r*r+s*s);j=p+r/t*(t+3),m=q+s/t*(t+3),r=k-p,s=n-q,t=Math.sqrt(r*r+s*s),k=p+r/t*(t+3),n=q+s/t*(t+3),r=l-p,s=o-q,t=Math.sqrt(r*r+s*s),l=p+r/t*(t+3),o=q+s/t*(t+3) -}var u=f[i]*d.texture.width,v=f[i+2]*d.texture.width,w=f[i+4]*d.texture.width,x=f[i+1]*d.texture.height,y=f[i+3]*d.texture.height,z=f[i+5]*d.texture.height;b.save(),b.beginPath(),b.moveTo(j,m),b.lineTo(k,n),b.lineTo(l,o),b.closePath(),b.clip();var A=u*y+x*w+v*z-y*w-x*v-u*z,B=j*y+x*l+k*z-y*l-x*k-j*z,C=u*k+j*w+v*l-k*w-j*v-u*l,D=u*y*l+x*k*w+j*v*z-j*y*w-x*v*l-u*k*z,E=m*y+x*o+n*z-y*o-x*n-m*z,F=u*n+m*w+v*o-n*w-m*v-u*o,G=u*y*o+x*n*w+m*v*z-m*y*w-x*v*o-u*n*z;b.transform(B/A,E/A,C/A,F/A,D/A,G/A),b.drawImage(d.texture.baseTexture.source,0,0),b.restore()}},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.verticies=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.verticies,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||100,this._height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this._mask,a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d,e,f=this.worldTransform,g=a.resolution;if(c.setTransform(f.a*g,f.c*g,f.b*g,f.d*g,f.tx*g,f.ty*g),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]);var h=this.tilePosition,i=this.tileScale;for(h.x%=this.tilingTexture.baseTexture.width,h.y%=this.tilingTexture.baseTexture.height,c.scale(i.x,i.y),c.translate(h.x+this.anchor.x*-this._width,h.y+this.anchor.y*-this._height),c.fillStyle=this.__tilePattern,c.fillRect(-h.x,-h.y,this._width/i.x,this._height/i.y),c.scale(1/i.x,1/i.y),c.translate(-h.x+this.anchor.x*this._width,-h.y+this.anchor.y*this._height),this._mask&&a.maskManager.popMask(a.context),d=0,e=this.children.length;e>d;d++)this.children[d]._renderCanvas(a)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.onTextureUpdate=function(){},b.TilingSprite.prototype.generateTilingTexture=function(a){if(this.texture.baseTexture.hasLoaded){var c,d,e=this.originalTexture||this.texture,f=e.frame,g=f.width!==e.baseTexture.width||f.height!==e.baseTexture.height,h=!1;if(a?(c=b.getNextPowerOfTwo(f.width),d=b.getNextPowerOfTwo(f.height),(f.width!==c||f.height!==d)&&(h=!0)):g&&(c=f.width,d=f.height,h=!0),h){var i;this.tilingTexture&&this.tilingTexture.isTiling?(i=this.tilingTexture.canvasBuffer,i.resize(c,d),this.tilingTexture.baseTexture.width=c,this.tilingTexture.baseTexture.height=d,this.tilingTexture.needsUpdate=!0):(i=new b.CanvasBuffer(c,d),this.tilingTexture=b.Texture.fromCanvas(i.canvas),this.tilingTexture.canvasBuffer=i,this.tilingTexture.isTiling=!0),i.context.drawImage(e.baseTexture.source,e.crop.x,e.crop.y,e.crop.width,e.crop.height,0,0,c,d),this.tileScaleOffset.x=f.width/c,this.tileScaleOffset.y=f.height/d}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=e;this.refreshTexture=!1,this.originalTexture=this.texture,this.texture=this.tilingTexture,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this._dirty=[!0,!0,!0,!0],a){if((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height)this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty();else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.naturalWidth||d.source.width,d.height=d.source.naturalHeight||d.source.height,d.dirty(),d.dispatchEvent({type:"loaded",content:d})},this.source.onerror=function(){d.dispatchEvent({type:"error",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.EventTarget.mixin(b.BaseTexture.prototype),b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,this.source.src=""):this.source&&this.source._pixiId&&delete b.BaseTextureCache[this.source._pixiId],this.source=null;for(var a=this._glTextures.length-1;a>=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;athis.baseTexture.width||a.y+a.height>this.baseTexture.height))throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width,this.height)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width*this.resolution,this.height*this.resolution,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=this.frame.width=this.crop.width=a,this.height=this.frame.height=this.crop.height=c,d&&(this.baseTexture.width=this.width,this.baseTexture.height=this.height),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width*this.resolution,this.height*this.resolution))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1),a.worldAlpha=1;for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();var h=this.renderer.gl;h.viewport(0,0,this.width*this.resolution,this.height*this.resolution),h.bindFramebuffer(h.FRAMEBUFFER,this.textureBuffer.frameBuffer),c&&this.textureBuffer.clear(),this.renderer.spriteBatch.dirty=!0,this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),this.renderer.spriteBatch.dirty=!0}},b.RenderTexture.prototype.renderCanvas=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),b&&d.append(b);for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();c&&this.textureBuffer.clear();var h=this.textureBuffer.context,i=this.renderer.resolution;this.renderer.resolution=this.resolution,this.renderer.renderDisplayObject(a,h),this.renderer.resolution=i}},b.RenderTexture.prototype.getImage=function(){var a=new Image;return a.src=this.getBase64(),a},b.RenderTexture.prototype.getBase64=function(){return this.getCanvas().toDataURL()},b.RenderTexture.prototype.getCanvas=function(){if(this.renderer.type===b.WEBGL_RENDERER){var a=this.renderer.gl,c=this.textureBuffer.width,d=this.textureBuffer.height,e=new Uint8Array(4*c*d);a.bindFramebuffer(a.FRAMEBUFFER,this.textureBuffer.frameBuffer),a.readPixels(0,0,c,d,a.RGBA,a.UNSIGNED_BYTE,e),a.bindFramebuffer(a.FRAMEBUFFER,null);for(var f=new b.CanvasBuffer(c,d),g=f.context.getImageData(0,0,c,d),h=g.data,i=0;ia;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this); \ No newline at end of file +(function(){var a=this,b=b||{};b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.0.0",b.blendModes={NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},b.scaleModes={DEFAULT:0,LINEAR:0,NEAREST:1},b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array):(b.Float32Array=Array,b.Uint16Array=Array),b.INTERACTION_FREQUENCY=30,b.AUTO_PREVENT_DEFAULT=!0,b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.dontSayHello=!1,b.defaultRenderOptions={view:null,transparent:!1,antialias:!1,preserveDrawingBuffer:!1,resolution:1,clearBeforeRender:!0},b.sayHello=function(a){if(!b.dontSayHello){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var c=["%c %c %c Pixi.js "+b.VERSION+" - "+a+" %c %c http://www.pixijs.com/ %c %c ♥%c♥%c♥ ","background: #ff66a5","background: #ff66a5","color: #ff66a5; background: #030307;","background: #ff66a5","background: #ffc3dc","background: #ff66a5","color: #ff2424; background: #fff","color: #ff2424; background: #fff","color: #ff2424; background: #fff"];console.log.apply(console,c)}else window.console&&console.log("Pixi.js "+b.VERSION+" - http://www.pixijs.com/");b.dontSayHello=!0}},b.Polygon=function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}this.closed=!0,this.points=a},b.Polygon.prototype.clone=function(){var a=this.points.slice();return new b.Polygon(a)},b.Polygon.prototype.contains=function(a,b){for(var c=!1,d=this.points.length/2,e=0,f=d-1;d>e;f=e++){var g=this.points[2*e],h=this.points[2*e+1],i=this.points[2*f],j=this.points[2*f+1],k=h>b!=j>b&&(i-g)*(b-h)/(j-h)+g>a;k&&(c=!c)}return c},b.Polygon.prototype.constructor=b.Polygon,b.Matrix=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0},b.Matrix.prototype.fromArray=function(a){this.a=a[0],this.b=a[1],this.c=a[3],this.d=a[4],this.tx=a[2],this.ty=a[5]},b.Matrix.prototype.toArray=function(a){this.array||(this.array=new b.Float32Array(9));var c=this.array;return a?(c[0]=this.a,c[1]=this.b,c[2]=0,c[3]=this.c,c[4]=this.d,c[5]=0,c[6]=this.tx,c[7]=this.ty,c[8]=1):(c[0]=this.a,c[1]=this.c,c[2]=this.tx,c[3]=this.b,c[4]=this.d,c[5]=this.ty,c[6]=0,c[7]=0,c[8]=1),c},b.Matrix.prototype.apply=function(a,c){return c=c||new b.Point,c.x=this.a*a.x+this.b*a.y+this.tx,c.y=this.c*a.x+this.d*a.y+this.ty,c},b.Matrix.prototype.applyInverse=function(a,c){c=c||new b.Point;var d=1/(this.a*this.d+this.c*-this.b);return c.x=this.d*d*a.x+-this.c*d*a.y+(this.ty*this.c-this.tx*this.d)*d,c.y=this.a*d*a.y+-this.b*d*a.x+(-this.ty*this.a+this.tx*this.b)*d,c},b.Matrix.prototype.translate=function(a,b){return this.tx+=a,this.ty+=b,this},b.Matrix.prototype.scale=function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},b.Matrix.prototype.rotate=function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},b.Matrix.prototype.append=function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},b.Matrix.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this},b.identityMatrix=new b.Matrix,b.DisplayObject=function(){this.position=new b.Point,this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.buttonMode=!1,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this._interactive=!1,this.defaultCursor="pointer",this.worldTransform=new b.Matrix,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,Object.defineProperty(b.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var b=[],c=0;c=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;ga;a++)this.children[a].updateTransform()},b.DisplayObjectContainer.prototype.getBounds=function(){if(0===this.children.length)return b.EmptyRectangle;for(var a,c,d,e=1/0,f=1/0,g=-1/0,h=-1/0,i=!1,j=0,k=this.children.length;k>j;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a,this._interactive&&(this.stage.dirty=!0);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d.setStageReference(a)}},b.DisplayObjectContainer.prototype.removeStageReference=function(){for(var a=0,b=this.children.length;b>a;a++){var c=this.children[a];c.removeStageReference()}this._interactive&&(this.stage.dirty=!0),this.stage=null},b.DisplayObjectContainer.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);var b,c;if(this._mask||this._filters){for(this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);a.spriteBatch.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),a.spriteBatch.start()}else for(b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.DisplayObjectContainer.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);this._mask&&a.maskManager.pushMask(this._mask,a);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d._renderCanvas(a)}this._mask&&a.maskManager.popMask(a)}},b.Sprite=function(a){b.DisplayObjectContainer.call(this),this.anchor=new b.Point,this.texture=a,this._width=0,this._height=0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL,this.shader=null,a.baseTexture.hasLoaded?this.onTextureUpdate():(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.on("update",this.onTextureUpdateBind)),this.renderable=!0},b.Sprite.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Sprite.prototype.constructor=b.Sprite,Object.defineProperty(b.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(b.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),b.Sprite.prototype.setTexture=function(a){this.texture=a,this.cachedTint=16777215},b.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height)},b.Sprite.prototype.getBounds=function(a){var b=this.texture.frame.width,c=this.texture.frame.height,d=b*(1-this.anchor.x),e=b*-this.anchor.x,f=c*(1-this.anchor.y),g=c*-this.anchor.y,h=a||this.worldTransform,i=h.a,j=h.c,k=h.b,l=h.d,m=h.tx,n=h.ty,o=i*e+k*g+m,p=l*g+j*e+n,q=i*d+k*g+m,r=l*g+j*d+n,s=i*d+k*f+m,t=l*f+j*d+n,u=i*e+k*f+m,v=l*f+j*e+n,w=-1/0,x=-1/0,y=1/0,z=1/0;y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,z=z>p?p:z,z=z>r?r:z,z=z>t?t:z,z=z>v?v:z,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,x=p>x?p:x,x=r>x?r:x,x=t>x?t:x,x=v>x?v:x;var A=this._bounds;return A.x=y,A.width=w-y,A.y=z,A.height=x-z,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){var b,c;if(this._mask||this._filters){var d=a.spriteBatch;for(this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);d.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),d.start()}else for(a.spriteBatch.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.Sprite.prototype._renderCanvas=function(a){if(!(this.visible===!1||0===this.alpha||this.texture.crop.width<=0||this.texture.crop.height<=0)){if(this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,a.context.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a),this.texture.valid){var c=this.texture.baseTexture.resolution/a.resolution;a.context.globalAlpha=this.worldAlpha,a.roundPixels?a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution|0,this.worldTransform.ty*a.resolution|0):a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution,this.worldTransform.ty*a.resolution),a.smoothProperty&&a.scaleMode!==this.texture.baseTexture.scaleMode&&(a.scaleMode=this.texture.baseTexture.scaleMode,a.context[a.smoothProperty]=a.scaleMode===b.scaleModes.LINEAR);var d=this.texture.trim?this.texture.trim.x-this.anchor.x*this.texture.trim.width:this.anchor.x*-this.texture.frame.width,e=this.texture.trim?this.texture.trim.y-this.anchor.y*this.texture.trim.height:this.anchor.y*-this.texture.frame.height;16777215!==this.tint?(this.cachedTint!==this.tint&&(this.cachedTint=this.tint,this.tintedTexture=b.CanvasTinter.getTintedTexture(this,this.tint)),a.context.drawImage(this.tintedTexture,0,0,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)):a.context.drawImage(this.texture.baseTexture.source,this.texture.crop.x,this.texture.crop.y,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)}for(var f=0,g=this.children.length;g>f;f++)this.children[f]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},b.Sprite.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache'+this);return new b.Sprite(c)},b.Sprite.fromImage=function(a,c,d){var e=b.Texture.fromImage(a,c,d);return new b.Sprite(e)},b.SpriteBatch=function(a){b.DisplayObjectContainer.call(this),this.textureThing=a,this.ready=!1},b.SpriteBatch.prototype=Object.create(b.DisplayObjectContainer.prototype),b.SpriteBatch.prototype.constructor=b.SpriteBatch,b.SpriteBatch.prototype.initWebGL=function(a){this.fastSpriteBatch=new b.WebGLFastSpriteBatch(a),this.ready=!0},b.SpriteBatch.prototype.updateTransform=function(){b.DisplayObject.prototype.updateTransform.call(this)},b.SpriteBatch.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||!this.children.length||(this.ready||this.initWebGL(a.gl),a.spriteBatch.stop(),a.shaderManager.setShader(a.shaderManager.fastShader),this.fastSpriteBatch.begin(this,a),this.fastSpriteBatch.render(this),a.spriteBatch.start())},b.SpriteBatch.prototype._renderCanvas=function(a){if(this.visible&&!(this.alpha<=0)&&this.children.length){var c=a.context;c.globalAlpha=this.worldAlpha,b.DisplayObject.prototype.updateTransform.call(this);for(var d=this.worldTransform,e=!0,f=0;fi;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(c.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}c.descent=i-g,c.fontSize=c.ascent+c.descent,b.Text.fontPropertiesCache[a]=c}return c},b.Text.prototype.wordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g],e=this.style.wordWrapWidth-h):(e-=i,b+=" "+f[g])}d=2?parseInt(c[c.length-2],10):b.BitmapText.fonts[this.fontName].size,this.dirty=!0,this.tint=a.tint},b.BitmapText.prototype.updateText=function(){for(var a=b.BitmapText.fonts[this.fontName],c=new b.Point,d=null,e=[],f=0,g=[],h=0,i=this.fontSize/a.size,j=0;j=j;j++){var n=0;"right"===this.style.align?n=f-g[j]:"center"===this.style.align&&(n=(f-g[j])/2),m.push(n)}var o=this.children.length,p=e.length,q=this.tint||16777215;for(j=0;p>j;j++){var r=o>j?this.children[j]:this._pool.pop();r?r.setTexture(e[j].texture):r=new b.Sprite(e[j].texture),r.position.x=(e[j].position.x+m[e[j].line])*i,r.position.y=e[j].position.y*i,r.scale.x=r.scale.y=i,r.tint=q,r.parent||this.addChild(r)}for(;this.children.length>p;){var s=this.getChildAt(this.children.length-1);this._pool.push(s),this.removeChild(s)}this.textWidth=f*i,this.textHeight=(c.y+a.lineHeight)*i},b.BitmapText.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),b.DisplayObjectContainer.prototype.updateTransform.call(this)},b.BitmapText.fonts={},b.Stage=function(a){b.DisplayObjectContainer.call(this),this.worldTransform=new b.Matrix,this.interactive=!0,this.interactionManager=new b.InteractionManager(this),this.dirty=!0,this.stage=this,this.stage.hitArea=new b.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a)},b.Stage.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},b.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var a=0,b=this.children.length;b>a;a++)this.children[a].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},b.Stage.prototype.setBackgroundColor=function(a){this.backgroundColor=a||0,this.backgroundColorSplit=b.hex2rgb(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},b.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},function(a){for(var b=0,c=["ms","moz","webkit","o"],d=0;d>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){return function(a){function b(){for(var d=arguments.length,f=new Array(d);d--;)f[d]=arguments[d];return f=e.concat(f),c.apply(this instanceof b?this:a,f)}var c=this,d=arguments.length-1,e=[];if(d>0)for(e.length=d;d--;)e[d]=arguments[d+1];if("function"!=typeof c)throw new TypeError;return b.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(c.prototype),b}}()),b.AjaxRequest=function(){var a=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new window.XMLHttpRequest:!1;for(var b=0;b0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.EventTarget={call:function(a){a&&(a=a.prototype||a,b.EventTarget.mixin(a))},mixin:function(a){a.listeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?this._listeners[a].slice():[]},a.emit=a.dispatchEvent=function(a,c){if(this._listeners=this._listeners||{},"object"==typeof a&&(c=a,a=a.type),c&&c.__isEventObject===!0||(c=new b.Event(this,a,c)),this._listeners&&this._listeners[a]){var d,e=this._listeners[a],f=e.length,g=e[0];for(d=0;f>d;g=e[++d])if(g.call(this,c),c.stoppedImmediate)return this;if(c.stopped)return this}return this.parent&&this.parent.emit&&this.parent.emit.call(this.parent,a,c),this},a.on=a.addEventListener=function(a,b){return this._listeners=this._listeners||{},(this._listeners[a]=this._listeners[a]||[]).push(b),this},a.once=function(a,b){function c(){b.apply(d.off(a,c),arguments)}this._listeners=this._listeners||{};var d=this;return c._originalHandler=b,this.on(a,c)},a.off=a.removeEventListener=function(a,b){if(this._listeners=this._listeners||{},!this._listeners[a])return this;for(var c=this._listeners[a],d=b?c.length:0;d-->0;)(c[d]===b||c[d]._originalHandler===b)&&c.splice(d,1);return 0===c.length&&delete this._listeners[a],this},a.removeAllListeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?(delete this._listeners[a],this):this}}},b.Event=function(a,b,c){this.__isEventObject=!0,this.stopped=!1,this.stoppedImmediate=!1,this.target=a,this.type=b,this.data=c,this.content=c,this.timeStamp=Date.now()},b.Event.prototype.stopPropagation=function(){this.stopped=!0},b.Event.prototype.stopImmediatePropagation=function(){this.stoppedImmediate=!0},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return window.console.log("PIXI Warning: shape too complex to fill"),[];for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e +},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.initDefaultShaders=function(){},b.CompileVertexShader=function(a,c){return b._CompileShader(a,c,a.VERTEX_SHADER)},b.CompileFragmentShader=function(a,c){return b._CompileShader(a,c,a.FRAGMENT_SHADER)},b._CompileShader=function(a,b,c){var d=b.join("\n"),e=a.createShader(c);return a.shaderSource(e,d),a.compileShader(e),a.getShaderParameter(e,a.COMPILE_STATUS)?e:(window.console.log(a.getShaderInfoLog(e)),null)},b.compileProgram=function(a,c,d){var e=b.CompileFragmentShader(a,d),f=b.CompileVertexShader(a,c),g=a.createProgram();return a.attachShader(g,f),a.attachShader(g,e),a.linkProgram(g),a.getProgramParameter(g,a.LINK_STATUS)||window.console.log("Could not initialise shaders"),g},b.PixiShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.textureCount=0,this.firstRun=!0,this.dirty=!0,this.attributes=[],this.init()},b.PixiShader.prototype.constructor=b.PixiShader,b.PixiShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc||b.PixiShader.defaultVertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute];for(var d in this.uniforms)this.uniforms[d].uniformLocation=a.getUniformLocation(c,d);this.initUniforms(),this.program=c},b.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a,b=this.gl;for(var c in this.uniforms){a=this.uniforms[c];var d=a.type;"sampler2D"===d?(a._init=!1,null!==a.value&&this.initSampler2D(a)):"mat2"===d||"mat3"===d||"mat4"===d?(a.glMatrix=!0,a.glValueLength=1,"mat2"===d?a.glFunc=b.uniformMatrix2fv:"mat3"===d?a.glFunc=b.uniformMatrix3fv:"mat4"===d&&(a.glFunc=b.uniformMatrix4fv)):(a.glFunc=b["uniform"+d],a.glValueLength="2f"===d||"2i"===d?2:"3f"===d||"3i"===d?3:"4f"===d||"4i"===d?4:1)}},b.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){var b=this.gl;if(b.activeTexture(b["TEXTURE"+this.textureCount]),b.bindTexture(b.TEXTURE_2D,a.value.baseTexture._glTextures[b.id]),a.textureData){var c=a.textureData,d=c.magFilter?c.magFilter:b.LINEAR,e=c.minFilter?c.minFilter:b.LINEAR,f=c.wrapS?c.wrapS:b.CLAMP_TO_EDGE,g=c.wrapT?c.wrapT:b.CLAMP_TO_EDGE,h=c.luminance?b.LUMINANCE:b.RGBA;if(c.repeat&&(f=b.REPEAT,g=b.REPEAT),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,!!c.flipY),c.width){var i=c.width?c.width:512,j=c.height?c.height:2,k=c.border?c.border:0;b.texImage2D(b.TEXTURE_2D,0,h,i,j,k,h,b.UNSIGNED_BYTE,null)}else b.texImage2D(b.TEXTURE_2D,0,h,b.RGBA,b.UNSIGNED_BYTE,a.value.baseTexture.source);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,d),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,f),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,g)}b.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},b.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a,c=this.gl;for(var d in this.uniforms)a=this.uniforms[d],1===a.glValueLength?a.glMatrix===!0?a.glFunc.call(c,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c,a.uniformLocation,a.value):2===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y):3===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z):4===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"===a.type&&(a._init?(c.activeTexture(c["TEXTURE"+this.textureCount]),a.value.baseTexture._dirty[c.id]?b.defaultRenderer.updateTexture(a.value.baseTexture):c.bindTexture(c.TEXTURE_2D,a.value.baseTexture._glTextures[c.id]),c.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},b.PixiShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec4 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"],b.PixiFastShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"],this.textureCount=0,this.init()},b.PixiFastShader.prototype.constructor=b.PixiFastShader,b.PixiFastShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.uMatrix=a.getUniformLocation(c,"uMatrix"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aPositionCoord=a.getAttribLocation(c,"aPositionCoord"),this.aScale=a.getAttribLocation(c,"aScale"),this.aRotation=a.getAttribLocation(c,"aRotation"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute],this.program=c},b.PixiFastShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.StripShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;","}"],this.init()},b.StripShader.prototype.constructor=b.StripShader,b.StripShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.attributes=[this.aVertexPosition,this.aTextureCoord],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.StripShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.PrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor * vec4(tint * alpha, alpha);","}"],this.init()},b.PrimitiveShader.prototype.constructor=b.PrimitiveShader,b.PrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.ComplexPrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform vec3 tint;","uniform float alpha;","uniform vec3 color;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = vec4(color * alpha * tint, alpha);","}"],this.init()},b.ComplexPrimitiveShader.prototype.constructor=b.ComplexPrimitiveShader,b.ComplexPrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.color=a.getUniformLocation(c,"color"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.ComplexPrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.WebGLGraphics=function(){},b.WebGLGraphics.renderGraphics=function(a,c){var d,e=c.gl,f=c.projection,g=c.offset,h=c.shaderManager.primitiveShader;a.dirty&&b.WebGLGraphics.updateGraphics(a,e);for(var i=a._webGL[e.id],j=0;j=6&&(h.points.length>10?(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g)):(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildPoly(h,g))),h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))):(g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g)),d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d),n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i)}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.lastIndex=0,this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[],this.lastIndex=0},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},b.glContexts=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)"undefined"==typeof d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.sayHello("webGL"),b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this.contextLostBound=this.handleContextLost.bind(this),this.contextRestoredBound=this.handleContextRestored.bind(this),this.view.addEventListener("webglcontextlost",this.contextLostBound,!1),this.view.addEventListener("webglcontextrestored",this.contextRestoredBound,!1),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(a.interactive&&a.interactionManager.removeEvents(),this.__stage=a),a.updateTransform();var b=this.gl;a._interactive?a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)):a._interactiveEventsAdded&&(a._interactiveEventsAdded=!1,a.interactionManager.setTarget(this)),b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.handleContextLost=function(a){a.preventDefault(),this.contextLost=!0},b.WebGLRenderer.prototype.handleContextRestored=function(){this.initContext();for(var a in b.TextureCache){var c=b.TextureCache[a].baseTexture;c._glTextures=[]}this.contextLost=!1},b.WebGLRenderer.prototype.destroy=function(){this.view.off("webglcontextlost",this.contextLostBound),this.view.off("webglcontextrestored",this.contextRestoredBound),b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a){var b=a.texture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=b.baseTexture);var c=b._uvs;if(c){var d,e,f,g,h=a.worldAlpha,i=a.tint,j=this.vertices,k=a.anchor.x,l=a.anchor.y;if(b.trim){var m=b.trim;e=m.x-k*m.width,d=e+b.crop.width,g=m.y-l*m.height,f=g+b.crop.height}else d=b.frame.width*(1-k),e=b.frame.width*-k,f=b.frame.height*(1-l),g=b.frame.height*-l;var n=4*this.currentBatchSize*this.vertSize,o=b.baseTexture.resolution,p=a.worldTransform,q=p.a/o,r=p.b/o,s=p.c/o,t=p.d/o,u=p.tx,v=p.ty;j[n++]=q*e+s*g+u,j[n++]=t*g+r*e+v,j[n++]=c.x0,j[n++]=c.y0,j[n++]=h,j[n++]=i,j[n++]=q*d+s*g+u,j[n++]=t*g+r*d+v,j[n++]=c.x1,j[n++]=c.y1,j[n++]=h,j[n++]=i,j[n++]=q*d+s*f+u,j[n++]=t*f+r*d+v,j[n++]=c.x2,j[n++]=c.y2,j[n++]=h,j[n++]=i,j[n++]=q*e+s*f+u,j[n++]=t*f+r*e+v,j[n++]=c.x3,j[n++]=c.y3,j[n++]=h,j[n++]=i,this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs;a.tilePosition.x%=c.baseTexture.width*a.tileScaleOffset.x,a.tilePosition.y%=c.baseTexture.height*a.tileScaleOffset.y;var e=a.tilePosition.x/(c.baseTexture.width*a.tileScaleOffset.x),f=a.tilePosition.y/(c.baseTexture.height*a.tileScaleOffset.y),g=a.width/c.baseTexture.width/(a.tileScale.x*a.tileScaleOffset.x),h=a.height/c.baseTexture.height/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-e,d.y0=0-f,d.x1=1*g-e,d.y1=0-f,d.x2=1*g-e,d.y2=1*h-f,d.x3=0-e,d.y3=1*h-f;var i=a.worldAlpha,j=a.tint,k=this.vertices,l=a.width,m=a.height,n=a.anchor.x,o=a.anchor.y,p=l*(1-n),q=l*-n,r=m*(1-o),s=m*-o,t=4*this.currentBatchSize*this.vertSize,u=c.baseTexture.resolution,v=a.worldTransform,w=v.a/u,x=v.b/u,y=v.c/u,z=v.d/u,A=v.tx,B=v.ty;k[t++]=w*q+y*s+A,k[t++]=z*s+x*q+B,k[t++]=d.x0,k[t++]=d.y0,k[t++]=i,k[t++]=j,k[t++]=w*p+y*s+A,k[t++]=z*s+x*p+B,k[t++]=d.x1,k[t++]=d.y1,k[t++]=i,k[t++]=j,k[t++]=w*p+y*r+A,k[t++]=z*r+x*p+B,k[t++]=d.x2,k[t++]=d.y2,k[t++]=i,k[t++]=j,k[t++]=w*q+y*r+A,k[t++]=z*r+x*q+B,k[t++]=d.x3,k[t++]=d.y3,k[t++]=i,k[t++]=j,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,2,c.FLOAT,!1,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var a=4*this.size*this.vertSize,b=6*this.maxSize;this.vertices=new Float32Array(a),this.indices=new Uint16Array(b),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var c=0,d=0;b>c;c+=6,d+=4)this.indices[c+0]=d+0,this.indices[c+1]=d+1,this.indices[c+2]=d+2,this.indices[c+3]=d+0,this.indices[c+4]=d+2,this.indices[c+5]=d+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(g.fillColor||0===g.fillColor)&&(c.globalAlpha=g.fillAlpha*d,c.fillStyle=e="#"+("00000"+(0|g.fillColor).toString(16)).substr(-6),c.fill()),g.lineWidth&&(c.globalAlpha=g.lineAlpha*d,c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){d>1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){c.beginPath();var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iA?A:z,c.beginPath(),c.moveTo(v,w+z),c.lineTo(v,w+y-z),c.quadraticCurveTo(v,w+y,v+z,w+y),c.lineTo(v+x-z,w+y),c.quadraticCurveTo(v+x,w+y,v+x,w+y-z),c.lineTo(v+x,w+z),c.quadraticCurveTo(v+x,w,v+x-z,w),c.lineTo(v+z,w),c.quadraticCurveTo(v,w,v,w+z),c.closePath()}}}},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.padding=0},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var b=a.gl,c=a.projection,d=a.offset,e=a.shaderManager.stripShader;b.blendFunc(b.ONE,b.ONE_MINUS_SRC_ALPHA),b.uniformMatrix3fv(e.translationMatrix,!1,this.worldTransform.toArray(!0)),b.uniform2f(e.projectionVector,c.x,-c.y),b.uniform2f(e.offsetVector,-d.x,-d.y),b.uniform1f(e.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.STATIC_DRAW),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)):(b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferSubData(b.ARRAY_BUFFER,0,this.verticies),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),b.drawElements(b.TRIANGLE_STRIP,this.indices.length,b.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var b=a.context,c=this.worldTransform; +a.roundPixels?b.setTransform(c.a,c.b,c.c,c.d,0|c.tx,0|c.ty):b.setTransform(c.a,c.b,c.c,c.d,c.tx,c.ty);var d=this,e=d.verticies,f=d.uvs,g=e.length/2;this.count++;for(var h=0;g-2>h;h++){var i=2*h,j=e[i],k=e[i+2],l=e[i+4],m=e[i+1],n=e[i+3],o=e[i+5];if(this.padding>0){var p=(j+k+l)/3,q=(m+n+o)/3,r=j-p,s=m-q,t=Math.sqrt(r*r+s*s);j=p+r/t*(t+3),m=q+s/t*(t+3),r=k-p,s=n-q,t=Math.sqrt(r*r+s*s),k=p+r/t*(t+3),n=q+s/t*(t+3),r=l-p,s=o-q,t=Math.sqrt(r*r+s*s),l=p+r/t*(t+3),o=q+s/t*(t+3)}var u=f[i]*d.texture.width,v=f[i+2]*d.texture.width,w=f[i+4]*d.texture.width,x=f[i+1]*d.texture.height,y=f[i+3]*d.texture.height,z=f[i+5]*d.texture.height;b.save(),b.beginPath(),b.moveTo(j,m),b.lineTo(k,n),b.lineTo(l,o),b.closePath(),b.clip();var A=u*y+x*w+v*z-y*w-x*v-u*z,B=j*y+x*l+k*z-y*l-x*k-j*z,C=u*k+j*w+v*l-k*w-j*v-u*l,D=u*y*l+x*k*w+j*v*z-j*y*w-x*v*l-u*k*z,E=m*y+x*o+n*z-y*o-x*n-m*z,F=u*n+m*w+v*o-n*w-m*v-u*o,G=u*y*o+x*n*w+m*v*z-m*y*w-x*v*o-u*n*z;b.transform(B/A,E/A,C/A,F/A,D/A,G/A),b.drawImage(d.texture.baseTexture.source,0,0),b.restore()}},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.verticies=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.verticies,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||100,this._height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this._mask,a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d,e,f=this.worldTransform,g=a.resolution;if(c.setTransform(f.a*g,f.c*g,f.b*g,f.d*g,f.tx*g,f.ty*g),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]);var h=this.tilePosition,i=this.tileScale;for(h.x%=this.tilingTexture.baseTexture.width,h.y%=this.tilingTexture.baseTexture.height,c.scale(i.x,i.y),c.translate(h.x+this.anchor.x*-this._width,h.y+this.anchor.y*-this._height),c.fillStyle=this.__tilePattern,c.fillRect(-h.x,-h.y,this._width/i.x,this._height/i.y),c.scale(1/i.x,1/i.y),c.translate(-h.x+this.anchor.x*this._width,-h.y+this.anchor.y*this._height),this._mask&&a.maskManager.popMask(a.context),d=0,e=this.children.length;e>d;d++)this.children[d]._renderCanvas(a)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.onTextureUpdate=function(){},b.TilingSprite.prototype.generateTilingTexture=function(a){if(this.texture.baseTexture.hasLoaded){var c,d,e=this.originalTexture||this.texture,f=e.frame,g=f.width!==e.baseTexture.width||f.height!==e.baseTexture.height,h=!1;if(a?(c=b.getNextPowerOfTwo(f.width),d=b.getNextPowerOfTwo(f.height),(f.width!==c||f.height!==d)&&(h=!0)):g&&(c=f.width,d=f.height,h=!0),h){var i;this.tilingTexture&&this.tilingTexture.isTiling?(i=this.tilingTexture.canvasBuffer,i.resize(c,d),this.tilingTexture.baseTexture.width=c,this.tilingTexture.baseTexture.height=d,this.tilingTexture.needsUpdate=!0):(i=new b.CanvasBuffer(c,d),this.tilingTexture=b.Texture.fromCanvas(i.canvas),this.tilingTexture.canvasBuffer=i,this.tilingTexture.isTiling=!0),i.context.drawImage(e.baseTexture.source,e.crop.x,e.crop.y,e.crop.width,e.crop.height,0,0,c,d),this.tileScaleOffset.x=f.width/c,this.tileScaleOffset.y=f.height/d}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=e;this.refreshTexture=!1,this.originalTexture=this.texture,this.texture=this.tilingTexture,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this._dirty=[!0,!0,!0,!0],a){if((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height)this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty();else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.naturalWidth||d.source.width,d.height=d.source.naturalHeight||d.source.height,d.dirty(),d.dispatchEvent({type:"loaded",content:d})},this.source.onerror=function(){d.dispatchEvent({type:"error",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.EventTarget.mixin(b.BaseTexture.prototype),b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,this.source.src=""):this.source&&this.source._pixiId&&delete b.BaseTextureCache[this.source._pixiId],this.source=null;for(var a=this._glTextures.length-1;a>=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;athis.baseTexture.width||a.y+a.height>this.baseTexture.height))throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width,this.height)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width*this.resolution,this.height*this.resolution,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=this.frame.width=this.crop.width=a,this.height=this.frame.height=this.crop.height=c,d&&(this.baseTexture.width=this.width,this.baseTexture.height=this.height),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width*this.resolution,this.height*this.resolution))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1),a.worldAlpha=1;for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();var h=this.renderer.gl;h.viewport(0,0,this.width*this.resolution,this.height*this.resolution),h.bindFramebuffer(h.FRAMEBUFFER,this.textureBuffer.frameBuffer),c&&this.textureBuffer.clear(),this.renderer.spriteBatch.dirty=!0,this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),this.renderer.spriteBatch.dirty=!0}},b.RenderTexture.prototype.renderCanvas=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),b&&d.append(b);for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();c&&this.textureBuffer.clear();var h=this.textureBuffer.context,i=this.renderer.resolution;this.renderer.resolution=this.resolution,this.renderer.renderDisplayObject(a,h),this.renderer.resolution=i}},b.RenderTexture.prototype.getImage=function(){var a=new Image;return a.src=this.getBase64(),a},b.RenderTexture.prototype.getBase64=function(){return this.getCanvas().toDataURL()},b.RenderTexture.prototype.getCanvas=function(){if(this.renderer.type===b.WEBGL_RENDERER){var a=this.renderer.gl,c=this.textureBuffer.width,d=this.textureBuffer.height,e=new Uint8Array(4*c*d);a.bindFramebuffer(a.FRAMEBUFFER,this.textureBuffer.frameBuffer),a.readPixels(0,0,c,d,a.RGBA,a.UNSIGNED_BYTE,e),a.bindFramebuffer(a.FRAMEBUFFER,null);for(var f=new b.CanvasBuffer(c,d),g=f.context.getImageData(0,0,c,d),h=g.data,i=0;ia;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this); \ No newline at end of file diff --git a/build/phaser.js b/build/phaser.js index 379ad3b840..e936dadce7 100644 --- a/build/phaser.js +++ b/build/phaser.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.1.3 "Ravinda" - Built: Wed Oct 22 2014 22:48:37 +* v2.1.3 "Ravinda" - Built: Wed Oct 22 2014 23:49:49 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -153,6 +153,83 @@ PIXI.sayHello = function (type) PIXI.dontSayHello = true; }; +/** + * @author Adrien Brault + */ + +/** + * @class Polygon + * @constructor + * @param points* {Array|Array|Point...|Number...} This can be an array of Points that form the polygon, + * a flat array of numbers that will be interpreted as [x,y, x,y, ...], or the arguments passed can be + * all the points of the polygon e.g. `new PIXI.Polygon(new PIXI.Point(), new PIXI.Point(), ...)`, or the + * arguments passed can be flat x,y values e.g. `new PIXI.Polygon(x,y, x,y, x,y, ...)` where `x` and `y` are + * Numbers. + */ +PIXI.Polygon = function(points) +{ + //if points isn't an array, use arguments as the array + if(!(points instanceof Array))points = Array.prototype.slice.call(arguments); + + //if this is a flat array of numbers, convert it to points + if(points[0] instanceof PIXI.Point) + { + var p = []; + for(var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } + + this.closed = true; + this.points = points; +}; + +/** + * Creates a clone of this polygon + * + * @method clone + * @return {Polygon} a copy of the polygon + */ +PIXI.Polygon.prototype.clone = function() +{ + var points = this.points.slice(); + return new PIXI.Polygon(points); +}; + +/** + * Checks whether the x and y coordinates passed to this function are contained within this polygon + * + * @method contains + * @param x {Number} The X coordinate of the point to test + * @param y {Number} The Y coordinate of the point to test + * @return {Boolean} Whether the x/y coordinates are within this polygon + */ +PIXI.Polygon.prototype.contains = function(x, y) +{ + var inside = false; + + // use some raycasting to test hits + // https://github.com/substack/point-in-polygon/blob/master/index.js + var length = this.points.length / 2; + + for(var i = 0, j = length - 1; i < length; j = i++) + { + var xi = this.points[i * 2], yi = this.points[i * 2 + 1], + xj = this.points[j * 2], yj = this.points[j * 2 + 1], + intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); + + if(intersect) inside = !inside; + } + + return inside; +}; + +// constructor +PIXI.Polygon.prototype.constructor = PIXI.Polygon; + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -11477,7 +11554,7 @@ PIXI.AbstractFilter.prototype.apply = function(frameBuffer) * * Phaser - http://phaser.io * -* v2.1.3 "Ravinda" - Built: Wed Oct 22 2014 22:48:37 +* v2.1.3 "Ravinda" - Built: Wed Oct 22 2014 23:49:48 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -15272,13 +15349,39 @@ Phaser.Polygon = function (points) { */ this.type = Phaser.POLYGON; + // If points isn't an array, use arguments as the array + if (!(points instanceof Array)) + { + points = Array.prototype.slice.call(arguments); + } + + // If this is a flat array of numbers, convert it to points + if (points[0] instanceof Phaser.Point) + { + var p = []; + + for (var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } + + /** + * @property {array} points - An array of Points that make up this Polygon. + */ this.points = points; + + /** + * @property {boolean} closed - Is the Polygon closed or not? + */ + this.closed = true; + }; Phaser.Polygon.prototype = { - type: null, - /** * Creates a copy of the given Polygon. * This is a deep clone, the resulting copy contains new Phaser.Point objects @@ -15289,12 +15392,7 @@ Phaser.Polygon.prototype = { */ clone: function (output) { - var points = []; - - for (var i=0; i < this.points.length; i++) - { - points.push(this.points[i].clone()); - } + var points = this.points.slice(); if (typeof output === "undefined" || output === null) { @@ -15322,12 +15420,15 @@ Phaser.Polygon.prototype = { var inside = false; // use some raycasting to test hits https://github.com/substack/point-in-polygon/blob/master/index.js - for (var i = 0, j = this.points.length - 1; i < this.points.length; j = i++) + + var length = this.points.length / 2; + + for (var i = 0, j = length - 1; i < length; j = i++) { - var xi = this.points[i].x; - var yi = this.points[i].y; - var xj = this.points[j].x; - var yj = this.points[j].y; + var xi = this.points[i * 2].x; + var yi = this.points[i * 2 + 1].y; + var xj = this.points[j * 2].x; + var yj = this.points[j * 2 + 1].y; var intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); @@ -15341,7 +15442,33 @@ Phaser.Polygon.prototype = { }, - setTo : function(points) { + /** + * Sets this Polygon to the given points. + * + * @method Phaser.Polygon#setTo + * @param {Phaser.Point[]|number[]} points - The array of Points. + * @return {boolean} True if the coordinates are within this polygon, otherwise false. + */ + setTo: function (points) { + + // If points isn't an array, use arguments as the array + if (!(points instanceof Array)) + { + points = Array.prototype.slice.call(arguments); + } + + // If this is a flat array of numbers, convert it to points + if (points[0] instanceof Phaser.Point) + { + var p = []; + + for (var i = 0, il = points.length; i < il; i++) + { + p.push(points[i].x, points[i].y); + } + + points = p; + } this.points = points; @@ -15394,7 +15521,7 @@ Object.defineProperty(Phaser.Polygon.prototype, 'points', { /** * Returns the area of the polygon. * -* @name Phaser.Circle#right +* @name Phaser.Polygon#area * @readonly */ Object.defineProperty(Phaser.Polygon.prototype, 'area', { @@ -15443,7 +15570,7 @@ Object.defineProperty(Phaser.Polygon.prototype, 'area', { }); // Because PIXI uses its own Polygon, we'll replace it with ours to avoid duplicating code or confusion. -PIXI.Polygon = Phaser.Polygon; +// PIXI.Polygon = Phaser.Polygon; /** * @author Mat Groves http://matgroves.com/ @Doormat23 @@ -40312,24 +40439,6 @@ Phaser.Graphics.prototype.destroy = function(destroyChildren) { }; -/* -* Draws a {Phaser.Polygon} or a {PIXI.Polygon} filled -* -* @method Phaser.Graphics.prototype.drawPolygon -*/ -Phaser.Graphics.prototype.drawPolygon = function (poly) { - - this.moveTo(poly.points[0].x, poly.points[0].y); - - for (var i = 1; i < poly.points.length; i += 1) - { - this.lineTo(poly.points[i].x, poly.points[i].y); - } - - this.lineTo(poly.points[0].x, poly.points[0].y); - -}; - /* * Draws a single {Phaser.Polygon} triangle from a {Phaser.Point} array * diff --git a/build/phaser.map b/build/phaser.map index 0f0de43b06..239ed0861c 100644 --- a/build/phaser.map +++ b/build/phaser.map @@ -1 +1 @@ -{"version":3,"file":"phaser.min.js","sources":["phaser.js"],"names":["root","this","PIXI","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","blendModes","NORMAL","ADD","MULTIPLY","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","scaleModes","DEFAULT","LINEAR","NEAREST","_UID","Float32Array","Uint16Array","Array","INTERACTION_FREQUENCY","AUTO_PREVENT_DEFAULT","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","dontSayHello","defaultRenderOptions","view","transparent","antialias","preserveDrawingBuffer","resolution","clearBeforeRender","sayHello","type","navigator","userAgent","toLowerCase","indexOf","args","console","log","apply","window","Matrix","a","b","c","d","tx","ty","prototype","fromArray","array","toArray","transpose","pos","newPos","Point","x","y","applyInverse","id","translate","scale","rotate","angle","cos","sin","a1","c1","tx1","append","matrix","b1","d1","identity","identityMatrix","DisplayObject","position","pivot","rotation","alpha","visible","hitArea","buttonMode","renderable","parent","stage","worldAlpha","_interactive","defaultCursor","worldTransform","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","constructor","Object","defineProperty","get","set","value","dirty","item","isMask","_filters","passes","i","length","filterPasses","j","push","_filterBlock","target","_generateCachedSprite","_destroyCachedSprite","updateTransform","pt","wt","rotationCache","getBounds","EmptyRectangle","getLocalBounds","setStageReference","generateTexture","scaleMode","renderer","bounds","renderTexture","RenderTexture","width","height","render","updateCache","toGlobal","toLocal","from","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","call","_renderCanvas","texture","resize","tempFilters","filters","_tempMatrix","anchor","destroy","DisplayObjectContainer","children","create","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","mask","start","popMask","popFilter","tint","blendMode","shader","baseTexture","hasLoaded","onTextureUpdate","onTextureUpdateBind","bind","on","frame","setTexture","cachedTint","w0","w1","h0","h1","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","valid","globalAlpha","roundPixels","setTransform","smoothProperty","dx","trim","dy","tintedTexture","CanvasTinter","getTintedTexture","drawImage","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","Texture","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","shaderManager","setShader","fastShader","transform","isRotated","childTransform","FilterBlock","Text","text","style","canvas","document","createElement","getContext","fromCanvas","setText","setStyle","updateText","font","fill","align","stroke","strokeThickness","wordWrap","wordWrapWidth","dropShadow","dropShadowAngle","dropShadowDistance","dropShadowColor","toString","outputText","lines","split","lineWidths","maxLineWidth","fontProperties","determineFontProperties","lineWidth","measureText","max","lineHeight","fontSize","isCocoonJS","clearRect","strokeStyle","textBaseline","linePositionX","linePositionY","fillStyle","xShadowOffset","yShadowOffset","ascent","fillText","strokeText","updateTexture","fontStyle","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","ceil","baseline","fillRect","imagedata","getImageData","data","pixels","line","idx","descent","result","spaceLeft","words","wordWidth","wordWidthWithSpace","destroyBaseTexture","BitmapText","textWidth","textHeight","_pool","fontName","parseInt","fonts","size","prevCharCode","chars","charCode","charCodeAt","test","charAt","charData","kerning","xOffset","yOffset","xAdvance","lineAlignOffsets","alignOffset","lenChildren","lenChars","pop","Stage","backgroundColor","interactive","interactionManager","InteractionManager","setBackgroundColor","setInteractionDelegate","domElement","setTargetDomElement","update","backgroundColorSplit","hex2rgb","hex","substr","backgroundColorString","getMousePosition","mouse","global","lastTime","vendors","requestAnimationFrame","cancelAnimationFrame","callback","currTime","Date","getTime","timeToCall","setTimeout","clearTimeout","requestAnimFrame","rgb2hex","rgb","Function","thisArg","bound","arguments","boundArgs","concat","TypeError","F","proto","AjaxRequest","activexmodes","ActiveXObject","XMLHttpRequest","e","canUseNewCanvasBlendModes","getNextPowerOfTwo","number","EventTarget","obj","mixin","listeners","eventName","_listeners","slice","emit","dispatchEvent","__isEventObject","Event","fn","stoppedImmediate","stopped","addEventListener","once","onceHandlerWrapper","self","off","_originalHandler","removeEventListener","list","removeAllListeners","name","content","timeStamp","now","stopPropagation","stopImmediatePropagation","PolyK","Triangulate","p","sign","n","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","vi","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","u","v","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","src","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","PixiShader","program","textureCount","firstRun","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","z","w","_dirty","defaultRenderer","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","WebGLGraphics","renderGraphics","graphics","webGLData","projection","offset","primitiveShader","updateGraphics","webGL","_webGL","mode","stencilManager","pushStencil","drawElements","TRIANGLE_FAN","UNSIGNED_SHORT","indices","popStencil","uniform2f","uniform3fv","uniform1f","bindBuffer","ARRAY_BUFFER","buffer","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","TRIANGLE_STRIP","lastIndex","clearDirty","graphicsData","reset","graphicsDataPool","Graphics","POLY","points","shape","closed","switchMode","buildComplexPoly","buildPoly","buildLine","RECT","buildRectangle","CIRC","ELIP","buildCircle","RREC","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","fillColor","fillAlpha","r","g","verts","vertPos","tempPoints","radius","recPoints","quadraticBezierCurve","vecPos","triangles","fromX","fromY","cpX","cpY","toX","toY","getPt","n1","n2","perc","diff","xa","ya","xb","yb","circleData","totalSegs","seg","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","a2","b2","c2","denom","pdist","dist","indexCount","indexStart","lineColor","lineAlpha","sqrt","abs","createBuffer","glPoints","bufferData","STATIC_DRAW","glIndicies","glContexts","WebGLRenderer","options","contextLostBound","handleContextLost","contextRestoredBound","handleContextRestored","_contextOptions","premultipliedAlpha","stencil","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","setContext","contextLost","__stage","removeEvents","_interactiveEventsAdded","setTarget","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","clear","COLOR_BUFFER_BIT","renderDisplayObject","displayObject","setBlendMode","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","_powerOf2","event","preventDefault","blendModesWebGL","ONE","ONE_MINUS_SRC_ALPHA","SRC_ALPHA","DST_ALPHA","DST_COLOR","blendModeWebGL","blendFunc","maskData","stencilStack","reverse","count","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","EQUAL","DECR","INCR","_currentGraphics","complexPrimitiveShader","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","numVerts","numIndices","vertices","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","DYNAMIC_DRAW","sprite","uvs","_uvs","verticies","aX","aY","x0","y0","renderTilingSprite","tilingSprite","tilingTexture","TextureUvs","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","createWebGLTexture","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","temp","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","roundColor","stringColor","tintCache","tintMethod","convertTintToImage","tintImage","Image","toDataURL","tintWithMultiply","tintWithOverlay","tintWithPerPixel","rgbValues","pixelData","putImageData","step","cacheStepsPerColorChannel","min","canUseMultiply","CanvasRenderer","refresh","screencanvas","beginPath","moveTo","lineTo","closePath","strokeRect","arc","h","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","pts","rx","ry","maxRadius","quadraticCurveTo","len","rect","Strip","colors","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","strip","centerX","centerY","normX","normY","u0","u1","u2","v0","v1","v2","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","updateFrame","Rope","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","refreshTexture","generateTilingTexture","needsUpdate","updateWebGLTexture","__tilePattern","createPattern","forcePowerOfTwo","targetWidth","targetHeight","originalTexture","isFrame","newTextureRequired","canvasBuffer","isTiling","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","scope","onload","onerror","imageUrl","_pixiId","glTexture","updateSourceImage","newSrc","image","crossOrigin","TextureCacheIdGenerator","FrameCache","noFrame","requiresUpdate","setFrame","onBaseTextureLoaded","onLoaded","destroyBase","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","updateBase","realResolution","getImage","getBase64","getCanvas","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","canvasPixels","tempMatrix","exports","module","define","amd","Phaser","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","Utils","getProperty","prop","parts","last","l","current","setProperty","transposeArray","rotateArray","direction","parseDimension","dimension","f","innerWidth","innerHeight","shuffle","floor","random","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","extend","copy","copyIsArray","clone","deep","isArray","to","o","childNodes","cloneNode","arg","forEach","fun","t","Uint32Array","CheapArray","assert","warn","Circle","diameter","_diameter","_radius","circumference","setTo","copyFrom","copyTo","dest","distance","round","distanceRounded","output","contains","circumferencePoint","asDegrees","out","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","invert","add","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","atan2","angleSq","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","requiredAngle","centroid","pointslength","parse","xProp","yProp","centerOn","floorAll","inflate","containsRect","intersection","tolerance","intersectsRaw","union","empty","inflatePoint","containsRaw","rw","rh","containsPoint","volume","aabb","xMax","Number","MIN_VALUE","xMin","MAX_VALUE","yMax","yMin","Line","fromSprite","startSprite","endSprite","useCenter","center","asSegment","intersectsPoints","pointOnLine","pointOnSegment","coordinatesOnLine","stepRate","results","sx","sy","err","e2","uc","ua","ub","Ellipse","normx","normy","Polygon","inside","xi","yi","xj","yj","intersect","_points","p1","p2","avgHeight","area","currentPath","boundsPadding","webGLDirty","cachedSpriteDirty","destroyCachedSprite","lineStyle","drawShape","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","startX","startY","sweep","segs","theta","theta2","cTheta","sTheta","segMinus","remainder","real","beginFill","filling","endFill","drawRect","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","updateCachedSpriteTexture","updateBounds","RRECT","cachedSprite","GraphicsData","Camera","game","world","screenView","deadzone","roundPx","atLimit","_edge","_position","_targetPosition","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","follow","helper","unfollow","focusOn","setPosition","focusOnXY","updateTarget","checkBounds","setBoundsToWorld","setSize","State","make","camera","cache","input","load","math","sound","time","tweens","particles","physics","rnd","preload","loadUpdate","loadRender","paused","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","boot","onPause","pause","onResume","resume","onLoadComplete","loadComplete","state","autoStart","newState","isBooted","remove","callbackContext","clearWorld","clearCache","checkState","restart","dummy","preUpdate","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","removeAll","debug","link","unlink","getCurrentState","preRender","renderType","LinkedList","next","prev","first","callAll","entity","ArrayList","exists","getIndex","setAll","Signal","_bindings","_prevParams","dispatch","memorize","_shouldPropagate","active","validateListener","listener","fnName","replace","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","signal","_isOnce","_signal","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_backgroundColor","config","parseConfig","Canvas","getOffset","_this","_onChange","visibilityChange","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","onpagehide","onpageshow","onblur","onfocus","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","hexToColor","getColor","getRGB","RGBtoString","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","alive","ignoreDestroy","classType","cursor","cameraOffset","enableBodyDebug","onDestroy","_sortProperty","_cache","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","events","onAddedToGroup","addMultiple","addAt","updateZ","getAt","createMultiple","quantity","resetCursor","previous","swap","child1","bringToTop","sendToBack","moveUp","moveDown","xy","oldChild","newChild","onRemovedFromGroup","hasProperty","operation","force","checkProperty","checkAlive","checkVisible","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","existsValue","callbackFromArray","method","methodLength","contextLength","renderOrderID","predicate","checkExists","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","getFirstAlive","getFirstDead","getTop","getBottom","countLiving","countDead","getRandom","destroyPhase","removeBetween","destroyChildren","soft","World","_definedSize","setBounds","wrap","useBounds","horizontal","vertical","integerInRange","FlexGrid","manager","boundsCustom","boundsFluid","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFluidInversed","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","multiplier","layers","createCustomLayer","addToWorld","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","onResize","geom","uuid","grid","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","ScaleManager","minWidth","maxWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","pageAlignHorizontally","pageAlignVertically","maxIterations","enterLandscape","enterPortrait","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","enterFullScreen","leaveFullScreen","orientation","outerWidth","outerHeight","scaleFactor","scaleFactorInversed","margin","aspectRatio","sourceAspectRatio","fullScreenScaleMode","NO_SCALE","parentIsWindow","parentNode","parentScaleFactor","trackParentInterval","onResizeContext","_scaleMode","_check","_nextParentCheck","_parentBounds","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","getElementById","getBoundingClientRect","newWidth","newHeight","updateDimensions","_checkOrientation","checkOrientation","_checkResize","checkResize","_fullScreenChange","fullScreenChange","cocoonJS","setResizeCallback","setMinMax","forceOrientation","checkOrientationState","isLandscape","wasLandscape","isPortrait","iPad","webApp","desktop","android","chrome","scrollTo","_iterations","setInterval","setScreenSize","documentElement","setMaximum","isFullScreen","setExactFit","setShowAll","clearInterval","marginLeft","marginTop","availableWidth","availableHeight","startFullScreen","fullscreen","smoothed","fullscreenKeyboard","requestFullscreen","Element","ALLOW_KEYBOARD_INPUT","stopFullScreen","cancelFullscreen","Game","physicsConfig","isRunning","raf","net","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","enableDebug","RandomDataGenerator","_onBoot","readyState","cordova","seed","body","Device","setUpRenderer","checkFullScreenSupport","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Net","Debug","showDebugHeader","RequestAnimationFrame","webAudio","addToDOM","enableStep","disableStep","removeFromDOM","setMute","unsetMute","hitCanvas","hitContext","moveCallbacks","moveCallback","moveCallbackContext","pollRate","disabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","currentPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","Pointer","Mouse","Keyboard","Touch","MSPointer","Gamepad","addMoveCallback","deleteMoveCallback","addPointer","hard","resetSpeed","startPointer","totalActivePointers","updatePointer","identifier","move","stopPointer","getPointer","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","worldVisible","TileSprite","Key","keycode","enabled","isDown","isUp","altKey","ctrlKey","shiftKey","timeDown","duration","timeUp","repeats","keyCode","onHoldCallback","onHoldContext","processKeyDown","processKeyUp","justPressed","justReleased","pressEvent","onDownCallback","onPressCallback","onUpCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","addCallbacks","onPress","addKey","addKeyCapture","removeKey","removeKeyCapture","createCursorKeys","up","down","processKeyPress","clearCaptures","String","fromCharCode","A","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","UNDERSCORE","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","INSERT","DELETE","HELP","NUM_LOCK","PLUS","MINUS","mouseDownCallback","mouseMoveCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","WHEEL_UP","WHEEL_DOWN","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","onMouseOut","onMouseOver","onMouseWheel","withinGame","detail","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","onPointerDown","onPointerMove","onPointerUp","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","positionDown","positionUp","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","_highestRenderOrderID","MAX_SAFE_INTEGER","_highestRenderObject","_highestInputPriorityID","currentNode","validForInput","checked","checkPointerDown","checkPointerOver","priorityID","_pointerOutHandler","_pointerOverHandler","leave","_releasedHandler","resetMovement","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","changedTouches","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","callbacks","onConnect","onDisconnect","onAxis","onFloat","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","buttonCode","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_rawPad","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","buttons","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","GamepadButton","disconnectingIndex","axis","axisCode","buttonValue","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","consumePointerEvent","scaleLayer","_dragPhase","_wasEnabled","_tempPoint","_pointerData","isOver","isOut","timeOver","timeOut","downDuration","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","addedToGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","_draggedPointerID","updateDrag","startDrag","stopDrag","globalToLocalX","_dragPoint","dragOffset","globalToLocalY","fixedToCamera","checkBoundsRect","checkBoundsSprite","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","dragFromCenter","disableDrag","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","camerOffset","Events","onKilled","onRevived","onOutOfBounds","onEnterBounds","onAnimationStart","onAnimationComplete","onAnimationLoop","existing","object","group","tween","physicsGroup","audio","loop","audioSprite","addSprite","tileSprite","rope","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","characterWidth","characterHeight","charsPerRow","xSpacing","ySpacing","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","Tilemap","addToCache","addRenderTexture","bitmapData","BitmapData","addBitmapData","Tween","ctx","imageData","ArrayBuffer","textureFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","_anchor","_tempR","_tempG","_tempB","_circle","loadTexture","draw","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","HSLtoRGB","shiftHSL","limitValue","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","anchorX","anchorY","copyRect","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","animations","AnimationManager","autoCull","health","lifespan","checkWorldBounds","outOfBoundsKill","cropRect","_crop","_frame","elapsed","kill","stopAnimation","getFrameData","loadFrameData","checkImageKey","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","updateCrop","resetFrame","cw","ch","revive","damage","_outOfBoundsFired","play","frameRate","killOnComplete","overlap","wrapAngle","frameName","P2JS","removeFromWorld","phase","_reset","frameData","getFrame","_frameName","getFrameByName","_scroll","physicsElapsed","autoScroll","stopScroll","safeRemove","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","segments","difference","_text","_font","_fontSize","_fontWeight","_lineSpacing","_charCount","setShadow","lineCap","lineJoin","updateLine","letter","clearColors","addColor","runWordWrap","parseFloat","_align","_tint","_onOverFrameName","_onOutFrameName","_onDownFrameName","_onUpFrameName","_onOverFrameID","_onOutFrameID","_onDownFrameID","_onUpFrameID","onOverMouseOnly","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","freezeFrames","forceOut","inputEnabled","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","clearFrames","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","marker","Sound","AudioSprite","setState","poly","drawTriangle","cull","triangle","cameraToFace","ab","cb","faceNormal","drawTriangles","point1","point2","point3","renderXY","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","FrameData","currentX","currentY","addFrame","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","characterSpacing","lineSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","Particle","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","display","box","clientTop","clientLeft","scrollTop","scrollLeft","compatMode","pageYOffset","pageXOffset","getAspectRatio","msTouchAction","overflowHidden","overflow","appendChild","setImageRenderingCrisp","msInterpolationMode","setImageRenderingBicubic","iOS","node","nodeWebkit","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","epiphany","firefox","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","silk","audioData","ogg","opus","mp3","wav","m4a","webm","iPhone","iPhone4","pixelRatio","littleEndian","support32bit","_checkOS","_checkAudio","_checkBrowser","_checkCSS3D","_checkDevice","_checkFeatures","vita","kindle","getItem","error","WebGLRenderingContext","maxTouchPoints","msPointerEnabled","pointerEnabled","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","fs","cfs","RegExp","$1","$3","process","require","audioElement","canPlayType","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","match","forceSetTimeOut","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","avg","truncate","shear","snapTo","gap","snapToFloor","snapToCeil","snapToInArray","arr","low","high","POSITIVE_INFINITY","roundTo","place","base","pow","floorTo","ceilTo","interpolateFloat","weight","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","normalizeLatitude","lat","normalizeLongitude","lng","chanceRoll","chance","numberArray","numberArrayStep","maxAdd","minSub","wrapValue","randomSign","isOdd","isEven","minProperty","maxProperty","radians","radianFactor","angleLimit","linearInterpolation","linear","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","objects","removeRandom","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","shuffleArray","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","degrees","radianToDegreesFactor","seeds","s0","s1","s2","sow","hash","integer","frac","realInRange","between","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","url","href","re","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","_tweens","_add","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_object","_pause","_resume","pauseAll","resumeAll","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_repeat","_yoyo","_reversed","_delayTime","_startTime","_easingFunction","Easing","Default","_interpolationFunction","_chainedTweens","_onStartCallbackFired","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","onStart","onLoop","onComplete","ease","yoyo","_parent","_lastChild","chain","generateData","tick","blob","reversed","times","easing","interpolation","pauseDuration","isFinite","tmp","numChainedTweens","Linear","None","Quadratic","In","Out","InOut","Cubic","Quartic","Quintic","Sinusoidal","Exponential","Circular","Elastic","asin","Back","Bounce","prevTime","pausedTime","advancedTiming","fps","fpsMin","fpsMax","msMin","msMax","deltaCap","timeCap","Timer","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","ms","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","Animation","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","_frameIndex","isPaused","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","_timeLastFrame","_timeNextFrame","useLocalFrameIndex","frameIndex","dispatchComplete","generateFrameNames","prefix","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","spacing","img","row","column","JSONData","json","cacheKey","newFrame","filename","sourceSize","spriteSourceSize","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","_canvases","_images","_textures","_sounds","_json","_xml","_physics","_tilemaps","_binary","_bitmapDatas","_bitmapFont","_urlMap","_urlResolver","_urlTemp","addDefaultImage","addMissingImage","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","addCanvas","addBinary","binaryData","addSpriteSheet","_resolveUrl","addTilemap","mapData","addTextureAtlas","atlasData","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","TEXTURE_ATLAS_XML_STARLING","addBitmapFont","xmlData","LoaderParser","bitmapFont","addPhysicsData","addText","addJSON","addXML","addImage","addSound","audioTag","decoded","isDecoding","touchLocked","reloadSound","reloadSoundComplete","updateSound","decodedSound","getBitmapData","getBitmapFont","getPhysicsData","fixtureKey","fixtures","fixture","checkKey","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkUrl","getTilemapData","map","getFrameByIndex","getTextureFrame","getTexture","getSound","getSoundData","isSoundDecoded","isSoundReady","getFrameCount","getText","getJSON","getXML","getBinary","getUrl","getKeys","removeCanvas","removeImage","removeFromPixi","removeSound","removeText","removeJSON","removeXML","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","baseURL","isLoading","progress","progressFloat","preloadSprite","onLoadStart","onFileStart","onFileComplete","onFileError","onPackComplete","useXDomainRequest","_packList","_packIndex","_fileList","_fileIndex","_progressChunk","_xhr","_ajax","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","getAsset","addToFileList","entry","loaded","replaceInFileList","pack","overwrite","script","binary","spritesheet","urls","autoDecode","audiosprite","atlasURL","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","xmlURL","domparser","DOMParser","parseFromString","async","loadXML","atlasJSONArray","atlas","atlasJSONHash","atlasXML","removeFile","loadPack","beginLoad","loadFile","packLoadComplete","xhrLoad","responseText","nextPack","packError","success","totalLoadedPacks","fileComplete","fileError","getAudioURL","usingWebAudio","usingAudioTag","Audio","XDomainRequest","timeout","dataLoadError","ontimeout","onprogress","jsonLoadComplete","open","send","responseType","extension","lastIndexOf","nextFile","loadNext","response","that","decodeAudioData","onSoundDecode","language","defer","head","csvLoadComplete","xmlLoadComplete","previousIndex","totalLoadedFiles","info","common","getAttribute","letters","textureRect","kernings","second","autoplayKey","autoplay","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","startTime","currentTime","durationMS","stopTime","pausedPosition","currentMarker","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","masterGain","createGain","createGainNode","gain","_sound","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","onFadeComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","isDecoded","forceRestart","noteOff","createBufferSource","noteGrainOn","decode","muted","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","mute","_codeMuted","_unlockSource","noAudio","channels","fakeiOSTouchLock","unlock","disableAudio","disableWebAudio","noteOn","stopAll","soundData","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","columnWidth","renderShadow","currentAlpha","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","inputInfo","spriteBounds","filled","rectangle","ropeSegments","segment","spriteInfo","inCamera","spriteCoords","lineInfo","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","rgba","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","q","hueToColor","updateColor","HSVtoRGB","color32","getColor32","componentToHex","hexToRGB","exec","webToColor","web","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","arcade","ninja","chipmunk","CHIPMUNK","P2","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","TILE_BIAS","forceX","skipQuadTree","_overlap","_maxOverlap","_velocity1","_velocity2","_newVelocity1","_newVelocity2","_average","_mapData","_result","_total","_angle","updateMotion","_velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","_drag","object1","object2","overlapCallback","processCallback","collideHandler","len2","collide","collideCallback","len1","overlapOnly","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","collideGroupVsSelf","sprite1","sprite2","separate","_potentials","group1","group2","tilemapLayer","getTiles","tilePadding","separateTile","body1","body2","separateX","separateY","immovable","deltaAbsX","deltaX","embedded","touching","none","overlapX","customSeparateX","bounce","mass","deltaAbsY","deltaY","overlapY","customSeparateY","moves","tile","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","blocked","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","getObjectsUnderPointer","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","allowRotation","preRotation","sourceWidth","sourceHeight","newVelocity","deltaMax","facing","collideWorldBounds","any","wasTouching","_sx","_sy","asx","asy","deltaZ","onFloor","onWall","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_explode","emitParticle","makeParticles","keys","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","setScale","at","Tile","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","collides","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","tiles","collideIndexes","collision","images","currentLayer","debugMap","_results","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","gid","getTilesetIndex","setImage","newSet","Tileset","countX","countY","columns","rows","createFromObjects","CustomClass","adjustY","createLayer","getLayerIndex","TilemapLayer","indexes","bodies","getImageIndex","getObjectIndex","setTileIndexCallback","getLayer","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","getTileRight","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","skip","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","tileColor","debugAlpha","debugColor","debugFill","debugFillColor","debugCallbackColor","scrollFactorX","scrollFactorY","rayStepRate","_mc","ga","dw","dh","tl","prevX","prevY","updateMax","scrollX","scrollY","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coords","wy","wx","lenY","_column","lenX","renderDebug","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","tilewidth","tileheight","opacity","firstgid","tileproperties","tileProperties","imageheight","imagewidth","polyline","polygon","ellipse","sid","drawCoords","setSpacing",1,"PcZj9L","Buffer","subject","encoding","stringtrim","coerce","byteLength","buf","augment","xUint8Array","isBuffer","isArrayIsh","readUInt8","write","_hexWrite","string","remaining","strLen","byte","_charsWritten","_utf8Write","blitBuffer","utf8ToBytes","_asciiWrite","asciiToBytes","_binaryWrite","_base64Write","base64ToBytes","BufferWrite","BufferToString","ProxyBuffer","_proxy","_hexSlice","_utf8Slice","_asciiSlice","_binarySlice","_base64Slice","BufferToJSON","BufferCopy","target_start","bytes","fromByteArray","decodeUtf8Char","ret","toHex","BufferSlice","BufferReadUInt8","noAssert","_readUInt16","dv","xDataView","xArrayBuffer","setUint8","getUint16","_dataview","BufferReadUInt16LE","BufferReadUInt16BE","_readUInt32","getUint32","BufferReadUInt32LE","BufferReadUInt32BE","BufferReadInt8","getInt8","_readInt16","getInt16","BufferReadInt16LE","BufferReadInt16BE","_readInt32","getInt32","BufferReadInt32LE","BufferReadInt32BE","_readFloat","getFloat32","BufferReadFloatLE","BufferReadFloatBE","_readDouble","getFloat64","BufferReadDoubleLE","BufferReadDoubleBE","BufferWriteUInt8","verifuint","_writeUInt16","setUint16","getUint8","BufferWriteUInt16LE","BufferWriteUInt16BE","_writeUInt32","setUint32","BufferWriteUInt32LE","BufferWriteUInt32BE","BufferWriteInt8","verifsint","setInt8","_writeInt16","setInt16","BufferWriteInt16LE","BufferWriteInt16BE","_writeInt32","setInt32","BufferWriteInt32LE","BufferWriteInt32BE","_writeFloat","verifIEEE754","setFloat32","BufferWriteFloatLE","BufferWriteFloatBE","_writeDouble","setFloat64","BufferWriteDoubleLE","BufferWriteDoubleBE","BufferFill","BufferInspect","INSPECT_MAX_BYTES","BufferToArrayBuffer","_browserSupport","foo","_arr","byteOffset","browserSupport","toLocaleString","toJSON","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","inspect","toArrayBuffer","_isBuffer","proxyBuffer","proxy","Proxy","ProxyHandler","defaultValue","byteArray","encodeURIComponent","toByteArray","dst","message","TA","DataView","SlowBuffer","poolSize","isEncoding","totalLength","base64-js","typedarray","native-buffer-browserify",3,"b64ToByteArray","b64","placeHolders","lookup","uint8ToBase64","uint8","tripletToBase64","extraBytes",4,"configureProperties","getOwnPropertyNames","props","writable","enumerable","configurable","makeArrayAccessors","makeArrayAccessor","_getter","_setter","MAX_ARRAY_LENGTH","RangeError","as_signed","bits","as_unsigned","packI8","unpackI8","packU8","unpackU8","packU8Clamped","packI16","unpackI16","packU16","unpackU16","packI32","unpackI32","packU32","unpackU32","packIEEE754","ebits","fbits","roundToEven","bias","LN2","unpackIEEE754","NaN","unpackF64","packF64","unpackF32","packF32","ECMAScript","opts","ophop","Class","HasProperty","HasOwnProperty","IsCallable","ToInt32","ToUint32","desc","__defineGetter__","__defineSetter__","makeConstructor","bytesPerElement","unpack","ctor","sequence","BYTES_PER_ELEMENT","ArrayBufferView","_pack","_unpack","SyntaxError","_bytes","Int16Array","Float64Array","makeGetter","arrayType","uint8Array","Boolean","IS_BIG_ENDIAN","makeSetter","byteView","typeArray","u16array","u8array",2,"canSetImmediate","setImmediate","canPost","postMessage","queue","ev","title","browser","env","argv","cwd","chdir","Scalar","lineInt","l1","l2","precision","det","eq","segmentsIntersect","q1","q2","da","db","./Scalar","__browserify_Buffer","__browserify_process","leftOn","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","bc","magA","magB","acos","sqdist",5,"getIntersectionPoint","makeCCW","br","isReflex","tmpLine1","tmpLine2","canSee","targetPoly","getCutEdges","tmp1","tmp2","tmpPoly","nDiags","decomp","edges","cutEdges","polys","cutEdge","isSimple","quickDecomp","reflexVertices","steinerPoints","maxlevel","upperInt","lowerInt","upperDist","lowerDist","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","removeCollinearPoints","./Line","./Point",6,7,"./Polygon",8,"description","author","keywords","main","engines","repository","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-watch","grunt-browserify","grunt-contrib-concat","dependencies","poly-decomp",9,"AABB","lowerBound","vec2","upperBound","setFromPoints","skinSize","cosAngle","sinAngle","overlaps","../math/vec2","../utils/Utils",10,"Broadphase","boundingVolumeType","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","sub","d2","squaredLength","boundingRadius","aabbCheck","getAABB","boundingVolumeCheck","canCollide","STATIC","KINEMATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body",11,"GridBroadphase","defaults","xmin","xmax","ymin","ymax","nx","ny","binsizeX","binsizeY","Ncolliding","bins","Nbins","xmult","ymult","bi","lowerX","lowerY","upperX","upperY","xi1","yi1","xi2","yi2","bin","NbodiesInBin","bj","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane",12,"NaiveBroadphase","../shapes/Shape",13,"Narrowphase","contactEquations","frictionEquations","enableFriction","slipForce","frictionCoefficient","surfaceVelocity","reuseObjects","reusableContactEquations","reusableFrictionEquations","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","pic_r1","lastCross","crossLength","ContactEquation","FrictionEquation","Convex","Shape","yAxis","fromValues","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","collidedLastStep","id1","id2","eqs","ce","fe","rfe","rce","appendArray","createContactEquation","shapeA","shapeB","firstImpact","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","LINE","CONVEX","convexLine","convexBody","lineBody","lineShape","lineOffset","lineAngle","justTest","RECTANGLE","lineRectangle","rectangleBody","rectangleShape","rectangleOffset","rectangleAngle","convexCapsule_tempRect","convexCapsule_tempVec","CAPSULE","convexCapsule","convexPosition","capsuleBody","capsulePosition","capsuleAngle","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","linePosition","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","si","ai","sj","aj","enableFrictionBefore","circlePosi","circlePosj","circleCircle","lineLine","positionA","angleA","positionB","angleB","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","particleBody","particleShape","particlePosition","particleAngle","circleLine","CIRCLE","circleBody","circleShape","circleOffset","circleAngle","lineRadius","circleRadius","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","radiusSum","pos0","pos1","circleCapsule","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","convexToparticle","minEdgeNormal","offsetA","offsetB","radiusA","radiusB","planeConvex","numReported","particlePlane","circleParticle","planeCapsule_tmpCircle","planeCapsule_tmp1","planeCapsule_tmp2","planeCapsule","capsuleOffset","end1","end2","numContacts1","circlePlane","numContacts2","numTotal","planeToCircle","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","edge","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","elementWidth","minCandidateNormal","idxA","idxB","convexHeightfield_v0","convexHeightfield_v1","convexHeightfield_tilePos","convexHeightfield_tempConvexShape","convexHeightfield","convexPos","tilePos","tileConvex","../equations/ContactEquation","../equations/Equation","../equations/FrictionEquation","../shapes/Convex","../shapes/Rectangle","../utils/TupleDictionary",14,"SAPBroadphase","axisList","axisIndex","_addBodyHandler","_removeBodyHandler","sortAxisList","aabbNeedsUpdate","updateAABB",15,"Constraint","collideConnected","wakeUpBodies","equations","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","setRelaxation",16,"DistanceConstraint","localAnchorA","localAnchorB","worldAnchorA","worldAnchorB","maxForce","ri","rj","computeGq","setMaxForce","upperLimitEnabled","upperLimit","lowerLimitEnabled","lowerLimit","normalEquation","violating","minForce","rixn","rjxn","getMaxForce","./Constraint",17,"GearConstraint","AngleLockEquation","setMaxTorque","maxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation",18,"LockConstraint","localAngleB","rot","localOffsetB","xAxis",19,"PrismaticConstraint","localAxisA","trans","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","upperLimitEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vj","wi","wj","gmult","worldAxisA","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","setLimits","lower","upper","../equations/RotationalLockEquation",20,"RevoluteConstraint","pivotA","pivotB","worldPivot","localPivotA","localPivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","getMotorSpeed","../equations/RotationalVelocityEquation",21,"./Equation",22,"computeB","GW","Gq","GiMf","computeGiMf",23,"ARRAY_TYPE","timeStep","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassSolve","invMassj","invIi","invInertiaSolve","invIj","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps",24,"getSlipForce",25,"worldVectorA","worldVectorB",26,27,"EventEmitter","listenerArray",28,"ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material",29,30,"GetArea","sum",31,"crossVZ","vec","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","mul","div","squaredDistance","sqrDist","sqrLen","negate",32,"_idCounter","shapes","shapeOffsets","shapeAngles","invMass","inertia","invInertia","fixedRotation","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","gravityScale","timeLastSleepy","concavePath","_wakeUpAfterNarrowphase","updateMassProperties","updateSolveMassProperties","setDensity","density","totalArea","getArea","shapeAABB","bodyAngle","computeAABB","updateBoundingRadius","addShape","removeShape","Icm","computeMomentOfInertia","Body_applyForce_r","applyForce","rotForce","toWorldFrame","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","idleTime","wakeUpEvent","sleep","sleepEvent","sleepTick","dontSleep","speedSquared","speedLimitSquared","SLEEPY","getVelocityFromPosition","store","getAngularVelocityFromPosition","overlapKeeper","bodiesAreOverlapping","sleepyEvent","../collision/AABB","../events/EventEmitter",33,"LinearSpring","Spring","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","worldDistance","restLength","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f","./Spring",34,"RotationalSpring","restAngle",35,36,"Capsule","GSSolver","Heightfield","Plane","Solver","../package.json","./collision/AABB","./collision/Broadphase","./collision/GridBroadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/LinearSpring","./objects/RotationalSpring","./objects/Spring","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Rectangle","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/Utils","./world/World",37,"updateArea","./Shape",38,39,"polyk","tmpVec1","tmpVec2","projectOntoLocalAxis","projectOntoWorldAxis","shapeOffset","shapeAngle","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","numer","../math/polyk",40,"maxValue","minValue",41,42,43,44,"./Convex",45,"collisionGroup","collisionMask","material","sensor",46,"GS","iterations","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","solve","sortEquations","iter","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","updateMultipliers","invDt","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver",47,"equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","addEquation","removeEquation","ISLAND",48,"OverlapKeeper","overlappingShapesLastState","overlappingShapesCurrentState","recordPool","tmpDict","tmpArray1","OverlapKeeperRecord","lastObject","getByKey","currentObject","setOverlapping","getNewOverlaps","getDiff","getEndOverlaps","dictA","dictB","lastData","isNewOverlap","idA","idB","getNewBodyOverlaps","getBodyDiff","getEndBodyOverlaps","accumulator","./TupleDictionary","./Utils",49,"getKey","dict",50,"howmany",51,"Island","bodyIds",52,"IslandManager","_nodePool","_islandPool","islands","IslandNode","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","neighbors","ni","nj","./Island","./IslandNode",53,54,"springs","disabledBodyCollisionPairs","solver","narrowphase","islandManager","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","doProfiling","lastStepTime","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","bodiesToBeRemoved","fixedStepTime","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","contactEquation","postBroadphaseEvent","pairs","sleepMode","NO_SLEEPING","beginContactEvent","endContactEvent","preSolveEvent","performance","nowOffset","timing","navigationStart","BODY_SLEEPING","ISLAND_SLEEPING","addConstraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","removeConstraint","step_mg","xiw","xjw","interpvelo","timeSinceLastCalled","maxSubSteps","internalStep","internalSteps","t0","h_div_dt","endOverlaps","t1","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","Nshapesi","Nshapesj","runNarrowphase","integrateBody","removeBody","ib_fhMinv","ib_velodt","minv","velo","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","addSpring","removeSpring","addBody","getBodyById","disableBodyCollision","enableBodyCollision","cs","cms","fromJSON","hitTest_tmp1","hitTest_zero","hitTest_tmp2","pb","ps","pa","zero","NS","setGlobalEquationParameters","parameters","setGlobalStiffness","setGlobalRelaxation","../../package.json","../collision/NaiveBroadphase","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/Constraint","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/LinearSpring","../objects/RotationalSpring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","../utils/OverlapKeeper","./IslandManager","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","removeBodyNextStep","setImpactEvents","impactHandler","setPostBroadphaseCallback","postBroadphaseHandler","_bodyCallbacks","_bodyCallbackContext","_groupCallbacks","_groupCallbackContext","setCollisionGroup","setWorldMaterial","updateBoundsCollisionGroup","impactCallback","createDistanceConstraint","getBody","createGearConstraint","createRevoluteConstraint","createLockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","constraint","setMaterial","createMaterial","createContactMaterial","getSprings","getConstraints","filterStatic","physicsPosition","query","createCollisionGroup","bitmask","createSpring","worldA","worldB","localA","localB","createRotationalSpring","createBody","addPolygon","createParticle","convertCollisionObjects","clearTilemapLayerBodies","convertTilemap","optimize","addRectangle","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","flatten","getFixtureByKey","getGroup","groupID","_ref","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","_groupCallbacksContext","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","setZeroRotation","setZeroVelocity","setZeroDamping","rotateLeft","rotateRight","moveForward","moveBackward","thrust","moveLeft","moveRight","resetDamping","resetMass","clearShapes","shapeChanged","addCircle","addPlane","addParticle","addLine","addCapsule","setCircle","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","generatedShapes","categoryBits","maskBits","isSensor","polygons","loadPolygon","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","updateSpriteTransform","lw","vrot","_j","_ref1","randomPastelHex","drawConvex","drawPlane","drawLine","drawRectangle","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"phaser.min.js","sources":["phaser.js"],"names":["root","this","PIXI","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","blendModes","NORMAL","ADD","MULTIPLY","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","scaleModes","DEFAULT","LINEAR","NEAREST","_UID","Float32Array","Uint16Array","Array","INTERACTION_FREQUENCY","AUTO_PREVENT_DEFAULT","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","dontSayHello","defaultRenderOptions","view","transparent","antialias","preserveDrawingBuffer","resolution","clearBeforeRender","sayHello","type","navigator","userAgent","toLowerCase","indexOf","args","console","log","apply","window","Polygon","points","prototype","slice","call","arguments","Point","p","i","il","length","push","x","y","closed","clone","contains","inside","j","xi","yi","xj","yj","intersect","constructor","Matrix","a","b","c","d","tx","ty","fromArray","array","toArray","transpose","pos","newPos","applyInverse","id","translate","scale","rotate","angle","cos","sin","a1","c1","tx1","append","matrix","b1","d1","identity","identityMatrix","DisplayObject","position","pivot","rotation","alpha","visible","hitArea","buttonMode","renderable","parent","stage","worldAlpha","_interactive","defaultCursor","worldTransform","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","Object","defineProperty","get","set","value","dirty","item","isMask","_filters","passes","filterPasses","_filterBlock","target","_generateCachedSprite","_destroyCachedSprite","updateTransform","pt","wt","rotationCache","getBounds","EmptyRectangle","getLocalBounds","setStageReference","generateTexture","scaleMode","renderer","bounds","renderTexture","RenderTexture","width","height","render","updateCache","toGlobal","toLocal","from","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","texture","resize","tempFilters","filters","_tempMatrix","anchor","destroy","DisplayObjectContainer","children","create","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","mask","start","popMask","popFilter","tint","blendMode","shader","baseTexture","hasLoaded","onTextureUpdate","onTextureUpdateBind","bind","on","frame","setTexture","cachedTint","w0","w1","h0","h1","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","valid","globalAlpha","roundPixels","setTransform","smoothProperty","dx","trim","dy","tintedTexture","CanvasTinter","getTintedTexture","drawImage","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","Texture","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","shaderManager","setShader","fastShader","transform","isRotated","childTransform","FilterBlock","Text","text","style","canvas","document","createElement","getContext","fromCanvas","setText","setStyle","updateText","font","fill","align","stroke","strokeThickness","wordWrap","wordWrapWidth","dropShadow","dropShadowAngle","dropShadowDistance","dropShadowColor","toString","outputText","lines","split","lineWidths","maxLineWidth","fontProperties","determineFontProperties","lineWidth","measureText","max","lineHeight","fontSize","isCocoonJS","clearRect","strokeStyle","textBaseline","linePositionX","linePositionY","fillStyle","xShadowOffset","yShadowOffset","ascent","fillText","strokeText","updateTexture","fontStyle","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","ceil","baseline","fillRect","imagedata","getImageData","data","pixels","line","idx","descent","result","spaceLeft","words","wordWidth","wordWidthWithSpace","destroyBaseTexture","BitmapText","textWidth","textHeight","_pool","fontName","parseInt","fonts","size","prevCharCode","chars","charCode","charCodeAt","test","charAt","charData","kerning","xOffset","yOffset","xAdvance","lineAlignOffsets","alignOffset","lenChildren","lenChars","pop","Stage","backgroundColor","interactive","interactionManager","InteractionManager","setBackgroundColor","setInteractionDelegate","domElement","setTargetDomElement","update","backgroundColorSplit","hex2rgb","hex","substr","backgroundColorString","getMousePosition","mouse","global","lastTime","vendors","requestAnimationFrame","cancelAnimationFrame","callback","currTime","Date","getTime","timeToCall","setTimeout","clearTimeout","requestAnimFrame","rgb2hex","rgb","Function","thisArg","bound","boundArgs","concat","TypeError","F","proto","AjaxRequest","activexmodes","ActiveXObject","XMLHttpRequest","e","canUseNewCanvasBlendModes","getNextPowerOfTwo","number","EventTarget","obj","mixin","listeners","eventName","_listeners","emit","dispatchEvent","__isEventObject","Event","fn","stoppedImmediate","stopped","addEventListener","once","onceHandlerWrapper","self","off","_originalHandler","removeEventListener","list","removeAllListeners","name","content","timeStamp","now","stopPropagation","stopImmediatePropagation","PolyK","Triangulate","sign","n","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","vi","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","u","v","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","src","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","PixiShader","program","textureCount","firstRun","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","z","w","_dirty","defaultRenderer","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","WebGLGraphics","renderGraphics","graphics","webGLData","projection","offset","primitiveShader","updateGraphics","webGL","_webGL","mode","stencilManager","pushStencil","drawElements","TRIANGLE_FAN","UNSIGNED_SHORT","indices","popStencil","uniform2f","uniform3fv","uniform1f","bindBuffer","ARRAY_BUFFER","buffer","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","TRIANGLE_STRIP","lastIndex","clearDirty","graphicsData","reset","graphicsDataPool","Graphics","POLY","shape","switchMode","buildComplexPoly","buildPoly","buildLine","RECT","buildRectangle","CIRC","ELIP","buildCircle","RREC","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","fillColor","fillAlpha","r","g","verts","vertPos","tempPoints","radius","recPoints","quadraticBezierCurve","vecPos","triangles","fromX","fromY","cpX","cpY","toX","toY","getPt","n1","n2","perc","diff","xa","ya","xb","yb","circleData","totalSegs","seg","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","a2","b2","c2","denom","pdist","dist","indexCount","indexStart","lineColor","lineAlpha","sqrt","abs","createBuffer","glPoints","bufferData","STATIC_DRAW","glIndicies","glContexts","WebGLRenderer","options","contextLostBound","handleContextLost","contextRestoredBound","handleContextRestored","_contextOptions","premultipliedAlpha","stencil","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","setContext","contextLost","__stage","removeEvents","_interactiveEventsAdded","setTarget","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","clear","COLOR_BUFFER_BIT","renderDisplayObject","displayObject","setBlendMode","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","_powerOf2","event","preventDefault","blendModesWebGL","ONE","ONE_MINUS_SRC_ALPHA","SRC_ALPHA","DST_ALPHA","DST_COLOR","blendModeWebGL","blendFunc","maskData","stencilStack","reverse","count","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","EQUAL","DECR","INCR","_currentGraphics","complexPrimitiveShader","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","numVerts","numIndices","vertices","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","DYNAMIC_DRAW","sprite","uvs","_uvs","verticies","aX","aY","x0","y0","renderTilingSprite","tilingSprite","tilingTexture","TextureUvs","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","createWebGLTexture","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","temp","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","roundColor","stringColor","tintCache","tintMethod","convertTintToImage","tintImage","Image","toDataURL","tintWithMultiply","tintWithOverlay","tintWithPerPixel","rgbValues","pixelData","putImageData","step","cacheStepsPerColorChannel","min","canUseMultiply","CanvasRenderer","refresh","screencanvas","beginPath","moveTo","lineTo","closePath","strokeRect","arc","h","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","pts","rx","ry","maxRadius","quadraticCurveTo","len","rect","Strip","colors","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","strip","centerX","centerY","normX","normY","u0","u1","u2","v0","v1","v2","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","updateFrame","Rope","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","refreshTexture","generateTilingTexture","needsUpdate","updateWebGLTexture","__tilePattern","createPattern","forcePowerOfTwo","targetWidth","targetHeight","originalTexture","isFrame","newTextureRequired","canvasBuffer","isTiling","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","scope","onload","onerror","imageUrl","_pixiId","glTexture","updateSourceImage","newSrc","image","crossOrigin","TextureCacheIdGenerator","FrameCache","noFrame","requiresUpdate","setFrame","onBaseTextureLoaded","onLoaded","destroyBase","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","updateBase","realResolution","getImage","getBase64","getCanvas","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","canvasPixels","tempMatrix","exports","module","define","amd","Phaser","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","Utils","getProperty","prop","parts","last","l","current","setProperty","transposeArray","rotateArray","direction","parseDimension","dimension","f","innerWidth","innerHeight","shuffle","floor","random","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","extend","copy","copyIsArray","deep","isArray","to","o","childNodes","cloneNode","arg","forEach","fun","t","Uint32Array","CheapArray","assert","warn","Circle","diameter","_diameter","_radius","circumference","setTo","copyFrom","copyTo","dest","distance","round","distanceRounded","output","circumferencePoint","asDegrees","out","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","invert","add","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","atan2","angleSq","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","requiredAngle","centroid","pointslength","parse","xProp","yProp","centerOn","floorAll","inflate","containsRect","intersection","tolerance","intersectsRaw","union","empty","inflatePoint","containsRaw","rw","rh","containsPoint","volume","aabb","xMax","Number","MIN_VALUE","xMin","MAX_VALUE","yMax","yMin","Line","fromSprite","startSprite","endSprite","useCenter","center","asSegment","intersectsPoints","pointOnLine","pointOnSegment","coordinatesOnLine","stepRate","results","sx","sy","err","e2","uc","ua","ub","Ellipse","normx","normy","_points","p1","p2","avgHeight","area","currentPath","boundsPadding","webGLDirty","cachedSpriteDirty","destroyCachedSprite","lineStyle","drawShape","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","startX","startY","sweep","segs","theta","theta2","cTheta","sTheta","segMinus","remainder","real","beginFill","filling","endFill","drawRect","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","updateCachedSpriteTexture","updateBounds","RRECT","cachedSprite","GraphicsData","Camera","game","world","screenView","deadzone","roundPx","atLimit","_edge","_position","_targetPosition","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","follow","helper","unfollow","focusOn","setPosition","focusOnXY","updateTarget","checkBounds","setBoundsToWorld","setSize","State","make","camera","cache","input","load","math","sound","time","tweens","particles","physics","rnd","preload","loadUpdate","loadRender","paused","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","boot","onPause","pause","onResume","resume","onLoadComplete","loadComplete","state","autoStart","newState","isBooted","remove","callbackContext","clearWorld","clearCache","checkState","restart","dummy","preUpdate","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","removeAll","debug","link","unlink","getCurrentState","preRender","renderType","LinkedList","next","prev","first","callAll","entity","ArrayList","exists","getIndex","setAll","Signal","_bindings","_prevParams","dispatch","memorize","_shouldPropagate","active","validateListener","listener","fnName","replace","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","signal","_isOnce","_signal","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_backgroundColor","config","parseConfig","Canvas","getOffset","_this","_onChange","visibilityChange","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","onpagehide","onpageshow","onblur","onfocus","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","hexToColor","getColor","getRGB","RGBtoString","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","alive","ignoreDestroy","classType","cursor","cameraOffset","enableBodyDebug","onDestroy","_sortProperty","_cache","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","events","onAddedToGroup","addMultiple","addAt","updateZ","getAt","createMultiple","quantity","resetCursor","previous","swap","child1","bringToTop","sendToBack","moveUp","moveDown","xy","oldChild","newChild","onRemovedFromGroup","hasProperty","operation","force","checkProperty","checkAlive","checkVisible","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","existsValue","callbackFromArray","method","methodLength","contextLength","renderOrderID","predicate","checkExists","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","getFirstAlive","getFirstDead","getTop","getBottom","countLiving","countDead","getRandom","destroyPhase","removeBetween","destroyChildren","soft","World","_definedSize","setBounds","wrap","useBounds","horizontal","vertical","integerInRange","FlexGrid","manager","boundsCustom","boundsFluid","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFluidInversed","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","multiplier","layers","createCustomLayer","addToWorld","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","onResize","geom","uuid","grid","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","ScaleManager","minWidth","maxWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","pageAlignHorizontally","pageAlignVertically","maxIterations","enterLandscape","enterPortrait","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","enterFullScreen","leaveFullScreen","orientation","outerWidth","outerHeight","scaleFactor","scaleFactorInversed","margin","aspectRatio","sourceAspectRatio","fullScreenScaleMode","NO_SCALE","parentIsWindow","parentNode","parentScaleFactor","trackParentInterval","onResizeContext","_scaleMode","_check","_nextParentCheck","_parentBounds","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","getElementById","getBoundingClientRect","newWidth","newHeight","updateDimensions","_checkOrientation","checkOrientation","_checkResize","checkResize","_fullScreenChange","fullScreenChange","cocoonJS","setResizeCallback","setMinMax","forceOrientation","checkOrientationState","isLandscape","wasLandscape","isPortrait","iPad","webApp","desktop","android","chrome","scrollTo","_iterations","setInterval","setScreenSize","documentElement","setMaximum","isFullScreen","setExactFit","setShowAll","clearInterval","marginLeft","marginTop","availableWidth","availableHeight","startFullScreen","fullscreen","smoothed","fullscreenKeyboard","requestFullscreen","Element","ALLOW_KEYBOARD_INPUT","stopFullScreen","cancelFullscreen","Game","physicsConfig","isRunning","raf","net","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","enableDebug","RandomDataGenerator","_onBoot","readyState","cordova","seed","body","Device","setUpRenderer","checkFullScreenSupport","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Net","Debug","showDebugHeader","RequestAnimationFrame","webAudio","addToDOM","enableStep","disableStep","removeFromDOM","setMute","unsetMute","hitCanvas","hitContext","moveCallbacks","moveCallback","moveCallbackContext","pollRate","disabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","currentPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","Pointer","Mouse","Keyboard","Touch","MSPointer","Gamepad","addMoveCallback","deleteMoveCallback","addPointer","hard","resetSpeed","startPointer","totalActivePointers","updatePointer","identifier","move","stopPointer","getPointer","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","worldVisible","TileSprite","Key","keycode","enabled","isDown","isUp","altKey","ctrlKey","shiftKey","timeDown","duration","timeUp","repeats","keyCode","onHoldCallback","onHoldContext","processKeyDown","processKeyUp","justPressed","justReleased","pressEvent","onDownCallback","onPressCallback","onUpCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","addCallbacks","onPress","addKey","addKeyCapture","removeKey","removeKeyCapture","createCursorKeys","up","down","processKeyPress","clearCaptures","String","fromCharCode","A","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","UNDERSCORE","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","INSERT","DELETE","HELP","NUM_LOCK","PLUS","MINUS","mouseDownCallback","mouseMoveCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","WHEEL_UP","WHEEL_DOWN","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","onMouseOut","onMouseOver","onMouseWheel","withinGame","detail","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","onPointerDown","onPointerMove","onPointerUp","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","positionDown","positionUp","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","_highestRenderOrderID","MAX_SAFE_INTEGER","_highestRenderObject","_highestInputPriorityID","currentNode","validForInput","checked","checkPointerDown","checkPointerOver","priorityID","_pointerOutHandler","_pointerOverHandler","leave","_releasedHandler","resetMovement","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","changedTouches","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","callbacks","onConnect","onDisconnect","onAxis","onFloat","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","buttonCode","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_rawPad","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","buttons","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","GamepadButton","disconnectingIndex","axis","axisCode","buttonValue","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","consumePointerEvent","scaleLayer","_dragPhase","_wasEnabled","_tempPoint","_pointerData","isOver","isOut","timeOver","timeOut","downDuration","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","addedToGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","_draggedPointerID","updateDrag","startDrag","stopDrag","globalToLocalX","_dragPoint","dragOffset","globalToLocalY","fixedToCamera","checkBoundsRect","checkBoundsSprite","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","dragFromCenter","disableDrag","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","camerOffset","Events","onKilled","onRevived","onOutOfBounds","onEnterBounds","onAnimationStart","onAnimationComplete","onAnimationLoop","existing","object","group","tween","physicsGroup","audio","loop","audioSprite","addSprite","tileSprite","rope","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","characterWidth","characterHeight","charsPerRow","xSpacing","ySpacing","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","Tilemap","addToCache","addRenderTexture","bitmapData","BitmapData","addBitmapData","Tween","ctx","imageData","ArrayBuffer","textureFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","_anchor","_tempR","_tempG","_tempB","_circle","loadTexture","draw","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","HSLtoRGB","shiftHSL","limitValue","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","anchorX","anchorY","copyRect","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","animations","AnimationManager","autoCull","health","lifespan","checkWorldBounds","outOfBoundsKill","cropRect","_crop","_frame","elapsed","kill","stopAnimation","getFrameData","loadFrameData","checkImageKey","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","updateCrop","resetFrame","cw","ch","revive","damage","_outOfBoundsFired","play","frameRate","killOnComplete","overlap","wrapAngle","frameName","P2JS","removeFromWorld","phase","_reset","frameData","getFrame","_frameName","getFrameByName","_scroll","physicsElapsed","autoScroll","stopScroll","safeRemove","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","segments","difference","_text","_font","_fontSize","_fontWeight","_lineSpacing","_charCount","setShadow","lineCap","lineJoin","updateLine","letter","clearColors","addColor","runWordWrap","parseFloat","_align","_tint","_onOverFrameName","_onOutFrameName","_onDownFrameName","_onUpFrameName","_onOverFrameID","_onOutFrameID","_onDownFrameID","_onUpFrameID","onOverMouseOnly","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","freezeFrames","forceOut","inputEnabled","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","clearFrames","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","marker","Sound","AudioSprite","setState","drawTriangle","cull","triangle","cameraToFace","ab","cb","faceNormal","drawTriangles","point1","point2","point3","renderXY","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","FrameData","currentX","currentY","addFrame","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","characterSpacing","lineSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","Particle","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","display","box","clientTop","clientLeft","scrollTop","scrollLeft","compatMode","pageYOffset","pageXOffset","getAspectRatio","msTouchAction","overflowHidden","overflow","appendChild","setImageRenderingCrisp","msInterpolationMode","setImageRenderingBicubic","iOS","node","nodeWebkit","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","epiphany","firefox","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","silk","audioData","ogg","opus","mp3","wav","m4a","webm","iPhone","iPhone4","pixelRatio","littleEndian","support32bit","_checkOS","_checkAudio","_checkBrowser","_checkCSS3D","_checkDevice","_checkFeatures","vita","kindle","getItem","error","WebGLRenderingContext","maxTouchPoints","msPointerEnabled","pointerEnabled","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","fs","cfs","RegExp","$1","$3","process","require","audioElement","canPlayType","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","match","forceSetTimeOut","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","avg","truncate","shear","snapTo","gap","snapToFloor","snapToCeil","snapToInArray","arr","low","high","POSITIVE_INFINITY","roundTo","place","base","pow","floorTo","ceilTo","interpolateFloat","weight","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","normalizeLatitude","lat","normalizeLongitude","lng","chanceRoll","chance","numberArray","numberArrayStep","maxAdd","minSub","wrapValue","randomSign","isOdd","isEven","minProperty","maxProperty","radians","radianFactor","angleLimit","linearInterpolation","linear","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","objects","removeRandom","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","shuffleArray","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","degrees","radianToDegreesFactor","seeds","s0","s1","s2","sow","hash","integer","frac","realInRange","between","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","url","href","re","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","_tweens","_add","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_object","_pause","_resume","pauseAll","resumeAll","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_repeat","_yoyo","_reversed","_delayTime","_startTime","_easingFunction","Easing","Default","_interpolationFunction","_chainedTweens","_onStartCallbackFired","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","onStart","onLoop","onComplete","ease","yoyo","_parent","_lastChild","chain","generateData","tick","blob","reversed","times","easing","interpolation","pauseDuration","isFinite","tmp","numChainedTweens","Linear","None","Quadratic","In","Out","InOut","Cubic","Quartic","Quintic","Sinusoidal","Exponential","Circular","Elastic","asin","Back","Bounce","prevTime","pausedTime","advancedTiming","fps","fpsMin","fpsMax","msMin","msMax","deltaCap","timeCap","Timer","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","ms","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","Animation","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","_frameIndex","isPaused","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","_timeLastFrame","_timeNextFrame","useLocalFrameIndex","frameIndex","dispatchComplete","generateFrameNames","prefix","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","spacing","img","row","column","JSONData","json","cacheKey","newFrame","filename","sourceSize","spriteSourceSize","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","_canvases","_images","_textures","_sounds","_json","_xml","_physics","_tilemaps","_binary","_bitmapDatas","_bitmapFont","_urlMap","_urlResolver","_urlTemp","addDefaultImage","addMissingImage","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","addCanvas","addBinary","binaryData","addSpriteSheet","_resolveUrl","addTilemap","mapData","addTextureAtlas","atlasData","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","TEXTURE_ATLAS_XML_STARLING","addBitmapFont","xmlData","LoaderParser","bitmapFont","addPhysicsData","addText","addJSON","addXML","addImage","addSound","audioTag","decoded","isDecoding","touchLocked","reloadSound","reloadSoundComplete","updateSound","decodedSound","getBitmapData","getBitmapFont","getPhysicsData","fixtureKey","fixtures","fixture","checkKey","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkUrl","getTilemapData","map","getFrameByIndex","getTextureFrame","getTexture","getSound","getSoundData","isSoundDecoded","isSoundReady","getFrameCount","getText","getJSON","getXML","getBinary","getUrl","getKeys","removeCanvas","removeImage","removeFromPixi","removeSound","removeText","removeJSON","removeXML","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","baseURL","isLoading","progress","progressFloat","preloadSprite","onLoadStart","onFileStart","onFileComplete","onFileError","onPackComplete","useXDomainRequest","_packList","_packIndex","_fileList","_fileIndex","_progressChunk","_xhr","_ajax","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","getAsset","addToFileList","entry","loaded","replaceInFileList","pack","overwrite","script","binary","spritesheet","urls","autoDecode","audiosprite","atlasURL","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","xmlURL","domparser","DOMParser","parseFromString","async","loadXML","atlasJSONArray","atlas","atlasJSONHash","atlasXML","removeFile","loadPack","beginLoad","loadFile","packLoadComplete","xhrLoad","responseText","nextPack","packError","success","totalLoadedPacks","fileComplete","fileError","getAudioURL","usingWebAudio","usingAudioTag","Audio","XDomainRequest","timeout","dataLoadError","ontimeout","onprogress","jsonLoadComplete","open","send","responseType","extension","lastIndexOf","nextFile","loadNext","response","that","decodeAudioData","onSoundDecode","language","defer","head","csvLoadComplete","xmlLoadComplete","previousIndex","totalLoadedFiles","info","common","getAttribute","letters","textureRect","kernings","second","autoplayKey","autoplay","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","startTime","currentTime","durationMS","stopTime","pausedPosition","currentMarker","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","masterGain","createGain","createGainNode","gain","_sound","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","onFadeComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","isDecoded","forceRestart","noteOff","createBufferSource","noteGrainOn","decode","muted","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","mute","_codeMuted","_unlockSource","noAudio","channels","fakeiOSTouchLock","unlock","disableAudio","disableWebAudio","noteOn","stopAll","soundData","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","columnWidth","renderShadow","currentAlpha","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","inputInfo","spriteBounds","filled","rectangle","ropeSegments","segment","spriteInfo","inCamera","spriteCoords","lineInfo","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","rgba","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","q","hueToColor","updateColor","HSVtoRGB","color32","getColor32","componentToHex","hexToRGB","exec","webToColor","web","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","arcade","ninja","chipmunk","CHIPMUNK","P2","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","TILE_BIAS","forceX","skipQuadTree","_overlap","_maxOverlap","_velocity1","_velocity2","_newVelocity1","_newVelocity2","_average","_mapData","_result","_total","_angle","updateMotion","_velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","_drag","object1","object2","overlapCallback","processCallback","collideHandler","len2","collide","collideCallback","len1","overlapOnly","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","collideGroupVsSelf","sprite1","sprite2","separate","_potentials","group1","group2","tilemapLayer","getTiles","tilePadding","separateTile","body1","body2","separateX","separateY","immovable","deltaAbsX","deltaX","embedded","touching","none","overlapX","customSeparateX","bounce","mass","deltaAbsY","deltaY","overlapY","customSeparateY","moves","tile","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","blocked","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","getObjectsUnderPointer","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","allowRotation","preRotation","sourceWidth","sourceHeight","newVelocity","deltaMax","facing","collideWorldBounds","any","wasTouching","_sx","_sy","asx","asy","deltaZ","onFloor","onWall","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_explode","emitParticle","makeParticles","keys","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","setScale","at","Tile","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","collides","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","tiles","collideIndexes","collision","images","currentLayer","debugMap","_results","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","gid","getTilesetIndex","setImage","newSet","Tileset","countX","countY","columns","rows","createFromObjects","CustomClass","adjustY","createLayer","getLayerIndex","TilemapLayer","indexes","bodies","getImageIndex","getObjectIndex","setTileIndexCallback","getLayer","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","getTileRight","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","skip","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","tileColor","debugAlpha","debugColor","debugFill","debugFillColor","debugCallbackColor","scrollFactorX","scrollFactorY","rayStepRate","_mc","ga","dw","dh","tl","prevX","prevY","updateMax","scrollX","scrollY","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coords","wy","wx","lenY","_column","lenX","renderDebug","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","tilewidth","tileheight","opacity","firstgid","tileproperties","tileProperties","imageheight","imagewidth","polyline","polygon","ellipse","sid","drawCoords","setSpacing",1,"PcZj9L","Buffer","subject","encoding","stringtrim","coerce","byteLength","buf","augment","xUint8Array","isBuffer","isArrayIsh","readUInt8","write","_hexWrite","string","remaining","strLen","byte","_charsWritten","_utf8Write","blitBuffer","utf8ToBytes","_asciiWrite","asciiToBytes","_binaryWrite","_base64Write","base64ToBytes","BufferWrite","BufferToString","ProxyBuffer","_proxy","_hexSlice","_utf8Slice","_asciiSlice","_binarySlice","_base64Slice","BufferToJSON","BufferCopy","target_start","bytes","fromByteArray","decodeUtf8Char","ret","toHex","BufferSlice","BufferReadUInt8","noAssert","_readUInt16","dv","xDataView","xArrayBuffer","setUint8","getUint16","_dataview","BufferReadUInt16LE","BufferReadUInt16BE","_readUInt32","getUint32","BufferReadUInt32LE","BufferReadUInt32BE","BufferReadInt8","getInt8","_readInt16","getInt16","BufferReadInt16LE","BufferReadInt16BE","_readInt32","getInt32","BufferReadInt32LE","BufferReadInt32BE","_readFloat","getFloat32","BufferReadFloatLE","BufferReadFloatBE","_readDouble","getFloat64","BufferReadDoubleLE","BufferReadDoubleBE","BufferWriteUInt8","verifuint","_writeUInt16","setUint16","getUint8","BufferWriteUInt16LE","BufferWriteUInt16BE","_writeUInt32","setUint32","BufferWriteUInt32LE","BufferWriteUInt32BE","BufferWriteInt8","verifsint","setInt8","_writeInt16","setInt16","BufferWriteInt16LE","BufferWriteInt16BE","_writeInt32","setInt32","BufferWriteInt32LE","BufferWriteInt32BE","_writeFloat","verifIEEE754","setFloat32","BufferWriteFloatLE","BufferWriteFloatBE","_writeDouble","setFloat64","BufferWriteDoubleLE","BufferWriteDoubleBE","BufferFill","BufferInspect","INSPECT_MAX_BYTES","BufferToArrayBuffer","_browserSupport","foo","_arr","byteOffset","browserSupport","toLocaleString","toJSON","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","inspect","toArrayBuffer","_isBuffer","proxyBuffer","proxy","Proxy","ProxyHandler","defaultValue","byteArray","encodeURIComponent","toByteArray","dst","message","TA","DataView","SlowBuffer","poolSize","isEncoding","totalLength","base64-js","typedarray","native-buffer-browserify",3,"b64ToByteArray","b64","placeHolders","lookup","uint8ToBase64","uint8","tripletToBase64","extraBytes",4,"configureProperties","getOwnPropertyNames","props","writable","enumerable","configurable","makeArrayAccessors","makeArrayAccessor","_getter","_setter","MAX_ARRAY_LENGTH","RangeError","as_signed","bits","as_unsigned","packI8","unpackI8","packU8","unpackU8","packU8Clamped","packI16","unpackI16","packU16","unpackU16","packI32","unpackI32","packU32","unpackU32","packIEEE754","ebits","fbits","roundToEven","bias","LN2","unpackIEEE754","NaN","unpackF64","packF64","unpackF32","packF32","ECMAScript","opts","ophop","Class","HasProperty","HasOwnProperty","IsCallable","ToInt32","ToUint32","desc","__defineGetter__","__defineSetter__","makeConstructor","bytesPerElement","unpack","ctor","sequence","BYTES_PER_ELEMENT","ArrayBufferView","_pack","_unpack","SyntaxError","_bytes","Int16Array","Float64Array","makeGetter","arrayType","uint8Array","Boolean","IS_BIG_ENDIAN","makeSetter","byteView","typeArray","u16array","u8array",2,"canSetImmediate","setImmediate","canPost","postMessage","queue","ev","title","browser","env","argv","cwd","chdir","Scalar","lineInt","l1","l2","precision","det","eq","segmentsIntersect","q1","q2","da","db","./Scalar","__browserify_Buffer","__browserify_process","leftOn","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","bc","magA","magB","acos","sqdist",5,"getIntersectionPoint","poly","makeCCW","br","isReflex","tmpLine1","tmpLine2","canSee","targetPoly","getCutEdges","tmp1","tmp2","tmpPoly","nDiags","decomp","edges","cutEdges","polys","cutEdge","isSimple","quickDecomp","reflexVertices","steinerPoints","maxlevel","upperInt","lowerInt","upperDist","lowerDist","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","removeCollinearPoints","./Line","./Point",6,7,"./Polygon",8,"description","author","keywords","main","engines","repository","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-watch","grunt-browserify","grunt-contrib-concat","dependencies","poly-decomp",9,"AABB","lowerBound","vec2","upperBound","setFromPoints","skinSize","cosAngle","sinAngle","overlaps","../math/vec2","../utils/Utils",10,"Broadphase","boundingVolumeType","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","sub","d2","squaredLength","boundingRadius","aabbCheck","getAABB","boundingVolumeCheck","canCollide","STATIC","KINEMATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body",11,"GridBroadphase","defaults","xmin","xmax","ymin","ymax","nx","ny","binsizeX","binsizeY","Ncolliding","bins","Nbins","xmult","ymult","bi","lowerX","lowerY","upperX","upperY","xi1","yi1","xi2","yi2","bin","NbodiesInBin","bj","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane",12,"NaiveBroadphase","../shapes/Shape",13,"Narrowphase","contactEquations","frictionEquations","enableFriction","slipForce","frictionCoefficient","surfaceVelocity","reuseObjects","reusableContactEquations","reusableFrictionEquations","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","pic_r1","lastCross","crossLength","ContactEquation","FrictionEquation","Convex","Shape","yAxis","fromValues","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","collidedLastStep","id1","id2","eqs","ce","fe","rfe","rce","appendArray","createContactEquation","shapeA","shapeB","firstImpact","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","LINE","CONVEX","convexLine","convexBody","lineBody","lineShape","lineOffset","lineAngle","justTest","RECTANGLE","lineRectangle","rectangleBody","rectangleShape","rectangleOffset","rectangleAngle","convexCapsule_tempRect","convexCapsule_tempVec","CAPSULE","convexCapsule","convexPosition","capsuleBody","capsulePosition","capsuleAngle","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","linePosition","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","si","ai","sj","aj","enableFrictionBefore","circlePosi","circlePosj","circleCircle","lineLine","positionA","angleA","positionB","angleB","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","particleBody","particleShape","particlePosition","particleAngle","circleLine","CIRCLE","circleBody","circleShape","circleOffset","circleAngle","lineRadius","circleRadius","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","radiusSum","pos0","pos1","circleCapsule","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","convexToparticle","minEdgeNormal","offsetA","offsetB","radiusA","radiusB","planeConvex","numReported","particlePlane","circleParticle","planeCapsule_tmpCircle","planeCapsule_tmp1","planeCapsule_tmp2","planeCapsule","capsuleOffset","end1","end2","numContacts1","circlePlane","numContacts2","numTotal","planeToCircle","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","edge","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","elementWidth","minCandidateNormal","idxA","idxB","convexHeightfield_v0","convexHeightfield_v1","convexHeightfield_tilePos","convexHeightfield_tempConvexShape","convexHeightfield","convexPos","tilePos","tileConvex","../equations/ContactEquation","../equations/Equation","../equations/FrictionEquation","../shapes/Convex","../shapes/Rectangle","../utils/TupleDictionary",14,"SAPBroadphase","axisList","axisIndex","_addBodyHandler","_removeBodyHandler","sortAxisList","aabbNeedsUpdate","updateAABB",15,"Constraint","collideConnected","wakeUpBodies","equations","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","setRelaxation",16,"DistanceConstraint","localAnchorA","localAnchorB","worldAnchorA","worldAnchorB","maxForce","ri","rj","computeGq","setMaxForce","upperLimitEnabled","upperLimit","lowerLimitEnabled","lowerLimit","normalEquation","violating","minForce","rixn","rjxn","getMaxForce","./Constraint",17,"GearConstraint","AngleLockEquation","setMaxTorque","maxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation",18,"LockConstraint","localAngleB","rot","localOffsetB","xAxis",19,"PrismaticConstraint","localAxisA","trans","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","upperLimitEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vj","wi","wj","gmult","worldAxisA","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","setLimits","lower","upper","../equations/RotationalLockEquation",20,"RevoluteConstraint","pivotA","pivotB","worldPivot","localPivotA","localPivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","getMotorSpeed","../equations/RotationalVelocityEquation",21,"./Equation",22,"computeB","GW","Gq","GiMf","computeGiMf",23,"ARRAY_TYPE","timeStep","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassSolve","invMassj","invIi","invInertiaSolve","invIj","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps",24,"getSlipForce",25,"worldVectorA","worldVectorB",26,27,"EventEmitter","listenerArray",28,"ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material",29,30,"GetArea","sum",31,"crossVZ","vec","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","mul","div","squaredDistance","sqrDist","sqrLen","negate",32,"_idCounter","shapes","shapeOffsets","shapeAngles","invMass","inertia","invInertia","fixedRotation","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","gravityScale","timeLastSleepy","concavePath","_wakeUpAfterNarrowphase","updateMassProperties","updateSolveMassProperties","setDensity","density","totalArea","getArea","shapeAABB","bodyAngle","computeAABB","updateBoundingRadius","addShape","removeShape","Icm","computeMomentOfInertia","Body_applyForce_r","applyForce","rotForce","toWorldFrame","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","idleTime","wakeUpEvent","sleep","sleepEvent","sleepTick","dontSleep","speedSquared","speedLimitSquared","SLEEPY","getVelocityFromPosition","store","getAngularVelocityFromPosition","overlapKeeper","bodiesAreOverlapping","sleepyEvent","../collision/AABB","../events/EventEmitter",33,"LinearSpring","Spring","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","worldDistance","restLength","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f","./Spring",34,"RotationalSpring","restAngle",35,36,"Capsule","GSSolver","Heightfield","Plane","Solver","../package.json","./collision/AABB","./collision/Broadphase","./collision/GridBroadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/LinearSpring","./objects/RotationalSpring","./objects/Spring","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Rectangle","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/Utils","./world/World",37,"updateArea","./Shape",38,39,"polyk","tmpVec1","tmpVec2","projectOntoLocalAxis","projectOntoWorldAxis","shapeOffset","shapeAngle","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","numer","../math/polyk",40,"maxValue","minValue",41,42,43,44,"./Convex",45,"collisionGroup","collisionMask","material","sensor",46,"GS","iterations","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","solve","sortEquations","iter","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","updateMultipliers","invDt","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver",47,"equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","addEquation","removeEquation","ISLAND",48,"OverlapKeeper","overlappingShapesLastState","overlappingShapesCurrentState","recordPool","tmpDict","tmpArray1","OverlapKeeperRecord","lastObject","getByKey","currentObject","setOverlapping","getNewOverlaps","getDiff","getEndOverlaps","dictA","dictB","lastData","isNewOverlap","idA","idB","getNewBodyOverlaps","getBodyDiff","getEndBodyOverlaps","accumulator","./TupleDictionary","./Utils",49,"getKey","dict",50,"howmany",51,"Island","bodyIds",52,"IslandManager","_nodePool","_islandPool","islands","IslandNode","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","neighbors","ni","nj","./Island","./IslandNode",53,54,"springs","disabledBodyCollisionPairs","solver","narrowphase","islandManager","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","doProfiling","lastStepTime","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","bodiesToBeRemoved","fixedStepTime","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","contactEquation","postBroadphaseEvent","pairs","sleepMode","NO_SLEEPING","beginContactEvent","endContactEvent","preSolveEvent","performance","nowOffset","timing","navigationStart","BODY_SLEEPING","ISLAND_SLEEPING","addConstraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","removeConstraint","step_mg","xiw","xjw","interpvelo","timeSinceLastCalled","maxSubSteps","internalStep","internalSteps","t0","h_div_dt","endOverlaps","t1","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","Nshapesi","Nshapesj","runNarrowphase","integrateBody","removeBody","ib_fhMinv","ib_velodt","minv","velo","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","addSpring","removeSpring","addBody","getBodyById","disableBodyCollision","enableBodyCollision","cs","cms","fromJSON","hitTest_tmp1","hitTest_zero","hitTest_tmp2","pb","ps","pa","zero","NS","setGlobalEquationParameters","parameters","setGlobalStiffness","setGlobalRelaxation","../../package.json","../collision/NaiveBroadphase","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/Constraint","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/LinearSpring","../objects/RotationalSpring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","../utils/OverlapKeeper","./IslandManager","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","removeBodyNextStep","setImpactEvents","impactHandler","setPostBroadphaseCallback","postBroadphaseHandler","_bodyCallbacks","_bodyCallbackContext","_groupCallbacks","_groupCallbackContext","setCollisionGroup","setWorldMaterial","updateBoundsCollisionGroup","impactCallback","createDistanceConstraint","getBody","createGearConstraint","createRevoluteConstraint","createLockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","constraint","setMaterial","createMaterial","createContactMaterial","getSprings","getConstraints","filterStatic","physicsPosition","query","createCollisionGroup","bitmask","createSpring","worldA","worldB","localA","localB","createRotationalSpring","createBody","addPolygon","createParticle","convertCollisionObjects","clearTilemapLayerBodies","convertTilemap","optimize","addRectangle","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","flatten","getFixtureByKey","getGroup","groupID","_ref","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","_groupCallbacksContext","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","setZeroRotation","setZeroVelocity","setZeroDamping","rotateLeft","rotateRight","moveForward","moveBackward","thrust","moveLeft","moveRight","resetDamping","resetMass","clearShapes","shapeChanged","addCircle","addPlane","addParticle","addLine","addCapsule","setCircle","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","generatedShapes","categoryBits","maskBits","isSensor","polygons","loadPolygon","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","updateSpriteTransform","lw","vrot","_j","_ref1","randomPastelHex","drawConvex","drawPlane","drawLine","drawRectangle","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex"],"mappings":"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"} \ No newline at end of file diff --git a/build/phaser.min.js b/build/phaser.min.js index 93f5ea87bc..bb47614c4f 100644 --- a/build/phaser.min.js +++ b/build/phaser.min.js @@ -1,26 +1,25 @@ /* Phaser v2.1.3 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.0.0",b.blendModes={NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},b.scaleModes={DEFAULT:0,LINEAR:0,NEAREST:1},b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array):(b.Float32Array=Array,b.Uint16Array=Array),b.INTERACTION_FREQUENCY=30,b.AUTO_PREVENT_DEFAULT=!0,b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.dontSayHello=!1,b.defaultRenderOptions={view:null,transparent:!1,antialias:!1,preserveDrawingBuffer:!1,resolution:1,clearBeforeRender:!0},b.sayHello=function(a){if(!b.dontSayHello){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var c=["%c %c %c Pixi.js "+b.VERSION+" - "+a+" %c %c http://www.pixijs.com/ %c %c ♥%c♥%c♥ ","background: #ff66a5","background: #ff66a5","color: #ff66a5; background: #030307;","background: #ff66a5","background: #ffc3dc","background: #ff66a5","color: #ff2424; background: #fff","color: #ff2424; background: #fff","color: #ff2424; background: #fff"];console.log.apply(console,c)}else window.console&&console.log("Pixi.js "+b.VERSION+" - http://www.pixijs.com/");b.dontSayHello=!0}},b.Matrix=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0},b.Matrix.prototype.fromArray=function(a){this.a=a[0],this.b=a[1],this.c=a[3],this.d=a[4],this.tx=a[2],this.ty=a[5]},b.Matrix.prototype.toArray=function(a){this.array||(this.array=new b.Float32Array(9));var c=this.array;return a?(c[0]=this.a,c[1]=this.b,c[2]=0,c[3]=this.c,c[4]=this.d,c[5]=0,c[6]=this.tx,c[7]=this.ty,c[8]=1):(c[0]=this.a,c[1]=this.c,c[2]=this.tx,c[3]=this.b,c[4]=this.d,c[5]=this.ty,c[6]=0,c[7]=0,c[8]=1),c},b.Matrix.prototype.apply=function(a,c){return c=c||new b.Point,c.x=this.a*a.x+this.b*a.y+this.tx,c.y=this.c*a.x+this.d*a.y+this.ty,c},b.Matrix.prototype.applyInverse=function(a,c){c=c||new b.Point;var d=1/(this.a*this.d+this.c*-this.b);return c.x=this.d*d*a.x+-this.c*d*a.y+(this.ty*this.c-this.tx*this.d)*d,c.y=this.a*d*a.y+-this.b*d*a.x+(-this.ty*this.a+this.tx*this.b)*d,c},b.Matrix.prototype.translate=function(a,b){return this.tx+=a,this.ty+=b,this},b.Matrix.prototype.scale=function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},b.Matrix.prototype.rotate=function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},b.Matrix.prototype.append=function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},b.Matrix.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this},b.identityMatrix=new b.Matrix,b.DisplayObject=function(){this.position=new b.Point,this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.buttonMode=!1,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this._interactive=!1,this.defaultCursor="pointer",this.worldTransform=new b.Matrix,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,Object.defineProperty(b.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var b=[],c=0;c=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;ga;a++)this.children[a].updateTransform()},b.DisplayObjectContainer.prototype.getBounds=function(){if(0===this.children.length)return b.EmptyRectangle;for(var a,c,d,e=1/0,f=1/0,g=-1/0,h=-1/0,i=!1,j=0,k=this.children.length;k>j;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a,this._interactive&&(this.stage.dirty=!0);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d.setStageReference(a)}},b.DisplayObjectContainer.prototype.removeStageReference=function(){for(var a=0,b=this.children.length;b>a;a++){var c=this.children[a];c.removeStageReference()}this._interactive&&(this.stage.dirty=!0),this.stage=null},b.DisplayObjectContainer.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);var b,c;if(this._mask||this._filters){for(this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);a.spriteBatch.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),a.spriteBatch.start()}else for(b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.DisplayObjectContainer.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);this._mask&&a.maskManager.pushMask(this._mask,a);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d._renderCanvas(a)}this._mask&&a.maskManager.popMask(a)}},b.Sprite=function(a){b.DisplayObjectContainer.call(this),this.anchor=new b.Point,this.texture=a,this._width=0,this._height=0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL,this.shader=null,a.baseTexture.hasLoaded?this.onTextureUpdate():(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.on("update",this.onTextureUpdateBind)),this.renderable=!0},b.Sprite.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Sprite.prototype.constructor=b.Sprite,Object.defineProperty(b.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(b.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),b.Sprite.prototype.setTexture=function(a){this.texture=a,this.cachedTint=16777215},b.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height)},b.Sprite.prototype.getBounds=function(a){var b=this.texture.frame.width,c=this.texture.frame.height,d=b*(1-this.anchor.x),e=b*-this.anchor.x,f=c*(1-this.anchor.y),g=c*-this.anchor.y,h=a||this.worldTransform,i=h.a,j=h.c,k=h.b,l=h.d,m=h.tx,n=h.ty,o=i*e+k*g+m,p=l*g+j*e+n,q=i*d+k*g+m,r=l*g+j*d+n,s=i*d+k*f+m,t=l*f+j*d+n,u=i*e+k*f+m,v=l*f+j*e+n,w=-1/0,x=-1/0,y=1/0,z=1/0;y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,z=z>p?p:z,z=z>r?r:z,z=z>t?t:z,z=z>v?v:z,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,x=p>x?p:x,x=r>x?r:x,x=t>x?t:x,x=v>x?v:x;var A=this._bounds;return A.x=y,A.width=w-y,A.y=z,A.height=x-z,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){var b,c;if(this._mask||this._filters){var d=a.spriteBatch;for(this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);d.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),d.start()}else for(a.spriteBatch.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.Sprite.prototype._renderCanvas=function(a){if(!(this.visible===!1||0===this.alpha||this.texture.crop.width<=0||this.texture.crop.height<=0)){if(this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,a.context.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a),this.texture.valid){var c=this.texture.baseTexture.resolution/a.resolution;a.context.globalAlpha=this.worldAlpha,a.roundPixels?a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution|0,this.worldTransform.ty*a.resolution|0):a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution,this.worldTransform.ty*a.resolution),a.smoothProperty&&a.scaleMode!==this.texture.baseTexture.scaleMode&&(a.scaleMode=this.texture.baseTexture.scaleMode,a.context[a.smoothProperty]=a.scaleMode===b.scaleModes.LINEAR);var d=this.texture.trim?this.texture.trim.x-this.anchor.x*this.texture.trim.width:this.anchor.x*-this.texture.frame.width,e=this.texture.trim?this.texture.trim.y-this.anchor.y*this.texture.trim.height:this.anchor.y*-this.texture.frame.height;16777215!==this.tint?(this.cachedTint!==this.tint&&(this.cachedTint=this.tint,this.tintedTexture=b.CanvasTinter.getTintedTexture(this,this.tint)),a.context.drawImage(this.tintedTexture,0,0,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)):a.context.drawImage(this.texture.baseTexture.source,this.texture.crop.x,this.texture.crop.y,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)}for(var f=0,g=this.children.length;g>f;f++)this.children[f]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},b.Sprite.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache'+this);return new b.Sprite(c)},b.Sprite.fromImage=function(a,c,d){var e=b.Texture.fromImage(a,c,d);return new b.Sprite(e)},b.SpriteBatch=function(a){b.DisplayObjectContainer.call(this),this.textureThing=a,this.ready=!1},b.SpriteBatch.prototype=Object.create(b.DisplayObjectContainer.prototype),b.SpriteBatch.prototype.constructor=b.SpriteBatch,b.SpriteBatch.prototype.initWebGL=function(a){this.fastSpriteBatch=new b.WebGLFastSpriteBatch(a),this.ready=!0},b.SpriteBatch.prototype.updateTransform=function(){b.DisplayObject.prototype.updateTransform.call(this)},b.SpriteBatch.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||!this.children.length||(this.ready||this.initWebGL(a.gl),a.spriteBatch.stop(),a.shaderManager.setShader(a.shaderManager.fastShader),this.fastSpriteBatch.begin(this,a),this.fastSpriteBatch.render(this),a.spriteBatch.start())},b.SpriteBatch.prototype._renderCanvas=function(a){if(this.visible&&!(this.alpha<=0)&&this.children.length){var c=a.context;c.globalAlpha=this.worldAlpha,b.DisplayObject.prototype.updateTransform.call(this);for(var d=this.worldTransform,e=!0,f=0;fi;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(c.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}c.descent=i-g,c.fontSize=c.ascent+c.descent,b.Text.fontPropertiesCache[a]=c}return c},b.Text.prototype.wordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g],e=this.style.wordWrapWidth-h):(e-=i,b+=" "+f[g])}d=2?parseInt(c[c.length-2],10):b.BitmapText.fonts[this.fontName].size,this.dirty=!0,this.tint=a.tint},b.BitmapText.prototype.updateText=function(){for(var a=b.BitmapText.fonts[this.fontName],c=new b.Point,d=null,e=[],f=0,g=[],h=0,i=this.fontSize/a.size,j=0;j=j;j++){var n=0;"right"===this.style.align?n=f-g[j]:"center"===this.style.align&&(n=(f-g[j])/2),m.push(n)}var o=this.children.length,p=e.length,q=this.tint||16777215;for(j=0;p>j;j++){var r=o>j?this.children[j]:this._pool.pop();r?r.setTexture(e[j].texture):r=new b.Sprite(e[j].texture),r.position.x=(e[j].position.x+m[e[j].line])*i,r.position.y=e[j].position.y*i,r.scale.x=r.scale.y=i,r.tint=q,r.parent||this.addChild(r)}for(;this.children.length>p;){var s=this.getChildAt(this.children.length-1);this._pool.push(s),this.removeChild(s)}this.textWidth=f*i,this.textHeight=(c.y+a.lineHeight)*i},b.BitmapText.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),b.DisplayObjectContainer.prototype.updateTransform.call(this)},b.BitmapText.fonts={},b.Stage=function(a){b.DisplayObjectContainer.call(this),this.worldTransform=new b.Matrix,this.interactive=!0,this.interactionManager=new b.InteractionManager(this),this.dirty=!0,this.stage=this,this.stage.hitArea=new b.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a)},b.Stage.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},b.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var a=0,b=this.children.length;b>a;a++)this.children[a].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},b.Stage.prototype.setBackgroundColor=function(a){this.backgroundColor=a||0,this.backgroundColorSplit=b.hex2rgb(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},b.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},function(a){for(var b=0,c=["ms","moz","webkit","o"],d=0;d>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){return function(a){function b(){for(var d=arguments.length,f=new Array(d);d--;)f[d]=arguments[d];return f=e.concat(f),c.apply(this instanceof b?this:a,f)}var c=this,d=arguments.length-1,e=[];if(d>0)for(e.length=d;d--;)e[d]=arguments[d+1];if("function"!=typeof c)throw new TypeError;return b.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(c.prototype),b}}()),b.AjaxRequest=function(){var a=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new window.XMLHttpRequest:!1;for(var b=0;b0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.EventTarget={call:function(a){a&&(a=a.prototype||a,b.EventTarget.mixin(a))},mixin:function(a){a.listeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?this._listeners[a].slice():[]},a.emit=a.dispatchEvent=function(a,c){if(this._listeners=this._listeners||{},"object"==typeof a&&(c=a,a=a.type),c&&c.__isEventObject===!0||(c=new b.Event(this,a,c)),this._listeners&&this._listeners[a]){var d,e=this._listeners[a],f=e.length,g=e[0];for(d=0;f>d;g=e[++d])if(g.call(this,c),c.stoppedImmediate)return this;if(c.stopped)return this}return this.parent&&this.parent.emit&&this.parent.emit.call(this.parent,a,c),this},a.on=a.addEventListener=function(a,b){return this._listeners=this._listeners||{},(this._listeners[a]=this._listeners[a]||[]).push(b),this},a.once=function(a,b){function c(){b.apply(d.off(a,c),arguments)}this._listeners=this._listeners||{};var d=this;return c._originalHandler=b,this.on(a,c)},a.off=a.removeEventListener=function(a,b){if(this._listeners=this._listeners||{},!this._listeners[a])return this;for(var c=this._listeners[a],d=b?c.length:0;d-->0;)(c[d]===b||c[d]._originalHandler===b)&&c.splice(d,1);return 0===c.length&&delete this._listeners[a],this},a.removeAllListeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?(delete this._listeners[a],this):this}}},b.Event=function(a,b,c){this.__isEventObject=!0,this.stopped=!1,this.stoppedImmediate=!1,this.target=a,this.type=b,this.data=c,this.content=c,this.timeStamp=Date.now()},b.Event.prototype.stopPropagation=function(){this.stopped=!0},b.Event.prototype.stopImmediatePropagation=function(){this.stoppedImmediate=!0},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return window.console.log("PIXI Warning: shape too complex to fill"),[];for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.initDefaultShaders=function(){},b.CompileVertexShader=function(a,c){return b._CompileShader(a,c,a.VERTEX_SHADER)},b.CompileFragmentShader=function(a,c){return b._CompileShader(a,c,a.FRAGMENT_SHADER)},b._CompileShader=function(a,b,c){var d=b.join("\n"),e=a.createShader(c); -return a.shaderSource(e,d),a.compileShader(e),a.getShaderParameter(e,a.COMPILE_STATUS)?e:(window.console.log(a.getShaderInfoLog(e)),null)},b.compileProgram=function(a,c,d){var e=b.CompileFragmentShader(a,d),f=b.CompileVertexShader(a,c),g=a.createProgram();return a.attachShader(g,f),a.attachShader(g,e),a.linkProgram(g),a.getProgramParameter(g,a.LINK_STATUS)||window.console.log("Could not initialise shaders"),g},b.PixiShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.textureCount=0,this.firstRun=!0,this.dirty=!0,this.attributes=[],this.init()},b.PixiShader.prototype.constructor=b.PixiShader,b.PixiShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc||b.PixiShader.defaultVertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute];for(var d in this.uniforms)this.uniforms[d].uniformLocation=a.getUniformLocation(c,d);this.initUniforms(),this.program=c},b.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a,b=this.gl;for(var c in this.uniforms){a=this.uniforms[c];var d=a.type;"sampler2D"===d?(a._init=!1,null!==a.value&&this.initSampler2D(a)):"mat2"===d||"mat3"===d||"mat4"===d?(a.glMatrix=!0,a.glValueLength=1,"mat2"===d?a.glFunc=b.uniformMatrix2fv:"mat3"===d?a.glFunc=b.uniformMatrix3fv:"mat4"===d&&(a.glFunc=b.uniformMatrix4fv)):(a.glFunc=b["uniform"+d],a.glValueLength="2f"===d||"2i"===d?2:"3f"===d||"3i"===d?3:"4f"===d||"4i"===d?4:1)}},b.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){var b=this.gl;if(b.activeTexture(b["TEXTURE"+this.textureCount]),b.bindTexture(b.TEXTURE_2D,a.value.baseTexture._glTextures[b.id]),a.textureData){var c=a.textureData,d=c.magFilter?c.magFilter:b.LINEAR,e=c.minFilter?c.minFilter:b.LINEAR,f=c.wrapS?c.wrapS:b.CLAMP_TO_EDGE,g=c.wrapT?c.wrapT:b.CLAMP_TO_EDGE,h=c.luminance?b.LUMINANCE:b.RGBA;if(c.repeat&&(f=b.REPEAT,g=b.REPEAT),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,!!c.flipY),c.width){var i=c.width?c.width:512,j=c.height?c.height:2,k=c.border?c.border:0;b.texImage2D(b.TEXTURE_2D,0,h,i,j,k,h,b.UNSIGNED_BYTE,null)}else b.texImage2D(b.TEXTURE_2D,0,h,b.RGBA,b.UNSIGNED_BYTE,a.value.baseTexture.source);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,d),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,f),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,g)}b.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},b.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a,c=this.gl;for(var d in this.uniforms)a=this.uniforms[d],1===a.glValueLength?a.glMatrix===!0?a.glFunc.call(c,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c,a.uniformLocation,a.value):2===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y):3===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z):4===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"===a.type&&(a._init?(c.activeTexture(c["TEXTURE"+this.textureCount]),a.value.baseTexture._dirty[c.id]?b.defaultRenderer.updateTexture(a.value.baseTexture):c.bindTexture(c.TEXTURE_2D,a.value.baseTexture._glTextures[c.id]),c.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},b.PixiShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec4 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"],b.PixiFastShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"],this.textureCount=0,this.init()},b.PixiFastShader.prototype.constructor=b.PixiFastShader,b.PixiFastShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.uMatrix=a.getUniformLocation(c,"uMatrix"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aPositionCoord=a.getAttribLocation(c,"aPositionCoord"),this.aScale=a.getAttribLocation(c,"aScale"),this.aRotation=a.getAttribLocation(c,"aRotation"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute],this.program=c},b.PixiFastShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.StripShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;","}"],this.init()},b.StripShader.prototype.constructor=b.StripShader,b.StripShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.attributes=[this.aVertexPosition,this.aTextureCoord],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.StripShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.PrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor * vec4(tint * alpha, alpha);","}"],this.init()},b.PrimitiveShader.prototype.constructor=b.PrimitiveShader,b.PrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.ComplexPrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform vec3 tint;","uniform float alpha;","uniform vec3 color;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = vec4(color * alpha * tint, alpha);","}"],this.init()},b.ComplexPrimitiveShader.prototype.constructor=b.ComplexPrimitiveShader,b.ComplexPrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.color=a.getUniformLocation(c,"color"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.ComplexPrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.WebGLGraphics=function(){},b.WebGLGraphics.renderGraphics=function(a,c){var d,e=c.gl,f=c.projection,g=c.offset,h=c.shaderManager.primitiveShader;a.dirty&&b.WebGLGraphics.updateGraphics(a,e);for(var i=a._webGL[e.id],j=0;j=6&&(h.points.length>10?(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g)):(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildPoly(h,g))),h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))):(g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g)),d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d),n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i)}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.lastIndex=0,this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[],this.lastIndex=0},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},b.glContexts=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)"undefined"==typeof d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.sayHello("webGL"),b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this.contextLostBound=this.handleContextLost.bind(this),this.contextRestoredBound=this.handleContextRestored.bind(this),this.view.addEventListener("webglcontextlost",this.contextLostBound,!1),this.view.addEventListener("webglcontextrestored",this.contextRestoredBound,!1),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(a.interactive&&a.interactionManager.removeEvents(),this.__stage=a),a.updateTransform();var b=this.gl;a._interactive?a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)):a._interactiveEventsAdded&&(a._interactiveEventsAdded=!1,a.interactionManager.setTarget(this)),b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.handleContextLost=function(a){a.preventDefault(),this.contextLost=!0},b.WebGLRenderer.prototype.handleContextRestored=function(){this.initContext();for(var a in b.TextureCache){var c=b.TextureCache[a].baseTexture;c._glTextures=[]}this.contextLost=!1},b.WebGLRenderer.prototype.destroy=function(){this.view.off("webglcontextlost",this.contextLostBound),this.view.off("webglcontextrestored",this.contextRestoredBound),b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a){var b=a.texture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=b.baseTexture);var c=b._uvs;if(c){var d,e,f,g,h=a.worldAlpha,i=a.tint,j=this.vertices,k=a.anchor.x,l=a.anchor.y;if(b.trim){var m=b.trim;e=m.x-k*m.width,d=e+b.crop.width,g=m.y-l*m.height,f=g+b.crop.height}else d=b.frame.width*(1-k),e=b.frame.width*-k,f=b.frame.height*(1-l),g=b.frame.height*-l;var n=4*this.currentBatchSize*this.vertSize,o=b.baseTexture.resolution,p=a.worldTransform,q=p.a/o,r=p.b/o,s=p.c/o,t=p.d/o,u=p.tx,v=p.ty;j[n++]=q*e+s*g+u,j[n++]=t*g+r*e+v,j[n++]=c.x0,j[n++]=c.y0,j[n++]=h,j[n++]=i,j[n++]=q*d+s*g+u,j[n++]=t*g+r*d+v,j[n++]=c.x1,j[n++]=c.y1,j[n++]=h,j[n++]=i,j[n++]=q*d+s*f+u,j[n++]=t*f+r*d+v,j[n++]=c.x2,j[n++]=c.y2,j[n++]=h,j[n++]=i,j[n++]=q*e+s*f+u,j[n++]=t*f+r*e+v,j[n++]=c.x3,j[n++]=c.y3,j[n++]=h,j[n++]=i,this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs;a.tilePosition.x%=c.baseTexture.width*a.tileScaleOffset.x,a.tilePosition.y%=c.baseTexture.height*a.tileScaleOffset.y;var e=a.tilePosition.x/(c.baseTexture.width*a.tileScaleOffset.x),f=a.tilePosition.y/(c.baseTexture.height*a.tileScaleOffset.y),g=a.width/c.baseTexture.width/(a.tileScale.x*a.tileScaleOffset.x),h=a.height/c.baseTexture.height/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-e,d.y0=0-f,d.x1=1*g-e,d.y1=0-f,d.x2=1*g-e,d.y2=1*h-f,d.x3=0-e,d.y3=1*h-f;var i=a.worldAlpha,j=a.tint,k=this.vertices,l=a.width,m=a.height,n=a.anchor.x,o=a.anchor.y,p=l*(1-n),q=l*-n,r=m*(1-o),s=m*-o,t=4*this.currentBatchSize*this.vertSize,u=c.baseTexture.resolution,v=a.worldTransform,w=v.a/u,x=v.b/u,y=v.c/u,z=v.d/u,A=v.tx,B=v.ty;k[t++]=w*q+y*s+A,k[t++]=z*s+x*q+B,k[t++]=d.x0,k[t++]=d.y0,k[t++]=i,k[t++]=j,k[t++]=w*p+y*s+A,k[t++]=z*s+x*p+B,k[t++]=d.x1,k[t++]=d.y1,k[t++]=i,k[t++]=j,k[t++]=w*p+y*r+A,k[t++]=z*r+x*p+B,k[t++]=d.x2,k[t++]=d.y2,k[t++]=i,k[t++]=j,k[t++]=w*q+y*r+A,k[t++]=z*r+x*q+B,k[t++]=d.x3,k[t++]=d.y3,k[t++]=i,k[t++]=j,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,2,c.FLOAT,!1,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var a=4*this.size*this.vertSize,b=6*this.maxSize;this.vertices=new Float32Array(a),this.indices=new Uint16Array(b),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var c=0,d=0;b>c;c+=6,d+=4)this.indices[c+0]=d+0,this.indices[c+1]=d+1,this.indices[c+2]=d+2,this.indices[c+3]=d+0,this.indices[c+4]=d+2,this.indices[c+5]=d+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(g.fillColor||0===g.fillColor)&&(c.globalAlpha=g.fillAlpha*d,c.fillStyle=e="#"+("00000"+(0|g.fillColor).toString(16)).substr(-6),c.fill()),g.lineWidth&&(c.globalAlpha=g.lineAlpha*d,c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){d>1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){c.beginPath();var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iA?A:z,c.beginPath(),c.moveTo(v,w+z),c.lineTo(v,w+y-z),c.quadraticCurveTo(v,w+y,v+z,w+y),c.lineTo(v+x-z,w+y),c.quadraticCurveTo(v+x,w+y,v+x,w+y-z),c.lineTo(v+x,w+z),c.quadraticCurveTo(v+x,w,v+x-z,w),c.lineTo(v+z,w),c.quadraticCurveTo(v,w,v,w+z),c.closePath()}}}},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.padding=0},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var b=a.gl,c=a.projection,d=a.offset,e=a.shaderManager.stripShader;b.blendFunc(b.ONE,b.ONE_MINUS_SRC_ALPHA),b.uniformMatrix3fv(e.translationMatrix,!1,this.worldTransform.toArray(!0)),b.uniform2f(e.projectionVector,c.x,-c.y),b.uniform2f(e.offsetVector,-d.x,-d.y),b.uniform1f(e.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.STATIC_DRAW),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)):(b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferSubData(b.ARRAY_BUFFER,0,this.verticies),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),b.drawElements(b.TRIANGLE_STRIP,this.indices.length,b.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var b=a.context,c=this.worldTransform;a.roundPixels?b.setTransform(c.a,c.b,c.c,c.d,0|c.tx,0|c.ty):b.setTransform(c.a,c.b,c.c,c.d,c.tx,c.ty);var d=this,e=d.verticies,f=d.uvs,g=e.length/2;this.count++;for(var h=0;g-2>h;h++){var i=2*h,j=e[i],k=e[i+2],l=e[i+4],m=e[i+1],n=e[i+3],o=e[i+5];if(this.padding>0){var p=(j+k+l)/3,q=(m+n+o)/3,r=j-p,s=m-q,t=Math.sqrt(r*r+s*s);j=p+r/t*(t+3),m=q+s/t*(t+3),r=k-p,s=n-q,t=Math.sqrt(r*r+s*s),k=p+r/t*(t+3),n=q+s/t*(t+3),r=l-p,s=o-q,t=Math.sqrt(r*r+s*s),l=p+r/t*(t+3),o=q+s/t*(t+3) -}var u=f[i]*d.texture.width,v=f[i+2]*d.texture.width,w=f[i+4]*d.texture.width,x=f[i+1]*d.texture.height,y=f[i+3]*d.texture.height,z=f[i+5]*d.texture.height;b.save(),b.beginPath(),b.moveTo(j,m),b.lineTo(k,n),b.lineTo(l,o),b.closePath(),b.clip();var A=u*y+x*w+v*z-y*w-x*v-u*z,B=j*y+x*l+k*z-y*l-x*k-j*z,C=u*k+j*w+v*l-k*w-j*v-u*l,D=u*y*l+x*k*w+j*v*z-j*y*w-x*v*l-u*k*z,E=m*y+x*o+n*z-y*o-x*n-m*z,F=u*n+m*w+v*o-n*w-m*v-u*o,G=u*y*o+x*n*w+m*v*z-m*y*w-x*v*o-u*n*z;b.transform(B/A,E/A,C/A,F/A,D/A,G/A),b.drawImage(d.texture.baseTexture.source,0,0),b.restore()}},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.verticies=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.verticies,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||100,this._height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this._mask,a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d,e,f=this.worldTransform,g=a.resolution;if(c.setTransform(f.a*g,f.c*g,f.b*g,f.d*g,f.tx*g,f.ty*g),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]);var h=this.tilePosition,i=this.tileScale;for(h.x%=this.tilingTexture.baseTexture.width,h.y%=this.tilingTexture.baseTexture.height,c.scale(i.x,i.y),c.translate(h.x+this.anchor.x*-this._width,h.y+this.anchor.y*-this._height),c.fillStyle=this.__tilePattern,c.fillRect(-h.x,-h.y,this._width/i.x,this._height/i.y),c.scale(1/i.x,1/i.y),c.translate(-h.x+this.anchor.x*this._width,-h.y+this.anchor.y*this._height),this._mask&&a.maskManager.popMask(a.context),d=0,e=this.children.length;e>d;d++)this.children[d]._renderCanvas(a)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.onTextureUpdate=function(){},b.TilingSprite.prototype.generateTilingTexture=function(a){if(this.texture.baseTexture.hasLoaded){var c,d,e=this.originalTexture||this.texture,f=e.frame,g=f.width!==e.baseTexture.width||f.height!==e.baseTexture.height,h=!1;if(a?(c=b.getNextPowerOfTwo(f.width),d=b.getNextPowerOfTwo(f.height),(f.width!==c||f.height!==d)&&(h=!0)):g&&(c=f.width,d=f.height,h=!0),h){var i;this.tilingTexture&&this.tilingTexture.isTiling?(i=this.tilingTexture.canvasBuffer,i.resize(c,d),this.tilingTexture.baseTexture.width=c,this.tilingTexture.baseTexture.height=d,this.tilingTexture.needsUpdate=!0):(i=new b.CanvasBuffer(c,d),this.tilingTexture=b.Texture.fromCanvas(i.canvas),this.tilingTexture.canvasBuffer=i,this.tilingTexture.isTiling=!0),i.context.drawImage(e.baseTexture.source,e.crop.x,e.crop.y,e.crop.width,e.crop.height,0,0,c,d),this.tileScaleOffset.x=f.width/c,this.tileScaleOffset.y=f.height/d}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=e;this.refreshTexture=!1,this.originalTexture=this.texture,this.texture=this.tilingTexture,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this._dirty=[!0,!0,!0,!0],a){if((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height)this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty();else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.naturalWidth||d.source.width,d.height=d.source.naturalHeight||d.source.height,d.dirty(),d.dispatchEvent({type:"loaded",content:d})},this.source.onerror=function(){d.dispatchEvent({type:"error",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.EventTarget.mixin(b.BaseTexture.prototype),b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,this.source.src=""):this.source&&this.source._pixiId&&delete b.BaseTextureCache[this.source._pixiId],this.source=null;for(var a=this._glTextures.length-1;a>=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;athis.baseTexture.width||a.y+a.height>this.baseTexture.height))throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width,this.height)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width*this.resolution,this.height*this.resolution,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=this.frame.width=this.crop.width=a,this.height=this.frame.height=this.crop.height=c,d&&(this.baseTexture.width=this.width,this.baseTexture.height=this.height),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width*this.resolution,this.height*this.resolution))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1),a.worldAlpha=1;for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();var h=this.renderer.gl;h.viewport(0,0,this.width*this.resolution,this.height*this.resolution),h.bindFramebuffer(h.FRAMEBUFFER,this.textureBuffer.frameBuffer),c&&this.textureBuffer.clear(),this.renderer.spriteBatch.dirty=!0,this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),this.renderer.spriteBatch.dirty=!0}},b.RenderTexture.prototype.renderCanvas=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),b&&d.append(b);for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();c&&this.textureBuffer.clear();var h=this.textureBuffer.context,i=this.renderer.resolution;this.renderer.resolution=this.resolution,this.renderer.renderDisplayObject(a,h),this.renderer.resolution=i}},b.RenderTexture.prototype.getImage=function(){var a=new Image;return a.src=this.getBase64(),a},b.RenderTexture.prototype.getBase64=function(){return this.getCanvas().toDataURL()},b.RenderTexture.prototype.getCanvas=function(){if(this.renderer.type===b.WEBGL_RENDERER){var a=this.renderer.gl,c=this.textureBuffer.width,d=this.textureBuffer.height,e=new Uint8Array(4*c*d);a.bindFramebuffer(a.FRAMEBUFFER,this.textureBuffer.frameBuffer),a.readPixels(0,0,c,d,a.RGBA,a.UNSIGNED_BYTE,e),a.bindFramebuffer(a.FRAMEBUFFER,null);for(var f=new b.CanvasBuffer(c,d),g=f.context.getImageData(0,0,c,d),h=g.data,i=0;ia;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this),function(){var a=this,b=b||{VERSION:"2.1.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};if(PIXI.InteractionManager=PIXI.InteractionManager||function(){},PIXI.dontSayHello=!0,b.Utils={getProperty:function(a,b){for(var c=b.split("."),d=c.pop(),e=c.length,f=1,g=c[0];e>f&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},transposeArray:function(a){for(var b=new Array(a[0].length),c=0;c-1;d--)b[c][d]=a[d][c]}return b},rotateArray:function(a,c){if("string"!=typeof c&&(c=(c%360+360)%360),90===c||-270===c||"rotateLeft"===c)a=b.Utils.transposeArray(a),a=a.reverse();else if(-90===c||270===c||"rotateRight"===c)a=a.reverse(),a=b.Utils.transposeArray(a);else if(180===Math.abs(c)||"rotate180"===c){for(var d=0;d0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h},mixin:function(a,c){if(!a||"object"!=typeof a)return c;for(var d in a){var e=a[d];if(!e.childNodes&&!e.cloneNode){var f=typeof a[d];c[d]=a[d]&&"object"===f?typeof c[d]===f?b.Utils.mixin(a[d],c[d]):b.Utils.mixin(a[d],new e.constructor):a[d]}}return c}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var c=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;b0?.5*c:0},b.Circle.prototype={type:null,circumference:function(){return 2*Math.PI*this._radius},getBounds:function(){return new b.Rectangle(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRounded(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},angleSq:function(a){return this.subtract(a).angle(a.subtract(this))},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},b.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},b.Point.angleSq=function(a,b){return a.subtract(b).angle(b.subtract(a))},b.Point.negative=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.x,-a.y)},b.Point.multiplyAdd=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+c.x*d,a.y+c.y*d)},b.Point.interpolate=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+(c.x-a.x)*d,a.y+(c.y-a.y)*d)},b.Point.perp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.y,a.x)},b.Point.rperp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(a.y,-a.x)},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRounded(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.project=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c)/c.getMagnitudeSq();return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.projectUnit=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c);return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.normalRightHand=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-1*a.y,a.x)},b.Point.normalize=function(a,c){"undefined"==typeof c&&(c=new b.Point);var d=a.getMagnitude();return 0!==d&&c.setTo(a.x/d,a.y/d),c},b.Point.rotate=function(a,c,d,e,f,g){f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y)));var h=e+Math.atan2(a.y-d,a.x-c);return a.setTo(c+g*Math.cos(h),d+g*Math.sin(h))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},b.Point.parse=function(a,c,d){c=c||"x",d=d||"y";var e=new b.Point;return a[c]&&(e.x=parseInt(a[c],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return"undefined"==typeof b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(a,this)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(b.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"topRight",{get:function(){return new b.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y) -},b.Rectangle.size=function(a,c){return"undefined"==typeof c||null===c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c||null===c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(c.x-a.x)-(e.x-d.x)*(c.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((c.x-a.x)*(a.y-d.y)-(c.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new b.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){this.type=b.POLYGON,this.points=a},b.Polygon.prototype={type:null,clone:function(a){for(var c=[],d=0;db!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!c)}return c},setTo:function(a){return this.points=a,this}},b.Polygon.prototype.constructor=b.Polygon,Object.defineProperty(b.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this._points=a}}),Object.defineProperty(b.Polygon.prototype,"area",{get:function(){var a,b,c,d,e,f=Number.MAX_VALUE,g=0;for(e=0;e=l;l++)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;q++)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[a,b]):this.moveTo(a,b),0===this.currentPath.length&&this.moveTo(a,b);var f=this.currentPath,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){var g=a+Math.cos(d)*c,h=b+Math.sin(d)*c,i=this.currentPath.shape.points;if((0!==i.length&&i[i.length-2]!==g||i[i.length-1]!==h)&&(this.moveTo(g,h),i=this.currentPath.shape.points),d===e)return this;!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var j=f?-1*(d-e):e-d,k=Math.abs(j)/(2*Math.PI)*40;if(0===j)return this;for(var l=j/(2*k),m=2*l,n=Math.cos(l),o=Math.sin(l),p=k-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);i.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape({points:[a,b,c,d,e],type:PIXI.Graphics.RREC}),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){return a instanceof Array||(a=Array.prototype.slice.call(arguments)),this.drawShape(new PIXI.Polygon(a)),this},PIXI.Graphics.prototype.clear=function(){return this.lineWidth=0,this.filling=!1,this.dirty=!0,this.clearDirty=!0,this.graphicsData=[],this},PIXI.Graphics.prototype.generateTexture=function(a,b){a=a||1;var c=this.getBounds(),d=new PIXI.CanvasBuffer(c.width*a,c.height*a),e=PIXI.Texture.fromCanvas(d.canvas,b);return e.baseTexture.resolution=a,d.context.scale(a,a),d.context.translate(-c.x,-c.y),PIXI.CanvasGraphics.renderGraphics(this,d.context),e},PIXI.Graphics.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite,a);if(a.spriteBatch.stop(),a.blendModeManager.setBlendMode(this.blendMode),this._mask&&a.maskManager.pushMask(this._mask,a),this._filters&&a.filterManager.pushFilter(this._filterBlock),this.blendMode!==a.spriteBatch.currentBlendMode){a.spriteBatch.currentBlendMode=this.blendMode;var b=PIXI.blendModesWebGL[a.spriteBatch.currentBlendMode];a.spriteBatch.gl.blendFunc(b[0],b[1])}if(this.webGLDirty&&(this.dirty=!0,this.webGLDirty=!1),PIXI.WebGLGraphics.renderGraphics(this,a),this.children.length){a.spriteBatch.start();for(var c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this.mask,a),a.drawCount++,a.spriteBatch.start()}},PIXI.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite,a);var b=a.context,c=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,b.globalCompositeOperation=PIXI.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a);var d=a.resolution;b.setTransform(c.a*d,c.b*d,c.c*d,c.d*d,c.tx*d,c.ty*d),PIXI.CanvasGraphics.renderGraphics(this,b);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},PIXI.Graphics.prototype.getBounds=function(a){this.dirty&&(this.updateBounds(),this.webGLDirty=!0,this.cachedSpriteDirty=!0,this.dirty=!1);var b=this._bounds,c=b.x,d=b.width+b.x,e=b.y,f=b.height+b.y,g=a||this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=n,w=o,x=n,y=o;return x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,b.x=x,b.width=v-x,b.y=y,b.height=w-y,b},PIXI.Graphics.prototype.updateBounds=function(){var a=1/0,b=-1/0,c=1/0,d=-1/0;if(this.graphicsData.length)for(var e,f,g,h,i,j,k=0;kg?g:a,b=g+i>b?g+i:b,c=c>h?h:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.CIRC)g=e.x,h=e.y,i=e.radius+n/2,j=e.radius+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.ELIP)g=e.x,h=e.y,i=e.width+n/2,j=e.height+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else{f=e.points;for(var o=0;og-n?g-n:a,b=g+n>b?g+n:b,c=c>h-n?h-n:c,d=h+n>d?h+n:d}}else a=0,b=0,c=0,d=0;var p=this.boundsPadding,q=this._bounds;q.x=a-p,q.width=b-a+2*p,q.y=c-p,q.height=d-c+2*p},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null;var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this.fillColor=d,this.fillAlpha=e,this.fill=f,this.shape=g,this.type=g.type},PIXI.Graphics.POLY=0,PIXI.Graphics.RECT=1,PIXI.Graphics.CIRC=2,PIXI.Graphics.ELIP=3,PIXI.Graphics.RREC=4,PIXI.Polygon.prototype.type=PIXI.Graphics.POLY,PIXI.Rectangle.prototype.type=PIXI.Graphics.RECT,PIXI.Circle.prototype.type=PIXI.Graphics.CIRC,PIXI.Ellipse.prototype.type=PIXI.Graphics.ELIP,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this._position=new b.Point,this.displayObject=null,this.scale=null,this._targetPosition=new b.Point},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target).multiply(this.target.parent?this.target.parent.worldTransform.a:1,this.target.parent?this.target.parent.worldTransform.d:1),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},resize:function(){},paused:function(){},pauseUpdate:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[])},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created&&this.onPauseUpdateCallback?this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.ArrayList=function(){this.total=0,this.position=0,this.list=[]},b.ArrayList.prototype={add:function(a){return this.exists(a)||(this.list.push(a),this.total++),a},getIndex:function(a){return this.list.indexOf(a)},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0,this.total=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),this.total--,a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)}},Object.defineProperty(b.ArrayList.prototype,"first",{get:function(){return this.position=0,this.total>0?this.list[0]:null}}),Object.defineProperty(b.ArrayList.prototype,"next",{get:function(){return this.positionb;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange;var a=this;this.game.device.cocoonJSApp&&(CocoonJS.App.onSuspended.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"pause"})}),CocoonJS.App.onActivated.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"resume"})}))},b.Stage.prototype.visibilityChange=function(a){return"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(this.disableVisibilityChange||(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden||"pause"===a.type?this.game.gamePaused(a):this.game.gameResumed(a)))},b.Stage.prototype.setBackgroundColor=function(a){if("string"==typeof a){var c=b.Color.hexToColor(a);this._backgroundColor=b.Color.getColor(c.r,c.g,c.b)}else{var c=b.Color.getRGB(a);this._backgroundColor=a}this.backgroundColorSplit=[c.r/255,c.g/255,c.b/255],this.backgroundColorString=b.Color.RGBtoString(c.r,c.g,c.b,255,"#")},b.Stage.prototype.destroy=function(){this._hiddenVar&&document.removeEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=null,window.onpageshow=null,window.onblur=null,window.onfocus=null},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this.game.transparent||this.setBackgroundColor(a)}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.ignoreDestroy=!1,this.classType=b.Sprite,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this.onDestroy=new b.Signal,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a,b){return"undefined"==typeof b&&(b=!1),a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,!b&&a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addMultiple=function(a,b){if(Array.isArray(a))for(var c=0;ca||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,b,c,d,e){"undefined"==typeof e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,f.events&&f.events.onAddedToGroup.dispatch(f,this),null===this.cursor&&(this.cursor=f),f},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.resetCursor=function(a){return"undefined"==typeof a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this._cache[8]=a,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},b.Group.prototype.setProperty=function(a,b,c,d,e){if("undefined"==typeof e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},b.Group.prototype.checkProperty=function(a,c,d,e){return"undefined"==typeof e&&(e=!1),!b.Utils.getProperty(a,c)&&e?!1:b.Utils.getProperty(a,c)!==d?!1:!0},b.Group.prototype.set=function(a,b,c,d,e,f,g){return"undefined"==typeof g&&(g=!1),b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},b.Group.prototype.setAll=function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof f&&(f=!1),a=a.split("."),e=e||0;for(var g=0,h=this.children.length;h>g;g++)(!c||c&&this.children[g].alive)&&(!d||d&&this.children[g].visible)&&this.setProperty(this.children[g],a,b,e,f)},b.Group.prototype.setAllChildren=function(a,c,d,e,f,g){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),"undefined"==typeof g&&(g=!1),f=f||0;for(var h=0,i=this.children.length;i>h;h++)(!d||d&&this.children[h].alive)&&(!e||e&&this.children[h].visible)&&(this.children[h]instanceof b.Group?this.children[h].setAllChildren(a,c,d,e,f,g):this.setProperty(this.children[h],a.split("."),c,f,g))},b.Group.prototype.checkAll=function(a,b,c,d,e){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);for(var f=0,g=this.children.length;g>f;f++)if((!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&!this.checkProperty(this.children[f],a,b,e))return!1;return!0},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.filter=function(a,c){for(var d=-1,e=this.children.length,f=new b.ArrayList;++de;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b,c){if("undefined"==typeof b&&(b=!1),"undefined"==typeof c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup.dispatch(a,this);var d=this.removeChild(a);return this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},b.Group.prototype.removeAll=function(a,b){if("undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);a&&c&&c.destroy(!0)}while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c,d){if("undefined"==typeof b&&(b=this.children.length-1),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup.dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},b.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},b.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(b.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){awindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.bounds=new b.Rectangle,this.aspectRatio=0,this.sourceAspectRatio=0,this.event=null,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this.parentIsWindow=!1,this.parentNode=null,this.parentScaleFactor=new b.Point(1,1),this.trackParentInterval=2e3,this.onResize=null,this.onResizeContext=null,this._scaleMode=b.ScaleManager.NO_SCALE,this._width=0,this._height=0,this._check=null,this._nextParentCheck=0,this._parentBounds=null,a.config&&this.parseConfig(a.config),this.setupScale(c,d) +(function(){var a=this,b=b||{};b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.0.0",b.blendModes={NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},b.scaleModes={DEFAULT:0,LINEAR:0,NEAREST:1},b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array):(b.Float32Array=Array,b.Uint16Array=Array),b.INTERACTION_FREQUENCY=30,b.AUTO_PREVENT_DEFAULT=!0,b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.dontSayHello=!1,b.defaultRenderOptions={view:null,transparent:!1,antialias:!1,preserveDrawingBuffer:!1,resolution:1,clearBeforeRender:!0},b.sayHello=function(a){if(!b.dontSayHello){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var c=["%c %c %c Pixi.js "+b.VERSION+" - "+a+" %c %c http://www.pixijs.com/ %c %c ♥%c♥%c♥ ","background: #ff66a5","background: #ff66a5","color: #ff66a5; background: #030307;","background: #ff66a5","background: #ffc3dc","background: #ff66a5","color: #ff2424; background: #fff","color: #ff2424; background: #fff","color: #ff2424; background: #fff"];console.log.apply(console,c)}else window.console&&console.log("Pixi.js "+b.VERSION+" - http://www.pixijs.com/");b.dontSayHello=!0}},b.Polygon=function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}this.closed=!0,this.points=a},b.Polygon.prototype.clone=function(){var a=this.points.slice();return new b.Polygon(a)},b.Polygon.prototype.contains=function(a,b){for(var c=!1,d=this.points.length/2,e=0,f=d-1;d>e;f=e++){var g=this.points[2*e],h=this.points[2*e+1],i=this.points[2*f],j=this.points[2*f+1],k=h>b!=j>b&&(i-g)*(b-h)/(j-h)+g>a;k&&(c=!c)}return c},b.Polygon.prototype.constructor=b.Polygon,b.Matrix=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0},b.Matrix.prototype.fromArray=function(a){this.a=a[0],this.b=a[1],this.c=a[3],this.d=a[4],this.tx=a[2],this.ty=a[5]},b.Matrix.prototype.toArray=function(a){this.array||(this.array=new b.Float32Array(9));var c=this.array;return a?(c[0]=this.a,c[1]=this.b,c[2]=0,c[3]=this.c,c[4]=this.d,c[5]=0,c[6]=this.tx,c[7]=this.ty,c[8]=1):(c[0]=this.a,c[1]=this.c,c[2]=this.tx,c[3]=this.b,c[4]=this.d,c[5]=this.ty,c[6]=0,c[7]=0,c[8]=1),c},b.Matrix.prototype.apply=function(a,c){return c=c||new b.Point,c.x=this.a*a.x+this.b*a.y+this.tx,c.y=this.c*a.x+this.d*a.y+this.ty,c},b.Matrix.prototype.applyInverse=function(a,c){c=c||new b.Point;var d=1/(this.a*this.d+this.c*-this.b);return c.x=this.d*d*a.x+-this.c*d*a.y+(this.ty*this.c-this.tx*this.d)*d,c.y=this.a*d*a.y+-this.b*d*a.x+(-this.ty*this.a+this.tx*this.b)*d,c},b.Matrix.prototype.translate=function(a,b){return this.tx+=a,this.ty+=b,this},b.Matrix.prototype.scale=function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},b.Matrix.prototype.rotate=function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},b.Matrix.prototype.append=function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},b.Matrix.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this},b.identityMatrix=new b.Matrix,b.DisplayObject=function(){this.position=new b.Point,this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.buttonMode=!1,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this._interactive=!1,this.defaultCursor="pointer",this.worldTransform=new b.Matrix,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,Object.defineProperty(b.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var b=[],c=0;c=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;ga;a++)this.children[a].updateTransform()},b.DisplayObjectContainer.prototype.getBounds=function(){if(0===this.children.length)return b.EmptyRectangle;for(var a,c,d,e=1/0,f=1/0,g=-1/0,h=-1/0,i=!1,j=0,k=this.children.length;k>j;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a,this._interactive&&(this.stage.dirty=!0);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d.setStageReference(a)}},b.DisplayObjectContainer.prototype.removeStageReference=function(){for(var a=0,b=this.children.length;b>a;a++){var c=this.children[a];c.removeStageReference()}this._interactive&&(this.stage.dirty=!0),this.stage=null},b.DisplayObjectContainer.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);var b,c;if(this._mask||this._filters){for(this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);a.spriteBatch.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),a.spriteBatch.start()}else for(b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.DisplayObjectContainer.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);this._mask&&a.maskManager.pushMask(this._mask,a);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d._renderCanvas(a)}this._mask&&a.maskManager.popMask(a)}},b.Sprite=function(a){b.DisplayObjectContainer.call(this),this.anchor=new b.Point,this.texture=a,this._width=0,this._height=0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL,this.shader=null,a.baseTexture.hasLoaded?this.onTextureUpdate():(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.on("update",this.onTextureUpdateBind)),this.renderable=!0},b.Sprite.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Sprite.prototype.constructor=b.Sprite,Object.defineProperty(b.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(b.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),b.Sprite.prototype.setTexture=function(a){this.texture=a,this.cachedTint=16777215},b.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height)},b.Sprite.prototype.getBounds=function(a){var b=this.texture.frame.width,c=this.texture.frame.height,d=b*(1-this.anchor.x),e=b*-this.anchor.x,f=c*(1-this.anchor.y),g=c*-this.anchor.y,h=a||this.worldTransform,i=h.a,j=h.c,k=h.b,l=h.d,m=h.tx,n=h.ty,o=i*e+k*g+m,p=l*g+j*e+n,q=i*d+k*g+m,r=l*g+j*d+n,s=i*d+k*f+m,t=l*f+j*d+n,u=i*e+k*f+m,v=l*f+j*e+n,w=-1/0,x=-1/0,y=1/0,z=1/0;y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,z=z>p?p:z,z=z>r?r:z,z=z>t?t:z,z=z>v?v:z,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,x=p>x?p:x,x=r>x?r:x,x=t>x?t:x,x=v>x?v:x;var A=this._bounds;return A.x=y,A.width=w-y,A.y=z,A.height=x-z,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){var b,c;if(this._mask||this._filters){var d=a.spriteBatch;for(this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);d.stop(),this._mask&&a.maskManager.popMask(this._mask,a),this._filters&&a.filterManager.popFilter(),d.start()}else for(a.spriteBatch.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.Sprite.prototype._renderCanvas=function(a){if(!(this.visible===!1||0===this.alpha||this.texture.crop.width<=0||this.texture.crop.height<=0)){if(this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,a.context.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a),this.texture.valid){var c=this.texture.baseTexture.resolution/a.resolution;a.context.globalAlpha=this.worldAlpha,a.roundPixels?a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution|0,this.worldTransform.ty*a.resolution|0):a.context.setTransform(this.worldTransform.a,this.worldTransform.b,this.worldTransform.c,this.worldTransform.d,this.worldTransform.tx*a.resolution,this.worldTransform.ty*a.resolution),a.smoothProperty&&a.scaleMode!==this.texture.baseTexture.scaleMode&&(a.scaleMode=this.texture.baseTexture.scaleMode,a.context[a.smoothProperty]=a.scaleMode===b.scaleModes.LINEAR);var d=this.texture.trim?this.texture.trim.x-this.anchor.x*this.texture.trim.width:this.anchor.x*-this.texture.frame.width,e=this.texture.trim?this.texture.trim.y-this.anchor.y*this.texture.trim.height:this.anchor.y*-this.texture.frame.height;16777215!==this.tint?(this.cachedTint!==this.tint&&(this.cachedTint=this.tint,this.tintedTexture=b.CanvasTinter.getTintedTexture(this,this.tint)),a.context.drawImage(this.tintedTexture,0,0,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)):a.context.drawImage(this.texture.baseTexture.source,this.texture.crop.x,this.texture.crop.y,this.texture.crop.width,this.texture.crop.height,d/c,e/c,this.texture.crop.width/c,this.texture.crop.height/c)}for(var f=0,g=this.children.length;g>f;f++)this.children[f]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},b.Sprite.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache'+this);return new b.Sprite(c)},b.Sprite.fromImage=function(a,c,d){var e=b.Texture.fromImage(a,c,d);return new b.Sprite(e)},b.SpriteBatch=function(a){b.DisplayObjectContainer.call(this),this.textureThing=a,this.ready=!1},b.SpriteBatch.prototype=Object.create(b.DisplayObjectContainer.prototype),b.SpriteBatch.prototype.constructor=b.SpriteBatch,b.SpriteBatch.prototype.initWebGL=function(a){this.fastSpriteBatch=new b.WebGLFastSpriteBatch(a),this.ready=!0},b.SpriteBatch.prototype.updateTransform=function(){b.DisplayObject.prototype.updateTransform.call(this)},b.SpriteBatch.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||!this.children.length||(this.ready||this.initWebGL(a.gl),a.spriteBatch.stop(),a.shaderManager.setShader(a.shaderManager.fastShader),this.fastSpriteBatch.begin(this,a),this.fastSpriteBatch.render(this),a.spriteBatch.start())},b.SpriteBatch.prototype._renderCanvas=function(a){if(this.visible&&!(this.alpha<=0)&&this.children.length){var c=a.context;c.globalAlpha=this.worldAlpha,b.DisplayObject.prototype.updateTransform.call(this);for(var d=this.worldTransform,e=!0,f=0;fi;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(c.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}c.descent=i-g,c.fontSize=c.ascent+c.descent,b.Text.fontPropertiesCache[a]=c}return c},b.Text.prototype.wordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g],e=this.style.wordWrapWidth-h):(e-=i,b+=" "+f[g])}d=2?parseInt(c[c.length-2],10):b.BitmapText.fonts[this.fontName].size,this.dirty=!0,this.tint=a.tint},b.BitmapText.prototype.updateText=function(){for(var a=b.BitmapText.fonts[this.fontName],c=new b.Point,d=null,e=[],f=0,g=[],h=0,i=this.fontSize/a.size,j=0;j=j;j++){var n=0;"right"===this.style.align?n=f-g[j]:"center"===this.style.align&&(n=(f-g[j])/2),m.push(n)}var o=this.children.length,p=e.length,q=this.tint||16777215;for(j=0;p>j;j++){var r=o>j?this.children[j]:this._pool.pop();r?r.setTexture(e[j].texture):r=new b.Sprite(e[j].texture),r.position.x=(e[j].position.x+m[e[j].line])*i,r.position.y=e[j].position.y*i,r.scale.x=r.scale.y=i,r.tint=q,r.parent||this.addChild(r)}for(;this.children.length>p;){var s=this.getChildAt(this.children.length-1);this._pool.push(s),this.removeChild(s)}this.textWidth=f*i,this.textHeight=(c.y+a.lineHeight)*i},b.BitmapText.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),b.DisplayObjectContainer.prototype.updateTransform.call(this)},b.BitmapText.fonts={},b.Stage=function(a){b.DisplayObjectContainer.call(this),this.worldTransform=new b.Matrix,this.interactive=!0,this.interactionManager=new b.InteractionManager(this),this.dirty=!0,this.stage=this,this.stage.hitArea=new b.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a)},b.Stage.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},b.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var a=0,b=this.children.length;b>a;a++)this.children[a].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},b.Stage.prototype.setBackgroundColor=function(a){this.backgroundColor=a||0,this.backgroundColorSplit=b.hex2rgb(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},b.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},function(a){for(var b=0,c=["ms","moz","webkit","o"],d=0;d>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){return function(a){function b(){for(var d=arguments.length,f=new Array(d);d--;)f[d]=arguments[d];return f=e.concat(f),c.apply(this instanceof b?this:a,f)}var c=this,d=arguments.length-1,e=[];if(d>0)for(e.length=d;d--;)e[d]=arguments[d+1];if("function"!=typeof c)throw new TypeError;return b.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(c.prototype),b}}()),b.AjaxRequest=function(){var a=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new window.XMLHttpRequest:!1;for(var b=0;b0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.EventTarget={call:function(a){a&&(a=a.prototype||a,b.EventTarget.mixin(a))},mixin:function(a){a.listeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?this._listeners[a].slice():[]},a.emit=a.dispatchEvent=function(a,c){if(this._listeners=this._listeners||{},"object"==typeof a&&(c=a,a=a.type),c&&c.__isEventObject===!0||(c=new b.Event(this,a,c)),this._listeners&&this._listeners[a]){var d,e=this._listeners[a],f=e.length,g=e[0];for(d=0;f>d;g=e[++d])if(g.call(this,c),c.stoppedImmediate)return this;if(c.stopped)return this}return this.parent&&this.parent.emit&&this.parent.emit.call(this.parent,a,c),this},a.on=a.addEventListener=function(a,b){return this._listeners=this._listeners||{},(this._listeners[a]=this._listeners[a]||[]).push(b),this},a.once=function(a,b){function c(){b.apply(d.off(a,c),arguments)}this._listeners=this._listeners||{};var d=this;return c._originalHandler=b,this.on(a,c)},a.off=a.removeEventListener=function(a,b){if(this._listeners=this._listeners||{},!this._listeners[a])return this;for(var c=this._listeners[a],d=b?c.length:0;d-->0;)(c[d]===b||c[d]._originalHandler===b)&&c.splice(d,1);return 0===c.length&&delete this._listeners[a],this},a.removeAllListeners=function(a){return this._listeners=this._listeners||{},this._listeners[a]?(delete this._listeners[a],this):this}}},b.Event=function(a,b,c){this.__isEventObject=!0,this.stopped=!1,this.stoppedImmediate=!1,this.target=a,this.type=b,this.data=c,this.content=c,this.timeStamp=Date.now()},b.Event.prototype.stopPropagation=function(){this.stopped=!0},b.Event.prototype.stopImmediatePropagation=function(){this.stoppedImmediate=!0},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return window.console.log("PIXI Warning: shape too complex to fill"),[];for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e +},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.initDefaultShaders=function(){},b.CompileVertexShader=function(a,c){return b._CompileShader(a,c,a.VERTEX_SHADER)},b.CompileFragmentShader=function(a,c){return b._CompileShader(a,c,a.FRAGMENT_SHADER)},b._CompileShader=function(a,b,c){var d=b.join("\n"),e=a.createShader(c);return a.shaderSource(e,d),a.compileShader(e),a.getShaderParameter(e,a.COMPILE_STATUS)?e:(window.console.log(a.getShaderInfoLog(e)),null)},b.compileProgram=function(a,c,d){var e=b.CompileFragmentShader(a,d),f=b.CompileVertexShader(a,c),g=a.createProgram();return a.attachShader(g,f),a.attachShader(g,e),a.linkProgram(g),a.getProgramParameter(g,a.LINK_STATUS)||window.console.log("Could not initialise shaders"),g},b.PixiShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.textureCount=0,this.firstRun=!0,this.dirty=!0,this.attributes=[],this.init()},b.PixiShader.prototype.constructor=b.PixiShader,b.PixiShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc||b.PixiShader.defaultVertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute];for(var d in this.uniforms)this.uniforms[d].uniformLocation=a.getUniformLocation(c,d);this.initUniforms(),this.program=c},b.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a,b=this.gl;for(var c in this.uniforms){a=this.uniforms[c];var d=a.type;"sampler2D"===d?(a._init=!1,null!==a.value&&this.initSampler2D(a)):"mat2"===d||"mat3"===d||"mat4"===d?(a.glMatrix=!0,a.glValueLength=1,"mat2"===d?a.glFunc=b.uniformMatrix2fv:"mat3"===d?a.glFunc=b.uniformMatrix3fv:"mat4"===d&&(a.glFunc=b.uniformMatrix4fv)):(a.glFunc=b["uniform"+d],a.glValueLength="2f"===d||"2i"===d?2:"3f"===d||"3i"===d?3:"4f"===d||"4i"===d?4:1)}},b.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){var b=this.gl;if(b.activeTexture(b["TEXTURE"+this.textureCount]),b.bindTexture(b.TEXTURE_2D,a.value.baseTexture._glTextures[b.id]),a.textureData){var c=a.textureData,d=c.magFilter?c.magFilter:b.LINEAR,e=c.minFilter?c.minFilter:b.LINEAR,f=c.wrapS?c.wrapS:b.CLAMP_TO_EDGE,g=c.wrapT?c.wrapT:b.CLAMP_TO_EDGE,h=c.luminance?b.LUMINANCE:b.RGBA;if(c.repeat&&(f=b.REPEAT,g=b.REPEAT),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,!!c.flipY),c.width){var i=c.width?c.width:512,j=c.height?c.height:2,k=c.border?c.border:0;b.texImage2D(b.TEXTURE_2D,0,h,i,j,k,h,b.UNSIGNED_BYTE,null)}else b.texImage2D(b.TEXTURE_2D,0,h,b.RGBA,b.UNSIGNED_BYTE,a.value.baseTexture.source);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,d),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,f),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,g)}b.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},b.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a,c=this.gl;for(var d in this.uniforms)a=this.uniforms[d],1===a.glValueLength?a.glMatrix===!0?a.glFunc.call(c,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c,a.uniformLocation,a.value):2===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y):3===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z):4===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"===a.type&&(a._init?(c.activeTexture(c["TEXTURE"+this.textureCount]),a.value.baseTexture._dirty[c.id]?b.defaultRenderer.updateTexture(a.value.baseTexture):c.bindTexture(c.TEXTURE_2D,a.value.baseTexture._glTextures[c.id]),c.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},b.PixiShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec4 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"],b.PixiFastShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"],this.textureCount=0,this.init()},b.PixiFastShader.prototype.constructor=b.PixiFastShader,b.PixiFastShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.uMatrix=a.getUniformLocation(c,"uMatrix"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aPositionCoord=a.getAttribLocation(c,"aPositionCoord"),this.aScale=a.getAttribLocation(c,"aScale"),this.aRotation=a.getAttribLocation(c,"aRotation"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute],this.program=c},b.PixiFastShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.StripShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;","}"],this.init()},b.StripShader.prototype.constructor=b.StripShader,b.StripShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.attributes=[this.aVertexPosition,this.aTextureCoord],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.StripShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.PrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor * vec4(tint * alpha, alpha);","}"],this.init()},b.PrimitiveShader.prototype.constructor=b.PrimitiveShader,b.PrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.ComplexPrimitiveShader=function(a){this._UID=b._UID++,this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform vec3 tint;","uniform float alpha;","uniform vec3 color;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = vec4(color * alpha * tint, alpha);","}"],this.init()},b.ComplexPrimitiveShader.prototype.constructor=b.ComplexPrimitiveShader,b.ComplexPrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.color=a.getUniformLocation(c,"color"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.ComplexPrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.WebGLGraphics=function(){},b.WebGLGraphics.renderGraphics=function(a,c){var d,e=c.gl,f=c.projection,g=c.offset,h=c.shaderManager.primitiveShader;a.dirty&&b.WebGLGraphics.updateGraphics(a,e);for(var i=a._webGL[e.id],j=0;j=6&&(h.points.length>10?(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g)):(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildPoly(h,g))),h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))):(g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g)),d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d),n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i)}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.lastIndex=0,this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[],this.lastIndex=0},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},b.glContexts=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)"undefined"==typeof d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.sayHello("webGL"),b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this.contextLostBound=this.handleContextLost.bind(this),this.contextRestoredBound=this.handleContextRestored.bind(this),this.view.addEventListener("webglcontextlost",this.contextLostBound,!1),this.view.addEventListener("webglcontextrestored",this.contextRestoredBound,!1),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(a.interactive&&a.interactionManager.removeEvents(),this.__stage=a),a.updateTransform();var b=this.gl;a._interactive?a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)):a._interactiveEventsAdded&&(a._interactiveEventsAdded=!1,a.interactionManager.setTarget(this)),b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.handleContextLost=function(a){a.preventDefault(),this.contextLost=!0},b.WebGLRenderer.prototype.handleContextRestored=function(){this.initContext();for(var a in b.TextureCache){var c=b.TextureCache[a].baseTexture;c._glTextures=[]}this.contextLost=!1},b.WebGLRenderer.prototype.destroy=function(){this.view.off("webglcontextlost",this.contextLostBound),this.view.off("webglcontextrestored",this.contextRestoredBound),b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a){var b=a.texture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=b.baseTexture);var c=b._uvs;if(c){var d,e,f,g,h=a.worldAlpha,i=a.tint,j=this.vertices,k=a.anchor.x,l=a.anchor.y;if(b.trim){var m=b.trim;e=m.x-k*m.width,d=e+b.crop.width,g=m.y-l*m.height,f=g+b.crop.height}else d=b.frame.width*(1-k),e=b.frame.width*-k,f=b.frame.height*(1-l),g=b.frame.height*-l;var n=4*this.currentBatchSize*this.vertSize,o=b.baseTexture.resolution,p=a.worldTransform,q=p.a/o,r=p.b/o,s=p.c/o,t=p.d/o,u=p.tx,v=p.ty;j[n++]=q*e+s*g+u,j[n++]=t*g+r*e+v,j[n++]=c.x0,j[n++]=c.y0,j[n++]=h,j[n++]=i,j[n++]=q*d+s*g+u,j[n++]=t*g+r*d+v,j[n++]=c.x1,j[n++]=c.y1,j[n++]=h,j[n++]=i,j[n++]=q*d+s*f+u,j[n++]=t*f+r*d+v,j[n++]=c.x2,j[n++]=c.y2,j[n++]=h,j[n++]=i,j[n++]=q*e+s*f+u,j[n++]=t*f+r*e+v,j[n++]=c.x3,j[n++]=c.y3,j[n++]=h,j[n++]=i,this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs;a.tilePosition.x%=c.baseTexture.width*a.tileScaleOffset.x,a.tilePosition.y%=c.baseTexture.height*a.tileScaleOffset.y;var e=a.tilePosition.x/(c.baseTexture.width*a.tileScaleOffset.x),f=a.tilePosition.y/(c.baseTexture.height*a.tileScaleOffset.y),g=a.width/c.baseTexture.width/(a.tileScale.x*a.tileScaleOffset.x),h=a.height/c.baseTexture.height/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-e,d.y0=0-f,d.x1=1*g-e,d.y1=0-f,d.x2=1*g-e,d.y2=1*h-f,d.x3=0-e,d.y3=1*h-f;var i=a.worldAlpha,j=a.tint,k=this.vertices,l=a.width,m=a.height,n=a.anchor.x,o=a.anchor.y,p=l*(1-n),q=l*-n,r=m*(1-o),s=m*-o,t=4*this.currentBatchSize*this.vertSize,u=c.baseTexture.resolution,v=a.worldTransform,w=v.a/u,x=v.b/u,y=v.c/u,z=v.d/u,A=v.tx,B=v.ty;k[t++]=w*q+y*s+A,k[t++]=z*s+x*q+B,k[t++]=d.x0,k[t++]=d.y0,k[t++]=i,k[t++]=j,k[t++]=w*p+y*s+A,k[t++]=z*s+x*p+B,k[t++]=d.x1,k[t++]=d.y1,k[t++]=i,k[t++]=j,k[t++]=w*p+y*r+A,k[t++]=z*r+x*p+B,k[t++]=d.x2,k[t++]=d.y2,k[t++]=i,k[t++]=j,k[t++]=w*q+y*r+A,k[t++]=z*r+x*q+B,k[t++]=d.x3,k[t++]=d.y3,k[t++]=i,k[t++]=j,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,2,c.FLOAT,!1,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var a=4*this.size*this.vertSize,b=6*this.maxSize;this.vertices=new Float32Array(a),this.indices=new Uint16Array(b),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var c=0,d=0;b>c;c+=6,d+=4)this.indices[c+0]=d+0,this.indices[c+1]=d+1,this.indices[c+2]=d+2,this.indices[c+3]=d+0,this.indices[c+4]=d+2,this.indices[c+5]=d+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(g.fillColor||0===g.fillColor)&&(c.globalAlpha=g.fillAlpha*d,c.fillStyle=e="#"+("00000"+(0|g.fillColor).toString(16)).substr(-6),c.fill()),g.lineWidth&&(c.globalAlpha=g.lineAlpha*d,c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){d>1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){c.beginPath();var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iA?A:z,c.beginPath(),c.moveTo(v,w+z),c.lineTo(v,w+y-z),c.quadraticCurveTo(v,w+y,v+z,w+y),c.lineTo(v+x-z,w+y),c.quadraticCurveTo(v+x,w+y,v+x,w+y-z),c.lineTo(v+x,w+z),c.quadraticCurveTo(v+x,w,v+x-z,w),c.lineTo(v+z,w),c.quadraticCurveTo(v,w,v,w+z),c.closePath()}}}},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.padding=0},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var b=a.gl,c=a.projection,d=a.offset,e=a.shaderManager.stripShader;b.blendFunc(b.ONE,b.ONE_MINUS_SRC_ALPHA),b.uniformMatrix3fv(e.translationMatrix,!1,this.worldTransform.toArray(!0)),b.uniform2f(e.projectionVector,c.x,-c.y),b.uniform2f(e.offsetVector,-d.x,-d.y),b.uniform1f(e.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.verticies,b.STATIC_DRAW),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)):(b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferSubData(b.ARRAY_BUFFER,0,this.verticies),b.vertexAttribPointer(e.aVertexPosition,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.vertexAttribPointer(e.aTextureCoord,2,b.FLOAT,!1,0,0),b.activeTexture(b.TEXTURE0),this.texture.baseTexture._dirty[b.id]?a.renderer.updateTexture(this.texture.baseTexture):b.bindTexture(b.TEXTURE_2D,this.texture.baseTexture._glTextures[b.id]),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),b.drawElements(b.TRIANGLE_STRIP,this.indices.length,b.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var b=a.context,c=this.worldTransform; +a.roundPixels?b.setTransform(c.a,c.b,c.c,c.d,0|c.tx,0|c.ty):b.setTransform(c.a,c.b,c.c,c.d,c.tx,c.ty);var d=this,e=d.verticies,f=d.uvs,g=e.length/2;this.count++;for(var h=0;g-2>h;h++){var i=2*h,j=e[i],k=e[i+2],l=e[i+4],m=e[i+1],n=e[i+3],o=e[i+5];if(this.padding>0){var p=(j+k+l)/3,q=(m+n+o)/3,r=j-p,s=m-q,t=Math.sqrt(r*r+s*s);j=p+r/t*(t+3),m=q+s/t*(t+3),r=k-p,s=n-q,t=Math.sqrt(r*r+s*s),k=p+r/t*(t+3),n=q+s/t*(t+3),r=l-p,s=o-q,t=Math.sqrt(r*r+s*s),l=p+r/t*(t+3),o=q+s/t*(t+3)}var u=f[i]*d.texture.width,v=f[i+2]*d.texture.width,w=f[i+4]*d.texture.width,x=f[i+1]*d.texture.height,y=f[i+3]*d.texture.height,z=f[i+5]*d.texture.height;b.save(),b.beginPath(),b.moveTo(j,m),b.lineTo(k,n),b.lineTo(l,o),b.closePath(),b.clip();var A=u*y+x*w+v*z-y*w-x*v-u*z,B=j*y+x*l+k*z-y*l-x*k-j*z,C=u*k+j*w+v*l-k*w-j*v-u*l,D=u*y*l+x*k*w+j*v*z-j*y*w-x*v*l-u*k*z,E=m*y+x*o+n*z-y*o-x*n-m*z,F=u*n+m*w+v*o-n*w-m*v-u*o,G=u*y*o+x*n*w+m*v*z-m*y*w-x*v*o-u*n*z;b.transform(B/A,E/A,C/A,F/A,D/A,G/A),b.drawImage(d.texture.baseTexture.source,0,0),b.restore()}},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.verticies=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.verticies,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||100,this._height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this._mask,a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d,e,f=this.worldTransform,g=a.resolution;if(c.setTransform(f.a*g,f.c*g,f.b*g,f.d*g,f.tx*g,f.ty*g),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]);var h=this.tilePosition,i=this.tileScale;for(h.x%=this.tilingTexture.baseTexture.width,h.y%=this.tilingTexture.baseTexture.height,c.scale(i.x,i.y),c.translate(h.x+this.anchor.x*-this._width,h.y+this.anchor.y*-this._height),c.fillStyle=this.__tilePattern,c.fillRect(-h.x,-h.y,this._width/i.x,this._height/i.y),c.scale(1/i.x,1/i.y),c.translate(-h.x+this.anchor.x*this._width,-h.y+this.anchor.y*this._height),this._mask&&a.maskManager.popMask(a.context),d=0,e=this.children.length;e>d;d++)this.children[d]._renderCanvas(a)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.onTextureUpdate=function(){},b.TilingSprite.prototype.generateTilingTexture=function(a){if(this.texture.baseTexture.hasLoaded){var c,d,e=this.originalTexture||this.texture,f=e.frame,g=f.width!==e.baseTexture.width||f.height!==e.baseTexture.height,h=!1;if(a?(c=b.getNextPowerOfTwo(f.width),d=b.getNextPowerOfTwo(f.height),(f.width!==c||f.height!==d)&&(h=!0)):g&&(c=f.width,d=f.height,h=!0),h){var i;this.tilingTexture&&this.tilingTexture.isTiling?(i=this.tilingTexture.canvasBuffer,i.resize(c,d),this.tilingTexture.baseTexture.width=c,this.tilingTexture.baseTexture.height=d,this.tilingTexture.needsUpdate=!0):(i=new b.CanvasBuffer(c,d),this.tilingTexture=b.Texture.fromCanvas(i.canvas),this.tilingTexture.canvasBuffer=i,this.tilingTexture.isTiling=!0),i.context.drawImage(e.baseTexture.source,e.crop.x,e.crop.y,e.crop.width,e.crop.height,0,0,c,d),this.tileScaleOffset.x=f.width/c,this.tileScaleOffset.y=f.height/d}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=e;this.refreshTexture=!1,this.originalTexture=this.texture,this.texture=this.tilingTexture,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this._dirty=[!0,!0,!0,!0],a){if((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height)this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty();else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.naturalWidth||d.source.width,d.height=d.source.naturalHeight||d.source.height,d.dirty(),d.dispatchEvent({type:"loaded",content:d})},this.source.onerror=function(){d.dispatchEvent({type:"error",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.EventTarget.mixin(b.BaseTexture.prototype),b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,this.source.src=""):this.source&&this.source._pixiId&&delete b.BaseTextureCache[this.source._pixiId],this.source=null;for(var a=this._glTextures.length-1;a>=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;athis.baseTexture.width||a.y+a.height>this.baseTexture.height))throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width,this.height)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width*this.resolution,this.height*this.resolution,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=this.frame.width=this.crop.width=a,this.height=this.frame.height=this.crop.height=c,d&&(this.baseTexture.width=this.width,this.baseTexture.height=this.height),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width*this.resolution,this.height*this.resolution))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1),a.worldAlpha=1;for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();var h=this.renderer.gl;h.viewport(0,0,this.width*this.resolution,this.height*this.resolution),h.bindFramebuffer(h.FRAMEBUFFER,this.textureBuffer.frameBuffer),c&&this.textureBuffer.clear(),this.renderer.spriteBatch.dirty=!0,this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),this.renderer.spriteBatch.dirty=!0}},b.RenderTexture.prototype.renderCanvas=function(a,b,c){if(this.valid){var d=a.worldTransform;d.identity(),b&&d.append(b);for(var e=a.children,f=0,g=e.length;g>f;f++)e[f].updateTransform();c&&this.textureBuffer.clear();var h=this.textureBuffer.context,i=this.renderer.resolution;this.renderer.resolution=this.resolution,this.renderer.renderDisplayObject(a,h),this.renderer.resolution=i}},b.RenderTexture.prototype.getImage=function(){var a=new Image;return a.src=this.getBase64(),a},b.RenderTexture.prototype.getBase64=function(){return this.getCanvas().toDataURL()},b.RenderTexture.prototype.getCanvas=function(){if(this.renderer.type===b.WEBGL_RENDERER){var a=this.renderer.gl,c=this.textureBuffer.width,d=this.textureBuffer.height,e=new Uint8Array(4*c*d);a.bindFramebuffer(a.FRAMEBUFFER,this.textureBuffer.frameBuffer),a.readPixels(0,0,c,d,a.RGBA,a.UNSIGNED_BYTE,e),a.bindFramebuffer(a.FRAMEBUFFER,null);for(var f=new b.CanvasBuffer(c,d),g=f.context.getImageData(0,0,c,d),h=g.data,i=0;ia;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this),function(){var a=this,b=b||{VERSION:"2.1.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};if(PIXI.InteractionManager=PIXI.InteractionManager||function(){},PIXI.dontSayHello=!0,b.Utils={getProperty:function(a,b){for(var c=b.split("."),d=c.pop(),e=c.length,f=1,g=c[0];e>f&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},transposeArray:function(a){for(var b=new Array(a[0].length),c=0;c-1;d--)b[c][d]=a[d][c]}return b},rotateArray:function(a,c){if("string"!=typeof c&&(c=(c%360+360)%360),90===c||-270===c||"rotateLeft"===c)a=b.Utils.transposeArray(a),a=a.reverse();else if(-90===c||270===c||"rotateRight"===c)a=a.reverse(),a=b.Utils.transposeArray(a);else if(180===Math.abs(c)||"rotate180"===c){for(var d=0;d0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h},mixin:function(a,c){if(!a||"object"!=typeof a)return c;for(var d in a){var e=a[d];if(!e.childNodes&&!e.cloneNode){var f=typeof a[d];c[d]=a[d]&&"object"===f?typeof c[d]===f?b.Utils.mixin(a[d],c[d]):b.Utils.mixin(a[d],new e.constructor):a[d]}}return c}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var c=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;b0?.5*c:0},b.Circle.prototype={type:null,circumference:function(){return 2*Math.PI*this._radius},getBounds:function(){return new b.Rectangle(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRounded(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},angleSq:function(a){return this.subtract(a).angle(a.subtract(this))},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},b.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},b.Point.angleSq=function(a,b){return a.subtract(b).angle(b.subtract(a))},b.Point.negative=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.x,-a.y)},b.Point.multiplyAdd=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+c.x*d,a.y+c.y*d)},b.Point.interpolate=function(a,c,d,e){return"undefined"==typeof e&&(e=new b.Point),e.setTo(a.x+(c.x-a.x)*d,a.y+(c.y-a.y)*d)},b.Point.perp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-a.y,a.x)},b.Point.rperp=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(a.y,-a.x)},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRounded(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.project=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c)/c.getMagnitudeSq();return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.projectUnit=function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.dot(c);return 0!==e&&d.setTo(e*c.x,e*c.y),d},b.Point.normalRightHand=function(a,c){return"undefined"==typeof c&&(c=new b.Point),c.setTo(-1*a.y,a.x)},b.Point.normalize=function(a,c){"undefined"==typeof c&&(c=new b.Point);var d=a.getMagnitude();return 0!==d&&c.setTo(a.x/d,a.y/d),c},b.Point.rotate=function(a,c,d,e,f,g){f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y)));var h=e+Math.atan2(a.y-d,a.x-c);return a.setTo(c+g*Math.cos(h),d+g*Math.sin(h))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},b.Point.parse=function(a,c,d){c=c||"x",d=d||"y";var e=new b.Point;return a[c]&&(e.x=parseInt(a[c],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return"undefined"==typeof b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(a,this)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(b.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"topRight",{get:function(){return new b.Point(this.x+this.width,this.y) +},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y)},b.Rectangle.size=function(a,c){return"undefined"==typeof c||null===c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c||null===c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(c.x-a.x)-(e.x-d.x)*(c.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((c.x-a.x)*(a.y-d.y)-(c.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new b.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a||null===a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){if(this.type=b.POLYGON,a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}this.points=a,this.closed=!0},b.Polygon.prototype={clone:function(a){var c=this.points.slice();return"undefined"==typeof a||null===a?a=new b.Polygon(c):a.setTo(c),a},contains:function(a,b){for(var c=!1,d=this.points.length/2,e=0,f=d-1;d>e;f=e++){var g=this.points[2*e].x,h=this.points[2*e+1].y,i=this.points[2*f].x,j=this.points[2*f+1].y,k=h>b!=j>b&&(i-g)*(b-h)/(j-h)+g>a;k&&(c=!c)}return c},setTo:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),a[0]instanceof b.Point){for(var c=[],d=0,e=a.length;e>d;d++)c.push(a[d].x,a[d].y);a=c}return this.points=a,this}},b.Polygon.prototype.constructor=b.Polygon,Object.defineProperty(b.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this._points=a}}),Object.defineProperty(b.Polygon.prototype,"area",{get:function(){var a,b,c,d,e,f=Number.MAX_VALUE,g=0;for(e=0;e=l;l++)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;q++)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[a,b]):this.moveTo(a,b),0===this.currentPath.length&&this.moveTo(a,b);var f=this.currentPath,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){var g=a+Math.cos(d)*c,h=b+Math.sin(d)*c,i=this.currentPath.shape.points;if((0!==i.length&&i[i.length-2]!==g||i[i.length-1]!==h)&&(this.moveTo(g,h),i=this.currentPath.shape.points),d===e)return this;!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var j=f?-1*(d-e):e-d,k=Math.abs(j)/(2*Math.PI)*40;if(0===j)return this;for(var l=j/(2*k),m=2*l,n=Math.cos(l),o=Math.sin(l),p=k-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);i.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape({points:[a,b,c,d,e],type:PIXI.Graphics.RREC}),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){return a instanceof Array||(a=Array.prototype.slice.call(arguments)),this.drawShape(new PIXI.Polygon(a)),this},PIXI.Graphics.prototype.clear=function(){return this.lineWidth=0,this.filling=!1,this.dirty=!0,this.clearDirty=!0,this.graphicsData=[],this},PIXI.Graphics.prototype.generateTexture=function(a,b){a=a||1;var c=this.getBounds(),d=new PIXI.CanvasBuffer(c.width*a,c.height*a),e=PIXI.Texture.fromCanvas(d.canvas,b);return e.baseTexture.resolution=a,d.context.scale(a,a),d.context.translate(-c.x,-c.y),PIXI.CanvasGraphics.renderGraphics(this,d.context),e},PIXI.Graphics.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite,a);if(a.spriteBatch.stop(),a.blendModeManager.setBlendMode(this.blendMode),this._mask&&a.maskManager.pushMask(this._mask,a),this._filters&&a.filterManager.pushFilter(this._filterBlock),this.blendMode!==a.spriteBatch.currentBlendMode){a.spriteBatch.currentBlendMode=this.blendMode;var b=PIXI.blendModesWebGL[a.spriteBatch.currentBlendMode];a.spriteBatch.gl.blendFunc(b[0],b[1])}if(this.webGLDirty&&(this.dirty=!0,this.webGLDirty=!1),PIXI.WebGLGraphics.renderGraphics(this,a),this.children.length){a.spriteBatch.start();for(var c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(this.mask,a),a.drawCount++,a.spriteBatch.start()}},PIXI.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){if(this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite,a);var b=a.context,c=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,b.globalCompositeOperation=PIXI.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a);var d=a.resolution;b.setTransform(c.a*d,c.b*d,c.c*d,c.d*d,c.tx*d,c.ty*d),PIXI.CanvasGraphics.renderGraphics(this,b);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a);this._mask&&a.maskManager.popMask(a)}},PIXI.Graphics.prototype.getBounds=function(a){this.dirty&&(this.updateBounds(),this.webGLDirty=!0,this.cachedSpriteDirty=!0,this.dirty=!1);var b=this._bounds,c=b.x,d=b.width+b.x,e=b.y,f=b.height+b.y,g=a||this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=n,w=o,x=n,y=o;return x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,b.x=x,b.width=v-x,b.y=y,b.height=w-y,b},PIXI.Graphics.prototype.updateBounds=function(){var a=1/0,b=-1/0,c=1/0,d=-1/0;if(this.graphicsData.length)for(var e,f,g,h,i,j,k=0;kg?g:a,b=g+i>b?g+i:b,c=c>h?h:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.CIRC)g=e.x,h=e.y,i=e.radius+n/2,j=e.radius+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else if(m===PIXI.Graphics.ELIP)g=e.x,h=e.y,i=e.width+n/2,j=e.height+n/2,a=a>g-i?g-i:a,b=g+i>b?g+i:b,c=c>h-j?h-j:c,d=h+j>d?h+j:d;else{f=e.points;for(var o=0;og-n?g-n:a,b=g+n>b?g+n:b,c=c>h-n?h-n:c,d=h+n>d?h+n:d}}else a=0,b=0,c=0,d=0;var p=this.boundsPadding,q=this._bounds;q.x=a-p,q.width=b-a+2*p,q.y=c-p,q.height=d-c+2*p},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null;var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this.fillColor=d,this.fillAlpha=e,this.fill=f,this.shape=g,this.type=g.type},PIXI.Graphics.POLY=0,PIXI.Graphics.RECT=1,PIXI.Graphics.CIRC=2,PIXI.Graphics.ELIP=3,PIXI.Graphics.RREC=4,PIXI.Polygon.prototype.type=PIXI.Graphics.POLY,PIXI.Rectangle.prototype.type=PIXI.Graphics.RECT,PIXI.Circle.prototype.type=PIXI.Graphics.CIRC,PIXI.Ellipse.prototype.type=PIXI.Graphics.ELIP,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this._position=new b.Point,this.displayObject=null,this.scale=null,this._targetPosition=new b.Point},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target).multiply(this.target.parent?this.target.parent.worldTransform.a:1,this.target.parent?this.target.parent.worldTransform.d:1),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},resize:function(){},paused:function(){},pauseUpdate:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[])},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created&&this.onPauseUpdateCallback?this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.ArrayList=function(){this.total=0,this.position=0,this.list=[]},b.ArrayList.prototype={add:function(a){return this.exists(a)||(this.list.push(a),this.total++),a},getIndex:function(a){return this.list.indexOf(a)},exists:function(a){return this.list.indexOf(a)>-1 +},reset:function(){this.list.length=0,this.total=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),this.total--,a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)}},Object.defineProperty(b.ArrayList.prototype,"first",{get:function(){return this.position=0,this.total>0?this.list[0]:null}}),Object.defineProperty(b.ArrayList.prototype,"next",{get:function(){return this.positionb;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange;var a=this;this.game.device.cocoonJSApp&&(CocoonJS.App.onSuspended.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"pause"})}),CocoonJS.App.onActivated.addEventListener(function(){b.Stage.prototype.visibilityChange.call(a,{type:"resume"})}))},b.Stage.prototype.visibilityChange=function(a){return"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(this.disableVisibilityChange||(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden||"pause"===a.type?this.game.gamePaused(a):this.game.gameResumed(a)))},b.Stage.prototype.setBackgroundColor=function(a){if("string"==typeof a){var c=b.Color.hexToColor(a);this._backgroundColor=b.Color.getColor(c.r,c.g,c.b)}else{var c=b.Color.getRGB(a);this._backgroundColor=a}this.backgroundColorSplit=[c.r/255,c.g/255,c.b/255],this.backgroundColorString=b.Color.RGBtoString(c.r,c.g,c.b,255,"#")},b.Stage.prototype.destroy=function(){this._hiddenVar&&document.removeEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=null,window.onpageshow=null,window.onblur=null,window.onfocus=null},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this.game.transparent||this.setBackgroundColor(a)}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.ignoreDestroy=!1,this.classType=b.Sprite,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this.onDestroy=new b.Signal,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a,b){return"undefined"==typeof b&&(b=!1),a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,!b&&a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addMultiple=function(a,b){if(Array.isArray(a))for(var c=0;ca||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,b,c,d,e){"undefined"==typeof e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,f.events&&f.events.onAddedToGroup.dispatch(f,this),null===this.cursor&&(this.cursor=f),f},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.resetCursor=function(a){return"undefined"==typeof a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this._cache[8]=a,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},b.Group.prototype.setProperty=function(a,b,c,d,e){if("undefined"==typeof e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},b.Group.prototype.checkProperty=function(a,c,d,e){return"undefined"==typeof e&&(e=!1),!b.Utils.getProperty(a,c)&&e?!1:b.Utils.getProperty(a,c)!==d?!1:!0},b.Group.prototype.set=function(a,b,c,d,e,f,g){return"undefined"==typeof g&&(g=!1),b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},b.Group.prototype.setAll=function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof f&&(f=!1),a=a.split("."),e=e||0;for(var g=0,h=this.children.length;h>g;g++)(!c||c&&this.children[g].alive)&&(!d||d&&this.children[g].visible)&&this.setProperty(this.children[g],a,b,e,f)},b.Group.prototype.setAllChildren=function(a,c,d,e,f,g){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),"undefined"==typeof g&&(g=!1),f=f||0;for(var h=0,i=this.children.length;i>h;h++)(!d||d&&this.children[h].alive)&&(!e||e&&this.children[h].visible)&&(this.children[h]instanceof b.Group?this.children[h].setAllChildren(a,c,d,e,f,g):this.setProperty(this.children[h],a.split("."),c,f,g))},b.Group.prototype.checkAll=function(a,b,c,d,e){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);for(var f=0,g=this.children.length;g>f;f++)if((!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&!this.checkProperty(this.children[f],a,b,e))return!1;return!0},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.filter=function(a,c){for(var d=-1,e=this.children.length,f=new b.ArrayList;++de;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b,c){if("undefined"==typeof b&&(b=!1),"undefined"==typeof c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup.dispatch(a,this);var d=this.removeChild(a);return this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},b.Group.prototype.removeAll=function(a,b){if("undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);a&&c&&c.destroy(!0)}while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c,d){if("undefined"==typeof b&&(b=this.children.length-1),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup.dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},b.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},b.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(b.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){awindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.bounds=new b.Rectangle,this.aspectRatio=0,this.sourceAspectRatio=0,this.event=null,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this.parentIsWindow=!1,this.parentNode=null,this.parentScaleFactor=new b.Point(1,1),this.trackParentInterval=2e3,this.onResize=null,this.onResizeContext=null,this._scaleMode=b.ScaleManager.NO_SCALE,this._width=0,this._height=0,this._check=null,this._nextParentCheck=0,this._parentBounds=null,a.config&&this.parseConfig(a.config),this.setupScale(c,d) },b.ScaleManager.EXACT_FIT=0,b.ScaleManager.NO_SCALE=1,b.ScaleManager.SHOW_ALL=2,b.ScaleManager.RESIZE=3,b.ScaleManager.prototype={parseConfig:function(a){a.scaleMode&&(this.scaleMode=a.scaleMode),a.fullScreenScaleMode&&(this.fullScreenScaleMode=a.fullScreenScaleMode),a.fullScreenTarget&&(this.fullScreenTarget=a.fullScreenTarget)},setupScale:function(a,c){var d,e=new b.Rectangle;""!==this.game.parent&&("string"==typeof this.game.parent?d=document.getElementById(this.game.parent):"object"==typeof this.game.parent&&1===this.game.parent.nodeType&&(d=this.game.parent)),d?(this.parentNode=d,this.parentIsWindow=!1,this._parentBounds=this.parentNode.getBoundingClientRect(),e.width=this._parentBounds.width,e.height=this._parentBounds.height,this.offset.set(this._parentBounds.left,this._parentBounds.top)):(this.parentNode=null,this.parentIsWindow=!0,e.width=window.innerWidth,e.height=window.innerHeight);var f=0,g=0;"number"==typeof a?f=a:(this.parentScaleFactor.x=parseInt(a,10)/100,f=e.width*this.parentScaleFactor.x),"number"==typeof c?g=c:(this.parentScaleFactor.y=parseInt(c,10)/100,g=e.height*this.parentScaleFactor.y),this.grid=new b.FlexGrid(this,f,g),this.updateDimensions(f,g,!1)},boot:function(){this.fullScreenTarget=this.game.canvas;var a=this;this._checkOrientation=function(b){return a.checkOrientation(b)},this._checkResize=function(b){return a.checkResize(b)},this._fullScreenChange=function(b){return a.fullScreenChange(b)},window.addEventListener("orientationchange",this._checkOrientation,!1),window.addEventListener("resize",this._checkResize,!1),this.game.device.cocoonJS||(document.addEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.addEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.addEventListener("fullscreenchange",this._fullScreenChange,!1)),this.updateDimensions(this.width,this.height,!0),b.Canvas.getOffset(this.game.canvas,this.offset),this.bounds.setTo(this.offset.x,this.offset.y,this.width,this.height)},setResizeCallback:function(a,b){this.onResize=a,this.onResizeContext=b},setMinMax:function(a,b,c,d){this.minWidth=a,this.minHeight=b,"undefined"!=typeof c&&(this.maxWidth=c),"undefined"!=typeof d&&(this.maxHeight=d)},preUpdate:function(){this.game.time.nowwindow.innerHeight||this.forcePortrait&&window.innerHeight>window.innerWidth)&&(this.incorrectOrientation=!1,this.leaveIncorrectOrientation.dispatch(),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh()):(this.forceLandscape&&window.innerWidthwindow.outerHeight?90:0,c&&this.isPortrait?(this.enterPortrait.dispatch(this.orientation,!1,!0),this.forceLandscape?this.enterIncorrectOrientation.dispatch():this.forcePortrait&&this.leaveIncorrectOrientation.dispatch()):!c&&this.isLandscape&&(this.enterLandscape.dispatch(this.orientation,!0,!1),this.forceLandscape?this.leaveIncorrectOrientation.dispatch():this.forcePortrait&&this.enterIncorrectOrientation.dispatch()),this._scaleMode===b.ScaleManager.RESIZE&&this.parentIsWindow?this.updateDimensions(window.innerWidth,window.innerHeight,!0):(this._scaleMode===b.ScaleManager.EXACT_FIT||this._scaleMode===b.ScaleManager.SHOW_ALL)&&(this.refresh(),this.onResize&&this.onResize.call(this.onResizeContext,this.width,this.height)),this.checkOrientationState()},refresh:function(){if(this.scaleMode!==b.ScaleManager.RESIZE&&(this.game.device.iPad||this.game.device.webApp||this.game.device.desktop||(this.game.device.android&&!this.game.device.chrome?window.scrollTo(0,1):window.scrollTo(0,0)),null===this._check&&this.maxIterations>0)){this._iterations=this.maxIterations;var a=this;this._check=window.setInterval(function(){return a.setScreenSize()},10),this.setScreenSize()}},setScreenSize:function(a){this.scaleMode!==b.ScaleManager.RESIZE&&("undefined"==typeof a&&(a=!1),this.game.device.iPad||this.game.device.webApp||this.game.device.desktop||(this.game.device.android&&!this.game.device.chrome?window.scrollTo(0,1):window.scrollTo(0,0)),this._iterations--,(a||this._iterations<0)&&(document.documentElement.style.minHeight=window.innerHeight+"px",this.incorrectOrientation?this.setMaximum():this.isFullScreen?this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?this.setExactFit():this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&this.setShowAll():this.scaleMode===b.ScaleManager.EXACT_FIT?this.setExactFit():this.scaleMode===b.ScaleManager.SHOW_ALL&&this.setShowAll(),this.setSize(),clearInterval(this._check),this._check=null))},setSize:function(){this.incorrectOrientation||(this.maxWidth&&this.width>this.maxWidth&&(this.width=this.maxWidth),this.maxHeight&&this.height>this.maxHeight&&(this.height=this.maxHeight),this.minWidth&&this.widththis.maxWidth?this.maxWidth:a,this.height=this.maxHeight&&b>this.maxHeight?this.maxHeight:b},startFullScreen:function(a){!this.isFullScreen&&this.game.device.fullscreen&&("undefined"!=typeof a&&this.game.renderType===b.CANVAS&&(this.game.stage.smoothed=a),this._width=this.width,this._height=this.height,this.game.device.fullscreenKeyboard?this.fullScreenTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT):this.fullScreenTarget[this.game.device.requestFullscreen]())},stopFullScreen:function(){document[this.game.device.cancelFullscreen]()},fullScreenChange:function(a){this.event=a,this.isFullScreen?(this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?(this.fullScreenTarget.style.width="100%",this.fullScreenTarget.style.height="100%",this.width=window.outerWidth,this.height=window.outerHeight,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.checkResize()):this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&(this.setShowAll(),this.refresh()),this.enterFullScreen.dispatch(this.width,this.height)):(this.fullScreenTarget.style.width=this.game.width+"px",this.fullScreenTarget.style.height=this.game.height+"px",this.width=this._width,this.height=this._height,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.leaveFullScreen.dispatch(this.width,this.height))},destroy:function(){window.removeEventListener("orientationchange",this._checkOrientation,!1),window.removeEventListener("resize",this._checkResize,!1),this.game.device.cocoonJS||(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1))}},b.ScaleManager.prototype.constructor=b.ScaleManager,Object.defineProperty(b.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){a!==this._scaleMode&&(this._scaleMode=a)}}),Object.defineProperty(b.ScaleManager.prototype,"isFullScreen",{get:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement}}),Object.defineProperty(b.ScaleManager.prototype,"isPortrait",{get:function(){return 0===this.orientation||180===this.orientation}}),Object.defineProperty(b.ScaleManager.prototype,"isLandscape",{get:function(){return 90===this.orientation||-90===this.orientation}}),b.Game=function(a,c,d,e,f,g,h,i){this.id=b.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.transparent=!1,this.antialias=!0,this.preserveDrawingBuffer=!1,this.renderer=null,this.renderType=b.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.rnd=null,this.device=null,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,this._width=800,this._height=600,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):(this.config={enableDebug:!0},"undefined"!=typeof a&&(this._width=a),"undefined"!=typeof c&&(this._height=c),"undefined"!=typeof d&&(this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new b.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new b.StateManager(this,f));var j=this;return this._onBoot=function(){return j.boot()},"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(this._onBoot,0):"undefined"!=typeof window.cordova?document.addEventListener("deviceready",this._onBoot,!1):(document.addEventListener("DOMContentLoaded",this._onBoot,!1),window.addEventListener("load",this._onBoot,!1)),this},b.Game.prototype={parseConfig:function(a){this.config=a,"undefined"==typeof a.enableDebug&&(this.config.enableDebug=!0),a.width&&(this._width=a.width),a.height&&(this._height=a.height),a.renderer&&(this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.preserveDrawingBuffer&&(this.preserveDrawingBuffer=a.preserveDrawingBuffer),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var c=[(Date.now()*Math.random()).toString()];a.seed&&(c=a.seed),this.rnd=new b.RandomDataGenerator(c);var d=null;a.state&&(d=a.state),this.state=new b.StateManager(this,d)},boot:function(){this.isBooted||(document.body?(document.removeEventListener("DOMContentLoaded",this._onBoot),window.removeEventListener("load",this._onBoot),this.onPause=new b.Signal,this.onResume=new b.Signal,this.onBlur=new b.Signal,this.onFocus=new b.Signal,this.isBooted=!0,this.device=new b.Device(this),this.math=b.Math,this.scale=new b.ScaleManager(this,this._width,this._height),this.stage=new b.Stage(this),this.setUpRenderer(),this.device.checkFullScreenSupport(),this.world=new b.World(this),this.add=new b.GameObjectFactory(this),this.make=new b.GameObjectCreator(this),this.cache=new b.Cache(this),this.load=new b.Loader(this),this.time=new b.Time(this),this.tweens=new b.TweenManager(this),this.input=new b.Input(this),this.sound=new b.SoundManager(this),this.physics=new b.Physics(this,this.physicsConfig),this.particles=new b.Particles(this),this.plugins=new b.PluginManager(this),this.net=new b.Net(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.scale.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.config.enableDebug&&(this.debug=new b.Utils.Debug(this),this.debug.boot()),this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new b.RequestAnimationFrame(this,this.config.forceSetTimeOut):new b.RequestAnimationFrame(this,!1),this.raf.start()):window.setTimeout(this._onBoot,20))},showDebugHeader:function(){var a=b.VERSION,c="Canvas",d="HTML Audio",e=1;if(this.renderType===b.WEBGL?(c="WebGL",e++):this.renderType==b.HEADLESS&&(c="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+c+" | "+d+" %c %c http://phaser.io %c %c ♥%c♥%c♥ ","background: #7a66a3","background: #625186","color: #ffffff; background: #43375b;","background: #625186","background: #ccb9f2","background: #625186"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+c+" | "+d+" | http://phaser.io")},setUpRenderer:function(){if(this.canvas=this.config.canvasID?b.Canvas.create(this.width,this.height,this.config.canvasID):b.Canvas.create(this.width,this.height),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===b.CANVAS?!0:!1),this.renderType===b.HEADLESS||this.renderType===b.CANVAS||this.renderType===b.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===b.AUTO&&(this.renderType=b.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:1,clearBeforeRender:!0}),this.context=this.renderer.context}else this.renderType=b.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:1,antialias:this.antialias,preserveDrawingBuffer:this.preserveDrawingBuffer}),this.context=null;this.renderType!==b.HEADLESS&&(this.stage.smoothed=this.antialias,b.Canvas.addToDOM(this.canvas,this.parent,!1),b.Canvas.setTouchAction(this.canvas))},update:function(a){this.time.update(a),this._paused||this.pendingStep?(this.state.pauseUpdate(),this.config.enableDebug&&this.debug.preUpdate()):(this.stepping&&(this.pendingStep=!0),this.scale.preUpdate(),this.config.enableDebug&&this.debug.preUpdate(),this.physics.preUpdate(),this.state.preUpdate(),this.plugins.preUpdate(),this.stage.preUpdate(),this.state.update(),this.stage.update(),this.tweens.update(),this.sound.update(),this.input.update(),this.physics.update(),this.particles.update(),this.plugins.update(),this.stage.postUpdate(),this.plugins.postUpdate()),this.renderType!=b.HEADLESS&&(this.state.preRender(),this.renderer.render(this.stage),this.plugins.render(),this.state.render(),this.plugins.postRender(),this.device.cocoonJS&&this.renderType===b.CANVAS&&1===this.stage.currentRenderOrderID&&this.context.fillRect(0,0,0,0))},enableStep:function(){this.stepping=!0,this.pendingStep=!1,this.stepCount=0},disableStep:function(){this.stepping=!1,this.pendingStep=!1},step:function(){this.pendingStep=!1,this.stepCount++},destroy:function(){this.raf.stop(),this.state.destroy(),this.sound.destroy(),this.scale.destroy(),this.stage.destroy(),this.input.destroy(),this.physics.destroy(),this.state=null,this.cache=null,this.input=null,this.load=null,this.sound=null,this.stage=null,this.time=null,this.world=null,this.isBooted=!1,b.Canvas.removeFromDOM(this.canvas)},gamePaused:function(a){this._paused||(this._paused=!0,this.time.gamePaused(),this.sound.setMute(),this.onPause.dispatch(a))},gameResumed:function(a){this._paused&&!this._codePaused&&(this._paused=!1,this.time.gameResumed(),this.input.reset(),this.sound.unsetMute(),this.onResume.dispatch(a))},focusLoss:function(a){this.onBlur.dispatch(a),this.stage.disableVisibilityChange||this.gamePaused(a)},focusGain:function(a){this.onFocus.dispatch(a),this.stage.disableVisibilityChange||this.gameResumed(a)}},b.Game.prototype.constructor=b.Game,Object.defineProperty(b.Game.prototype,"paused",{get:function(){return this._paused},set:function(a){a===!0?(this._paused===!1&&(this._paused=!0,this.sound.setMute(),this.time.gamePaused(),this.onPause.dispatch(this)),this._codePaused=!0):(this._paused&&(this._paused=!1,this.input.reset(),this.sound.unsetMute(),this.time.gameResumed(),this.onResume.dispatch(this)),this._codePaused=!1)}}),b.Input=function(a){this.game=a,this.hitCanvas=null,this.hitContext=null,this.moveCallbacks=[],this.moveCallback=null,this.moveCallbackContext=this,this.pollRate=0,this.disabled=!1,this.multiInputOverride=b.Input.MOUSE_TOUCH_COMBINE,this.position=null,this.speed=null,this.circle=null,this.scale=null,this.maxPointers=10,this.currentPointers=0,this.tapRate=200,this.doubleTapRate=300,this.holdRate=2e3,this.justPressedRate=200,this.justReleasedRate=200,this.recordPointerHistory=!1,this.recordRate=100,this.recordLimit=100,this.pointer1=null,this.pointer2=null,this.pointer3=null,this.pointer4=null,this.pointer5=null,this.pointer6=null,this.pointer7=null,this.pointer8=null,this.pointer9=null,this.pointer10=null,this.activePointer=null,this.mousePointer=null,this.mouse=null,this.keyboard=null,this.touch=null,this.mspointer=null,this.gamepad=null,this.resetLocked=!1,this.onDown=null,this.onUp=null,this.onTap=null,this.onHold=null,this.minPriorityID=0,this.interactiveItems=new b.ArrayList,this._localPoint=new b.Point,this._pollCounter=0,this._oldPosition=null,this._x=0,this._y=0},b.Input.MOUSE_OVERRIDES_TOUCH=0,b.Input.TOUCH_OVERRIDES_MOUSE=1,b.Input.MOUSE_TOUCH_COMBINE=2,b.Input.prototype={boot:function(){this.mousePointer=new b.Pointer(this.game,0),this.pointer1=new b.Pointer(this.game,1),this.pointer2=new b.Pointer(this.game,2),this.mouse=new b.Mouse(this.game),this.keyboard=new b.Keyboard(this.game),this.touch=new b.Touch(this.game),this.mspointer=new b.MSPointer(this.game),this.gamepad=new b.Gamepad(this.game),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.scale=new b.Point(1,1),this.speed=new b.Point,this.position=new b.Point,this._oldPosition=new b.Point,this.circle=new b.Circle(0,0,44),this.activePointer=this.mousePointer,this.currentPointers=0,this.hitCanvas=document.createElement("canvas"),this.hitCanvas.width=1,this.hitCanvas.height=1,this.hitContext=this.hitCanvas.getContext("2d"),this.mouse.start(),this.keyboard.start(),this.touch.start(),this.mspointer.start(),this.mousePointer.active=!0},destroy:function(){this.mouse.stop(),this.keyboard.stop(),this.touch.stop(),this.mspointer.stop(),this.gamepad.stop(),this.moveCallbacks=[]},addMoveCallback:function(a,b){return this.moveCallbacks.push({callback:a,context:b})-1},deleteMoveCallback:function(a){this.moveCallbacks[a]&&this.moveCallbacks.splice(a,1)},addPointer:function(){for(var a=0,c=10;c>0;c--)null===this["pointer"+c]&&(a=c);return 0===a?(console.warn("You can only have 10 Pointer objects"),null):(this["pointer"+a]=new b.Pointer(this.game,a),this["pointer"+a])},update:function(){return this.keyboard.update(),this.pollRate>0&&this._pollCounter=c;c++)this["pointer"+c]&&this["pointer"+c].reset();this.currentPointers=0,"none"!==this.game.canvas.style.cursor&&(this.game.canvas.style.cursor="inherit"),a&&(this.onDown.dispose(),this.onUp.dispose(),this.onTap.dispose(),this.onHold.dispose(),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.moveCallbacks=[]),this._pollCounter=0}},resetSpeed:function(a,b){this._oldPosition.setTo(a,b),this.speed.setTo(0,0)},startPointer:function(a){if(this.maxPointers<10&&this.totalActivePointers==this.maxPointers)return null;if(this.pointer1.active===!1)return this.pointer1.start(a);if(this.pointer2.active===!1)return this.pointer2.start(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active===!1)return this["pointer"+b].start(a);return null},updatePointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.move(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.move(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].move(a);return null},stopPointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.stop(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.stop(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].stop(a);return null},getPointer:function(a){if(a=a||!1,this.pointer1.active==a)return this.pointer1;if(this.pointer2.active==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active==a)return this["pointer"+b];return null},getPointerFromIdentifier:function(a){if(this.pointer1.identifier===a)return this.pointer1;if(this.pointer2.identifier===a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].identifier===a)return this["pointer"+b];return null},getPointerFromId:function(a){if(this.pointer1.pointerId===a)return this.pointer1;if(this.pointer2.pointerId===a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].pointerId===a)return this["pointer"+b];return null},getLocalPosition:function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.worldTransform,f=1/(e.a*e.d+e.c*-e.b);return d.setTo(e.d*f*c.x+-e.c*f*c.y+(e.ty*e.c-e.tx*e.d)*f,e.a*f*c.y+-e.b*f*c.x+(-e.ty*e.a+e.tx*e.b)*f)},hitTest:function(a,c,d){if(!a.worldVisible)return!1;if(this.getLocalPosition(a,c,this._localPoint),d.copyFrom(this._localPoint),a.hitArea&&a.hitArea.contains)return a.hitArea.contains(this._localPoint.x,this._localPoint.y);if(a instanceof PIXI.Sprite){var e=a.texture.frame.width,f=a.texture.frame.height,g=-e*a.anchor.x;if(this._localPoint.x>=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],c,d))return!0;return!1}},b.Input.prototype.constructor=b.Input,Object.defineProperty(b.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounter=a;a++)this["pointer"+a]&&this["pointer"+a].active&&this.currentPointers++;return this.currentPointers}}),Object.defineProperty(b.Input.prototype,"worldX",{get:function(){return this.game.camera.view.x+this.x}}),Object.defineProperty(b.Input.prototype,"worldY",{get:function(){return this.game.camera.view.y+this.y}}),b.Key=function(a,c){this.game=a,this.enabled=!0,this.event=null,this.isDown=!1,this.isUp=!0,this.altKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.timeDown=0,this.duration=0,this.timeUp=-2500,this.repeats=0,this.keyCode=c,this.onDown=new b.Signal,this.onHoldCallback=null,this.onHoldContext=null,this.onUp=new b.Signal},b.Key.prototype={update:function(){this.enabled&&this.isDown&&(this.duration=this.game.time.now-this.timeDown,this.repeats++,this.onHoldCallback&&this.onHoldCallback.call(this.onHoldContext,this))},processKeyDown:function(a){this.enabled&&(this.event=a,this.isDown||(this.altKey=a.altKey,this.ctrlKey=a.ctrlKey,this.shiftKey=a.shiftKey,this.isDown=!0,this.isUp=!1,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0,this.onDown.dispatch(this)))},processKeyUp:function(a){this.enabled&&(this.event=a,this.isUp||(this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.onUp.dispatch(this)))},reset:function(a){"undefined"==typeof a&&(a=!0),this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=0,this.enabled=!0,a&&(this.onDown.removeAll(),this.onUp.removeAll(),this.onHoldCallback=null,this.onHoldContext=null)},justPressed:function(a){return"undefined"==typeof a&&(a=50),this.isDown&&this.duration0&&this.processInteractiveObjects(!0),this.dirty=!1),this._holdSent===!1&&this.duration>=this.game.input.holdRate&&((this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.now>=this._nextDrop&&(this._nextDrop=this.game.time.now+this.game.input.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>this.game.input.recordLimit&&this._history.shift()))},move:function(a,c){if(!this.game.input.pollLocked){if("undefined"==typeof c&&(c=!1),"undefined"!=typeof a.button&&(this.button=a.button),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&this.game.input.mouse.locked&&!c&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*this.game.input.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*this.game.input.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(this.game.input.multiInputOverride===b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.activePointer=this,this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.game.input.x,this.game.input.y),this.game.input.circle.x=this.game.input.x,this.game.input.circle.y=this.game.input.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var d=this.game.input.moveCallbacks.length;d--;)this.game.input.moveCallbacks[d].callback.call(this.game.input.moveCallbacks[d].context,this,this.x,this.y,c);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):this.game.input.interactiveItems.total>0&&this.processInteractiveObjects(c),this}},processInteractiveObjects:function(a){this.game.input.interactiveItems.setAll("checked",!1),this._highestRenderOrderID=Number.MAX_SAFE_INTEGER,this._highestRenderObject=null,this._highestInputPriorityID=-1;var b=this.game.input.interactiveItems.first;do b&&b.validForInput(this._highestInputPriorityID,this._highestRenderOrderID,!1)&&(b.checked=!0,(a&&b.checkPointerDown(this,!0)||!a&&b.checkPointerOver(this,!0))&&(this._highestRenderOrderID=b.sprite._cache[3],this._highestInputPriorityID=b.priorityID,this._highestRenderObject=b)),b=this.game.input.interactiveItems.next;while(null!==b);var b=this.game.input.interactiveItems.first;do b&&!b.checked&&b.validForInput(this._highestInputPriorityID,this._highestRenderOrderID,!0)&&(a&&b.checkPointerDown(this,!1)||!a&&b.checkPointerOver(this,!1))&&(this._highestRenderOrderID=b.sprite._cache[3],this._highestInputPriorityID=b.priorityID,this._highestRenderObject=b),b=this.game.input.interactiveItems.next;while(null!==b);return null===this._highestRenderObject?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=this._highestRenderObject,this._highestRenderObject._pointerOverHandler(this)):this.targetObject===this._highestRenderObject?this._highestRenderObject.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=this._highestRenderObject,this.targetObject._pointerOverHandler(this)),null!==this.targetObject},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){return this._stateReset?void a.preventDefault():(this.timeUp=this.game.time.now,(this.game.input.multiInputOverride===b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.onUp.dispatch(this,a),this.duration>=0&&this.duration<=this.game.input.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=!1,this.isDown=!1,this.isUp=!0,this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.callAll("_releasedHandler",this),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.now},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isMouse===!1&&(this.active=!1),this.pointerId=null,this.identifier=null,this.dirty=!1,this.isDown=!1,this.isUp=!0,this.totalTouches=0,this._holdSent=!1,this._history.length=0,this._stateReset=!0,this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null},resetMovement:function(){this.movementX=0,this.movementY=0}},b.Pointer.prototype.constructor=b.Pointer,Object.defineProperty(b.Pointer.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.now-this.timeDown}}),Object.defineProperty(b.Pointer.prototype,"worldX",{get:function(){return this.game.world.camera.x+this.x}}),Object.defineProperty(b.Pointer.prototype,"worldY",{get:function(){return this.game.world.camera.y+this.y}}),b.Touch=function(a){this.game=a,this.disabled=!1,this.callbackContext=this.game,this.touchStartCallback=null,this.touchMoveCallback=null,this.touchEndCallback=null,this.touchEnterCallback=null,this.touchLeaveCallback=null,this.touchCancelCallback=null,this.preventDefault=!0,this.event=null,this._onTouchStart=null,this._onTouchMove=null,this._onTouchEnd=null,this._onTouchEnter=null,this._onTouchLeave=null,this._onTouchCancel=null,this._onTouchMove=null},b.Touch.prototype={start:function(){if(null===this._onTouchStart){var a=this;this.game.device.touch&&(this._onTouchStart=function(b){return a.onTouchStart(b)},this._onTouchMove=function(b){return a.onTouchMove(b)},this._onTouchEnd=function(b){return a.onTouchEnd(b)},this._onTouchEnter=function(b){return a.onTouchEnter(b)},this._onTouchLeave=function(b){return a.onTouchLeave(b)},this._onTouchCancel=function(b){return a.onTouchCancel(b)},this.game.canvas.addEventListener("touchstart",this._onTouchStart,!1),this.game.canvas.addEventListener("touchmove",this._onTouchMove,!1),this.game.canvas.addEventListener("touchend",this._onTouchEnd,!1),this.game.canvas.addEventListener("touchcancel",this._onTouchCancel,!1),this.game.device.cocoonJS||(this.game.canvas.addEventListener("touchenter",this._onTouchEnter,!1),this.game.canvas.addEventListener("touchleave",this._onTouchLeave,!1)))}},consumeDocumentTouches:function(){this._documentTouchMove=function(a){a.preventDefault()},document.addEventListener("touchmove",this._documentTouchMove,!1)},onTouchStart:function(a){if(this.event=a,this.touchStartCallback&&this.touchStartCallback.call(this.callbackContext,a),!this.game.input.disabled&&!this.disabled){this.preventDefault&&a.preventDefault();for(var b=0;b0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var c=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.game.time.now},justReleased:function(a){return a=a||250,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.pad=null,this.game=null}},b.GamepadButton.prototype.constructor=b.GamepadButton,b.InputHandler=function(a){this.sprite=a,this.game=a.game,this.enabled=!1,this.checked=!1,this.priorityID=0,this.useHandCursor=!1,this._setHandCursor=!1,this.isDragged=!1,this.allowHorizontalDrag=!0,this.allowVerticalDrag=!0,this.bringToTop=!1,this.snapOffset=null,this.snapOnDrag=!1,this.snapOnRelease=!1,this.snapX=0,this.snapY=0,this.snapOffsetX=0,this.snapOffsetY=0,this.pixelPerfectOver=!1,this.pixelPerfectClick=!1,this.pixelPerfectAlpha=255,this.draggable=!1,this.boundsRect=null,this.boundsSprite=null,this.consumePointerEvent=!1,this.scaleLayer=!1,this._dragPhase=!1,this._wasEnabled=!1,this._tempPoint=new b.Point,this._pointerData=[],this._pointerData.push({id:0,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1})},b.InputHandler.prototype={start:function(a,c){if(a=a||0,"undefined"==typeof c&&(c=!1),this.enabled===!1){this.game.input.interactiveItems.add(this),this.useHandCursor=c,this.priorityID=a;for(var d=0;10>d;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new b.Point,this.enabled=!0,this._wasEnabled=!0,this.sprite.events&&null===this.sprite.events.onInputOver&&(this.sprite.events.onInputOver=new b.Signal,this.sprite.events.onInputOut=new b.Signal,this.sprite.events.onInputDown=new b.Signal,this.sprite.events.onInputUp=new b.Signal,this.sprite.events.onDragStart=new b.Signal,this.sprite.events.onDragStop=new b.Signal)}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1; for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return"undefined"==typeof c&&(c=!0),0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite._cache[3]b;b++)if(this._pointerData[b].isOver)return!0}return!1},pointerOut:function(a){if(this.enabled){if("undefined"!=typeof a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0}return!1},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?("undefined"==typeof b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?("undefined"==typeof b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){null!==this.sprite&&(this._pointerData[a.id].isOver===!1||a.dirty)&&(this._pointerData[a.id].isOver=!0,this._pointerData[a.id].isOut=!1,this._pointerData[a.id].timeOver=this.game.time.now,this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),this.sprite&&this.sprite.events&&this.sprite.events.onInputOver.dispatch(this.sprite,a))},_pointerOutHandler:function(a){null!==this.sprite&&(this._pointerData[a.id].isOver=!1,this._pointerData[a.id].isOut=!0,this._pointerData[a.id].timeOut=this.game.time.now,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut.dispatch(this.sprite,a))},_touchedHandler:function(a){if(null!==this.sprite){if(this._pointerData[a.id].isDown===!1&&this._pointerData[a.id].isOver===!0){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;this._pointerData[a.id].isDown=!0,this._pointerData[a.id].isUp=!1,this._pointerData[a.id].timeDown=this.game.time.now,this.sprite&&this.sprite.events&&this.sprite.events.onInputDown.dispatch(this.sprite,a),a.dirty=!0,this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){null!==this.sprite&&this._pointerData[a.id].isDown&&a.isUp&&(this._pointerData[a.id].isDown=!1,this._pointerData[a.id].isUp=!0,this._pointerData[a.id].timeUp=this.game.time.now,this._pointerData[a.id].downDuration=this._pointerData[a.id].timeUp-this._pointerData[a.id].timeDown,this.checkPointerOver(a)?this.sprite&&this.sprite.events&&this.sprite.events.onInputUp.dispatch(this.sprite,a,!0):(this.sprite&&this.sprite.events&&this.sprite.events.onInputUp.dispatch(this.sprite,a,!1),this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1)),a.dirty=!0,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a))},updateDrag:function(a){if(a.isUp)return this.stopDrag(a),!1;var b=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,c=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;return this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=b),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)):(this.allowHorizontalDrag&&(this.sprite.x=b),this.allowVerticalDrag&&(this.sprite.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1},startDrag:function(a){if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else{if(this.dragFromCenter){var b=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-b.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-b.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.sprite.events.onDragStart.dispatch(this.sprite,a)},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop.dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.xthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-this.sprite.width),this.sprite.ythis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-this.sprite.height))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.camerOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.camerOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.camerOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.camerOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.xthis.boundsSprite.x+this.boundsSprite.width&&(this.sprite.x=this.boundsSprite.x+this.boundsSprite.width-this.sprite.width),this.sprite.ythis.boundsSprite.y+this.boundsSprite.height&&(this.sprite.y=this.boundsSprite.y+this.boundsSprite.height-this.sprite.height))}},b.InputHandler.prototype.constructor=b.InputHandler,b.Events=function(a){this.parent=a,this.onAddedToGroup=new b.Signal,this.onRemovedFromGroup=new b.Signal,this.onDestroy=new b.Signal,this.onKilled=new b.Signal,this.onRevived=new b.Signal,this.onOutOfBounds=new b.Signal,this.onEnterBounds=new b.Signal,this.onInputOver=null,this.onInputOut=null,this.onInputDown=null,this.onInputUp=null,this.onDragStart=null,this.onDragStop=null,this.onAnimationStart=null,this.onAnimationComplete=null,this.onAnimationLoop=null},b.Events.prototype={destroy:function(){this.parent=null,this.onDestroy.dispose(),this.onAddedToGroup.dispose(),this.onRemovedFromGroup.dispose(),this.onKilled.dispose(),this.onRevived.dispose(),this.onOutOfBounds.dispose(),this.onInputOver&&(this.onInputOver.dispose(),this.onInputOut.dispose(),this.onInputDown.dispose(),this.onInputUp.dispose(),this.onDragStart.dispose(),this.onDragStop.dispose()),this.onAnimationStart&&(this.onAnimationStart.dispose(),this.onAnimationComplete.dispose(),this.onAnimationLoop.dispose())}},b.Events.prototype.constructor=b.Events,b.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},b.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Image(this.game,a,c,d,e))},sprite:function(a,b,c,d,e){return"undefined"==typeof e&&(e=this.world),e.create(a,b,c,d)},tween:function(a){return this.game.tweens.create(a)},group:function(a,c,d,e,f){return new b.Group(this.game,a,c,d,e,f)},physicsGroup:function(a,c,d,e){return new b.Group(this.game,c,d,e,!0,a)},spriteBatch:function(a,c,d){return"undefined"==typeof a&&(a=null),"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,c,d,e,f,g,h){return"undefined"==typeof h&&(h=this.world),h.add(new b.TileSprite(this.game,a,c,d,e,f,g))},rope:function(a,c,d,e,f,g){return"undefined"==typeof g&&(g=this.world),g.add(new b.Rope(this.game,a,c,d,e,f))},text:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Text(this.game,a,c,d,e))},button:function(a,c,d,e,f,g,h,i,j,k){return"undefined"==typeof k&&(k=this.world),k.add(new b.Button(this.game,a,c,d,e,f,g,h,i,j))},graphics:function(a,c,d){return"undefined"==typeof d&&(d=this.world),d.add(new b.Graphics(this.game,a,c))},emitter:function(a,c,d){return this.game.particles.add(new b.Particles.Arcade.Emitter(this.game,a,c,d))},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f,g){return"undefined"==typeof g&&(g=this.world),g.add(new b.BitmapText(this.game,a,c,d,e,f))},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a},plugin:function(a){return this.game.plugins.add(a)}},b.GameObjectFactory.prototype.constructor=b.GameObjectFactory,b.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},b.GameObjectCreator.prototype={image:function(a,c,d,e){return new b.Image(this.game,a,c,d,e)},sprite:function(a,c,d,e){return new b.Sprite(this.game,a,c,d,e)},tween:function(a){return new b.Tween(a,this.game)},group:function(a,c,d,e,f){return new b.Group(this.game,null,c,d,e,f)},spriteBatch:function(a,c,d){return"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,c,d,e,f,g){return new b.TileSprite(this.game,a,c,d,e,f,g)},rope:function(a,c,d,e,f){return new b.Rope(this.game,a,c,d,e,f)},text:function(a,c,d,e){return new b.Text(this.game,a,c,d,e)},button:function(a,c,d,e,f,g,h,i,j){return new b.Button(this.game,a,c,d,e,f,g,h,i,j)},graphics:function(a,c){return new b.Graphics(this.game,a,c)},emitter:function(a,c,d){return new b.Particles.Arcade.Emitter(this.game,a,c,d)},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f){return new b.BitmapText(this.game,a,c,d,e,f)},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a}},b.GameObjectCreator.prototype.constructor=b.GameObjectCreator,b.BitmapData=function(a,c,d,e){"undefined"==typeof d&&(d=256),"undefined"==typeof e&&(e=256),this.game=a,this.key=c,this.width=d,this.height=e,this.canvas=b.Canvas.create(d,e,"",!0),this.context=this.canvas.getContext("2d"),this.ctx=this.context,this.imageData=this.context.getImageData(0,0,d,e),this.data=this.imageData.data,this.pixels=null,this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data,this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,d,e,"bitmapData",a.rnd.uuid()),this.texture.frame=this.textureFrame,this.type=b.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new b.Point,this._size=new b.Point,this._scale=new b.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new b.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new b.Circle},b.BitmapData.prototype={add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)b.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(c,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){"undefined"==typeof c&&(c=0),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=this.width),"undefined"==typeof f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,c,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=b.Color.packPixel(a,c,d,e);void 0!==j&&j instanceof b.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,c,d,e){if(("undefined"==typeof a||null===a)&&(a=!1),("undefined"==typeof c||null===c)&&(c=!1),("undefined"==typeof d||null===d)&&(d=!1),a||c||d){"undefined"==typeof e&&(e=new b.Rectangle(0,0,this.width,this.height));for(var f=b.Color.createColor(),g=e.y;g=0&&a<=this.width&&c>=0&&c<=this.height&&(this.pixels[c*this.width+a]=b.Device.LITTLE_ENDIAN?g<<24|f<<16|e<<8|d:d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,c,d){d||(d=b.Color.createColor());var e=~~(a+c*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,c,d,e,f){return b.Color.unpackPixel(this.getPixel32(a,c),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){"undefined"==typeof a&&(a=0);var c=b.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do b.Color.unpackPixel(this.getPixel32(d,e),c),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===c.a&&!g);return c.x=d,c.y=e,c},getBounds:function(a){return"undefined"==typeof a&&(a=new b.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(("undefined"==typeof a||null===a)&&(a=this),this._image=a,a instanceof b.Sprite||a instanceof b.Image||a instanceof b.Text)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,this._image=a.texture.baseTexture.source,a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture);else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof b.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}return("undefined"==typeof c||null===c)&&(c=0),("undefined"==typeof d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),("undefined"==typeof g||null===g)&&(g=c),("undefined"==typeof h||null===h)&&(h=d),("undefined"==typeof i||null===i)&&(i=this._size.x),("undefined"==typeof j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),"undefined"==typeof q&&(q=null),"undefined"==typeof r&&(r=!1),this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y?void 0:(this._alpha.prev=this.context.globalAlpha,this.context.save(),this.context.globalAlpha=this._alpha.current,q&&(this.context.globalCompositeOperation=q),r&&(g|=0,h|=0),this.context.translate(g,h),this.context.scale(this._scale.x,this._scale.y),this.context.rotate(this._rotate),this.context.drawImage(this._image,this._pos.x+c,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),this.context.restore(),this.context.globalAlpha=this._alpha.prev,this.dirty=!0,this)},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},shadow:function(a,b,c,d){"undefined"==typeof a||null===a?this.context.shadowColor="rgba(0,0,0,0)":(this.context.shadowColor=a,this.context.shadowBlur=b||5,this.context.shadowOffsetX=c||10,this.context.shadowOffsetY=d||10)},alphaMask:function(a,b,c,d){return"undefined"==typeof d||null===d?this.draw(b).blendSourceAtop():this.draw(b,d.x,d.y,d.width,d.height).blendSourceAtop(),"undefined"==typeof c||null===c?this.draw(a).blendReset():this.draw(a,c.x,c.y,c.width,c.height).blendReset(),this},extract:function(a,b,c,d,e,f,g,h,i){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b),"undefined"==typeof h&&(h=c),"undefined"==typeof i&&(i=d),f&&a.resize(this.width,this.height),this.processPixelRGB(function(f,j,k){return f.r===b&&f.g===c&&f.b===d&&a.setPixel32(j,k,g,h,i,e,!1),!1},this),a.context.putImageData(a.imageData,0,0),a.dirty=!0,a},rect:function(a,b,c,d,e){return"undefined"!=typeof e&&(this.context.fillStyle=e),this.context.fillRect(a,b,c,d),this},circle:function(a,b,c,d){return"undefined"!=typeof d&&(this.context.fillStyle=d),this.context.beginPath(),this.context.arc(a,b,c,0,2*Math.PI,!1),this.context.closePath(),this.context.fill(),this},textureLine:function(a,c,d){if("undefined"==typeof d&&(d="repeat-x"),"string"!=typeof c||(c=this.game.cache.getImage(c))){var e=a.length;return"no-repeat"===d&&e>c.width&&(e=c.width),this.context.fillStyle=this.context.createPattern(c,d),this._circle=new b.Circle(a.start.x,a.start.y,c.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),this.context.save(),this.context.translate(this._pos.x,this._pos.y),this.context.rotate(a.angle),this.context.fillRect(0,0,e,c.height),this.context.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},blendReset:function(){return this.context.globalCompositeOperation="source-over",this},blendSourceOver:function(){return this.context.globalCompositeOperation="source-over",this},blendSourceIn:function(){return this.context.globalCompositeOperation="source-in",this},blendSourceOut:function(){return this.context.globalCompositeOperation="source-out",this},blendSourceAtop:function(){return this.context.globalCompositeOperation="source-atop",this},blendDestinationOver:function(){return this.context.globalCompositeOperation="destination-over",this},blendDestinationIn:function(){return this.context.globalCompositeOperation="destination-in",this},blendDestinationOut:function(){return this.context.globalCompositeOperation="destination-out",this},blendDestinationAtop:function(){return this.context.globalCompositeOperation="destination-atop",this},blendXor:function(){return this.context.globalCompositeOperation="xor",this},blendAdd:function(){return this.context.globalCompositeOperation="lighter",this},blendMultiply:function(){return this.context.globalCompositeOperation="multiply",this},blendScreen:function(){return this.context.globalCompositeOperation="screen",this},blendOverlay:function(){return this.context.globalCompositeOperation="overlay",this},blendDarken:function(){return this.context.globalCompositeOperation="darken",this},blendLighten:function(){return this.context.globalCompositeOperation="lighten",this},blendColorDodge:function(){return this.context.globalCompositeOperation="color-dodge",this},blendColorBurn:function(){return this.context.globalCompositeOperation="color-burn",this},blendHardLight:function(){return this.context.globalCompositeOperation="hard-light",this},blendSoftLight:function(){return this.context.globalCompositeOperation="soft-light",this},blendDifference:function(){return this.context.globalCompositeOperation="difference",this},blendExclusion:function(){return this.context.globalCompositeOperation="exclusion",this},blendHue:function(){return this.context.globalCompositeOperation="hue",this},blendSaturation:function(){return this.context.globalCompositeOperation="saturation",this},blendColor:function(){return this.context.globalCompositeOperation="color",this},blendLuminosity:function(){return this.context.globalCompositeOperation="luminosity",this}},Object.defineProperty(b.BitmapData.prototype,"smoothed",{get:function(){b.Canvas.getSmoothingEnabled(this.context)},set:function(a){b.Canvas.setSmoothingEnabled(this.context,a)}}),b.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b} },b.BitmapData.prototype.constructor=b.BitmapData,b.Sprite=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.name="",this.type=b.SPRITE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.position.set(c,d),this.world=new b.Point(c,d),this.autoCull=!1,this.input=null,this.body=null,this.alive=!0,this.health=1,this.lifespan=0,this.checkWorldBounds=!1,this.outOfBoundsKill=!1,this.debug=!1,this.cameraOffset=new b.Point,this.cropRect=null,this._cache=[0,0,0,0,1,0,1,0],this._crop=null,this._frame=null,this._bounds=new b.Rectangle,this.loadTexture(e,f)},b.Sprite.prototype=Object.create(PIXI.Sprite.prototype),b.Sprite.prototype.constructor=b.Sprite,b.Sprite.prototype.preUpdate=function(){if(1===this._cache[4]&&this.exists)return this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.body&&this.body.preUpdate(),this._cache[4]=0,!1;if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;if(this.lifespan>0&&(this.lifespan-=this.game.time.elapsed,this.lifespan<=0))return this.kill(),!1;if((this.autoCull||this.checkWorldBounds)&&this._bounds.copyFrom(this.getBounds()),this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.checkWorldBounds)if(1===this._cache[5]&&this.game.world.bounds.intersects(this._bounds))this._cache[5]=0,this.events.onEnterBounds.dispatch(this);else if(0===this._cache[5]&&!this.game.world.bounds.intersects(this._bounds)&&(this._cache[5]=1,this.events.onOutOfBounds.dispatch(this),this.outOfBoundsKill))return this.kill(),!1;this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),this.animations.update(),this.body&&this.body.preUpdate();for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Sprite.prototype.update=function(){},b.Sprite.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Sprite.prototype.loadTexture=function(a,c,d){c=c||0,(d||"undefined"==typeof d)&&this.animations.stop(),this.key=a;var e=!0,f=this.smoothed;a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?(this.setTexture(a.texture),this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA)&&(e=!this.animations.loadFrameData(this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA),c))):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),e=!this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty(),e&&(this._frame=b.Rectangle.clone(this.texture.frame)),f||(this.smoothed=!1)},b.Sprite.prototype.setFrame=function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture._updateUvs()},b.Sprite.prototype.resetFrame=function(){this._frame&&this.setFrame(this._frame)},b.Sprite.prototype.crop=function(a,c){"undefined"==typeof c&&(c=!1),a?(c&&null!==this.cropRect?this.cropRect.setTo(a.x,a.y,a.width,a.height):this.cropRect=c&&null===this.cropRect?new b.Rectangle(a.x,a.y,a.width,a.height):a,this.updateCrop()):(this._crop=null,this.cropRect=null,this.resetFrame())},b.Sprite.prototype.updateCrop=function(){if(this.cropRect){this._crop=b.Rectangle.clone(this.cropRect,this._crop),this._crop.x+=this._frame.x,this._crop.y+=this._frame.y;var a=Math.max(this._frame.x,this._crop.x),c=Math.max(this._frame.y,this._crop.y),d=Math.min(this._frame.right,this._crop.right)-a,e=Math.min(this._frame.bottom,this._crop.bottom)-c;this.texture.crop.x=a,this.texture.crop.y=c,this.texture.crop.width=d,this.texture.crop.height=e,this.texture.frame.width=Math.min(d,this.cropRect.width),this.texture.frame.height=Math.min(e,this.cropRect.height),this.texture.width=this.texture.frame.width,this.texture.height=this.texture.frame.height,this.texture._updateUvs()}},b.Sprite.prototype.revive=function(a){return"undefined"==typeof a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,this.health=a,this.events&&this.events.onRevived.dispatch(this),this},b.Sprite.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Sprite.prototype.destroy=function(a){if(null!==this.game&&1!==this._cache[8]){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.input&&this.input.destroy(),this.animations&&this.animations.destroy(),this.body&&this.body.destroy(),this.events&&this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this._crop&&(this._crop=null),this._frame&&(this._frame=null),this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Sprite.prototype.damage=function(a){return this.alive&&(this.health-=a,this.health<=0&&this.kill()),this},b.Sprite.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},b.Sprite.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},b.Sprite.prototype.play=function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0},b.Sprite.prototype.overlap=function(a){return b.Rectangle.intersects(this.getBounds(),a.getBounds())},Object.defineProperty(b.Sprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Sprite.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Sprite.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Sprite.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Sprite.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}}),Object.defineProperty(b.Sprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}),Object.defineProperty(b.Sprite.prototype,"renderOrderID",{get:function(){return this._cache[3]}}),Object.defineProperty(b.Sprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.Sprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&this.body.removeFromWorld(),this.visible=!1)}}),Object.defineProperty(b.Sprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.Sprite.prototype,"smoothed",{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}),Object.defineProperty(b.Sprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Sprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Sprite.prototype,"destroyPhase",{get:function(){return!!this._cache[8]}}),b.Image=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.exists=!0,this.name="",this.type=b.IMAGE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.position.set(c,d),this.world=new b.Point(c,d),this.alive=!0,this.autoCull=!1,this.input=null,this.debug=!1,this.cameraOffset=new b.Point,this.cropRect=null,this._cache=[0,0,0,0,1,0,1,0,0],this._crop=null,this._frame=null,this._bounds=new b.Rectangle,this.loadTexture(e,f)},b.Image.prototype=Object.create(PIXI.Sprite.prototype),b.Image.prototype.constructor=b.Image,b.Image.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;this.autoCull&&(this._bounds.copyFrom(this.getBounds()),this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Image.prototype.update=function(){},b.Image.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Image.prototype.loadTexture=function(a,c){c=c||0,this.key=a;var d=!0,e=this.smoothed;a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?(this.setTexture(a.texture),this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA)&&(d=!this.animations.loadFrameData(this.game.cache.getFrameData(a.key,b.Cache.BITMAPDATA),c))):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),d=!this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty(),d&&(this._frame=b.Rectangle.clone(this.texture.frame)),e||(this.smoothed=!1)},b.Image.prototype.setFrame=function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture._updateUvs()},b.Image.prototype.resetFrame=function(){this._frame&&this.setFrame(this._frame)},b.Image.prototype.crop=function(a,c){"undefined"==typeof c&&(c=!1),a?(c&&null!==this.cropRect?this.cropRect.setTo(a.x,a.y,a.width,a.height):this.cropRect=c&&null===this.cropRect?new b.Rectangle(a.x,a.y,a.width,a.height):a,this.updateCrop()):(this._crop=null,this.cropRect=null,this.resetFrame())},b.Image.prototype.updateCrop=function(){if(this.cropRect){this._crop=b.Rectangle.clone(this.cropRect,this._crop),this._crop.x+=this._frame.x,this._crop.y+=this._frame.y;var a=Math.max(this._frame.x,this._crop.x),c=Math.max(this._frame.y,this._crop.y),d=Math.min(this._frame.right,this._crop.right)-a,e=Math.min(this._frame.bottom,this._crop.bottom)-c;this.texture.crop.x=a,this.texture.crop.y=c,this.texture.crop.width=d,this.texture.crop.height=e,this.texture.frame.width=Math.min(d,this.cropRect.width),this.texture.frame.height=Math.min(e,this.cropRect.height),this.texture.width=this.texture.frame.width,this.texture.height=this.texture.frame.height,this.texture._updateUvs()}},b.Image.prototype.revive=function(){return this.alive=!0,this.exists=!0,this.visible=!0,this.events&&this.events.onRevived.dispatch(this),this},b.Image.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Image.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.events&&this.events.destroy(),this.input&&this.input.destroy(),this.animations&&this.animations.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Image.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this},b.Image.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},Object.defineProperty(b.Image.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Image.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Image.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Image.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Image.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"frame",{get:function(){return this._frame},set:function(a){if(a!==this.frame){var b=this.game.cache.getFrameData(this.key);b&&aa;a++)this.children[a].preUpdate();return!0},b.TileSprite.prototype.update=function(){},b.TileSprite.prototype.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=this.game.camera.view.x+this.cameraOffset.x,this.position.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.TileSprite.prototype.autoScroll=function(a,b){this._scroll.set(a,b)},b.TileSprite.prototype.stopScroll=function(){this._scroll.set(0,0)},b.TileSprite.prototype.loadTexture=function(a,c){c=c||0,this.key=a,a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?this.setTexture(a.texture):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key])),this.texture.baseTexture.dirty()},b.TileSprite.prototype.setFrame=function(a){this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.texture._updateUvs()},b.TileSprite.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.filters&&(this.filters=null),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.animations.destroy(),this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.alive=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.TileSprite.prototype.play=function(a,b,c,d){return this.animations.play(a,b,c,d)},b.TileSprite.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.tilePosition.x=0,this.tilePosition.y=0,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},Object.defineProperty(b.TileSprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.TileSprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){a!==this.animations.frame&&(this.animations.frame=a)}}),Object.defineProperty(b.TileSprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){a!==this.animations.frameName&&(this.animations.frameName=a)}}),Object.defineProperty(b.TileSprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.TileSprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&(this.body.safeRemove=!0),this.visible=!1)}}),Object.defineProperty(b.TileSprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.TileSprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.TileSprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.TileSprite.prototype,"destroyPhase",{get:function(){return!!this._cache[8]}}),b.Rope=function(a,c,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.name="",this.type=b.ROPE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,this._frame=0,this._frameName="",this._scroll=new b.Point,PIXI.Rope.call(this,e,this.points),this.position.set(c,d),this.input=null,this.world=new b.Point(c,d),this.autoCull=!1,this.checkWorldBounds=!1,this.cameraOffset=new b.Point,this.body=null,this._cache=[0,0,0,0,1,0,1,0,0],this.loadTexture(e,f)},b.Rope.prototype=Object.create(PIXI.Rope.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.preUpdate=function(){if(1===this._cache[4]&&this.exists)return this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.body&&this.body.preUpdate(),this._cache[4]=0,!1;if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;(this.autoCull||this.checkWorldBounds)&&this._bounds.copyFrom(this.getBounds()),this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.checkWorldBounds&&(1===this._cache[5]&&this.game.world.bounds.intersects(this._bounds)?(this._cache[5]=0,this.events.onEnterBounds.dispatch(this)):0!==this._cache[5]||this.game.world.bounds.intersects(this._bounds)||(this._cache[5]=1,this.events.onOutOfBounds.dispatch(this))),this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),this.animations.update(),0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.body&&this.body.preUpdate();for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},b.Rope.prototype.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=this.game.camera.view.x+this.cameraOffset.x,this.position.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Rope.prototype.loadTexture=function(a,c){c=c||0,this.key=a,a instanceof b.RenderTexture?(this.key=a.key,this.setTexture(a)):a instanceof b.BitmapData?this.setTexture(a.texture):a instanceof PIXI.Texture?this.setTexture(a):null===a||"undefined"==typeof a?(this.key="__default",this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?(this.setTexture(new PIXI.Texture(PIXI.BaseTextureCache[a])),this.animations.loadFrameData(this.game.cache.getFrameData(a),c)):(console.warn("Texture with key '"+a+"' not found."),this.key="__missing",this.setTexture(PIXI.TextureCache[this.key]))},b.Rope.prototype.setFrame=function(a){this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.texture._updateUvs()},b.Rope.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.filters&&(this.filters=null),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.animations.destroy(),this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Rope.prototype.play=function(a,b,c,d){return this.animations.play(a,b,c,d)},b.Rope.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.tilePosition.x=0,this.tilePosition.y=0,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},Object.defineProperty(b.Rope.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Rope.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){a!==this.animations.frame&&(this.animations.frame=a)}}),Object.defineProperty(b.Rope.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){a!==this.animations.frameName&&(this.animations.frameName=a)}}),Object.defineProperty(b.Rope.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.Rope.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&(this.body.safeRemove=!0),this.visible=!1)}}),Object.defineProperty(b.Rope.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.Rope.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Rope.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(b.Rope.prototype,"segments",{get:function(){for(var a,c,d,e,f,g,h,i,j=[],k=0;ka;a++)this.children[a].preUpdate();return!0},b.Text.prototype.update=function(){},b.Text.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Text.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.texture.destroy(!0),this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null);var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Text.prototype.setShadow=function(a,b,c,d){this.style.shadowOffsetX=a||0,this.style.shadowOffsetY=b||0,this.style.shadowColor=c||"rgba(0,0,0,0)",this.style.shadowBlur=d||0,this.dirty=!0},b.Text.prototype.setStyle=function(a){a=a||{},a.font=a.font||"bold 20pt Arial",a.fill=a.fill||"black",a.align=a.align||"left",a.stroke=a.stroke||"black",a.strokeThickness=a.strokeThickness||0,a.wordWrap=a.wordWrap||!1,a.wordWrapWidth=a.wordWrapWidth||100,a.shadowOffsetX=a.shadowOffsetX||0,a.shadowOffsetY=a.shadowOffsetY||0,a.shadowColor=a.shadowColor||"rgba(0,0,0,0)",a.shadowBlur=a.shadowBlur||0,this.style=a,this.dirty=!0},b.Text.prototype.updateText=function(){this.texture.baseTexture.resolution=this.resolution,this.context.font=this.style.font;var a=this.text;this.style.wordWrap&&(a=this.wordWrap(this.text));for(var b=a.split(/(?:\r\n|\r|\n)/),c=[],d=0,e=this.determineFontProperties(this.style.font),f=0;f0?this.updateLine(b[f],k,l):(this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(b[f],k,l),this.style.fill&&this.context.fillText(b[f],k,l));this.updateTexture()},b.Text.prototype.updateLine=function(a,b,c){for(var d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d0&&this.drawPolygon(d)}else this.drawPolygon(d)},b.Graphics.prototype.drawTriangles=function(a,c,d){"undefined"==typeof d&&(d=!1);var e,f=new b.Point,g=new b.Point,h=new b.Point,i=[];if(c)if(a[0]instanceof b.Point)for(e=0;e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.textureBuffer.clear(),this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},b.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d,PIXI.TextureCache[e[f].uuid].frame.x=e[f].x,PIXI.TextureCache[e[f].uuid].frame.y=e[f].y;this.buildRetroFontText()}},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(b.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c){a=a||256,b=b||256;var d=document.createElement("canvas");return"string"==typeof c&&""!==c&&(d.id=c),d.width=a,d.height=b,d.style.display="block",d},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkOS(),this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures()},b.Device.LITTLE_ENDIAN=!1,b.Device.prototype={_checkOS:function(){var a=navigator.userAgent; -/Playstation Vita/.test(a)?this.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?this.kindle=!0:/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1||this.chromeOS)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1)},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"opus"==a&&this.opus?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,c,d){a=+a||0;var e=typeof c;"number"!==e&&"string"!==e||!d||d[c]!==a||(c=d=null),d=null==d?1:+d||0,null===c?(c=a,a=0):c=+c||0;for(var f=-1,g=b.Math.max(b.Math.ceil((c-a)/(d||1)),0),h=new Array(g);++fc&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},limitValue:function(a,b,c){return b>a?b:a>c?c:a},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return"undefined"==typeof c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof b.Rectangle)var c=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var c=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?c=c.concat(this.nodes[d].retrieve(a)):(c=c.concat(this.nodes[0].retrieve(a)),c=c.concat(this.nodes[1].retrieve(a)),c=c.concat(this.nodes[2].retrieve(a)),c=c.concat(this.nodes[3].retrieve(a)))),c},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ac;)this._tweens[c].update(this.game.time.now)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Default,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1,g&&0===f&&(f=1);var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},from:function(a,b,c,d,e,f,g){var h={};for(var i in a)h[i]=this._object[i],this._object[i]=a[i];return this.to(h,b,c,d,e,f,g)},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):"string"==typeof l?l=k+parseFloat(l,10):"number"==typeof l&&(j[c]=k+(l-k)*i)}g.push(j),d+=f}var j={};for(c in this._valuesEnd)j[c]=this._valuesEnd[c];if(g.push(j),this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,a&&0===this._repeat&&(this._repeat=1),this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&(this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),!this.isRunning))return!1;if(1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._yoyo&&(this._reversed=!this._reversed),this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Easing.Default=b.Easing.Linear.None,b.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.timeCap=1/60*1e3,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;athis.timeCap&&(this.elapsed=this.timeCap),this.physicsElapsed=this.elapsed/1e3||1/60,this.deltaCap>0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.now,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.now,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.now;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(b.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(b.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a,b){if("undefined"==typeof a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,c,d,e,f){return c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null===this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.__tilePattern&&(this.sprite.__tilePattern=!1,this.tilingTexture=!1),this._anims[a]},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){"undefined"==typeof h&&(h=!1),this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onUpdate=null,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if("undefined"==typeof b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length&&(this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete()),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame)),!0):!1},next:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},previous:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose()},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(b.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new b.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new b.Frame(this.index,this.x,this.y,this.width,this.height,this.name,this.uuid);for(var c in this)this.hasOwnProperty(c)&&(a[c]=this[c]);return a},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new b.FrameData,c=0;c=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+c+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._packIndex=0,this.loadPack()):this.beginLoad())},beginLoad:function(){this.progress=0,this.progressFloat=0,this.hasLoaded=!1,this.isLoading=!0,this.onLoadStart.dispatch(this._fileList.length),this._fileList.length>0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.isLoading=!1,this.onLoadComplete.dispatch())},loadPack:function(){if(!this._packList[this._packIndex])return void console.warn("Phaser.Loader loadPackList invalid index "+this._packIndex);var a=this._packList[this._packIndex];null!==a.data?this.packLoadComplete(this._packIndex,!1):this.xhrLoad(this._packIndex,this.baseURL+a.url,"text","packLoadComplete","packLoadError")},packLoadComplete:function(a,c){if("undefined"==typeof c&&(c=!0),!this._packList[a])return void console.warn("Phaser.Loader packLoadComplete invalid index "+a);var d=this._packList[a];if(d.loaded=!0,c)var e=JSON.parse(this._xhr.responseText);else var e=this._packList[a].data;if(e[d.key])for(var f,g=0;g=0&&(b=b.substr(0,b.indexOf("?"))),this.game.device.canPlayAudio(b))return a[c];return null},fileError:function(a){this._fileList[a].loaded=!0,this._fileList[a].error=!0,this.onFileError.dispatch(this._fileList[a].key,this._fileList[a]),console.warn("Phaser.Loader error loading file: "+this._fileList[a].key+" from URL "+this._fileList[a].url),this.nextFile(a,!1)},fileComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader fileComplete invalid index "+a);var c=this._fileList[a];c.loaded=!0;var d=!0;switch(c.type){case"image":this.game.cache.addImage(c.key,c.url,c.data);break;case"spritesheet":this.game.cache.addSpriteSheet(c.key,c.url,c.data,c.frameWidth,c.frameHeight,c.frameMax,c.margin,c.spacing);break;case"textureatlas":if(null==c.atlasURL)this.game.cache.addTextureAtlas(c.key,c.url,c.data,c.atlasData,c.format);else if(d=!1,c.format==b.Loader.TEXTURE_ATLAS_JSON_ARRAY||c.format==b.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","jsonLoadComplete","dataLoadError");else{if(c.format!=b.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+c.format);this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","xmlLoadComplete","dataLoadError")}break;case"bitmapfont":null==c.xmlURL?this.game.cache.addBitmapFont(c.key,c.url,c.data,c.xmlData,c.xSpacing,c.ySpacing):(d=!1,this.xhrLoad(this._fileIndex,this.baseURL+c.xmlURL,"text","xmlLoadComplete","dataLoadError"));break;case"audio":if(this.game.sound.usingWebAudio){if(c.data=this._xhr.response,this.game.cache.addSound(c.key,c.url,c.data,!0,!1),c.autoDecode){var e=this,f=c.key;this.game.cache.updateSound(f,"isDecoding",!0),this.game.sound.context.decodeAudioData(c.data,function(a){a&&(e.game.cache.decodedSound(f,a),e.game.sound.onSoundDecode.dispatch(f,e.game.cache.getSound(f)))})}}else c.data.removeEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete),this.game.cache.addSound(c.key,c.url,c.data,!1,!0);break;case"text":c.data=this._xhr.responseText,this.game.cache.addText(c.key,c.url,c.data);break;case"physics":var g=JSON.parse(this._xhr.responseText);this.game.cache.addPhysicsData(c.key,c.url,g,c.format);break;case"script":c.data=document.createElement("script"),c.data.language="javascript",c.data.type="text/javascript",c.data.defer=!1,c.data.text=this._xhr.responseText,document.head.appendChild(c.data),c.callback&&(c.data=c.callback.call(c.callbackContext,c.key,this._xhr.responseText));break;case"binary":c.data=c.callback?c.callback.call(c.callbackContext,c.key,this._xhr.response):this._xhr.response,this.game.cache.addBinary(c.key,c.data)}d&&this.nextFile(a,!0)},jsonLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader jsonLoadComplete invalid index "+a);var b=this._fileList[a];if(this._ajax&&this._ajax.responseText)var c=JSON.parse(this._ajax.responseText);else var c=JSON.parse(this._xhr.responseText);b.loaded=!0,"tilemap"===b.type?this.game.cache.addTilemap(b.key,b.url,c,b.format):"json"===b.type?this.game.cache.addJSON(b.key,b.url,c):this.game.cache.addTextureAtlas(b.key,b.url,b.data,c,b.format),this.nextFile(a,!0)},csvLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader csvLoadComplete invalid index "+a);var b=this._fileList[a],c=this._xhr.responseText;b.loaded=!0,this.game.cache.addTilemap(b.key,b.url,c,b.format),this.nextFile(a,!0)},dataLoadError:function(a){var b=this._fileList[a];b.loaded=!0,b.error=!0,console.warn("Phaser.Loader dataLoadError: "+b.key),this.nextFile(a,!0)},xmlLoadComplete:function(a){""!==this._xhr.responseType&&"text"!==this._xhr.responseType&&(console.warn("Invalid XML Response Type",this._fileList[a]),console.warn(this._xhr));var b,c=this._xhr.responseText;try{if(window.DOMParser){var d=new DOMParser;b=d.parseFromString(c,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(c)}catch(e){b=void 0}if(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)throw new Error("Phaser.Loader. Invalid XML given");var f=this._fileList[a];f.loaded=!0,"bitmapfont"===f.type?this.game.cache.addBitmapFont(f.key,f.url,f.data,b,f.xSpacing,f.ySpacing):"textureatlas"===f.type?this.game.cache.addTextureAtlas(f.key,f.url,f.data,b,f.format):"xml"===f.type&&this.game.cache.addXML(f.key,f.url,b),this.nextFile(a,!0)},nextFile:function(a,b){this.progressFloat+=this._progressChunk,this.progress=Math.round(this.progressFloat),this.progress>100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.updateCrop()),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this.isPlaying&&!this.allowMultiple&&(this.override||e)&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist"),this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null===this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if("undefined"==typeof this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b){"undefined"==typeof b&&(b=!1),this.paused||(this.play("",0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,c){if(this.isPlaying&&!this.paused&&c!==this.volume){if("undefined"==typeof a&&(a=1e3),"undefined"==typeof c)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");var d=this.game.add.tween(this).to({volume:c},a,b.Easing.Linear.None,!0);d.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a>>0:(a<<24|c<<16|d<<8|e)>>>0},unpackPixel:function(a,c,d,e){return("undefined"==typeof c||null===c)&&(c=b.Color.createColor()),("undefined"==typeof d||null===d)&&(d=!1),("undefined"==typeof e||null===e)&&(e=!1),b.Device.LITTLE_ENDIAN?(c.a=(4278190080&a)>>>24,c.b=(16711680&a)>>>16,c.g=(65280&a)>>>8,c.r=255&a):(c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a),c.color=a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a/255+")",d&&b.Color.RGBtoHSL(c.r,c.g,c.b,c),e&&b.Color.RGBtoHSV(c.r,c.g,c.b,c),c},fromRGBA:function(a,c){return c||(c=b.Color.createColor()),c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a+")",c},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,1)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6}return e},HSLtoRGB:function(a,c,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=b.Color.createColor(d,d,d),0!==c){var f=.5>d?d*(1+c):d+c-d*c,g=2*d-f;e.r=b.Color.hueToColor(g,f,a+1/3),e.g=b.Color.hueToColor(g,f,a),e.b=b.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),b.Color.updateColor(e),e},RGBtoHSV:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,255)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6),e},HSVtoRGB:function(a,c,d,e){"undefined"==typeof e&&(e=b.Color.createColor(0,0,0,1,a,c,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-c),l=d*(1-j*c),m=d*(1-(1-j)*c);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),b.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,c,d,e,f,g,h,i){var j={r:a||0,g:c||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return j.color=b.Color.getColor(j.r,j.g,j.b),j.color32=b.Color.getColor32(j.a,j.r,j.g,j.b),b.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,c,d,e,f){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(c<<8)+d).toString(16).slice(1):"0x"+b.Color.componentToHex(e)+b.Color.componentToHex(a)+b.Color.componentToHex(c)+b.Color.componentToHex(d)},hexToRGB:function(a){var c=b.Color.hexToColor(a);return c?b.Color.getColor32(c.a,c.r,c.g,c.b):void 0},hexToColor:function(a,c){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);c?(c.r=e,c.g=f,c.b=g):c=b.Color.createColor(e,f,g)}return c},webToColor:function(a,c){c||(c=b.Color.createColor());var d=/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\)$/.exec(a);return d&&(c.r=parseInt(d[1],10),c.g=parseInt(d[2],10),c.b=parseInt(d[3],10)),c},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,c){"undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSVtoRGB(e/359,a,c));return d},HSLColorWheel:function(a,c){"undefined"==typeof a&&(a=.5),"undefined"==typeof c&&(c=.5);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSLtoRGB(e/359,a,c));return d},interpolateColor:function(a,c,d,e,f){"undefined"==typeof f&&(f=255);var g=b.Color.getRGB(a),h=b.Color.getRGB(c),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return b.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,c,d,e,f,g){var h=b.Color.getRGB(a),i=(c-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return b.Color.getColor(i,j,k)},interpolateRGB:function(a,c,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-c)*i/h+c,l=(g-d)*i/h+d;return b.Color.getColor(j,k,l)},getRandomColor:function(a,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof c&&(c=255),"undefined"==typeof d&&(d=255),c>255||a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var c=b.Color.getRGB(a);return"rgba("+c.r.toString()+","+c.g.toString()+","+c.b.toString()+","+(c.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=4,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&b.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new b.Physics.BOX2D(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else if(a===b.Physics.BOX2D&&null===this.box2d)this.box2d=new b.Physics.Box2D(this.game,this.config);else if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):c===b.Physics.BOX2D&&this.box2d&&this.box2d.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.skipQuadTree=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0,this.setBoundsToWorld()},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!0);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,g=a.length;g>f;f++)for(var h=0,i=b.length;i>h;h++)this.collideHandler(a[f],b[h],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!1);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,h=a.length;h>f;f++)for(var i=0,j=b.length;j>i;i++)this.collideHandler(a[f],b[i],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length&&a.body)if(a.body.skipQuadTree||this.skipQuadTree)for(var g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,c,d,e,f,g){if(0!==a.length&&0!==c.length)for(var h=0,i=a.children.length;i>h;h++)a.children[h].exists&&(a.children[h].type===b.GROUP?this.collideGroupVsGroup(a.children[h],c,d,e,f,g):this.collideSpriteVsGroup(a.children[h],c,d,e,f,g))},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(a.body&&(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length))for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=this._overlap,b.overlapX=this._overlap,0!==this._overlap)?c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=this._overlap,b.overlapY=this._overlap,0!==this._overlap)?c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0):!1)},separateTile:function(a,b,c){if(!b.enable||!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},getObjectsUnderPointer:function(a,c,d,e){if(0!==c.length&&a.exists){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(c);var f=new b.Rectangle(a.x,a.y,1,1),g=[];this._potentials=this.quadTree.retrieve(f);for(var h=0,i=this._potentials.length;i>h;h++)this._potentials[h].hitTest(a.x,a.y)&&(d&&d.call(e,a,this._potentials[h].sprite),g.push(this._potentials[h].sprite));return g}},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle -},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.enable=!0,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this.skipQuadTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite.body=null,this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){"undefined"==typeof c&&(c=this.offset.x),"undefined"==typeof d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.area=new b.Rectangle(c,d,1,1),this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.explode=function(a,b){this.start(!0,a,0,b,!1)},b.Particles.Arcade.Emitter.prototype.flow=function(a,b,c){this.start(!1,a,b,c,!0)},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=!1),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a||e?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit())},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.area.width=a,this.area.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.NORTH=0,b.Tilemap.EAST=1,b.Tilemap.SOUTH=2,b.Tilemap.WEST=3,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;if(c=a,!this.game.cache.checkImageKey(c))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+c+'"'),null}if("string"==typeof a&&(a=this.getTilesetIndex(a),null===a&&this.format===b.Tilemap.TILED_JSON))return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+c+'"'),null;if(this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0,!0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;c>l;l++)h.push(new b.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;he;e++)this.setCollisionByIndex(a[e],b,c,!1);d&&this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d,e){if("undefined"==typeof c&&(c=!0),"undefined"==typeof e&&(e=!0),d=this.getLayer(d),!(a>b)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){"undefined"==typeof b&&(b=!0),"undefined"==typeof d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,c,d){if(d=this.getLayer(d),a>=0&&a=0&&c=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,Object.defineProperty(b.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this.wrap=!1,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x)},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gc;c++){if(this._column=null,0>c&&this.wrap?this._column=this.layer.data[c+this.map.height]:c>=this.map.height&&this.wrap?this._column=this.layer.data[c-this.map.height]:this.layer.data[c]&&(this._column=this.layer.data[c]),this._column)for(var e=this._mc.startX,f=this._mc.startX+this._mc.maxX;f>e;e++){var a=null;0>e&&this.wrap?a=this._column[e+this.map.width]:e>=this.map.width&&this.wrap?a=this._column[e-this.map.width]:this._column[e]&&(a=this._column[e]),a&&a.index>-1&&(b=this.map.tilesets[this.map.tiles[a.index][2]],this.debug===!1&&a.alpha!==this.context.globalAlpha&&(this.context.globalAlpha=a.alpha),b.draw(this.context,Math.floor(this._mc.tx),Math.floor(this._mc.ty),a.index),a.debug&&(this.context.fillStyle="rgba(0, 255, 0, 0.4)",this.context.fillRect(Math.floor(this._mc.tx),Math.floor(this._mc.ty),this.map.tileWidth,this.map.tileHeight))),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}return this.debug&&(this.context.globalAlpha=1,this.renderDebug()),this.texture._updateUvs(),this.dirty=!1,this.layer.dirty=!1,!0}},b.TilemapLayer.prototype.renderDebug=function(){this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.strokeStyle=this.debugColor,this.context.fillStyle=this.debugFillColor;for(var a=this._mc.startY,b=this._mc.startY+this._mc.maxY;b>a;a++){if(this._column=null,0>a&&this.wrap?this._column=this.layer.data[a+this.map.height]:a>=this.map.height&&this.wrap?this._column=this.layer.data[a-this.map.height]:this.layer.data[a]&&(this._column=this.layer.data[a]),this._column)for(var c=this._mc.startX,d=this._mc.startX+this._mc.maxX;d>c;c++){var e=null;0>c&&this.wrap?e=this._column[c+this.map.width]:c>=this.map.width&&this.wrap?e=this._column[c-this.map.width]:this._column[c]&&(e=this._column[c]),e&&(e.faceTop||e.faceBottom||e.faceLeft||e.faceRight)&&(this._mc.tx=Math.floor(this._mc.tx),this.debugFill&&this.context.fillRect(this._mc.tx,this._mc.ty,this._mc.cw,this._mc.ch),this.context.beginPath(),e.faceTop&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty)),e.faceBottom&&(this.context.moveTo(this._mc.tx,this._mc.ty+this._mc.ch),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),e.faceLeft&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx,this._mc.ty+this._mc.ch)),e.faceRight&&(this.context.moveTo(this._mc.tx+this._mc.cw,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),this.context.stroke()),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}},Object.defineProperty(b.TilemapLayer.prototype,"scrollX",{get:function(){return this._mc.x},set:function(a){a!==this._mc.x&&(this._mc.x=a,this._mc.startX=this.game.math.floor(this._mc.x/this.map.tileWidth),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"scrollY",{get:function(){return this._mc.y},set:function(a){a!==this._mc.y&&(this._mc.y=a,this._mc.startY=this.game.math.floor(this._mc.y/this.map.tileHeight),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=a,this.dirty=!0}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=a,this.dirty=!0}}),b.TilemapParser={parse:function(a,c,d,e,f,g){if("undefined"==typeof d&&(d=32),"undefined"==typeof e&&(e=32),"undefined"==typeof f&&(f=10),"undefined"==typeof g&&(g=10),"undefined"==typeof c)return this.getEmptyData();if(null===c)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(c);if(h){if(h.format===b.Tilemap.CSV)return this.parseCSV(c,h.data,d,e);if(!h.format||h.format===b.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+c)},parseCSV:function(a,c,d,e){var f=this.getEmptyData();c=c.trim();for(var g=[],h=c.split("\n"),i=h.length,j=0,k=0;kk;k++)i.push(a.layers[f].data[k]>0?new b.Tile(g,a.layers[f].data[k],h,j.length,a.tilewidth,a.tileheight):new b.Tile(g,-1,h,j.length,a.tilewidth,a.tileheight)),h++,h===a.layers[f].width&&(j.push(i),h=0,i=[]);g.data=j,e.push(g)}d.layers=e;for(var m=[],f=0;ft;t++)if(a.layers[f].objects[t].gid){var u={gid:a.layers[f].objects[t].gid,name:a.layers[f].objects[t].name,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};r[a.layers[f].name].push(u)}else if(a.layers[f].objects[t].polyline){var u={name:a.layers[f].objects[t].name,type:a.layers[f].objects[t].type,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,width:a.layers[f].objects[t].width,height:a.layers[f].objects[t].height,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};u.polyline=[];for(var v=0;v=c)&&(c=32),("undefined"==typeof d||0>=d)&&(d=32),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.name=a,this.firstgid=b,this.tileWidth=c,this.tileHeight=d,this.tileMargin=e,this.tileSpacing=f,this.properties=g,this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},b.Tileset.prototype={draw:function(a,b,c,d){this.image&&this.drawCoords[d]&&a.drawImage(this.image,this.drawCoords[d][0],this.drawCoords[d][1],this.tileWidth,this.tileHeight,b,c,this.tileWidth,this.tileHeight)},setImage:function(a){this.image=a,this.rows=Math.round((a.height-this.tileMargin)/(this.tileHeight+this.tileSpacing)),this.columns=Math.round((a.width-this.tileMargin)/(this.tileWidth+this.tileSpacing)),this.total=this.rows*this.columns,this.drawCoords.length=0;for(var b=this.tileMargin,c=this.tileMargin,d=this.firstgid,e=0;eg;g++)f[g]=d.isBuffer(a)?a.readUInt8(g):a[g];else"string"===c&&f.write(a,0,b);return f}function e(a,b,c,e){c=Number(c)||0;var f=a.length-c;e?(e=Number(e),e>f&&(e=f)):e=f;var g=b.length;if(g%2!==0)throw new Error("Invalid hex string");e>g/2&&(e=g/2);for(var h=0;e>h;h++){var i=parseInt(b.substr(2*h,2),16);if(isNaN(i))throw new Error("Invalid hex string");a[c+h]=i}return d._charsWritten=2*h,h}function f(a,b,c,e){return d._charsWritten=tb(qb(b),a,c,e)}function g(a,b,c,e){return d._charsWritten=tb(rb(b),a,c,e)}function h(a,b,c,d){return g(a,b,c,d)}function i(a,b,c,e){return d._charsWritten=tb(sb(b),a,c,e)}function j(a,b,c,d){if(isFinite(b))isFinite(c)||(d=c,c=void 0);else{var j=d;d=b,b=c,c=j}b=Number(b)||0;var k=this.length-b;switch(c?(c=Number(c),c>k&&(c=k)):c=k,d=String(d||"utf8").toLowerCase()){case"hex":return e(this,a,b,c);case"utf8":case"utf-8":return f(this,a,b,c);case"ascii":return g(this,a,b,c);case"binary":return h(this,a,b,c);case"base64":return i(this,a,b,c);default:throw new Error("Unknown encoding")}}function k(a,b,c){var d=this instanceof kb?this._proxy:this;if(a=String(a||"utf8").toLowerCase(),b=Number(b)||0,c=void 0!==c?Number(c):c=d.length,c===b)return"";switch(a){case"hex":return r(d,b,c);case"utf8":case"utf-8":return o(d,b,c);case"ascii":return p(d,b,c);case"binary":return q(d,b,c);case"base64":return n(d,b,c);default:throw new Error("Unknown encoding")}}function l(){return{type:"Buffer",data:Array.prototype.slice.call(this,0)}}function m(a,b,c,d){var e=this;if(c||(c=0),d||0===d||(d=this.length),b||(b=0),d!==c&&0!==a.length&&0!==e.length){if(c>d)throw new Error("sourceEnd < sourceStart");if(0>b||b>=a.length)throw new Error("targetStart out of bounds");if(0>c||c>=e.length)throw new Error("sourceStart out of bounds");if(0>d||d>e.length)throw new Error("sourceEnd out of bounds");d>this.length&&(d=this.length),a.length-bf;f++)a[f+b]=this[f+c]}}function n(b,c,d){var e=b.slice(c,d);return a("base64-js").fromByteArray(e)}function o(a,b,c){for(var d=a.slice(b,c),e="",f="",g=0;gb)&&(b=0),(!c||0>c||c>d)&&(c=d);for(var e="",f=b;c>f;f++)e+=pb(a[f]);return e}function s(a,b){var c=this.length;return a=mb(a,c,0),b=mb(b,c,c),lb(this.subarray(a,b))}function t(a,b){var c=this;return b||(yb(void 0!==a&&null!==a,"missing offset"),yb(a=c.length?void 0:c[a]}function u(a,b,c,d){d||(yb("boolean"==typeof c,"missing or invalid endian"),yb(void 0!==b&&null!==b,"missing offset"),yb(b+1=e)){if(b+1===e){var f=new Ab(new Bb(2));return f.setUint8(0,a[e-1]),f.getUint16(0,c)}return a._dataview.getUint16(b,c)}}function v(a,b){return u(this,a,!0,b)}function w(a,b){return u(this,a,!1,b)}function x(a,b,c,d){d||(yb("boolean"==typeof c,"missing or invalid endian"),yb(void 0!==b&&null!==b,"missing offset"),yb(b+3=e)){if(b+3>=e){for(var f=new Ab(new Bb(4)),g=0;e>g+b;g++)f.setUint8(g,a[g+b]);return f.getUint32(0,c)}return a._dataview.getUint32(b,c)}}function y(a,b){return x(this,a,!0,b)}function z(a,b){return x(this,a,!1,b)}function A(a,b){var c=this;return b||(yb(void 0!==a&&null!==a,"missing offset"),yb(a=c.length?void 0:c._dataview.getInt8(a)}function B(a,b,c,d){d||(yb("boolean"==typeof c,"missing or invalid endian"),yb(void 0!==b&&null!==b,"missing offset"),yb(b+1=e)){if(b+1===e){var f=new Ab(new Bb(2));return f.setUint8(0,a[e-1]),f.getInt16(0,c)}return a._dataview.getInt16(b,c)}}function C(a,b){return B(this,a,!0,b)}function D(a,b){return B(this,a,!1,b)}function E(a,b,c,d){d||(yb("boolean"==typeof c,"missing or invalid endian"),yb(void 0!==b&&null!==b,"missing offset"),yb(b+3=e)){if(b+3>=e){for(var f=new Ab(new Bb(4)),g=0;e>g+b;g++)f.setUint8(g,a[g+b]);return f.getInt32(0,c)}return a._dataview.getInt32(b,c)}}function F(a,b){return E(this,a,!0,b)}function G(a,b){return E(this,a,!1,b)}function H(a,b,c,d){return d||(yb("boolean"==typeof c,"missing or invalid endian"),yb(b+3=d.length||(d[b]=a)}function O(a,b,c,d,e){e||(yb(void 0!==b&&null!==b,"missing value"),yb("boolean"==typeof d,"missing or invalid endian"),yb(void 0!==c&&null!==c,"missing offset"),yb(c+1=f))if(c+1===f){var g=new Ab(new Bb(2));g.setUint16(0,b,d),a[c]=g.getUint8(0)}else a._dataview.setUint16(c,b,d)}function P(a,b,c){O(this,a,b,!0,c)}function Q(a,b,c){O(this,a,b,!1,c)}function R(a,b,c,d,e){e||(yb(void 0!==b&&null!==b,"missing value"),yb("boolean"==typeof d,"missing or invalid endian"),yb(void 0!==c&&null!==c,"missing offset"),yb(c+3=f))if(c+3>=f){var g=new Ab(new Bb(4));g.setUint32(0,b,d);for(var h=0;f>h+c;h++)a[h+c]=g.getUint8(h)}else a._dataview.setUint32(c,b,d)}function S(a,b,c){R(this,a,b,!0,c)}function T(a,b,c){R(this,a,b,!1,c)}function U(a,b,c){var d=this;c||(yb(void 0!==a&&null!==a,"missing value"),yb(void 0!==b&&null!==b,"missing offset"),yb(b=d.length||d._dataview.setInt8(b,a)}function V(a,b,c,d,e){e||(yb(void 0!==b&&null!==b,"missing value"),yb("boolean"==typeof d,"missing or invalid endian"),yb(void 0!==c&&null!==c,"missing offset"),yb(c+1=f))if(c+1===f){var g=new Ab(new Bb(2));g.setInt16(0,b,d),a[c]=g.getUint8(0)}else a._dataview.setInt16(c,b,d)}function W(a,b,c){V(this,a,b,!0,c)}function X(a,b,c){V(this,a,b,!1,c)}function Y(a,b,c,d,e){e||(yb(void 0!==b&&null!==b,"missing value"),yb("boolean"==typeof d,"missing or invalid endian"),yb(void 0!==c&&null!==c,"missing offset"),yb(c+3=f))if(c+3>=f){var g=new Ab(new Bb(4));g.setInt32(0,b,d);for(var h=0;f>h+c;h++)a[h+c]=g.getUint8(h)}else a._dataview.setInt32(c,b,d)}function Z(a,b,c){Y(this,a,b,!0,c)}function $(a,b,c){Y(this,a,b,!1,c)}function _(a,b,c,d,e){e||(yb(void 0!==b&&null!==b,"missing value"),yb("boolean"==typeof d,"missing or invalid endian"),yb(void 0!==c&&null!==c,"missing offset"),yb(c+3=f))if(c+3>=f){var g=new Ab(new Bb(4));g.setFloat32(0,b,d);for(var h=0;f>h+c;h++)a[h+c]=g.getUint8(h)}else a._dataview.setFloat32(c,b,d)}function ab(a,b,c){_(this,a,b,!0,c)}function bb(a,b,c){_(this,a,b,!1,c)}function cb(a,b,c,d,e){e||(yb(void 0!==b&&null!==b,"missing value"),yb("boolean"==typeof d,"missing or invalid endian"),yb(void 0!==c&&null!==c,"missing offset"),yb(c+7=f))if(c+7>=f){var g=new Ab(new Bb(8));g.setFloat64(0,b,d);for(var h=0;f>h+c;h++)a[h+c]=g.getUint8(h)}else a._dataview.setFloat64(c,b,d)}function db(a,b,c){cb(this,a,b,!0,c)}function eb(a,b,c){cb(this,a,b,!1,c)}function fb(a,b,c){if(a||(a=0),b||(b=0),c||(c=this.length),"string"==typeof a&&(a=a.charCodeAt(0)),"number"!=typeof a||isNaN(a))throw new Error("value is not a number");if(b>c)throw new Error("end < start");if(c!==b&&0!==this.length){if(0>b||b>=this.length)throw new Error("start out of bounds");if(0>c||c>this.length)throw new Error("end out of bounds");for(var d=b;c>d;d++)this[d]=a}}function gb(){for(var a=[],b=this.length,d=0;b>d;d++)if(a[d]=pb(this[d]),d===c.INSPECT_MAX_BYTES){a[d+1]="...";break}return""}function hb(){return new d(this).buffer}function ib(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function jb(){var a=new Cb(0);a.foo=function(){return 42};try{return 42===a.foo()}catch(b){return!1}}function kb(a){this._arr=a,0!==a.byteLength&&(this._dataview=new Ab(a.buffer,a.byteOffset,a.byteLength))}function lb(a){if(void 0===Db&&(Db=jb()),Db)return a.write=j,a.toString=k,a.toLocaleString=k,a.toJSON=l,a.copy=m,a.slice=s,a.readUInt8=t,a.readUInt16LE=v,a.readUInt16BE=w,a.readUInt32LE=y,a.readUInt32BE=z,a.readInt8=A,a.readInt16LE=C,a.readInt16BE=D,a.readInt32LE=F,a.readInt32BE=G,a.readFloatLE=I,a.readFloatBE=J,a.readDoubleLE=L,a.readDoubleBE=M,a.writeUInt8=N,a.writeUInt16LE=P,a.writeUInt16BE=Q,a.writeUInt32LE=S,a.writeUInt32BE=T,a.writeInt8=U,a.writeInt16LE=W,a.writeInt16BE=X,a.writeInt32LE=Z,a.writeInt32BE=$,a.writeFloatLE=ab,a.writeFloatBE=bb,a.writeDoubleLE=db,a.writeDoubleBE=eb,a.fill=fb,a.inspect=gb,a.toArrayBuffer=hb,a._isBuffer=!0,0!==a.byteLength&&(a._dataview=new Ab(a.buffer,a.byteOffset,a.byteLength)),a;var b=new kb(a),c=new Proxy(b,Eb);return b._proxy=c,c}function mb(a,b,c){return"number"!=typeof a?c:(a=~~a,a>=b?b:a>=0?a:(a+=b,a>=0?a:0))}function nb(a){return a=~~Math.ceil(+a),0>a?0:a}function ob(a){return Array.isArray(a)||d.isBuffer(a)||a&&"object"==typeof a&&"number"==typeof a.length}function pb(a){return 16>a?"0"+a.toString(16):a.toString(16)}function qb(a){for(var b=[],c=0;ce&&!(e+c>=b.length||e>=a.length);)b[e+c]=a[e],e++;return e}function ub(a){try{return decodeURIComponent(a)}catch(b){return String.fromCharCode(65533)}}function vb(a,b){yb("number"==typeof a,"cannot write a non-number as a number"),yb(a>=0,"specified a negative value for writing an unsigned value"),yb(b>=a,"value is larger than maximum value for type"),yb(Math.floor(a)===a,"value has a fractional component")}function wb(a,b,c){yb("number"==typeof a,"cannot write a non-number as a number"),yb(b>=a,"value larger than maximum allowed value"),yb(a>=c,"value smaller than minimum allowed value"),yb(Math.floor(a)===a,"value has a fractional component")}function xb(a,b,c){yb("number"==typeof a,"cannot write a non-number as a number"),yb(b>=a,"value larger than maximum allowed value"),yb(a>=c,"value smaller than minimum allowed value")}function yb(a,b){if(!a)throw new Error(b||"Failed assertion")}var zb=a("typedarray"),Ab="undefined"==typeof DataView?zb.DataView:DataView,Bb="undefined"==typeof ArrayBuffer?zb.ArrayBuffer:ArrayBuffer,Cb="undefined"==typeof Uint8Array?zb.Uint8Array:Uint8Array;c.Buffer=d,c.SlowBuffer=d,c.INSPECT_MAX_BYTES=50,d.poolSize=8192;var Db;d.isEncoding=function(a){switch((a+"").toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},d.isBuffer=function(a){return a&&a._isBuffer},d.byteLength=function(a,b){switch(b||"utf8"){case"hex":return a.length/2;case"utf8":case"utf-8":return qb(a).length;case"ascii":case"binary":return a.length;case"base64":return sb(a).length;default:throw new Error("Unknown encoding")}},d.concat=function(a,b){if(!Array.isArray(a))throw new Error("Usage: Buffer.concat(list, [totalLength])\nlist should be an Array.");var c,e;if(0===a.length)return new d(0);if(1===a.length)return a[0];if("number"!=typeof b)for(b=0,c=0;c0)throw"Invalid string. Length must be a multiple of 4";for(g=a.indexOf("="),g=g>0?a.length-g:0,h=[],e=g>0?a.length-4:a.length,b=0,c=0;e>b;b+=4,c+=3)f=d.indexOf(a[b])<<18|d.indexOf(a[b+1])<<12|d.indexOf(a[b+2])<<6|d.indexOf(a[b+3]),h.push((16711680&f)>>16),h.push((65280&f)>>8),h.push(255&f);return 2===g?(f=d.indexOf(a[b])<<2|d.indexOf(a[b+1])>>4,h.push(255&f)):1===g&&(f=d.indexOf(a[b])<<10|d.indexOf(a[b+1])<<4|d.indexOf(a[b+2])>>2,h.push(f>>8&255),h.push(255&f)),h}function c(a){function b(a){return d[a>>18&63]+d[a>>12&63]+d[a>>6&63]+d[63&a]}var c,e,f,g=a.length%3,h="";for(c=0,f=a.length-g;f>c;c+=3)e=(a[c]<<16)+(a[c+1]<<8)+a[c+2],h+=b(e);switch(g){case 1:e=a[a.length-1],h+=d[e>>2],h+=d[e<<4&63],h+="==";break;case 2:e=(a[a.length-2]<<8)+a[a.length-1],h+=d[e>>10],h+=d[e>>4&63],h+=d[e<<2&63],h+="="}return h}var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";b.exports.toByteArray=a,b.exports.fromByteArray=c}()},{}],4:[function(a,b,c){function d(a){if(L&&K){var b,c=L(a);for(b=0;bB)throw new RangeError("Array too large for polyfill");var c;for(c=0;c>c}function g(a,b){var c=32-b;return a<>>c}function h(a){return[255&a]}function i(a){return f(a[0],8)}function j(a){return[255&a]}function k(a){return g(a[0],8)}function l(a){return a=J(Number(a)),[0>a?0:a>255?255:255&a]}function m(a){return[a>>8&255,255&a]}function n(a){return f(a[0]<<8|a[1],16)}function o(a){return[a>>8&255,255&a]}function p(a){return g(a[0]<<8|a[1],16)}function q(a){return[a>>24&255,a>>16&255,a>>8&255,255&a]}function r(a){return f(a[0]<<24|a[1]<<16|a[2]<<8|a[3],32)}function s(a){return[a>>24&255,a>>16&255,a>>8&255,255&a]}function t(a){return g(a[0]<<24|a[1]<<16|a[2]<<8|a[3],32)}function u(a,b,c){function d(a){var b=F(a),c=a-b;return.5>c?b:c>.5?b+1:b%2?b+1:b}var e,f,g,h,i,j,k,l=(1<a?1:0):0===a?(f=0,g=0,e=1/a===-1/0?1:0):(e=0>a,a=E(a),a>=I(2,1-l)?(f=H(F(G(a)/D),1023),g=d(a/I(2,f)*I(2,c)),g/I(2,c)>=2&&(f+=1,g=1),f>l?(f=(1<>=1;return l.reverse(),g=l.join(""),h=(1<0?i*I(2,j-h)*(1+k/I(2,c)):0!==k?i*I(2,-(h-1))*(k/I(2,c)):0>i?-0:0}function w(a){return v(a,11,52)}function x(a){return u(a,11,52)}function y(a){return v(a,8,23)}function z(a){return u(a,8,23)}var A=void 0,B=1e5,C=function(){var a=Object.prototype.toString,b=Object.prototype.hasOwnProperty;return{Class:function(b){return a.call(b).replace(/^\[object *|\]$/g,"")},HasProperty:function(a,b){return b in a},HasOwnProperty:function(a,c){return b.call(a,c)},IsCallable:function(a){return"function"==typeof a},ToInt32:function(a){return a>>0},ToUint32:function(a){return a>>>0}}}(),D=Math.LN2,E=Math.abs,F=Math.floor,G=Math.log,H=Math.min,I=Math.pow,J=Math.round,K=Object.defineProperty||function(a,b,c){if(!a===Object(a))throw new TypeError("Object.defineProperty called on non-object");return C.HasProperty(c,"get")&&Object.prototype.__defineGetter__&&Object.prototype.__defineGetter__.call(a,b,c.get),C.HasProperty(c,"set")&&Object.prototype.__defineSetter__&&Object.prototype.__defineSetter__.call(a,b,c.set),C.HasProperty(c,"value")&&(a[b]=c.value),a},L=Object.getOwnPropertyNames||function(a){if(a!==Object(a))throw new TypeError("Object.getOwnPropertyNames called on non-object");var b,c=[];for(b in a)C.HasOwnProperty(a,b)&&c.push(b);return c};!function(){function a(a,c,g){var h;return h=function(a,c,f){var g,i,j,k;if(arguments.length&&"number"!=typeof arguments[0])if("object"==typeof arguments[0]&&arguments[0].constructor===h)for(g=arguments[0],this.length=g.length,this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new b(this.byteLength),this.byteOffset=0,j=0;jthis.buffer.byteLength)throw new RangeError("byteOffset out of range");if(this.byteOffset%this.BYTES_PER_ELEMENT)throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size.");if(arguments.length<3){if(this.byteLength=this.buffer.byteLength-this.byteOffset,this.byteLength%this.BYTES_PER_ELEMENT)throw new RangeError("length of buffer minus byteOffset not a multiple of the element size");this.length=this.byteLength/this.BYTES_PER_ELEMENT}else this.length=C.ToUint32(f),this.byteLength=this.length*this.BYTES_PER_ELEMENT;if(this.byteOffset+this.byteLength>this.buffer.byteLength)throw new RangeError("byteOffset and length reference an area beyond the end of the buffer")}else for(i=arguments[0],this.length=C.ToUint32(i.length),this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new b(this.byteLength),this.byteOffset=0,j=0;jf)throw new RangeError("ArrayBufferView size is not a small enough positive integer");this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new b(this.byteLength),this.byteOffset=0}this.constructor=h,d(this),e(this)},h.prototype=new f,h.prototype.BYTES_PER_ELEMENT=a,h.prototype._pack=c,h.prototype._unpack=g,h.BYTES_PER_ELEMENT=a,h.prototype._getter=function(a){if(arguments.length<1)throw new SyntaxError("Not enough arguments");if(a=C.ToUint32(a),a>=this.length)return A;var b,c,d=[];for(b=0,c=this.byteOffset+a*this.BYTES_PER_ELEMENT;b=this.length)return A;var c,d,e=this._pack(b);for(c=0,d=this.byteOffset+a*this.BYTES_PER_ELEMENT;cthis.length)throw new RangeError("Offset plus length of array is out of range");if(h=this.byteOffset+c*this.BYTES_PER_ELEMENT,i=a.length*this.BYTES_PER_ELEMENT,a.buffer===this.buffer){for(j=[],e=0,f=a.byteOffset;i>e;e+=1,f+=1)j[e]=a.buffer._bytes[f];for(e=0,g=h;i>e;e+=1,g+=1)this.buffer._bytes[g]=j[e]}else for(e=0,f=a.byteOffset,g=h;i>e;e+=1,f+=1,g+=1)this.buffer._bytes[g]=a.buffer._bytes[f]}else{if("object"!=typeof arguments[0]||"undefined"==typeof arguments[0].length)throw new TypeError("Unexpected argument type(s)");if(b=arguments[0],d=C.ToUint32(b.length),c=C.ToUint32(arguments[1]),c+d>this.length)throw new RangeError("Offset plus length of array is out of range");for(e=0;d>e;e+=1)f=b[e],this._setter(c+e,Number(f))}},h.prototype.subarray=function(a,b){function c(a,b,c){return b>a?b:a>c?c:a}a=C.ToInt32(a),b=C.ToInt32(b),arguments.length<1&&(a=0),arguments.length<2&&(b=this.length),0>a&&(a=this.length+a),0>b&&(b=this.length+b),a=c(a,0,this.length),b=c(b,0,this.length);var d=b-a;return 0>d&&(d=0),new this.constructor(this.buffer,this.byteOffset+a*this.BYTES_PER_ELEMENT,d)},h}var b=function(a){if(a=C.ToInt32(a),0>a)throw new RangeError("ArrayBuffer size is not a small enough positive integer");this.byteLength=a,this._bytes=[],this._bytes.length=a;var b;for(b=0;bthis.byteLength)throw new RangeError("Array index out of range");c+=this.byteOffset;var e,g=new Uint8Array(this.buffer,c,b.BYTES_PER_ELEMENT),h=[];for(e=0;ethis.byteLength)throw new RangeError("Array index out of range");var g,h,i=new b([d]),j=new Uint8Array(i.buffer),k=[];for(g=0;gthis.buffer.byteLength)throw new RangeError("byteOffset out of range");if(this.byteLength=arguments.length<3?this.buffer.byteLength-this.byteOffset:C.ToUint32(c),this.byteOffset+this.byteLength>this.buffer.byteLength)throw new RangeError("byteOffset and length reference an area beyond the end of the buffer");d(this)};g.prototype.getUint8=b(c.Uint8Array),g.prototype.getInt8=b(c.Int8Array),g.prototype.getUint16=b(c.Uint16Array),g.prototype.getInt16=b(c.Int16Array),g.prototype.getUint32=b(c.Uint32Array),g.prototype.getInt32=b(c.Int32Array),g.prototype.getFloat32=b(c.Float32Array),g.prototype.getFloat64=b(c.Float64Array),g.prototype.setUint8=e(c.Uint8Array),g.prototype.setInt8=e(c.Int8Array),g.prototype.setUint16=e(c.Uint16Array),g.prototype.setInt16=e(c.Int16Array),g.prototype.setUint32=e(c.Uint32Array),g.prototype.setInt32=e(c.Int32Array),g.prototype.setFloat32=e(c.Float32Array),g.prototype.setFloat64=e(c.Float64Array),c.DataView=c.DataView||g}()},{}]},{},[]),b.exports=a("native-buffer-browserify").Buffer},{}],2:[function(a,b){var c=b.exports={};c.nextTick=function(){var a="undefined"!=typeof window&&window.setImmediate,b="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(a)return function(a){return window.setImmediate(a)};if(b){var c=[];return window.addEventListener("message",function(a){if(a.source===window&&"process-tick"===a.data&&(a.stopPropagation(),c.length>0)){var b=c.shift();b()}},!0),function(a){c.push(a),window.postMessage("process-tick","*")}}return function(a){setTimeout(a,0)}}(),c.title="browser",c.browser=!0,c.env={},c.argv=[],c.binding=function(){throw new Error("process.binding is not supported")},c.cwd=function(){return"/"},c.chdir=function(){throw new Error("process.chdir is not supported")}},{}],3:[function(a,b){function c(){}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Scalar"));b.exports=c,c.lineInt=function(a,b,c){c=c||0;var e,f,g,h,i,j,k,l=[0,0];return e=a[1][1]-a[0][1],f=a[0][0]-a[1][0],g=e*a[0][0]+f*a[0][1],h=b[1][1]-b[0][1],i=b[0][0]-b[1][0],j=h*b[0][0]+i*b[0][1],k=e*i-h*f,d.eq(k,0,c)||(l[0]=(i*g-f*j)/k,l[1]=(e*j-h*g)/k),l},c.segmentsIntersect=function(a,b,c,d){var e=b[0]-a[0],f=b[1]-a[1],g=d[0]-c[0],h=d[1]-c[1];if(g*f-h*e==0)return!1;var i=(e*(c[1]-a[1])+f*(a[0]-c[0]))/(g*f-h*e),j=(g*(a[1]-c[1])+h*(c[0]-a[0]))/(h*e-g*f);return i>=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":6,__browserify_Buffer:1,__browserify_process:2}],4:[function(a,b){function c(){}a("__browserify_process"),a("__browserify_Buffer");b.exports=c,c.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},c.left=function(a,b,d){return c.area(a,b,d)>0},c.leftOn=function(a,b,d){return c.area(a,b,d)>=0},c.right=function(a,b,d){return c.area(a,b,d)<0},c.rightOn=function(a,b,d){return c.area(a,b,d)<=0};var d=[],e=[];c.collinear=function(a,b,f,g){if(g){var h=d,i=e;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=f[0]-b[0],i[1]=f[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==c.area(a,b,f)},c.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{__browserify_Buffer:1,__browserify_process:2}],5:[function(a,b){function c(){this.vertices=[]}function d(a,b,c,d,e){e=e||0;var f=b[1]-a[1],h=a[0]-b[0],i=f*a[0]+h*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*h;return g.eq(m,0,e)?[0,0]:[(k*i-h*l)/m,(f*l-j*i)/m]}var e=(a("__browserify_process"),a("__browserify_Buffer"),a("./Line")),f=a("./Point"),g=a("./Scalar");b.exports=c,c.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},c.prototype.first=function(){return this.vertices[0]},c.prototype.last=function(){return this.vertices[this.vertices.length-1]},c.prototype.clear=function(){this.vertices.length=0},c.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},c.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);f.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},c.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},c.prototype.isReflex=function(a){return f.right(this.at(a-1),this.at(a),this.at(a+1))};var h=[],i=[];c.prototype.canSee=function(a,b){var c,d,g=h,j=i;if(f.leftOn(this.at(a+1),this.at(a),this.at(b))&&f.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=f.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&f.leftOn(this.at(a),this.at(b),this.at(k+1))&&f.rightOn(this.at(a),this.at(b),this.at(k))&&(g[0]=this.at(a),g[1]=this.at(b),j[0]=this.at(k),j[1]=this.at(k+1),c=e.lineInt(g,j),f.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},c.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(e.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),f.left(v.at(x+1),v.at(x),v.at(y+1))&&f.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=d(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),f.left(v.at(x-1),v.at(x),l)&&(o=f.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,e.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)f.leftOn(v.at(x-1),v.at(x),v.at(y))&&f.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=f.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)f.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":3,"./Point":4,"./Scalar":6,__browserify_Buffer:1,__browserify_process:2}],6:[function(a,b){function c(){}a("__browserify_process"),a("__browserify_Buffer");b.exports=c,c.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"~0.4.0","grunt-contrib-jshint":"~0.9.2","grunt-contrib-nodeunit":"~0.1.2","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{__browserify_Buffer:1,__browserify_process:2}],9:[function(a,b){function c(a){this.lowerBound=d.create(),a&&a.lowerBound&&d.copy(this.lowerBound,a.lowerBound),this.upperBound=d.create(),a&&a.upperBound&&d.copy(this.upperBound,a.upperBound)}{var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2"));a("../utils/Utils")}b.exports=c;var e=d.create();c.prototype.setFromPoints=function(a,b,c,f){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?d.rotate(g,a[0],c):d.copy(g,a[0]),d.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;ko;o++)l[o]>h[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]=c},c.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},c.prototype.boundingVolumeCheck=function(a,b){var d;switch(this.boundingVolumeType){case c.BOUNDING_CIRCLE:d=c.boundingRadiusCheck(a,b);break;case c.AABB:d=c.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return d},c.canCollide=function(a,b){return a.type===e.STATIC&&b.type===e.STATIC?!1:a.type===e.KINEMATIC&&b.type===e.STATIC||a.type===e.STATIC&&b.type===e.KINEMATIC?!1:a.type===e.KINEMATIC&&b.type===e.KINEMATIC?!1:a.sleepState===e.SLEEPING&&b.sleepState===e.SLEEPING?!1:a.sleepState===e.SLEEPING&&b.type===e.STATIC||b.sleepState===e.SLEEPING&&a.type===e.STATIC?!1:!0},c.NAIVE=1,c.SAP=2},{"../math/vec2":31,"../objects/Body":32,__browserify_Buffer:1,__browserify_process:2}],11:[function(a,b){function c(a){d.apply(this),a=e.defaults(a,{xmin:-100,xmax:100,ymin:-100,ymax:100,nx:10,ny:10}),this.xmin=a.xmin,this.ymin=a.ymin,this.xmax=a.xmax,this.ymax=a.ymax,this.nx=a.nx,this.ny=a.ny,this.binsizeX=(this.xmax-this.xmin)/this.nx,this.binsizeY=(this.ymax-this.ymin)/this.ny}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Particle"),a("../collision/Broadphase")),e=(a("../math/vec2"),a("../utils/Utils"));b.exports=c,c.prototype=new d,c.prototype.getCollisionPairs=function(a){for(var b=[],c=a.bodies,e=c.length,f=(this.binsizeX,this.binsizeY,this.nx),g=this.ny,h=this.xmin,i=this.ymin,j=this.xmax,k=this.ymax,l=[],m=f*g,n=0;m>n;n++)l.push([]);for(var o=f/(j-h),p=g/(k-i),n=0;n!==e;n++)for(var q=c[n],r=q.aabb,s=Math.max(r.lowerBound[0],h),t=Math.max(r.lowerBound[1],i),u=Math.min(r.upperBound[0],j),v=Math.min(r.upperBound[1],k),w=Math.floor(o*(s-h)),x=Math.floor(p*(t-i)),y=Math.floor(o*(u-h)),z=Math.floor(p*(v-i)),A=w;y>=A;A++)for(var B=x;z>=B;B++){var C=A,D=B,E=C*(g-1)+D;E>=0&&m>E&&l[E].push(q)}for(var n=0;n!==m;n++)for(var F=l[n],A=0,G=F.length;A!==G;A++)for(var q=F[A],B=0;B!==A;B++){var H=F[B];d.canCollide(q,H)&&this.boundingVolumeCheck(q,H)&&b.push(q,H)}return b}},{"../collision/Broadphase":10,"../math/vec2":31,"../shapes/Circle":38,"../shapes/Particle":42,"../shapes/Plane":43,"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],12:[function(a,b){function c(){d.call(this,d.NAIVE)}{var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var e=0,f=b.length;e!==f;e++)for(var g=b[e],h=0;e>h;h++){var i=b[h];d.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c}},{"../collision/Broadphase":10,"../math/vec2":31,"../shapes/Circle":38,"../shapes/Particle":42,"../shapes/Plane":43,"../shapes/Shape":45,__browserify_Buffer:1,__browserify_process:2}],13:[function(a,b){function c(){this.contactEquations=[],this.frictionEquations=[],this.enableFriction=!0,this.slipForce=10,this.frictionCoefficient=.3,this.surfaceVelocity=0,this.reuseObjects=!0,this.reusableContactEquations=[],this.reusableFrictionEquations=[],this.restitution=0,this.stiffness=l.DEFAULT_STIFFNESS,this.relaxation=l.DEFAULT_RELAXATION,this.frictionStiffness=l.DEFAULT_STIFFNESS,this.frictionRelaxation=l.DEFAULT_RELAXATION,this.enableFrictionReduction=!0,this.collidingBodiesLastStep=new k,this.contactSkinSize=.01}function d(a,b){f.set(a.vertices[0],.5*-b.length,-b.radius),f.set(a.vertices[1],.5*b.length,-b.radius),f.set(a.vertices[2],.5*b.length,b.radius),f.set(a.vertices[3],.5*-b.length,b.radius)}function e(a,b,c,d){for(var e=R,i=S,j=T,k=U,l=a,m=b.vertices,n=null,o=0;o!==m.length+1;o++){var p=m[o%m.length],q=m[(o+1)%m.length];f.rotate(e,p,d),f.rotate(i,q,d),h(e,e,c),h(i,i,c),g(j,e,l),g(k,i,l);var r=f.crossLength(j,k);if(null===n&&(n=r),0>=r*n)return!1;n=r}return!0}var f=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2")),g=f.sub,h=f.add,i=f.dot,j=a("../utils/Utils"),k=a("../utils/TupleDictionary"),l=a("../equations/Equation"),m=a("../equations/ContactEquation"),n=a("../equations/FrictionEquation"),o=a("../shapes/Circle"),p=a("../shapes/Convex"),q=a("../shapes/Shape"),r=(a("../objects/Body"),a("../shapes/Rectangle"));b.exports=c;var s=f.fromValues(0,1),t=f.fromValues(0,0),u=f.fromValues(0,0),v=f.fromValues(0,0),w=f.fromValues(0,0),x=f.fromValues(0,0),y=f.fromValues(0,0),z=f.fromValues(0,0),A=f.fromValues(0,0),B=f.fromValues(0,0),C=f.fromValues(0,0),D=f.fromValues(0,0),E=f.fromValues(0,0),F=f.fromValues(0,0),G=f.fromValues(0,0),H=f.fromValues(0,0),I=f.fromValues(0,0),J=f.fromValues(0,0),K=f.fromValues(0,0),L=[];c.prototype.collidedLastStep=function(a,b){var c=0|a.id,d=0|b.id;return!!this.collidingBodiesLastStep.get(c,d)},c.prototype.reset=function(){this.collidingBodiesLastStep.reset();for(var a=this.contactEquations,b=a.length;b--;){var c=a[b],d=c.bodyA.id,e=c.bodyB.id;this.collidingBodiesLastStep.set(d,e,!0)}if(this.reuseObjects){var f=this.contactEquations,g=this.frictionEquations,h=this.reusableFrictionEquations,i=this.reusableContactEquations;j.appendArray(i,f),j.appendArray(h,g)}this.contactEquations.length=this.frictionEquations.length=0},c.prototype.createContactEquation=function(a,b,c,d){var e=this.reusableContactEquations.length?this.reusableContactEquations.pop():new m(a,b);return e.bodyA=a,e.bodyB=b,e.shapeA=c,e.shapeB=d,e.restitution=this.restitution,e.firstImpact=!this.collidedLastStep(a,b),e.stiffness=this.stiffness,e.relaxation=this.relaxation,e.needsUpdate=!0,e.enabled=!0,e.offset=this.contactSkinSize,e},c.prototype.createFrictionEquation=function(a,b,c,d){var e=this.reusableFrictionEquations.length?this.reusableFrictionEquations.pop():new n(a,b);return e.bodyA=a,e.bodyB=b,e.shapeA=c,e.shapeB=d,e.setSlipForce(this.slipForce),e.frictionCoefficient=this.frictionCoefficient,e.relativeVelocity=this.surfaceVelocity,e.enabled=!0,e.needsUpdate=!0,e.stiffness=this.frictionStiffness,e.relaxation=this.frictionRelaxation,e.contactEquations.length=0,e},c.prototype.createFrictionFromContact=function(a){var b=this.createFrictionEquation(a.bodyA,a.bodyB,a.shapeA,a.shapeB);return f.copy(b.contactPointA,a.contactPointA),f.copy(b.contactPointB,a.contactPointB),f.rotate90cw(b.t,a.normalA),b.contactEquations.push(a),b},c.prototype.createFrictionFromAverage=function(a){if(!a)throw new Error("numContacts == 0!");{var b=this.contactEquations[this.contactEquations.length-1],c=this.createFrictionEquation(b.bodyA,b.bodyB,b.shapeA,b.shapeB),d=b.bodyA;b.bodyB}f.set(c.contactPointA,0,0),f.set(c.contactPointB,0,0),f.set(c.t,0,0);for(var e=0;e!==a;e++)b=this.contactEquations[this.contactEquations.length-1-e],b.bodyA===d?(f.add(c.t,c.t,b.normalA),f.add(c.contactPointA,c.contactPointA,b.contactPointA),f.add(c.contactPointB,c.contactPointB,b.contactPointB)):(f.sub(c.t,c.t,b.normalA),f.add(c.contactPointA,c.contactPointA,b.contactPointB),f.add(c.contactPointB,c.contactPointB,b.contactPointA)),c.contactEquations.push(b);var g=1/a;return f.scale(c.contactPointA,c.contactPointA,g),f.scale(c.contactPointB,c.contactPointB,g),f.normalize(c.t,c.t),f.rotate90cw(c.t,c.t),c},c.prototype[q.LINE|q.CONVEX]=c.prototype.convexLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},c.prototype[q.LINE|q.RECTANGLE]=c.prototype.lineRectangle=function(a,b,c,d,e,f,g,h,i){return i?!1:0};var M=new r(1,1),N=f.create();c.prototype[q.CAPSULE|q.CONVEX]=c.prototype[q.CAPSULE|q.RECTANGLE]=c.prototype.convexCapsule=function(a,b,c,e,g,h,i,j,k){var l=N;f.set(l,h.length/2,0),f.rotate(l,l,j),f.add(l,l,i);var m=this.circleConvex(g,h,l,j,a,b,c,e,k,h.radius);f.set(l,-h.length/2,0),f.rotate(l,l,j),f.add(l,l,i);var n=this.circleConvex(g,h,l,j,a,b,c,e,k,h.radius);if(k&&(m||n))return!0;var o=M;d(o,h);var p=this.convexConvex(a,b,c,e,g,o,i,j,k);return p+m+n},c.prototype[q.CAPSULE|q.LINE]=c.prototype.lineCapsule=function(a,b,c,d,e,f,g,h,i){return i?!1:0};var O=f.create(),P=f.create(),Q=new r(1,1);c.prototype[q.CAPSULE|q.CAPSULE]=c.prototype.capsuleCapsule=function(a,b,c,e,g,h,i,j,k){for(var l,m=O,n=P,o=0,p=0;2>p;p++){f.set(m,(0===p?-1:1)*b.length/2,0),f.rotate(m,m,e),f.add(m,m,c);for(var q=0;2>q;q++){f.set(n,(0===q?-1:1)*h.length/2,0),f.rotate(n,n,j),f.add(n,n,i),this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var r=this.circleCircle(a,b,m,e,g,h,n,j,k,b.radius,h.radius);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&r)return!0;o+=r}}this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var s=Q;d(s,b);var t=this.convexCapsule(a,s,c,e,g,h,i,j,k);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&t)return!0;if(o+=t,this.enableFrictionReduction){var l=this.enableFriction;this.enableFriction=!1}d(s,h);var u=this.convexCapsule(g,s,i,j,a,b,c,e,k);return this.enableFrictionReduction&&(this.enableFriction=l),k&&u?!0:(o+=u,this.enableFrictionReduction&&o&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(o)),o)},c.prototype[q.LINE|q.LINE]=c.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},c.prototype[q.PLANE|q.LINE]=c.prototype.planeLine=function(a,b,c,d,e,j,k,l,m){var n=t,o=u,p=v,q=w,r=x,C=y,D=z,E=A,F=B,G=L,H=0;f.set(n,-j.length/2,0),f.set(o,j.length/2,0),f.rotate(p,n,l),f.rotate(q,o,l),h(p,p,k),h(q,q,k),f.copy(n,p),f.copy(o,q),g(r,o,n),f.normalize(C,r),f.rotate90cw(F,C),f.rotate(E,s,d),G[0]=n,G[1]=o;for(var I=0;IK){if(m)return!0;var M=this.createContactEquation(a,e,b,j);H++,f.copy(M.normalA,E),f.normalize(M.normalA,M.normalA),f.scale(D,E,K),g(M.contactPointA,J,D),g(M.contactPointA,M.contactPointA,a.position),g(M.contactPointB,J,k),h(M.contactPointB,M.contactPointB,k),g(M.contactPointB,M.contactPointB,e.position),this.contactEquations.push(M),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(M))}}return m?!1:(this.enableFrictionReduction||H&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(H)),H)},c.prototype[q.PARTICLE|q.CAPSULE]=c.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},c.prototype[q.CIRCLE|q.LINE]=c.prototype.circleLine=function(a,b,c,d,e,j,k,l,m,n,o){var n=n||0,o="undefined"!=typeof o?o:b.radius,p=t,q=u,r=v,s=w,H=x,I=y,J=z,K=A,M=B,N=C,O=D,P=E,Q=F,R=G,S=L; -f.set(K,-j.length/2,0),f.set(M,j.length/2,0),f.rotate(N,K,l),f.rotate(O,M,l),h(N,N,k),h(O,O,k),f.copy(K,N),f.copy(M,O),g(I,M,K),f.normalize(J,I),f.rotate90cw(H,J),g(P,c,K);var T=i(P,H);g(s,K,k),g(Q,c,k);var U=o+n;if(Math.abs(T)W&&X>V){if(m)return!0;var Y=this.createContactEquation(a,e,b,j);return f.scale(Y.normalA,p,-1),f.normalize(Y.normalA,Y.normalA),f.scale(Y.contactPointA,Y.normalA,o),h(Y.contactPointA,Y.contactPointA,c),g(Y.contactPointA,Y.contactPointA,a.position),g(Y.contactPointB,r,k),h(Y.contactPointB,Y.contactPointB,k),g(Y.contactPointB,Y.contactPointB,e.position),this.contactEquations.push(Y),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(Y)),1}}S[0]=K,S[1]=M;for(var Z=0;ZQ&&(f.copy(J,B),L=Q,f.scale(A,s,Q),f.add(A,A,B),K=!0)}}if(K){if(m)return!0;var R=this.createContactEquation(a,i,b,j);return f.sub(R.normalA,J,c),f.normalize(R.normalA,R.normalA),f.scale(R.contactPointA,R.normalA,n),h(R.contactPointA,R.contactPointA,c),g(R.contactPointA,R.contactPointA,a.position),g(R.contactPointB,A,k),h(R.contactPointB,R.contactPointB,k),g(R.contactPointB,R.contactPointB,i.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}if(n>0)for(var N=0;NQ&&(I=Q,f.scale(E,s,Q),f.add(E,E,c),f.copy(H,s),L=!0)}if(L){var R=this.createContactEquation(a,j,b,k);return f.scale(R.normalA,H,-1),f.normalize(R.normalA,R.normalA),f.set(R.contactPointA,0,0),h(R.contactPointA,R.contactPointA,c),g(R.contactPointA,R.contactPointA,a.position),g(R.contactPointB,E,l),h(R.contactPointB,R.contactPointB,l),g(R.contactPointB,R.contactPointB,j.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}return 0},c.prototype[q.CIRCLE]=c.prototype.circleCircle=function(a,b,c,d,e,i,j,k,l,m,n){var o=t,m=m||b.radius,n=n||i.radius;g(o,c,j);var p=m+n;if(f.squaredLength(o)>Math.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,i);return g(q.normalA,j,c),f.normalize(q.normalA,q.normalA),f.scale(q.contactPointA,q.normalA,m),f.scale(q.contactPointB,q.normalA,-n),h(q.contactPointA,q.contactPointA,c),g(q.contactPointA,q.contactPointA,a.position),h(q.contactPointB,q.contactPointB,j),g(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},c.prototype[q.PLANE|q.CONVEX]=c.prototype[q.PLANE|q.RECTANGLE]=c.prototype.planeConvex=function(a,b,c,d,e,j,k,l,m){var n=t,o=u,p=v,q=0;f.rotate(o,s,d);for(var r=0;r!==j.vertices.length;r++){var w=j.vertices[r];if(f.rotate(n,w,l),h(n,n,k),g(p,n,c),i(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,j);g(p,n,c),f.copy(x.normalA,o);var y=i(p,x.normalA);f.scale(p,x.normalA,y),g(x.contactPointB,n,e.position),g(x.contactPointA,n,p),g(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},c.prototype[q.PARTICLE|q.PLANE]=c.prototype.particlePlane=function(a,b,c,d,e,h,j,k,l){var m=t,n=u;k=k||0,g(m,c,j),f.rotate(n,s,k);var o=i(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,h,b);return f.copy(p.normalA,n),f.scale(m,p.normalA,o),g(p.contactPointA,c,m),g(p.contactPointA,p.contactPointA,e.position),g(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},c.prototype[q.CIRCLE|q.PARTICLE]=c.prototype.circleParticle=function(a,b,c,d,e,i,j,k,l){var m=t;if(g(m,j,c),f.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,i);return f.copy(n.normalA,m),f.normalize(n.normalA,n.normalA),f.scale(n.contactPointA,n.normalA,b.radius),h(n.contactPointA,n.contactPointA,c),g(n.contactPointA,n.contactPointA,a.position),g(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};{var V=new o(1),W=f.create(),X=f.create();f.create()}c.prototype[q.PLANE|q.CAPSULE]=c.prototype.planeCapsule=function(a,b,c,d,e,g,i,j,k){var l=W,m=X,n=V;f.set(l,-g.length/2,0),f.rotate(l,l,j),h(l,l,i),f.set(m,g.length/2,0),f.rotate(m,m,j),h(m,m,i),n.radius=g.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},c.prototype[q.CIRCLE|q.PLANE]=c.prototype.circlePlane=function(a,b,c,d,e,j,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;g(x,p,r),f.rotate(y,s,w);var A=i(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,j,b);return f.copy(B.normalA,y),f.scale(B.contactPointB,B.normalA,-o.radius),h(B.contactPointB,B.contactPointB,p),g(B.contactPointB,B.contactPointB,n.position),f.scale(z,B.normalA,A),g(B.contactPointA,x,z),h(B.contactPointA,B.contactPointA,r),g(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},c.prototype[q.CONVEX]=c.prototype[q.CONVEX|q.RECTANGLE]=c.prototype[q.RECTANGLE]=c.prototype.convexConvex=function(a,b,d,e,j,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=c.findSeparatingAxis(b,d,e,k,l,m,p);if(!G)return 0;g(D,l,d),i(p,D)>0&&f.scale(p,p,-1);var H=c.getClosestEdge(b,e,p,!0),I=c.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=d,P=l,Q=e,R=m,S=a,T=j;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];f.rotate(q,W,R),h(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];f.rotate(r,Z,Q),f.rotate(s,$,Q),h(r,r,O),h(s,s,O),g(y,s,r),f.rotate90cw(E,y),f.normalize(E,E),g(D,q,r);var _=i(E,D);(Y===K&&o>=_||Y!==K&&0>=_)&&X++}if(X>=3){if(n)return!0;var ab=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];f.rotate(r,Z,Q),f.rotate(s,$,Q),h(r,r,O),h(s,s,O),g(y,s,r),f.rotate90cw(ab.normalA,y),f.normalize(ab.normalA,ab.normalA),g(D,q,r);var _=i(ab.normalA,D);f.scale(C,ab.normalA,_),g(ab.contactPointA,q,O),g(ab.contactPointA,ab.contactPointA,C),h(ab.contactPointA,ab.contactPointA,O),g(ab.contactPointA,ab.contactPointA,S.position),g(ab.contactPointB,q,P),h(ab.contactPointB,ab.contactPointB,P),g(ab.contactPointB,ab.contactPointB,T.position),this.contactEquations.push(ab),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(ab))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var Y=f.fromValues(0,0);c.projectConvexOntoAxis=function(a,b,c,d,e){var g,h,j=null,k=null,l=Y;f.rotate(l,d,-c);for(var m=0;mj)&&(j=h),(null===k||k>h)&&(k=h);if(k>j){var n=k;k=j,j=n}var o=i(b,d);f.set(e,k+o,j+o)};var Z=f.fromValues(0,0),$=f.fromValues(0,0),_=f.fromValues(0,0),ab=f.fromValues(0,0),bb=f.fromValues(0,0),cb=f.fromValues(0,0);c.findSeparatingAxis=function(a,b,d,e,h,i,j){var k=null,l=!1,m=!1,n=Z,o=$,p=_,q=ab,s=bb,t=cb;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=d;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?f.set(q,0,1):1===x&&f.set(q,1,0),0!==w&&f.rotate(q,q,w),c.projectConvexOntoAxis(a,b,d,q,s),c.projectConvexOntoAxis(e,h,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(f.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=d;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){f.rotate(o,v.vertices[x],w),f.rotate(p,v.vertices[(x+1)%v.vertices.length],w),g(n,p,o),f.rotate90cw(q,n),f.normalize(q,q),c.projectConvexOntoAxis(a,b,d,q,s),c.projectConvexOntoAxis(e,h,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(f.copy(j,q),k=B,m=l)}}return m};var db=f.fromValues(0,0),eb=f.fromValues(0,0),fb=f.fromValues(0,0);c.getClosestEdge=function(a,b,c,d){var e=db,h=eb,j=fb;f.rotate(e,c,-b),d&&f.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){g(h,a.vertices[(n+1)%l],a.vertices[n%l]),f.rotate90cw(j,h),f.normalize(j,j);var o=i(j,e);(-1===k||o>m)&&(k=n%l,m=o)}return k};var gb=f.create(),hb=f.create(),ib=f.create(),jb=f.create(),kb=f.create(),lb=f.create(),mb=f.create();c.prototype[q.CIRCLE|q.HEIGHTFIELD]=c.prototype.circleHeightfield=function(a,b,c,d,e,i,j,k,l,m){var n=i.data,m=m||b.radius,o=i.elementWidth,p=hb,q=gb,r=kb,s=mb,t=lb,u=ib,v=jb,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;for(var B=!1,A=w;x>A;A++){f.set(u,A*o,n[A]),f.set(v,(A+1)*o,n[A+1]),f.add(u,u,j),f.add(v,v,j),f.sub(t,v,u),f.rotate(t,t,Math.PI/2),f.normalize(t,t),f.scale(q,t,-m),f.add(q,q,c),f.sub(p,q,u);var C=f.dot(p,t);if(q[0]>=u[0]&&q[0]=C){if(l)return!0;B=!0,f.scale(p,t,-C),f.add(r,q,p),f.copy(s,t);var D=this.createContactEquation(e,a,i,b);f.copy(D.normalA,s),f.scale(D.contactPointB,D.normalA,-m),h(D.contactPointB,D.contactPointB,c),g(D.contactPointB,D.contactPointB,a.position),f.copy(D.contactPointA,r),f.sub(D.contactPointA,D.contactPointA,e.position),this.contactEquations.push(D),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(D))}}if(B=!1,m>0)for(var A=w;x>=A;A++)if(f.set(u,A*o,n[A]),f.add(u,u,j),f.sub(p,c,u),f.squaredLength(p)q&&(q=0),r>=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;r>u;u++)k[u]s&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return j?!1:0;for(var v=0,u=q;r>u;u++){f.set(m,u*l,k[u]),f.set(n,(u+1)*l,k[u+1]),f.add(m,m,h),f.add(n,n,h);var w=100;f.set(o,.5*(n[0]+m[0]),.5*(n[1]+m[1]-w)),f.sub(p.vertices[0],n,o),f.sub(p.vertices[1],m,o),f.copy(p.vertices[2],p.vertices[1]),f.copy(p.vertices[3],p.vertices[0]),p.vertices[2][1]-=w,p.vertices[3][1]-=w,v+=this.convexConvex(a,b,c,d,e,p,o,0,j)}return v}},{"../equations/ContactEquation":22,"../equations/Equation":23,"../equations/FrictionEquation":24,"../math/vec2":31,"../objects/Body":32,"../shapes/Circle":38,"../shapes/Convex":39,"../shapes/Rectangle":44,"../shapes/Shape":45,"../utils/TupleDictionary":49,"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],14:[function(a,b){function c(){e.call(this,e.SAP),this.axisList=[],this.axisIndex=0;var a=this;this._addBodyHandler=function(b){a.axisList.push(b.body)},this._removeBodyHandler=function(b){var c=a.axisList.indexOf(b.body);-1!==c&&a.axisList.splice(c,1)}}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../utils/Utils")),e=a("../collision/Broadphase");b.exports=c,c.prototype=new e,c.prototype.setWorld=function(a){this.axisList.length=0,d.appendArray(this.axisList,a.bodies),a.off("addBody",this._addBodyHandler).off("removeBody",this._removeBodyHandler),a.on("addBody",this._addBodyHandler).on("removeBody",this._removeBodyHandler),this.world=a},c.sortAxisList=function(a,b){b=0|b;for(var c=1,d=a.length;d>c;c++){for(var e=a[c],f=c-1;f>=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},c.prototype.getCollisionPairs=function(){var a=this.axisList,b=this.result,d=this.axisIndex;b.length=0;for(var f=a.length;f--;){var g=a[f];g.aabbNeedsUpdate&&g.updateAABB()}c.sortAxisList(a,d);for(var h=0,i=0|a.length;h!==i;h++)for(var j=a[h],k=h+1;i>k;k++){var l=a[k],m=l.aabb.lowerBound[d]<=j.aabb.upperBound[d];if(!m)break;e.canCollide(j,l)&&this.boundingVolumeCheck(j,l)&&b.push(j,l)}return b}},{"../collision/Broadphase":10,"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],15:[function(a,b){function c(a,b,c,e){this.type=c,e=d.defaults(e,{collideConnected:!0,wakeUpBodies:!0}),this.equations=[],this.bodyA=a,this.bodyB=b,this.collideConnected=e.collideConnected,e.wakeUpBodies&&(a&&a.wakeUp(),b&&b.wakeUp())}a("__browserify_process"),a("__browserify_Buffer");b.exports=c;var d=a("../utils/Utils");c.prototype.update=function(){throw new Error("method update() not implmemented in this Constraint subclass!")},c.DISTANCE=1,c.GEAR=2,c.LOCK=3,c.PRISMATIC=4,c.REVOLUTE=5,c.prototype.setStiffness=function(a){for(var b=this.equations,c=0;c!==b.length;c++){var d=b[c];d.stiffness=a,d.needsUpdate=!0}},c.prototype.setRelaxation=function(a){for(var b=this.equations,c=0;c!==b.length;c++){var d=b[c];d.relaxation=a,d.needsUpdate=!0}}},{"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],16:[function(a,b){function c(a,b,c){c=g.defaults(c,{localAnchorA:[0,0],localAnchorB:[0,0]}),d.call(this,a,b,d.DISTANCE,c),this.localAnchorA=f.fromValues(c.localAnchorA[0],c.localAnchorA[1]),this.localAnchorB=f.fromValues(c.localAnchorB[0],c.localAnchorB[1]);var h=this.localAnchorA,i=this.localAnchorB;if(this.distance=0,"number"==typeof c.distance)this.distance=c.distance;else{var j=f.create(),k=f.create(),l=f.create();f.rotate(j,h,a.angle),f.rotate(k,i,b.angle),f.add(l,b.position,k),f.sub(l,l,j),f.sub(l,l,a.position),this.distance=f.length(l)}var m;m="undefined"==typeof c.maxForce?Number.MAX_VALUE:c.maxForce;var n=new e(a,b,-m,m);this.equations=[n],this.maxForce=m;var l=f.create(),o=f.create(),p=f.create(),q=this;n.computeGq=function(){var a=this.bodyA,b=this.bodyB,c=a.position,d=b.position;return f.rotate(o,h,a.angle),f.rotate(p,i,b.angle),f.add(l,d,p),f.sub(l,l,o),f.sub(l,l,c),f.length(l)-q.distance},this.setMaxForce(m),this.upperLimitEnabled=!1,this.upperLimit=1,this.lowerLimitEnabled=!1,this.lowerLimit=0,this.position=0}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Constraint")),e=a("../equations/Equation"),f=a("../math/vec2"),g=a("../utils/Utils");b.exports=c,c.prototype=new d;var h=f.create(),i=f.create(),j=f.create();c.prototype.update=function(){var a=this.equations[0],b=this.bodyA,c=this.bodyB,d=(this.distance,b.position),e=c.position,g=this.equations[0],k=a.G;f.rotate(i,this.localAnchorA,b.angle),f.rotate(j,this.localAnchorB,c.angle),f.add(h,e,j),f.sub(h,h,i),f.sub(h,h,d),this.position=f.length(h);var l=!1;if(this.upperLimitEnabled&&this.position>this.upperLimit&&(g.maxForce=0,g.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)g.scale(e.normalA,i,-1),g.sub(e.contactPointA,j,h.position),g.sub(e.contactPointB,k,o.position),g.scale(n,i,c),g.add(e.contactPointA,e.contactPointA,n),-1===a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!==u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)g.scale(f.normalA,i,1),g.sub(f.contactPointA,j,h.position),g.sub(f.contactPointB,k,o.position),g.scale(n,i,d),g.sub(f.contactPointB,f.contactPointB,n),-1===a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!==u&&a.splice(u,1)}},c.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},c.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},c.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)}},{"../equations/ContactEquation":22,"../equations/Equation":23,"../equations/RotationalLockEquation":25,"../math/vec2":31,"./Constraint":15,__browserify_Buffer:1,__browserify_process:2}],20:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,d.REVOLUTE,c);var n=this.maxForce="undefined"!=typeof c.maxForce?c.maxForce:Number.MAX_VALUE;this.pivotA=h.create(),this.pivotB=h.create(),c.worldPivot?(h.sub(this.pivotA,c.worldPivot,a.position),h.sub(this.pivotB,c.worldPivot,b.position),h.rotate(this.pivotA,this.pivotA,-a.angle),h.rotate(this.pivotB,this.pivotB,-b.angle)):(h.copy(this.pivotA,c.localPivotA),h.copy(this.pivotB,c.localPivotB));var o=this.equations=[new e(a,b,-n,n),new e(a,b,-n,n)],p=o[0],q=o[1],r=this;p.computeGq=function(){return h.rotate(i,r.pivotA,a.angle),h.rotate(j,r.pivotB,b.angle),h.add(m,b.position,j),h.sub(m,m,a.position),h.sub(m,m,i),h.dot(m,k)},q.computeGq=function(){return h.rotate(i,r.pivotA,a.angle),h.rotate(j,r.pivotB,b.angle),h.add(m,b.position,j),h.sub(m,m,a.position),h.sub(m,m,i),h.dot(m,l)},q.minForce=p.minForce=-n,q.maxForce=p.maxForce=n,this.motorEquation=new f(a,b),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new g(a,b),this.lowerLimitEquation=new g(a,b),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Constraint")),e=a("../equations/Equation"),f=a("../equations/RotationalVelocityEquation"),g=a("../equations/RotationalLockEquation"),h=a("../math/vec2");b.exports=c;var i=h.create(),j=h.create(),k=h.fromValues(1,0),l=h.fromValues(0,1),m=h.create();c.prototype=new d,c.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)},c.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],m=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>m)o.angle=m,-1===e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!==r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1===e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!==r&&e.splice(r,1)}h.rotate(i,c,a.angle),h.rotate(j,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-h.crossLength(i,k),f.G[3]=1,f.G[4]=0,f.G[5]=h.crossLength(j,k),g.G[0]=0,g.G[1]=-1,g.G[2]=-h.crossLength(i,l),g.G[3]=0,g.G[4]=1,g.G[5]=h.crossLength(j,l)},c.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},c.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},c.prototype.motorIsEnabled=function(){return!!this.motorEnabled},c.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},c.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":23,"../equations/RotationalLockEquation":25,"../equations/RotationalVelocityEquation":26,"../math/vec2":31,"./Constraint":15,__browserify_Buffer:1,__browserify_process:2}],21:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}{var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Equation"));a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},c.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},c.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":31,"./Equation":23,__browserify_Buffer:1,__browserify_process:2}],22:[function(a,b){function c(a,b){d.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=e.create(),this.penetrationVec=e.create(),this.contactPointB=e.create(),this.normalA=e.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Equation")),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeB=function(a,b,c){var d=this.bodyA,f=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=f.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=e.crossLength(g,l),o=e.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,e.add(k,j,h),e.sub(k,k,i),e.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=e.dot(l,k)+this.offset,p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":31,"./Equation":23,__browserify_Buffer:1,__browserify_process:2}],23:[function(a,b){function c(a,b,d,f){this.minForce="undefined"==typeof d?-Number.MAX_VALUE:d,this.maxForce="undefined"==typeof f?Number.MAX_VALUE:f,this.bodyA=a,this.bodyB=b,this.stiffness=c.DEFAULT_STIFFNESS,this.relaxation=c.DEFAULT_RELAXATION,this.G=new e.ARRAY_TYPE(6);for(var g=0;6>g;g++)this.G[g]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}a("__browserify_process"),a("__browserify_Buffer");b.exports=c;{var d=a("../math/vec2"),e=a("../utils/Utils");a("../objects/Body")}c.prototype.constructor=c,c.DEFAULT_STIFFNESS=1e6,c.DEFAULT_RELAXATION=4,c.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},c.prototype.gmult=function(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e},c.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var f=d.create(),g=d.create();c.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=(b.position,c.position,b.angle),e=c.angle;return this.gmult(a,f,d,g,e)+this.offset},c.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.gmult(a,d,f,e,g)+this.relativeVelocity},c.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.vlambda,e=c.vlambda,f=b.wlambda,g=c.wlambda;return this.gmult(a,d,f,e,g)};var h=d.create(),i=d.create(); -c.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,e=a.angularForce,f=b.force,g=b.angularForce,j=a.invMassSolve,k=b.invMassSolve,l=a.invInertiaSolve,m=b.invInertiaSolve,n=this.G;return d.scale(h,c,j),d.scale(i,f,k),this.gmult(n,h,e*l,i,g*m)},c.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=a.invMassSolve,d=b.invMassSolve,e=a.invInertiaSolve,f=b.invInertiaSolve,g=this.G;return g[0]*g[0]*c+g[1]*g[1]*c+g[2]*g[2]*e+g[3]*g[3]*d+g[4]*g[4]*d+g[5]*g[5]*f};{var j=d.create(),k=d.create(),l=d.create();d.create(),d.create(),d.create()}c.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,e=j,f=k,g=l,h=b.invMassSolve,i=c.invMassSolve,m=b.invInertiaSolve,n=c.invInertiaSolve,o=this.G;f[0]=o[0],f[1]=o[1],g[0]=o[3],g[1]=o[4],d.scale(e,f,h*a),d.add(b.vlambda,b.vlambda,e),b.wlambda+=m*o[2]*a,d.scale(e,g,i*a),d.add(c.vlambda,c.vlambda,e),c.wlambda+=n*o[5]*a},c.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":31,"../objects/Body":32,"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],24:[function(a,b){function c(a,b,c){e.call(this,a,b,-c,c),this.contactPointA=d.create(),this.contactPointB=d.create(),this.t=d.create(),this.contactEquations=[],this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}{var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2")),e=a("./Equation");a("../utils/Utils")}b.exports=c,c.prototype=new e,c.prototype.constructor=c,c.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},c.prototype.getSlipForce=function(){return this.maxForce},c.prototype.computeB=function(a,b,c){var e=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-d.crossLength(e,g),h[3]=g[0],h[4]=g[1],h[5]=d.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":31,"../utils/Utils":50,"./Equation":23,__browserify_Buffer:1,__browserify_process:2}],25:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var e=this.G;e[2]=1,e[5]=-1}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Equation")),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.constructor=c;var f=e.create(),g=e.create(),h=e.fromValues(1,0),i=e.fromValues(0,1);c.prototype.computeGq=function(){return e.rotate(f,h,this.bodyA.angle+this.angle),e.rotate(g,i,this.bodyB.angle),e.dot(f,g)}},{"../math/vec2":31,"./Equation":23,__browserify_Buffer:1,__browserify_process:2}],26:[function(a,b){function c(a,b){d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}{var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Equation"));a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":31,"./Equation":23,__browserify_Buffer:1,__browserify_process:2}],27:[function(a,b){var c=(a("__browserify_process"),a("__browserify_Buffer"),function(){});b.exports=c,c.prototype={constructor:c,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;if(b){if(void 0!==c[a]&&-1!==c[a].indexOf(b))return!0}else if(void 0!==c[a])return!0;return!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{__browserify_Buffer:1,__browserify_process:2}],28:[function(a,b){function c(a,b,f){if(f=f||{},!(a instanceof d&&b instanceof d))throw new Error("First two arguments must be Material instances.");this.id=c.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof f.friction?Number(f.friction):.3,this.restitution="undefined"!=typeof f.restitution?Number(f.restitution):0,this.stiffness="undefined"!=typeof f.stiffness?Number(f.stiffness):e.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof f.relaxation?Number(f.relaxation):e.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof f.frictionStiffness?Number(f.frictionStiffness):e.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof f.frictionRelaxation?Number(f.frictionRelaxation):e.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof f.surfaceVelocity?Number(f.surfaceVelocity):0,this.contactSkinSize=.005}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Material")),e=a("../equations/Equation");b.exports=c,c.idCounter=0},{"../equations/Equation":23,"./Material":29,__browserify_Buffer:1,__browserify_process:2}],29:[function(a,b){function c(a){this.id=a||c.idCounter++}a("__browserify_process"),a("__browserify_Buffer");b.exports=c,c.idCounter=0},{__browserify_Buffer:1,__browserify_process:2}],30:[function(a,b){var c=(a("__browserify_process"),a("__browserify_Buffer"),{});c.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},c.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var d=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(c._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&c._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return d.push(e[0],e[1],e[2]),d},c._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},c._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=c},{__browserify_Buffer:1,__browserify_process:2}],31:[function(a,b){var c=(a("__browserify_process"),a("__browserify_Buffer"),b.exports={}),d=a("../utils/Utils");c.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},c.crossVZ=function(a,b,d){return c.rotate(a,b,-Math.PI/2),c.scale(a,a,d),a},c.crossZV=function(a,b,d){return c.rotate(a,d,Math.PI/2),c.scale(a,a,b),a},c.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},c.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},c.toLocalFrame=function(a,b,d,e){c.copy(a,b),c.sub(a,a,d),c.rotate(a,a,-e)},c.toGlobalFrame=function(a,b,d,e){c.copy(a,b),c.rotate(a,a,e),c.add(a,a,d)},c.centroid=function(a,b,d,e){return c.add(a,b,d),c.add(a,a,e),c.scale(a,a,1/3),a},c.create=function(){var a=new d.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},c.clone=function(a){var b=new d.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},c.fromValues=function(a,b){var c=new d.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},c.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},c.set=function(a,b,c){return a[0]=b,a[1]=c,a},c.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},c.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},c.sub=c.subtract,c.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},c.mul=c.multiply,c.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},c.div=c.divide,c.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},c.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},c.dist=c.distance,c.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},c.sqrDist=c.squaredDistance,c.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},c.len=c.length,c.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},c.sqrLen=c.squaredLength,c.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},c.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},c.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},c.str=function(a){return"vec2("+a[0]+", "+a[1]+")"}},{"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],32:[function(a,b){function c(a){a=a||{},h.call(this),this.id=++c._idCounter,this.world=null,this.shapes=[],this.shapeOffsets=[],this.shapeAngles=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.position=d.fromValues(0,0),a.position&&d.copy(this.position,a.position),this.interpolatedPosition=d.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=d.fromValues(0,0),this.previousAngle=0,this.velocity=d.fromValues(0,0),a.velocity&&d.copy(this.velocity,a.velocity),this.vlambda=d.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=d.create(),a.force&&d.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=c.STATIC,this.type="undefined"!=typeof a.type?a.type:a.mass?c.DYNAMIC:c.STATIC,this.boundingRadius=0,this.aabb=new g,this.aabbNeedsUpdate=!0,this.allowSleep=!0,this.wantsToSleep=!1,this.sleepState=c.AWAKE,this.sleepSpeedLimit=.2,this.sleepTimeLimit=1,this.gravityScale=1,this.timeLastSleepy=0,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2")),e=a("poly-decomp"),f=a("../shapes/Convex"),g=a("../collision/AABB"),h=a("../events/EventEmitter");b.exports=c,c.prototype=new h,c._idCounter=0,c.prototype.updateSolveMassProperties=function(){this.sleepState===c.SLEEPING||this.type===c.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},c.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},c.prototype.getArea=function(){for(var a=0,b=0;be&&(e=h+i)}this.boundingRadius=e},c.prototype.addShape=function(a,b,c){c=c||0,b=b?d.fromValues(b[0],b[1]):d.fromValues(0,0),this.shapes.push(a),this.shapeOffsets.push(b),this.shapeAngles.push(c),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},c.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.shapeOffsets.splice(b,1),this.shapeAngles.splice(b,1),this.aabbNeedsUpdate=!0,!0):!1},c.prototype.updateMassProperties=function(){if(this.type===c.STATIC||this.type===c.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,e=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=d.squaredLength(this.shapeOffsets[g]),j=h.computeMomentOfInertia(e);f+=j+e*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass}};var k=d.create();c.prototype.applyForce=function(a,b){var c=k;d.sub(c,b,this.position),d.add(this.force,this.force,a);var e=d.crossLength(c,a);this.angularForce+=e},c.prototype.toLocalFrame=function(a,b){d.toLocalFrame(a,b,this.position,this.angle)},c.prototype.toWorldFrame=function(a,b){d.toGlobalFrame(a,b,this.position,this.angle)},c.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var g=new e.Polygon;if(g.vertices=a,g.makeCCW(),"number"==typeof b.removeCollinearPoints&&g.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!g.isSimple())return!1;this.concavePath=g.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=c.AWAKE):(this.idleTime+=e,this.sleepState=c.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},c.prototype.getVelocityFromPosition=function(a,b){return a=a||d.create(),d.sub(a,this.position,this.previousPosition),d.scale(a,a,1/b),a},c.prototype.getAngularVelocityFromPosition=function(a){return(this.angle-this.previousAngle)/a},c.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)},c.sleepyEvent={type:"sleepy"},c.sleepEvent={type:"sleep"},c.wakeUpEvent={type:"wakeup"},c.DYNAMIC=1,c.STATIC=2,c.KINEMATIC=4,c.AWAKE=0,c.SLEEPY=1,c.SLEEPING=2},{"../collision/AABB":9,"../events/EventEmitter":27,"../math/vec2":31,"../shapes/Convex":39,__browserify_Buffer:1,__browserify_process:2,"poly-decomp":7}],33:[function(a,b){function c(a,b,c){c=c||{},e.call(this,a,b,c),this.localAnchorA=d.fromValues(0,0),this.localAnchorB=d.fromValues(0,0),c.localAnchorA&&d.copy(this.localAnchorA,c.localAnchorA),c.localAnchorB&&d.copy(this.localAnchorB,c.localAnchorB),c.worldAnchorA&&this.setWorldAnchorA(c.worldAnchorA),c.worldAnchorB&&this.setWorldAnchorB(c.worldAnchorB);var f=d.create(),g=d.create();this.getWorldAnchorA(f),this.getWorldAnchorB(g);var h=d.distance(f,g);this.restLength="number"==typeof c.restLength?c.restLength:h}{var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2")),e=a("./Spring");a("../utils/Utils")}b.exports=c,c.prototype=new e,c.prototype.setWorldAnchorA=function(a){this.bodyA.toLocalFrame(this.localAnchorA,a)},c.prototype.setWorldAnchorB=function(a){this.bodyB.toLocalFrame(this.localAnchorB,a)},c.prototype.getWorldAnchorA=function(a){this.bodyA.toWorldFrame(a,this.localAnchorA)},c.prototype.getWorldAnchorB=function(a){this.bodyB.toWorldFrame(a,this.localAnchorB)};var f=d.create(),g=d.create(),h=d.create(),i=d.create(),j=d.create(),k=d.create(),l=d.create(),m=d.create(),n=d.create();c.prototype.applyForce=function(){var a=this.stiffness,b=this.damping,c=this.restLength,e=this.bodyA,o=this.bodyB,p=f,q=g,r=h,s=i,t=n,u=j,v=k,w=l,x=m;this.getWorldAnchorA(u),this.getWorldAnchorB(v),d.sub(w,u,e.position),d.sub(x,v,o.position),d.sub(p,v,u);var y=d.len(p);d.normalize(q,p),d.sub(r,o.velocity,e.velocity),d.crossZV(t,o.angularVelocity,x),d.add(r,r,t),d.crossZV(t,e.angularVelocity,w),d.sub(r,r,t),d.scale(s,q,-a*(y-c)-b*d.dot(r,q)),d.sub(e.force,e.force,s),d.add(o.force,o.force,s);var z=d.crossLength(w,s),A=d.crossLength(x,s);e.angularForce-=z,o.angularForce+=A}},{"../math/vec2":31,"../utils/Utils":50,"./Spring":35,__browserify_Buffer:1,__browserify_process:2}],34:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,c),this.restAngle="number"==typeof c.restAngle?c.restAngle:b.angle-a.angle}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2"),a("./Spring"));b.exports=c,c.prototype=new d,c.prototype.applyForce=function(){var a=this.stiffness,b=this.damping,c=this.restAngle,d=this.bodyA,e=this.bodyB,f=e.angle-d.angle,g=e.angularVelocity-d.angularVelocity,h=-a*(f-c)-b*g*0;d.angularForce-=h,e.angularForce+=h}},{"../math/vec2":31,"./Spring":35,__browserify_Buffer:1,__browserify_process:2}],35:[function(a,b){function c(a,b,c){c=d.defaults(c,{stiffness:100,damping:1}),this.stiffness=c.stiffness,this.damping=c.damping,this.bodyA=a,this.bodyB=b}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2"),a("../utils/Utils"));b.exports=c,c.prototype.applyForce=function(){}},{"../math/vec2":31,"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],36:[function(a,b){a("__browserify_process"),a("__browserify_Buffer");b.exports={AABB:a("./collision/AABB"),AngleLockEquation:a("./equations/AngleLockEquation"),Body:a("./objects/Body"),Broadphase:a("./collision/Broadphase"),Capsule:a("./shapes/Capsule"),Circle:a("./shapes/Circle"),Constraint:a("./constraints/Constraint"),ContactEquation:a("./equations/ContactEquation"),ContactMaterial:a("./material/ContactMaterial"),Convex:a("./shapes/Convex"),DistanceConstraint:a("./constraints/DistanceConstraint"),Equation:a("./equations/Equation"),EventEmitter:a("./events/EventEmitter"),FrictionEquation:a("./equations/FrictionEquation"),GearConstraint:a("./constraints/GearConstraint"),GridBroadphase:a("./collision/GridBroadphase"),GSSolver:a("./solver/GSSolver"),Heightfield:a("./shapes/Heightfield"),Line:a("./shapes/Line"),LockConstraint:a("./constraints/LockConstraint"),Material:a("./material/Material"),Narrowphase:a("./collision/Narrowphase"),NaiveBroadphase:a("./collision/NaiveBroadphase"),Particle:a("./shapes/Particle"),Plane:a("./shapes/Plane"),RevoluteConstraint:a("./constraints/RevoluteConstraint"),PrismaticConstraint:a("./constraints/PrismaticConstraint"),Rectangle:a("./shapes/Rectangle"),RotationalVelocityEquation:a("./equations/RotationalVelocityEquation"),SAPBroadphase:a("./collision/SAPBroadphase"),Shape:a("./shapes/Shape"),Solver:a("./solver/Solver"),Spring:a("./objects/Spring"),LinearSpring:a("./objects/LinearSpring"),RotationalSpring:a("./objects/RotationalSpring"),Utils:a("./utils/Utils"),World:a("./world/World"),vec2:a("./math/vec2"),version:a("../package.json").version}},{"../package.json":8,"./collision/AABB":9,"./collision/Broadphase":10,"./collision/GridBroadphase":11,"./collision/NaiveBroadphase":12,"./collision/Narrowphase":13,"./collision/SAPBroadphase":14,"./constraints/Constraint":15,"./constraints/DistanceConstraint":16,"./constraints/GearConstraint":17,"./constraints/LockConstraint":18,"./constraints/PrismaticConstraint":19,"./constraints/RevoluteConstraint":20,"./equations/AngleLockEquation":21,"./equations/ContactEquation":22,"./equations/Equation":23,"./equations/FrictionEquation":24,"./equations/RotationalVelocityEquation":26,"./events/EventEmitter":27,"./material/ContactMaterial":28,"./material/Material":29,"./math/vec2":31,"./objects/Body":32,"./objects/LinearSpring":33,"./objects/RotationalSpring":34,"./objects/Spring":35,"./shapes/Capsule":37,"./shapes/Circle":38,"./shapes/Convex":39,"./shapes/Heightfield":40,"./shapes/Line":41,"./shapes/Particle":42,"./shapes/Plane":43,"./shapes/Rectangle":44,"./shapes/Shape":45,"./solver/GSSolver":46,"./solver/Solver":47,"./utils/Utils":50,"./world/World":54,__browserify_Buffer:1,__browserify_process:2}],37:[function(a,b){function c(a,b){this.length=a||1,this.radius=b||1,d.call(this,d.CAPSULE)}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Shape")),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.computeMomentOfInertia=function(a){var b=this.radius,c=this.length+b,d=2*b;return a*(d*d+c*c)/12},c.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius+this.length/2},c.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius+2*this.radius*this.length};var f=e.create();c.prototype.computeAABB=function(a,b,c){var d=this.radius;e.set(f,this.length/2,0),0!==c&&e.rotate(f,f,c),e.set(a.upperBound,Math.max(f[0]+d,-f[0]+d),Math.max(f[1]+d,-f[1]+d)),e.set(a.lowerBound,Math.min(f[0]-d,-f[0]-d),Math.min(f[1]-d,-f[1]-d)),e.add(a.lowerBound,a.lowerBound,b),e.add(a.upperBound,a.upperBound,b)}},{"../math/vec2":31,"./Shape":45,__browserify_Buffer:1,__browserify_process:2}],38:[function(a,b){function c(a){this.radius=a||1,d.call(this,d.CIRCLE)}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Shape")),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},c.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},c.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},c.prototype.computeAABB=function(a,b){var c=this.radius;e.set(a.upperBound,c,c),e.set(a.lowerBound,-c,-c),b&&(e.add(a.lowerBound,a.lowerBound,b),e.add(a.upperBound,a.upperBound,b))}},{"../math/vec2":31,"./Shape":45,__browserify_Buffer:1,__browserify_process:2}],39:[function(a,b){function c(a,b){this.vertices=[],this.axes=[];for(var c=0;cf)&&(f=d),(null===h||h>d)&&(h=d);if(h>f){var j=h;h=f,f=j}e.set(b,h,f)},c.prototype.projectOntoWorldAxis=function(a,b,c,d){var f=h;this.projectOntoLocalAxis(a,d),0!==c?e.rotate(f,a,c):f=a;var g=e.dot(b,f);e.set(d,d[0]+g,d[1]+g)},c.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bg;f=g,g++){var h=this.vertices[f],i=this.vertices[g],j=Math.abs(e.crossLength(h,i)),k=e.dot(i,i)+e.dot(i,h)+e.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},c.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=e.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},c.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},c.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,d=0;d!==a.length;d++){var e=a[d],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=c.triangleArea(f,g,h);this.area+=i}},c.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)}},{"../math/polyk":30,"../math/vec2":31,"./Shape":45,__browserify_Buffer:1,__browserify_process:2,"poly-decomp":7}],40:[function(a,b){function c(a,b){if(b=e.defaults(b,{maxValue:null,minValue:null,elementWidth:.1}),null===b.minValue||null===b.maxValue){b.maxValue=a[0],b.minValue=a[0];for(var c=0;c!==a.length;c++){var f=a[c];f>b.maxValue&&(b.maxValue=f),f=w*w)break}for(c.updateMultipliers(k,q,1/a),x=0;x!==l;x++){var z=k[x];if(z instanceof h){for(var A=0,B=0;B!==z.contactEquations.length;B++)A+=z.contactEquations[B].multiplier; -A*=z.frictionCoefficient/z.contactEquations.length,z.maxForce=A,z.minForce=-A}}}for(f=0;f!==i;f++){for(w=0,x=0;x!==l;x++){v=k[x];var y=c.iterateEquation(x,v,v.epsilon,u,t,q,p,a,f);w+=Math.abs(y)}if(this.usedIterations++,m>=w*w)break}for(r=0;r!==o;r++)n[r].addConstraintVelocity();c.updateMultipliers(k,q,1/a)}},c.updateMultipliers=function(a,b,c){for(var d=a.length;d--;)a[d].multiplier=b[d]*c},c.iterateEquation=function(a,b,c,d,e,f,g,h){var i=d[a],j=e[a],k=f[a],l=b.computeGWlambda(),m=b.maxForce,n=b.minForce;g&&(i=0);var o=j*(i-l-c*k),p=k+o;return n*h>p?o=n*h-k:p>m*h&&(o=m*h-k),f[a]+=o,b.addToWlambda(o),o}},{"../equations/FrictionEquation":24,"../math/vec2":31,"../utils/Utils":50,"./Solver":47,__browserify_Buffer:1,__browserify_process:2}],47:[function(a,b){function c(a,b){a=a||{},d.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../utils/Utils"),a("../events/EventEmitter"));b.exports=c,c.prototype=new d,c.prototype.solve=function(){throw new Error("Solver.solve should be implemented by subclasses!")};var e={bodies:[]};c.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),e.bodies.length=0,b.getBodies(e.bodies),e.bodies.length&&this.solve(a,e))},c.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},c.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},c.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},c.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},c.prototype.removeAllEquations=function(){this.equations.length=0},c.GS=1,c.ISLAND=2},{"../events/EventEmitter":27,"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],48:[function(a,b){function c(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=[],this.tmpDict=new e,this.tmpArray1=[]}function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}{var e=(a("__browserify_process"),a("__browserify_Buffer"),a("./TupleDictionary"));a("./Utils")}b.exports=c,c.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d),f=b.getByKey(d);e&&!f&&this.recordPool.push(e)}a.reset(),a.copy(b),b.reset()},c.prototype.setOverlapping=function(a,b,c,e){var f=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!f.get(b.id,e.id)){var g;this.recordPool.length?(g=this.recordPool.pop(),g.set(a,b,c,e)):g=new d(a,b,c,e),f.set(b.id,e.id,g)}},c.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},c.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},c.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},c.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},c.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},c.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},c.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},c.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b},d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{"./TupleDictionary":49,"./Utils":50,__browserify_Buffer:1,__browserify_process:2}],49:[function(a,b){function c(){this.data={},this.keys=[]}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Utils"));b.exports=c,c.prototype.getKey=function(a,b){return a=0|a,b=0|b,(0|a)===(0|b)?-1:0|((0|a)>(0|b)?a<<16|65535&b:b<<16|65535&a)},c.prototype.getByKey=function(a){return a=0|a,this.data[a]},c.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},c.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},c.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},c.prototype.copy=function(a){this.reset(),d.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":50,__browserify_Buffer:1,__browserify_process:2}],50:[function(a,b){function c(){}a("__browserify_process"),a("__browserify_Buffer");b.exports=c,c.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},c.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},c.ARRAY_TYPE=window.Float32Array||Array,c.extend=function(a,b){for(var c in b)a[c]=b[c]},c.defaults=function(a,b){a=a||{};for(var c in b)c in a||(a[c]=b[c]);return a}},{__browserify_Buffer:1,__browserify_process:2}],51:[function(a,b){function c(){this.equations=[],this.bodies=[]}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../objects/Body"));b.exports=c,c.prototype.reset=function(){this.equations.length=this.bodies.length=0};var e=[];c.prototype.getBodies=function(a){var b=a||[],c=this.equations;e.length=0;for(var d=0;d!==c.length;d++){var f=c[d];-1===e.indexOf(f.bodyA.id)&&(b.push(f.bodyA),e.push(f.bodyA.id)),-1===e.indexOf(f.bodyB.id)&&(b.push(f.bodyB),e.push(f.bodyB.id))}return b},c.prototype.wantsToSleep=function(){for(var a=0;a1e3*a));g++);this.time+=b;for(var h=this.time%a,i=h/a,j=0;j!==this.bodies.length;j++){var k=this.bodies[j];k.type!==l.STATIC&&k.sleepState!==l.SLEEPING?(e.sub(x,k.position,k.previousPosition),e.scale(x,x,i),e.add(k.interpolatedPosition,k.position,x),k.interpolatedAngle=k.angle+(k.angle-k.previousAngle)*i):(e.copy(k.interpolatedPosition,k.position),k.interpolatedAngle=k.angle)}}};var y=[];c.prototype.internalStep=function(a){this.stepping=!0;var b,d,f=this,g=this.doProfiling,h=this.springs.length,i=this.springs,j=this.bodies,k=this.gravity,m=this.solver,n=this.bodies.length,o=this.broadphase,p=this.narrowphase,r=this.constraints,s=u,t=(e.scale,e.add),v=(e.rotate,this.islandManager);if(this.overlapKeeper.tick(),this.lastTimeStep=a,g&&(b=performance.now()),this.useWorldGravityAsFrictionGravity){var w=e.length(this.gravity);0===w&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=w)}if(this.applyGravity)for(var x=0;x!==n;x++){var z=j[x],A=z.force;z.type===l.DYNAMIC&&z.sleepState!==l.SLEEPING&&(e.scale(s,k,z.mass*z.gravityScale),t(A,A,s))}if(this.applySpringForces)for(var x=0;x!==h;x++){var B=i[x];B.applyForce()}if(this.applyDamping)for(var x=0;x!==n;x++){var z=j[x];z.type===l.DYNAMIC&&z.applyDamping(a)}for(var C=o.getCollisionPairs(this),D=this.disabledBodyCollisionPairs,x=D.length-2;x>=0;x-=2)for(var E=C.length-2;E>=0;E-=2)(D[x]===C[E]&&D[x+1]===C[E+1]||D[x+1]===C[E]&&D[x]===C[E+1])&&C.splice(E,2);var F=r.length;for(x=0;x!==F;x++){var G=r[x];if(!G.collideConnected)for(var E=C.length-2;E>=0;E-=2)(G.bodyA===C[E]&&G.bodyB===C[E+1]||G.bodyB===C[E]&&G.bodyA===C[E+1])&&C.splice(E,2)}this.postBroadphaseEvent.pairs=C,this.emit(this.postBroadphaseEvent),p.reset(this);for(var x=0,H=C.length;x!==H;x+=2)for(var I=C[x],J=C[x+1],K=0,L=I.shapes.length;K!==L;K++)for(var M=I.shapes[K],N=I.shapeOffsets[K],O=I.shapeAngles[K],P=0,Q=J.shapes.length;P!==Q;P++){var R=J.shapes[P],S=J.shapeOffsets[P],T=J.shapeAngles[P],U=this.defaultContactMaterial;if(M.material&&R.material){var V=this.getContactMaterial(M.material,R.material);V&&(U=V)}this.runNarrowphase(p,I,M,N,O,J,R,S,T,U,this.frictionGravity)}for(var x=0;x!==n;x++){var W=j[x];W._wakeUpAfterNarrowphase&&(W.wakeUp(),W._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var X=this.endContactEvent,P=y.length;P--;){var Y=y[P];X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,this.emit(X)}}var Z=this.preSolveEvent;Z.contactEquations=p.contactEquations,Z.frictionEquations=p.frictionEquations,this.emit(Z);var F=r.length;for(x=0;x!==F;x++)r[x].update();if(p.contactEquations.length||p.frictionEquations.length||r.length)if(this.islandSplit){for(v.equations.length=0,q.appendArray(v.equations,p.contactEquations),q.appendArray(v.equations,p.frictionEquations),x=0;x!==F;x++)q.appendArray(v.equations,r[x].equations);v.split(this);for(var x=0;x!==v.islands.length;x++){var $=v.islands[x];$.equations.length&&m.solveIsland(a,$)}}else{for(m.addEquations(p.contactEquations),m.addEquations(p.frictionEquations),x=0;x!==F;x++)m.addEquations(r[x].equations);this.solveConstraints&&m.solve(a,this),m.removeAllEquations()}for(var x=0;x!==n;x++){var W=j[x];W.sleepState!==l.SLEEPING&&W.type!==l.STATIC&&c.integrateBody(W,a)}for(var x=0;x!==n;x++)j[x].setZeroForce();if(g&&(d=performance.now(),f.lastStepTime=d-b),this.emitImpactEvent&&this.has("impact"))for(var _=this.impactEvent,x=0;x!==p.contactEquations.length;x++){var ab=p.contactEquations[x];ab.firstImpact&&(_.bodyA=ab.bodyA,_.bodyB=ab.bodyB,_.shapeA=ab.shapeA,_.shapeB=ab.shapeB,_.contactEquation=ab,this.emit(_))}if(this.sleepMode===c.BODY_SLEEPING)for(x=0;x!==n;x++)j[x].sleepTick(this.time,!1,a);else if(this.sleepMode===c.ISLAND_SLEEPING&&this.islandSplit){for(x=0;x!==n;x++)j[x].sleepTick(this.time,!0,a);for(var x=0;x0,a.frictionCoefficient=k.friction;var p;p=b.type===l.STATIC||b.type===l.KINEMATIC?g.mass:g.type===l.STATIC||g.type===l.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*m*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===l.DYNAMIC&&g.sleepState===l.SLEEPING&&b.sleepState===l.AWAKE&&b.type!==l.STATIC){var z=e.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var d=this.bodies,b=d.length-1;b>=0;b--)this.removeBody(d[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);c.apply(this)},c.prototype.clone=function(){var a=new c;return a.fromJSON(this.toJSON()),a};var B=e.create(),C=e.fromValues(0,0),D=e.fromValues(0,0);c.prototype.hitTest=function(a,b,c){c=c||0;var d=new l({position:a}),k=new j,m=a,n=0,o=B,p=C,q=D;d.addShape(k);for(var r=this.narrowphase,s=[],t=0,u=b.length;t!==u;t++)for(var v=b[t],w=0,x=v.shapes.length;w!==x;w++){var y=v.shapes[w],z=v.shapeOffsets[w]||p,A=v.shapeAngles[w]||0;e.rotate(o,z,v.angle),e.add(o,o,v.position);var E=A+v.angle;(y instanceof f&&r.circleParticle(v,y,o,E,d,k,m,n,!0)||y instanceof g&&r.particleConvex(d,k,m,n,v,y,o,E,!0)||y instanceof h&&r.particlePlane(d,k,m,n,v,y,o,E,!0)||y instanceof i&&r.particleCapsule(d,k,m,n,v,y,o,E,!0)||y instanceof j&&e.squaredLength(e.sub(q,o,a))0&&this.enable(a[d],b,!0));else a instanceof Phaser.Group?this.enable(a.children,b,c):(this.enableBody(a,b),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){var b=a.pairs.length;if(this.postBroadphaseCallback&&b>0)for(;b-=2;)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.shapeB,a.shapeA,a.contactEquations)},endContactHandler:function(a){this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.shapeB,a.shapeA)},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){var b=this.everythingCollisionGroup.mask;"undefined"==typeof a&&(b=this.boundsCollisionGroup.mask),this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b)},setBounds:function(a,b,c,d,e,f,g,h,i){"undefined"==typeof e&&(e=!0),"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=!0),"undefined"==typeof h&&(h=!0),"undefined"==typeof i&&(i=!0),this.walls.left&&this.world.removeBody(this.walls.left),this.walls.right&&this.world.removeBody(this.walls.right),this.walls.top&&this.world.removeBody(this.walls.top),this.walls.bottom&&this.world.removeBody(this.walls.bottom),e&&(this.walls.left=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:1.5707963267948966}),this.walls.left.addShape(new p2.Plane),i&&(this.walls.left.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.left)),f&&(this.walls.right=new p2.Body({mass:0,position:[this.pxmi(a+c),this.pxmi(b)],angle:-1.5707963267948966}),this.walls.right.addShape(new p2.Plane),i&&(this.walls.right.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.right)),g&&(this.walls.top=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:-3.141592653589793}),this.walls.top.addShape(new p2.Plane),i&&(this.walls.top.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.top)),h&&(this.walls.bottom=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b+d)]}),this.walls.bottom.addShape(new p2.Plane),i&&(this.walls.bottom.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.bottom))},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||this.world.step(this.useElapsedTime?this.game.time.physicsElapsed:this.frameRate)},clear:function(){this.world.clear(),this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this._collisionGroupID=2,this.boundsCollidesWith=[]},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return this.world.addSpring(a instanceof Phaser.Physics.P2.Spring||a instanceof Phaser.Physics.P2.RotationalSpring?a.data:a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return this.world.removeSpring(a instanceof Phaser.Physics.P2.Spring||a instanceof Phaser.Physics.P2.RotationalSpring?a.data:a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,c,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.DistanceConstraint(this,a,b,c,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,c,d){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.GearConstraint(this,a,b,c,d)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,c,d,e,f){return a=this.getBody(a),c=this.getBody(c),a&&c?this.addConstraint(new Phaser.Physics.P2.RevoluteConstraint(this,a,b,c,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,c,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.LockConstraint(this,a,b,c,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,c,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.PrismaticConstraint(this,a,b,c,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given") -},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var c=new Phaser.Physics.P2.Material(a);return this.materials.push(c),"undefined"!=typeof b&&b.setMaterial(c),c},createContactMaterial:function(a,b,c){"undefined"==typeof a&&(a=this.createMaterial()),"undefined"==typeof b&&(b=this.createMaterial());var d=new Phaser.Physics.P2.ContactMaterial(a,b,c);return this.addContactMaterial(d)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof Phaser.Physics.P2.Body?a.data:a.body&&a.body.type===Phaser.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b].parent);return a},hitTest:function(a,b,c,d){"undefined"==typeof b&&(b=this.world.bodies),"undefined"==typeof c&&(c=5),"undefined"==typeof d&&(d=!1);for(var e=[this.pxmi(a.x),this.pxmi(a.y)],f=[],g=b.length;g--;)b[g]instanceof Phaser.Physics.P2.Body&&(!d||b[g].data.type!==p2.Body.STATIC)?f.push(b[g].data):b[g]instanceof p2.Body&&b[g].parent&&(!d||b[g].type!==p2.Body.STATIC)?f.push(b[g]):b[g]instanceof Phaser.Sprite&&b[g].hasOwnProperty("body")&&(!d||b[g].body.data.type!==p2.Body.STATIC)&&f.push(b[g].body.data);return this.world.hitTest(e,f,c)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var c=new Phaser.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(c),a&&this.setCollisionGroup(a,c),c},setCollisionGroup:function(a,b){if(a instanceof Phaser.Group)for(var c=0;ce;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=0},convertTilemap:function(a,b,c,d){b=a.getLayer(b),"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.index>-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(Phaser.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(Phaser.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),Phaser.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},Phaser.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},Phaser.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},Phaser.Physics.P2.PointProxy.prototype.constructor=Phaser.Physics.P2.PointProxy,Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),Phaser.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},Phaser.Physics.P2.InversePointProxy.prototype.constructor=Phaser.Physics.P2.InversePointProxy,Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),Phaser.Physics.P2.Body=function(a,b,c,d,e){b=b||null,c=c||0,d=d||0,"undefined"==typeof e&&(e=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=Phaser.Physics.P2JS,this.offset=new Phaser.Point,this.data=new p2.Body({position:[this.world.pxmi(c),this.world.pxmi(d)],mass:e}),this.data.parent=this,this.velocity=new Phaser.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new Phaser.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new Phaser.Point,this.onBeginContact=new Phaser.Signal,this.onEndContact=new Phaser.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},Phaser.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbacksContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if("undefined"==typeof b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if("undefined"==typeof c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass()},applyDamping:function(a){this.data.applyDamping(a)},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0]),this.sprite.y=this.world.mpxi(this.data.position[1]),this.fixedRotation||(this.sprite.rotation=this.data.angle)},reset:function(a,b,c,d){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;ad;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}else b instanceof p2.Plane?this.drawPlane(j,i[0]*this.ppu,-i[1]*this.ppu,c,f,5*g,10*g,10*g,100*this.ppu,a):b instanceof p2.Line?this.drawLine(j,b.length*this.ppu,f,g):b instanceof p2.Rectangle&&this.drawRectangle(j,i[0]*this.ppu,-i[1]*this.ppu,a,b.width*this.ppu,b.height*this.ppu,f,c,g);d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){"undefined"==typeof i&&(i=1),"undefined"==typeof g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){"undefined"==typeof g&&(g=1),"undefined"==typeof f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){"undefined"==typeof d&&(d=1),"undefined"==typeof c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if("undefined"==typeof f&&(f=1),"undefined"==typeof d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for("undefined"==typeof e&&(e=1),"undefined"==typeof c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;"undefined"==typeof f&&(f=1),"undefined"==typeof d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.len?b:b+"0"}}),Phaser.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=100),"undefined"==typeof f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},Phaser.Physics.P2.Spring.prototype.constructor=Phaser.Physics.P2.Spring,Phaser.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,"undefined"==typeof d&&(d=null),"undefined"==typeof e&&(e=100),"undefined"==typeof f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},Phaser.Physics.P2.Spring.prototype.constructor=Phaser.Physics.P2.Spring,Phaser.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},Phaser.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),Phaser.Physics.P2.Material.prototype.constructor=Phaser.Physics.P2.Material,Phaser.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},Phaser.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),Phaser.Physics.P2.ContactMaterial.prototype.constructor=Phaser.Physics.P2.ContactMaterial,Phaser.Physics.P2.CollisionGroup=function(a){this.mask=a},Phaser.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){"undefined"==typeof d&&(d=100),"undefined"==typeof e&&(e=[0,0]),"undefined"==typeof f&&(f=[0,0]),"undefined"==typeof g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},Phaser.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),Phaser.Physics.P2.DistanceConstraint.prototype.constructor=Phaser.Physics.P2.DistanceConstraint,Phaser.Physics.P2.GearConstraint=function(a,b,c,d,e){"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},Phaser.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),Phaser.Physics.P2.GearConstraint.prototype.constructor=Phaser.Physics.P2.GearConstraint,Phaser.Physics.P2.LockConstraint=function(a,b,c,d,e,f){"undefined"==typeof d&&(d=[0,0]),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},Phaser.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),Phaser.Physics.P2.LockConstraint.prototype.constructor=Phaser.Physics.P2.LockConstraint,Phaser.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=[0,0]),"undefined"==typeof f&&(f=[0,0]),"undefined"==typeof g&&(g=[0,0]),"undefined"==typeof h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},Phaser.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),Phaser.Physics.P2.PrismaticConstraint.prototype.constructor=Phaser.Physics.P2.PrismaticConstraint,Phaser.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){"undefined"==typeof f&&(f=Number.MAX_VALUE),"undefined"==typeof g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},Phaser.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),Phaser.Physics.P2.RevoluteConstraint.prototype.constructor=Phaser.Physics.P2.RevoluteConstraint; - +return j}}),Object.defineProperty(b.Rope.prototype,"destroyPhase",{get:function(){return!!this._cache[8]}}),b.Text=function(a,c,d,e,f){c=c||0,d=d||0,e=e||" ",f=f||{},e=0===e.length?" ":e.toString(),this.game=a,this.exists=!0,this.name="",this.type=b.TEXT,this.z=0,this.world=new b.Point(c,d),this._text=e,this._font="",this._fontSize=32,this._fontWeight="normal",this._lineSpacing=0,this._charCount=0,this.events=new b.Events(this),this.input=null,this.cameraOffset=new b.Point,this.colors=[],this.setStyle(f),PIXI.Text.call(this,e,this.style),this.position.set(c,d),this._cache=[0,0,0,0,1,0,1,0,0]," "!==e&&this.updateText()},b.Text.prototype=Object.create(PIXI.Text.prototype),b.Text.prototype.constructor=b.Text,b.Text.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this.getBounds())),this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Text.prototype.update=function(){},b.Text.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Text.prototype.destroy=function(a){if(null!==this.game&&!this.destroyPhase){"undefined"==typeof a&&(a=!0),this._cache[8]=1,this.events&&this.events.onDestroy.dispatch(this),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.texture.destroy(!0),this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null);var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null,this._cache[8]=0}},b.Text.prototype.setShadow=function(a,b,c,d){this.style.shadowOffsetX=a||0,this.style.shadowOffsetY=b||0,this.style.shadowColor=c||"rgba(0,0,0,0)",this.style.shadowBlur=d||0,this.dirty=!0},b.Text.prototype.setStyle=function(a){a=a||{},a.font=a.font||"bold 20pt Arial",a.fill=a.fill||"black",a.align=a.align||"left",a.stroke=a.stroke||"black",a.strokeThickness=a.strokeThickness||0,a.wordWrap=a.wordWrap||!1,a.wordWrapWidth=a.wordWrapWidth||100,a.shadowOffsetX=a.shadowOffsetX||0,a.shadowOffsetY=a.shadowOffsetY||0,a.shadowColor=a.shadowColor||"rgba(0,0,0,0)",a.shadowBlur=a.shadowBlur||0,this.style=a,this.dirty=!0},b.Text.prototype.updateText=function(){this.texture.baseTexture.resolution=this.resolution,this.context.font=this.style.font;var a=this.text;this.style.wordWrap&&(a=this.wordWrap(this.text));for(var b=a.split(/(?:\r\n|\r|\n)/),c=[],d=0,e=this.determineFontProperties(this.style.font),f=0;f0?this.updateLine(b[f],k,l):(this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(b[f],k,l),this.style.fill&&this.context.fillText(b[f],k,l));this.updateTexture()},b.Text.prototype.updateLine=function(a,b,c){for(var d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d0&&this.drawPolygon(d)}else this.drawPolygon(d)},b.Graphics.prototype.drawTriangles=function(a,c,d){"undefined"==typeof d&&(d=!1);var e,f=new b.Point,g=new b.Point,h=new b.Point,i=[];if(c)if(a[0]instanceof b.Point)for(e=0;e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.textureBuffer.clear(),this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},b.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d,PIXI.TextureCache[e[f].uuid].frame.x=e[f].x,PIXI.TextureCache[e[f].uuid].frame.y=e[f].y;this.buildRetroFontText()}},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(b.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c){a=a||256,b=b||256;var d=document.createElement("canvas");return"string"==typeof c&&""!==c&&(d.id=c),d.width=a,d.height=b,d.style.display="block",d},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkOS(),this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures()},b.Device.LITTLE_ENDIAN=!1,b.Device.prototype={_checkOS:function(){var a=navigator.userAgent;/Playstation Vita/.test(a)?this.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?this.kindle=!0:/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1||this.chromeOS)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1) +},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"opus"==a&&this.opus?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,c,d){a=+a||0;var e=typeof c;"number"!==e&&"string"!==e||!d||d[c]!==a||(c=d=null),d=null==d?1:+d||0,null===c?(c=a,a=0):c=+c||0;for(var f=-1,g=b.Math.max(b.Math.ceil((c-a)/(d||1)),0),h=new Array(g);++fc&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},limitValue:function(a,b,c){return b>a?b:a>c?c:a},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return"undefined"==typeof c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof b.Rectangle)var c=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var c=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?c=c.concat(this.nodes[d].retrieve(a)):(c=c.concat(this.nodes[0].retrieve(a)),c=c.concat(this.nodes[1].retrieve(a)),c=c.concat(this.nodes[2].retrieve(a)),c=c.concat(this.nodes[3].retrieve(a)))),c},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ac;)this._tweens[c].update(this.game.time.now)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Default,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1,g&&0===f&&(f=1);var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},from:function(a,b,c,d,e,f,g){var h={};for(var i in a)h[i]=this._object[i],this._object[i]=a[i];return this.to(h,b,c,d,e,f,g)},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):"string"==typeof l?l=k+parseFloat(l,10):"number"==typeof l&&(j[c]=k+(l-k)*i)}g.push(j),d+=f}var j={};for(c in this._valuesEnd)j[c]=this._valuesEnd[c];if(g.push(j),this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,a&&0===this._repeat&&(this._repeat=1),this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&(this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),!this.isRunning))return!1;if(1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._yoyo&&(this._reversed=!this._reversed),this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Easing.Default=b.Easing.Linear.None,b.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.timeCap=1/60*1e3,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;athis.timeCap&&(this.elapsed=this.timeCap),this.physicsElapsed=this.elapsed/1e3||1/60,this.deltaCap>0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1); +this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.now,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.now,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.now;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(b.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(b.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a,b){if("undefined"==typeof a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return"undefined"==typeof b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,c,d,e,f){return c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null===this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.__tilePattern&&(this.sprite.__tilePattern=!1,this.tilingTexture=!1),this._anims[a]},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){"undefined"==typeof h&&(h=!1),this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onUpdate=null,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if("undefined"==typeof b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length&&(this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete()),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame)),!0):!1},next:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},previous:function(a){"undefined"==typeof a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setFrame(this.currentFrame),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose()},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(b.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new b.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new b.Frame(this.index,this.x,this.y,this.width,this.height,this.name,this.uuid);for(var c in this)this.hasOwnProperty(c)&&(a[c]=this[c]);return a},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new b.FrameData,c=0;c=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+c+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._packIndex=0,this.loadPack()):this.beginLoad())},beginLoad:function(){this.progress=0,this.progressFloat=0,this.hasLoaded=!1,this.isLoading=!0,this.onLoadStart.dispatch(this._fileList.length),this._fileList.length>0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.isLoading=!1,this.onLoadComplete.dispatch())},loadPack:function(){if(!this._packList[this._packIndex])return void console.warn("Phaser.Loader loadPackList invalid index "+this._packIndex);var a=this._packList[this._packIndex];null!==a.data?this.packLoadComplete(this._packIndex,!1):this.xhrLoad(this._packIndex,this.baseURL+a.url,"text","packLoadComplete","packLoadError")},packLoadComplete:function(a,c){if("undefined"==typeof c&&(c=!0),!this._packList[a])return void console.warn("Phaser.Loader packLoadComplete invalid index "+a);var d=this._packList[a];if(d.loaded=!0,c)var e=JSON.parse(this._xhr.responseText);else var e=this._packList[a].data;if(e[d.key])for(var f,g=0;g=0&&(b=b.substr(0,b.indexOf("?"))),this.game.device.canPlayAudio(b))return a[c];return null},fileError:function(a){this._fileList[a].loaded=!0,this._fileList[a].error=!0,this.onFileError.dispatch(this._fileList[a].key,this._fileList[a]),console.warn("Phaser.Loader error loading file: "+this._fileList[a].key+" from URL "+this._fileList[a].url),this.nextFile(a,!1)},fileComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader fileComplete invalid index "+a);var c=this._fileList[a];c.loaded=!0;var d=!0;switch(c.type){case"image":this.game.cache.addImage(c.key,c.url,c.data);break;case"spritesheet":this.game.cache.addSpriteSheet(c.key,c.url,c.data,c.frameWidth,c.frameHeight,c.frameMax,c.margin,c.spacing);break;case"textureatlas":if(null==c.atlasURL)this.game.cache.addTextureAtlas(c.key,c.url,c.data,c.atlasData,c.format);else if(d=!1,c.format==b.Loader.TEXTURE_ATLAS_JSON_ARRAY||c.format==b.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","jsonLoadComplete","dataLoadError");else{if(c.format!=b.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+c.format);this.xhrLoad(this._fileIndex,this.baseURL+c.atlasURL,"text","xmlLoadComplete","dataLoadError")}break;case"bitmapfont":null==c.xmlURL?this.game.cache.addBitmapFont(c.key,c.url,c.data,c.xmlData,c.xSpacing,c.ySpacing):(d=!1,this.xhrLoad(this._fileIndex,this.baseURL+c.xmlURL,"text","xmlLoadComplete","dataLoadError"));break;case"audio":if(this.game.sound.usingWebAudio){if(c.data=this._xhr.response,this.game.cache.addSound(c.key,c.url,c.data,!0,!1),c.autoDecode){var e=this,f=c.key;this.game.cache.updateSound(f,"isDecoding",!0),this.game.sound.context.decodeAudioData(c.data,function(a){a&&(e.game.cache.decodedSound(f,a),e.game.sound.onSoundDecode.dispatch(f,e.game.cache.getSound(f)))})}}else c.data.removeEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete),this.game.cache.addSound(c.key,c.url,c.data,!1,!0);break;case"text":c.data=this._xhr.responseText,this.game.cache.addText(c.key,c.url,c.data);break;case"physics":var g=JSON.parse(this._xhr.responseText);this.game.cache.addPhysicsData(c.key,c.url,g,c.format);break;case"script":c.data=document.createElement("script"),c.data.language="javascript",c.data.type="text/javascript",c.data.defer=!1,c.data.text=this._xhr.responseText,document.head.appendChild(c.data),c.callback&&(c.data=c.callback.call(c.callbackContext,c.key,this._xhr.responseText));break;case"binary":c.data=c.callback?c.callback.call(c.callbackContext,c.key,this._xhr.response):this._xhr.response,this.game.cache.addBinary(c.key,c.data)}d&&this.nextFile(a,!0)},jsonLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader jsonLoadComplete invalid index "+a);var b=this._fileList[a];if(this._ajax&&this._ajax.responseText)var c=JSON.parse(this._ajax.responseText);else var c=JSON.parse(this._xhr.responseText);b.loaded=!0,"tilemap"===b.type?this.game.cache.addTilemap(b.key,b.url,c,b.format):"json"===b.type?this.game.cache.addJSON(b.key,b.url,c):this.game.cache.addTextureAtlas(b.key,b.url,b.data,c,b.format),this.nextFile(a,!0)},csvLoadComplete:function(a){if(!this._fileList[a])return void console.warn("Phaser.Loader csvLoadComplete invalid index "+a);var b=this._fileList[a],c=this._xhr.responseText;b.loaded=!0,this.game.cache.addTilemap(b.key,b.url,c,b.format),this.nextFile(a,!0)},dataLoadError:function(a){var b=this._fileList[a];b.loaded=!0,b.error=!0,console.warn("Phaser.Loader dataLoadError: "+b.key),this.nextFile(a,!0)},xmlLoadComplete:function(a){""!==this._xhr.responseType&&"text"!==this._xhr.responseType&&(console.warn("Invalid XML Response Type",this._fileList[a]),console.warn(this._xhr));var b,c=this._xhr.responseText;try{if(window.DOMParser){var d=new DOMParser;b=d.parseFromString(c,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(c)}catch(e){b=void 0}if(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)throw new Error("Phaser.Loader. Invalid XML given");var f=this._fileList[a];f.loaded=!0,"bitmapfont"===f.type?this.game.cache.addBitmapFont(f.key,f.url,f.data,b,f.xSpacing,f.ySpacing):"textureatlas"===f.type?this.game.cache.addTextureAtlas(f.key,f.url,f.data,b,f.format):"xml"===f.type&&this.game.cache.addXML(f.key,f.url,b),this.nextFile(a,!0)},nextFile:function(a,b){this.progressFloat+=this._progressChunk,this.progress=Math.round(this.progressFloat),this.progress>100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.updateCrop()),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this.isPlaying&&!this.allowMultiple&&(this.override||e)&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist"),this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null===this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if("undefined"==typeof this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b){"undefined"==typeof b&&(b=!1),this.paused||(this.play("",0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,c){if(this.isPlaying&&!this.paused&&c!==this.volume){if("undefined"==typeof a&&(a=1e3),"undefined"==typeof c)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");var d=this.game.add.tween(this).to({volume:c},a,b.Easing.Linear.None,!0);d.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a>>0:(a<<24|c<<16|d<<8|e)>>>0},unpackPixel:function(a,c,d,e){return("undefined"==typeof c||null===c)&&(c=b.Color.createColor()),("undefined"==typeof d||null===d)&&(d=!1),("undefined"==typeof e||null===e)&&(e=!1),b.Device.LITTLE_ENDIAN?(c.a=(4278190080&a)>>>24,c.b=(16711680&a)>>>16,c.g=(65280&a)>>>8,c.r=255&a):(c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a),c.color=a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a/255+")",d&&b.Color.RGBtoHSL(c.r,c.g,c.b,c),e&&b.Color.RGBtoHSV(c.r,c.g,c.b,c),c},fromRGBA:function(a,c){return c||(c=b.Color.createColor()),c.r=(4278190080&a)>>>24,c.g=(16711680&a)>>>16,c.b=(65280&a)>>>8,c.a=255&a,c.rgba="rgba("+c.r+","+c.g+","+c.b+","+c.a+")",c},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,1)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6}return e},HSLtoRGB:function(a,c,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=b.Color.createColor(d,d,d),0!==c){var f=.5>d?d*(1+c):d+c-d*c,g=2*d-f;e.r=b.Color.hueToColor(g,f,a+1/3),e.g=b.Color.hueToColor(g,f,a),e.b=b.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),b.Color.updateColor(e),e},RGBtoHSV:function(a,c,d,e){e||(e=b.Color.createColor(a,c,d,255)),a/=255,c/=255,d/=255;var f=Math.min(a,c,d),g=Math.max(a,c,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(c-d)/h+(d>c?6:0):g===c?e.h=(d-a)/h+2:g===d&&(e.h=(a-c)/h+4),e.h/=6),e},HSVtoRGB:function(a,c,d,e){"undefined"==typeof e&&(e=b.Color.createColor(0,0,0,1,a,c,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-c),l=d*(1-j*c),m=d*(1-(1-j)*c);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),b.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,c,d,e,f,g,h,i){var j={r:a||0,g:c||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return j.color=b.Color.getColor(j.r,j.g,j.b),j.color32=b.Color.getColor32(j.a,j.r,j.g,j.b),b.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,c,d,e,f){return"undefined"==typeof e&&(e=255),"undefined"==typeof f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(c<<8)+d).toString(16).slice(1):"0x"+b.Color.componentToHex(e)+b.Color.componentToHex(a)+b.Color.componentToHex(c)+b.Color.componentToHex(d)},hexToRGB:function(a){var c=b.Color.hexToColor(a);return c?b.Color.getColor32(c.a,c.r,c.g,c.b):void 0},hexToColor:function(a,c){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);c?(c.r=e,c.g=f,c.b=g):c=b.Color.createColor(e,f,g)}return c},webToColor:function(a,c){c||(c=b.Color.createColor());var d=/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\)$/.exec(a);return d&&(c.r=parseInt(d[1],10),c.g=parseInt(d[2],10),c.b=parseInt(d[3],10)),c},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,c){"undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSVtoRGB(e/359,a,c));return d},HSLColorWheel:function(a,c){"undefined"==typeof a&&(a=.5),"undefined"==typeof c&&(c=.5);for(var d=[],e=0;359>=e;e++)d.push(b.Color.HSLtoRGB(e/359,a,c));return d},interpolateColor:function(a,c,d,e,f){"undefined"==typeof f&&(f=255);var g=b.Color.getRGB(a),h=b.Color.getRGB(c),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return b.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,c,d,e,f,g){var h=b.Color.getRGB(a),i=(c-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return b.Color.getColor(i,j,k)},interpolateRGB:function(a,c,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-c)*i/h+c,l=(g-d)*i/h+d;return b.Color.getColor(j,k,l)},getRandomColor:function(a,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof c&&(c=255),"undefined"==typeof d&&(d=255),c>255||a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var c=b.Color.getRGB(a);return"rgba("+c.r.toString()+","+c.g.toString()+","+c.b.toString()+","+(c.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=4,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&b.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new b.Physics.BOX2D(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else if(a===b.Physics.BOX2D&&null===this.box2d)this.box2d=new b.Physics.Box2D(this.game,this.config);else if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):c===b.Physics.BOX2D&&this.box2d&&this.box2d.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.skipQuadTree=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0,this.setBoundsToWorld()},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!0);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,g=a.length;g>f;f++)for(var h=0,i=b.length;i>h;h++)this.collideHandler(a[f],b[h],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else if(Array.isArray(a)&&!Array.isArray(b))for(var f=0,g=a.length;g>f;f++)this.collideHandler(a[f],b,c,d,e,!1);else if(Array.isArray(a)&&Array.isArray(b))for(var f=0,h=a.length;h>f;f++)for(var i=0,j=b.length;j>i;i++)this.collideHandler(a[f],b[i],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length&&a.body)if(a.body.skipQuadTree||this.skipQuadTree)for(var g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,c,d,e,f,g){if(0!==a.length&&0!==c.length)for(var h=0,i=a.children.length;i>h;h++)a.children[h].exists&&(a.children[h].type===b.GROUP?this.collideGroupVsGroup(a.children[h],c,d,e,f,g):this.collideSpriteVsGroup(a.children[h],c,d,e,f,g))},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(a.body&&(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length))for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=this._overlap,b.overlapX=this._overlap,0!==this._overlap)?c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=this._overlap,b.overlapY=this._overlap,0!==this._overlap)?c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0):!1)},separateTile:function(a,b,c){if(!b.enable||!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},getObjectsUnderPointer:function(a,c,d,e){if(0!==c.length&&a.exists){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(c);var f=new b.Rectangle(a.x,a.y,1,1),g=[];this._potentials=this.quadTree.retrieve(f);for(var h=0,i=this._potentials.length;i>h;h++)this._potentials[h].hitTest(a.x,a.y)&&(d&&d.call(e,a,this._potentials[h].sprite),g.push(this._potentials[h].sprite));return g}},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c) +},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.enable=!0,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this.skipQuadTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite.body=null,this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){"undefined"==typeof c&&(c=this.offset.x),"undefined"==typeof d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.area=new b.Rectangle(c,d,1,1),this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.explode=function(a,b){this.start(!0,a,0,b,!1)},b.Particles.Arcade.Emitter.prototype.flow=function(a,b,c){this.start(!1,a,b,c,!0)},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=!1),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a||e?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit())},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.area.width=a,this.area.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.NORTH=0,b.Tilemap.EAST=1,b.Tilemap.SOUTH=2,b.Tilemap.WEST=3,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;if(c=a,!this.game.cache.checkImageKey(c))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+c+'"'),null}if("string"==typeof a&&(a=this.getTilesetIndex(a),null===a&&this.format===b.Tilemap.TILED_JSON))return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+c+'"'),null;if(this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0,!0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;c>l;l++)h.push(new b.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;he;e++)this.setCollisionByIndex(a[e],b,c,!1);d&&this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d,e){if("undefined"==typeof c&&(c=!0),"undefined"==typeof e&&(e=!0),d=this.getLayer(d),!(a>b)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){"undefined"==typeof b&&(b=!0),"undefined"==typeof d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,c,d){if(d=this.getLayer(d),a>=0&&a=0&&c=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,Object.defineProperty(b.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this.wrap=!1,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x)},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gc;c++){if(this._column=null,0>c&&this.wrap?this._column=this.layer.data[c+this.map.height]:c>=this.map.height&&this.wrap?this._column=this.layer.data[c-this.map.height]:this.layer.data[c]&&(this._column=this.layer.data[c]),this._column)for(var e=this._mc.startX,f=this._mc.startX+this._mc.maxX;f>e;e++){var a=null;0>e&&this.wrap?a=this._column[e+this.map.width]:e>=this.map.width&&this.wrap?a=this._column[e-this.map.width]:this._column[e]&&(a=this._column[e]),a&&a.index>-1&&(b=this.map.tilesets[this.map.tiles[a.index][2]],this.debug===!1&&a.alpha!==this.context.globalAlpha&&(this.context.globalAlpha=a.alpha),b.draw(this.context,Math.floor(this._mc.tx),Math.floor(this._mc.ty),a.index),a.debug&&(this.context.fillStyle="rgba(0, 255, 0, 0.4)",this.context.fillRect(Math.floor(this._mc.tx),Math.floor(this._mc.ty),this.map.tileWidth,this.map.tileHeight))),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}return this.debug&&(this.context.globalAlpha=1,this.renderDebug()),this.texture._updateUvs(),this.dirty=!1,this.layer.dirty=!1,!0}},b.TilemapLayer.prototype.renderDebug=function(){this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.strokeStyle=this.debugColor,this.context.fillStyle=this.debugFillColor;for(var a=this._mc.startY,b=this._mc.startY+this._mc.maxY;b>a;a++){if(this._column=null,0>a&&this.wrap?this._column=this.layer.data[a+this.map.height]:a>=this.map.height&&this.wrap?this._column=this.layer.data[a-this.map.height]:this.layer.data[a]&&(this._column=this.layer.data[a]),this._column)for(var c=this._mc.startX,d=this._mc.startX+this._mc.maxX;d>c;c++){var e=null;0>c&&this.wrap?e=this._column[c+this.map.width]:c>=this.map.width&&this.wrap?e=this._column[c-this.map.width]:this._column[c]&&(e=this._column[c]),e&&(e.faceTop||e.faceBottom||e.faceLeft||e.faceRight)&&(this._mc.tx=Math.floor(this._mc.tx),this.debugFill&&this.context.fillRect(this._mc.tx,this._mc.ty,this._mc.cw,this._mc.ch),this.context.beginPath(),e.faceTop&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty)),e.faceBottom&&(this.context.moveTo(this._mc.tx,this._mc.ty+this._mc.ch),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),e.faceLeft&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx,this._mc.ty+this._mc.ch)),e.faceRight&&(this.context.moveTo(this._mc.tx+this._mc.cw,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),this.context.stroke()),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}},Object.defineProperty(b.TilemapLayer.prototype,"scrollX",{get:function(){return this._mc.x},set:function(a){a!==this._mc.x&&(this._mc.x=a,this._mc.startX=this.game.math.floor(this._mc.x/this.map.tileWidth),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"scrollY",{get:function(){return this._mc.y},set:function(a){a!==this._mc.y&&(this._mc.y=a,this._mc.startY=this.game.math.floor(this._mc.y/this.map.tileHeight),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=a,this.dirty=!0}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=a,this.dirty=!0}}),b.TilemapParser={parse:function(a,c,d,e,f,g){if("undefined"==typeof d&&(d=32),"undefined"==typeof e&&(e=32),"undefined"==typeof f&&(f=10),"undefined"==typeof g&&(g=10),"undefined"==typeof c)return this.getEmptyData();if(null===c)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(c);if(h){if(h.format===b.Tilemap.CSV)return this.parseCSV(c,h.data,d,e);if(!h.format||h.format===b.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+c)},parseCSV:function(a,c,d,e){var f=this.getEmptyData();c=c.trim();for(var g=[],h=c.split("\n"),i=h.length,j=0,k=0;kk;k++)i.push(a.layers[f].data[k]>0?new b.Tile(g,a.layers[f].data[k],h,j.length,a.tilewidth,a.tileheight):new b.Tile(g,-1,h,j.length,a.tilewidth,a.tileheight)),h++,h===a.layers[f].width&&(j.push(i),h=0,i=[]);g.data=j,e.push(g)}d.layers=e;for(var m=[],f=0;ft;t++)if(a.layers[f].objects[t].gid){var u={gid:a.layers[f].objects[t].gid,name:a.layers[f].objects[t].name,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};r[a.layers[f].name].push(u)}else if(a.layers[f].objects[t].polyline){var u={name:a.layers[f].objects[t].name,type:a.layers[f].objects[t].type,x:a.layers[f].objects[t].x,y:a.layers[f].objects[t].y,width:a.layers[f].objects[t].width,height:a.layers[f].objects[t].height,visible:a.layers[f].objects[t].visible,properties:a.layers[f].objects[t].properties};u.polyline=[];for(var v=0;v=c)&&(c=32),("undefined"==typeof d||0>=d)&&(d=32),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.name=a,this.firstgid=b,this.tileWidth=c,this.tileHeight=d,this.tileMargin=e,this.tileSpacing=f,this.properties=g,this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},b.Tileset.prototype={draw:function(a,b,c,d){this.image&&this.drawCoords[d]&&a.drawImage(this.image,this.drawCoords[d][0],this.drawCoords[d][1],this.tileWidth,this.tileHeight,b,c,this.tileWidth,this.tileHeight)},setImage:function(a){this.image=a,this.rows=Math.round((a.height-this.tileMargin)/(this.tileHeight+this.tileSpacing)),this.columns=Math.round((a.width-this.tileMargin)/(this.tileWidth+this.tileSpacing)),this.total=this.rows*this.columns,this.drawCoords.length=0;for(var b=this.tileMargin,c=this.tileMargin,d=this.firstgid,e=0;eg;g++)f[g]=d.isBuffer(a)?a.readUInt8(g):a[g];else"string"===c&&f.write(a,0,b);return f}function e(a,b,c,e){c=Number(c)||0;var f=a.length-c;e?(e=Number(e),e>f&&(e=f)):e=f;var g=b.length;if(g%2!==0)throw new Error("Invalid hex string");e>g/2&&(e=g/2);for(var h=0;e>h;h++){var i=parseInt(b.substr(2*h,2),16);if(isNaN(i))throw new Error("Invalid hex string");a[c+h]=i}return d._charsWritten=2*h,h}function f(a,b,c,e){return d._charsWritten=tb(qb(b),a,c,e)}function g(a,b,c,e){return d._charsWritten=tb(rb(b),a,c,e)}function h(a,b,c,d){return g(a,b,c,d)}function i(a,b,c,e){return d._charsWritten=tb(sb(b),a,c,e)}function j(a,b,c,d){if(isFinite(b))isFinite(c)||(d=c,c=void 0);else{var j=d;d=b,b=c,c=j}b=Number(b)||0;var k=this.length-b;switch(c?(c=Number(c),c>k&&(c=k)):c=k,d=String(d||"utf8").toLowerCase()){case"hex":return e(this,a,b,c);case"utf8":case"utf-8":return f(this,a,b,c);case"ascii":return g(this,a,b,c);case"binary":return h(this,a,b,c);case"base64":return i(this,a,b,c);default:throw new Error("Unknown encoding")}}function k(a,b,c){var d=this instanceof kb?this._proxy:this;if(a=String(a||"utf8").toLowerCase(),b=Number(b)||0,c=void 0!==c?Number(c):c=d.length,c===b)return"";switch(a){case"hex":return r(d,b,c);case"utf8":case"utf-8":return o(d,b,c);case"ascii":return p(d,b,c);case"binary":return q(d,b,c);case"base64":return n(d,b,c);default:throw new Error("Unknown encoding")}}function l(){return{type:"Buffer",data:Array.prototype.slice.call(this,0)}}function m(a,b,c,d){var e=this;if(c||(c=0),d||0===d||(d=this.length),b||(b=0),d!==c&&0!==a.length&&0!==e.length){if(c>d)throw new Error("sourceEnd < sourceStart");if(0>b||b>=a.length)throw new Error("targetStart out of bounds");if(0>c||c>=e.length)throw new Error("sourceStart out of bounds");if(0>d||d>e.length)throw new Error("sourceEnd out of bounds");d>this.length&&(d=this.length),a.length-bf;f++)a[f+b]=this[f+c]}}function n(b,c,d){var e=b.slice(c,d);return a("base64-js").fromByteArray(e)}function o(a,b,c){for(var d=a.slice(b,c),e="",f="",g=0;gb)&&(b=0),(!c||0>c||c>d)&&(c=d);for(var e="",f=b;c>f;f++)e+=pb(a[f]);return e}function s(a,b){var c=this.length;return a=mb(a,c,0),b=mb(b,c,c),lb(this.subarray(a,b))}function t(a,b){var c=this;return b||(yb(void 0!==a&&null!==a,"missing offset"),yb(a=c.length?void 0:c[a]}function u(a,b,c,d){d||(yb("boolean"==typeof c,"missing or invalid endian"),yb(void 0!==b&&null!==b,"missing offset"),yb(b+1=e)){if(b+1===e){var f=new Ab(new Bb(2));return f.setUint8(0,a[e-1]),f.getUint16(0,c)}return a._dataview.getUint16(b,c)}}function v(a,b){return u(this,a,!0,b)}function w(a,b){return u(this,a,!1,b)}function x(a,b,c,d){d||(yb("boolean"==typeof c,"missing or invalid endian"),yb(void 0!==b&&null!==b,"missing offset"),yb(b+3=e)){if(b+3>=e){for(var f=new Ab(new Bb(4)),g=0;e>g+b;g++)f.setUint8(g,a[g+b]);return f.getUint32(0,c)}return a._dataview.getUint32(b,c)}}function y(a,b){return x(this,a,!0,b)}function z(a,b){return x(this,a,!1,b)}function A(a,b){var c=this;return b||(yb(void 0!==a&&null!==a,"missing offset"),yb(a=c.length?void 0:c._dataview.getInt8(a)}function B(a,b,c,d){d||(yb("boolean"==typeof c,"missing or invalid endian"),yb(void 0!==b&&null!==b,"missing offset"),yb(b+1=e)){if(b+1===e){var f=new Ab(new Bb(2));return f.setUint8(0,a[e-1]),f.getInt16(0,c)}return a._dataview.getInt16(b,c)}}function C(a,b){return B(this,a,!0,b)}function D(a,b){return B(this,a,!1,b)}function E(a,b,c,d){d||(yb("boolean"==typeof c,"missing or invalid endian"),yb(void 0!==b&&null!==b,"missing offset"),yb(b+3=e)){if(b+3>=e){for(var f=new Ab(new Bb(4)),g=0;e>g+b;g++)f.setUint8(g,a[g+b]);return f.getInt32(0,c)}return a._dataview.getInt32(b,c)}}function F(a,b){return E(this,a,!0,b)}function G(a,b){return E(this,a,!1,b)}function H(a,b,c,d){return d||(yb("boolean"==typeof c,"missing or invalid endian"),yb(b+3=d.length||(d[b]=a)}function O(a,b,c,d,e){e||(yb(void 0!==b&&null!==b,"missing value"),yb("boolean"==typeof d,"missing or invalid endian"),yb(void 0!==c&&null!==c,"missing offset"),yb(c+1=f))if(c+1===f){var g=new Ab(new Bb(2));g.setUint16(0,b,d),a[c]=g.getUint8(0)}else a._dataview.setUint16(c,b,d)}function P(a,b,c){O(this,a,b,!0,c)}function Q(a,b,c){O(this,a,b,!1,c)}function R(a,b,c,d,e){e||(yb(void 0!==b&&null!==b,"missing value"),yb("boolean"==typeof d,"missing or invalid endian"),yb(void 0!==c&&null!==c,"missing offset"),yb(c+3=f))if(c+3>=f){var g=new Ab(new Bb(4));g.setUint32(0,b,d);for(var h=0;f>h+c;h++)a[h+c]=g.getUint8(h)}else a._dataview.setUint32(c,b,d)}function S(a,b,c){R(this,a,b,!0,c)}function T(a,b,c){R(this,a,b,!1,c)}function U(a,b,c){var d=this;c||(yb(void 0!==a&&null!==a,"missing value"),yb(void 0!==b&&null!==b,"missing offset"),yb(b=d.length||d._dataview.setInt8(b,a)}function V(a,b,c,d,e){e||(yb(void 0!==b&&null!==b,"missing value"),yb("boolean"==typeof d,"missing or invalid endian"),yb(void 0!==c&&null!==c,"missing offset"),yb(c+1=f))if(c+1===f){var g=new Ab(new Bb(2));g.setInt16(0,b,d),a[c]=g.getUint8(0)}else a._dataview.setInt16(c,b,d)}function W(a,b,c){V(this,a,b,!0,c)}function X(a,b,c){V(this,a,b,!1,c)}function Y(a,b,c,d,e){e||(yb(void 0!==b&&null!==b,"missing value"),yb("boolean"==typeof d,"missing or invalid endian"),yb(void 0!==c&&null!==c,"missing offset"),yb(c+3=f))if(c+3>=f){var g=new Ab(new Bb(4));g.setInt32(0,b,d);for(var h=0;f>h+c;h++)a[h+c]=g.getUint8(h)}else a._dataview.setInt32(c,b,d)}function Z(a,b,c){Y(this,a,b,!0,c)}function $(a,b,c){Y(this,a,b,!1,c)}function _(a,b,c,d,e){e||(yb(void 0!==b&&null!==b,"missing value"),yb("boolean"==typeof d,"missing or invalid endian"),yb(void 0!==c&&null!==c,"missing offset"),yb(c+3=f))if(c+3>=f){var g=new Ab(new Bb(4));g.setFloat32(0,b,d);for(var h=0;f>h+c;h++)a[h+c]=g.getUint8(h)}else a._dataview.setFloat32(c,b,d)}function ab(a,b,c){_(this,a,b,!0,c)}function bb(a,b,c){_(this,a,b,!1,c)}function cb(a,b,c,d,e){e||(yb(void 0!==b&&null!==b,"missing value"),yb("boolean"==typeof d,"missing or invalid endian"),yb(void 0!==c&&null!==c,"missing offset"),yb(c+7=f))if(c+7>=f){var g=new Ab(new Bb(8));g.setFloat64(0,b,d);for(var h=0;f>h+c;h++)a[h+c]=g.getUint8(h)}else a._dataview.setFloat64(c,b,d)}function db(a,b,c){cb(this,a,b,!0,c)}function eb(a,b,c){cb(this,a,b,!1,c)}function fb(a,b,c){if(a||(a=0),b||(b=0),c||(c=this.length),"string"==typeof a&&(a=a.charCodeAt(0)),"number"!=typeof a||isNaN(a))throw new Error("value is not a number");if(b>c)throw new Error("end < start");if(c!==b&&0!==this.length){if(0>b||b>=this.length)throw new Error("start out of bounds");if(0>c||c>this.length)throw new Error("end out of bounds");for(var d=b;c>d;d++)this[d]=a}}function gb(){for(var a=[],b=this.length,d=0;b>d;d++)if(a[d]=pb(this[d]),d===c.INSPECT_MAX_BYTES){a[d+1]="...";break}return""}function hb(){return new d(this).buffer}function ib(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function jb(){var a=new Cb(0);a.foo=function(){return 42};try{return 42===a.foo()}catch(b){return!1}}function kb(a){this._arr=a,0!==a.byteLength&&(this._dataview=new Ab(a.buffer,a.byteOffset,a.byteLength))}function lb(a){if(void 0===Db&&(Db=jb()),Db)return a.write=j,a.toString=k,a.toLocaleString=k,a.toJSON=l,a.copy=m,a.slice=s,a.readUInt8=t,a.readUInt16LE=v,a.readUInt16BE=w,a.readUInt32LE=y,a.readUInt32BE=z,a.readInt8=A,a.readInt16LE=C,a.readInt16BE=D,a.readInt32LE=F,a.readInt32BE=G,a.readFloatLE=I,a.readFloatBE=J,a.readDoubleLE=L,a.readDoubleBE=M,a.writeUInt8=N,a.writeUInt16LE=P,a.writeUInt16BE=Q,a.writeUInt32LE=S,a.writeUInt32BE=T,a.writeInt8=U,a.writeInt16LE=W,a.writeInt16BE=X,a.writeInt32LE=Z,a.writeInt32BE=$,a.writeFloatLE=ab,a.writeFloatBE=bb,a.writeDoubleLE=db,a.writeDoubleBE=eb,a.fill=fb,a.inspect=gb,a.toArrayBuffer=hb,a._isBuffer=!0,0!==a.byteLength&&(a._dataview=new Ab(a.buffer,a.byteOffset,a.byteLength)),a;var b=new kb(a),c=new Proxy(b,Eb);return b._proxy=c,c}function mb(a,b,c){return"number"!=typeof a?c:(a=~~a,a>=b?b:a>=0?a:(a+=b,a>=0?a:0))}function nb(a){return a=~~Math.ceil(+a),0>a?0:a}function ob(a){return Array.isArray(a)||d.isBuffer(a)||a&&"object"==typeof a&&"number"==typeof a.length}function pb(a){return 16>a?"0"+a.toString(16):a.toString(16)}function qb(a){for(var b=[],c=0;ce&&!(e+c>=b.length||e>=a.length);)b[e+c]=a[e],e++;return e}function ub(a){try{return decodeURIComponent(a)}catch(b){return String.fromCharCode(65533)}}function vb(a,b){yb("number"==typeof a,"cannot write a non-number as a number"),yb(a>=0,"specified a negative value for writing an unsigned value"),yb(b>=a,"value is larger than maximum value for type"),yb(Math.floor(a)===a,"value has a fractional component")}function wb(a,b,c){yb("number"==typeof a,"cannot write a non-number as a number"),yb(b>=a,"value larger than maximum allowed value"),yb(a>=c,"value smaller than minimum allowed value"),yb(Math.floor(a)===a,"value has a fractional component")}function xb(a,b,c){yb("number"==typeof a,"cannot write a non-number as a number"),yb(b>=a,"value larger than maximum allowed value"),yb(a>=c,"value smaller than minimum allowed value")}function yb(a,b){if(!a)throw new Error(b||"Failed assertion")}var zb=a("typedarray"),Ab="undefined"==typeof DataView?zb.DataView:DataView,Bb="undefined"==typeof ArrayBuffer?zb.ArrayBuffer:ArrayBuffer,Cb="undefined"==typeof Uint8Array?zb.Uint8Array:Uint8Array;c.Buffer=d,c.SlowBuffer=d,c.INSPECT_MAX_BYTES=50,d.poolSize=8192;var Db;d.isEncoding=function(a){switch((a+"").toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},d.isBuffer=function(a){return a&&a._isBuffer},d.byteLength=function(a,b){switch(b||"utf8"){case"hex":return a.length/2;case"utf8":case"utf-8":return qb(a).length;case"ascii":case"binary":return a.length;case"base64":return sb(a).length;default:throw new Error("Unknown encoding")}},d.concat=function(a,b){if(!Array.isArray(a))throw new Error("Usage: Buffer.concat(list, [totalLength])\nlist should be an Array.");var c,e;if(0===a.length)return new d(0);if(1===a.length)return a[0];if("number"!=typeof b)for(b=0,c=0;c0)throw"Invalid string. Length must be a multiple of 4";for(g=a.indexOf("="),g=g>0?a.length-g:0,h=[],e=g>0?a.length-4:a.length,b=0,c=0;e>b;b+=4,c+=3)f=d.indexOf(a[b])<<18|d.indexOf(a[b+1])<<12|d.indexOf(a[b+2])<<6|d.indexOf(a[b+3]),h.push((16711680&f)>>16),h.push((65280&f)>>8),h.push(255&f); +return 2===g?(f=d.indexOf(a[b])<<2|d.indexOf(a[b+1])>>4,h.push(255&f)):1===g&&(f=d.indexOf(a[b])<<10|d.indexOf(a[b+1])<<4|d.indexOf(a[b+2])>>2,h.push(f>>8&255),h.push(255&f)),h}function c(a){function b(a){return d[a>>18&63]+d[a>>12&63]+d[a>>6&63]+d[63&a]}var c,e,f,g=a.length%3,h="";for(c=0,f=a.length-g;f>c;c+=3)e=(a[c]<<16)+(a[c+1]<<8)+a[c+2],h+=b(e);switch(g){case 1:e=a[a.length-1],h+=d[e>>2],h+=d[e<<4&63],h+="==";break;case 2:e=(a[a.length-2]<<8)+a[a.length-1],h+=d[e>>10],h+=d[e>>4&63],h+=d[e<<2&63],h+="="}return h}var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";b.exports.toByteArray=a,b.exports.fromByteArray=c}()},{}],4:[function(a,b,c){function d(a){if(L&&K){var b,c=L(a);for(b=0;bB)throw new RangeError("Array too large for polyfill");var c;for(c=0;c>c}function g(a,b){var c=32-b;return a<>>c}function h(a){return[255&a]}function i(a){return f(a[0],8)}function j(a){return[255&a]}function k(a){return g(a[0],8)}function l(a){return a=J(Number(a)),[0>a?0:a>255?255:255&a]}function m(a){return[a>>8&255,255&a]}function n(a){return f(a[0]<<8|a[1],16)}function o(a){return[a>>8&255,255&a]}function p(a){return g(a[0]<<8|a[1],16)}function q(a){return[a>>24&255,a>>16&255,a>>8&255,255&a]}function r(a){return f(a[0]<<24|a[1]<<16|a[2]<<8|a[3],32)}function s(a){return[a>>24&255,a>>16&255,a>>8&255,255&a]}function t(a){return g(a[0]<<24|a[1]<<16|a[2]<<8|a[3],32)}function u(a,b,c){function d(a){var b=F(a),c=a-b;return.5>c?b:c>.5?b+1:b%2?b+1:b}var e,f,g,h,i,j,k,l=(1<a?1:0):0===a?(f=0,g=0,e=1/a===-1/0?1:0):(e=0>a,a=E(a),a>=I(2,1-l)?(f=H(F(G(a)/D),1023),g=d(a/I(2,f)*I(2,c)),g/I(2,c)>=2&&(f+=1,g=1),f>l?(f=(1<>=1;return l.reverse(),g=l.join(""),h=(1<0?i*I(2,j-h)*(1+k/I(2,c)):0!==k?i*I(2,-(h-1))*(k/I(2,c)):0>i?-0:0}function w(a){return v(a,11,52)}function x(a){return u(a,11,52)}function y(a){return v(a,8,23)}function z(a){return u(a,8,23)}var A=void 0,B=1e5,C=function(){var a=Object.prototype.toString,b=Object.prototype.hasOwnProperty;return{Class:function(b){return a.call(b).replace(/^\[object *|\]$/g,"")},HasProperty:function(a,b){return b in a},HasOwnProperty:function(a,c){return b.call(a,c)},IsCallable:function(a){return"function"==typeof a},ToInt32:function(a){return a>>0},ToUint32:function(a){return a>>>0}}}(),D=Math.LN2,E=Math.abs,F=Math.floor,G=Math.log,H=Math.min,I=Math.pow,J=Math.round,K=Object.defineProperty||function(a,b,c){if(!a===Object(a))throw new TypeError("Object.defineProperty called on non-object");return C.HasProperty(c,"get")&&Object.prototype.__defineGetter__&&Object.prototype.__defineGetter__.call(a,b,c.get),C.HasProperty(c,"set")&&Object.prototype.__defineSetter__&&Object.prototype.__defineSetter__.call(a,b,c.set),C.HasProperty(c,"value")&&(a[b]=c.value),a},L=Object.getOwnPropertyNames||function(a){if(a!==Object(a))throw new TypeError("Object.getOwnPropertyNames called on non-object");var b,c=[];for(b in a)C.HasOwnProperty(a,b)&&c.push(b);return c};!function(){function a(a,c,g){var h;return h=function(a,c,f){var g,i,j,k;if(arguments.length&&"number"!=typeof arguments[0])if("object"==typeof arguments[0]&&arguments[0].constructor===h)for(g=arguments[0],this.length=g.length,this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new b(this.byteLength),this.byteOffset=0,j=0;jthis.buffer.byteLength)throw new RangeError("byteOffset out of range");if(this.byteOffset%this.BYTES_PER_ELEMENT)throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size.");if(arguments.length<3){if(this.byteLength=this.buffer.byteLength-this.byteOffset,this.byteLength%this.BYTES_PER_ELEMENT)throw new RangeError("length of buffer minus byteOffset not a multiple of the element size");this.length=this.byteLength/this.BYTES_PER_ELEMENT}else this.length=C.ToUint32(f),this.byteLength=this.length*this.BYTES_PER_ELEMENT;if(this.byteOffset+this.byteLength>this.buffer.byteLength)throw new RangeError("byteOffset and length reference an area beyond the end of the buffer")}else for(i=arguments[0],this.length=C.ToUint32(i.length),this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new b(this.byteLength),this.byteOffset=0,j=0;jf)throw new RangeError("ArrayBufferView size is not a small enough positive integer");this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new b(this.byteLength),this.byteOffset=0}this.constructor=h,d(this),e(this)},h.prototype=new f,h.prototype.BYTES_PER_ELEMENT=a,h.prototype._pack=c,h.prototype._unpack=g,h.BYTES_PER_ELEMENT=a,h.prototype._getter=function(a){if(arguments.length<1)throw new SyntaxError("Not enough arguments");if(a=C.ToUint32(a),a>=this.length)return A;var b,c,d=[];for(b=0,c=this.byteOffset+a*this.BYTES_PER_ELEMENT;b=this.length)return A;var c,d,e=this._pack(b);for(c=0,d=this.byteOffset+a*this.BYTES_PER_ELEMENT;cthis.length)throw new RangeError("Offset plus length of array is out of range");if(h=this.byteOffset+c*this.BYTES_PER_ELEMENT,i=a.length*this.BYTES_PER_ELEMENT,a.buffer===this.buffer){for(j=[],e=0,f=a.byteOffset;i>e;e+=1,f+=1)j[e]=a.buffer._bytes[f];for(e=0,g=h;i>e;e+=1,g+=1)this.buffer._bytes[g]=j[e]}else for(e=0,f=a.byteOffset,g=h;i>e;e+=1,f+=1,g+=1)this.buffer._bytes[g]=a.buffer._bytes[f]}else{if("object"!=typeof arguments[0]||"undefined"==typeof arguments[0].length)throw new TypeError("Unexpected argument type(s)");if(b=arguments[0],d=C.ToUint32(b.length),c=C.ToUint32(arguments[1]),c+d>this.length)throw new RangeError("Offset plus length of array is out of range");for(e=0;d>e;e+=1)f=b[e],this._setter(c+e,Number(f))}},h.prototype.subarray=function(a,b){function c(a,b,c){return b>a?b:a>c?c:a}a=C.ToInt32(a),b=C.ToInt32(b),arguments.length<1&&(a=0),arguments.length<2&&(b=this.length),0>a&&(a=this.length+a),0>b&&(b=this.length+b),a=c(a,0,this.length),b=c(b,0,this.length);var d=b-a;return 0>d&&(d=0),new this.constructor(this.buffer,this.byteOffset+a*this.BYTES_PER_ELEMENT,d)},h}var b=function(a){if(a=C.ToInt32(a),0>a)throw new RangeError("ArrayBuffer size is not a small enough positive integer");this.byteLength=a,this._bytes=[],this._bytes.length=a;var b;for(b=0;bthis.byteLength)throw new RangeError("Array index out of range");c+=this.byteOffset;var e,g=new Uint8Array(this.buffer,c,b.BYTES_PER_ELEMENT),h=[];for(e=0;ethis.byteLength)throw new RangeError("Array index out of range");var g,h,i=new b([d]),j=new Uint8Array(i.buffer),k=[];for(g=0;gthis.buffer.byteLength)throw new RangeError("byteOffset out of range");if(this.byteLength=arguments.length<3?this.buffer.byteLength-this.byteOffset:C.ToUint32(c),this.byteOffset+this.byteLength>this.buffer.byteLength)throw new RangeError("byteOffset and length reference an area beyond the end of the buffer");d(this)};g.prototype.getUint8=b(c.Uint8Array),g.prototype.getInt8=b(c.Int8Array),g.prototype.getUint16=b(c.Uint16Array),g.prototype.getInt16=b(c.Int16Array),g.prototype.getUint32=b(c.Uint32Array),g.prototype.getInt32=b(c.Int32Array),g.prototype.getFloat32=b(c.Float32Array),g.prototype.getFloat64=b(c.Float64Array),g.prototype.setUint8=e(c.Uint8Array),g.prototype.setInt8=e(c.Int8Array),g.prototype.setUint16=e(c.Uint16Array),g.prototype.setInt16=e(c.Int16Array),g.prototype.setUint32=e(c.Uint32Array),g.prototype.setInt32=e(c.Int32Array),g.prototype.setFloat32=e(c.Float32Array),g.prototype.setFloat64=e(c.Float64Array),c.DataView=c.DataView||g}()},{}]},{},[]),b.exports=a("native-buffer-browserify").Buffer},{}],2:[function(a,b){var c=b.exports={};c.nextTick=function(){var a="undefined"!=typeof window&&window.setImmediate,b="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(a)return function(a){return window.setImmediate(a)};if(b){var c=[];return window.addEventListener("message",function(a){if(a.source===window&&"process-tick"===a.data&&(a.stopPropagation(),c.length>0)){var b=c.shift();b()}},!0),function(a){c.push(a),window.postMessage("process-tick","*")}}return function(a){setTimeout(a,0)}}(),c.title="browser",c.browser=!0,c.env={},c.argv=[],c.binding=function(){throw new Error("process.binding is not supported")},c.cwd=function(){return"/"},c.chdir=function(){throw new Error("process.chdir is not supported")}},{}],3:[function(a,b){function c(){}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Scalar"));b.exports=c,c.lineInt=function(a,b,c){c=c||0;var e,f,g,h,i,j,k,l=[0,0];return e=a[1][1]-a[0][1],f=a[0][0]-a[1][0],g=e*a[0][0]+f*a[0][1],h=b[1][1]-b[0][1],i=b[0][0]-b[1][0],j=h*b[0][0]+i*b[0][1],k=e*i-h*f,d.eq(k,0,c)||(l[0]=(i*g-f*j)/k,l[1]=(e*j-h*g)/k),l},c.segmentsIntersect=function(a,b,c,d){var e=b[0]-a[0],f=b[1]-a[1],g=d[0]-c[0],h=d[1]-c[1];if(g*f-h*e==0)return!1;var i=(e*(c[1]-a[1])+f*(a[0]-c[0]))/(g*f-h*e),j=(g*(a[1]-c[1])+h*(c[0]-a[0]))/(h*e-g*f);return i>=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":6,__browserify_Buffer:1,__browserify_process:2}],4:[function(a,b){function c(){}a("__browserify_process"),a("__browserify_Buffer");b.exports=c,c.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},c.left=function(a,b,d){return c.area(a,b,d)>0},c.leftOn=function(a,b,d){return c.area(a,b,d)>=0},c.right=function(a,b,d){return c.area(a,b,d)<0},c.rightOn=function(a,b,d){return c.area(a,b,d)<=0};var d=[],e=[];c.collinear=function(a,b,f,g){if(g){var h=d,i=e;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=f[0]-b[0],i[1]=f[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==c.area(a,b,f)},c.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{__browserify_Buffer:1,__browserify_process:2}],5:[function(a,b){function c(){this.vertices=[]}function d(a,b,c,d,e){e=e||0;var f=b[1]-a[1],h=a[0]-b[0],i=f*a[0]+h*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*h;return g.eq(m,0,e)?[0,0]:[(k*i-h*l)/m,(f*l-j*i)/m]}var e=(a("__browserify_process"),a("__browserify_Buffer"),a("./Line")),f=a("./Point"),g=a("./Scalar");b.exports=c,c.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},c.prototype.first=function(){return this.vertices[0]},c.prototype.last=function(){return this.vertices[this.vertices.length-1]},c.prototype.clear=function(){this.vertices.length=0},c.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},c.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);f.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},c.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},c.prototype.isReflex=function(a){return f.right(this.at(a-1),this.at(a),this.at(a+1))};var h=[],i=[];c.prototype.canSee=function(a,b){var c,d,g=h,j=i;if(f.leftOn(this.at(a+1),this.at(a),this.at(b))&&f.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=f.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&f.leftOn(this.at(a),this.at(b),this.at(k+1))&&f.rightOn(this.at(a),this.at(b),this.at(k))&&(g[0]=this.at(a),g[1]=this.at(b),j[0]=this.at(k),j[1]=this.at(k+1),c=e.lineInt(g,j),f.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},c.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(e.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),f.left(v.at(x+1),v.at(x),v.at(y+1))&&f.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=d(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),f.left(v.at(x-1),v.at(x),l)&&(o=f.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,e.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)f.leftOn(v.at(x-1),v.at(x),v.at(y))&&f.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=f.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)f.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":3,"./Point":4,"./Scalar":6,__browserify_Buffer:1,__browserify_process:2}],6:[function(a,b){function c(){}a("__browserify_process"),a("__browserify_Buffer");b.exports=c,c.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"~0.4.0","grunt-contrib-jshint":"~0.9.2","grunt-contrib-nodeunit":"~0.1.2","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{__browserify_Buffer:1,__browserify_process:2}],9:[function(a,b){function c(a){this.lowerBound=d.create(),a&&a.lowerBound&&d.copy(this.lowerBound,a.lowerBound),this.upperBound=d.create(),a&&a.upperBound&&d.copy(this.upperBound,a.upperBound)}{var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2"));a("../utils/Utils")}b.exports=c;var e=d.create();c.prototype.setFromPoints=function(a,b,c,f){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?d.rotate(g,a[0],c):d.copy(g,a[0]),d.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;ko;o++)l[o]>h[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]=c},c.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},c.prototype.boundingVolumeCheck=function(a,b){var d;switch(this.boundingVolumeType){case c.BOUNDING_CIRCLE:d=c.boundingRadiusCheck(a,b);break;case c.AABB:d=c.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return d},c.canCollide=function(a,b){return a.type===e.STATIC&&b.type===e.STATIC?!1:a.type===e.KINEMATIC&&b.type===e.STATIC||a.type===e.STATIC&&b.type===e.KINEMATIC?!1:a.type===e.KINEMATIC&&b.type===e.KINEMATIC?!1:a.sleepState===e.SLEEPING&&b.sleepState===e.SLEEPING?!1:a.sleepState===e.SLEEPING&&b.type===e.STATIC||b.sleepState===e.SLEEPING&&a.type===e.STATIC?!1:!0},c.NAIVE=1,c.SAP=2},{"../math/vec2":31,"../objects/Body":32,__browserify_Buffer:1,__browserify_process:2}],11:[function(a,b){function c(a){d.apply(this),a=e.defaults(a,{xmin:-100,xmax:100,ymin:-100,ymax:100,nx:10,ny:10}),this.xmin=a.xmin,this.ymin=a.ymin,this.xmax=a.xmax,this.ymax=a.ymax,this.nx=a.nx,this.ny=a.ny,this.binsizeX=(this.xmax-this.xmin)/this.nx,this.binsizeY=(this.ymax-this.ymin)/this.ny}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Particle"),a("../collision/Broadphase")),e=(a("../math/vec2"),a("../utils/Utils"));b.exports=c,c.prototype=new d,c.prototype.getCollisionPairs=function(a){for(var b=[],c=a.bodies,e=c.length,f=(this.binsizeX,this.binsizeY,this.nx),g=this.ny,h=this.xmin,i=this.ymin,j=this.xmax,k=this.ymax,l=[],m=f*g,n=0;m>n;n++)l.push([]);for(var o=f/(j-h),p=g/(k-i),n=0;n!==e;n++)for(var q=c[n],r=q.aabb,s=Math.max(r.lowerBound[0],h),t=Math.max(r.lowerBound[1],i),u=Math.min(r.upperBound[0],j),v=Math.min(r.upperBound[1],k),w=Math.floor(o*(s-h)),x=Math.floor(p*(t-i)),y=Math.floor(o*(u-h)),z=Math.floor(p*(v-i)),A=w;y>=A;A++)for(var B=x;z>=B;B++){var C=A,D=B,E=C*(g-1)+D;E>=0&&m>E&&l[E].push(q)}for(var n=0;n!==m;n++)for(var F=l[n],A=0,G=F.length;A!==G;A++)for(var q=F[A],B=0;B!==A;B++){var H=F[B];d.canCollide(q,H)&&this.boundingVolumeCheck(q,H)&&b.push(q,H)}return b}},{"../collision/Broadphase":10,"../math/vec2":31,"../shapes/Circle":38,"../shapes/Particle":42,"../shapes/Plane":43,"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],12:[function(a,b){function c(){d.call(this,d.NAIVE)}{var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var e=0,f=b.length;e!==f;e++)for(var g=b[e],h=0;e>h;h++){var i=b[h];d.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c}},{"../collision/Broadphase":10,"../math/vec2":31,"../shapes/Circle":38,"../shapes/Particle":42,"../shapes/Plane":43,"../shapes/Shape":45,__browserify_Buffer:1,__browserify_process:2}],13:[function(a,b){function c(){this.contactEquations=[],this.frictionEquations=[],this.enableFriction=!0,this.slipForce=10,this.frictionCoefficient=.3,this.surfaceVelocity=0,this.reuseObjects=!0,this.reusableContactEquations=[],this.reusableFrictionEquations=[],this.restitution=0,this.stiffness=l.DEFAULT_STIFFNESS,this.relaxation=l.DEFAULT_RELAXATION,this.frictionStiffness=l.DEFAULT_STIFFNESS,this.frictionRelaxation=l.DEFAULT_RELAXATION,this.enableFrictionReduction=!0,this.collidingBodiesLastStep=new k,this.contactSkinSize=.01}function d(a,b){f.set(a.vertices[0],.5*-b.length,-b.radius),f.set(a.vertices[1],.5*b.length,-b.radius),f.set(a.vertices[2],.5*b.length,b.radius),f.set(a.vertices[3],.5*-b.length,b.radius)}function e(a,b,c,d){for(var e=R,i=S,j=T,k=U,l=a,m=b.vertices,n=null,o=0;o!==m.length+1;o++){var p=m[o%m.length],q=m[(o+1)%m.length];f.rotate(e,p,d),f.rotate(i,q,d),h(e,e,c),h(i,i,c),g(j,e,l),g(k,i,l);var r=f.crossLength(j,k);if(null===n&&(n=r),0>=r*n)return!1;n=r}return!0}var f=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2")),g=f.sub,h=f.add,i=f.dot,j=a("../utils/Utils"),k=a("../utils/TupleDictionary"),l=a("../equations/Equation"),m=a("../equations/ContactEquation"),n=a("../equations/FrictionEquation"),o=a("../shapes/Circle"),p=a("../shapes/Convex"),q=a("../shapes/Shape"),r=(a("../objects/Body"),a("../shapes/Rectangle"));b.exports=c;var s=f.fromValues(0,1),t=f.fromValues(0,0),u=f.fromValues(0,0),v=f.fromValues(0,0),w=f.fromValues(0,0),x=f.fromValues(0,0),y=f.fromValues(0,0),z=f.fromValues(0,0),A=f.fromValues(0,0),B=f.fromValues(0,0),C=f.fromValues(0,0),D=f.fromValues(0,0),E=f.fromValues(0,0),F=f.fromValues(0,0),G=f.fromValues(0,0),H=f.fromValues(0,0),I=f.fromValues(0,0),J=f.fromValues(0,0),K=f.fromValues(0,0),L=[];c.prototype.collidedLastStep=function(a,b){var c=0|a.id,d=0|b.id;return!!this.collidingBodiesLastStep.get(c,d)},c.prototype.reset=function(){this.collidingBodiesLastStep.reset();for(var a=this.contactEquations,b=a.length;b--;){var c=a[b],d=c.bodyA.id,e=c.bodyB.id;this.collidingBodiesLastStep.set(d,e,!0)}if(this.reuseObjects){var f=this.contactEquations,g=this.frictionEquations,h=this.reusableFrictionEquations,i=this.reusableContactEquations;j.appendArray(i,f),j.appendArray(h,g)}this.contactEquations.length=this.frictionEquations.length=0},c.prototype.createContactEquation=function(a,b,c,d){var e=this.reusableContactEquations.length?this.reusableContactEquations.pop():new m(a,b);return e.bodyA=a,e.bodyB=b,e.shapeA=c,e.shapeB=d,e.restitution=this.restitution,e.firstImpact=!this.collidedLastStep(a,b),e.stiffness=this.stiffness,e.relaxation=this.relaxation,e.needsUpdate=!0,e.enabled=!0,e.offset=this.contactSkinSize,e},c.prototype.createFrictionEquation=function(a,b,c,d){var e=this.reusableFrictionEquations.length?this.reusableFrictionEquations.pop():new n(a,b);return e.bodyA=a,e.bodyB=b,e.shapeA=c,e.shapeB=d,e.setSlipForce(this.slipForce),e.frictionCoefficient=this.frictionCoefficient,e.relativeVelocity=this.surfaceVelocity,e.enabled=!0,e.needsUpdate=!0,e.stiffness=this.frictionStiffness,e.relaxation=this.frictionRelaxation,e.contactEquations.length=0,e},c.prototype.createFrictionFromContact=function(a){var b=this.createFrictionEquation(a.bodyA,a.bodyB,a.shapeA,a.shapeB);return f.copy(b.contactPointA,a.contactPointA),f.copy(b.contactPointB,a.contactPointB),f.rotate90cw(b.t,a.normalA),b.contactEquations.push(a),b},c.prototype.createFrictionFromAverage=function(a){if(!a)throw new Error("numContacts == 0!");{var b=this.contactEquations[this.contactEquations.length-1],c=this.createFrictionEquation(b.bodyA,b.bodyB,b.shapeA,b.shapeB),d=b.bodyA;b.bodyB}f.set(c.contactPointA,0,0),f.set(c.contactPointB,0,0),f.set(c.t,0,0);for(var e=0;e!==a;e++)b=this.contactEquations[this.contactEquations.length-1-e],b.bodyA===d?(f.add(c.t,c.t,b.normalA),f.add(c.contactPointA,c.contactPointA,b.contactPointA),f.add(c.contactPointB,c.contactPointB,b.contactPointB)):(f.sub(c.t,c.t,b.normalA),f.add(c.contactPointA,c.contactPointA,b.contactPointB),f.add(c.contactPointB,c.contactPointB,b.contactPointA)),c.contactEquations.push(b);var g=1/a;return f.scale(c.contactPointA,c.contactPointA,g),f.scale(c.contactPointB,c.contactPointB,g),f.normalize(c.t,c.t),f.rotate90cw(c.t,c.t),c},c.prototype[q.LINE|q.CONVEX]=c.prototype.convexLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},c.prototype[q.LINE|q.RECTANGLE]=c.prototype.lineRectangle=function(a,b,c,d,e,f,g,h,i){return i?!1:0};var M=new r(1,1),N=f.create();c.prototype[q.CAPSULE|q.CONVEX]=c.prototype[q.CAPSULE|q.RECTANGLE]=c.prototype.convexCapsule=function(a,b,c,e,g,h,i,j,k){var l=N;f.set(l,h.length/2,0),f.rotate(l,l,j),f.add(l,l,i);var m=this.circleConvex(g,h,l,j,a,b,c,e,k,h.radius);f.set(l,-h.length/2,0),f.rotate(l,l,j),f.add(l,l,i);var n=this.circleConvex(g,h,l,j,a,b,c,e,k,h.radius);if(k&&(m||n))return!0;var o=M;d(o,h);var p=this.convexConvex(a,b,c,e,g,o,i,j,k);return p+m+n},c.prototype[q.CAPSULE|q.LINE]=c.prototype.lineCapsule=function(a,b,c,d,e,f,g,h,i){return i?!1:0};var O=f.create(),P=f.create(),Q=new r(1,1);c.prototype[q.CAPSULE|q.CAPSULE]=c.prototype.capsuleCapsule=function(a,b,c,e,g,h,i,j,k){for(var l,m=O,n=P,o=0,p=0;2>p;p++){f.set(m,(0===p?-1:1)*b.length/2,0),f.rotate(m,m,e),f.add(m,m,c);for(var q=0;2>q;q++){f.set(n,(0===q?-1:1)*h.length/2,0),f.rotate(n,n,j),f.add(n,n,i),this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var r=this.circleCircle(a,b,m,e,g,h,n,j,k,b.radius,h.radius);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&r)return!0;o+=r}}this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var s=Q;d(s,b);var t=this.convexCapsule(a,s,c,e,g,h,i,j,k);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&t)return!0;if(o+=t,this.enableFrictionReduction){var l=this.enableFriction;this.enableFriction=!1}d(s,h);var u=this.convexCapsule(g,s,i,j,a,b,c,e,k);return this.enableFrictionReduction&&(this.enableFriction=l),k&&u?!0:(o+=u,this.enableFrictionReduction&&o&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(o)),o)},c.prototype[q.LINE|q.LINE]=c.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},c.prototype[q.PLANE|q.LINE]=c.prototype.planeLine=function(a,b,c,d,e,j,k,l,m){var n=t,o=u,p=v,q=w,r=x,C=y,D=z,E=A,F=B,G=L,H=0;f.set(n,-j.length/2,0),f.set(o,j.length/2,0),f.rotate(p,n,l),f.rotate(q,o,l),h(p,p,k),h(q,q,k),f.copy(n,p),f.copy(o,q),g(r,o,n),f.normalize(C,r),f.rotate90cw(F,C),f.rotate(E,s,d),G[0]=n,G[1]=o;for(var I=0;IK){if(m)return!0;var M=this.createContactEquation(a,e,b,j);H++,f.copy(M.normalA,E),f.normalize(M.normalA,M.normalA),f.scale(D,E,K),g(M.contactPointA,J,D),g(M.contactPointA,M.contactPointA,a.position),g(M.contactPointB,J,k),h(M.contactPointB,M.contactPointB,k),g(M.contactPointB,M.contactPointB,e.position),this.contactEquations.push(M),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(M))}}return m?!1:(this.enableFrictionReduction||H&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(H)),H)},c.prototype[q.PARTICLE|q.CAPSULE]=c.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},c.prototype[q.CIRCLE|q.LINE]=c.prototype.circleLine=function(a,b,c,d,e,j,k,l,m,n,o){var n=n||0,o="undefined"!=typeof o?o:b.radius,p=t,q=u,r=v,s=w,H=x,I=y,J=z,K=A,M=B,N=C,O=D,P=E,Q=F,R=G,S=L;f.set(K,-j.length/2,0),f.set(M,j.length/2,0),f.rotate(N,K,l),f.rotate(O,M,l),h(N,N,k),h(O,O,k),f.copy(K,N),f.copy(M,O),g(I,M,K),f.normalize(J,I),f.rotate90cw(H,J),g(P,c,K);var T=i(P,H);g(s,K,k),g(Q,c,k);var U=o+n;if(Math.abs(T)W&&X>V){if(m)return!0; +var Y=this.createContactEquation(a,e,b,j);return f.scale(Y.normalA,p,-1),f.normalize(Y.normalA,Y.normalA),f.scale(Y.contactPointA,Y.normalA,o),h(Y.contactPointA,Y.contactPointA,c),g(Y.contactPointA,Y.contactPointA,a.position),g(Y.contactPointB,r,k),h(Y.contactPointB,Y.contactPointB,k),g(Y.contactPointB,Y.contactPointB,e.position),this.contactEquations.push(Y),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(Y)),1}}S[0]=K,S[1]=M;for(var Z=0;ZQ&&(f.copy(J,B),L=Q,f.scale(A,s,Q),f.add(A,A,B),K=!0)}}if(K){if(m)return!0;var R=this.createContactEquation(a,i,b,j);return f.sub(R.normalA,J,c),f.normalize(R.normalA,R.normalA),f.scale(R.contactPointA,R.normalA,n),h(R.contactPointA,R.contactPointA,c),g(R.contactPointA,R.contactPointA,a.position),g(R.contactPointB,A,k),h(R.contactPointB,R.contactPointB,k),g(R.contactPointB,R.contactPointB,i.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}if(n>0)for(var N=0;NQ&&(I=Q,f.scale(E,s,Q),f.add(E,E,c),f.copy(H,s),L=!0)}if(L){var R=this.createContactEquation(a,j,b,k);return f.scale(R.normalA,H,-1),f.normalize(R.normalA,R.normalA),f.set(R.contactPointA,0,0),h(R.contactPointA,R.contactPointA,c),g(R.contactPointA,R.contactPointA,a.position),g(R.contactPointB,E,l),h(R.contactPointB,R.contactPointB,l),g(R.contactPointB,R.contactPointB,j.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}return 0},c.prototype[q.CIRCLE]=c.prototype.circleCircle=function(a,b,c,d,e,i,j,k,l,m,n){var o=t,m=m||b.radius,n=n||i.radius;g(o,c,j);var p=m+n;if(f.squaredLength(o)>Math.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,i);return g(q.normalA,j,c),f.normalize(q.normalA,q.normalA),f.scale(q.contactPointA,q.normalA,m),f.scale(q.contactPointB,q.normalA,-n),h(q.contactPointA,q.contactPointA,c),g(q.contactPointA,q.contactPointA,a.position),h(q.contactPointB,q.contactPointB,j),g(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},c.prototype[q.PLANE|q.CONVEX]=c.prototype[q.PLANE|q.RECTANGLE]=c.prototype.planeConvex=function(a,b,c,d,e,j,k,l,m){var n=t,o=u,p=v,q=0;f.rotate(o,s,d);for(var r=0;r!==j.vertices.length;r++){var w=j.vertices[r];if(f.rotate(n,w,l),h(n,n,k),g(p,n,c),i(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,j);g(p,n,c),f.copy(x.normalA,o);var y=i(p,x.normalA);f.scale(p,x.normalA,y),g(x.contactPointB,n,e.position),g(x.contactPointA,n,p),g(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},c.prototype[q.PARTICLE|q.PLANE]=c.prototype.particlePlane=function(a,b,c,d,e,h,j,k,l){var m=t,n=u;k=k||0,g(m,c,j),f.rotate(n,s,k);var o=i(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,h,b);return f.copy(p.normalA,n),f.scale(m,p.normalA,o),g(p.contactPointA,c,m),g(p.contactPointA,p.contactPointA,e.position),g(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},c.prototype[q.CIRCLE|q.PARTICLE]=c.prototype.circleParticle=function(a,b,c,d,e,i,j,k,l){var m=t;if(g(m,j,c),f.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,i);return f.copy(n.normalA,m),f.normalize(n.normalA,n.normalA),f.scale(n.contactPointA,n.normalA,b.radius),h(n.contactPointA,n.contactPointA,c),g(n.contactPointA,n.contactPointA,a.position),g(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};{var V=new o(1),W=f.create(),X=f.create();f.create()}c.prototype[q.PLANE|q.CAPSULE]=c.prototype.planeCapsule=function(a,b,c,d,e,g,i,j,k){var l=W,m=X,n=V;f.set(l,-g.length/2,0),f.rotate(l,l,j),h(l,l,i),f.set(m,g.length/2,0),f.rotate(m,m,j),h(m,m,i),n.radius=g.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},c.prototype[q.CIRCLE|q.PLANE]=c.prototype.circlePlane=function(a,b,c,d,e,j,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;g(x,p,r),f.rotate(y,s,w);var A=i(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,j,b);return f.copy(B.normalA,y),f.scale(B.contactPointB,B.normalA,-o.radius),h(B.contactPointB,B.contactPointB,p),g(B.contactPointB,B.contactPointB,n.position),f.scale(z,B.normalA,A),g(B.contactPointA,x,z),h(B.contactPointA,B.contactPointA,r),g(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},c.prototype[q.CONVEX]=c.prototype[q.CONVEX|q.RECTANGLE]=c.prototype[q.RECTANGLE]=c.prototype.convexConvex=function(a,b,d,e,j,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=c.findSeparatingAxis(b,d,e,k,l,m,p);if(!G)return 0;g(D,l,d),i(p,D)>0&&f.scale(p,p,-1);var H=c.getClosestEdge(b,e,p,!0),I=c.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=d,P=l,Q=e,R=m,S=a,T=j;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];f.rotate(q,W,R),h(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];f.rotate(r,Z,Q),f.rotate(s,$,Q),h(r,r,O),h(s,s,O),g(y,s,r),f.rotate90cw(E,y),f.normalize(E,E),g(D,q,r);var _=i(E,D);(Y===K&&o>=_||Y!==K&&0>=_)&&X++}if(X>=3){if(n)return!0;var ab=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];f.rotate(r,Z,Q),f.rotate(s,$,Q),h(r,r,O),h(s,s,O),g(y,s,r),f.rotate90cw(ab.normalA,y),f.normalize(ab.normalA,ab.normalA),g(D,q,r);var _=i(ab.normalA,D);f.scale(C,ab.normalA,_),g(ab.contactPointA,q,O),g(ab.contactPointA,ab.contactPointA,C),h(ab.contactPointA,ab.contactPointA,O),g(ab.contactPointA,ab.contactPointA,S.position),g(ab.contactPointB,q,P),h(ab.contactPointB,ab.contactPointB,P),g(ab.contactPointB,ab.contactPointB,T.position),this.contactEquations.push(ab),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(ab))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var Y=f.fromValues(0,0);c.projectConvexOntoAxis=function(a,b,c,d,e){var g,h,j=null,k=null,l=Y;f.rotate(l,d,-c);for(var m=0;mj)&&(j=h),(null===k||k>h)&&(k=h);if(k>j){var n=k;k=j,j=n}var o=i(b,d);f.set(e,k+o,j+o)};var Z=f.fromValues(0,0),$=f.fromValues(0,0),_=f.fromValues(0,0),ab=f.fromValues(0,0),bb=f.fromValues(0,0),cb=f.fromValues(0,0);c.findSeparatingAxis=function(a,b,d,e,h,i,j){var k=null,l=!1,m=!1,n=Z,o=$,p=_,q=ab,s=bb,t=cb;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=d;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?f.set(q,0,1):1===x&&f.set(q,1,0),0!==w&&f.rotate(q,q,w),c.projectConvexOntoAxis(a,b,d,q,s),c.projectConvexOntoAxis(e,h,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(f.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=d;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){f.rotate(o,v.vertices[x],w),f.rotate(p,v.vertices[(x+1)%v.vertices.length],w),g(n,p,o),f.rotate90cw(q,n),f.normalize(q,q),c.projectConvexOntoAxis(a,b,d,q,s),c.projectConvexOntoAxis(e,h,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(f.copy(j,q),k=B,m=l)}}return m};var db=f.fromValues(0,0),eb=f.fromValues(0,0),fb=f.fromValues(0,0);c.getClosestEdge=function(a,b,c,d){var e=db,h=eb,j=fb;f.rotate(e,c,-b),d&&f.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){g(h,a.vertices[(n+1)%l],a.vertices[n%l]),f.rotate90cw(j,h),f.normalize(j,j);var o=i(j,e);(-1===k||o>m)&&(k=n%l,m=o)}return k};var gb=f.create(),hb=f.create(),ib=f.create(),jb=f.create(),kb=f.create(),lb=f.create(),mb=f.create();c.prototype[q.CIRCLE|q.HEIGHTFIELD]=c.prototype.circleHeightfield=function(a,b,c,d,e,i,j,k,l,m){var n=i.data,m=m||b.radius,o=i.elementWidth,p=hb,q=gb,r=kb,s=mb,t=lb,u=ib,v=jb,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;for(var B=!1,A=w;x>A;A++){f.set(u,A*o,n[A]),f.set(v,(A+1)*o,n[A+1]),f.add(u,u,j),f.add(v,v,j),f.sub(t,v,u),f.rotate(t,t,Math.PI/2),f.normalize(t,t),f.scale(q,t,-m),f.add(q,q,c),f.sub(p,q,u);var C=f.dot(p,t);if(q[0]>=u[0]&&q[0]=C){if(l)return!0;B=!0,f.scale(p,t,-C),f.add(r,q,p),f.copy(s,t);var D=this.createContactEquation(e,a,i,b);f.copy(D.normalA,s),f.scale(D.contactPointB,D.normalA,-m),h(D.contactPointB,D.contactPointB,c),g(D.contactPointB,D.contactPointB,a.position),f.copy(D.contactPointA,r),f.sub(D.contactPointA,D.contactPointA,e.position),this.contactEquations.push(D),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(D))}}if(B=!1,m>0)for(var A=w;x>=A;A++)if(f.set(u,A*o,n[A]),f.add(u,u,j),f.sub(p,c,u),f.squaredLength(p)q&&(q=0),r>=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;r>u;u++)k[u]s&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return j?!1:0;for(var v=0,u=q;r>u;u++){f.set(m,u*l,k[u]),f.set(n,(u+1)*l,k[u+1]),f.add(m,m,h),f.add(n,n,h);var w=100;f.set(o,.5*(n[0]+m[0]),.5*(n[1]+m[1]-w)),f.sub(p.vertices[0],n,o),f.sub(p.vertices[1],m,o),f.copy(p.vertices[2],p.vertices[1]),f.copy(p.vertices[3],p.vertices[0]),p.vertices[2][1]-=w,p.vertices[3][1]-=w,v+=this.convexConvex(a,b,c,d,e,p,o,0,j)}return v}},{"../equations/ContactEquation":22,"../equations/Equation":23,"../equations/FrictionEquation":24,"../math/vec2":31,"../objects/Body":32,"../shapes/Circle":38,"../shapes/Convex":39,"../shapes/Rectangle":44,"../shapes/Shape":45,"../utils/TupleDictionary":49,"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],14:[function(a,b){function c(){e.call(this,e.SAP),this.axisList=[],this.axisIndex=0;var a=this;this._addBodyHandler=function(b){a.axisList.push(b.body)},this._removeBodyHandler=function(b){var c=a.axisList.indexOf(b.body);-1!==c&&a.axisList.splice(c,1)}}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../utils/Utils")),e=a("../collision/Broadphase");b.exports=c,c.prototype=new e,c.prototype.setWorld=function(a){this.axisList.length=0,d.appendArray(this.axisList,a.bodies),a.off("addBody",this._addBodyHandler).off("removeBody",this._removeBodyHandler),a.on("addBody",this._addBodyHandler).on("removeBody",this._removeBodyHandler),this.world=a},c.sortAxisList=function(a,b){b=0|b;for(var c=1,d=a.length;d>c;c++){for(var e=a[c],f=c-1;f>=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},c.prototype.getCollisionPairs=function(){var a=this.axisList,b=this.result,d=this.axisIndex;b.length=0;for(var f=a.length;f--;){var g=a[f];g.aabbNeedsUpdate&&g.updateAABB()}c.sortAxisList(a,d);for(var h=0,i=0|a.length;h!==i;h++)for(var j=a[h],k=h+1;i>k;k++){var l=a[k],m=l.aabb.lowerBound[d]<=j.aabb.upperBound[d];if(!m)break;e.canCollide(j,l)&&this.boundingVolumeCheck(j,l)&&b.push(j,l)}return b}},{"../collision/Broadphase":10,"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],15:[function(a,b){function c(a,b,c,e){this.type=c,e=d.defaults(e,{collideConnected:!0,wakeUpBodies:!0}),this.equations=[],this.bodyA=a,this.bodyB=b,this.collideConnected=e.collideConnected,e.wakeUpBodies&&(a&&a.wakeUp(),b&&b.wakeUp())}a("__browserify_process"),a("__browserify_Buffer");b.exports=c;var d=a("../utils/Utils");c.prototype.update=function(){throw new Error("method update() not implmemented in this Constraint subclass!")},c.DISTANCE=1,c.GEAR=2,c.LOCK=3,c.PRISMATIC=4,c.REVOLUTE=5,c.prototype.setStiffness=function(a){for(var b=this.equations,c=0;c!==b.length;c++){var d=b[c];d.stiffness=a,d.needsUpdate=!0}},c.prototype.setRelaxation=function(a){for(var b=this.equations,c=0;c!==b.length;c++){var d=b[c];d.relaxation=a,d.needsUpdate=!0}}},{"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],16:[function(a,b){function c(a,b,c){c=g.defaults(c,{localAnchorA:[0,0],localAnchorB:[0,0]}),d.call(this,a,b,d.DISTANCE,c),this.localAnchorA=f.fromValues(c.localAnchorA[0],c.localAnchorA[1]),this.localAnchorB=f.fromValues(c.localAnchorB[0],c.localAnchorB[1]);var h=this.localAnchorA,i=this.localAnchorB;if(this.distance=0,"number"==typeof c.distance)this.distance=c.distance;else{var j=f.create(),k=f.create(),l=f.create();f.rotate(j,h,a.angle),f.rotate(k,i,b.angle),f.add(l,b.position,k),f.sub(l,l,j),f.sub(l,l,a.position),this.distance=f.length(l)}var m;m="undefined"==typeof c.maxForce?Number.MAX_VALUE:c.maxForce;var n=new e(a,b,-m,m);this.equations=[n],this.maxForce=m;var l=f.create(),o=f.create(),p=f.create(),q=this;n.computeGq=function(){var a=this.bodyA,b=this.bodyB,c=a.position,d=b.position;return f.rotate(o,h,a.angle),f.rotate(p,i,b.angle),f.add(l,d,p),f.sub(l,l,o),f.sub(l,l,c),f.length(l)-q.distance},this.setMaxForce(m),this.upperLimitEnabled=!1,this.upperLimit=1,this.lowerLimitEnabled=!1,this.lowerLimit=0,this.position=0}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Constraint")),e=a("../equations/Equation"),f=a("../math/vec2"),g=a("../utils/Utils");b.exports=c,c.prototype=new d;var h=f.create(),i=f.create(),j=f.create();c.prototype.update=function(){var a=this.equations[0],b=this.bodyA,c=this.bodyB,d=(this.distance,b.position),e=c.position,g=this.equations[0],k=a.G;f.rotate(i,this.localAnchorA,b.angle),f.rotate(j,this.localAnchorB,c.angle),f.add(h,e,j),f.sub(h,h,i),f.sub(h,h,d),this.position=f.length(h);var l=!1;if(this.upperLimitEnabled&&this.position>this.upperLimit&&(g.maxForce=0,g.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)g.scale(e.normalA,i,-1),g.sub(e.contactPointA,j,h.position),g.sub(e.contactPointB,k,o.position),g.scale(n,i,c),g.add(e.contactPointA,e.contactPointA,n),-1===a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!==u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)g.scale(f.normalA,i,1),g.sub(f.contactPointA,j,h.position),g.sub(f.contactPointB,k,o.position),g.scale(n,i,d),g.sub(f.contactPointB,f.contactPointB,n),-1===a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!==u&&a.splice(u,1)}},c.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},c.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},c.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)}},{"../equations/ContactEquation":22,"../equations/Equation":23,"../equations/RotationalLockEquation":25,"../math/vec2":31,"./Constraint":15,__browserify_Buffer:1,__browserify_process:2}],20:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,d.REVOLUTE,c);var n=this.maxForce="undefined"!=typeof c.maxForce?c.maxForce:Number.MAX_VALUE;this.pivotA=h.create(),this.pivotB=h.create(),c.worldPivot?(h.sub(this.pivotA,c.worldPivot,a.position),h.sub(this.pivotB,c.worldPivot,b.position),h.rotate(this.pivotA,this.pivotA,-a.angle),h.rotate(this.pivotB,this.pivotB,-b.angle)):(h.copy(this.pivotA,c.localPivotA),h.copy(this.pivotB,c.localPivotB));var o=this.equations=[new e(a,b,-n,n),new e(a,b,-n,n)],p=o[0],q=o[1],r=this;p.computeGq=function(){return h.rotate(i,r.pivotA,a.angle),h.rotate(j,r.pivotB,b.angle),h.add(m,b.position,j),h.sub(m,m,a.position),h.sub(m,m,i),h.dot(m,k)},q.computeGq=function(){return h.rotate(i,r.pivotA,a.angle),h.rotate(j,r.pivotB,b.angle),h.add(m,b.position,j),h.sub(m,m,a.position),h.sub(m,m,i),h.dot(m,l)},q.minForce=p.minForce=-n,q.maxForce=p.maxForce=n,this.motorEquation=new f(a,b),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new g(a,b),this.lowerLimitEquation=new g(a,b),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Constraint")),e=a("../equations/Equation"),f=a("../equations/RotationalVelocityEquation"),g=a("../equations/RotationalLockEquation"),h=a("../math/vec2");b.exports=c;var i=h.create(),j=h.create(),k=h.fromValues(1,0),l=h.fromValues(0,1),m=h.create();c.prototype=new d,c.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)},c.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],m=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>m)o.angle=m,-1===e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!==r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1===e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!==r&&e.splice(r,1)}h.rotate(i,c,a.angle),h.rotate(j,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-h.crossLength(i,k),f.G[3]=1,f.G[4]=0,f.G[5]=h.crossLength(j,k),g.G[0]=0,g.G[1]=-1,g.G[2]=-h.crossLength(i,l),g.G[3]=0,g.G[4]=1,g.G[5]=h.crossLength(j,l)},c.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},c.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},c.prototype.motorIsEnabled=function(){return!!this.motorEnabled},c.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},c.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":23,"../equations/RotationalLockEquation":25,"../equations/RotationalVelocityEquation":26,"../math/vec2":31,"./Constraint":15,__browserify_Buffer:1,__browserify_process:2}],21:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}{var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Equation"));a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},c.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},c.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":31,"./Equation":23,__browserify_Buffer:1,__browserify_process:2}],22:[function(a,b){function c(a,b){d.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=e.create(),this.penetrationVec=e.create(),this.contactPointB=e.create(),this.normalA=e.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Equation")),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeB=function(a,b,c){var d=this.bodyA,f=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=f.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=e.crossLength(g,l),o=e.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,e.add(k,j,h),e.sub(k,k,i),e.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=e.dot(l,k)+this.offset,p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":31,"./Equation":23,__browserify_Buffer:1,__browserify_process:2}],23:[function(a,b){function c(a,b,d,f){this.minForce="undefined"==typeof d?-Number.MAX_VALUE:d,this.maxForce="undefined"==typeof f?Number.MAX_VALUE:f,this.bodyA=a,this.bodyB=b,this.stiffness=c.DEFAULT_STIFFNESS,this.relaxation=c.DEFAULT_RELAXATION,this.G=new e.ARRAY_TYPE(6);for(var g=0;6>g;g++)this.G[g]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}a("__browserify_process"),a("__browserify_Buffer");b.exports=c;{var d=a("../math/vec2"),e=a("../utils/Utils");a("../objects/Body")}c.prototype.constructor=c,c.DEFAULT_STIFFNESS=1e6,c.DEFAULT_RELAXATION=4,c.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},c.prototype.gmult=function(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e},c.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var f=d.create(),g=d.create();c.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=(b.position,c.position,b.angle),e=c.angle;return this.gmult(a,f,d,g,e)+this.offset},c.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.gmult(a,d,f,e,g)+this.relativeVelocity},c.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.vlambda,e=c.vlambda,f=b.wlambda,g=c.wlambda;return this.gmult(a,d,f,e,g)};var h=d.create(),i=d.create();c.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,e=a.angularForce,f=b.force,g=b.angularForce,j=a.invMassSolve,k=b.invMassSolve,l=a.invInertiaSolve,m=b.invInertiaSolve,n=this.G;return d.scale(h,c,j),d.scale(i,f,k),this.gmult(n,h,e*l,i,g*m)},c.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=a.invMassSolve,d=b.invMassSolve,e=a.invInertiaSolve,f=b.invInertiaSolve,g=this.G; +return g[0]*g[0]*c+g[1]*g[1]*c+g[2]*g[2]*e+g[3]*g[3]*d+g[4]*g[4]*d+g[5]*g[5]*f};{var j=d.create(),k=d.create(),l=d.create();d.create(),d.create(),d.create()}c.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,e=j,f=k,g=l,h=b.invMassSolve,i=c.invMassSolve,m=b.invInertiaSolve,n=c.invInertiaSolve,o=this.G;f[0]=o[0],f[1]=o[1],g[0]=o[3],g[1]=o[4],d.scale(e,f,h*a),d.add(b.vlambda,b.vlambda,e),b.wlambda+=m*o[2]*a,d.scale(e,g,i*a),d.add(c.vlambda,c.vlambda,e),c.wlambda+=n*o[5]*a},c.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":31,"../objects/Body":32,"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],24:[function(a,b){function c(a,b,c){e.call(this,a,b,-c,c),this.contactPointA=d.create(),this.contactPointB=d.create(),this.t=d.create(),this.contactEquations=[],this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}{var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2")),e=a("./Equation");a("../utils/Utils")}b.exports=c,c.prototype=new e,c.prototype.constructor=c,c.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},c.prototype.getSlipForce=function(){return this.maxForce},c.prototype.computeB=function(a,b,c){var e=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-d.crossLength(e,g),h[3]=g[0],h[4]=g[1],h[5]=d.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":31,"../utils/Utils":50,"./Equation":23,__browserify_Buffer:1,__browserify_process:2}],25:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var e=this.G;e[2]=1,e[5]=-1}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Equation")),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.constructor=c;var f=e.create(),g=e.create(),h=e.fromValues(1,0),i=e.fromValues(0,1);c.prototype.computeGq=function(){return e.rotate(f,h,this.bodyA.angle+this.angle),e.rotate(g,i,this.bodyB.angle),e.dot(f,g)}},{"../math/vec2":31,"./Equation":23,__browserify_Buffer:1,__browserify_process:2}],26:[function(a,b){function c(a,b){d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}{var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Equation"));a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":31,"./Equation":23,__browserify_Buffer:1,__browserify_process:2}],27:[function(a,b){var c=(a("__browserify_process"),a("__browserify_Buffer"),function(){});b.exports=c,c.prototype={constructor:c,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;if(b){if(void 0!==c[a]&&-1!==c[a].indexOf(b))return!0}else if(void 0!==c[a])return!0;return!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{__browserify_Buffer:1,__browserify_process:2}],28:[function(a,b){function c(a,b,f){if(f=f||{},!(a instanceof d&&b instanceof d))throw new Error("First two arguments must be Material instances.");this.id=c.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof f.friction?Number(f.friction):.3,this.restitution="undefined"!=typeof f.restitution?Number(f.restitution):0,this.stiffness="undefined"!=typeof f.stiffness?Number(f.stiffness):e.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof f.relaxation?Number(f.relaxation):e.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof f.frictionStiffness?Number(f.frictionStiffness):e.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof f.frictionRelaxation?Number(f.frictionRelaxation):e.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof f.surfaceVelocity?Number(f.surfaceVelocity):0,this.contactSkinSize=.005}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Material")),e=a("../equations/Equation");b.exports=c,c.idCounter=0},{"../equations/Equation":23,"./Material":29,__browserify_Buffer:1,__browserify_process:2}],29:[function(a,b){function c(a){this.id=a||c.idCounter++}a("__browserify_process"),a("__browserify_Buffer");b.exports=c,c.idCounter=0},{__browserify_Buffer:1,__browserify_process:2}],30:[function(a,b){var c=(a("__browserify_process"),a("__browserify_Buffer"),{});c.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},c.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var d=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(c._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&c._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return d.push(e[0],e[1],e[2]),d},c._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},c._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=c},{__browserify_Buffer:1,__browserify_process:2}],31:[function(a,b){var c=(a("__browserify_process"),a("__browserify_Buffer"),b.exports={}),d=a("../utils/Utils");c.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},c.crossVZ=function(a,b,d){return c.rotate(a,b,-Math.PI/2),c.scale(a,a,d),a},c.crossZV=function(a,b,d){return c.rotate(a,d,Math.PI/2),c.scale(a,a,b),a},c.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},c.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},c.toLocalFrame=function(a,b,d,e){c.copy(a,b),c.sub(a,a,d),c.rotate(a,a,-e)},c.toGlobalFrame=function(a,b,d,e){c.copy(a,b),c.rotate(a,a,e),c.add(a,a,d)},c.centroid=function(a,b,d,e){return c.add(a,b,d),c.add(a,a,e),c.scale(a,a,1/3),a},c.create=function(){var a=new d.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},c.clone=function(a){var b=new d.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},c.fromValues=function(a,b){var c=new d.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},c.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},c.set=function(a,b,c){return a[0]=b,a[1]=c,a},c.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},c.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},c.sub=c.subtract,c.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},c.mul=c.multiply,c.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},c.div=c.divide,c.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},c.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},c.dist=c.distance,c.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},c.sqrDist=c.squaredDistance,c.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},c.len=c.length,c.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},c.sqrLen=c.squaredLength,c.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},c.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},c.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},c.str=function(a){return"vec2("+a[0]+", "+a[1]+")"}},{"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],32:[function(a,b){function c(a){a=a||{},h.call(this),this.id=++c._idCounter,this.world=null,this.shapes=[],this.shapeOffsets=[],this.shapeAngles=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.position=d.fromValues(0,0),a.position&&d.copy(this.position,a.position),this.interpolatedPosition=d.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=d.fromValues(0,0),this.previousAngle=0,this.velocity=d.fromValues(0,0),a.velocity&&d.copy(this.velocity,a.velocity),this.vlambda=d.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=d.create(),a.force&&d.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=c.STATIC,this.type="undefined"!=typeof a.type?a.type:a.mass?c.DYNAMIC:c.STATIC,this.boundingRadius=0,this.aabb=new g,this.aabbNeedsUpdate=!0,this.allowSleep=!0,this.wantsToSleep=!1,this.sleepState=c.AWAKE,this.sleepSpeedLimit=.2,this.sleepTimeLimit=1,this.gravityScale=1,this.timeLastSleepy=0,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2")),e=a("poly-decomp"),f=a("../shapes/Convex"),g=a("../collision/AABB"),h=a("../events/EventEmitter");b.exports=c,c.prototype=new h,c._idCounter=0,c.prototype.updateSolveMassProperties=function(){this.sleepState===c.SLEEPING||this.type===c.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},c.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},c.prototype.getArea=function(){for(var a=0,b=0;be&&(e=h+i)}this.boundingRadius=e},c.prototype.addShape=function(a,b,c){c=c||0,b=b?d.fromValues(b[0],b[1]):d.fromValues(0,0),this.shapes.push(a),this.shapeOffsets.push(b),this.shapeAngles.push(c),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},c.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.shapeOffsets.splice(b,1),this.shapeAngles.splice(b,1),this.aabbNeedsUpdate=!0,!0):!1},c.prototype.updateMassProperties=function(){if(this.type===c.STATIC||this.type===c.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,e=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=d.squaredLength(this.shapeOffsets[g]),j=h.computeMomentOfInertia(e);f+=j+e*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass}};var k=d.create();c.prototype.applyForce=function(a,b){var c=k;d.sub(c,b,this.position),d.add(this.force,this.force,a);var e=d.crossLength(c,a);this.angularForce+=e},c.prototype.toLocalFrame=function(a,b){d.toLocalFrame(a,b,this.position,this.angle)},c.prototype.toWorldFrame=function(a,b){d.toGlobalFrame(a,b,this.position,this.angle)},c.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var g=new e.Polygon;if(g.vertices=a,g.makeCCW(),"number"==typeof b.removeCollinearPoints&&g.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!g.isSimple())return!1;this.concavePath=g.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=c.AWAKE):(this.idleTime+=e,this.sleepState=c.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},c.prototype.getVelocityFromPosition=function(a,b){return a=a||d.create(),d.sub(a,this.position,this.previousPosition),d.scale(a,a,1/b),a},c.prototype.getAngularVelocityFromPosition=function(a){return(this.angle-this.previousAngle)/a},c.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)},c.sleepyEvent={type:"sleepy"},c.sleepEvent={type:"sleep"},c.wakeUpEvent={type:"wakeup"},c.DYNAMIC=1,c.STATIC=2,c.KINEMATIC=4,c.AWAKE=0,c.SLEEPY=1,c.SLEEPING=2},{"../collision/AABB":9,"../events/EventEmitter":27,"../math/vec2":31,"../shapes/Convex":39,__browserify_Buffer:1,__browserify_process:2,"poly-decomp":7}],33:[function(a,b){function c(a,b,c){c=c||{},e.call(this,a,b,c),this.localAnchorA=d.fromValues(0,0),this.localAnchorB=d.fromValues(0,0),c.localAnchorA&&d.copy(this.localAnchorA,c.localAnchorA),c.localAnchorB&&d.copy(this.localAnchorB,c.localAnchorB),c.worldAnchorA&&this.setWorldAnchorA(c.worldAnchorA),c.worldAnchorB&&this.setWorldAnchorB(c.worldAnchorB);var f=d.create(),g=d.create();this.getWorldAnchorA(f),this.getWorldAnchorB(g);var h=d.distance(f,g);this.restLength="number"==typeof c.restLength?c.restLength:h}{var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2")),e=a("./Spring");a("../utils/Utils")}b.exports=c,c.prototype=new e,c.prototype.setWorldAnchorA=function(a){this.bodyA.toLocalFrame(this.localAnchorA,a)},c.prototype.setWorldAnchorB=function(a){this.bodyB.toLocalFrame(this.localAnchorB,a)},c.prototype.getWorldAnchorA=function(a){this.bodyA.toWorldFrame(a,this.localAnchorA)},c.prototype.getWorldAnchorB=function(a){this.bodyB.toWorldFrame(a,this.localAnchorB)};var f=d.create(),g=d.create(),h=d.create(),i=d.create(),j=d.create(),k=d.create(),l=d.create(),m=d.create(),n=d.create();c.prototype.applyForce=function(){var a=this.stiffness,b=this.damping,c=this.restLength,e=this.bodyA,o=this.bodyB,p=f,q=g,r=h,s=i,t=n,u=j,v=k,w=l,x=m;this.getWorldAnchorA(u),this.getWorldAnchorB(v),d.sub(w,u,e.position),d.sub(x,v,o.position),d.sub(p,v,u);var y=d.len(p);d.normalize(q,p),d.sub(r,o.velocity,e.velocity),d.crossZV(t,o.angularVelocity,x),d.add(r,r,t),d.crossZV(t,e.angularVelocity,w),d.sub(r,r,t),d.scale(s,q,-a*(y-c)-b*d.dot(r,q)),d.sub(e.force,e.force,s),d.add(o.force,o.force,s);var z=d.crossLength(w,s),A=d.crossLength(x,s);e.angularForce-=z,o.angularForce+=A}},{"../math/vec2":31,"../utils/Utils":50,"./Spring":35,__browserify_Buffer:1,__browserify_process:2}],34:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,c),this.restAngle="number"==typeof c.restAngle?c.restAngle:b.angle-a.angle}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2"),a("./Spring"));b.exports=c,c.prototype=new d,c.prototype.applyForce=function(){var a=this.stiffness,b=this.damping,c=this.restAngle,d=this.bodyA,e=this.bodyB,f=e.angle-d.angle,g=e.angularVelocity-d.angularVelocity,h=-a*(f-c)-b*g*0;d.angularForce-=h,e.angularForce+=h}},{"../math/vec2":31,"./Spring":35,__browserify_Buffer:1,__browserify_process:2}],35:[function(a,b){function c(a,b,c){c=d.defaults(c,{stiffness:100,damping:1}),this.stiffness=c.stiffness,this.damping=c.damping,this.bodyA=a,this.bodyB=b}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../math/vec2"),a("../utils/Utils"));b.exports=c,c.prototype.applyForce=function(){}},{"../math/vec2":31,"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],36:[function(a,b){a("__browserify_process"),a("__browserify_Buffer");b.exports={AABB:a("./collision/AABB"),AngleLockEquation:a("./equations/AngleLockEquation"),Body:a("./objects/Body"),Broadphase:a("./collision/Broadphase"),Capsule:a("./shapes/Capsule"),Circle:a("./shapes/Circle"),Constraint:a("./constraints/Constraint"),ContactEquation:a("./equations/ContactEquation"),ContactMaterial:a("./material/ContactMaterial"),Convex:a("./shapes/Convex"),DistanceConstraint:a("./constraints/DistanceConstraint"),Equation:a("./equations/Equation"),EventEmitter:a("./events/EventEmitter"),FrictionEquation:a("./equations/FrictionEquation"),GearConstraint:a("./constraints/GearConstraint"),GridBroadphase:a("./collision/GridBroadphase"),GSSolver:a("./solver/GSSolver"),Heightfield:a("./shapes/Heightfield"),Line:a("./shapes/Line"),LockConstraint:a("./constraints/LockConstraint"),Material:a("./material/Material"),Narrowphase:a("./collision/Narrowphase"),NaiveBroadphase:a("./collision/NaiveBroadphase"),Particle:a("./shapes/Particle"),Plane:a("./shapes/Plane"),RevoluteConstraint:a("./constraints/RevoluteConstraint"),PrismaticConstraint:a("./constraints/PrismaticConstraint"),Rectangle:a("./shapes/Rectangle"),RotationalVelocityEquation:a("./equations/RotationalVelocityEquation"),SAPBroadphase:a("./collision/SAPBroadphase"),Shape:a("./shapes/Shape"),Solver:a("./solver/Solver"),Spring:a("./objects/Spring"),LinearSpring:a("./objects/LinearSpring"),RotationalSpring:a("./objects/RotationalSpring"),Utils:a("./utils/Utils"),World:a("./world/World"),vec2:a("./math/vec2"),version:a("../package.json").version}},{"../package.json":8,"./collision/AABB":9,"./collision/Broadphase":10,"./collision/GridBroadphase":11,"./collision/NaiveBroadphase":12,"./collision/Narrowphase":13,"./collision/SAPBroadphase":14,"./constraints/Constraint":15,"./constraints/DistanceConstraint":16,"./constraints/GearConstraint":17,"./constraints/LockConstraint":18,"./constraints/PrismaticConstraint":19,"./constraints/RevoluteConstraint":20,"./equations/AngleLockEquation":21,"./equations/ContactEquation":22,"./equations/Equation":23,"./equations/FrictionEquation":24,"./equations/RotationalVelocityEquation":26,"./events/EventEmitter":27,"./material/ContactMaterial":28,"./material/Material":29,"./math/vec2":31,"./objects/Body":32,"./objects/LinearSpring":33,"./objects/RotationalSpring":34,"./objects/Spring":35,"./shapes/Capsule":37,"./shapes/Circle":38,"./shapes/Convex":39,"./shapes/Heightfield":40,"./shapes/Line":41,"./shapes/Particle":42,"./shapes/Plane":43,"./shapes/Rectangle":44,"./shapes/Shape":45,"./solver/GSSolver":46,"./solver/Solver":47,"./utils/Utils":50,"./world/World":54,__browserify_Buffer:1,__browserify_process:2}],37:[function(a,b){function c(a,b){this.length=a||1,this.radius=b||1,d.call(this,d.CAPSULE)}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Shape")),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.computeMomentOfInertia=function(a){var b=this.radius,c=this.length+b,d=2*b;return a*(d*d+c*c)/12},c.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius+this.length/2},c.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius+2*this.radius*this.length};var f=e.create();c.prototype.computeAABB=function(a,b,c){var d=this.radius;e.set(f,this.length/2,0),0!==c&&e.rotate(f,f,c),e.set(a.upperBound,Math.max(f[0]+d,-f[0]+d),Math.max(f[1]+d,-f[1]+d)),e.set(a.lowerBound,Math.min(f[0]-d,-f[0]-d),Math.min(f[1]-d,-f[1]-d)),e.add(a.lowerBound,a.lowerBound,b),e.add(a.upperBound,a.upperBound,b)}},{"../math/vec2":31,"./Shape":45,__browserify_Buffer:1,__browserify_process:2}],38:[function(a,b){function c(a){this.radius=a||1,d.call(this,d.CIRCLE)}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Shape")),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},c.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},c.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},c.prototype.computeAABB=function(a,b){var c=this.radius;e.set(a.upperBound,c,c),e.set(a.lowerBound,-c,-c),b&&(e.add(a.lowerBound,a.lowerBound,b),e.add(a.upperBound,a.upperBound,b))}},{"../math/vec2":31,"./Shape":45,__browserify_Buffer:1,__browserify_process:2}],39:[function(a,b){function c(a,b){this.vertices=[],this.axes=[];for(var c=0;cf)&&(f=d),(null===h||h>d)&&(h=d);if(h>f){var j=h;h=f,f=j}e.set(b,h,f)},c.prototype.projectOntoWorldAxis=function(a,b,c,d){var f=h;this.projectOntoLocalAxis(a,d),0!==c?e.rotate(f,a,c):f=a;var g=e.dot(b,f);e.set(d,d[0]+g,d[1]+g)},c.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bg;f=g,g++){var h=this.vertices[f],i=this.vertices[g],j=Math.abs(e.crossLength(h,i)),k=e.dot(i,i)+e.dot(i,h)+e.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},c.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=e.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},c.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},c.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,d=0;d!==a.length;d++){var e=a[d],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=c.triangleArea(f,g,h);this.area+=i}},c.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)}},{"../math/polyk":30,"../math/vec2":31,"./Shape":45,__browserify_Buffer:1,__browserify_process:2,"poly-decomp":7}],40:[function(a,b){function c(a,b){if(b=e.defaults(b,{maxValue:null,minValue:null,elementWidth:.1}),null===b.minValue||null===b.maxValue){b.maxValue=a[0],b.minValue=a[0];for(var c=0;c!==a.length;c++){var f=a[c];f>b.maxValue&&(b.maxValue=f),f=w*w)break}for(c.updateMultipliers(k,q,1/a),x=0;x!==l;x++){var z=k[x];if(z instanceof h){for(var A=0,B=0;B!==z.contactEquations.length;B++)A+=z.contactEquations[B].multiplier;A*=z.frictionCoefficient/z.contactEquations.length,z.maxForce=A,z.minForce=-A}}}for(f=0;f!==i;f++){for(w=0,x=0;x!==l;x++){v=k[x];var y=c.iterateEquation(x,v,v.epsilon,u,t,q,p,a,f);w+=Math.abs(y)}if(this.usedIterations++,m>=w*w)break}for(r=0;r!==o;r++)n[r].addConstraintVelocity();c.updateMultipliers(k,q,1/a)}},c.updateMultipliers=function(a,b,c){for(var d=a.length;d--;)a[d].multiplier=b[d]*c +},c.iterateEquation=function(a,b,c,d,e,f,g,h){var i=d[a],j=e[a],k=f[a],l=b.computeGWlambda(),m=b.maxForce,n=b.minForce;g&&(i=0);var o=j*(i-l-c*k),p=k+o;return n*h>p?o=n*h-k:p>m*h&&(o=m*h-k),f[a]+=o,b.addToWlambda(o),o}},{"../equations/FrictionEquation":24,"../math/vec2":31,"../utils/Utils":50,"./Solver":47,__browserify_Buffer:1,__browserify_process:2}],47:[function(a,b){function c(a,b){a=a||{},d.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../utils/Utils"),a("../events/EventEmitter"));b.exports=c,c.prototype=new d,c.prototype.solve=function(){throw new Error("Solver.solve should be implemented by subclasses!")};var e={bodies:[]};c.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),e.bodies.length=0,b.getBodies(e.bodies),e.bodies.length&&this.solve(a,e))},c.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},c.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},c.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},c.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},c.prototype.removeAllEquations=function(){this.equations.length=0},c.GS=1,c.ISLAND=2},{"../events/EventEmitter":27,"../utils/Utils":50,__browserify_Buffer:1,__browserify_process:2}],48:[function(a,b){function c(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=[],this.tmpDict=new e,this.tmpArray1=[]}function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}{var e=(a("__browserify_process"),a("__browserify_Buffer"),a("./TupleDictionary"));a("./Utils")}b.exports=c,c.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d),f=b.getByKey(d);e&&!f&&this.recordPool.push(e)}a.reset(),a.copy(b),b.reset()},c.prototype.setOverlapping=function(a,b,c,e){var f=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!f.get(b.id,e.id)){var g;this.recordPool.length?(g=this.recordPool.pop(),g.set(a,b,c,e)):g=new d(a,b,c,e),f.set(b.id,e.id,g)}},c.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},c.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},c.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},c.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},c.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},c.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},c.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},c.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b},d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{"./TupleDictionary":49,"./Utils":50,__browserify_Buffer:1,__browserify_process:2}],49:[function(a,b){function c(){this.data={},this.keys=[]}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("./Utils"));b.exports=c,c.prototype.getKey=function(a,b){return a=0|a,b=0|b,(0|a)===(0|b)?-1:0|((0|a)>(0|b)?a<<16|65535&b:b<<16|65535&a)},c.prototype.getByKey=function(a){return a=0|a,this.data[a]},c.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},c.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},c.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},c.prototype.copy=function(a){this.reset(),d.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":50,__browserify_Buffer:1,__browserify_process:2}],50:[function(a,b){function c(){}a("__browserify_process"),a("__browserify_Buffer");b.exports=c,c.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},c.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},c.ARRAY_TYPE=window.Float32Array||Array,c.extend=function(a,b){for(var c in b)a[c]=b[c]},c.defaults=function(a,b){a=a||{};for(var c in b)c in a||(a[c]=b[c]);return a}},{__browserify_Buffer:1,__browserify_process:2}],51:[function(a,b){function c(){this.equations=[],this.bodies=[]}var d=(a("__browserify_process"),a("__browserify_Buffer"),a("../objects/Body"));b.exports=c,c.prototype.reset=function(){this.equations.length=this.bodies.length=0};var e=[];c.prototype.getBodies=function(a){var b=a||[],c=this.equations;e.length=0;for(var d=0;d!==c.length;d++){var f=c[d];-1===e.indexOf(f.bodyA.id)&&(b.push(f.bodyA),e.push(f.bodyA.id)),-1===e.indexOf(f.bodyB.id)&&(b.push(f.bodyB),e.push(f.bodyB.id))}return b},c.prototype.wantsToSleep=function(){for(var a=0;a1e3*a));g++);this.time+=b;for(var h=this.time%a,i=h/a,j=0;j!==this.bodies.length;j++){var k=this.bodies[j];k.type!==l.STATIC&&k.sleepState!==l.SLEEPING?(e.sub(x,k.position,k.previousPosition),e.scale(x,x,i),e.add(k.interpolatedPosition,k.position,x),k.interpolatedAngle=k.angle+(k.angle-k.previousAngle)*i):(e.copy(k.interpolatedPosition,k.position),k.interpolatedAngle=k.angle)}}};var y=[];c.prototype.internalStep=function(a){this.stepping=!0;var b,d,f=this,g=this.doProfiling,h=this.springs.length,i=this.springs,j=this.bodies,k=this.gravity,m=this.solver,n=this.bodies.length,o=this.broadphase,p=this.narrowphase,r=this.constraints,s=u,t=(e.scale,e.add),v=(e.rotate,this.islandManager);if(this.overlapKeeper.tick(),this.lastTimeStep=a,g&&(b=performance.now()),this.useWorldGravityAsFrictionGravity){var w=e.length(this.gravity);0===w&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=w)}if(this.applyGravity)for(var x=0;x!==n;x++){var z=j[x],A=z.force;z.type===l.DYNAMIC&&z.sleepState!==l.SLEEPING&&(e.scale(s,k,z.mass*z.gravityScale),t(A,A,s))}if(this.applySpringForces)for(var x=0;x!==h;x++){var B=i[x];B.applyForce()}if(this.applyDamping)for(var x=0;x!==n;x++){var z=j[x];z.type===l.DYNAMIC&&z.applyDamping(a)}for(var C=o.getCollisionPairs(this),D=this.disabledBodyCollisionPairs,x=D.length-2;x>=0;x-=2)for(var E=C.length-2;E>=0;E-=2)(D[x]===C[E]&&D[x+1]===C[E+1]||D[x+1]===C[E]&&D[x]===C[E+1])&&C.splice(E,2);var F=r.length;for(x=0;x!==F;x++){var G=r[x];if(!G.collideConnected)for(var E=C.length-2;E>=0;E-=2)(G.bodyA===C[E]&&G.bodyB===C[E+1]||G.bodyB===C[E]&&G.bodyA===C[E+1])&&C.splice(E,2)}this.postBroadphaseEvent.pairs=C,this.emit(this.postBroadphaseEvent),p.reset(this);for(var x=0,H=C.length;x!==H;x+=2)for(var I=C[x],J=C[x+1],K=0,L=I.shapes.length;K!==L;K++)for(var M=I.shapes[K],N=I.shapeOffsets[K],O=I.shapeAngles[K],P=0,Q=J.shapes.length;P!==Q;P++){var R=J.shapes[P],S=J.shapeOffsets[P],T=J.shapeAngles[P],U=this.defaultContactMaterial;if(M.material&&R.material){var V=this.getContactMaterial(M.material,R.material);V&&(U=V)}this.runNarrowphase(p,I,M,N,O,J,R,S,T,U,this.frictionGravity)}for(var x=0;x!==n;x++){var W=j[x];W._wakeUpAfterNarrowphase&&(W.wakeUp(),W._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var X=this.endContactEvent,P=y.length;P--;){var Y=y[P];X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,this.emit(X)}}var Z=this.preSolveEvent;Z.contactEquations=p.contactEquations,Z.frictionEquations=p.frictionEquations,this.emit(Z);var F=r.length;for(x=0;x!==F;x++)r[x].update();if(p.contactEquations.length||p.frictionEquations.length||r.length)if(this.islandSplit){for(v.equations.length=0,q.appendArray(v.equations,p.contactEquations),q.appendArray(v.equations,p.frictionEquations),x=0;x!==F;x++)q.appendArray(v.equations,r[x].equations);v.split(this);for(var x=0;x!==v.islands.length;x++){var $=v.islands[x];$.equations.length&&m.solveIsland(a,$)}}else{for(m.addEquations(p.contactEquations),m.addEquations(p.frictionEquations),x=0;x!==F;x++)m.addEquations(r[x].equations);this.solveConstraints&&m.solve(a,this),m.removeAllEquations()}for(var x=0;x!==n;x++){var W=j[x];W.sleepState!==l.SLEEPING&&W.type!==l.STATIC&&c.integrateBody(W,a)}for(var x=0;x!==n;x++)j[x].setZeroForce();if(g&&(d=performance.now(),f.lastStepTime=d-b),this.emitImpactEvent&&this.has("impact"))for(var _=this.impactEvent,x=0;x!==p.contactEquations.length;x++){var ab=p.contactEquations[x];ab.firstImpact&&(_.bodyA=ab.bodyA,_.bodyB=ab.bodyB,_.shapeA=ab.shapeA,_.shapeB=ab.shapeB,_.contactEquation=ab,this.emit(_))}if(this.sleepMode===c.BODY_SLEEPING)for(x=0;x!==n;x++)j[x].sleepTick(this.time,!1,a);else if(this.sleepMode===c.ISLAND_SLEEPING&&this.islandSplit){for(x=0;x!==n;x++)j[x].sleepTick(this.time,!0,a);for(var x=0;x0,a.frictionCoefficient=k.friction;var p;p=b.type===l.STATIC||b.type===l.KINEMATIC?g.mass:g.type===l.STATIC||g.type===l.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*m*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===l.DYNAMIC&&g.sleepState===l.SLEEPING&&b.sleepState===l.AWAKE&&b.type!==l.STATIC){var z=e.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var d=this.bodies,b=d.length-1;b>=0;b--)this.removeBody(d[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);c.apply(this)},c.prototype.clone=function(){var a=new c;return a.fromJSON(this.toJSON()),a};var B=e.create(),C=e.fromValues(0,0),D=e.fromValues(0,0);c.prototype.hitTest=function(a,b,c){c=c||0;var d=new l({position:a}),k=new j,m=a,n=0,o=B,p=C,q=D;d.addShape(k);for(var r=this.narrowphase,s=[],t=0,u=b.length;t!==u;t++)for(var v=b[t],w=0,x=v.shapes.length;w!==x;w++){var y=v.shapes[w],z=v.shapeOffsets[w]||p,A=v.shapeAngles[w]||0;e.rotate(o,z,v.angle),e.add(o,o,v.position);var E=A+v.angle;(y instanceof f&&r.circleParticle(v,y,o,E,d,k,m,n,!0)||y instanceof g&&r.particleConvex(d,k,m,n,v,y,o,E,!0)||y instanceof h&&r.particlePlane(d,k,m,n,v,y,o,E,!0)||y instanceof i&&r.particleCapsule(d,k,m,n,v,y,o,E,!0)||y instanceof j&&e.squaredLength(e.sub(q,o,a))0&&this.enable(a[d],b,!0));else a instanceof Phaser.Group?this.enable(a.children,b,c):(this.enableBody(a,b),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){var b=a.pairs.length;if(this.postBroadphaseCallback&&b>0)for(;b-=2;)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.shapeB,a.shapeA,a.contactEquations)},endContactHandler:function(a){this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.shapeB,a.shapeA)},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){var b=this.everythingCollisionGroup.mask;"undefined"==typeof a&&(b=this.boundsCollisionGroup.mask),this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b)},setBounds:function(a,b,c,d,e,f,g,h,i){"undefined"==typeof e&&(e=!0),"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=!0),"undefined"==typeof h&&(h=!0),"undefined"==typeof i&&(i=!0),this.walls.left&&this.world.removeBody(this.walls.left),this.walls.right&&this.world.removeBody(this.walls.right),this.walls.top&&this.world.removeBody(this.walls.top),this.walls.bottom&&this.world.removeBody(this.walls.bottom),e&&(this.walls.left=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:1.5707963267948966}),this.walls.left.addShape(new p2.Plane),i&&(this.walls.left.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.left)),f&&(this.walls.right=new p2.Body({mass:0,position:[this.pxmi(a+c),this.pxmi(b)],angle:-1.5707963267948966}),this.walls.right.addShape(new p2.Plane),i&&(this.walls.right.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.right)),g&&(this.walls.top=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:-3.141592653589793}),this.walls.top.addShape(new p2.Plane),i&&(this.walls.top.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.top)),h&&(this.walls.bottom=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b+d)]}),this.walls.bottom.addShape(new p2.Plane),i&&(this.walls.bottom.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.bottom))},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||this.world.step(this.useElapsedTime?this.game.time.physicsElapsed:this.frameRate)},clear:function(){this.world.clear(),this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this._collisionGroupID=2,this.boundsCollidesWith=[]},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return this.world.addSpring(a instanceof Phaser.Physics.P2.Spring||a instanceof Phaser.Physics.P2.RotationalSpring?a.data:a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return this.world.removeSpring(a instanceof Phaser.Physics.P2.Spring||a instanceof Phaser.Physics.P2.RotationalSpring?a.data:a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,c,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.DistanceConstraint(this,a,b,c,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,c,d){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.GearConstraint(this,a,b,c,d)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,c,d,e,f){return a=this.getBody(a),c=this.getBody(c),a&&c?this.addConstraint(new Phaser.Physics.P2.RevoluteConstraint(this,a,b,c,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,c,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.LockConstraint(this,a,b,c,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,c,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.PrismaticConstraint(this,a,b,c,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a +},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var c=new Phaser.Physics.P2.Material(a);return this.materials.push(c),"undefined"!=typeof b&&b.setMaterial(c),c},createContactMaterial:function(a,b,c){"undefined"==typeof a&&(a=this.createMaterial()),"undefined"==typeof b&&(b=this.createMaterial());var d=new Phaser.Physics.P2.ContactMaterial(a,b,c);return this.addContactMaterial(d)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof Phaser.Physics.P2.Body?a.data:a.body&&a.body.type===Phaser.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b].parent);return a},hitTest:function(a,b,c,d){"undefined"==typeof b&&(b=this.world.bodies),"undefined"==typeof c&&(c=5),"undefined"==typeof d&&(d=!1);for(var e=[this.pxmi(a.x),this.pxmi(a.y)],f=[],g=b.length;g--;)b[g]instanceof Phaser.Physics.P2.Body&&(!d||b[g].data.type!==p2.Body.STATIC)?f.push(b[g].data):b[g]instanceof p2.Body&&b[g].parent&&(!d||b[g].type!==p2.Body.STATIC)?f.push(b[g]):b[g]instanceof Phaser.Sprite&&b[g].hasOwnProperty("body")&&(!d||b[g].body.data.type!==p2.Body.STATIC)&&f.push(b[g].body.data);return this.world.hitTest(e,f,c)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var c=new Phaser.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(c),a&&this.setCollisionGroup(a,c),c},setCollisionGroup:function(a,b){if(a instanceof Phaser.Group)for(var c=0;ce;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=0},convertTilemap:function(a,b,c,d){b=a.getLayer(b),"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.index>-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(Phaser.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(Phaser.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),Phaser.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},Phaser.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},Phaser.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},Phaser.Physics.P2.PointProxy.prototype.constructor=Phaser.Physics.P2.PointProxy,Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),Phaser.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},Phaser.Physics.P2.InversePointProxy.prototype.constructor=Phaser.Physics.P2.InversePointProxy,Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),Phaser.Physics.P2.Body=function(a,b,c,d,e){b=b||null,c=c||0,d=d||0,"undefined"==typeof e&&(e=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=Phaser.Physics.P2JS,this.offset=new Phaser.Point,this.data=new p2.Body({position:[this.world.pxmi(c),this.world.pxmi(d)],mass:e}),this.data.parent=this,this.velocity=new Phaser.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new Phaser.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new Phaser.Point,this.onBeginContact=new Phaser.Signal,this.onEndContact=new Phaser.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},Phaser.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbacksContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if("undefined"==typeof b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if("undefined"==typeof c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass()},applyDamping:function(a){this.data.applyDamping(a)},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0]),this.sprite.y=this.world.mpxi(this.data.position[1]),this.fixedRotation||(this.sprite.rotation=this.data.angle)},reset:function(a,b,c,d){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;ad;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}else b instanceof p2.Plane?this.drawPlane(j,i[0]*this.ppu,-i[1]*this.ppu,c,f,5*g,10*g,10*g,100*this.ppu,a):b instanceof p2.Line?this.drawLine(j,b.length*this.ppu,f,g):b instanceof p2.Rectangle&&this.drawRectangle(j,i[0]*this.ppu,-i[1]*this.ppu,a,b.width*this.ppu,b.height*this.ppu,f,c,g);d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){"undefined"==typeof i&&(i=1),"undefined"==typeof g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){"undefined"==typeof g&&(g=1),"undefined"==typeof f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){"undefined"==typeof d&&(d=1),"undefined"==typeof c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if("undefined"==typeof f&&(f=1),"undefined"==typeof d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for("undefined"==typeof e&&(e=1),"undefined"==typeof c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;"undefined"==typeof f&&(f=1),"undefined"==typeof d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.len?b:b+"0"}}),Phaser.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=100),"undefined"==typeof f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},Phaser.Physics.P2.Spring.prototype.constructor=Phaser.Physics.P2.Spring,Phaser.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,"undefined"==typeof d&&(d=null),"undefined"==typeof e&&(e=100),"undefined"==typeof f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},Phaser.Physics.P2.Spring.prototype.constructor=Phaser.Physics.P2.Spring,Phaser.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},Phaser.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),Phaser.Physics.P2.Material.prototype.constructor=Phaser.Physics.P2.Material,Phaser.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},Phaser.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),Phaser.Physics.P2.ContactMaterial.prototype.constructor=Phaser.Physics.P2.ContactMaterial,Phaser.Physics.P2.CollisionGroup=function(a){this.mask=a},Phaser.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){"undefined"==typeof d&&(d=100),"undefined"==typeof e&&(e=[0,0]),"undefined"==typeof f&&(f=[0,0]),"undefined"==typeof g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},Phaser.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),Phaser.Physics.P2.DistanceConstraint.prototype.constructor=Phaser.Physics.P2.DistanceConstraint,Phaser.Physics.P2.GearConstraint=function(a,b,c,d,e){"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},Phaser.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),Phaser.Physics.P2.GearConstraint.prototype.constructor=Phaser.Physics.P2.GearConstraint,Phaser.Physics.P2.LockConstraint=function(a,b,c,d,e,f){"undefined"==typeof d&&(d=[0,0]),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},Phaser.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),Phaser.Physics.P2.LockConstraint.prototype.constructor=Phaser.Physics.P2.LockConstraint,Phaser.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=[0,0]),"undefined"==typeof f&&(f=[0,0]),"undefined"==typeof g&&(g=[0,0]),"undefined"==typeof h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},Phaser.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),Phaser.Physics.P2.PrismaticConstraint.prototype.constructor=Phaser.Physics.P2.PrismaticConstraint,Phaser.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){"undefined"==typeof f&&(f=Number.MAX_VALUE),"undefined"==typeof g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},Phaser.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),Phaser.Physics.P2.RevoluteConstraint.prototype.constructor=Phaser.Physics.P2.RevoluteConstraint; //# sourceMappingURL=phaser.map \ No newline at end of file