haxball.js
Version:
A powerful library for interacting with the Haxball Headless API
134 lines (128 loc) • 70 kB
JavaScript
const WebSocket = require("ws");
const XMLHttpRequest = require("xhr2");
const JSON5 = require("json5");
const url = require("url");
const pako = require("pako");
const { HttpsProxyAgent } = require("https-proxy-agent");
const { Crypto } = require("@peculiar/webcrypto");
const { performance } = require("perf_hooks");
const crypto = new Crypto();
let { RTCPeerConnection, RTCIceCandidate, RTCSessionDescription } = require("@mertushka/node-datachannel/polyfill");
var promiseResolve;
var proxyAgent;
var debug = false;
const HBLoaded = (config) => {
if(config?.webrtc) {
RTCPeerConnection = config.webrtc.RTCPeerConnection;
RTCIceCandidate = config.webrtc.RTCIceCandidate;
RTCSessionDescription = config.webrtc.RTCSessionDescription;
}
return new Promise(function (resolve, reject) {
promiseResolve = resolve;
});
}
const onHBLoaded = function (cb) {
return cb;
};
/* Builded & Automated with Haxball.JS Nodeify Script */
/*
HaxBall © Mario Carbajal - All rights reserved.
8be54ed5
*/
'use strict';(function(va){function ob(){return q.Zb(this,"")}function hb(a,b){if(null==b)return null;null==b.xd&&(b.xd=va.ye++);var c;null==a.oe?a.oe={}:c=a.oe[b.xd];null==c&&(c=b.bind(a),a.oe[b.xd]=c);return c}class pb{static Bh(a){a=a.split(" ");let b=a[4];if("typ"!=a[6])throw r.s(null);return{ni:a[7],fh:b}}}class A{constructor(a,b){null==b&&(b=!1);this.j=a;this.ra=b;this.a=0}fe(){let a=new ArrayBuffer(this.a),b=new Uint8Array(this.j.buffer,this.j.byteOffset,this.a);(new Uint8Array(a)).set(b);
return a}Bb(){return new Uint8Array(this.j.buffer,this.j.byteOffset,this.a)}Sb(){return new DataView(this.j.buffer,this.j.byteOffset,this.a)}mi(){return new L(this.Sb(),this.ra)}Ia(a){this.j.byteLength<a&&this.Rh(2*this.j.byteLength>=a?2*this.j.byteLength:a)}Rh(a){if(1>a)throw r.s("Can't resize buffer to a capacity lower than 1");if(this.j.byteLength<a){let b=new Uint8Array(this.j.buffer);a=new ArrayBuffer(a);(new Uint8Array(a)).set(b);this.j=new DataView(a)}}f(a){let b=this.a++;this.Ia(this.a);this.j.setUint8(b,
a)}he(a){let b=this.a;this.a+=2;this.Ia(this.a);this.j.setInt16(b,a,this.ra)}Oa(a){let b=this.a;this.a+=2;this.Ia(this.a);this.j.setUint16(b,a,this.ra)}w(a){let b=this.a;this.a+=4;this.Ia(this.a);this.j.setInt32(b,a,this.ra)}xa(a){let b=this.a;this.a+=4;this.Ia(this.a);this.j.setUint32(b,a,this.ra)}ge(a){let b=this.a;this.a+=4;this.Ia(this.a);this.j.setFloat32(b,a,this.ra)}g(a){let b=this.a;this.a+=8;this.Ia(this.a);this.j.setFloat64(b,a,this.ra)}pb(a){let b=this.a;this.a+=a.byteLength;this.Ia(this.a);
(new Uint8Array(this.j.buffer,this.j.byteOffset,this.j.byteLength)).set(a,b)}ti(a){a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);this.pb(a)}Sf(a){this.pb(new Uint8Array(a))}Tb(a){this.Da(A.Ad(a));this.ie(a)}Ca(a){null==a?this.Da(0):(this.Da(A.Ad(a)+1),this.ie(a))}Uf(a){a=(new TextEncoder).encode(a);let b=a.length;if(255<b)throw r.s(null);this.f(b);this.ti(a)}Tf(a){this.Tb(JSON.stringify(a))}ie(a){let b=this.a;this.Ia(b+A.Ad(a));let c=a.length,d=0;for(;d<c;)b+=A.Ng(P.Wf(a,d++),this.j,b);this.a=
b}Da(a){let b=this.a;a>>>=0;this.Ia(b+A.xg(a));this.j.setUint8(b,a|128);128<=a?(this.j.setUint8(b+1,a>>7|128),16384<=a?(this.j.setUint8(b+2,a>>14|128),2097152<=a?(this.j.setUint8(b+3,a>>21|128),268435456<=a?(this.j.setUint8(b+4,a>>28&127),a=5):(this.j.setUint8(b+3,this.j.getUint8(b+3)&127),a=4)):(this.j.setUint8(b+2,this.j.getUint8(b+2)&127),a=3)):(this.j.setUint8(b+1,this.j.getUint8(b+1)&127),a=2)):(this.j.setUint8(b,this.j.getUint8(b)&127),a=1);this.a+=a}static aa(a,b){null==b&&(b=!1);null==a&&
(a=16);return new A(new DataView(new ArrayBuffer(a)),b)}static Ng(a,b,c){let d=c;if(0>a)throw r.s("Cannot encode UTF8 character: charCode ("+a+") is negative");if(128>a)b.setUint8(c,a&127),++c;else if(2048>a)b.setUint8(c,a>>6&31|192),b.setUint8(c+1,a&63|128),c+=2;else if(65536>a)b.setUint8(c,a>>12&15|224),b.setUint8(c+1,a>>6&63|128),b.setUint8(c+2,a&63|128),c+=3;else if(2097152>a)b.setUint8(c,a>>18&7|240),b.setUint8(c+1,a>>12&63|128),b.setUint8(c+2,a>>6&63|128),b.setUint8(c+3,a&63|128),c+=4;else if(67108864>
a)b.setUint8(c,a>>24&3|248),b.setUint8(c+1,a>>18&63|128),b.setUint8(c+2,a>>12&63|128),b.setUint8(c+3,a>>6&63|128),b.setUint8(c+4,a&63|128),c+=5;else if(-2147483648>a)b.setUint8(c,a>>30&1|252),b.setUint8(c+1,a>>24&63|128),b.setUint8(c+2,a>>18&63|128),b.setUint8(c+3,a>>12&63|128),b.setUint8(c+4,a>>6&63|128),b.setUint8(c+5,a&63|128),c+=6;else throw r.s("Cannot encode UTF8 character: charCode ("+a+") is too large (>= 0x80000000)");return c-d}static wg(a){if(0>a)throw r.s("Cannot calculate length of UTF8 character: charCode ("+
a+") is negative");if(128>a)return 1;if(2048>a)return 2;if(65536>a)return 3;if(2097152>a)return 4;if(67108864>a)return 5;if(-2147483648>a)return 6;throw r.s("Cannot calculate length of UTF8 character: charCode ("+a+") is too large (>= 0x80000000)");}static Ad(a){let b=0,c=a.length,d=0;for(;d<c;)b+=A.wg(P.Wf(a,d++));return b}static xg(a){a>>>=0;return 128>a?1:16384>a?2:2097152>a?3:268435456>a?4:5}}class wa{}class ib{constructor(a){this.current=0;this.xi=a}next(){return this.xi[this.current++]}}class Na{static sa(a,
b){null!=a&&a(b)}}class xa{constructor(){this.rf=0;this.c=this.m=63;this.T=16777215;this.ga=.99;this.L=1;this.i=.5;this.M=10;this.la=new I(0,0);this.u=new I(0,0);this.a=new I(0,0)}G(a){var b=this.a;a.g(b.x);a.g(b.y);b=this.u;a.g(b.x);a.g(b.y);b=this.la;a.g(b.x);a.g(b.y);a.g(this.M);a.g(this.i);a.g(this.L);a.g(this.ga);a.xa(this.T);a.w(this.c);a.w(this.m)}Cg(a){var b=this.a,c=a.a,d=b.x-c.x;b=b.y-c.y;var e=a.M+this.M,f=d*d+b*b;if(0<f&&f<=e*e){f=Math.sqrt(f);d/=f;b/=f;c=this.L/(this.L+a.L);e-=f;f=e*
c;var g=this.a,k=this.a;g.x=k.x+d*f;g.y=k.y+b*f;k=g=a.a;e-=f;g.x=k.x-d*e;g.y=k.y-b*e;e=this.u;f=a.u;e=d*(e.x-f.x)+b*(e.y-f.y);0>e&&(e*=this.i*a.i+1,c*=e,g=f=this.u,f.x=g.x-d*c,f.y=g.y-b*c,a=f=a.u,c=e-c,f.x=a.x+d*c,f.y=a.y+b*c)}}Dg(a){if(0!=0*a.Ha){var b=a.F.a;var c=a.K.a;var d=c.x-b.x;var e=c.y-b.y,f=this.a;var g=f.x-c.x;c=f.y-c.y;f=this.a;if(0>=(f.x-b.x)*d+(f.y-b.y)*e||0<=g*d+c*e)return;d=a.X;b=d.x;d=d.y;g=b*g+d*c}else{d=a.ec;g=this.a;b=g.x-d.x;d=g.y-d.y;g=a.jd;c=a.kd;if((0<g.x*b+g.y*d&&0<c.x*b+
c.y*d)==0>=a.Ha)return;c=Math.sqrt(b*b+d*d);if(0==c)return;g=c-a.Oe;b/=c;d/=c}c=a.ub;if(0==c)0>g&&(g=-g,b=-b,d=-d);else if(0>c&&(c=-c,g=-g,b=-b,d=-d),g<-c)return;g>=this.M||(g=this.M-g,e=c=this.a,c.x=e.x+b*g,c.y=e.y+d*g,g=this.u,g=b*g.x+d*g.y,0>g&&(g*=this.i*a.i+1,c=a=this.u,a.x=c.x-b*g,a.y=c.y-d*g))}}class Wa{constructor(a,b){this.cg=0;this.version=1;this.ud=0;this.Gb=A.aa(1E3);this.xc=A.aa(16384);this.version=b;let c=this.ud=a.da;this.qe=a;a.Fa.G(this.xc);let d=this;a.yb=function(f){let g=a.da;
d.xc.Da(g-c);c=g;d.xc.Oa(f.B);m.ue(f,d.xc)};this.Gb.Oa(0);let e=this.ud;a.Fa.Gf(function(f){let g=a.da;d.Gb.Da(g-e);d.Gb.f(f);d.cg++;e=g})}stop(){this.qe.yb=null;this.qe.Fa.Gf(null);this.Gb.j.setUint16(0,this.cg,this.Gb.ra);this.Gb.pb(this.xc.Bb());let a=pako.deflateRaw(this.Gb.Bb()),b=A.aa(a.byteLength+32);b.ie("HBR2");b.xa(this.version);b.xa(this.qe.da-this.ud);b.pb(a);return b.Bb()}}class C{constructor(){this.Kc=0;this.m=32;this.c=63;this.i=1;this.a=new I(0,0)}G(a){let b=this.a;a.g(b.x);a.g(b.y);
a.g(this.i);a.w(this.c);a.w(this.m)}pa(a){let b=this.a;b.x=a.o();b.y=a.o();this.i=a.o();this.c=a.H();this.m=a.H()}}class T{static zf(a,b,c,d){return new Promise(function(e,f){let g=new XMLHttpRequest;g.open(b,a);g.responseType="json";g.onload=function(){200<=g.status&&300>g.status?null!=g.response?e(g.response):f(null):f("status: "+g.status)};g.onerror=function(k){f(k)};null!=d&&g.setRequestHeader("Content-type",d);g.send(c)})}static Pg(a){return T.zf(a,"GET",null)}static Rg(a){return T.Pg(a).then(function(b){let c=
b.error;if(null!=c)throw r.s(c);return b.data})}static Hh(a,b,c){return T.zf(a,"POST",b,c)}static Ih(a,b,c){return T.Hh(a,b,c).then(function(d){let e=d.error;if(null!=e)throw r.s(e);return d.data})}}class E{constructor(){this.jd=this.kd=this.X=null;this.Oe=0;this.K=this.F=this.ec=null;this.ub=0;this.i=1;this.c=63;this.m=32;this.Ha=1/0;this.va=!0;this.T=0}G(a){let b=0,c=a.a;a.f(0);a.f(this.F.Kc);a.f(this.K.Kc);0!=this.ub&&(b=1,a.g(this.ub));this.Ha!=1/0&&(b|=2,a.g(this.Ha));0!=this.T&&(b|=4,a.w(this.T));
this.va&&(b|=8);a.j.setUint8(c,b);a.g(this.i);a.w(this.c);a.w(this.m)}pa(a,b){let c=a.C();this.F=b[a.C()];this.K=b[a.C()];this.ub=0!=(c&1)?a.o():0;this.Ha=0!=(c&2)?a.o():1/0;this.T=0!=(c&4)?a.H():0;this.va=0!=(c&8);this.i=a.o();this.c=a.H();this.m=a.H()}bb(a){a*=.017453292519943295;if(0>a){a=-a;let b=this.F;this.F=this.K;this.K=b;this.ub=-this.ub}a>E.jg&&a<E.ig&&(this.Ha=1/Math.tan(a/2))}Nb(){if(0==0*this.Ha){var a=this.K.a,b=this.F.a,c=.5*(a.x-b.x);a=.5*(a.y-b.y);b=this.F.a;let d=this.Ha;this.ec=
new I(b.x+c+-a*d,b.y+a+c*d);a=this.F.a;b=this.ec;c=a.x-b.x;a=a.y-b.y;this.Oe=Math.sqrt(c*c+a*a);c=this.F.a;a=this.ec;this.jd=new I(-(c.y-a.y),c.x-a.x);c=this.ec;a=this.K.a;this.kd=new I(-(c.y-a.y),c.x-a.x);0>=this.Ha&&(a=c=this.jd,c.x=-a.x,c.y=-a.y,a=c=this.kd,c.x=-a.x,c.y=-a.y)}else a=this.F.a,b=this.K.a,c=a.x-b.x,a=-(a.y-b.y),b=Math.sqrt(a*a+c*c),this.X=new I(a/b,c/b)}}class ya{constructor(){this.rc=u.na;this.K=new I(0,0);this.F=new I(0,0)}G(a){var b=this.F;a.g(b.x);a.g(b.y);b=this.K;a.g(b.x);a.g(b.y);
a.f(this.rc.S)}pa(a){var b=this.F;b.x=a.o();b.y=a.o();b=this.K;b.x=a.o();b.y=a.o();a=a.Vd();this.rc=1==a?u.fa:2==a?u.ta:u.na}}class W{}class q{static Yf(a){if(null==a)return null;if(a instanceof Array)return Array;{let b=a.h;if(null!=b)return b;a=q.Ee(a);return null!=a?q.og(a):null}}static Zb(a,b){if(null==a)return"null";if(5<=b.length)return"<...>";var c=typeof a;"function"==c&&(a.b||a.Ce)&&(c="object");switch(c){case "function":return"<function>";case "object":if(a.Yb){var d=Xa[a.Yb].Be[a.Kd];c=
d.Xe;if(d.Ge){b+="\t";var e=[],f=0;for(d=d.Ge;f<d.length;){let g=d[f];f+=1;e.push(q.Zb(a[g],b))}a=e;return c+"("+a.join(",")+")"}return c}if(a instanceof Array){c="[";b+="\t";e=0;for(f=a.length;e<f;)d=e++,c+=(0<d?",":"")+q.Zb(a[d],b);return c+="]"}try{e=a.toString}catch(g){return"???"}if(null!=e&&e!=Object.toString&&"function"==typeof e&&(c=a.toString(),"[object Object]"!=c))return c;c="{\n";b+="\t";e=null!=a.hasOwnProperty;f=null;for(f in a)e&&!a.hasOwnProperty(f)||"prototype"==f||"__class__"==f||
"__super__"==f||"__interfaces__"==f||"__properties__"==f||(2!=c.length&&(c+=", \n"),c+=b+f+" : "+q.Zb(a[f],b));b=b.substring(1);return c+="\n"+b+"}";case "string":return a;default:return String(a)}}static De(a,b){for(;;){if(null==a)return!1;if(a==b)return!0;let c=a.gb;if(null!=c&&(null==a.J||a.J.gb!=c)){let d=0,e=c.length;for(;d<e;){let f=c[d++];if(f==b||q.De(f,b))return!0}}a=a.J}}static mg(a,b){if(null==b)return!1;switch(b){case Array:return a instanceof Array;case Ya:return"boolean"==typeof a;case vb:return null!=
a;case z:return"number"==typeof a;case za:return"number"==typeof a?(a|0)===a:!1;case String:return"string"==typeof a;default:if(null!=a)if("function"==typeof b){if(q.lg(a,b))return!0}else{if("object"==typeof b&&q.ng(b)&&a instanceof b)return!0}else return!1;return b==wb&&null!=a.b||b==xb&&null!=a.Ce?!0:null!=a.Yb?Xa[a.Yb]==b:!1}}static lg(a,b){return a instanceof b?!0:b.yd?q.De(q.Yf(a),b):!1}static l(a,b){if(null==a||q.mg(a,b))return a;throw r.s("Cannot cast "+Oa.xe(a)+" to "+Oa.xe(b));}static Ee(a){a=
q.pg.call(a).slice(8,-1);return"Object"==a||"Function"==a||"Math"==a||"JSON"==a?null:a}static ng(a){return null!=q.Ee(a)}static og(a){return va[a]}}class Aa{constructor(){this.ja=u.na;this.N=null;this.Wb=this.uc=0;this.Cb=!1;this.Jb=this.ma=0;this.oa="Player";this.Ai=this.$c=0;this.country=null;this.ne=!1;this.Db=this.Vf=null;this.Eb=0;this.Ub=!1}P(a){a.f(this.Ub?1:0);a.w(this.Eb);a.Ca(this.Db);a.Ca(this.Vf);a.f(this.ne?1:0);a.Ca(this.country);a.w(this.Ai);a.Ca(this.oa);a.w(this.Jb);a.Da(this.ma);
a.f(this.Cb?1:0);a.he(this.Wb);a.f(this.uc);a.f(this.ja.S);a.he(null==this.N?-1:this.N.rf)}}class R{static qb(a,b){return a.length<=b?a:P.substr(a,0,b)}static yi(a){let b="",c=0,d=a.byteLength;for(;c<d;)b+=qb.Bi(a[c++]);return b}}class Pa{constructor(){this.ea=null;this.Xc=2;this.fc=0;this.Pd=1;this.ab=this.Na=3;this.md=!1;this.D=null;this.ba=[];this.Xd="";this.ea=w.Gd()[0];this.sc=[null,new X,new X];this.sc[1].Qa.push(u.fa.T);this.sc[2].Qa.push(u.ta.T)}ei(a){if(null==this.D){this.D=new Q;for(var b=
0,c=this.ba;b<c.length;){let d=c[b];++b;d.N=null;d.Eb=0}this.D.eh(this);null!=this.Jf&&this.Jf(a)}}Hc(a,b,c){if(b.ja!=c){b.ja=c;P.remove(this.ba,b);this.ba.push(b);if(null!=this.D){null!=b.N&&(P.remove(this.D.ia.A,b.N),b.N=null);this.D.$e(b);let d=0,e=!1;for(;!e;){++d;e=!0;let f=0,g=this.ba;for(;f<g.length;){let k=g[f];++f;if(k!=b&&k.ja==b.ja&&k.Eb==d){e=!1;break}}}b.Eb=d}jb.sa(this.Gh,a,b,c)}}R(a){let b=0,c=this.ba;for(;b<c.length;){let d=c[b];++b;if(d.ma==a)return d}return null}Ba(a){null!=this.D&&
this.D.Ba(a)}G(a){a.Ca(this.Xd);a.f(this.md?1:0);a.w(this.ab);a.w(this.Na);a.he(this.Pd);a.f(this.fc);a.f(this.Xc);this.ea.G(a);a.f(null!=this.D?1:0);null!=this.D&&this.D.G(a);a.f(this.ba.length);let b=0,c=this.ba;for(;b<c.length;)c[b++].P(a);this.sc[1].G(a);this.sc[2].G(a)}Ue(){let a=0;var b=A.aa();this.G(b);for(b=b.mi();4<=b.j.byteLength-b.a;)a^=b.H();return a}Qg(){let a=A.aa(4);a.w(this.Ue());return a.fe()}Eg(a){a=(new L(new DataView(a))).H();Na.sa(this.Ii,this.Ue()!=a)}Gf(a){this.yf=a}za(a){if(0==
a)return!0;a=this.R(a);return null!=a&&a.Ub?!0:!1}ai(a,b,c,d){this.Xc=0>b?0:255<b?255:b;this.fc=0>c?0:255<c?255:c;0>d?d=0:100<d&&(d=100);this.Pd=this.fc*d;Za.sa(this.hh,a,this.Xc,this.fc,d)}}class Za{static sa(a,b,c,d,e){null!=a&&a(b,c,d,e)}}class rb{static Ci(){m.$(Y);m.$(Ba);m.$(ka);m.$(Ca);m.$(la);m.$(Z);m.$(S);m.$(ma);m.$(na);m.$(oa);m.$(U);m.$(V);m.$(aa);m.$(pa);m.$(ba);m.$(Da);m.$(Ea);m.$(ca);m.$(Fa);m.$(qa);m.$(da);m.$(ea);m.$(fa);m.$(M)}}class ra{static ri(a,b){try{let c=new L(new DataView(a.buffer,
a.byteOffset,a.byteLength),!1);c.C();let d=c.La(c.kc()),e=c.La(),f=new L(new DataView(d.buffer,d.byteOffset,d.byteLength),!1),g=f.mb(),k=f.mb(),l=f.La();if(l.byteLength!=b.byteLength)return Promise.reject(null);a=0;let p=l.byteLength;for(;a<p;){let t=a++;if(l[t]!=b[t])return Promise.reject(null)}return ra.ui(g,k).then(function(t){return crypto.subtle.verify(ra.ci,t,e,d)}).then(function(t){if(!t)throw r.s(null);return g})}catch(c){return Promise.reject(r.Vb(c).Hb())}}static ui(a,b){try{return crypto.subtle.importKey("jwk",
{crv:"P-256",ext:!0,key_ops:["verify"],kty:"EC",x:a,y:b},ra.sg,!0,["verify"])}catch(c){return Promise.reject(r.Vb(c).Hb())}}}class $a{constructor(){}yg(){this.oa=R.qb(this.oa,40);this.ib=R.qb(this.ib,3)}G(a){this.yg();a.ra=!0;a.Oa(this.pi);a.Uf(this.oa);a.Uf(this.ib);a.ge(this.Rc);a.ge(this.Tc);a.f(this.lb?1:0);a.f(this.xh);a.f(this.ba);a.ra=!1}}class Q{constructor(){this.zb=this.vb=this.Lb=this.Xa=0;this.Nd=u.fa;this.Ab=this.$a=0;this.ia=new Qa;this.Na=0;this.ab=5;this.ea=null}eh(a){this.ha=a;this.ab=
a.ab;this.Na=a.Na;this.ea=a.ea;this.ia.v=this.ea.v;this.ia.Y=this.ea.Y;this.ia.I=this.ea.I;this.ia.Ta=this.ea.Ta;a=0;let b=this.ea.A;for(;a<b.length;)this.ia.A.push(b[a++].th());this.af()}$e(a){if(a.ja==u.na)a.N=null;else{a.Jb=0;var b=a.N;null==b&&(b=new xa,a.N=b,this.ia.A.push(b));var c=this.ea.Mb;b.T=0;b.M=c.M;b.L=c.L;b.ga=c.ga;b.i=c.i;b.c=39;b.m=a.ja.m|c.m;var d=a.ja==u.fa?this.ea.Pb:this.ea.Ib;0==d.length?(b.a.x=a.ja.Qe*this.ea.cc,b.a.y=0):(a=b.a,d=d[d.length-1],a.x=d.x,a.y=d.y);d=b.u;d.x=0;d.y=
0;b=b.la;c=c.la;b.x=c.x;b.y=c.y}}Ba(a){if(0<this.Xa)120>this.Xa&&this.Xa--;else{var b=this.ha.Og;null!=b&&b();b=this.ha.ba;for(var c=0;c<b.length;){var d=b[c];++c;if(null!=d.N){0==(d.Jb&16)&&(d.Cb=!1);var e=this.ea.Mb;0<d.uc&&d.uc--;d.Wb<this.ha.Pd&&d.Wb++;if(d.Cb&&0>=d.uc&&0<=d.Wb){for(var f=!1,g=0,k=this.ia.A;g<k.length;){var l=k[g];++g;if(0!=(l.m&64)&&l!=d.N){var p=l.a,t=d.N.a,x=p.x-t.x;p=p.y-t.y;t=Math.sqrt(x*x+p*p);if(4>t-l.M-d.N.M){f=x/t;x=p/t;p=e.Mc;var B=t=l.u;l=l.L;t.x=B.x+f*p*l;t.y=B.y+
x*p*l;B=d.N;l=-e.Nc;t=p=B.u;B=B.L;p.x=t.x+f*l*B;p.y=t.y+x*l*B;f=!0}}}f&&(null!=this.ha.vf&&this.ha.vf(d),d.Cb=!1,d.uc=this.ha.Xc,d.Wb-=this.ha.fc)}f=d.Jb;k=g=0;0!=(f&1)&&--k;0!=(f&2)&&++k;0!=(f&4)&&--g;0!=(f&8)&&++g;0!=g&&0!=k&&(f=Math.sqrt(g*g+k*k),g/=f,k/=f);f=d.N.u;l=d.Cb?e.Oc:e.zc;f.x+=g*l;f.y+=k*l;d.N.ga=d.Cb?e.Pc:e.ga}}c=0;d=this.ia.A;e=0;for(g=d.length;e<g;)f=e++,k=d[f],0!=(k.m&128)&&(Q.Re[c]=f,f=Q.jf[c],k=k.a,f.x=k.x,f.y=k.y,++c);this.ia.Ba(a);if(0==this.$a){for(a=0;a<b.length;)c=b[a],++a,
null!=c.N&&(c.N.c=39|this.Nd.ih);b=this.ia.A[0].u;0<b.x*b.x+b.y*b.y&&(this.$a=1)}else if(1==this.$a){this.Lb+=.016666666666666666;for(a=0;a<b.length;)d=b[a],++a,null!=d.N&&(d.N.c=39);d=u.na;b=this.ia.A;for(a=0;a<c&&(d=a++,d=this.ea.Ag(b[Q.Re[d]].a,Q.jf[d]),d==u.na););d!=u.na?(this.$a=2,this.Ab=150,this.Nd=d,d==u.fa?this.vb++:this.zb++,null!=this.ha.Lf&&this.ha.Lf(d.Zc),null!=this.ha.yf&&this.ha.yf(d.S)):0<this.Na&&this.Lb>=60*this.Na&&this.zb!=this.vb&&(null!=this.ha.ji&&this.ha.ji(),this.If())}else if(2==
this.$a)this.Ab--,0>=this.Ab&&(0<this.ab&&(this.zb>=this.ab||this.vb>=this.ab)||0<this.Na&&this.Lb>=60*this.Na&&this.zb!=this.vb?this.If():(this.af(),null!=this.ha.wf&&this.ha.wf()));else if(3==this.$a&&(this.Ab--,0>=this.Ab&&(b=this.ha,null!=b.D))){b.D=null;a=0;for(c=b.ba;a<c.length;)d=c[a],++a,d.N=null,d.Eb=0;null!=b.ld&&b.ld(null)}}}If(){this.Ab=300;this.$a=3;null!=this.ha.Mf&&this.ha.Mf(this.zb>this.vb?u.fa:u.ta)}af(){let a=this.ha.ba;this.$a=0;for(var b=this.ea.A,c=this.ia.A,d=0,e=this.ea.dd?
b.length:1;d<e;){var f=d++;b[f].Ze(c[f])}b=[0,0,0];for(c=0;c<a.length;)if(d=a[c],++c,this.$e(d),e=d.ja,e!=u.na){f=d.N.a;var g=this.ea,k=b[e.S],l=e==u.fa?g.Pb:g.Ib;0==l.length?(l=k+1>>1,0==(k&1)&&(l=-l),g=g.Ma*e.Qe,k=55*l):(k>=l.length&&(k=l.length-1),k=l[k],g=k.x,k=k.y);f.x=g;f.y=k;b[e.S]++;d.Eb=b[e.S]}}G(a){this.ia.G(a);a.w(this.Ab);a.w(this.$a);a.w(this.zb);a.w(this.vb);a.g(this.Lb);a.w(this.Xa);a.f(this.Nd.S)}}class m{constructor(){m.Ja||this.Aa()}Aa(){this.eg=this.fg=this.fb=0}dg(){return!0}apply(){throw r.s("missing implementation");
}W(){throw r.s("missing implementation");}P(){throw r.s("missing implementation");}static Z(a){null==a.delay&&(a.delay=!0);null==a.ca&&(a.ca=!0);return a}static $(a){a.kg=m.je;if(null==a.U)throw r.s("Class doesn't have a config");a.prototype.le=a.U;m.Zf.set(m.je,a);m.je++}static ue(a,b){let c=q.Yf(a).kg;if(null==c)throw r.s("Tried to pack unregistered action");b.f(c);a.P(b)}static Hi(a){var b=a.C();b=Object.create(m.Zf.get(b).prototype);b.fb=0;b.eb=0;b.W(a);return b}}class sb{static zi(a){let b=[];
if(null!=a){let d=Object.prototype.hasOwnProperty;for(var c in a)"__id__"!=c&&"hx__closures__"!=c&&d.call(a,c)&&b.push(c)}return b}}class kb{}class Ga{static jh(){if(null!=Ga.Ud)return Ga.Ud;Ga.Ud=new Promise(function(a,b){var c=grecaptcha;null!=c?a(c):(c=createElement("script"),c.src="https://www.google.com/recaptcha/api.js?onload=___recaptchaload&render=explicit",head.appendChild(c),___recaptchaload=function(){a(grecaptcha)},c.onerror=function(){b(null)})});
return Ga.Ud}}class Ra{constructor(a,b){this.Le=a;this.Pf=b;this.tb=a;this.Qc=performance.now()}Qf(){var a;null==a&&(a=1);this.Ba();return a<=this.tb?(this.tb-=a,!0):!1}Ba(){let a=performance.now(),b=Math.floor((a-this.Qc)/this.Pf);this.Qc+=b*this.Pf;this.tb+=b;this.tb>=this.Le&&(this.tb=this.Le,this.Qc=a)}}class Ha{constructor(a,b,c,d){this.Ac=new Set;this.$b=new Set;this.ed=this.lc=this.Ef=!1;this.Za=null;this.mc=this.S="";this.Th=5E4;this.Sh=1E4;this.xb=new Map;this.di=a;this.Md=
b;this.zg=c;this.mc=d;null==this.mc&&(this.mc="");this.ce()}be(a){if(null!=this.Za||null!=a){if(null!=this.Za&&null!=a&&this.Za.byteLength==a.byteLength){let c=new Uint8Array(this.Za),d=new Uint8Array(a),e=!1,f=0,g=this.Za.byteLength;for(;f<g;){let k=f++;if(c[k]!=d[k]){e=!0;break}}if(!e)return}this.Za=a.slice(0);this.ed=!0;var b=this;null!=this.ua&&1==this.ua.readyState&&null==this.fd&&(this.Zd(),this.fd=setTimeout(function(){b.fd=null;1==b.ua.readyState&&b.ed&&b.Zd()},1E4))}}ae(a){function b(){null!=
c.ua&&1==c.ua.readyState&&c.lc!=c.Ef&&c.Cf();c.Af=null}this.lc=a;let c=this;null==this.Af&&(b(),this.Af=setTimeout(b,1E3))}ce(a){function b(e){e=e.sitekey;if(null==e)throw r.s(null);null!=d.ic&&d.ic(e,function(f){d.ce(f)})}function c(e){let f=e.url;if(null==f)throw r.s(null);e=e.token;if(null==e)throw r.s(null);d.ua=new WebSocket(f+"?token="+e, {headers:{origin: "https://html5.haxball.com"}, agent: proxyAgent});d.ua.binaryType="arraybuffer";d.ua.onopen=function(){d.bh()};d.ua.onclose=function(g){d.Hd(4001!=g.code)};d.ua.onerror=function(err){d.Hd(!0);debug && console.error(err)};;d.ua.onmessage=
hb(d,d.ah)}null==a&&(a="");let d=this;T.Ih(this.di,"token="+this.mc+"&rcr="+a,T.hg).then(function(e){switch(e.action){case "connect":c(e);break;case "recaptcha":console.log(new Error("Invalid Token Provided!"))}}).catch(function(){d.Hd(!0)})}bh(){null!=this.Za&&this.Zd();0!=this.lc&&this.Cf();let a=this;this.Dh=setInterval(function(){a.Yh()},4E4)}ah(a){a=new L(new DataView(a.data),!1);switch(a.C()){case 1:this.Zg(a);break;case 4:this.Ug(a);break;case 5:this.Wg(a);break;case 6:this.Yg(a)}}Zg(a){let b=a.Ob(),c=R.yi(a.La(a.C())),d,e,f;try{a=
new L(new DataView(pako.inflateRaw(a.La()).buffer),!1);d=0!=a.C();e=a.mb();let g=a.xf(),k=[],l=0;for(;l<g.length;)k.push(new RTCIceCandidate(g[l++]));f=k}catch(g){this.oc(b,0);return}this.$g(b,c,e,f,a,d)}$g(a,b,c,d,e,f){if(16<=this.xb.size)this.oc(a,4104);else if(this.Ac.has(b))this.oc(a,4102);else{for(var g=[],k=0;k<d.length;){let x=Ha.Ve(d[k++]);if(null!=x){if(this.$b.has(x)){this.oc(a,4102);return}g.push(x)}}if(null!=this.Ne&&(k=new L(e.j),k.a=e.a,e=this.Ne(b,k),1==e.Kd)){this.oc(a,e.reason);return}var l=
new sa(a,this.Md,this.zg);f&&(l.Pe=2500);l.Rb=g;l.hb=b;this.xb.set(a,l);var p=this,t=function(){p.pc(0,l,null);p.xb.delete(l.S)};l.Sd=t;l.Rd=function(){p.xb.delete(l.S);p.pc(0,l,null);null!=p.lf&&p.lf(new ab(l))};l.gi();(async function(){try{let x=await l.Gg(new RTCSessionDescription({sdp:c,type:"offer"}),d);p.Zh(l,x,l.Ld);l.Ye.then(function(){p.pc(0,l,null)});l.Td=function(B){p.Xh(l,B)}}catch(x){t()}})()}}Ug(a){let b=a.Ob(),c;try{a=new L(new DataView(pako.inflateRaw(a.La()).buffer),!1),c=new RTCIceCandidate(a.xf())}catch(d){return}this.Vg(b,
c)}Vg(a,b){a=this.xb.get(a);if(null!=a){let c=Ha.Ve(b);if(null!=c&&(a.Rb.push(c),this.$b.has(c)))return;a.Ie(b)}}Wg(a){this.S=a.ad(a.C());null!=this.Yc&&this.Yc(this.S)}Yg(a){this.mc=a.ad(a.j.byteLength-a.a)}pc(a,b,c){if(!b.pf){0==a&&(b.pf=!0);var d=b.S;b=A.aa(32,!1);b.f(a);b.xa(d);null!=c&&(a=pako.deflateRaw(c.Bb()),b.pb(a));this.ua.send(b.Sb())}}oc(a,b){let c=A.aa(16,!1);c.f(0);c.xa(a);c.Oa(b);this.ua.send(c.Sb())}Yh(){let a=A.aa(1,!1);a.f(8);this.ua.send(a.Sb())}Zd(){this.ed=!1;let a=A.aa(256,
!1);a.f(7);null!=this.Za&&a.Sf(this.Za);this.ua.send(a.Sb())}Cf(){let a=A.aa(2,!1);a.f(9);a.f(this.lc?1:0);this.ua.send(a.Sb());this.Ef=this.lc}Zh(a,b,c){let d=A.aa(32,!1);d.Tb(b.sdp);d.Tf(c);this.pc(1,a,d)}Xh(a,b){let c=A.aa(32,!1);c.Tf(b);this.pc(4,a,c)}Lg(){let a=this.xb.values(),b=a.next();for(;!b.done;){let c=b.value;b=a.next();c.cb()}this.xb.clear()}Hd(a){this.Lg();clearTimeout(this.fd);this.fd=null;this.ed=!1;clearInterval(this.Dh);clearTimeout(this.Uh);let b=this;a&&(this.Uh=
setTimeout(function(){b.ce()},this.Sh+Math.random()*this.Th|0))}vg(a){let b=0,c=a.Rb;for(;b<c.length;)this.$b.add(c[b++]);null!=a.hb&&this.Ac.add(a.hb);return{Fi:a.Rb,wi:a.hb}}Ed(){this.$b.clear();this.Ac.clear()}Dd(a){let b=0,c=a.Fi;for(;b<c.length;)this.$b.delete(c[b++]);this.Ac.delete(a.wi)}static Ve(a){try{let b=pb.Bh(a.candidate);if("srflx"==b.ni)return b.fh}catch(b){}return null}}class I{constructor(a,b){this.x=a;this.y=b}}class L{constructor(a,b){null==b&&(b=!1);this.j=a;this.ra=b;this.a=
0}La(a){null==a&&(a=this.j.byteLength-this.a);if(this.a+a>this.j.byteLength)throw r.s("Read too much");let b=new Uint8Array(this.j.buffer,this.j.byteOffset+this.a,a);this.a+=a;return b}Nh(a){let b=this.La(a);a=new ArrayBuffer(a);(new Uint8Array(a)).set(b);return a}Vd(){return this.j.getInt8(this.a++)}C(){return this.j.getUint8(this.a++)}kc(){let a=this.j.getUint16(this.a,this.ra);this.a+=2;return a}H(){let a=this.j.getInt32(this.a,this.ra);this.a+=4;return a}Ob(){let a=this.j.getUint32(this.a,this.ra);
this.a+=4;return a}Oh(){let a=this.j.getFloat32(this.a,this.ra);this.a+=4;return a}o(){let a=this.j.getFloat64(this.a,this.ra);this.a+=8;return a}nb(){let a=this.a,b=0,c,d=0;do c=this.j.getUint8(a+b),5>b&&(d|=(c&127)<<7*b>>>0),++b;while(0!=(c&128));this.a+=b;return d|0}ad(a){let b=this.a,c,d="";for(a=b+a;b<a;)c=L.Jg(this.j,b),b+=c.length,d+=String.fromCodePoint(c.char);if(b!=a)throw r.s("Actual string length differs from the specified: "+(b-a)+" bytes");this.a=b;return d}Ya(){let a=this.nb();return 0>=
a?null:this.ad(a-1)}mb(){return this.ad(this.nb())}xf(){let a=this.mb();return JSON.parse(a)}static Jg(a,b){var c=a.getUint8(b);let d,e,f,g,k=b;if(0==(c&128))++b;else if(192==(c&224))d=a.getUint8(b+1),c=(c&31)<<6|d&63,b+=2;else if(224==(c&240))d=a.getUint8(b+1),e=a.getUint8(b+2),c=(c&15)<<12|(d&63)<<6|e&63,b+=3;else if(240==(c&248))d=a.getUint8(b+1),e=a.getUint8(b+2),f=a.getUint8(b+3),c=(c&7)<<18|(d&63)<<12|(e&63)<<6|f&63,b+=4;else if(248==(c&252))d=a.getUint8(b+1),e=a.getUint8(b+2),f=a.getUint8(b+
3),g=a.getUint8(b+4),c=(c&3)<<24|(d&63)<<18|(e&63)<<12|(f&63)<<6|g&63,b+=5;else if(252==(c&254))d=a.getUint8(b+1),e=a.getUint8(b+2),f=a.getUint8(b+3),g=a.getUint8(b+4),a=a.getUint8(b+5),c=(c&1)<<30|(d&63)<<24|(e&63)<<18|(f&63)<<12|(g&63)<<6|a&63,b+=6;else throw r.s("Cannot decode UTF8 character at offset "+b+": charCode ("+c+") is invalid");return{char:c,length:b-k}}}class bb{constructor(a){this.hf=new cb(15);this.Jd=0;this.He=new Map;this.Tg=new Ra(100,16);this.cd=!1;this.$c=0;this.jc=a;a=A.aa(8);
a.g(Math.random());this.dc=a.Bb()}ob(a,b){null==b&&(b=0);this.jc.ob(b,a)}}class Sa{static sa(a,b,c){null!=a&&a(b,c)}}class w{constructor(){this.v=[];this.I=[];this.Y=[];this.Sa=[];this.A=[];this.Ta=[];this.Pb=[];this.Ib=[];this.Mb=new Ta;this.Fd=255;this.Bd=this.Qd=0;this.Cd=!0;this.dd=!1}Uc(){let a=new ha;a.T=16777215;a.c=63;a.m=193;a.M=10;a.ga=.99;a.L=1;a.i=.5;return a}G(a){a.f(this.Fd);if(!this.gh()){a.Ca(this.oa);a.w(this.Ec);a.g(this.Fc);a.g(this.Dc);a.g(this.bc);a.g(this.ac);a.g(this.zd);a.w(this.Cc);
a.g(this.cc);a.g(this.Gc);a.g(this.Ma);this.Mb.G(a);a.Oa(this.Qd);a.f(this.Bd);a.f(this.Cd?1:0);a.f(this.dd?1:0);a.f(this.v.length);for(var b=0,c=this.v.length;b<c;){var d=b++;let e=this.v[d];e.Kc=d;e.G(a)}a.f(this.I.length);b=0;for(c=this.I;b<c.length;)c[b++].G(a);a.f(this.Y.length);b=0;for(c=this.Y;b<c.length;)c[b++].G(a);a.f(this.Sa.length);b=0;for(c=this.Sa;b<c.length;)c[b++].G(a);a.f(this.A.length);b=0;for(c=this.A;b<c.length;)c[b++].G(a);a.f(this.Ta.length);b=0;for(c=this.Ta;b<c.length;)c[b++].G(a);
a.f(this.Pb.length);b=0;for(c=this.Pb;b<c.length;)d=c[b],++b,a.g(d.x),a.g(d.y);a.f(this.Ib.length);b=0;for(c=this.Ib;b<c.length;)d=c[b],++b,a.g(d.x),a.g(d.y)}}oi(a){function b(){let f=[],g=a.C(),k=0;for(;k<g;){++k;let l=new I(0,0);l.x=a.o();l.y=a.o();f.push(l)}return f}this.oa=a.Ya();this.Ec=a.H();this.Fc=a.o();this.Dc=a.o();this.bc=a.o();this.ac=a.o();this.zd=a.o();this.Cc=a.H();this.cc=a.o();this.Gc=a.o();this.Ma=a.o();this.Mb.pa(a);this.Qd=a.kc();this.Bd=a.C();this.Cd=0!=a.C();this.dd=0!=a.C();
this.v=[];for(var c=a.C(),d=0;d<c;){var e=new C;e.pa(a);e.Kc=d++;this.v.push(e)}this.I=[];c=a.C();for(d=0;d<c;)++d,e=new E,e.pa(a,this.v),this.I.push(e);this.Y=[];c=a.C();for(d=0;d<c;)++d,e=new K,e.pa(a),this.Y.push(e);this.Sa=[];c=a.C();for(d=0;d<c;)++d,e=new ya,e.pa(a),this.Sa.push(e);this.A=[];c=a.C();for(d=0;d<c;)++d,e=new ha,e.pa(a),this.A.push(e);this.Ta=[];c=a.C();for(d=0;d<c;)++d,e=new Ia,e.pa(a),this.Ta.push(e);this.Pb=b();this.Ib=b();this.Nb();if(!this.Rf())throw r.s(new Ja("Invalid stadium"));
}Rf(){return 0>=this.A.length||0>this.ac||0>this.bc||0>this.Mb.M?!1:!0}Nb(){let a=0,b=this.I;for(;a<b.length;)b[a++].Nb()}gh(){return 255!=this.Fd}Kb(a,b){a=a[b];return null!=a?q.l(a,z):0}rh(a){a=a.canBeStored;return null!=a?q.l(a,Ya):!0}kh(a){function b(k){let l=q.l(k[0],z);k=q.l(k[1],z);null==k&&(k=0);null==l&&(l=0);return new I(l,k)}function c(k,l,p,t){null==t&&(t=!1);var x=d[l];if(!t||null!=x)if(t=q.l(x,Array),null!=t)for(x=0;x<t.length;){let B=t[x];++x;try{w.tg(B,f),k.push(p(B))}catch(N){throw r.s(new Ja('Error in "'+
l+'" index: '+k.length));}}}let d=JSON5.parse(a);this.v=[];this.I=[];this.Y=[];this.Sa=[];this.A=[];this.Ta=[];this.oa=q.l(d.name,String);this.cc=q.l(d.width,z);this.Gc=q.l(d.height,z);this.Qd=this.Kb(d,"maxViewWidth")|0;"player"==d.cameraFollow&&(this.Bd=1);this.Ma=200;a=d.spawnDistance;null!=a&&(this.Ma=q.l(a,z));a=d.bg;let e;switch(a.type){case "grass":e=1;break;case "hockey":e=2;break;default:e=0}this.Ec=e;this.Fc=this.Kb(a,"width");this.Dc=this.Kb(a,"height");this.bc=this.Kb(a,"kickOffRadius");
this.ac=this.Kb(a,"cornerRadius");this.Cc=7441498;null!=a.color&&(this.Cc=w.Sc(a.color));this.zd=this.Kb(a,"goalLine");this.Cd=this.rh(d);this.dd="full"==d.kickOffReset;let f=d.traits;a=d.ballPhysics;"disc0"!=a&&(null!=a?(a=w.df(a,this.Uc()),a.m|=192,this.A.push(a)):this.A.push(this.Uc()));c(this.v,"vertexes",w.qh);let g=this;c(this.I,"segments",function(k){return w.ph(k,g.v)});c(this.Sa,"goals",w.lh);c(this.A,"discs",function(k){return w.df(k,new ha)});c(this.Y,"planes",w.nh);c(this.Ta,"joints",
function(k){return w.mh(k,g.A)},!0);c(this.Pb,"redSpawnPoints",b,!0);c(this.Ib,"blueSpawnPoints",b,!0);a=d.playerPhysics;null!=a&&(this.Mb=w.oh(a));if(255<this.v.length||255<this.I.length||255<this.Y.length||255<this.Sa.length||255<this.A.length)throw r.s("Error");this.Nb();if(!this.Rf())throw r.s(new Ja("Invalid stadium"));}Ag(a,b){let c=0,d=this.Sa;for(;c<d.length;){let k=d[c];++c;var e=k.F,f=k.K,g=b.x-a.x;let l=b.y-a.y;0<-(e.y-a.y)*g+(e.x-a.x)*l==0<-(f.y-a.y)*g+(f.x-a.x)*l?e=!1:(g=f.x-e.x,f=f.y-
e.y,e=0<-(a.y-e.y)*g+(a.x-e.x)*f==0<-(b.y-e.y)*g+(b.x-e.x)*f?!1:!0);if(e)return k.rc}return u.na}kb(a,b,c,d,e,f,g,k){null==k&&(k=0);this.oa=a;this.A.push(this.Uc());this.cc=b;this.Gc=c;this.Ec=1;this.Cc=7441498;this.Fc=d;this.Dc=e;this.bc=g;this.ac=k;this.Ma=.75*d;400<this.Ma&&(this.Ma=400);a=new K;var l=a.X;l.x=0;l.y=1;a.ka=-c;a.i=0;this.Y.push(a);a=new K;l=a.X;l.x=0;l.y=-1;a.ka=-c;a.i=0;this.Y.push(a);a=new K;l=a.X;l.x=1;l.y=0;a.ka=-b;a.i=0;this.Y.push(a);a=new K;l=a.X;l.x=-1;l.y=0;a.ka=-b;a.i=
0;this.Y.push(a);this.Vc(d,1,f,13421823,u.ta);this.Vc(-d,-1,f,16764108,u.fa);this.gf(g,c);b=new K;c=b.X;c.x=0;c.y=1;b.ka=-e;b.c=1;this.Y.push(b);b=new K;c=b.X;c.x=0;c.y=-1;b.ka=-e;b.c=1;this.Y.push(b);b=new C;c=b.a;c.x=-d;c.y=-e;b.c=0;c=new C;g=c.a;g.x=d;g.y=-e;c.c=0;g=new C;a=g.a;a.x=d;a.y=-f;g.c=0;a=new C;l=a.a;l.x=d;l.y=f;a.c=0;l=new C;var p=l.a;p.x=d;p.y=e;l.c=0;p=new C;var t=p.a;t.x=-d;t.y=e;p.c=0;t=new C;var x=t.a;x.x=-d;x.y=f;t.c=0;x=new C;var B=x.a;B.x=-d;B.y=-f;x.c=0;f=new E;f.F=c;f.K=g;
f.c=1;f.va=!1;B=new E;B.F=a;B.K=l;B.c=1;B.va=!1;let N=new E;N.F=p;N.K=t;N.c=1;N.va=!1;let ta=new E;ta.F=x;ta.K=b;ta.c=1;ta.va=!1;this.v.push(b);this.v.push(c);this.v.push(g);this.v.push(a);this.v.push(l);this.v.push(p);this.v.push(t);this.v.push(x);this.I.push(f);this.I.push(B);this.I.push(N);this.I.push(ta);this.ef(d,e,k);this.Nb()}ff(a,b,c,d,e,f,g,k){this.oa=a;this.A.push(this.Uc());this.cc=b;this.Gc=c;this.Ec=2;this.Fc=d;this.Dc=e;this.bc=75;this.ac=k;this.zd=g;this.Ma=.75*(d-g);400<this.Ma&&(this.Ma=
400);a=new K;var l=a.X;l.x=0;l.y=1;a.ka=-c;a.i=0;this.Y.push(a);a=new K;l=a.X;l.x=0;l.y=-1;a.ka=-c;a.i=0;this.Y.push(a);a=new K;l=a.X;l.x=1;l.y=0;a.ka=-b;a.i=0;this.Y.push(a);a=new K;l=a.X;l.x=-1;l.y=0;a.ka=-b;a.i=0;this.Y.push(a);this.Vc(d-g,1,f,13421823,u.ta,63);this.Vc(-d+g,-1,f,16764108,u.fa,63);this.gf(75,c);b=new K;c=b.X;c.x=0;c.y=1;b.ka=-e;b.c=1;this.Y.push(b);b=new K;c=b.X;c.x=0;c.y=-1;b.ka=-e;b.c=1;this.Y.push(b);b=new K;c=b.X;c.x=1;c.y=0;b.ka=-d;b.c=1;this.Y.push(b);b=new K;c=b.X;c.x=-1;
c.y=0;b.ka=-d;b.c=1;this.Y.push(b);this.ef(d,e,k);this.Nb()}Vc(a,b,c,d,e,f){var g;null==g&&(g=32);null==f&&(f=1);var k=new C,l=k.a;l.x=a+8*b;l.y=-c;l=new C;var p=l.a;p.x=a+8*b;p.y=c;let t=new C;p=t.a;p.x=k.a.x+22*b;p.y=k.a.y+22;let x=new C;p=x.a;p.x=l.a.x+22*b;p.y=l.a.y-22;p=new E;p.F=k;p.K=t;p.bb(90*b);let B=new E;B.F=x;B.K=t;let N=new E;N.F=x;N.K=l;N.bb(90*b);b=this.v.length;this.v.push(k);this.v.push(l);this.v.push(t);this.v.push(x);k=b;for(b=this.v.length;k<b;)l=k++,this.v[l].c=f,this.v[l].m=
g,this.v[l].i=.1;b=this.I.length;this.I.push(p);this.I.push(B);this.I.push(N);k=b;for(b=this.I.length;k<b;)l=k++,this.I[l].c=f,this.I[l].m=g,this.I[l].i=.1;f=new ha;g=f.a;g.x=a;g.y=-c;f.L=0;f.M=8;f.T=d;this.A.push(f);f=new ha;g=f.a;g.x=a;g.y=c;f.L=0;f.M=8;f.T=d;this.A.push(f);d=new ya;f=d.F;f.x=a;f.y=-c;f=d.K;f.x=a;f.y=c;d.rc=e;this.Sa.push(d)}gf(a,b){let c=new C;var d=c.a;d.x=0;d.y=-b;c.i=.1;c.m=24;c.c=6;d=new C;var e=d.a;e.x=0;e.y=-a;d.i=.1;d.m=24;d.c=6;e=new C;var f=e.a;f.x=0;f.y=a;e.i=.1;e.m=
24;e.c=6;a=new C;f=a.a;f.x=0;f.y=b;a.i=.1;a.m=24;a.c=6;b=new E;b.F=c;b.K=d;b.m=24;b.c=6;b.va=!1;b.i=.1;f=new E;f.F=e;f.K=a;f.m=24;f.c=6;f.va=!1;f.i=.1;let g=new E;g.F=d;g.K=e;g.m=8;g.c=6;g.va=!1;g.bb(180);g.i=.1;let k=new E;k.F=e;k.K=d;k.m=16;k.c=6;k.va=!1;k.bb(180);k.i=.1;this.v.push(c);this.v.push(d);this.v.push(e);this.v.push(a);this.I.push(b);this.I.push(f);this.I.push(g);this.I.push(k)}ef(a,b,c){if(!(0>=c)){var d=new C,e=d.a;e.x=-a+c;e.y=-b;d.c=0;e=new C;var f=e.a;f.x=-a;f.y=-b+c;e.c=0;f=new C;
var g=f.a;g.x=-a+c;g.y=b;f.c=0;g=new C;var k=g.a;k.x=-a;k.y=b-c;g.c=0;k=new C;var l=k.a;l.x=a-c;l.y=b;k.c=0;l=new C;var p=l.a;p.x=a;p.y=b-c;l.c=0;p=new C;var t=p.a;t.x=a-c;t.y=-b;p.c=0;t=new C;var x=t.a;x.x=a;x.y=-b+c;t.c=0;a=new E;a.F=d;a.K=e;a.c=1;a.va=!1;a.i=1;a.bb(-90);b=new E;b.F=f;b.K=g;b.c=1;b.va=!1;b.i=1;b.bb(90);c=new E;c.F=k;c.K=l;c.c=1;c.va=!1;c.i=1;c.bb(-90);x=new E;x.F=p;x.K=t;x.c=1;x.va=!1;x.i=1;x.bb(90);this.v.push(d);this.v.push(e);this.v.push(f);this.v.push(g);this.v.push(k);this.v.push(l);
this.v.push(p);this.v.push(t);this.I.push(a);this.I.push(b);this.I.push(c);this.I.push(x)}}static pa(a){var b=a.C();return 255==b?(b=new w,b.oi(a),b):w.Gd()[b]}static Gd(){if(null==w.wa){w.wa=[];var a=new w;a.kb("Classic",420,200,370,170,64,75);w.wa.push(a);a=new w;a.kb("Easy",420,200,370,170,90,75);w.wa.push(a);a=new w;a.kb("Small",420,200,320,130,55,70);w.wa.push(a);a=new w;a.kb("Big",600,270,550,240,80,80);w.wa.push(a);a=new w;a.kb("Rounded",420,200,370,170,64,75,75);w.wa.push(a);a=new w;a.ff("Hockey",
420,204,398,182,68,120,100);w.wa.push(a);a=new w;a.ff("Big Hockey",600,270,550,240,90,160,150);w.wa.push(a);a=new w;a.kb("Big Easy",600,270,550,240,95,80);w.wa.push(a);a=new w;a.kb("Big Rounded",600,270,550,240,80,75,100);w.wa.push(a);a=new w;a.kb("Huge",750,350,700,320,100,80);w.wa.push(a);a=0;let b=w.wa.length;for(;a<b;){let c=a++;w.wa[c].Fd=c}}return w.wa}static tg(a,b){if(null!=a.trait&&(b=b[q.l(a.trait,String)],null!=b)){let c=0,d=sb.zi(b);for(;c<d.length;){let e=d[c];++c;null==a[e]&&(a[e]=b[e])}}}static Ua(a){a=
q.l(a,Array);let b=0,c=0;for(;c<a.length;)switch(a[c++]){case "all":b|=63;break;case "ball":b|=1;break;case "blue":b|=4;break;case "blueKO":b|=16;break;case "c0":b|=268435456;break;case "c1":b|=536870912;break;case "c2":b|=1073741824;break;case "c3":b|=-2147483648;break;case "kick":b|=64;break;case "red":b|=2;break;case "redKO":b|=8;break;case "score":b|=128;break;case "wall":b|=32}return b}static Sc(a){if("transparent"==a)return-1;if("string"==typeof a)return Oa.parseInt("0x"+Oa.xe(a));if(a instanceof
Array)return((a[0]|0)<<16)+((a[1]|0)<<8)+(a[2]|0);throw r.s("Bad color");}static qh(a){let b=new C;b.a.x=q.l(a.x,z);b.a.y=q.l(a.y,z);var c=a.bCoef;null!=c&&(b.i=q.l(c,z));c=a.cMask;null!=c&&(b.c=w.Ua(c));a=a.cGroup;null!=a&&(b.m=w.Ua(a));return b}static ph(a,b){let c=new E;var d=q.l(a.v1,za);c.F=b[q.l(a.v0,za)];c.K=b[d];b=a.bias;d=a.bCoef;let e=a.curve,f=a.curveF,g=a.vis,k=a.cMask,l=a.cGroup;a=a.color;null!=b&&(c.ub=q.l(b,z));null!=d&&(c.i=q.l(d,z));null!=f?c.Ha=q.l(f,z):null!=e&&c.bb(q.l(e,z));null!=
g&&(c.va=q.l(g,Ya));null!=k&&(c.c=w.Ua(k));null!=l&&(c.m=w.Ua(l));null!=a&&(c.T=w.Sc(a));return c}static mh(a,b){let c=new Ia;var d=q.l(a.d0,za),e=q.l(a.d1,za);let f=a.color,g=a.strength;a=a.length;if(d>=b.length||0>d)throw r.s(null);if(e>=b.length||0>e)throw r.s(null);c.Ic=d;c.Jc=e;null==a?(d=b[d],e=b[e],null==d||null==e?c.Va=c.Ka=100:(b=d.a,d=e.a,e=b.x-d.x,b=b.y-d.y,c.Va=c.Ka=Math.sqrt(e*e+b*b))):a instanceof Array?(c.Ka=q.l(a[0],z),c.Va=q.l(a[1],z)):c.Va=c.Ka=q.l(a,z);c.qc=null==g||"rigid"==g?
1/0:q.l(g,z);null!=f&&(c.T=w.Sc(f));return c}static nh(a){let b=new K;var c=q.l(a.normal,Array),d=q.l(c[0],z),e=q.l(c[1],z);c=b.X;let f=d;var g=e;null==e&&(g=0);null==d&&(f=0);d=f;e=Math.sqrt(d*d+g*g);c.x=d/e;c.y=g/e;b.ka=q.l(a.dist,z);c=a.bCoef;d=a.cMask;a=a.cGroup;null!=c&&(b.i=q.l(c,z));null!=d&&(b.c=w.Ua(d));null!=a&&(b.m=w.Ua(a));return b}static lh(a){let b=new ya;var c=q.l(a.p0,Array);let d=q.l(a.p1,Array),e=b.F;e.x=c[0];e.y=c[1];c=b.K;c.x=d[0];c.y=d[1];switch(a.team){case "blue":a=u.ta;break;
case "red":a=u.fa;break;default:throw r.s("Bad team value");}b.rc=a;return b}static oh(a){let b=new Ta;var c=a.bCoef,d=a.invMass;let e=a.damping,f=a.acceleration,g=a.kickingAcceleration,k=a.kickingDamping,l=a.kickStrength,p=a.gravity,t=a.cGroup,x=a.radius;a=a.kickback;null!=c&&(b.i=q.l(c,z));null!=d&&(b.L=q.l(d,z));null!=e&&(b.ga=q.l(e,z));null!=f&&(b.zc=q.l(f,z));null!=g&&(b.Oc=q.l(g,z));null!=k&&(b.Pc=q.l(k,z));null!=l&&(b.Mc=q.l(l,z));null!=p&&(c=b.la,d=q.l(p[1],z),c.x=q.l(p[0],z),c.y=d);null!=
t&&(b.m=w.Ua(t));null!=x&&(b.M=q.l(x,z));null!=a&&(b.Nc=q.l(a,z));return b}static df(a,b){var c=a.pos,d=a.speed;let e=a.gravity,f=a.radius,g=a.bCoef,k=a.invMass,l=a.damping,p=a.color,t=a.cMask;a=a.cGroup;if(null!=c){let x=b.a;x.x=c[0];x.y=c[1]}null!=d&&(c=b.u,c.x=d[0],c.y=d[1]);null!=e&&(d=b.la,d.x=e[0],d.y=e[1]);null!=f&&(b.M=q.l(f,z));null!=g&&(b.i=q.l(g,z));null!=k&&(b.L=q.l(k,z));null!=l&&(b.ga=q.l(l,z));null!=p&&(b.T=w.Sc(p));null!=t&&(b.c=w.Ua(t));null!=a&&(b.m=w.Ua(a));return b}}class u{constructor(a,
b,c,d,e,f,g,k){this.Zc=null;this.S=a;this.T=b;this.Qe=c;this.ih=d;this.oa=e;this.m=k;this.hi=new X;this.hi.Qa.push(b)}}class lb{constructor(a,b){this.x=a;this.y=b}}class tb{static li(a){return new Promise(function(b,c){let d=setTimeout(function(){c("Timed out")},500);a.then(function(e){clearTimeout(d);b(e)},function(e){clearTimeout(d);c(e)})})}}class mb{}class cb{constructor(a){let b=[],c=0;for(;c<a;)++c,b.push(0);this.gd=b;this.tc=this.hc=0}qg(a){this.tc-=this.gd[this.hc];this.gd[this.hc]=
a;this.tc+=a;this.hc++;this.hc>=this.gd.length&&(this.hc=0)}ug(){return this.tc/this.gd.length}}class ab{constructor(a){this.hb=null;this.Qh=1E4;this.Lc=!0;a.Me();this.qa=a.qa;this.jb=a.jb;this.Rb=a.Rb;this.hb=a.hb;this.Nf=performance.now();let b=null,c=this;b=function(){var e=c.Qh-c.ki();0>=e?c.cb():(clearTimeout(c.Of),e=setTimeout(b,e+1E3),c.Of=e)};b();this.qa.oniceconnectionstatechange=function(){let e=c.qa.iceConnectionState;"closed"!=e&&"failed"!=e||c.cb()};a=0;let d=this.jb;
for(;a<d.length;){let e=d[a];++a;e.onmessage=function(f){c.Lc&&(c.Nf=performance.now(),null!=c.nf&&c.nf(f.data))};e.onclose=function(){c.cb()}}}ki(){return performance.now()-this.Nf}ob(a,b){if(this.Lc&&(a=this.jb[a],"open"==a.readyState)){b=b.fe();try{a.send(b)}catch(c){b=r.Vb(c).Hb(),va.console.log(b)}}}cb(){clearTimeout(this.Of);this.Lc&&(this.Lc=!1,this.qa.close(),null!=this.mf&&this.mf())}}class jb{static sa(a,b,c,d){null!=a&&a(b,c,d)}}class db{constructor(){this.list=[]}Di(a){let b=
0,c=a.eb,d=a.fb,e=0,f=this.list;for(;e<f.length;){var g=f[e];++e;let k=g.eb;if(k>c)break;if(k==c){g=g.fb;if(g>d)break;g==d&&++d}++b}a.fb=d;this.list.splice(b,0,a)}}class F{static sh(){rb.Ci();ia.Sg().then(function(a){F.Se=a},function(){}).then(function(){promiseResolve(F.fi);let a=onHBLoaded;null!=a&&a()});F.Vh=null}static bi(a,b,c){null==F.bd&&(F.bd=null,F.Ph=a.render(F.bd,{sitekey:b,callback:function(d){null!=
F.Wd&&F.Wd(d)}}));F.bd.hidden=!1;a.reset(F.Ph);F.Wd=function(d){setTimeout(function(){F.bd.hidden=!0;c(d)},1E3);F.Wd=null}}static uh(a,b){return"https://www.haxball.com/play?c="+a+(b?"&p=1":"")}static fi(a){function b(){if(!l){var h=new $a;h.pi=9;h.oa=y.Xd;h.ba=y.ba.length-(x?0:1);h.xh=D.Wc;h.ib=Ka.ib;h.lb=null!=D.lb;h.Rc=Ka.Rc;h.Tc=Ka.Tc;var n=A.aa(16);h.G(n);D.be(n.fe())}}function c(h){nb.then(function(){D.nc(h)})}function d(h){return null==h?null:{x:h.a.x,y:h.a.y,xspeed:h.u.x,yspeed:h.u.y,
xgravity:h.la.x,ygravity:h.la.y,radius:h.M,bCoeff:h.i,invMass:h.L,damping:h.ga,color:h.T,cMask:h.c,cGroup:h.m}}function e(){return null==y.D?null:{red:y.D.zb,blue:y.D.vb,time:y.D.Lb,scoreLimit:y.D.ab,timeLimit:60*y.D.Na}}function f(h){if(null==h)return null;let n=null,v=h.N;null!=v&&(n={x:v.a.x,y:v.a.y});return{name:h.oa,team:h.ja.S,id:h.ma,admin:h.Ub,position:n}}function g(h,n){h=a[h];return null==h?n:q.l(h,String)}function k(h,n){h=a[h];return null==h?n:h}if(F.Ff)throw r.s("Can't init twice");F.Ff=
!0;proxyAgent = k("proxy", null) ? new HttpsProxyAgent(url.parse(k("proxy", null))) : null; debug = k("debug", null) == true;let l=!k("public",!1);var p=g("roomName","Headless Room");let t=g("playerName","Host"),x=k("noPlayer",!1),B=q.l(k("maxPlayers",12),za),N=g("password",null),ta=g("token",null),ub=k("geo",null),Ka=F.Se;if(null!=ub&&(Ka=ia.Te(ub),3<Ka.ib.length))throw r.s("Invalid country code");let y=new Pa;y.Xd=p;x||(p=new Aa,p.oa=t,p.Ub=!0,p.country=Ka.ib,y.ba.push(p));let D=new Ua({iceServers:wa.Md,Ei:wa.Ke+"api/host",state:y,version:9,Gi:ta});D.Wc=2>B?2:30<B?30:B;D.lb=N;let nb=Promise.resolve();b();let eb=null,
J={sendChat:function(h,n){let v=new la;v.Pa=h;null!=n?nb.then(function(){D.Df(v,n)}):c(v)},sendAnnouncement:function(h,n,v,G,H){G={bold:1,italic:2,small:3,"small-bold":4,"small-italic":5}[G];null==G&&(G=0);null==v&&(v=-1);null==H&&(H=1);let ja=Y.V(h,v,G,H);null!=n?nb.then(function(){D.Df(ja,n)}):c(ja)},setPlayerAdmin:function(h,n){c(ba.V(h,n))},setPlayerTeam:function(h,n){c(aa.V(h,1==n?u.fa:2==n?u.ta:u.na))},setPlayerAvatar:function(h,n){c(fa.V(h,n))},kickPlayer:function(h,n,v){null==n&&(n="");c(S.V(h,
n,v))},clearBan:function(h){D.Dd(h)},clearBans:function(){D.Ed()},setScoreLimit:function(h){c(U.V(0,h))},setTimeLimit:function(h){c(U.V(1,h))},setCustomStadium:function(h){let n=new w;try{n.kh(h)}catch(v){throw r.s(r.Vb(v).Hb());}c(V.V(n))},setDefaultStadium:function(h){let n=w.Gd(),v=null,G=0;for(;G<n.length;){let H=n[G];++G;if(H.oa==h){v=H;break}}if(null==v)throw r.s("Stadium doesn't exist");c(V.V(v))},setDiscProperties:function(h,n){c(M.ag(h,!1,n))},setPlayerDiscProperties:function(h,n){c(M.ag(h,
!0,n))},setTeamColors:function(h,n,v,G){let H=new qa,ja=new X;H.rd=ja;H.ja=1==h?u.fa:2==h?u.ta:u.na;ja.Qa=[];var fb=G.length;h=0;for(fb=3>fb?fb:3;h<fb;)ja.Qa.push(G[h++]|0);ja.de=v|0;ja.Je=256*n/360|0;c(H)},setKickRateLimit:function(h,n,v){null==h&&(h=2);null==n&&(n=0);null==v&&(v=0);h=ea.V(h,n,v);c(h)},startGame:function(){c(new ma)},stopGame:function(){c(new na)},pauseGame:function(h){let n=new oa;n.wc=h;c(n)},setTeamsLock:function(h){let n=new pa;n.newValue=h;c(n)},setPassword:function(h){D.lb=
null==h?null:q.l(h,String);b()},setRequireRecaptcha:function(h){D.ae(q.l(h,Ya))},getPlayerList:function(){let h=[],n=0,v=y.ba;for(;n<v.length;)h.push(f(v[n++]));return h},getPlayer:function(h){h=y.R(h);return null==h?null:f(h)},getScores:function(){return e()},getBallPosition:function(){var h=y.D;if(null==h)return null;h=h.ia.A[0].a;return{x:h.x,y:h.y}},getPlayerDiscProperties:function(h){if(null==y.D)return null;h=y.R(h);return null==h?null:d(h.N)},getDiscProperties:function(h){let n=y.D;return null==
n?null:d(n.ia.A[h])},getDiscCount:function(){let h=y.D;return null==h?0:h.ia.A.length},startRecording:function(){eb=new Wa(D,3)},stopRecording:function(){if(null==eb)return null;let h=eb.stop();eb=null;return h},reorderPlayers:function(h,n){c(da.V(h,n))},CollisionFlags:{ball:1,red:2,blue:4,redKO:8,blueKO:16,wall:32,kick:64,score:128,c0:268435456,c1:536870912,c2:1073741824,c3:-2147483648,all:63}};D.ic=function(h,n){Ga.jh().then(function(v){F.bi(v,h,n)})};setInterval(function(){D.Ba()},50);setInterval(function(){D.nc(ca.V(D))},
3E3);D.kf=function(h){null!=y.R(h)&&D.nc(S.V(h,"Bad actor",!1))};D.yh=function(h,n){let v=n.mb();if(25<v.length)throw r.s("name too long");let G=n.mb();if(3<G.length)throw r.s("country too long");n=n.Ya();if(null!=n&&2<n.length)throw r.s("avatar too long");D.nc(Z.V(h,v,G,n));b()};D.zh=function(h){null!=y.R(h)&&D.nc(S.V(h,null,!1))};D.Yc=function(h){h=F.uh(h,null!=D.lb);F.Vh='<p>Room Link: <a href="'+h+'">'+h+"</a></p>";{let n=J.onRoomLink;null!=n&&n(h)}};y.Eh=function(h){var n=D.wb.get(h.ma),
v=null,G=null;null!=n&&(v=n.Ig,G=n.jc.hb);n=v;v=J.onPlayerJoin;null!=v&&(h=f(h),h.auth=n,h.conn=G,v(h))};y.Mf=function(){{let h=J.onTeamVictory;null!=h&&null!=y.D&&h(e())}};y.tf=function(h,n){let v=J.onPlayerChat;return null==v?!0:0!=v(f(h),n)};y.vf=function(h){let n=J.onPlayerBallKick;null!=n&&n(f(h))};y.Lf=function(h){let n=J.onTeamGoal;null!=n&&null!=y.D&&n(h.S)};y.Jf=function(h){let n=J.onGameStart;null!=n&&n(f(h))};y.ld=function(h){let n=J.onGameStop;null!=n&&n(f(h))};y.Gh=function(h,n){let v=
J.onPlayerTeamChange;null!=v&&v(f(n),f(h))};y.sf=function(h,n){let v=J.onPlayerAdminChange;null!=v&&v(f(n),f(h))};y.Og=function(){let h=J.onGameTick;null!=h&&h()};y.Ch=function(h,n){n=J[n?"onGamePause":"onGameUnpause"];null!=n&&n(f(h))};y.wf=function(){let h=J.onPositionsReset;null!=h&&h()};y.uf=function(h){{let n=J.onPlayerActivity;null!=n&&n(f(h))}};y.Hf=function(h,n){let v=J.onStadiumChange;null!=v&&v(n.oa,f(h))};y.Fh=function(h,n,v,G){b();var H=J.onPlayerLeave;null!=H&&H(f(h));null!=n&&(H=null,
null!=G&&(H=G.oa),D.Mg(h.ma,n,H,v),H=J.onPlayerKicked,null!=H&&H(f(h),n,v,f(G)))};y.hh=function(h,n,v,G){let H=J.onKickRateLimitSet;null!=H&&H(n,v,G,f(h))};y.ii=function(h,n){let v=J.onTeamsLockChange;null!=v&&v(n,f(h))};return J}}class ia{constructor(){this.ib="";this.Rc=this.Tc=0}static Te(a){let b=new ia;b.Rc=a.lat;b.Tc=a.lon;b.ib=a.code.toLowerCase();return b}static Sg(){return T.Rg(wa.Ke+"api/geo").then(function(a){return ia.Te(a)})}}class K{constructor(){this.m=32;this.c=63;this.i=1;this.ka=
0;this.X=new I(0,0)}G(a){let b=this.X;a.g(b.x);a.g(b.y);a.g(this.ka);a.g(this.i);a.w(this.c);a.w(this.m)}pa(a){let b=this.X;b.x=a.o();b.y=a.o();this.ka=a.o();this.i=a.o();this.c=a.H();this.m=a.H()}}class X{constructor(){this.de=16777215;this.Qa=[]}G(a){a.f(this.Je);a.w(this.de);a.f(this.Qa.length);let b=0,c=this.Qa;for(;b<c.length;)a.w(c[b++])}pa(a){this.Je=a.C();this.de=a.H();let b=a.C();if(3<b)throw r.s("too many");this.Qa=[];let c=0;for(;c<b;)++c,this.Qa.push(a.H())}}class Va{}class Ta{constructor(){this.Nc=
0;this.M=15;this.m=0;this.la=new I(0,0);this.L=this.i=.5;this.ga=.96;this.zc=.1;this.Oc=.07;this.Pc=.96;this.Mc=5}G(a){a.g(this.i);a.g(this.L);a.g(this.ga);a.g(this.zc);a.g(this.Oc);a.g(this.Pc);a.g(this.Mc);let b=this.la;a.g(b.x);a.g(b.y);a.w(this.m);a.g(this.M);a.g(this.Nc)}pa(a){this.i=a.o();this.L=a.o();this.ga=a.o();this.zc=a.o();this.Oc=a.o();this.Pc=a.o();this.Mc=a.o();let b=this.la;b.x=a.o();b.y=a.o();this.m=a.H();this.M=a.o();this.Nc=a.o()}}class sa{constructor(a,b,c){this.hb=this.ee=null;
this.Rb=[];this.Pe=0;this.pf=!1;this.Ld=[];this.jb=[];this.qa=new RTCPeerConnection({iceServers:b},sa.Fg);let d;this.Ye=new Promise(function(f){d=f});let e=this;this.qa.onicecandidate=function(f){null==f.candidate?d(e.Ld):(f=f.candidate,null!=f.candidate&&""!=f.candidate&&(null!=e.Td&&e.Td(f),e.Ld.push(f)))};for(b=0;b<c.length;)this.Hg(c[b++]);this.S=a}gi(){var a;null==a&&(a=1E4);clearTimeout(this.ee);this.ee=setTimeout(hb(this,this.dh),a)}async Gg(a,b){await this.qa.setRemoteDescription(a);
a=await this.qa.createAnswer();await this.qa.setLocalDescription(a);let c=0;for(;c<b.length;)this.Ie(b[c++]);try{await tb.li(this.Ye)}catch(d){}return a}Hg(a){let b={id:this.jb.length,negotiated:!0,ordered:a.ordered};a.reliable||(b.maxRetransmits=0);a=this.qa.createDataChannel(a.name,b);a.binaryType="arraybuffer";let c=this;a.onopen=function(){let d=0,e=c.jb;for(;d<e.length;)if("open"!=e[d++].readyState)return;null!=c.Rd&&c.Rd()};a.onclose=function(){c.Id()};a.onmessage=function(){c.Id()};this.jb.push(a)}Ie(a){let b=
this;setTimeout(function(){b.qa.addIceCandidate(a)},this.Pe)}dh(){this.Id()}Id(){null!=this.Sd&&this.Sd();this.cb()}cb(){this.Me();this.qa.close()}Me(){clearTimeout(this.ee);this.Rd=this.Td=this.Sd=null;this.qa.onicecandidate=null;this.qa.ondatachannel=null;this.qa.onsignalingstatechange=null;this.qa.oniceconnectionstatechange=null;let a=0,b=this.jb;for(;a<b.length;){let c=b[a];++a;c.onopen=null;c.onclose=null;c.onmessage=null}}}class Qa{constructor(){this.A=[]}G(a){a.f(this.A.length);
let b=0,c=this.A.length;for(;b<c;){let d=b++,e=this.A[d];e.rf=d;e.G(a)}}Ba(a){for(var b=0,c=this.A;b<c.length;){var d=c[b];++b;var e=d.a,f=d.a,g=d.u;e.x=f.x+g.x*a;e.y=f.y+g.y*a;f=e=d.u;g=d.la;d=d.ga;e.x=(f.x+g.x)*d;e.y=(f.y+g.y)*d}a=0;for(b=this.A.length;a<b;){d=a++;c=this.A[d];d+=1;for(e=this.A.length;d<e;)f=this.A[d++],0!=(f.c&c.m)&&0!=(f.m&c.c)&&c.Cg(f);if(0!=c.L){d=0;for(e=this.Y;d<e.length;)if(f=e[d],++d,0!=(f.c&c.m)&&0!=(f.m&c.c)){g=f.X;var k=c.a;g=f.ka-(g.x*k.x+g.y*k.y)+c.M;if(0<g){var l=k=
c.a,p=f.X;k.x=l.x+p.x*g;k.y=l.y+p.y*g;g=c.u;k=f.X;g=g.x*k.x+g.y*k.y;0>g&&(g*=c.i*f.i+1,l=k=c.u,f=f.X,k.x=l.x-f.x*g,k.y=l.y-f.y*g)}}d=0;for(e=this.I;d<e.length;)f=e[d],++d,0!=(f.c&c.m)&&0!=(f.m&c.c)&&c.Dg(f);d=0;for(e=this.v;d<e.length;)if(f=e[d],++d,0!=(f.c&c.m)&&0!=(f.m&c.c)&&(k=c.a,l=f.a,g=k.x-l.x,k=k.y-l.y,l=g*g+k*k,0<l&&l<=c.M*c.M)){l=Math.sqrt(l);g/=l;k/=l;l=c.M-l;let t=p=c.a;p.x=t.x+g*l;p.y=t.y+k*l;l=c.u;l=g*l.x+k*l.y;0>l&&(l*=c.i*f.i+1,p=f=c.u,f.x=p.x-g*l,f.y=p.y-k*l)}}}for(a=0;2>a;)for(++a,
b=0,c=this.Ta;b<c.length;)c[b++].Ba(this.A)}}class Oa{static xe(a){return q.Zb(a,"")}static parseInt(a){a=parseInt(a);return isNaN(a)?null:a}}class ha{constructor(){this.c=this.m=63;this.T=16777215;this.ga=.99;this.L=1;this.i=.5;this.M=10;this.la=new I(0,0);this.u=new I(0,0);this.a=new I(0,0)}G(a){var b=this.a;a.g(b.x);a.g(b.y);b=this.u;a.g(b.x);a.g(b.y);b=this.la;a.g(b.x);a.g(b.y);a.g(this.M);a.g(this.i);a.g(this.L);a.g(this.ga);a.xa(this.T);a.w(this.c);a.w(this.m)}pa(a){var b=this.a;b.x=a.o();b.y=
a.o();b=this.u;b.x=a.o();b.y=a.o();b=this.la;b.x=a.o();b.y=a.o();this.M=a.o();this.i=a.o();this.L=a.o();this.ga=a.o();this.T=a.Ob();this.c