UNPKG

flamingo-ui

Version:

火烈鸟UI组件库

1 lines 192 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["flamingo-ui"]={},e.Vue)}(this,(function(e,t){"use strict";var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function o(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var r,i={};r=function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=20)}([function(e,t){var o={};e.exports=o,function(){o._baseDelta=1e3/60,o._nextId=0,o._seed=0,o._nowStartTime=+new Date,o._warnedOnce={},o._decomp=null,o.extend=function(e,t){var n,r;"boolean"==typeof t?(n=2,r=t):(n=1,r=!0);for(var i=n;i<arguments.length;i++){var a=arguments[i];if(a)for(var s in a)r&&a[s]&&a[s].constructor===Object?e[s]&&e[s].constructor!==Object?e[s]=a[s]:(e[s]=e[s]||{},o.extend(e[s],r,a[s])):e[s]=a[s]}return e},o.clone=function(e,t){return o.extend({},t,e)},o.keys=function(e){if(Object.keys)return Object.keys(e);var t=[];for(var n in e)t.push(n);return t},o.values=function(e){var t=[];if(Object.keys){for(var n=Object.keys(e),o=0;o<n.length;o++)t.push(e[n[o]]);return t}for(var r in e)t.push(e[r]);return t},o.get=function(e,t,n,o){t=t.split(".").slice(n,o);for(var r=0;r<t.length;r+=1)e=e[t[r]];return e},o.set=function(e,t,n,r,i){var a=t.split(".").slice(r,i);return o.get(e,t,0,-1)[a[a.length-1]]=n,n},o.shuffle=function(e){for(var t=e.length-1;t>0;t--){var n=Math.floor(o.random()*(t+1)),r=e[t];e[t]=e[n],e[n]=r}return e},o.choose=function(e){return e[Math.floor(o.random()*e.length)]},o.isElement=function(e){return"undefined"!=typeof HTMLElement?e instanceof HTMLElement:!!(e&&e.nodeType&&e.nodeName)},o.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},o.isFunction=function(e){return"function"==typeof e},o.isPlainObject=function(e){return"object"==typeof e&&e.constructor===Object},o.isString=function(e){return"[object String]"===toString.call(e)},o.clamp=function(e,t,n){return e<t?t:e>n?n:e},o.sign=function(e){return e<0?-1:1},o.now=function(){if("undefined"!=typeof window&&window.performance){if(window.performance.now)return window.performance.now();if(window.performance.webkitNow)return window.performance.webkitNow()}return Date.now?Date.now():new Date-o._nowStartTime},o.random=function(t,n){return n=void 0!==n?n:1,(t=void 0!==t?t:0)+e()*(n-t)};var e=function(){return o._seed=(9301*o._seed+49297)%233280,o._seed/233280};o.colorToNumber=function(e){return 3==(e=e.replace("#","")).length&&(e=e.charAt(0)+e.charAt(0)+e.charAt(1)+e.charAt(1)+e.charAt(2)+e.charAt(2)),parseInt(e,16)},o.logLevel=1,o.log=function(){console&&o.logLevel>0&&o.logLevel<=3&&console.log.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.info=function(){console&&o.logLevel>0&&o.logLevel<=2&&console.info.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.warn=function(){console&&o.logLevel>0&&o.logLevel<=3&&console.warn.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.warnOnce=function(){var e=Array.prototype.slice.call(arguments).join(" ");o._warnedOnce[e]||(o.warn(e),o._warnedOnce[e]=!0)},o.deprecated=function(e,t,n){e[t]=o.chain((function(){o.warnOnce("🔅 deprecated 🔅",n)}),e[t])},o.nextId=function(){return o._nextId++},o.indexOf=function(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0;n<e.length;n++)if(e[n]===t)return n;return-1},o.map=function(e,t){if(e.map)return e.map(t);for(var n=[],o=0;o<e.length;o+=1)n.push(t(e[o]));return n},o.topologicalSort=function(e){var t=[],n=[],r=[];for(var i in e)n[i]||r[i]||o._topologicalSort(i,n,r,e,t);return t},o._topologicalSort=function(e,t,n,r,i){var a=r[e]||[];n[e]=!0;for(var s=0;s<a.length;s+=1){var l=a[s];n[l]||t[l]||o._topologicalSort(l,t,n,r,i)}n[e]=!1,t[e]=!0,i.push(e)},o.chain=function(){for(var e=[],t=0;t<arguments.length;t+=1){var n=arguments[t];n._chained?e.push.apply(e,n._chained):e.push(n)}var o=function(){for(var t,n=new Array(arguments.length),o=0,r=arguments.length;o<r;o++)n[o]=arguments[o];for(o=0;o<e.length;o+=1){var i=e[o].apply(t,n);void 0!==i&&(t=i)}return t};return o._chained=e,o},o.chainPathBefore=function(e,t,n){return o.set(e,t,o.chain(n,o.get(e,t)))},o.chainPathAfter=function(e,t,n){return o.set(e,t,o.chain(o.get(e,t),n))},o.setDecomp=function(e){o._decomp=e},o.getDecomp=function(){var e=o._decomp;try{e||"undefined"==typeof window||(e=window.decomp),e||void 0===n||(e=n.decomp)}catch(t){e=null}return e}}()},function(e,t){var n={};e.exports=n,n.create=function(e){var t={min:{x:0,y:0},max:{x:0,y:0}};return e&&n.update(t,e),t},n.update=function(e,t,n){e.min.x=1/0,e.max.x=-1/0,e.min.y=1/0,e.max.y=-1/0;for(var o=0;o<t.length;o++){var r=t[o];r.x>e.max.x&&(e.max.x=r.x),r.x<e.min.x&&(e.min.x=r.x),r.y>e.max.y&&(e.max.y=r.y),r.y<e.min.y&&(e.min.y=r.y)}n&&(n.x>0?e.max.x+=n.x:e.min.x+=n.x,n.y>0?e.max.y+=n.y:e.min.y+=n.y)},n.contains=function(e,t){return t.x>=e.min.x&&t.x<=e.max.x&&t.y>=e.min.y&&t.y<=e.max.y},n.overlaps=function(e,t){return e.min.x<=t.max.x&&e.max.x>=t.min.x&&e.max.y>=t.min.y&&e.min.y<=t.max.y},n.translate=function(e,t){e.min.x+=t.x,e.max.x+=t.x,e.min.y+=t.y,e.max.y+=t.y},n.shift=function(e,t){var n=e.max.x-e.min.x,o=e.max.y-e.min.y;e.min.x=t.x,e.max.x=t.x+n,e.min.y=t.y,e.max.y=t.y+o}},function(e,t){var n={};e.exports=n,n.create=function(e,t){return{x:e||0,y:t||0}},n.clone=function(e){return{x:e.x,y:e.y}},n.magnitude=function(e){return Math.sqrt(e.x*e.x+e.y*e.y)},n.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},n.rotate=function(e,t,n){var o=Math.cos(t),r=Math.sin(t);n||(n={});var i=e.x*o-e.y*r;return n.y=e.x*r+e.y*o,n.x=i,n},n.rotateAbout=function(e,t,n,o){var r=Math.cos(t),i=Math.sin(t);o||(o={});var a=n.x+((e.x-n.x)*r-(e.y-n.y)*i);return o.y=n.y+((e.x-n.x)*i+(e.y-n.y)*r),o.x=a,o},n.normalise=function(e){var t=n.magnitude(e);return 0===t?{x:0,y:0}:{x:e.x/t,y:e.y/t}},n.dot=function(e,t){return e.x*t.x+e.y*t.y},n.cross=function(e,t){return e.x*t.y-e.y*t.x},n.cross3=function(e,t,n){return(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x)},n.add=function(e,t,n){return n||(n={}),n.x=e.x+t.x,n.y=e.y+t.y,n},n.sub=function(e,t,n){return n||(n={}),n.x=e.x-t.x,n.y=e.y-t.y,n},n.mult=function(e,t){return{x:e.x*t,y:e.y*t}},n.div=function(e,t){return{x:e.x/t,y:e.y/t}},n.perp=function(e,t){return{x:(t=!0===t?-1:1)*-e.y,y:t*e.x}},n.neg=function(e){return{x:-e.x,y:-e.y}},n.angle=function(e,t){return Math.atan2(t.y-e.y,t.x-e.x)},n._temp=[n.create(),n.create(),n.create(),n.create(),n.create(),n.create()]},function(e,t,n){var o={};e.exports=o;var r=n(2),i=n(0);o.create=function(e,t){for(var n=[],o=0;o<e.length;o++){var r=e[o],i={x:r.x,y:r.y,index:o,body:t,isInternal:!1};n.push(i)}return n},o.fromPath=function(e,t){var n=[];return e.replace(/L?\s*([-\d.e]+)[\s,]*([-\d.e]+)*/gi,(function(e,t,o){n.push({x:parseFloat(t),y:parseFloat(o)})})),o.create(n,t)},o.centre=function(e){for(var t,n,i,a=o.area(e,!0),s={x:0,y:0},l=0;l<e.length;l++)i=(l+1)%e.length,t=r.cross(e[l],e[i]),n=r.mult(r.add(e[l],e[i]),t),s=r.add(s,n);return r.div(s,6*a)},o.mean=function(e){for(var t={x:0,y:0},n=0;n<e.length;n++)t.x+=e[n].x,t.y+=e[n].y;return r.div(t,e.length)},o.area=function(e,t){for(var n=0,o=e.length-1,r=0;r<e.length;r++)n+=(e[o].x-e[r].x)*(e[o].y+e[r].y),o=r;return t?n/2:Math.abs(n)/2},o.inertia=function(e,t){for(var n,o,i=0,a=0,s=e,l=0;l<s.length;l++)o=(l+1)%s.length,i+=(n=Math.abs(r.cross(s[o],s[l])))*(r.dot(s[o],s[o])+r.dot(s[o],s[l])+r.dot(s[l],s[l])),a+=n;return t/6*(i/a)},o.translate=function(e,t,n){n=void 0!==n?n:1;var o,r=e.length,i=t.x*n,a=t.y*n;for(o=0;o<r;o++)e[o].x+=i,e[o].y+=a;return e},o.rotate=function(e,t,n){if(0!==t){var o,r,i,a,s=Math.cos(t),l=Math.sin(t),c=n.x,u=n.y,d=e.length;for(a=0;a<d;a++)r=(o=e[a]).x-c,i=o.y-u,o.x=c+(r*s-i*l),o.y=u+(r*l+i*s);return e}},o.contains=function(e,t){for(var n,o=t.x,r=t.y,i=e.length,a=e[i-1],s=0;s<i;s++){if(n=e[s],(o-a.x)*(n.y-a.y)+(r-a.y)*(a.x-n.x)>0)return!1;a=n}return!0},o.scale=function(e,t,n,i){if(1===t&&1===n)return e;var a,s;i=i||o.centre(e);for(var l=0;l<e.length;l++)a=e[l],s=r.sub(a,i),e[l].x=i.x+s.x*t,e[l].y=i.y+s.y*n;return e},o.chamfer=function(e,t,n,o,a){t="number"==typeof t?[t]:t||[8],n=void 0!==n?n:-1,o=o||2,a=a||14;for(var s=[],l=0;l<e.length;l++){var c=e[l-1>=0?l-1:e.length-1],u=e[l],d=e[(l+1)%e.length],p=t[l<t.length?l:t.length-1];if(0!==p){var m=r.normalise({x:u.y-c.y,y:c.x-u.x}),f=r.normalise({x:d.y-u.y,y:u.x-d.x}),v=Math.sqrt(2*Math.pow(p,2)),g=r.mult(i.clone(m),p),y=r.normalise(r.mult(r.add(m,f),.5)),h=r.sub(u,r.mult(y,v)),b=n;-1===n&&(b=1.75*Math.pow(p,.32)),(b=i.clamp(b,o,a))%2==1&&(b+=1);for(var x=Math.acos(r.dot(m,f))/b,w=0;w<b;w++)s.push(r.add(r.rotate(g,x*w),h))}else s.push(u)}return s},o.clockwiseSort=function(e){var t=o.mean(e);return e.sort((function(e,n){return r.angle(t,e)-r.angle(t,n)})),e},o.isConvex=function(e){var t,n,o,r,i=0,a=e.length;if(a<3)return null;for(t=0;t<a;t++)if(o=(t+2)%a,r=(e[n=(t+1)%a].x-e[t].x)*(e[o].y-e[n].y),(r-=(e[n].y-e[t].y)*(e[o].x-e[n].x))<0?i|=1:r>0&&(i|=2),3===i)return!1;return 0!==i||null},o.hull=function(e){var t,n,o=[],i=[];for((e=e.slice(0)).sort((function(e,t){var n=e.x-t.x;return 0!==n?n:e.y-t.y})),n=0;n<e.length;n+=1){for(t=e[n];i.length>=2&&r.cross3(i[i.length-2],i[i.length-1],t)<=0;)i.pop();i.push(t)}for(n=e.length-1;n>=0;n-=1){for(t=e[n];o.length>=2&&r.cross3(o[o.length-2],o[o.length-1],t)<=0;)o.pop();o.push(t)}return o.pop(),i.pop(),o.concat(i)}},function(e,t,n){var o={};e.exports=o;var r=n(3),i=n(2),a=n(7),s=n(0),l=n(1),c=n(11);!function(){o._timeCorrection=!0,o._inertiaScale=4,o._nextCollidingGroupId=1,o._nextNonCollidingGroupId=-1,o._nextCategory=1,o._baseDelta=1e3/60,o.create=function(t){var n={id:s.nextId(),type:"body",label:"Body",parts:[],plugin:{},angle:0,vertices:r.fromPath("L 0 0 L 40 0 L 40 40 L 0 40"),position:{x:0,y:0},force:{x:0,y:0},torque:0,positionImpulse:{x:0,y:0},constraintImpulse:{x:0,y:0,angle:0},totalContacts:0,speed:0,angularSpeed:0,velocity:{x:0,y:0},angularVelocity:0,isSensor:!1,isStatic:!1,isSleeping:!1,motion:0,sleepThreshold:60,density:.001,restitution:0,friction:.1,frictionStatic:.5,frictionAir:.01,collisionFilter:{category:1,mask:4294967295,group:0},slop:.05,timeScale:1,render:{visible:!0,opacity:1,strokeStyle:null,fillStyle:null,lineWidth:null,sprite:{xScale:1,yScale:1,xOffset:0,yOffset:0}},events:null,bounds:null,chamfer:null,circleRadius:0,positionPrev:null,anglePrev:0,parent:null,axes:null,area:0,mass:0,inertia:0,deltaTime:1e3/60,_original:null},o=s.extend(n,t);return e(o,t),o},o.nextGroup=function(e){return e?o._nextNonCollidingGroupId--:o._nextCollidingGroupId++},o.nextCategory=function(){return o._nextCategory=o._nextCategory<<1,o._nextCategory};var e=function(e,t){t=t||{},o.set(e,{bounds:e.bounds||l.create(e.vertices),positionPrev:e.positionPrev||i.clone(e.position),anglePrev:e.anglePrev||e.angle,vertices:e.vertices,parts:e.parts||[e],isStatic:e.isStatic,isSleeping:e.isSleeping,parent:e.parent||e}),r.rotate(e.vertices,e.angle,e.position),c.rotate(e.axes,e.angle),l.update(e.bounds,e.vertices,e.velocity),o.set(e,{axes:t.axes||e.axes,area:t.area||e.area,mass:t.mass||e.mass,inertia:t.inertia||e.inertia});var n=e.isStatic?"#14151f":s.choose(["#f19648","#f5d259","#f55a3c","#063e7b","#ececd1"]),a=e.isStatic?"#555":"#ccc",u=e.isStatic&&null===e.render.fillStyle?1:0;e.render.fillStyle=e.render.fillStyle||n,e.render.strokeStyle=e.render.strokeStyle||a,e.render.lineWidth=e.render.lineWidth||u,e.render.sprite.xOffset+=-(e.bounds.min.x-e.position.x)/(e.bounds.max.x-e.bounds.min.x),e.render.sprite.yOffset+=-(e.bounds.min.y-e.position.y)/(e.bounds.max.y-e.bounds.min.y)};o.set=function(e,t,n){var r;for(r in"string"==typeof t&&(r=t,(t={})[r]=n),t)if(Object.prototype.hasOwnProperty.call(t,r))switch(n=t[r],r){case"isStatic":o.setStatic(e,n);break;case"isSleeping":a.set(e,n);break;case"mass":o.setMass(e,n);break;case"density":o.setDensity(e,n);break;case"inertia":o.setInertia(e,n);break;case"vertices":o.setVertices(e,n);break;case"position":o.setPosition(e,n);break;case"angle":o.setAngle(e,n);break;case"velocity":o.setVelocity(e,n);break;case"angularVelocity":o.setAngularVelocity(e,n);break;case"speed":o.setSpeed(e,n);break;case"angularSpeed":o.setAngularSpeed(e,n);break;case"parts":o.setParts(e,n);break;case"centre":o.setCentre(e,n);break;default:e[r]=n}},o.setStatic=function(e,t){for(var n=0;n<e.parts.length;n++){var o=e.parts[n];o.isStatic=t,t?(o._original={restitution:o.restitution,friction:o.friction,mass:o.mass,inertia:o.inertia,density:o.density,inverseMass:o.inverseMass,inverseInertia:o.inverseInertia},o.restitution=0,o.friction=1,o.mass=o.inertia=o.density=1/0,o.inverseMass=o.inverseInertia=0,o.positionPrev.x=o.position.x,o.positionPrev.y=o.position.y,o.anglePrev=o.angle,o.angularVelocity=0,o.speed=0,o.angularSpeed=0,o.motion=0):o._original&&(o.restitution=o._original.restitution,o.friction=o._original.friction,o.mass=o._original.mass,o.inertia=o._original.inertia,o.density=o._original.density,o.inverseMass=o._original.inverseMass,o.inverseInertia=o._original.inverseInertia,o._original=null)}},o.setMass=function(e,t){var n=e.inertia/(e.mass/6);e.inertia=n*(t/6),e.inverseInertia=1/e.inertia,e.mass=t,e.inverseMass=1/e.mass,e.density=e.mass/e.area},o.setDensity=function(e,t){o.setMass(e,t*e.area),e.density=t},o.setInertia=function(e,t){e.inertia=t,e.inverseInertia=1/e.inertia},o.setVertices=function(e,t){t[0].body===e?e.vertices=t:e.vertices=r.create(t,e),e.axes=c.fromVertices(e.vertices),e.area=r.area(e.vertices),o.setMass(e,e.density*e.area);var n=r.centre(e.vertices);r.translate(e.vertices,n,-1),o.setInertia(e,o._inertiaScale*r.inertia(e.vertices,e.mass)),r.translate(e.vertices,e.position),l.update(e.bounds,e.vertices,e.velocity)},o.setParts=function(e,t,n){var i;for(t=t.slice(0),e.parts.length=0,e.parts.push(e),e.parent=e,i=0;i<t.length;i++){var a=t[i];a!==e&&(a.parent=e,e.parts.push(a))}if(1!==e.parts.length){if(n=void 0===n||n){var s=[];for(i=0;i<t.length;i++)s=s.concat(t[i].vertices);r.clockwiseSort(s);var l=r.hull(s),c=r.centre(l);o.setVertices(e,l),r.translate(e.vertices,c)}var u=o._totalProperties(e);e.area=u.area,e.parent=e,e.position.x=u.centre.x,e.position.y=u.centre.y,e.positionPrev.x=u.centre.x,e.positionPrev.y=u.centre.y,o.setMass(e,u.mass),o.setInertia(e,u.inertia),o.setPosition(e,u.centre)}},o.setCentre=function(e,t,n){n?(e.positionPrev.x+=t.x,e.positionPrev.y+=t.y,e.position.x+=t.x,e.position.y+=t.y):(e.positionPrev.x=t.x-(e.position.x-e.positionPrev.x),e.positionPrev.y=t.y-(e.position.y-e.positionPrev.y),e.position.x=t.x,e.position.y=t.y)},o.setPosition=function(e,t,n){var o=i.sub(t,e.position);n?(e.positionPrev.x=e.position.x,e.positionPrev.y=e.position.y,e.velocity.x=o.x,e.velocity.y=o.y,e.speed=i.magnitude(o)):(e.positionPrev.x+=o.x,e.positionPrev.y+=o.y);for(var a=0;a<e.parts.length;a++){var s=e.parts[a];s.position.x+=o.x,s.position.y+=o.y,r.translate(s.vertices,o),l.update(s.bounds,s.vertices,e.velocity)}},o.setAngle=function(e,t,n){var o=t-e.angle;n?(e.anglePrev=e.angle,e.angularVelocity=o,e.angularSpeed=Math.abs(o)):e.anglePrev+=o;for(var a=0;a<e.parts.length;a++){var s=e.parts[a];s.angle+=o,r.rotate(s.vertices,o,e.position),c.rotate(s.axes,o),l.update(s.bounds,s.vertices,e.velocity),a>0&&i.rotateAbout(s.position,o,e.position,s.position)}},o.setVelocity=function(e,t){var n=e.deltaTime/o._baseDelta;e.positionPrev.x=e.position.x-t.x*n,e.positionPrev.y=e.position.y-t.y*n,e.velocity.x=(e.position.x-e.positionPrev.x)/n,e.velocity.y=(e.position.y-e.positionPrev.y)/n,e.speed=i.magnitude(e.velocity)},o.getVelocity=function(e){var t=o._baseDelta/e.deltaTime;return{x:(e.position.x-e.positionPrev.x)*t,y:(e.position.y-e.positionPrev.y)*t}},o.getSpeed=function(e){return i.magnitude(o.getVelocity(e))},o.setSpeed=function(e,t){o.setVelocity(e,i.mult(i.normalise(o.getVelocity(e)),t))},o.setAngularVelocity=function(e,t){var n=e.deltaTime/o._baseDelta;e.anglePrev=e.angle-t*n,e.angularVelocity=(e.angle-e.anglePrev)/n,e.angularSpeed=Math.abs(e.angularVelocity)},o.getAngularVelocity=function(e){return(e.angle-e.anglePrev)*o._baseDelta/e.deltaTime},o.getAngularSpeed=function(e){return Math.abs(o.getAngularVelocity(e))},o.setAngularSpeed=function(e,t){o.setAngularVelocity(e,s.sign(o.getAngularVelocity(e))*t)},o.translate=function(e,t,n){o.setPosition(e,i.add(e.position,t),n)},o.rotate=function(e,t,n,r){if(n){var i=Math.cos(t),a=Math.sin(t),s=e.position.x-n.x,l=e.position.y-n.y;o.setPosition(e,{x:n.x+(s*i-l*a),y:n.y+(s*a+l*i)},r),o.setAngle(e,e.angle+t,r)}else o.setAngle(e,e.angle+t,r)},o.scale=function(e,t,n,i){var a=0,s=0;i=i||e.position;for(var u=0;u<e.parts.length;u++){var d=e.parts[u];r.scale(d.vertices,t,n,i),d.axes=c.fromVertices(d.vertices),d.area=r.area(d.vertices),o.setMass(d,e.density*d.area),r.translate(d.vertices,{x:-d.position.x,y:-d.position.y}),o.setInertia(d,o._inertiaScale*r.inertia(d.vertices,d.mass)),r.translate(d.vertices,{x:d.position.x,y:d.position.y}),u>0&&(a+=d.area,s+=d.inertia),d.position.x=i.x+(d.position.x-i.x)*t,d.position.y=i.y+(d.position.y-i.y)*n,l.update(d.bounds,d.vertices,e.velocity)}e.parts.length>1&&(e.area=a,e.isStatic||(o.setMass(e,e.density*a),o.setInertia(e,s))),e.circleRadius&&(t===n?e.circleRadius*=t:e.circleRadius=null)},o.update=function(e,t){var n=(t=(void 0!==t?t:1e3/60)*e.timeScale)*t,a=o._timeCorrection?t/(e.deltaTime||t):1,u=1-e.frictionAir*(t/s._baseDelta),d=(e.position.x-e.positionPrev.x)*a,p=(e.position.y-e.positionPrev.y)*a;e.velocity.x=d*u+e.force.x/e.mass*n,e.velocity.y=p*u+e.force.y/e.mass*n,e.positionPrev.x=e.position.x,e.positionPrev.y=e.position.y,e.position.x+=e.velocity.x,e.position.y+=e.velocity.y,e.deltaTime=t,e.angularVelocity=(e.angle-e.anglePrev)*u*a+e.torque/e.inertia*n,e.anglePrev=e.angle,e.angle+=e.angularVelocity;for(var m=0;m<e.parts.length;m++){var f=e.parts[m];r.translate(f.vertices,e.velocity),m>0&&(f.position.x+=e.velocity.x,f.position.y+=e.velocity.y),0!==e.angularVelocity&&(r.rotate(f.vertices,e.angularVelocity,e.position),c.rotate(f.axes,e.angularVelocity),m>0&&i.rotateAbout(f.position,e.angularVelocity,e.position,f.position)),l.update(f.bounds,f.vertices,e.velocity)}},o.updateVelocities=function(e){var t=o._baseDelta/e.deltaTime,n=e.velocity;n.x=(e.position.x-e.positionPrev.x)*t,n.y=(e.position.y-e.positionPrev.y)*t,e.speed=Math.sqrt(n.x*n.x+n.y*n.y),e.angularVelocity=(e.angle-e.anglePrev)*t,e.angularSpeed=Math.abs(e.angularVelocity)},o.applyForce=function(e,t,n){var o=t.x-e.position.x,r=t.y-e.position.y;e.force.x+=n.x,e.force.y+=n.y,e.torque+=o*n.y-r*n.x},o._totalProperties=function(e){for(var t={mass:0,area:0,inertia:0,centre:{x:0,y:0}},n=1===e.parts.length?0:1;n<e.parts.length;n++){var o=e.parts[n],r=o.mass!==1/0?o.mass:1;t.mass+=r,t.area+=o.area,t.inertia+=o.inertia,t.centre=i.add(t.centre,i.mult(o.position,r))}return t.centre=i.div(t.centre,t.mass),t}}()},function(e,t,n){var o={};e.exports=o;var r=n(0);o.on=function(e,t,n){for(var o,r=t.split(" "),i=0;i<r.length;i++)o=r[i],e.events=e.events||{},e.events[o]=e.events[o]||[],e.events[o].push(n);return n},o.off=function(e,t,n){if(t){"function"==typeof t&&(n=t,t=r.keys(e.events).join(" "));for(var o=t.split(" "),i=0;i<o.length;i++){var a=e.events[o[i]],s=[];if(n&&a)for(var l=0;l<a.length;l++)a[l]!==n&&s.push(a[l]);e.events[o[i]]=s}}else e.events={}},o.trigger=function(e,t,n){var o,i,a,s,l=e.events;if(l&&r.keys(l).length>0){n||(n={}),o=t.split(" ");for(var c=0;c<o.length;c++)if(a=l[i=o[c]]){(s=r.clone(n,!1)).name=i,s.source=e;for(var u=0;u<a.length;u++)a[u].apply(e,[s])}}}},function(e,t,n){var o={};e.exports=o;var r=n(5),i=n(0),a=n(1),s=n(4);o.create=function(e){return i.extend({id:i.nextId(),type:"composite",parent:null,isModified:!1,bodies:[],constraints:[],composites:[],label:"Composite",plugin:{},cache:{allBodies:null,allConstraints:null,allComposites:null}},e)},o.setModified=function(e,t,n,r){if(e.isModified=t,t&&e.cache&&(e.cache.allBodies=null,e.cache.allConstraints=null,e.cache.allComposites=null),n&&e.parent&&o.setModified(e.parent,t,n,r),r)for(var i=0;i<e.composites.length;i++){var a=e.composites[i];o.setModified(a,t,n,r)}},o.add=function(e,t){var n=[].concat(t);r.trigger(e,"beforeAdd",{object:t});for(var a=0;a<n.length;a++){var s=n[a];switch(s.type){case"body":if(s.parent!==s){i.warn("Composite.add: skipped adding a compound body part (you must add its parent instead)");break}o.addBody(e,s);break;case"constraint":o.addConstraint(e,s);break;case"composite":o.addComposite(e,s);break;case"mouseConstraint":o.addConstraint(e,s.constraint)}}return r.trigger(e,"afterAdd",{object:t}),e},o.remove=function(e,t,n){var i=[].concat(t);r.trigger(e,"beforeRemove",{object:t});for(var a=0;a<i.length;a++){var s=i[a];switch(s.type){case"body":o.removeBody(e,s,n);break;case"constraint":o.removeConstraint(e,s,n);break;case"composite":o.removeComposite(e,s,n);break;case"mouseConstraint":o.removeConstraint(e,s.constraint)}}return r.trigger(e,"afterRemove",{object:t}),e},o.addComposite=function(e,t){return e.composites.push(t),t.parent=e,o.setModified(e,!0,!0,!1),e},o.removeComposite=function(e,t,n){var r=i.indexOf(e.composites,t);if(-1!==r&&o.removeCompositeAt(e,r),n)for(var a=0;a<e.composites.length;a++)o.removeComposite(e.composites[a],t,!0);return e},o.removeCompositeAt=function(e,t){return e.composites.splice(t,1),o.setModified(e,!0,!0,!1),e},o.addBody=function(e,t){return e.bodies.push(t),o.setModified(e,!0,!0,!1),e},o.removeBody=function(e,t,n){var r=i.indexOf(e.bodies,t);if(-1!==r&&o.removeBodyAt(e,r),n)for(var a=0;a<e.composites.length;a++)o.removeBody(e.composites[a],t,!0);return e},o.removeBodyAt=function(e,t){return e.bodies.splice(t,1),o.setModified(e,!0,!0,!1),e},o.addConstraint=function(e,t){return e.constraints.push(t),o.setModified(e,!0,!0,!1),e},o.removeConstraint=function(e,t,n){var r=i.indexOf(e.constraints,t);if(-1!==r&&o.removeConstraintAt(e,r),n)for(var a=0;a<e.composites.length;a++)o.removeConstraint(e.composites[a],t,!0);return e},o.removeConstraintAt=function(e,t){return e.constraints.splice(t,1),o.setModified(e,!0,!0,!1),e},o.clear=function(e,t,n){if(n)for(var r=0;r<e.composites.length;r++)o.clear(e.composites[r],t,!0);return t?e.bodies=e.bodies.filter((function(e){return e.isStatic})):e.bodies.length=0,e.constraints.length=0,e.composites.length=0,o.setModified(e,!0,!0,!1),e},o.allBodies=function(e){if(e.cache&&e.cache.allBodies)return e.cache.allBodies;for(var t=[].concat(e.bodies),n=0;n<e.composites.length;n++)t=t.concat(o.allBodies(e.composites[n]));return e.cache&&(e.cache.allBodies=t),t},o.allConstraints=function(e){if(e.cache&&e.cache.allConstraints)return e.cache.allConstraints;for(var t=[].concat(e.constraints),n=0;n<e.composites.length;n++)t=t.concat(o.allConstraints(e.composites[n]));return e.cache&&(e.cache.allConstraints=t),t},o.allComposites=function(e){if(e.cache&&e.cache.allComposites)return e.cache.allComposites;for(var t=[].concat(e.composites),n=0;n<e.composites.length;n++)t=t.concat(o.allComposites(e.composites[n]));return e.cache&&(e.cache.allComposites=t),t},o.get=function(e,t,n){var r,i;switch(n){case"body":r=o.allBodies(e);break;case"constraint":r=o.allConstraints(e);break;case"composite":r=o.allComposites(e).concat(e)}return r?0===(i=r.filter((function(e){return e.id.toString()===t.toString()}))).length?null:i[0]:null},o.move=function(e,t,n){return o.remove(e,t),o.add(n,t),e},o.rebase=function(e){for(var t=o.allBodies(e).concat(o.allConstraints(e)).concat(o.allComposites(e)),n=0;n<t.length;n++)t[n].id=i.nextId();return e},o.translate=function(e,t,n){for(var r=n?o.allBodies(e):e.bodies,i=0;i<r.length;i++)s.translate(r[i],t);return e},o.rotate=function(e,t,n,r){for(var i=Math.cos(t),a=Math.sin(t),l=r?o.allBodies(e):e.bodies,c=0;c<l.length;c++){var u=l[c],d=u.position.x-n.x,p=u.position.y-n.y;s.setPosition(u,{x:n.x+(d*i-p*a),y:n.y+(d*a+p*i)}),s.rotate(u,t)}return e},o.scale=function(e,t,n,r,i){for(var a=i?o.allBodies(e):e.bodies,l=0;l<a.length;l++){var c=a[l],u=c.position.x-r.x,d=c.position.y-r.y;s.setPosition(c,{x:r.x+u*t,y:r.y+d*n}),s.scale(c,t,n)}return e},o.bounds=function(e){for(var t=o.allBodies(e),n=[],r=0;r<t.length;r+=1){var i=t[r];n.push(i.bounds.min,i.bounds.max)}return a.create(n)}},function(e,t,n){var o={};e.exports=o;var r=n(4),i=n(5),a=n(0);o._motionWakeThreshold=.18,o._motionSleepThreshold=.08,o._minBias=.9,o.update=function(e,t){for(var n=t/a._baseDelta,i=o._motionSleepThreshold,s=0;s<e.length;s++){var l=e[s],c=r.getSpeed(l),u=r.getAngularSpeed(l),d=c*c+u*u;if(0===l.force.x&&0===l.force.y){var p=Math.min(l.motion,d),m=Math.max(l.motion,d);l.motion=o._minBias*p+(1-o._minBias)*m,l.sleepThreshold>0&&l.motion<i?(l.sleepCounter+=1,l.sleepCounter>=l.sleepThreshold/n&&o.set(l,!0)):l.sleepCounter>0&&(l.sleepCounter-=1)}else o.set(l,!1)}},o.afterCollisions=function(e){for(var t=o._motionSleepThreshold,n=0;n<e.length;n++){var r=e[n];if(r.isActive){var i=r.collision,a=i.bodyA.parent,s=i.bodyB.parent;if(!(a.isSleeping&&s.isSleeping||a.isStatic||s.isStatic)&&(a.isSleeping||s.isSleeping)){var l=a.isSleeping&&!a.isStatic?a:s,c=l===a?s:a;!l.isStatic&&c.motion>t&&o.set(l,!1)}}}},o.set=function(e,t){var n=e.isSleeping;t?(e.isSleeping=!0,e.sleepCounter=e.sleepThreshold,e.positionImpulse.x=0,e.positionImpulse.y=0,e.positionPrev.x=e.position.x,e.positionPrev.y=e.position.y,e.anglePrev=e.angle,e.speed=0,e.angularSpeed=0,e.motion=0,n||i.trigger(e,"sleepStart")):(e.isSleeping=!1,e.sleepCounter=0,n&&i.trigger(e,"sleepEnd"))}},function(e,t,n){var o={};e.exports=o;var r,i,a,s=n(3),l=n(9);r=[],i={overlap:0,axis:null},a={overlap:0,axis:null},o.create=function(e,t){return{pair:null,collided:!1,bodyA:e,bodyB:t,parentA:e.parent,parentB:t.parent,depth:0,normal:{x:0,y:0},tangent:{x:0,y:0},penetration:{x:0,y:0},supports:[]}},o.collides=function(e,t,n){if(o._overlapAxes(i,e.vertices,t.vertices,e.axes),i.overlap<=0)return null;if(o._overlapAxes(a,t.vertices,e.vertices,t.axes),a.overlap<=0)return null;var r,c,u=n&&n.table[l.id(e,t)];u?r=u.collision:((r=o.create(e,t)).collided=!0,r.bodyA=e.id<t.id?e:t,r.bodyB=e.id<t.id?t:e,r.parentA=r.bodyA.parent,r.parentB=r.bodyB.parent),e=r.bodyA,t=r.bodyB,c=i.overlap<a.overlap?i:a;var d=r.normal,p=r.supports,m=c.axis,f=m.x,v=m.y;f*(t.position.x-e.position.x)+v*(t.position.y-e.position.y)<0?(d.x=f,d.y=v):(d.x=-f,d.y=-v),r.tangent.x=-d.y,r.tangent.y=d.x,r.depth=c.overlap,r.penetration.x=d.x*r.depth,r.penetration.y=d.y*r.depth;var g=o._findSupports(e,t,d,1),y=0;if(s.contains(e.vertices,g[0])&&(p[y++]=g[0]),s.contains(e.vertices,g[1])&&(p[y++]=g[1]),y<2){var h=o._findSupports(t,e,d,-1);s.contains(t.vertices,h[0])&&(p[y++]=h[0]),y<2&&s.contains(t.vertices,h[1])&&(p[y++]=h[1])}return 0===y&&(p[y++]=g[0]),p.length=y,r},o._overlapAxes=function(e,t,n,o){var r,i,a,s,l,c,u=t.length,d=n.length,p=t[0].x,m=t[0].y,f=n[0].x,v=n[0].y,g=o.length,y=Number.MAX_VALUE,h=0;for(l=0;l<g;l++){var b=o[l],x=b.x,w=b.y,S=p*x+m*w,k=f*x+v*w,_=S,B=k;for(c=1;c<u;c+=1)(s=t[c].x*x+t[c].y*w)>_?_=s:s<S&&(S=s);for(c=1;c<d;c+=1)(s=n[c].x*x+n[c].y*w)>B?B=s:s<k&&(k=s);if((r=(i=_-k)<(a=B-S)?i:a)<y&&(y=r,h=l,r<=0))break}e.axis=o[h],e.overlap=y},o._projectToAxis=function(e,t,n){for(var o=t[0].x*n.x+t[0].y*n.y,r=o,i=1;i<t.length;i+=1){var a=t[i].x*n.x+t[i].y*n.y;a>r?r=a:a<o&&(o=a)}e.min=o,e.max=r},o._findSupports=function(e,t,n,o){var i,a,s,l,c,u=t.vertices,d=u.length,p=e.position.x,m=e.position.y,f=n.x*o,v=n.y*o,g=Number.MAX_VALUE;for(c=0;c<d;c+=1)(l=f*(p-(a=u[c]).x)+v*(m-a.y))<g&&(g=l,i=a);return g=f*(p-(s=u[(d+i.index-1)%d]).x)+v*(m-s.y),f*(p-(a=u[(i.index+1)%d]).x)+v*(m-a.y)<g?(r[0]=i,r[1]=a,r):(r[0]=i,r[1]=s,r)}},function(e,t,n){var o={};e.exports=o;var r=n(16);o.create=function(e,t){var n=e.bodyA,r=e.bodyB,i={id:o.id(n,r),bodyA:n,bodyB:r,collision:e,contacts:[],activeContacts:[],separation:0,isActive:!0,confirmedActive:!0,isSensor:n.isSensor||r.isSensor,timeCreated:t,timeUpdated:t,inverseMass:0,friction:0,frictionStatic:0,restitution:0,slop:0};return o.update(i,e,t),i},o.update=function(e,t,n){var o=e.contacts,i=t.supports,a=e.activeContacts,s=t.parentA,l=t.parentB,c=s.vertices.length;e.isActive=!0,e.timeUpdated=n,e.collision=t,e.separation=t.depth,e.inverseMass=s.inverseMass+l.inverseMass,e.friction=s.friction<l.friction?s.friction:l.friction,e.frictionStatic=s.frictionStatic>l.frictionStatic?s.frictionStatic:l.frictionStatic,e.restitution=s.restitution>l.restitution?s.restitution:l.restitution,e.slop=s.slop>l.slop?s.slop:l.slop,t.pair=e,a.length=0;for(var u=0;u<i.length;u++){var d=i[u],p=d.body===s?d.index:c+d.index,m=o[p];m?a.push(m):a.push(o[p]=r.create(d))}},o.setActive=function(e,t,n){t?(e.isActive=!0,e.timeUpdated=n):(e.isActive=!1,e.activeContacts.length=0)},o.id=function(e,t){return e.id<t.id?"A"+e.id+"B"+t.id:"A"+t.id+"B"+e.id}},function(e,t,n){var o={};e.exports=o;var r=n(3),i=n(2),a=n(7),s=n(1),l=n(11),c=n(0);o._warming=.4,o._torqueDampen=1,o._minLength=1e-6,o.create=function(e){var t=e;t.bodyA&&!t.pointA&&(t.pointA={x:0,y:0}),t.bodyB&&!t.pointB&&(t.pointB={x:0,y:0});var n=t.bodyA?i.add(t.bodyA.position,t.pointA):t.pointA,o=t.bodyB?i.add(t.bodyB.position,t.pointB):t.pointB,r=i.magnitude(i.sub(n,o));t.length=void 0!==t.length?t.length:r,t.id=t.id||c.nextId(),t.label=t.label||"Constraint",t.type="constraint",t.stiffness=t.stiffness||(t.length>0?1:.7),t.damping=t.damping||0,t.angularStiffness=t.angularStiffness||0,t.angleA=t.bodyA?t.bodyA.angle:t.angleA,t.angleB=t.bodyB?t.bodyB.angle:t.angleB,t.plugin={};var a={visible:!0,lineWidth:2,strokeStyle:"#ffffff",type:"line",anchors:!0};return 0===t.length&&t.stiffness>.1?(a.type="pin",a.anchors=!1):t.stiffness<.9&&(a.type="spring"),t.render=c.extend(a,t.render),t},o.preSolveAll=function(e){for(var t=0;t<e.length;t+=1){var n=e[t],o=n.constraintImpulse;n.isStatic||0===o.x&&0===o.y&&0===o.angle||(n.position.x+=o.x,n.position.y+=o.y,n.angle+=o.angle)}},o.solveAll=function(e,t){for(var n=c.clamp(t/c._baseDelta,0,1),r=0;r<e.length;r+=1){var i=e[r],a=!i.bodyA||i.bodyA&&i.bodyA.isStatic,s=!i.bodyB||i.bodyB&&i.bodyB.isStatic;(a||s)&&o.solve(e[r],n)}for(r=0;r<e.length;r+=1)a=!(i=e[r]).bodyA||i.bodyA&&i.bodyA.isStatic,s=!i.bodyB||i.bodyB&&i.bodyB.isStatic,a||s||o.solve(e[r],n)},o.solve=function(e,t){var n=e.bodyA,r=e.bodyB,a=e.pointA,s=e.pointB;if(n||r){n&&!n.isStatic&&(i.rotate(a,n.angle-e.angleA,a),e.angleA=n.angle),r&&!r.isStatic&&(i.rotate(s,r.angle-e.angleB,s),e.angleB=r.angle);var l=a,c=s;if(n&&(l=i.add(n.position,a)),r&&(c=i.add(r.position,s)),l&&c){var u=i.sub(l,c),d=i.magnitude(u);d<o._minLength&&(d=o._minLength);var p,m,f,v,g,y=(d-e.length)/d,h=e.stiffness>=1||0===e.length?e.stiffness*t:e.stiffness*t*t,b=e.damping*t,x=i.mult(u,y*h),w=(n?n.inverseMass:0)+(r?r.inverseMass:0),S=w+((n?n.inverseInertia:0)+(r?r.inverseInertia:0));if(b>0){var k=i.create();f=i.div(u,d),g=i.sub(r&&i.sub(r.position,r.positionPrev)||k,n&&i.sub(n.position,n.positionPrev)||k),v=i.dot(f,g)}n&&!n.isStatic&&(m=n.inverseMass/w,n.constraintImpulse.x-=x.x*m,n.constraintImpulse.y-=x.y*m,n.position.x-=x.x*m,n.position.y-=x.y*m,b>0&&(n.positionPrev.x-=b*f.x*v*m,n.positionPrev.y-=b*f.y*v*m),p=i.cross(a,x)/S*o._torqueDampen*n.inverseInertia*(1-e.angularStiffness),n.constraintImpulse.angle-=p,n.angle-=p),r&&!r.isStatic&&(m=r.inverseMass/w,r.constraintImpulse.x+=x.x*m,r.constraintImpulse.y+=x.y*m,r.position.x+=x.x*m,r.position.y+=x.y*m,b>0&&(r.positionPrev.x+=b*f.x*v*m,r.positionPrev.y+=b*f.y*v*m),p=i.cross(s,x)/S*o._torqueDampen*r.inverseInertia*(1-e.angularStiffness),r.constraintImpulse.angle+=p,r.angle+=p)}}},o.postSolveAll=function(e){for(var t=0;t<e.length;t++){var n=e[t],c=n.constraintImpulse;if(!(n.isStatic||0===c.x&&0===c.y&&0===c.angle)){a.set(n,!1);for(var u=0;u<n.parts.length;u++){var d=n.parts[u];r.translate(d.vertices,c),u>0&&(d.position.x+=c.x,d.position.y+=c.y),0!==c.angle&&(r.rotate(d.vertices,c.angle,n.position),l.rotate(d.axes,c.angle),u>0&&i.rotateAbout(d.position,c.angle,n.position,d.position)),s.update(d.bounds,d.vertices,n.velocity)}c.angle*=o._warming,c.x*=o._warming,c.y*=o._warming}}},o.pointAWorld=function(e){return{x:(e.bodyA?e.bodyA.position.x:0)+(e.pointA?e.pointA.x:0),y:(e.bodyA?e.bodyA.position.y:0)+(e.pointA?e.pointA.y:0)}},o.pointBWorld=function(e){return{x:(e.bodyB?e.bodyB.position.x:0)+(e.pointB?e.pointB.x:0),y:(e.bodyB?e.bodyB.position.y:0)+(e.pointB?e.pointB.y:0)}}},function(e,t,n){var o={};e.exports=o;var r=n(2),i=n(0);o.fromVertices=function(e){for(var t={},n=0;n<e.length;n++){var o=(n+1)%e.length,a=r.normalise({x:e[o].y-e[n].y,y:e[n].x-e[o].x}),s=0===a.y?1/0:a.x/a.y;t[s=s.toFixed(3).toString()]=a}return i.values(t)},o.rotate=function(e,t){if(0!==t)for(var n=Math.cos(t),o=Math.sin(t),r=0;r<e.length;r++){var i,a=e[r];i=a.x*n-a.y*o,a.y=a.x*o+a.y*n,a.x=i}}},function(e,t,n){var o={};e.exports=o;var r=n(3),i=n(0),a=n(4),s=n(1),l=n(2);o.rectangle=function(e,t,n,o,s){s=s||{};var l={label:"Rectangle Body",position:{x:e,y:t},vertices:r.fromPath("L 0 0 L "+n+" 0 L "+n+" "+o+" L 0 "+o)};if(s.chamfer){var c=s.chamfer;l.vertices=r.chamfer(l.vertices,c.radius,c.quality,c.qualityMin,c.qualityMax),delete s.chamfer}return a.create(i.extend({},l,s))},o.trapezoid=function(e,t,n,o,s,l){l=l||{};var c,u=n*(s*=.5),d=u+(1-2*s)*n,p=d+u;c=s<.5?"L 0 0 L "+u+" "+-o+" L "+d+" "+-o+" L "+p+" 0":"L 0 0 L "+d+" "+-o+" L "+p+" 0";var m={label:"Trapezoid Body",position:{x:e,y:t},vertices:r.fromPath(c)};if(l.chamfer){var f=l.chamfer;m.vertices=r.chamfer(m.vertices,f.radius,f.quality,f.qualityMin,f.qualityMax),delete l.chamfer}return a.create(i.extend({},m,l))},o.circle=function(e,t,n,r,a){r=r||{};var s={label:"Circle Body",circleRadius:n};a=a||25;var l=Math.ceil(Math.max(10,Math.min(a,n)));return l%2==1&&(l+=1),o.polygon(e,t,l,n,i.extend({},s,r))},o.polygon=function(e,t,n,s,l){if(l=l||{},n<3)return o.circle(e,t,s,l);for(var c=2*Math.PI/n,u="",d=.5*c,p=0;p<n;p+=1){var m=d+p*c,f=Math.cos(m)*s,v=Math.sin(m)*s;u+="L "+f.toFixed(3)+" "+v.toFixed(3)+" "}var g={label:"Polygon Body",position:{x:e,y:t},vertices:r.fromPath(u)};if(l.chamfer){var y=l.chamfer;g.vertices=r.chamfer(g.vertices,y.radius,y.quality,y.qualityMin,y.qualityMax),delete l.chamfer}return a.create(i.extend({},g,l))},o.fromVertices=function(e,t,n,o,c,u,d,p){var m,f,v,g,y,h,b,x,w,S,k=i.getDecomp();for(m=Boolean(k&&k.quickDecomp),o=o||{},v=[],c=void 0!==c&&c,u=void 0!==u?u:.01,d=void 0!==d?d:10,p=void 0!==p?p:.01,i.isArray(n[0])||(n=[n]),w=0;w<n.length;w+=1)if(y=n[w],!(g=r.isConvex(y))&&!m&&i.warnOnce("Bodies.fromVertices: Install the 'poly-decomp' library and use Common.setDecomp or provide 'decomp' as a global to decompose concave vertices."),g||!m)y=g?r.clockwiseSort(y):r.hull(y),v.push({position:{x:e,y:t},vertices:y});else{var _=y.map((function(e){return[e.x,e.y]}));k.makeCCW(_),!1!==u&&k.removeCollinearPoints(_,u),!1!==p&&k.removeDuplicatePoints&&k.removeDuplicatePoints(_,p);var B=k.quickDecomp(_);for(h=0;h<B.length;h++){var C=B[h].map((function(e){return{x:e[0],y:e[1]}}));d>0&&r.area(C)<d||v.push({position:r.centre(C),vertices:C})}}for(h=0;h<v.length;h++)v[h]=a.create(i.extend(v[h],o));if(c)for(h=0;h<v.length;h++){var P=v[h];for(b=h+1;b<v.length;b++){var E=v[b];if(s.overlaps(P.bounds,E.bounds)){var N=P.vertices,V=E.vertices;for(x=0;x<P.vertices.length;x++)for(S=0;S<E.vertices.length;S++){var A=l.magnitudeSquared(l.sub(N[(x+1)%N.length],V[S])),T=l.magnitudeSquared(l.sub(N[x],V[(S+1)%V.length]));A<5&&T<5&&(N[x].isInternal=!0,V[S].isInternal=!0)}}}}return v.length>1?(f=a.create(i.extend({parts:v.slice(0)},o)),a.setPosition(f,{x:e,y:t}),f):v[0]}},function(e,t,n){var o={};e.exports=o;var r=n(0),i=n(8);o.create=function(e){return r.extend({bodies:[],pairs:null},e)},o.setBodies=function(e,t){e.bodies=t.slice(0)},o.clear=function(e){e.bodies=[]},o.collisions=function(e){var t,n,r=[],a=e.pairs,s=e.bodies,l=s.length,c=o.canCollide,u=i.collides;for(s.sort(o._compareBoundsX),t=0;t<l;t++){var d=s[t],p=d.bounds,m=d.bounds.max.x,f=d.bounds.max.y,v=d.bounds.min.y,g=d.isStatic||d.isSleeping,y=d.parts.length,h=1===y;for(n=t+1;n<l;n++){var b=s[n];if((P=b.bounds).min.x>m)break;if(!(f<P.min.y||v>P.max.y)&&(!g||!b.isStatic&&!b.isSleeping)&&c(d.collisionFilter,b.collisionFilter)){var x=b.parts.length;if(h&&1===x)(B=u(d,b,a))&&r.push(B);else for(var w=x>1?1:0,S=y>1?1:0;S<y;S++)for(var k=d.parts[S],_=(p=k.bounds,w);_<x;_++){var B,C=b.parts[_],P=C.bounds;p.min.x>P.max.x||p.max.x<P.min.x||p.max.y<P.min.y||p.min.y>P.max.y||(B=u(k,C,a))&&r.push(B)}}}}return r},o.canCollide=function(e,t){return e.group===t.group&&0!==e.group?e.group>0:0!=(e.mask&t.category)&&0!=(t.mask&e.category)},o._compareBoundsX=function(e,t){return e.bounds.min.x-t.bounds.min.x}},function(e,t,n){var o={};e.exports=o;var r=n(0);o.create=function(e){var t={};return e||r.log("Mouse.create: element was undefined, defaulting to document.body","warn"),t.element=e||document.body,t.absolute={x:0,y:0},t.position={x:0,y:0},t.mousedownPosition={x:0,y:0},t.mouseupPosition={x:0,y:0},t.offset={x:0,y:0},t.scale={x:1,y:1},t.wheelDelta=0,t.button=-1,t.pixelRatio=parseInt(t.element.getAttribute("data-pixel-ratio"),10)||1,t.sourceEvents={mousemove:null,mousedown:null,mouseup:null,mousewheel:null},t.mousemove=function(e){var n=o._getRelativeMousePosition(e,t.element,t.pixelRatio);e.changedTouches&&(t.button=0,e.preventDefault()),t.absolute.x=n.x,t.absolute.y=n.y,t.position.x=t.absolute.x*t.scale.x+t.offset.x,t.position.y=t.absolute.y*t.scale.y+t.offset.y,t.sourceEvents.mousemove=e},t.mousedown=function(e){var n=o._getRelativeMousePosition(e,t.element,t.pixelRatio);e.changedTouches?(t.button=0,e.preventDefault()):t.button=e.button,t.absolute.x=n.x,t.absolute.y=n.y,t.position.x=t.absolute.x*t.scale.x+t.offset.x,t.position.y=t.absolute.y*t.scale.y+t.offset.y,t.mousedownPosition.x=t.position.x,t.mousedownPosition.y=t.position.y,t.sourceEvents.mousedown=e},t.mouseup=function(e){var n=o._getRelativeMousePosition(e,t.element,t.pixelRatio);e.changedTouches&&e.preventDefault(),t.button=-1,t.absolute.x=n.x,t.absolute.y=n.y,t.position.x=t.absolute.x*t.scale.x+t.offset.x,t.position.y=t.absolute.y*t.scale.y+t.offset.y,t.mouseupPosition.x=t.position.x,t.mouseupPosition.y=t.position.y,t.sourceEvents.mouseup=e},t.mousewheel=function(e){t.wheelDelta=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail)),e.preventDefault()},o.setElement(t,t.element),t},o.setElement=function(e,t){e.element=t,t.addEventListener("mousemove",e.mousemove),t.addEventListener("mousedown",e.mousedown),t.addEventListener("mouseup",e.mouseup),t.addEventListener("mousewheel",e.mousewheel),t.addEventListener("DOMMouseScroll",e.mousewheel),t.addEventListener("touchmove",e.mousemove),t.addEventListener("touchstart",e.mousedown),t.addEventListener("touchend",e.mouseup)},o.clearSourceEvents=function(e){e.sourceEvents.mousemove=null,e.sourceEvents.mousedown=null,e.sourceEvents.mouseup=null,e.sourceEvents.mousewheel=null,e.wheelDelta=0},o.setOffset=function(e,t){e.offset.x=t.x,e.offset.y=t.y,e.position.x=e.absolute.x*e.scale.x+e.offset.x,e.position.y=e.absolute.y*e.scale.y+e.offset.y},o.setScale=function(e,t){e.scale.x=t.x,e.scale.y=t.y,e.position.x=e.absolute.x*e.scale.x+e.offset.x,e.position.y=e.absolute.y*e.scale.y+e.offset.y},o._getRelativeMousePosition=function(e,t,n){var o,r,i=t.getBoundingClientRect(),a=document.documentElement||document.body.parentNode||document.body,s=void 0!==window.pageXOffset?window.pageXOffset:a.scrollLeft,l=void 0!==window.pageYOffset?window.pageYOffset:a.scrollTop,c=e.changedTouches;return c?(o=c[0].pageX-i.left-s,r=c[0].pageY-i.top-l):(o=e.pageX-i.left-s,r=e.pageY-i.top-l),{x:o/(t.clientWidth/(t.width||t.clientWidth)*n),y:r/(t.clientHeight/(t.height||t.clientHeight)*n)}}},function(e,t,n){var o={};e.exports=o;var r=n(0);o._registry={},o.register=function(e){if(o.isPlugin(e)||r.warn("Plugin.register:",o.toString(e),"does not implement all required fields."),e.name in o._registry){var t=o._registry[e.name],n=o.versionParse(e.version).number,i=o.versionParse(t.version).number;n>i?(r.warn("Plugin.register:",o.toString(t),"was upgraded to",o.toString(e)),o._registry[e.name]=e):n<i?r.warn("Plugin.register:",o.toString(t),"can not be downgraded to",o.toString(e)):e!==t&&r.warn("Plugin.register:",o.toString(e),"is already registered to different plugin object")}else o._registry[e.name]=e;return e},o.resolve=function(e){return o._registry[o.dependencyParse(e).name]},o.toString=function(e){return"string"==typeof e?e:(e.name||"anonymous")+"@"+(e.version||e.range||"0.0.0")},o.isPlugin=function(e){return e&&e.name&&e.version&&e.install},o.isUsed=function(e,t){return e.used.indexOf(t)>-1},o.isFor=function(e,t){var n=e.for&&o.dependencyParse(e.for);return!e.for||t.name===n.name&&o.versionSatisfies(t.version,n.range)},o.use=function(e,t){if(e.uses=(e.uses||[]).concat(t||[]),0!==e.uses.length){for(var n=o.dependencies(e),i=r.topologicalSort(n),a=[],s=0;s<i.length;s+=1)if(i[s]!==e.name){var l=o.resolve(i[s]);l?o.isUsed(e,l.name)||(o.isFor(l,e)||(r.warn("Plugin.use:",o.toString(l),"is for",l.for,"but installed on",o.toString(e)+"."),l._warned=!0),l.install?l.install(e):(r.warn("Plugin.use:",o.toString(l),"does not specify an install function."),l._warned=!0),l._warned?(a.push("🔶 "+o.toString(l)),delete l._warned):a.push("✅ "+o.toString(l)),e.used.push(l.name)):a.push("❌ "+i[s])}a.length>0&&r.info(a.join(" "))}else r.warn("Plugin.use:",o.toString(e),"does not specify any dependencies to install.")},o.dependencies=function(e,t){var n=o.dependencyParse(e),i=n.name;if(!(i in(t=t||{}))){e=o.resolve(e)||e,t[i]=r.map(e.uses||[],(function(t){o.isPlugin(t)&&o.register(t);var i=o.dependencyParse(t),a=o.resolve(t);return a&&!o.versionSatisfies(a.version,i.range)?(r.warn("Plugin.dependencies:",o.toString(a),"does not satisfy",o.toString(i),"used by",o.toString(n)+"."),a._warned=!0,e._warned=!0):a||(r.warn("Plugin.dependencies:",o.toString(t),"used by",o.toString(n),"could not be resolved."),e._warned=!0),i.name}));for(var a=0;a<t[i].length;a+=1)o.dependencies(t[i][a],t);return t}},o.dependencyParse=function(e){return r.isString(e)?(/^[\w-]+(@(\*|[\^~]?\d+\.\d+\.\d+(-[0-9A-Za-z-+]+)?))?$/.test(e)||r.warn("Plugin.dependencyParse:",e,"is not a valid dependency string."),{name:e.split("@")[0],range:e.split("@")[1]||"*"}):{name:e.name,range:e.range||e.version}},o.versionParse=function(e){var t=/^(\*)|(\^|~|>=|>)?\s*((\d+)\.(\d+)\.(\d+))(-[0-9A-Za-z-+]+)?$/;t.test(e)||r.warn("Plugin.versionParse:",e,"is not a valid version or range.");var n=t.exec(e),o=Number(n[4]),i=Number(n[5]),a=Number(n[6]);return{isRange:Boolean(n[1]||n[2]),version:n[3],range:e,operator:n[1]||n[2]||"",major:o,minor:i,patch:a,parts:[o,i,a],prerelease:n[7],number:1e8*o+1e4*i+a}},o.versionSatisfies=function(e,t){t=t||"*";var n=o.versionParse(t),r=o.versionParse(e);if(n.isRange){if("*"===n.operator||"*"===e)return!0;if(">"===n.operator)return r.number>n.number;if(">="===n.operator)return r.number>=n.number;if("~"===n.operator)return r.major===n.major&&r.minor===n.minor&&r.patch>=n.patch;if("^"===n.operator)return n.major>0?r.major===n.major&&r.number>=n.number:n.minor>0?r.minor===n.minor&&r.patch>=n.patch:r.patch===n.patch}return e===t||"*"===e}},function(e,t){var n={};e.exports=n,n.create=function(e){return{vertex:e,normalImpulse:0,tangentImpulse:0}}},function(e,t,n){var o={};e.exports=o;var r=n(7),i=n(18),a=n(13),s=n(19),l=n(5),c=n(6),u=n(10),d=n(0),p=n(4);o.create=function(e){e=e||{};var t=d.extend({positionIterations:6,velocityIterations:4,constraintIterations:2,enableSleeping:!1,events:[],plugin:{},gravity:{x:0,y:1,scale:.001},timing:{timestamp:0,timeScale:1,lastDelta:0,lastElapsed:0}},e);return t.world=e.world||c.create({label:"World"}),t.pairs=e.pairs||s.create(),t.detector=e.detector||a.create(),t.grid={buckets:[]},t.world.gravity=t.gravity,t.broadphase=t.grid,t.metrics={},t},o.update=function(e,t){var n,p=d.now(),m=e.world,f=e.detector,v=e.pairs,g=e.timing,y=g.timestamp;t=void 0!==t?t:d._baseDelta,t*=g.timeScale,g.timestamp+=t,g.lastDelta=t;var h={timestamp:g.timestamp,delta:t};l.trigger(e,"beforeUpdate",h);var b=c.allBodies(m),x=c.allConstraints(m);for(m.isModified&&(a.setBodies(f,b),c.setModified(m,!1,!1,!0)),e.enableSleeping&&r.update(b,t),o._bodiesApplyGravity(b,e.gravity),t>0&&o._bodiesUpdate(b,t),u.preSolveAll(b),n=0;n<e.constraintIterations;n++)u.solveAll(x,t);u.postSolveAll(b),f.pairs=e.pairs;var w=a.collisions(f);s.update(v,w,y),e.enableSleeping&&r.afterCollisions(v.list),v.collisionStart.length>0&&l.trigger(e,"collisionStart",{pairs:v.collisionStart});var S=d.clamp(20/e.positionIterations,0,1);for(i.preSolvePosition(v.list),n=0;n<e.positionIterations;n++)i.solvePosition(v.list,t,S);for(i.postSolvePosition(b),u.preSolveAll(b),n=0;n<e.constraintIterations;n++)u.solveAll(x,t);for(u.postSolveAll(b),i.preSolveVelocity(v.list),n=0;n<e.velocityIterations;n++)i.solveVelocity(v.list,t);return o._bodiesUpdateVelocities(b),v.collisionActive.length>0&&l.trigger(e,"collisionActive",{pairs:v.collisionActive}),v.collisionEnd.length>0&&l.trigger(e,"collisionEnd",{pairs:v.collisionEnd}),o._bodiesClearForces(b),l.trigger(e,"afterUpdate",h),e.timing.lastElapsed=d.now()-p,e},o.merge=function(e,t){if(d.extend(e,t),t.world){e.world=t.world,o.clear(e);for(var n=c.allBodies(e.world),i=0;i<n.length;i++){var a=n[i];r.set(a,!1),a.id=d.nextId()}}},o.clear=function(e){s.clear(e.pairs),a.clear(e.detector)},o._bodiesClearForces=function(e){for(var t=e.length,n=0;n<t;n++){var o=e[n];o.force.x=0,o.force.y=0,o.torque=0}},o._bodiesApplyGravity=function(e,t){var n=void 0!==t.scale?t.scale:.001,o=e.length;if((0!==t.x||0!==t.y)&&0!==n)for(var r=0;r<o;r++){var i=e[r];i.isStatic||i.isSleeping||(i.force.y+=i.mass*t.y*n,i.force.x+=i.mass*t.x*n)}},o._bodiesUpdate=function(e,t){for(var n=e.length,o=0;o<n;o++){var r=e[o];r.isStatic||r.isSleeping||p.update(r,t)}},o._bodiesUpdateVelocities=function(e){for(var t=e.length,n=0;n<t;n++)p.updateVelocities(e[n])}},function(e,t,n){var o={};e.exports=o;var r=n(3),i=n(0),a=n(1);o._restingThresh=2,o._restingThreshTangent=Math.sqrt(6),o._positionDampen=.9,o._positionWarming=.8,o._frictionNormalMultiplier=5,o._frictionMaxStatic=Number.MAX_VALUE,o.preSolvePosition=function(e){var t,n,o,r=e.length;for(t=0;t<r;t++)(n=e[t]).isActive&&(o=n.activeContacts.length,n.collision.parentA.totalContacts+=o,n.collision.parentB.totalContacts+=o)},o.solvePosition=function(e,t,n){var r,a,s,l,c,u,d,p,m=o._positionDampen*(n||1),f=i.clamp(t/i._baseDelta,0,1),v=e.length;for(r=0;r<v;r++)(a=e[r]).isActive&&!a.isSensor&&(l=(s=a.collision).parentA,c=s.parentB,u=s.normal,a.separation=u.x*(c.positionImpulse.x+s.penetration.x-l.positionImpulse.x)+u.y*(c.positionImpulse.y+s.penetration.y-l.positionImpulse.y));for(r=0;r<v;r++)(a=e[r]).isActive&&!a.isSensor&&(l=(s=a.collision).parentA,c=s.parentB,u=s.normal,p=a.separation-a.slop*f,(l.isStatic||c.isStatic)&&(p*=2),l.isStatic||l.isSleeping||(d=m/l.totalContacts,l.positionImpulse.x+=u.x*p*d,l.positionImpulse.y+=u.y*p*d),c.isStatic||c.isSleeping||(d=m/c.totalContacts,c.positionImpulse.x-=u.x*p*d,c.positionImpulse.y-=u.y*p*d))},o.postSolvePosition=function(e){for(var t=o._positionWarming,n=e.length,i=r.translate,s=a.update,l=0;l<n;l++){var c=e[l],u=c.positionImpulse,d=u.x,p=u.y,m=c.velocity;if(c.totalContacts=0,0!==d||0!==p){for(var f=0;f<c.parts.length;f++){var v=c.parts[f];i(v.vertices,u),s(v.bounds,v.vertices,m),v.position.x+=d,v.position.y+=p}c.positionPrev.x+=d,c.positionPrev.y+=p,d*m.x+p*m.y<0?(u.x=0,u.y=0):(u.x*=t,u.y*=t)}}},o.preSolveVelocity=function(e){var t,n,o=e.length;for(t=0;t<o;t++){var r=e[t];if(r.isActive&&!r.isSensor){var i=r.activeContacts,a=i.length,s=r.collision,l=s.parentA,c=s.parentB,u=s.normal,d=s.tangent;for(n=0;n<a;n++){var p=i[n],m=p.vertex,f=p.normalImpulse,v=p.tangentImpulse;if(0!==f||0!==v){var g=u.x*f+d.x*v,y=u.y*f+d.y*v;l.isStatic||l.isSleeping||(l.positionPrev.x+=g*l.inverseMass,l.positionPrev.y+=y*l.inverseMass,l.anglePrev+=l.inverseInertia*((m.x-l.position.x)*y-(m.y-l.position.y)*g)),c.isStatic||c.isSleeping||(c.positionPrev.x-=g*c.inverseMass,c.positionPrev.y-=y*c.inverseMass,c.anglePrev-=c.inverseInertia*((m.x-c.position.x)*y-(m.y-c.position.y)*g))}}}}},o.solveVelocity=function(e,t){var n,r,a,s,l=t/i._baseDelta,c=l*l*l,u=-o._restingThresh*l,d=o._restingThreshTangent,p=o._frictionNormalMultiplier*l,m=o._frictionMaxStatic,f=e.length;for(a=0;a<f;a++){var v=e[a];if(v.isActive&&!v.isSensor){var g=v.collision,y=g.parentA,h=g.parentB,b=y.velocity,x=h.velocity,w=g.normal.x,S=g.normal.y,k=g.tangent.x,_=g.tangent.y,B=v.activeContacts,C=B.length,P=1/C,E=y.inverseMass+h.inverseMass,N=v.friction*v.frictionStatic*p;for(b.x=y.position.x-y.positionPrev.x,b.y=y.position.y-y.positionPrev.y,x.x=h.position.x-h.positionPrev.x,x.y=h.position.y-h.positionPrev.y,y.angularVelocity=y.angle-y.anglePrev,h.angularVelocity=h.angle-h.anglePrev,s=0;s<C;s++){var V=B[s],A=V.vertex,T=A.x-y.position.x,I=A.y-y.position.y,M=A.x-h.position.x,O=A.y-h.position.y,D=b.x-I*y.angularVelocity,j=b.y+T*y.angularVelocity,L=D-(x.x-O*h.angularVelocity),z=j-(x.y+M*h.angularVelocity),R=w*L+S*z,F=k*L+_*z,H=v.separation+R,$=Math.min(H,1),q=($=H<0?0:$)*N;F<-q||F>q?(r=F>0?F:-F,(n=v.friction*(F>0?1:-1)*c)<-r?n=-r:n>r&&(n=r)):(n=F,r=m);var G=T*S-I*w,U=M*S-O*w,W=P/(E+y.inv