0x3b1383e0…50dasent to0x99a9b7c1…b069·#18,838,691·view on Etherscan
/*
With special thanks:
- matter-js: Copyright (c) Liam Brummitt and contributors (MIT License)
- spectral.js: Copyright (c) 2023 Ronald van Wijnen (MIT License)
- Oklab: Copyright (c) 2020 Björn Ottosson (MIT License)
- GLSL-Color-Functions: Copyright (c) 2022 Adam Lastowka (MIT License)
- tiny-artblocks: Copyright (c) 2017 Matt DesLauriers (MIT License)
- noise2d: Copyright (C) 2011 Ian McEwan, Ashima Arts (MIT License)
*/
(()=>{"use strict";var e=Number.MAX_VALUE,t=Math.PI,n=Math.abs,o=Math.sin,i=Math.cos,r=Math.sqrt,a=Math.max,s=Math.min,c=Math.floor,l=Math.pow;const v={antialias:!1,preserveDrawingBuffer:!0},p=2048,x=3/4,d=1920,m=[72,48,24,16,8,36,36],u=[.2,.3,.37,.45,.59,.5,.45],y=[.6,.8,1,.8,1],f="#eae7e1",g="#1f1e1c",b=[f,"#e6d2af","#dedbd0",g],h=[[4,8],[9,13],[14,20]],_=[["#f7f6f1",4,[1],[7,8,9,18,19]],["#001220",1,[0,5,7,10],[6,9,13,14,19]],["#be8156",1,[11,19],[4,5,8,9,15]],["#854d40",1,[],[2,4,5,8,9]],["#6d3334",2,[],[5,7,8,9,10]],["#a9223e",4,[1,12,14],[2,8,9,15,18]],["#cd4e9a",2,[11,12,14,19],[1,7,8,9,14]],["#d8353e",4,[1,11,12,14,17],[8,9,14,15,19]],["#e67347",4,[],[6,7,9,14,15]],["#f0b945",4,[],[0,5,8,16,18]],["#fcf456",1,[1,19],[6,7,11,16,17]],["#419142",1,[2,6,7,19],[0,10,14,16,19]],["#357848",1,[5,6,7],[0,9,14,17,19]],["#36766f",1,[],[5,8,9,17,19]],["#2b5964",2,[5,6,7],[2,6,9,15,16]],["#283061",1,[],[5,7,8,14,19]],["#306cb3",2,[],[9,10,14,15,17]],["#6bc5d9",1,[7],[5,10,16,18,19]],["#7895d5",2,[],[0,5,14,15,17]],["#8d7ac4",4,[2,6,10,11],[1,7,15,16,17]]],S=l(2,-32),w=32557,A=19605,R=new Uint16Array(4),P=new DataView(R.buffer),E=()=>{const e=R[0],t=R[1],n=R[2],o=R[3],i=0|33103+w*e,r=0|63335+w*t+(A*e+(i>>>16)),a=0|31614+w*n+A*t+(62509*e+(r>>>16)),s=5125+w*o+(A*n+62509*t)+(22609*e+(a>>>16));R[0]=i,R[1]=r,R[2]=a,R[3]=s;const c=(o<<21)+((o>>2^n)<<5)+((n>>2^t)>>11);return S*((c>>>(o>>11)|c<<(31&-(o>>11)))>>>0)},I=(e,t=0)=>{const n=16,o=65535,i=255;for(var r,a=1540483477,s=e.length,c=t^s,l=0;4<=s;)r=((r=e[l]&i|(e[++l]&i)<<8|(e[++l]&i)<<16|(e[++l]&i)<<24)&o)*a+(((r>>>n)*a&o)<<n),c=(c&o)*a+(((c>>>n)*a&o)<<n)^(r=((r^=r>>>24)&o)*a+(((r>>>n)*a&o)<<n)),s-=4,++l;switch(s){case 3:c^=(e[l+2]&i)<<n;case 2:c^=(e[l+1]&i)<<8;case 1:c=((c^=e[l]&i)&o)*a+(((c>>>n)*a&o)<<n)}return c=((c^=c>>>13)&o)*a+(((c>>>16)*a&o)<<16),(c^=c>>>15)>>>0},C=e=>{const t=~~((e.length-2)/2),n=[];for(let o=0;o<t;o++){const t=2+2*o;n.push(parseInt(e.slice(t,t+2),16))}const o=I(n,1690382925),i=I(n,72970470);P.setUint32(0,o),P.setUint32(4,i)},B=(e=.5)=>E()<e,T=(e,t)=>(void 0===t&&(t=e,e=0),E()*(t-e)+e),M=(e,t)=>c(T(e,t)),U=(e,t=[])=>e.length?e.filter((e=>{for(let n=0;n<t.length;n++)if(e===t[n])return!1;return!0}))[M(e.length)]:void 0,z=e=>{for(var t,n,o=e.length,i=[...e];o;)t=~~(E()*o--),n=i[o],i[o]=i[t],i[t]=n;return i},V=e=>{var t,n=0;for(t=0;t<e.length;t++)n+=e[t];var o=E()*n;for(t=0;t<e.length;t++){if(o<e[t])return t;o-=e[t]}return 0},F="Mixed",k="Split",L="Dark",O=[["Profile",[["Square",20],["Thick",30],["Skinny",5],["Mixed",25],["Split",20]]],["Scale",[["Tiny",5],["Small",5],["Medium",10],["Large",25],["Huge",35],[F,10],[k,10]]],["Spectrum",[["Narrow",15],["Wide",60],["Full",25]]],["Background",[["Light",15],["Cream",60],["Stone",15],[L,10]]]],D=(e,t=[0,0])=>r((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])),X=e=>{var t=parseInt(e.replace("#",""),16);return[t>>16,255&t>>8,255&t].map((e=>e/255))},N=(e="div")=>document.createElement(e),$=(e,t)=>e.appendChild(t),Y=(e,t,n,o={passive:!0})=>(e.addEventListener(t,n,o),()=>e.removeEventListener(t,n,o)),G=e=>window.requestAnimationFrame(e),W=(e,t)=>{const n=Object.keys(t);for(let o=0;o<n.length;o++)e.style[n[o]]=t[n[o]]};var j={create:(e,t)=>({x:e||0,y:t||0}),clone:e=>({x:e.x,y:e.y}),magnitude:e=>r(e.x*e.x+e.y*e.y),rotate:(e,t,n)=>{var r=i(t),a=o(t);n||(n={});var s=e.x*r-e.y*a;return n.y=e.x*a+e.y*r,n.x=s,n},rotateAbout:(e,t,n,r)=>{var a=i(t),s=o(t);r||(r={});var c=n.x+((e.x-n.x)*a-(e.y-n.y)*s);return r.y=n.y+((e.x-n.x)*s+(e.y-n.y)*a),r.x=c,r},normalise:e=>{var t=j.magnitude(e);return 0===t?{x:0,y:0}:{x:e.x/t,y:e.y/t}},dot:(e,t)=>e.x*t.x+e.y*t.y,cross:(e,t)=>e.x*t.y-e.y*t.x,cross3:(e,t,n)=>(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x),add:(e,t,n)=>(n||(n={}),n.x=e.x+t.x,n.y=e.y+t.y,n),sub:(e,t,n)=>(n||(n={}),n.x=e.x-t.x,n.y=e.y-t.y,n),mult:(e,t)=>({x:e.x*t,y:e.y*t}),div:(e,t)=>({x:e.x/t,y:e.y/t}),angle:(e,t)=>Math.atan2(t.y-e.y,t.x-e.x)},q={_bd:1e3/60,_nextId:0,_seed:0};q._now=+new Date,q.extend=function(e,t){var n,o;"boolean"==typeof t?(n=2,o=t):(n=1,o=!0);for(var i,r=n;r<arguments.length;r++)if(i=arguments[r])for(var a in i)o&&i[a]&&i[a].constructor===Object?e[a]&&e[a].constructor!==Object?e[a]=i[a]:(e[a]=e[a]||{},q.extend(e[a],o,i[a])):e[a]=i[a];return e},q.clone=(e,t)=>q.extend({},t,e),q.values=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 i in e)t.push(e[i]);return t},q.clamp=(e,t,n)=>e<t?t:e>n?n:e,q.sign=e=>0>e?-1:1,q.now=()=>{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-q._now},q.nextId=()=>q._nextId++,q.indexOf=(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};var K=(e,t)=>{if(0!==t)for(var n=i(t),r=o(t),a=0;a<e.length;a++){var s,c=e[a];s=c.x*n-c.y*r,c.y=c.x*r+c.y*n,c.x=s}},H={create:(e,t)=>{for(var n=[],o=0;o<e.length;o++){var i=e[o],r={x:i.x,y:i.y,index:o,body:t,isInternal:!1};n.push(r)}return n},fromPath:(e,t)=>{var n=[];return e.replace(/L?\s*([-\d.e]+)[\s,]*([-\d.e]+)*/gi,((e,t,o)=>{n.push({x:parseFloat(t),y:parseFloat(o)})})),H.create(n,t)},centre:e=>{for(var t,n,o,i=H.area(e,!0),r={x:0,y:0},a=0;a<e.length;a++)o=(a+1)%e.length,t=j.cross(e[a],e[o]),n=j.mult(j.add(e[a],e[o]),t),r=j.add(r,n);return j.div(r,6*i)},mean: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 j.div(t,e.length)},area:(e,t)=>{for(var o=0,i=e.length-1,r=0;r<e.length;r++)o+=(e[i].x-e[r].x)*(e[i].y+e[r].y),i=r;return t?o/2:n(o)/2},inertia:(e,t)=>{for(var o,i,r=0,a=0,s=e,c=0;c<s.length;c++)i=(c+1)%s.length,r+=(o=n(j.cross(s[i],s[c])))*(j.dot(s[i],s[i])+j.dot(s[i],s[c])+j.dot(s[c],s[c])),a+=o;return t/6*(r/a)},translate:(e,t,n)=>{n=void 0===n?1:n;var o,i=e.length,r=t.x*n,a=t.y*n;for(o=0;o<i;o++)e[o].x+=r,e[o].y+=a;return e},rotate:(e,t,n)=>{if(0!==t){var r,a,s,c,l=i(t),v=o(t),p=n.x,x=n.y,d=e.length;for(c=0;c<d;c++)a=(r=e[c]).x-p,s=r.y-x,r.x=p+(a*l-s*v),r.y=x+(a*v+s*l);return e}},contains:(e,t)=>{for(var n,o=t.x,i=t.y,r=e.length,a=e[r-1],s=0;s<r;s++){if(n=e[s],0<(o-a.x)*(n.y-a.y)+(i-a.y)*(a.x-n.x))return!1;a=n}return!0},scale:(e,t,n,o)=>{if(1===t&&1===n)return e;o=o||H.centre(e);for(var i,r,a=0;a<e.length;a++)i=e[a],r=j.sub(i,o),e[a].x=o.x+r.x*t,e[a].y=o.y+r.y*n;return e},clockwiseSort:e=>{var t=H.mean(e);return e.sort(((e,n)=>j.angle(t,e)-j.angle(t,n))),e}},Z={create:e=>{var t={min:{x:0,y:0},max:{x:0,y:0}};return e&&Z.update(t,e),t},update:(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,i=0;i<t.length;i++)(o=t[i]).x>e.max.x&&(e.max.x=o.x),o.x<e.min.x&&(e.min.x=o.x),o.y>e.max.y&&(e.max.y=o.y),o.y<e.min.y&&(e.min.y=o.y);n&&(0<n.x?e.max.x+=n.x:e.min.x+=n.x,0<n.y?e.max.y+=n.y:e.min.y+=n.y)},contains:(e,t)=>t.x>=e.min.x&&t.x<=e.max.x&&t.y>=e.min.y&&t.y<=e.max.y,overlaps:(e,t)=>e.min.x<=t.max.x&&e.max.x>=t.min.x&&e.max.y>=t.min.y&&e.min.y<=t.max.y,translate:(e,t)=>{e.min.x+=t.x,e.max.x+=t.x,e.min.y+=t.y,e.max.y+=t.y},shift:(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}},J={_tc:!0,_is:4,_nid:1,_nnid:-1,_nc:1,_bd:1e3/60,create:e=>{var t={id:q.nextId(),type:"body",parts:[],angle:0,vertices:H.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,positionIp:{x:0,y:0},constraintIp:{x:0,y:0,angle:0},totalContacts:0,speed:0,angularSpeed:0,vel:{x:0,y:0},angularVel:0,isSensor:!1,isStatic:!1,motion:0,density:.001,restitution:0,friction:.1,frictionStatic:.5,frictionAir:.01,filter:{category:1,mask:4294967295,group:0},slop:.05,timeScale:1,bounds:null,positionPrev:null,anglePrev:0,parent:null,axes:null,area:0,mass:0,inertia:0,deltaTime:1e3/60,_o:null},n=q.extend(t,e);return Q(n,e),n},nextGroup:e=>e?J._nnid--:J._nid++,nextCategory:()=>(J._nc<<=1,J._nc)},Q=(e,t)=>{t=t||{},J.set(e,{bounds:e.bounds||Z.create(e.vertices),positionPrev:e.positionPrev||j.clone(e.position),anglePrev:e.anglePrev||e.angle,vertices:e.vertices,parts:e.parts||[e],isStatic:e.isStatic,parent:e.parent||e}),H.rotate(e.vertices,e.angle,e.position),K(e.axes,e.angle),Z.update(e.bounds,e.vertices,e.vel),J.set(e,{axes:t.axes||e.axes,area:t.area||e.area,mass:t.mass||e.mass,inertia:t.inertia||e.inertia})};J.set=(e,t,n)=>{var o;for(o in"string"==typeof t&&(o=t,(t={})[o]=n),t)Object.prototype.hasOwnProperty.call(t,o)&&(n=t[o],"isStatic"===o?J.setStatic(e,n):"mass"===o?J.setMass(e,n):"density"===o?J.setDensity(e,n):"inertia"===o?J.setInertia(e,n):"vertices"===o?J.setVertices(e,n):"position"===o?J.setPosition(e,n):"angle"===o?J.setAngle(e,n):"vel"===o?J.setVel(e,n):"angularVel"===o?J.setAngularVel(e,n):"speed"===o?J.setSpeed(e,n):"angularSpeed"===o?J.setAngularSpeed(e,n):"parts"===o?J.setParts(e,n):"centre"===o?J.setCentre(e,n):e[o]=n)},J.setStatic=(e,t)=>{for(var n,o=0;o<e.parts.length;o++)n=e.parts[o],t?(!n.isStatic&&(n._o={restitution:n.restitution,friction:n.friction,mass:n.mass,inertia:n.inertia,density:n.density,inverseMass:n.inverseMass,inverseInertia:n.inverseInertia}),n.restitution=0,n.friction=1,n.mass=n.inertia=n.density=1/0,n.inverseMass=n.inverseInertia=0,n.positionPrev.x=n.position.x,n.positionPrev.y=n.position.y,n.anglePrev=n.angle,n.angularVel=0,n.speed=0,n.angularSpeed=0,n.motion=0):n._o&&(n.restitution=n._o.restitution,n.friction=n._o.friction,n.mass=n._o.mass,n.inertia=n._o.inertia,n.density=n._o.density,n.inverseMass=n._o.inverseMass,n.inverseInertia=n._o.inverseInertia,n._o=null),n.isStatic=t},J.setMass=(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},J.setDensity=(e,t)=>{J.setMass(e,t*e.area),e.density=t},J.setInertia=(e,t)=>{e.inertia=t,e.inverseInertia=1/e.inertia},J.setVertices=(e,t)=>{e.vertices=t[0].body===e?t:H.create(t,e),e.axes=(e=>{for(var t={},n=0;n<e.length;n++){var o=(n+1)%e.length,i=j.normalise({x:e[o].y-e[n].y,y:e[n].x-e[o].x}),r=0===i.y?1/0:i.x/i.y;t[r=r.toFixed(3).toString()]=i}return q.values(t)})(e.vertices),e.area=H.area(e.vertices),J.setMass(e,e.density*e.area);var n=H.centre(e.vertices);H.translate(e.vertices,n,-1),J.setInertia(e,J._is*H.inertia(e.vertices,e.mass)),H.translate(e.vertices,e.position),Z.update(e.bounds,e.vertices,e.vel)},J.setParts=(e,t)=>{var n;for(t=t.slice(0),e.parts.length=0,e.parts.push(e),e.parent=e,n=0;n<t.length;n++){var o=t[n];o!==e&&(o.parent=e,e.parts.push(o))}if(1!==e.parts.length){var i=J._totalProperties(e);e.area=i.area,e.parent=e,e.position.x=i.centre.x,e.position.y=i.centre.y,e.positionPrev.x=i.centre.x,e.positionPrev.y=i.centre.y,J.setMass(e,i.mass),J.setInertia(e,i.inertia),J.setPosition(e,i.centre)}},J.setCentre=(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)},J.setPosition=(e,t,n)=>{var o=j.sub(t,e.position);n?(e.positionPrev.x=e.position.x,e.positionPrev.y=e.position.y,e.vel.x=o.x,e.vel.y=o.y,e.speed=j.magnitude(o)):(e.positionPrev.x+=o.x,e.positionPrev.y+=o.y);for(var i,r=0;r<e.parts.length;r++)(i=e.parts[r]).position.x+=o.x,i.position.y+=o.y,H.translate(i.vertices,o),Z.update(i.bounds,i.vertices,e.vel)},J.setAngle=(e,t,o)=>{var i=t-e.angle;o?(e.anglePrev=e.angle,e.angularVel=i,e.angularSpeed=n(i)):e.anglePrev+=i;for(var r,a=0;a<e.parts.length;a++)(r=e.parts[a]).angle+=i,H.rotate(r.vertices,i,e.position),K(r.axes,i),Z.update(r.bounds,r.vertices,e.vel),0<a&&j.rotateAbout(r.position,i,e.position,r.position)},J.update=(e,t)=>{var n=(t=(void 0===t?1e3/60:t)*e.timeScale)*t,o=J._tc?t/(e.deltaTime||t):1,i=1-e.frictionAir*(t/q._bd),r=(e.position.x-e.positionPrev.x)*o,a=(e.position.y-e.positionPrev.y)*o;e.vel.x=r*i+e.force.x/e.mass*n,e.vel.y=a*i+e.force.y/e.mass*n,e.positionPrev.x=e.position.x,e.positionPrev.y=e.position.y,e.position.x+=e.vel.x,e.position.y+=e.vel.y,e.deltaTime=t,e.angularVel=(e.angle-e.anglePrev)*i*o+e.torque/e.inertia*n,e.anglePrev=e.angle,e.angle+=e.angularVel;for(var s,c=0;c<e.parts.length;c++)s=e.parts[c],H.translate(s.vertices,e.vel),0<c&&(s.position.x+=e.vel.x,s.position.y+=e.vel.y),0!==e.angularVel&&(H.rotate(s.vertices,e.angularVel,e.position),K(s.axes,e.angularVel),0<c&&j.rotateAbout(s.position,e.angularVel,e.position,s.position)),Z.update(s.bounds,s.vertices,e.vel)},J.updateVelocities=e=>{var t=J._bd/e.deltaTime,o=e.vel;o.x=(e.position.x-e.positionPrev.x)*t,o.y=(e.position.y-e.positionPrev.y)*t,e.speed=r(o.x*o.x+o.y*o.y),e.angularVel=(e.angle-e.anglePrev)*t,e.angularSpeed=n(e.angularVel)},J.applyForce=(e,t,n)=>{var o=t.x-e.position.x,i=t.y-e.position.y;e.force.x+=n.x,e.force.y+=n.y,e.torque+=o*n.y-i*n.x},J._totalProperties=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],i=o.mass===1/0?1:o.mass;t.mass+=i,t.area+=o.area,t.inertia+=o.inertia,t.centre=j.add(t.centre,j.mult(o.position,i))}return t.centre=j.div(t.centre,t.mass),t};var ee={rectangle:(e,t,n,o,i)=>{i=i||{};var r={position:{x:e,y:t},vertices:H.fromPath("L 0 0 L "+n+" 0 L "+n+" "+o+" L 0 "+o)};return J.create(q.extend({},r,i))},circle:(e,t,n,o,i)=>{o=o||{};var r=(0,Math.ceil)(a(10,s(i=i||25,n)));return 1==r%2&&(r+=1),ee.polygon(e,t,r,n,q.extend({},o))},polygon:(e,n,r,a,s)=>{if(s=s||{},3>r)return ee.circle(e,n,a,s);for(var c=2*t/r,l="",v=.5*c,p=0;p<r;p+=1){var x=v+p*c,d=i(x)*a,m=o(x)*a;l+="L "+d.toFixed(3)+" "+m.toFixed(3)+" "}var u={position:{x:e,y:n},vertices:H.fromPath(l)};return J.create(q.extend({},u,s))}},te={create:(e,t)=>{var n=e.bodyA,o=e.bodyB,i={id:te.id(n,o),bodyA:n,bodyB:o,collision:e,contacts:[],activeContacts:[],separation:0,isActive:!0,confirmedActive:!0,isSensor:n.isSensor||o.isSensor,timeCreated:t,timeUpdated:t,inverseMass:0,friction:0,frictionStatic:0,restitution:0,slop:0};return te.update(i,e,t),i},update:(e,t,n)=>{var o=e.contacts,i=t.supports,r=e.activeContacts,a=t.parentA,s=t.parentB,c=a.vertices.length;e.isActive=!0,e.timeUpdated=n,e.collision=t,e.separation=t.depth,e.inverseMass=a.inverseMass+s.inverseMass,e.friction=a.friction<s.friction?a.friction:s.friction,e.frictionStatic=a.frictionStatic>s.frictionStatic?a.frictionStatic:s.frictionStatic,e.restitution=a.restitution>s.restitution?a.restitution:s.restitution,e.slop=a.slop>s.slop?a.slop:s.slop,t.pair=e,r.length=0;for(var l=0;l<i.length;l++){var v=i[l],p=v.body===a?v.index:c+v.index,x=o[p];x?r.push(x):r.push(o[p]={vertex:v,normalIp:0,tangentIp:0})}},setActive:(e,t,n)=>{t?(e.isActive=!0,e.timeUpdated=n):(e.isActive=!1,e.activeContacts.length=0)},id:(e,t)=>e.id<t.id?"A"+e.id+"B"+t.id:"A"+t.id+"B"+e.id},ne={},oe=[],ie={overlap:0,axis:null},re={overlap:0,axis:null};ne.create=(e,t)=>({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:[]}),ne.collides=(e,t,n)=>{if(ne._oa(ie,e.vertices,t.vertices,e.axes),0>=ie.overlap)return null;if(ne._oa(re,t.vertices,e.vertices,t.axes),0>=re.overlap)return null;var o,i,r=n&&n.table[te.id(e,t)];r?o=r.collision:((o=ne.create(e,t)).collided=!0,o.bodyA=e.id<t.id?e:t,o.bodyB=e.id<t.id?t:e,o.parentA=o.bodyA.parent,o.parentB=o.bodyB.parent),e=o.bodyA,t=o.bodyB,i=ie.overlap<re.overlap?ie:re;var a=o.normal,s=o.supports,c=i.axis,l=c.x,v=c.y;0>l*(t.position.x-e.position.x)+v*(t.position.y-e.position.y)?(a.x=l,a.y=v):(a.x=-l,a.y=-v),o.tangent.x=-a.y,o.tangent.y=a.x,o.depth=i.overlap,o.penetration.x=a.x*o.depth,o.penetration.y=a.y*o.depth;var p=ne._fs(e,t,a,1),x=0;if(H.contains(e.vertices,p[0])&&(s[x++]=p[0]),H.contains(e.vertices,p[1])&&(s[x++]=p[1]),2>x){var d=ne._fs(t,e,a,-1);H.contains(t.vertices,d[0])&&(s[x++]=d[0]),2>x&&H.contains(t.vertices,d[1])&&(s[x++]=d[1])}return 0==x&&(s[x++]=p[0]),s.length=x,o},ne._oa=(t,n,o,i)=>{var r,a,s,c,l,v,p=n.length,x=o.length,d=n[0].x,m=n[0].y,u=o[0].x,y=o[0].y,f=i.length,g=e,b=0;for(l=0;l<f;l++){var h=i[l],_=h.x,S=h.y,w=d*_+m*S,A=u*_+y*S,R=w,P=A;for(v=1;v<p;v+=1)(c=n[v].x*_+n[v].y*S)>R?R=c:c<w&&(w=c);for(v=1;v<x;v+=1)(c=o[v].x*_+o[v].y*S)>P?P=c:c<A&&(A=c);if((r=(a=R-A)<(s=P-w)?a:s)<g&&(g=r,b=l,0>=r))break}t.axis=i[b],t.overlap=g},ne._pta=(e,t,n)=>{for(var o,i=t[0].x*n.x+t[0].y*n.y,r=i,a=1;a<t.length;a+=1)(o=t[a].x*n.x+t[a].y*n.y)>r?r=o:o<i&&(i=o);e.min=i,e.max=r},ne._fs=(t,n,o,i)=>{var r,a,s,c,l,v=n.vertices,p=v.length,x=t.position.x,d=t.position.y,m=o.x*i,u=o.y*i,y=e;for(l=0;l<p;l+=1)(c=m*(x-(a=v[l]).x)+u*(d-a.y))<y&&(y=c,r=a);return y=m*(x-(s=v[(p+r.index-1)%p]).x)+u*(d-s.y),m*(x-(a=v[(r.index+1)%p]).x)+u*(d-a.y)<y?(oe[0]=r,oe[1]=a,oe):(oe[0]=r,oe[1]=s,oe)};var ae={create:e=>q.extend({id:q.nextId(),type:"composite",parent:null,isModified:!1,bodies:[],constraints:[],composites:[],cache:{allBodies:null,allConstraints:null,allComposites:null}},e),setModified:(e,t,n,o)=>{if(e.isModified=t,t&&e.cache&&(e.cache.allBodies=null,e.cache.allConstraints=null,e.cache.allComposites=null),n&&e.parent&&ae.setModified(e.parent,t,n,o),o)for(var i,r=0;r<e.composites.length;r++)i=e.composites[r],ae.setModified(i,t,n,o)},add:(e,t)=>{for(var n,o=[].concat(t),i=0;i<o.length;i++)switch(n=o[i],n.type){case"body":if(n.parent!==n)break;ae.addBody(e,n);break;case"constraint":ae.addConstraint(e,n);break;case"composite":ae.addComposite(e,n);break;case"mouseConstraint":ae.addConstraint(e,n.constraint)}return e},remove:(e,t,n)=>{for(var o,i=[].concat(t),r=0;r<i.length;r++)switch(o=i[r],o.type){case"body":ae.removeBody(e,o,n);break;case"constraint":ae.removeConstraint(e,o,n);break;case"composite":ae.removeComposite(e,o,n);break;case"mouseConstraint":ae.removeConstraint(e,o.constraint)}return e},addComposite:(e,t)=>(e.composites.push(t),t.parent=e,ae.setModified(e,!0,!0,!1),e),removeComposite:(e,t,n)=>{var o=q.indexOf(e.composites,t);if(-1!==o&&ae.removeCompositeAt(e,o),n)for(var i=0;i<e.composites.length;i++)ae.removeComposite(e.composites[i],t,!0);return e},removeCompositeAt:(e,t)=>(e.composites.splice(t,1),ae.setModified(e,!0,!0,!1),e),addBody:(e,t)=>(e.bodies.push(t),ae.setModified(e,!0,!0,!1),e),removeBody:(e,t,n)=>{var o=q.indexOf(e.bodies,t);if(-1!==o&&ae.removeBodyAt(e,o),n)for(var i=0;i<e.composites.length;i++)ae.removeBody(e.composites[i],t,!0);return e},removeBodyAt:(e,t)=>(e.bodies.splice(t,1),ae.setModified(e,!0,!0,!1),e),addConstraint:(e,t)=>(e.constraints.push(t),ae.setModified(e,!0,!0,!1),e),removeConstraint:(e,t,n)=>{var o=q.indexOf(e.constraints,t);if(-1!==o&&ae.removeConstraintAt(e,o),n)for(var i=0;i<e.composites.length;i++)ae.removeConstraint(e.composites[i],t,!0);return e},removeConstraintAt:(e,t)=>(e.constraints.splice(t,1),ae.setModified(e,!0,!0,!1),e),allBodies: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(ae.allBodies(e.composites[n]));return e.cache&&(e.cache.allBodies=t),t},allConstraints: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(ae.allConstraints(e.composites[n]));return e.cache&&(e.cache.allConstraints=t),t}},se={_w:.4,_td:1,_ml:1e-6,create: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?j.add(t.bodyA.position,t.pointA):t.pointA,o=t.bodyB?j.add(t.bodyB.position,t.pointB):t.pointB,i=j.magnitude(j.sub(n,o));return t.length=void 0===t.length?i:t.length,t.id=t.id||q.nextId(),t.label=t.label||"Constraint",t.type="constraint",t.stiffness=t.stiffness||(0<t.length?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},preSolveAll:e=>{for(var t=0;t<e.length;t+=1){var n=e[t],o=n.constraintIp;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)}},solveAll:(e,t)=>{for(var n=q.clamp(t/q._bd,0,1),o=0;o<e.length;o+=1){var i=e[o],r=!i.bodyA||i.bodyA&&i.bodyA.isStatic,a=!i.bodyB||i.bodyB&&i.bodyB.isStatic;(r||a)&&se.solve(e[o],n)}for(o=0;o<e.length;o+=1)r=!(i=e[o]).bodyA|