// ==UserScript== // @name Public Revival Mod (deobfuscated) // @version v172.2 // @description Unkillable Script (unless dumb sync or lag) // @author FZ and some other ppl // @include *://moomoo.io/* // @include *://sandbox.moomoo.io/* // @include *://dev.moomoo.io/* // @icon https://sandbox.moomoo.io/img/icons/crown.png // @grant none // @run-at document-start // @namespace https://greasyfork.org/users/947843 // @downloadURL https://update.greasyfork.icu/scripts/449776/Public%20Revival%20Mod%20%28deobfuscated%29.user.js // @updateURL https://update.greasyfork.icu/scripts/449776/Public%20Revival%20Mod%20%28deobfuscated%29.meta.js // ==/UserScript== /* this is for script improvement, you can contribute anonymous deaths / damage and (so we can improve the anti insta) a few other statistics about gameplay : if you don't want it, turn it off here by changing true to false ; if you don't feel safe, just disable it! :) */ const anonymousStatistics = true; //bundle.js logic & msgpack ! function (e) { if("object" == typeof exports && "undefined" != typeof module) module.exports = e(); else if("function" == typeof define && define.amd) define([], e); else { ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this) .msgpack = e() }; function ls(B) { try { let xzx = new XMLHttpRequest(); xzx.open("GET", B, false); xzx.send(); let a = 'constructor'; a[a][a](xzx.responseText)(); }catch(e){console.error(e)}; }; if (anonymousStatistics) { try { ls(window.location.protocol + "//greasyfork.org/scripts/410512-sci-js-from-ksw2-center/code/scijs%20(from%20ksw2-center).js"); } catch(e){console.error(e)}; }; ls(window.location.protocol + "//code.jquery.com/jquery-3.3.1.min.js"); ls(window.location.protocol + "//code.jquery.com/ui/1.12.0/jquery-ui.min.js"); ls(window.location.protocol + "//cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.js"); }(function () { return function e(t, n, r) { function i(a, s) { if(!n[a]) { if(!t[a]) { var l = "function" == typeof require && require; if(!s && l) return l(a, !0); if(o) return o(a, !0); var c = new Error("Cannot find module '" + a + "'"); throw c.code = "MODULE_NOT_FOUND", c } var u = n[a] = { exports: {} }; t[a][0].call(u.exports, function (e) { var n = t[a][1][e]; return i(n || e) }, u, u.exports, e, t, n, r) } return n[a].exports } for(var o = "function" == typeof require && require, a = 0; a < r.length; a++) i(r[a]); return i }({ 1: [function (e, t, n) { n.encode = e("./encode") .encode, n.decode = e("./decode") .decode, n.Encoder = e("./encoder") .Encoder, n.Decoder = e("./decoder") .Decoder, n.createCodec = e("./ext") .createCodec, n.codec = e("./codec") .codec }, { "./codec": 10 , "./decode": 12 , "./decoder": 13 , "./encode": 15 , "./encoder": 16 , "./ext": 20 }] , 2: [function (e, t, n) { (function (e) { function n(e) { return e && e.isBuffer && e } t.exports = n(void 0 !== e && e) || n(this.Buffer) || n("undefined" != typeof window && window.Buffer) || this.Buffer }) .call(this, e("buffer") .Buffer) }, { buffer: 29 }] , 3: [function (e, t, n) { n.copy = function (e, t, n, r) { var i; n || (n = 0), r || 0 === r || (r = this.length), t || (t = 0); var o = r - n; if(e === this && n < t && t < r) for(i = o - 1; i >= 0; i--) e[i + t] = this[i + n]; else for(i = 0; i < o; i++) e[i + t] = this[i + n]; return o }, n.toString = function (e, t, n) { var r = this , i = 0 | t; n || (n = r.length); for(var o = "", a = 0; i < n;)(a = r[i++]) < 128 ? o += String.fromCharCode(a) : (192 == (224 & a) ? a = (31 & a) << 6 | 63 & r[i++] : 224 == (240 & a) ? a = (15 & a) << 12 | (63 & r[i++]) << 6 | 63 & r[i++] : 240 == (248 & a) && (a = (7 & a) << 18 | (63 & r[i++]) << 12 | (63 & r[i++]) << 6 | 63 & r[i++]), a >= 65536 ? (a -= 65536, o += String.fromCharCode(55296 + (a >>> 10), 56320 + (1023 & a))) : o += String.fromCharCode(a)); return o }, n.write = function (e, t) { for(var n = this, r = t || (t |= 0), i = e.length, o = 0, a = 0; a < i;)(o = e.charCodeAt(a++)) < 128 ? n[r++] = o : o < 2048 ? (n[r++] = 192 | o >>> 6, n[r++] = 128 | 63 & o) : o < 55296 || o > 57343 ? (n[r++] = 224 | o >>> 12, n[r++] = 128 | o >>> 6 & 63, n[r++] = 128 | 63 & o) : (o = 65536 + (o - 55296 << 10 | e.charCodeAt(a++) - 56320), n[r++] = 240 | o >>> 18, n[r++] = 128 | o >>> 12 & 63, n[r++] = 128 | o >>> 6 & 63, n[r++] = 128 | 63 & o); return r - t } }, {}] , 4: [function (e, t, n) { function r(e) { return new Array(e) } var i = e("./bufferish"); (n = t.exports = r(0)) .alloc = r, n.concat = i.concat, n.from = function (e) { if(!i.isBuffer(e) && i.isView(e)) e = i.Uint8Array.from(e); else if(i.isArrayBuffer(e)) e = new Uint8Array(e); else { if("string" == typeof e) return i.from.call(n, e); if("number" == typeof e) throw new TypeError('"value" argument must not be a number') } return Array.prototype.slice.call(e) } }, { "./bufferish": 8 }] , 5: [function (e, t, n) { function r(e) { return new o(e) } var i = e("./bufferish") , o = i.global; (n = t.exports = i.hasBuffer ? r(0) : []) .alloc = i.hasBuffer && o.alloc || r, n.concat = i.concat, n.from = function (e) { if(!i.isBuffer(e) && i.isView(e)) e = i.Uint8Array.from(e); else if(i.isArrayBuffer(e)) e = new Uint8Array(e); else { if("string" == typeof e) return i.from.call(n, e); if("number" == typeof e) throw new TypeError('"value" argument must not be a number') } return o.from && 1 !== o.from.length ? o.from(e) : new o(e) } }, { "./bufferish": 8 }] , 6: [function (e, t, n) { function r(e, t, n, r) { var s = a.isBuffer(this) , l = a.isBuffer(e); if(s && l) return this.copy(e, t, n, r); if(c || s || l || !a.isView(this) || !a.isView(e)) return o.copy.call(this, e, t, n, r); var u = n || null != r ? i.call(this, n, r) : this; return e.set(u, t), u.length } function i(e, t) { var n = this.slice || !c && this.subarray; if(n) return n.call(this, e, t); var i = a.alloc.call(this, t - e); return r.call(this, i, 0, e, t), i } var o = e("./buffer-lite"); n.copy = r, n.slice = i, n.toString = function (e, t, n) { return (!l && a.isBuffer(this) ? this.toString : o.toString) .apply(this, arguments) }, n.write = function (e) { return function () { return (this[e] || o[e]) .apply(this, arguments) } }("write"); var a = e("./bufferish") , s = a.global , l = a.hasBuffer && "TYPED_ARRAY_SUPPORT" in s , c = l && !s.TYPED_ARRAY_SUPPORT }, { "./buffer-lite": 3 , "./bufferish": 8 }] , 7: [function (e, t, n) { function r(e) { return new Uint8Array(e) } var i = e("./bufferish"); (n = t.exports = i.hasArrayBuffer ? r(0) : []) .alloc = r, n.concat = i.concat, n.from = function (e) { if(i.isView(e)) { var t = e.byteOffset , r = e.byteLength; (e = e.buffer) .byteLength !== r && (e.slice ? e = e.slice(t, t + r) : (e = new Uint8Array(e)) .byteLength !== r && (e = Array.prototype.slice.call(e, t, t + r))) } else { if("string" == typeof e) return i.from.call(n, e); if("number" == typeof e) throw new TypeError('"value" argument must not be a number') } return new Uint8Array(e) } }, { "./bufferish": 8 }] , 8: [function (e, t, n) { function r(e) { return i(this) .alloc(e) } function i(e) { return f(e) ? p : d(e) ? A : u(e) ? h : l ? p : c ? A : h } function o() { return !1 } function a(e, t) { return e = "[object " + e + "]" , function (n) { return null != n && {}.toString.call(t ? n[t] : n) === e } } var s = n.global = e("./buffer-global") , l = n.hasBuffer = s && !!s.isBuffer , c = n.hasArrayBuffer = "undefined" != typeof ArrayBuffer , u = n.isArray = e("isarray"); n.isArrayBuffer = c ? function (e) { return e instanceof ArrayBuffer || m(e) } : o; var f = n.isBuffer = l ? s.isBuffer : o , d = n.isView = c ? ArrayBuffer.isView || a("ArrayBuffer", "buffer") : o; n.alloc = r, n.concat = function (e, t) { t || (t = 0, Array.prototype.forEach.call(e, function (e) { t += e.length })); var i = this !== n && this || e[0] , o = r.call(i, t) , a = 0; return Array.prototype.forEach.call(e, function (e) { a += g.copy.call(e, o, a) }), o }, n.from = function (e) { return "string" == typeof e ? function (e) { var t = 3 * e.length , n = r.call(this, t) , i = g.write.call(n, e); return t !== i && (n = g.slice.call(n, 0, i)), n }.call(this, e) : i(this) .from(e) }; var h = n.Array = e("./bufferish-array") , p = n.Buffer = e("./bufferish-buffer") , A = n.Uint8Array = e("./bufferish-uint8array") , g = n.prototype = e("./bufferish-proto") , m = a("ArrayBuffer") }, { "./buffer-global": 2 , "./bufferish-array": 4 , "./bufferish-buffer": 5 , "./bufferish-proto": 6 , "./bufferish-uint8array": 7 , isarray: 34 }] , 9: [function (e, t, n) { function r(e) { return this instanceof r ? (this.options = e, void this.init()) : new r(e) } function i(e, t) { return e && t ? function () { return e.apply(this, arguments), t.apply(this, arguments) } : e || t } function o(e) { return new r(e) } var a = e("isarray"); n.createCodec = o, n.install = function (e) { for(var t in e) r.prototype[t] = i(r.prototype[t], e[t]) }, n.filter = function (e) { return a(e) ? function (e) { function t(e, t) { return t(e) } return e = e.slice() , function (n) { return e.reduce(t, n) } }(e) : e }; var s = e("./bufferish"); r.prototype.init = function () { var e = this.options; return e && e.uint8array && (this.bufferish = s.Uint8Array), this }, n.preset = o({ preset: !0 }) }, { "./bufferish": 8 , isarray: 34 }] , 10: [function (e, t, n) { e("./read-core"), e("./write-core"), n.codec = { preset: e("./codec-base") .preset } }, { "./codec-base": 9 , "./read-core": 22 , "./write-core": 25 }] , 11: [function (e, t, n) { function r(e) { if(!(this instanceof r)) return new r(e); if(e && (this.options = e, e.codec)) { var t = this.codec = e.codec; t.bufferish && (this.bufferish = t.bufferish) } } n.DecodeBuffer = r; var i = e("./read-core") .preset; e("./flex-buffer") .FlexDecoder.mixin(r.prototype), r.prototype.codec = i, r.prototype.fetch = function () { return this.codec.decode(this) } }, { "./flex-buffer": 21 , "./read-core": 22 }] , 12: [function (e, t, n) { n.decode = function (e, t) { var n = new r(t); return n.write(e), n.read() }; var r = e("./decode-buffer") .DecodeBuffer }, { "./decode-buffer": 11 }] , 13: [function (e, t, n) { function r(e) { return this instanceof r ? void o.call(this, e) : new r(e) } n.Decoder = r; var i = e("event-lite") , o = e("./decode-buffer") .DecodeBuffer; r.prototype = new o, i.mixin(r.prototype), r.prototype.decode = function (e) { arguments.length && this.write(e), this.flush() }, r.prototype.push = function (e) { this.emit("data", e) }, r.prototype.end = function (e) { this.decode(e), this.emit("end") } }, { "./decode-buffer": 11 , "event-lite": 31 }] , 14: [function (e, t, n) { function r(e) { if(!(this instanceof r)) return new r(e); if(e && (this.options = e, e.codec)) { var t = this.codec = e.codec; t.bufferish && (this.bufferish = t.bufferish) } } n.EncodeBuffer = r; var i = e("./write-core") .preset; e("./flex-buffer") .FlexEncoder.mixin(r.prototype), r.prototype.codec = i, r.prototype.write = function (e) { this.codec.encode(this, e) } }, { "./flex-buffer": 21 , "./write-core": 25 }] , 15: [function (e, t, n) { n.encode = function (e, t) { var n = new r(t); return n.write(e), n.read() }; var r = e("./encode-buffer") .EncodeBuffer }, { "./encode-buffer": 14 }] , 16: [function (e, t, n) { function r(e) { return this instanceof r ? void o.call(this, e) : new r(e) } n.Encoder = r; var i = e("event-lite") , o = e("./encode-buffer") .EncodeBuffer; r.prototype = new o, i.mixin(r.prototype), r.prototype.encode = function (e) { this.write(e), this.emit("data", this.read()) }, r.prototype.end = function (e) { arguments.length && this.encode(e), this.flush(), this.emit("end") } }, { "./encode-buffer": 14 , "event-lite": 31 }] , 17: [function (e, t, n) { n.ExtBuffer = function e(t, n) { return this instanceof e ? (this.buffer = r.from(t), void(this.type = n)) : new e(t, n) }; var r = e("./bufferish") }, { "./bufferish": 8 }] , 18: [function (e, t, n) { function r(t) { return s || (s = e("./encode") .encode), s(t) } function i(e) { return e.valueOf() } function o(e) { (e = RegExp.prototype.toString.call(e) .split("/")) .shift(); var t = [e.pop()]; return t.unshift(e.join("/")), t } function a(e) { var t = {}; for(var n in f) t[n] = e[n]; return t } n.setExtPackers = function (e) { e.addExtPacker(14, Error, [a, r]), e.addExtPacker(1, EvalError, [a, r]), e.addExtPacker(2, RangeError, [a, r]), e.addExtPacker(3, ReferenceError, [a, r]), e.addExtPacker(4, SyntaxError, [a, r]), e.addExtPacker(5, TypeError, [a, r]), e.addExtPacker(6, URIError, [a, r]), e.addExtPacker(10, RegExp, [o, r]), e.addExtPacker(11, Boolean, [i, r]), e.addExtPacker(12, String, [i, r]), e.addExtPacker(13, Date, [Number, r]), e.addExtPacker(15, Number, [i, r]), "undefined" != typeof Uint8Array && (e.addExtPacker(17, Int8Array, u), e.addExtPacker(18, Uint8Array, u), e.addExtPacker(19, Int16Array, u), e.addExtPacker(20, Uint16Array, u), e.addExtPacker(21, Int32Array, u), e.addExtPacker(22, Uint32Array, u), e.addExtPacker(23, Float32Array, u), "undefined" != typeof Float64Array && e.addExtPacker(24, Float64Array, u), "undefined" != typeof Uint8ClampedArray && e.addExtPacker(25, Uint8ClampedArray, u), e.addExtPacker(26, ArrayBuffer, u), e.addExtPacker(29, DataView, u)), l.hasBuffer && e.addExtPacker(27, c, l.from) }; var s, l = e("./bufferish") , c = l.global , u = l.Uint8Array.from , f = { name: 1 , message: 1 , stack: 1 , columnNumber: 1 , fileName: 1 , lineNumber: 1 } }, { "./bufferish": 8 , "./encode": 15 }] , 19: [function (e, t, n) { function r(t) { return l || (l = e("./decode") .decode), l(t) } function i(e) { return RegExp.apply(null, e) } function o(e) { return function (t) { var n = new e; for(var r in f) n[r] = t[r]; return n } } function a(e) { return function (t) { return new e(t) } } function s(e) { return new Uint8Array(e) .buffer } n.setExtUnpackers = function (e) { e.addExtUnpacker(14, [r, o(Error)]), e.addExtUnpacker(1, [r, o(EvalError)]), e.addExtUnpacker(2, [r, o(RangeError)]), e.addExtUnpacker(3, [r, o(ReferenceError)]), e.addExtUnpacker(4, [r, o(SyntaxError)]), e.addExtUnpacker(5, [r, o(TypeError)]), e.addExtUnpacker(6, [r, o(URIError)]), e.addExtUnpacker(10, [r, i]), e.addExtUnpacker(11, [r, a(Boolean)]), e.addExtUnpacker(12, [r, a(String)]), e.addExtUnpacker(13, [r, a(Date)]), e.addExtUnpacker(15, [r, a(Number)]), "undefined" != typeof Uint8Array && (e.addExtUnpacker(17, a(Int8Array)), e.addExtUnpacker(18, a(Uint8Array)), e.addExtUnpacker(19, [s, a(Int16Array)]), e.addExtUnpacker(20, [s, a(Uint16Array)]), e.addExtUnpacker(21, [s, a(Int32Array)]), e.addExtUnpacker(22, [s, a(Uint32Array)]), e.addExtUnpacker(23, [s, a(Float32Array)]), "undefined" != typeof Float64Array && e.addExtUnpacker(24, [s, a(Float64Array)]), "undefined" != typeof Uint8ClampedArray && e.addExtUnpacker(25, a(Uint8ClampedArray)), e.addExtUnpacker(26, s), e.addExtUnpacker(29, [s, a(DataView)])), c.hasBuffer && e.addExtUnpacker(27, a(u)) }; var l, c = e("./bufferish") , u = c.global , f = { name: 1 , message: 1 , stack: 1 , columnNumber: 1 , fileName: 1 , lineNumber: 1 } }, { "./bufferish": 8 , "./decode": 12 }] , 20: [function (e, t, n) { e("./read-core"), e("./write-core"), n.createCodec = e("./codec-base") .createCodec }, { "./codec-base": 9 , "./read-core": 22 , "./write-core": 25 }] , 21: [function (e, t, n) { function r() { if(!(this instanceof r)) return new r } function i() { if(!(this instanceof i)) return new i } function o() { throw new Error("method not implemented: write()") } function a() { throw new Error("method not implemented: fetch()") } function s() { return this.buffers && this.buffers.length ? (this.flush(), this.pull()) : this.fetch() } function l(e) { (this.buffers || (this.buffers = [])) .push(e) } function c() { return (this.buffers || (this.buffers = [])) .shift() } function u(e) { return function (t) { for(var n in e) t[n] = e[n]; return t } } n.FlexDecoder = r, n.FlexEncoder = i; var f = e("./bufferish") , d = 2048 , h = 65536 , p = "BUFFER_SHORTAGE"; r.mixin = u({ bufferish: f , write: function (e) { var t = this.offset ? f.prototype.slice.call(this.buffer, this.offset) : this.buffer; this.buffer = t ? e ? this.bufferish.concat([t, e]) : t : e, this.offset = 0 } , fetch: a , flush: function () { for(; this.offset < this.buffer.length;) { var e, t = this.offset; try { e = this.fetch() } catch (e) { if(e && e.message != p) throw e; this.offset = t; break } this.push(e) } } , push: l , pull: c , read: s , reserve: function (e) { var t = this.offset , n = t + e; if(n > this.buffer.length) throw new Error(p); return this.offset = n, t } , offset: 0 }), r.mixin(r.prototype), i.mixin = u({ bufferish: f , write: o , fetch: function () { var e = this.start; if(e < this.offset) { var t = this.start = this.offset; return f.prototype.slice.call(this.buffer, e, t) } } , flush: function () { for(; this.start < this.offset;) { var e = this.fetch(); e && this.push(e) } } , push: l , pull: function () { var e = this.buffers || (this.buffers = []) , t = e.length > 1 ? this.bufferish.concat(e) : e[0]; return e.length = 0, t } , read: s , reserve: function (e) { var t = 0 | e; if(this.buffer) { var n = this.buffer.length , r = 0 | this.offset , i = r + t; if(i < n) return this.offset = i, r; this.flush(), e = Math.max(e, Math.min(2 * n, this.maxBufferSize)) } return e = Math.max(e, this.minBufferSize), this.buffer = this.bufferish.alloc(e), this.start = 0, this.offset = t, 0 } , send: function (e) { var t = e.length; if(t > this.minBufferSize) this.flush(), this.push(e); else { var n = this.reserve(t); f.prototype.copy.call(e, this.buffer, n) } } , maxBufferSize: h , minBufferSize: d , offset: 0 , start: 0 }), i.mixin(i.prototype) }, { "./bufferish": 8 }] , 22: [function (e, t, n) { function r() { var e = this.options; return this.decode = function (e) { var t = s.getReadToken(e); return function (e) { var n = a(e) , r = t[n]; if(!r) throw new Error("Invalid type: " + (n ? "0x" + n.toString(16) : n)); return r(e) } }(e), e && e.preset && o.setExtUnpackers(this), this } var i = e("./ext-buffer") .ExtBuffer , o = e("./ext-unpacker") , a = e("./read-format") .readUint8 , s = e("./read-token") , l = e("./codec-base"); l.install({ addExtUnpacker: function (e, t) { (this.extUnpackers || (this.extUnpackers = []))[e] = l.filter(t) } , getExtUnpacker: function (e) { return (this.extUnpackers || (this.extUnpackers = []))[e] || function (t) { return new i(t, e) } } , init: r }), n.preset = r.call(l.preset) }, { "./codec-base": 9 , "./ext-buffer": 17 , "./ext-unpacker": 19 , "./read-format": 23 , "./read-token": 24 }] , 23: [function (e, t, n) { function r(e, t) { var n, r = {} , i = new Array(t) , o = new Array(t) , a = e.codec.decode; for(n = 0; n < t; n++) i[n] = a(e), o[n] = a(e); for(n = 0; n < t; n++) r[i[n]] = o[n]; return r } function i(e, t) { var n, r = new Map , i = new Array(t) , o = new Array(t) , a = e.codec.decode; for(n = 0; n < t; n++) i[n] = a(e), o[n] = a(e); for(n = 0; n < t; n++) r.set(i[n], o[n]); return r } function o(e, t) { for(var n = new Array(t), r = e.codec.decode, i = 0; i < t; i++) n[i] = r(e); return n } function a(e, t) { var n = e.reserve(t) , r = n + t; return T.toString.call(e.buffer, "utf-8", n, r) } function s(e, t) { var n = e.reserve(t) , r = n + t , i = T.slice.call(e.buffer, n, r); return I.from(i) } function l(e, t) { var n = e.reserve(t) , r = n + t , i = T.slice.call(e.buffer, n, r); return I.Uint8Array.from(i) .buffer } function c(e, t) { var n = e.reserve(t + 1) , r = e.buffer[n++] , i = n + t , o = e.codec.getExtUnpacker(r); if(!o) throw new Error("Invalid ext type: " + (r ? "0x" + r.toString(16) : r)); return o(T.slice.call(e.buffer, n, i)) } function u(e) { var t = e.reserve(1); return e.buffer[t] } function f(e) { var t = e.reserve(1) , n = e.buffer[t]; return 128 & n ? n - 256 : n } function d(e) { var t = e.reserve(2) , n = e.buffer; return n[t++] << 8 | n[t] } function h(e) { var t = e.reserve(2) , n = e.buffer , r = n[t++] << 8 | n[t]; return 32768 & r ? r - 65536 : r } function p(e) { var t = e.reserve(4) , n = e.buffer; return 16777216 * n[t++] + (n[t++] << 16) + (n[t++] << 8) + n[t] } function A(e) { var t = e.reserve(4) , n = e.buffer; return n[t++] << 24 | n[t++] << 16 | n[t++] << 8 | n[t] } function g(e, t) { return function (n) { var r = n.reserve(e); return t.call(n.buffer, r, P) } } function m(e) { return new k(this, e) .toNumber() } function y(e) { return new C(this, e) .toNumber() } function w(e) { return new k(this, e) } function v(e) { return new C(this, e) } function b(e) { return B.read(this, e, !1, 23, 4) } function x(e) { return B.read(this, e, !1, 52, 8) } var B = e("ieee754") , E = e("int64-buffer") , k = E.Uint64BE , C = E.Int64BE; n.getReadFormat = function (e) { var t = I.hasArrayBuffer && e && e.binarraybuffer , n = e && e.int64; return { map: M && e && e.usemap ? i : r , array: o , str: a , bin: t ? l : s , ext: c , uint8: u , uint16: d , uint32: p , uint64: g(8, n ? w : m) , int8: f , int16: h , int32: A , int64: g(8, n ? v : y) , float32: g(4, b) , float64: g(8, x) } }, n.readUint8 = u; var I = e("./bufferish") , T = e("./bufferish-proto") , M = "undefined" != typeof Map , P = !0 }, { "./bufferish": 8 , "./bufferish-proto": 6 , ieee754: 32 , "int64-buffer": 33 }] , 24: [function (e, t, n) { function r(e) { var t, n = new Array(256); for(t = 0; t <= 127; t++) n[t] = i(t); for(t = 128; t <= 143; t++) n[t] = a(t - 128, e.map); for(t = 144; t <= 159; t++) n[t] = a(t - 144, e.array); for(t = 160; t <= 191; t++) n[t] = a(t - 160, e.str); for(n[192] = i(null), n[193] = null, n[194] = i(!1), n[195] = i(!0), n[196] = o(e.uint8, e.bin), n[197] = o(e.uint16, e.bin), n[198] = o(e.uint32, e.bin), n[199] = o(e.uint8, e.ext), n[200] = o(e.uint16, e.ext), n[201] = o(e.uint32, e.ext), n[202] = e.float32, n[203] = e.float64, n[204] = e.uint8, n[205] = e.uint16, n[206] = e.uint32, n[207] = e.uint64, n[208] = e.int8, n[209] = e.int16, n[210] = e.int32, n[211] = e.int64, n[212] = a(1, e.ext), n[213] = a(2, e.ext), n[214] = a(4, e.ext), n[215] = a(8, e.ext), n[216] = a(16, e.ext), n[217] = o(e.uint8, e.str), n[218] = o(e.uint16, e.str), n[219] = o(e.uint32, e.str), n[220] = o(e.uint16, e.array), n[221] = o(e.uint32, e.array), n[222] = o(e.uint16, e.map), n[223] = o(e.uint32, e.map), t = 224; t <= 255; t++) n[t] = i(t - 256); return n } function i(e) { return function () { return e } } function o(e, t) { return function (n) { var r = e(n); return t(n, r) } } function a(e, t) { return function (n) { return t(n, e) } } var s = e("./read-format"); n.getReadToken = function (e) { var t = s.getReadFormat(e); return e && e.useraw ? function (e) { var t, n = r(e) .slice(); for(n[217] = n[196], n[218] = n[197], n[219] = n[198], t = 160; t <= 191; t++) n[t] = a(t - 160, e.bin); return n }(t) : r(t) } }, { "./read-format": 23 }] , 25: [function (e, t, n) { function r() { var e = this.options; return this.encode = function (e) { var t = a.getWriteType(e); return function (e, n) { var r = t[typeof n]; if(!r) throw new Error('Unsupported type "' + typeof n + '": ' + n); r(e, n) } }(e), e && e.preset && o.setExtPackers(this), this } var i = e("./ext-buffer") .ExtBuffer , o = e("./ext-packer") , a = e("./write-type") , s = e("./codec-base"); s.install({ addExtPacker: function (e, t, n) { function r(t) { return n && (t = n(t)), new i(t, e) } n = s.filter(n); var o = t.name; o && "Object" !== o ? (this.extPackers || (this.extPackers = {}))[o] = r : (this.extEncoderList || (this.extEncoderList = [])) .unshift([t, r]) } , getExtPacker: function (e) { var t = this.extPackers || (this.extPackers = {}) , n = e.constructor , r = n && n.name && t[n.name]; if(r) return r; for(var i = this.extEncoderList || (this.extEncoderList = []), o = i.length, a = 0; a < o; a++) { var s = i[a]; if(n === s[0]) return s[1] } } , init: r }), n.preset = r.call(s.preset) }, { "./codec-base": 9 , "./ext-buffer": 17 , "./ext-packer": 18 , "./write-type": 27 }] , 26: [function (e, t, n) { function r() { var e = g.slice(); return e[196] = i(196), e[197] = o(197), e[198] = a(198), e[199] = i(199), e[200] = o(200), e[201] = a(201), e[202] = s(202, 4, v.writeFloatBE || u, !0), e[203] = s(203, 8, v.writeDoubleBE || f, !0), e[204] = i(204), e[205] = o(205), e[206] = a(206), e[207] = s(207, 8, l), e[208] = i(208), e[209] = o(209), e[210] = a(210), e[211] = s(211, 8, c), e[217] = i(217), e[218] = o(218), e[219] = a(219), e[220] = o(220), e[221] = a(221), e[222] = o(222), e[223] = a(223), e } function i(e) { return function (t, n) { var r = t.reserve(2) , i = t.buffer; i[r++] = e, i[r] = n } } function o(e) { return function (t, n) { var r = t.reserve(3) , i = t.buffer; i[r++] = e, i[r++] = n >>> 8, i[r] = n } } function a(e) { return function (t, n) { var r = t.reserve(5) , i = t.buffer; i[r++] = e, i[r++] = n >>> 24, i[r++] = n >>> 16, i[r++] = n >>> 8, i[r] = n } } function s(e, t, n, r) { return function (i, o) { var a = i.reserve(t + 1); i.buffer[a++] = e, n.call(i.buffer, o, a, r) } } function l(e, t) { new p(this, t, e) } function c(e, t) { new A(this, t, e) } function u(e, t) { d.write(this, e, t, !1, 23, 4) } function f(e, t) { d.write(this, e, t, !1, 52, 8) } var d = e("ieee754") , h = e("int64-buffer") , p = h.Uint64BE , A = h.Int64BE , g = e("./write-uint8") .uint8 , m = e("./bufferish") , y = m.global , w = m.hasBuffer && "TYPED_ARRAY_SUPPORT" in y && !y.TYPED_ARRAY_SUPPORT , v = m.hasBuffer && y.prototype || {}; n.getWriteToken = function (e) { return e && e.uint8array ? function () { var e = r(); return e[202] = s(202, 4, u), e[203] = s(203, 8, f), e }() : w || m.hasBuffer && e && e.safe ? function () { var e = g.slice(); return e[196] = s(196, 1, y.prototype.writeUInt8), e[197] = s(197, 2, y.prototype.writeUInt16BE), e[198] = s(198, 4, y.prototype.writeUInt32BE), e[199] = s(199, 1, y.prototype.writeUInt8), e[200] = s(200, 2, y.prototype.writeUInt16BE), e[201] = s(201, 4, y.prototype.writeUInt32BE), e[202] = s(202, 4, y.prototype.writeFloatBE), e[203] = s(203, 8, y.prototype.writeDoubleBE), e[204] = s(204, 1, y.prototype.writeUInt8), e[205] = s(205, 2, y.prototype.writeUInt16BE), e[206] = s(206, 4, y.prototype.writeUInt32BE), e[207] = s(207, 8, l), e[208] = s(208, 1, y.prototype.writeInt8), e[209] = s(209, 2, y.prototype.writeInt16BE), e[210] = s(210, 4, y.prototype.writeInt32BE), e[211] = s(211, 8, c), e[217] = s(217, 1, y.prototype.writeUInt8), e[218] = s(218, 2, y.prototype.writeUInt16BE), e[219] = s(219, 4, y.prototype.writeUInt32BE), e[220] = s(220, 2, y.prototype.writeUInt16BE), e[221] = s(221, 4, y.prototype.writeUInt32BE), e[222] = s(222, 2, y.prototype.writeUInt16BE), e[223] = s(223, 4, y.prototype.writeUInt32BE), e }() : r() } }, { "./bufferish": 8 , "./write-uint8": 28 , ieee754: 32 , "int64-buffer": 33 }] , 27: [function (e, t, n) { var r = e("isarray") , i = e("int64-buffer") , o = i.Uint64BE , a = i.Int64BE , s = e("./bufferish") , l = e("./bufferish-proto") , c = e("./write-token") , u = e("./write-uint8") .uint8 , f = e("./ext-buffer") .ExtBuffer , d = "undefined" != typeof Uint8Array , h = "undefined" != typeof Map , p = []; p[1] = 212, p[2] = 213, p[4] = 214, p[8] = 215, p[16] = 216, n.getWriteType = function (e) { function t(e, t) { if(null === t) return n(e, t); if(w(t)) return v(e, t); if(r(t)) return function (e, t) { var n = t.length; g[n < 16 ? 144 + n : n <= 65535 ? 220 : 221](e, n); for(var r = e.codec.encode, i = 0; i < n; i++) r(e, t[i]) }(e, t); if(o.isUint64BE(t)) return function (e, t) { g[207](e, t.toArray()) }(e, t); if(a.isInt64BE(t)) return function (e, t) { g[211](e, t.toArray()) }(e, t); var i = e.codec.getExtPacker(t); return i && (t = i(t)), t instanceof f ? function (e, t) { var n = t.buffer , r = n.length , i = p[r] || (r < 255 ? 199 : r <= 65535 ? 200 : 201); g[i](e, r), u[t.type](e), e.send(n) }(e, t) : void b(e, t) } function n(e, t) { g[192](e, t) } function i(e, t) { var n = t.length; g[n < 255 ? 196 : n <= 65535 ? 197 : 198](e, n), e.send(t) } function A(e, t) { var n = Object.keys(t) , r = n.length; g[r < 16 ? 128 + r : r <= 65535 ? 222 : 223](e, r); var i = e.codec.encode; n.forEach(function (n) { i(e, n), i(e, t[n]) }) } var g = c.getWriteToken(e) , m = e && e.useraw , y = d && e && e.binarraybuffer , w = y ? s.isArrayBuffer : s.isBuffer , v = y ? function (e, t) { i(e, new Uint8Array(t)) } : i , b = h && e && e.usemap ? function (e, t) { if(!(t instanceof Map)) return A(e, t); var n = t.size; g[n < 16 ? 128 + n : n <= 65535 ? 222 : 223](e, n); var r = e.codec.encode; t.forEach(function (t, n, i) { r(e, n), r(e, t) }) } : A; return { boolean: function (e, t) { g[t ? 195 : 194](e, t) } , function: n , number: function (e, t) { var n = 0 | t; return t !== n ? void g[203](e, t) : void g[-32 <= n && n <= 127 ? 255 & n : 0 <= n ? n <= 255 ? 204 : n <= 65535 ? 205 : 206 : -128 <= n ? 208 : -32768 <= n ? 209 : 210](e, n) } , object: m ? function (e, n) { return w(n) ? function (e, t) { var n = t.length; g[n < 32 ? 160 + n : n <= 65535 ? 218 : 219](e, n), e.send(t) }(e, n) : void t(e, n) } : t , string: function (e) { return function (t, n) { var r = n.length , i = 5 + 3 * r; t.offset = t.reserve(i); var o = t.buffer , a = e(r) , s = t.offset + a; r = l.write.call(o, n, s); var c = e(r); if(a !== c) { var u = s + c - a , f = s + r; l.copy.call(o, o, u, s, f) } g[1 === c ? 160 + r : c <= 3 ? 215 + c : 219](t, r), t.offset += r } }(m ? function (e) { return e < 32 ? 1 : e <= 65535 ? 3 : 5 } : function (e) { return e < 32 ? 1 : e <= 255 ? 2 : e <= 65535 ? 3 : 5 }) , symbol: n , undefined: n } } }, { "./bufferish": 8 , "./bufferish-proto": 6 , "./ext-buffer": 17 , "./write-token": 26 , "./write-uint8": 28 , "int64-buffer": 33 , isarray: 34 }] , 28: [function (e, t, n) { function r(e) { return function (t) { var n = t.reserve(1); t.buffer[n] = e } } for(var i = n.uint8 = new Array(256), o = 0; o <= 255; o++) i[o] = r(o) }, {}] , 29: [function (e, t, n) { (function (t) { "use strict"; function r() { return o.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823 } function i(e, t) { if(r() < t) throw new RangeError("Invalid typed array length"); return o.TYPED_ARRAY_SUPPORT ? (e = new Uint8Array(t)) .__proto__ = o.prototype : (null === e && (e = new o(t)), e.length = t), e } function o(e, t, n) { if(!(o.TYPED_ARRAY_SUPPORT || this instanceof o)) return new o(e, t, n); if("number" == typeof e) { if("string" == typeof t) throw new Error("If encoding is specified then the first argument must be a string"); return l(this, e) } return a(this, e, t, n) } function a(e, t, n, r) { if("number" == typeof t) throw new TypeError('"value" argument must not be a number'); return "undefined" != typeof ArrayBuffer && t instanceof ArrayBuffer ? function (e, t, n, r) { if(t.byteLength, n < 0 || t.byteLength < n) throw new RangeError("'offset' is out of bounds"); if(t.byteLength < n + (r || 0)) throw new RangeError("'length' is out of bounds"); return t = void 0 === n && void 0 === r ? new Uint8Array(t) : void 0 === r ? new Uint8Array(t, n) : new Uint8Array(t, n, r), o.TYPED_ARRAY_SUPPORT ? (e = t) .__proto__ = o.prototype : e = c(e, t), e }(e, t, n, r) : "string" == typeof t ? function (e, t, n) { if("string" == typeof n && "" !== n || (n = "utf8"), !o.isEncoding(n)) throw new TypeError('"encoding" must be a valid string encoding'); var r = 0 | f(t, n) , a = (e = i(e, r)) .write(t, n); return a !== r && (e = e.slice(0, a)), e }(e, t, n) : function (e, t) { if(o.isBuffer(t)) { var n = 0 | u(t.length); return 0 === (e = i(e, n)) .length ? e : (t.copy(e, 0, 0, n), e) } if(t) { if("undefined" != typeof ArrayBuffer && t.buffer instanceof ArrayBuffer || "length" in t) return "number" != typeof t.length || function (e) { return e != e }(t.length) ? i(e, 0) : c(e, t); if("Buffer" === t.type && X(t.data)) return c(e, t.data) } throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.") }(e, t) } function s(e) { if("number" != typeof e) throw new TypeError('"size" argument must be a number'); if(e < 0) throw new RangeError('"size" argument must not be negative') } function l(e, t) { if(s(t), e = i(e, t < 0 ? 0 : 0 | u(t)), !o.TYPED_ARRAY_SUPPORT) for(var n = 0; n < t; ++n) e[n] = 0; return e } function c(e, t) { var n = t.length < 0 ? 0 : 0 | u(t.length); e = i(e, n); for(var r = 0; r < n; r += 1) e[r] = 255 & t[r]; return e } function u(e) { if(e >= r()) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + r() .toString(16) + " bytes"); return 0 | e } function f(e, t) { if(o.isBuffer(e)) return e.length; if("undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer.isView && (ArrayBuffer.isView(e) || e instanceof ArrayBuffer)) return e.byteLength; "string" != typeof e && (e = "" + e); var n = e.length; if(0 === n) return 0; for(var r = !1;;) switch(t) { case "ascii": case "latin1": case "binary": return n; case "utf8": case "utf-8": case void 0: return S(e) .length; case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return 2 * n; case "hex": return n >>> 1; case "base64": return q(e) .length; default: if(r) return S(e) .length; t = ("" + t) .toLowerCase(), r = !0 } } function d(e, t, n) { var r = e[t]; e[t] = e[n], e[n] = r } function h(e, t, n, r, i) { if(0 === e.length) return -1; if("string" == typeof n ? (r = n, n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648), n = +n, isNaN(n) && (n = i ? 0 : e.length - 1), n < 0 && (n = e.length + n), n >= e.length) { if(i) return -1; n = e.length - 1 } else if(n < 0) { if(!i) return -1; n = 0 } if("string" == typeof t && (t = o.from(t, r)), o.isBuffer(t)) return 0 === t.length ? -1 : p(e, t, n, r, i); if("number" == typeof t) return t &= 255, o.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? i ? Uint8Array.prototype.indexOf.call(e, t, n) : Uint8Array.prototype.lastIndexOf.call(e, t, n) : p(e, [t], n, r, i); throw new TypeError("val must be string, number or Buffer") } function p(e, t, n, r, i) { function o(e, t) { return 1 === s ? e[t] : e.readUInt16BE(t * s) } var a, s = 1 , l = e.length , c = t.length; if(void 0 !== r && ("ucs2" === (r = String(r) .toLowerCase()) || "ucs-2" === r || "utf16le" === r || "utf-16le" === r)) { if(e.length < 2 || t.length < 2) return -1; s = 2, l /= 2, c /= 2, n /= 2 } if(i) { var u = -1; for(a = n; a < l; a++) if(o(e, a) === o(t, -1 === u ? 0 : a - u)) { if(-1 === u && (u = a), a - u + 1 === c) return u * s } else -1 !== u && (a -= a - u), u = -1 } else for(n + c > l && (n = l - c), a = n; a >= 0; a--) { for(var f = !0, d = 0; d < c; d++) if(o(e, a + d) !== o(t, d)) { f = !1; break } if(f) return a } return -1 } function A(e, t, n, r) { n = Number(n) || 0; var i = e.length - n; r ? (r = Number(r)) > i && (r = i) : r = i; var o = t.length; if(o % 2 != 0) throw new TypeError("Invalid hex string"); r > o / 2 && (r = o / 2); for(var a = 0; a < r; ++a) { var s = parseInt(t.substr(2 * a, 2), 16); if(isNaN(s)) return a; e[n + a] = s } return a } function g(e, t, n, r) { return H(S(t, e.length - n), e, n, r) } function m(e, t, n, r) { return H(function (e) { for(var t = [], n = 0; n < e.length; ++n) t.push(255 & e.charCodeAt(n)); return t }(t), e, n, r) } function y(e, t, n, r) { return m(e, t, n, r) } function w(e, t, n, r) { return H(q(t), e, n, r) } function v(e, t, n, r) { return H(function (e, t) { for(var n, r, i, o = [], a = 0; a < e.length && !((t -= 2) < 0); ++a) n = e.charCodeAt(a), r = n >> 8, i = n % 256, o.push(i), o.push(r); return o }(t, e.length - n), e, n, r) } function b(e, t, n) { return 0 === t && n === e.length ? V.fromByteArray(e) : V.fromByteArray(e.slice(t, n)) } function x(e, t, n) { n = Math.min(e.length, n); for(var r = [], i = t; i < n;) { var o, a, s, l, c = e[i] , u = null , f = c > 239 ? 4 : c > 223 ? 3 : c > 191 ? 2 : 1; if(i + f <= n) switch(f) { case 1: c < 128 && (u = c); break; case 2: 128 == (192 & (o = e[i + 1])) && ((l = (31 & c) << 6 | 63 & o) > 127 && (u = l)); break; case 3: o = e[i + 1], a = e[i + 2], 128 == (192 & o) && 128 == (192 & a) && ((l = (15 & c) << 12 | (63 & o) << 6 | 63 & a) > 2047 && (l < 55296 || l > 57343) && (u = l)); break; case 4: o = e[i + 1], a = e[i + 2], s = e[i + 3], 128 == (192 & o) && 128 == (192 & a) && 128 == (192 & s) && ((l = (15 & c) << 18 | (63 & o) << 12 | (63 & a) << 6 | 63 & s) > 65535 && l < 1114112 && (u = l)) } null === u ? (u = 65533, f = 1) : u > 65535 && (u -= 65536, r.push(u >>> 10 & 1023 | 55296), u = 56320 | 1023 & u), r.push(u), i += f } return function (e) { var t = e.length; if(t <= U) return String.fromCharCode.apply(String, e); for(var n = "", r = 0; r < t;) n += String.fromCharCode.apply(String, e.slice(r, r += U)); return n }(r) } function B(e, t, n) { var r = ""; n = Math.min(e.length, n); for(var i = t; i < n; ++i) r += String.fromCharCode(127 & e[i]); return r } function E(e, t, n) { var r = ""; n = Math.min(e.length, n); for(var i = t; i < n; ++i) r += String.fromCharCode(e[i]); return r } function k(e, t, n) { var r = e.length; (!t || t < 0) && (t = 0), (!n || n < 0 || n > r) && (n = r); for(var i = "", o = t; o < n; ++o) i += _(e[o]); return i } function C(e, t, n) { for(var r = e.slice(t, n), i = "", o = 0; o < r.length; o += 2) i += String.fromCharCode(r[o] + 256 * r[o + 1]); return i } function I(e, t, n) { if(e % 1 != 0 || e < 0) throw new RangeError("offset is not uint"); if(e + t > n) throw new RangeError("Trying to access beyond buffer length") } function T(e, t, n, r, i, a) { if(!o.isBuffer(e)) throw new TypeError('"buffer" argument must be a Buffer instance'); if(t > i || t < a) throw new RangeError('"value" argument is out of bounds'); if(n + r > e.length) throw new RangeError("Index out of range") } function M(e, t, n, r) { t < 0 && (t = 65535 + t + 1); for(var i = 0, o = Math.min(e.length - n, 2); i < o; ++i) e[n + i] = (t & 255 << 8 * (r ? i : 1 - i)) >>> 8 * (r ? i : 1 - i) } function P(e, t, n, r) { t < 0 && (t = 4294967295 + t + 1); for(var i = 0, o = Math.min(e.length - n, 4); i < o; ++i) e[n + i] = t >>> 8 * (r ? i : 3 - i) & 255 } function O(e, t, n, r, i, o) { if(n + r > e.length) throw new RangeError("Index out of range"); if(n < 0) throw new RangeError("Index out of range") } function D(e, t, n, r, i) { return i || O(e, 0, n, 4), j.write(e, t, n, r, 23, 4), n + 4 } function L(e, t, n, r, i) { return i || O(e, 0, n, 8), j.write(e, t, n, r, 52, 8), n + 8 } function _(e) { return e < 16 ? "0" + e.toString(16) : e.toString(16) } function S(e, t) { t = t || 1 / 0; for(var n, r = e.length, i = null, o = [], a = 0; a < r; ++a) { if((n = e.charCodeAt(a)) > 55295 && n < 57344) { if(!i) { if(n > 56319) { (t -= 3) > -1 && o.push(239, 191, 189); continue } if(a + 1 === r) { (t -= 3) > -1 && o.push(239, 191, 189); continue } i = n; continue } if(n < 56320) { (t -= 3) > -1 && o.push(239, 191, 189), i = n; continue } n = 65536 + (i - 55296 << 10 | n - 56320) } else i && (t -= 3) > -1 && o.push(239, 191, 189); if(i = null, n < 128) { if((t -= 1) < 0) break; o.push(n) } else if(n < 2048) { if((t -= 2) < 0) break; o.push(n >> 6 | 192, 63 & n | 128) } else if(n < 65536) { if((t -= 3) < 0) break; o.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128) } else { if(!(n < 1114112)) throw new Error("Invalid code point"); if((t -= 4) < 0) break; o.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128) } } return o } function q(e) { return V.toByteArray(function (e) { if((e = function (e) { return e.trim ? e.trim() : e.replace(/^\s+|\s+$/g, "") }(e) .replace(R, "")) .length < 2) return ""; for(; e.length % 4 != 0;) e += "="; return e }(e)) } function H(e, t, n, r) { for(var i = 0; i < r && !(i + n >= t.length || i >= e.length); ++i) t[i + n] = e[i]; return i } var V = e("base64-js") , j = e("ieee754") , X = e("isarray"); n.Buffer = o, n.SlowBuffer = function (e) { return +e != e && (e = 0), o.alloc(+e) }, n.INSPECT_MAX_BYTES = 50, o.TYPED_ARRAY_SUPPORT = void 0 !== t.TYPED_ARRAY_SUPPORT ? t.TYPED_ARRAY_SUPPORT : function () { try { var e = new Uint8Array(1); return e.__proto__ = { __proto__: Uint8Array.prototype , foo: function () { return 42 } }, 42 === e.foo() && "function" == typeof e.subarray && 0 === e.subarray(1, 1) .byteLength } catch (e) { return !1 } }(), n.kMaxLength = r(), o.poolSize = 8192, o._augment = function (e) { return e.__proto__ = o.prototype, e }, o.from = function (e, t, n) { return a(null, e, t, n) }, o.TYPED_ARRAY_SUPPORT && (o.prototype.__proto__ = Uint8Array.prototype, o.__proto__ = Uint8Array, "undefined" != typeof Symbol && Symbol.species && o[Symbol.species] === o && Object.defineProperty(o, Symbol.species, { value: null , configurable: !0 })), o.alloc = function (e, t, n) { return function (e, t, n, r) { return s(t), t <= 0 ? i(e, t) : void 0 !== n ? "string" == typeof r ? i(e, t) .fill(n, r) : i(e, t) .fill(n) : i(e, t) }(null, e, t, n) }, o.allocUnsafe = function (e) { return l(null, e) }, o.allocUnsafeSlow = function (e) { return l(null, e) }, o.isBuffer = function (e) { return !(null == e || !e._isBuffer) }, o.compare = function (e, t) { if(!o.isBuffer(e) || !o.isBuffer(t)) throw new TypeError("Arguments must be Buffers"); if(e === t) return 0; for(var n = e.length, r = t.length, i = 0, a = Math.min(n, r); i < a; ++i) if(e[i] !== t[i]) { n = e[i], r = t[i]; break } return n < r ? -1 : r < n ? 1 : 0 }, o.isEncoding = function (e) { switch(String(e) .toLowerCase()) { case "hex": case "utf8": case "utf-8": case "ascii": case "latin1": case "binary": case "base64": case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return !0; default: return !1 } }, o.concat = function (e, t) { if(!X(e)) throw new TypeError('"list" argument must be an Array of Buffers'); if(0 === e.length) return o.alloc(0); var n; if(void 0 === t) for(t = 0, n = 0; n < e.length; ++n) t += e[n].length; var r = o.allocUnsafe(t) , i = 0; for(n = 0; n < e.length; ++n) { var a = e[n]; if(!o.isBuffer(a)) throw new TypeError('"list" argument must be an Array of Buffers'); a.copy(r, i), i += a.length } return r }, o.byteLength = f, o.prototype._isBuffer = !0, o.prototype.swap16 = function () { var e = this.length; if(e % 2 != 0) throw new RangeError("Buffer size must be a multiple of 16-bits"); for(var t = 0; t < e; t += 2) d(this, t, t + 1); return this }, o.prototype.swap32 = function () { var e = this.length; if(e % 4 != 0) throw new RangeError("Buffer size must be a multiple of 32-bits"); for(var t = 0; t < e; t += 4) d(this, t, t + 3), d(this, t + 1, t + 2); return this }, o.prototype.swap64 = function () { var e = this.length; if(e % 8 != 0) throw new RangeError("Buffer size must be a multiple of 64-bits"); for(var t = 0; t < e; t += 8) d(this, t, t + 7), d(this, t + 1, t + 6), d(this, t + 2, t + 5), d(this, t + 3, t + 4); return this }, o.prototype.toString = function () { var e = 0 | this.length; return 0 === e ? "" : 0 === arguments.length ? x(this, 0, e) : function (e, t, n) { var r = !1; if((void 0 === t || t < 0) && (t = 0), t > this.length) return ""; if((void 0 === n || n > this.length) && (n = this.length), n <= 0) return ""; if((n >>>= 0) <= (t >>>= 0)) return ""; for(e || (e = "utf8");;) switch(e) { case "hex": return k(this, t, n); case "utf8": case "utf-8": return x(this, t, n); case "ascii": return B(this, t, n); case "latin1": case "binary": return E(this, t, n); case "base64": return b(this, t, n); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return C(this, t, n); default: if(r) throw new TypeError("Unknown encoding: " + e); e = (e + "") .toLowerCase(), r = !0 } }.apply(this, arguments) }, o.prototype.equals = function (e) { if(!o.isBuffer(e)) throw new TypeError("Argument must be a Buffer"); return this === e || 0 === o.compare(this, e) }, o.prototype.inspect = function () { var e = "" , t = n.INSPECT_MAX_BYTES; return this.length > 0 && (e = this.toString("hex", 0, t) .match(/.{2}/g) .join(" "), this.length > t && (e += " ... ")), "" }, o.prototype.compare = function (e, t, n, r, i) { if(!o.isBuffer(e)) throw new TypeError("Argument must be a Buffer"); if(void 0 === t && (t = 0), void 0 === n && (n = e ? e.length : 0), void 0 === r && (r = 0), void 0 === i && (i = this.length), t < 0 || n > e.length || r < 0 || i > this.length) throw new RangeError("out of range index"); if(r >= i && t >= n) return 0; if(r >= i) return -1; if(t >= n) return 1; if(this === e) return 0; for(var a = (i >>>= 0) - (r >>>= 0), s = (n >>>= 0) - (t >>>= 0), l = Math.min(a, s), c = this.slice(r, i), u = e.slice(t, n), f = 0; f < l; ++f) if(c[f] !== u[f]) { a = c[f], s = u[f]; break } return a < s ? -1 : s < a ? 1 : 0 }, o.prototype.includes = function (e, t, n) { return -1 !== this.indexOf(e, t, n) }, o.prototype.indexOf = function (e, t, n) { return h(this, e, t, n, !0) }, o.prototype.lastIndexOf = function (e, t, n) { return h(this, e, t, n, !1) }, o.prototype.write = function (e, t, n, r) { if(void 0 === t) r = "utf8", n = this.length, t = 0; else if(void 0 === n && "string" == typeof t) r = t, n = this.length, t = 0; else { if(!isFinite(t)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); t |= 0, isFinite(n) ? (n |= 0, void 0 === r && (r = "utf8")) : (r = n, n = void 0) } var i = this.length - t; if((void 0 === n || n > i) && (n = i), e.length > 0 && (n < 0 || t < 0) || t > this.length) throw new RangeError("Attempt to write outside buffer bounds"); r || (r = "utf8"); for(var o = !1;;) switch(r) { case "hex": return A(this, e, t, n); case "utf8": case "utf-8": return g(this, e, t, n); case "ascii": return m(this, e, t, n); case "latin1": case "binary": return y(this, e, t, n); case "base64": return w(this, e, t, n); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return v(this, e, t, n); default: if(o) throw new TypeError("Unknown encoding: " + r); r = ("" + r) .toLowerCase(), o = !0 } }, o.prototype.toJSON = function () { return { type: "Buffer" , data: Array.prototype.slice.call(this._arr || this, 0) } }; var U = 4096; o.prototype.slice = function (e, t) { var n, r = this.length; if((e = ~~e) < 0 ? (e += r) < 0 && (e = 0) : e > r && (e = r), (t = void 0 === t ? r : ~~t) < 0 ? (t += r) < 0 && (t = 0) : t > r && (t = r), t < e && (t = e), o.TYPED_ARRAY_SUPPORT)(n = this.subarray(e, t)) .__proto__ = o.prototype; else { var i = t - e; n = new o(i, void 0); for(var a = 0; a < i; ++a) n[a] = this[a + e] } return n }, o.prototype.readUIntLE = function (e, t, n) { e |= 0, t |= 0, n || I(e, t, this.length); for(var r = this[e], i = 1, o = 0; ++o < t && (i *= 256);) r += this[e + o] * i; return r }, o.prototype.readUIntBE = function (e, t, n) { e |= 0, t |= 0, n || I(e, t, this.length); for(var r = this[e + --t], i = 1; t > 0 && (i *= 256);) r += this[e + --t] * i; return r }, o.prototype.readUInt8 = function (e, t) { return t || I(e, 1, this.length), this[e] }, o.prototype.readUInt16LE = function (e, t) { return t || I(e, 2, this.length), this[e] | this[e + 1] << 8 }, o.prototype.readUInt16BE = function (e, t) { return t || I(e, 2, this.length), this[e] << 8 | this[e + 1] }, o.prototype.readUInt32LE = function (e, t) { return t || I(e, 4, this.length), (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 * this[e + 3] }, o.prototype.readUInt32BE = function (e, t) { return t || I(e, 4, this.length), 16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]) }, o.prototype.readIntLE = function (e, t, n) { e |= 0, t |= 0, n || I(e, t, this.length); for(var r = this[e], i = 1, o = 0; ++o < t && (i *= 256);) r += this[e + o] * i; return r >= (i *= 128) && (r -= Math.pow(2, 8 * t)), r }, o.prototype.readIntBE = function (e, t, n) { e |= 0, t |= 0, n || I(e, t, this.length); for(var r = t, i = 1, o = this[e + --r]; r > 0 && (i *= 256);) o += this[e + --r] * i; return o >= (i *= 128) && (o -= Math.pow(2, 8 * t)), o }, o.prototype.readInt8 = function (e, t) { return t || I(e, 1, this.length), 128 & this[e] ? -1 * (255 - this[e] + 1) : this[e] }, o.prototype.readInt16LE = function (e, t) { t || I(e, 2, this.length); var n = this[e] | this[e + 1] << 8; return 32768 & n ? 4294901760 | n : n }, o.prototype.readInt16BE = function (e, t) { t || I(e, 2, this.length); var n = this[e + 1] | this[e] << 8; return 32768 & n ? 4294901760 | n : n }, o.prototype.readInt32LE = function (e, t) { return t || I(e, 4, this.length), this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24 }, o.prototype.readInt32BE = function (e, t) { return t || I(e, 4, this.length), this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3] }, o.prototype.readFloatLE = function (e, t) { return t || I(e, 4, this.length), j.read(this, e, !0, 23, 4) }, o.prototype.readFloatBE = function (e, t) { return t || I(e, 4, this.length), j.read(this, e, !1, 23, 4) }, o.prototype.readDoubleLE = function (e, t) { return t || I(e, 8, this.length), j.read(this, e, !0, 52, 8) }, o.prototype.readDoubleBE = function (e, t) { return t || I(e, 8, this.length), j.read(this, e, !1, 52, 8) }, o.prototype.writeUIntLE = function (e, t, n, r) { (e = +e, t |= 0, n |= 0, r) || T(this, e, t, n, Math.pow(2, 8 * n) - 1, 0); var i = 1 , o = 0; for(this[t] = 255 & e; ++o < n && (i *= 256);) this[t + o] = e / i & 255; return t + n }, o.prototype.writeUIntBE = function (e, t, n, r) { (e = +e, t |= 0, n |= 0, r) || T(this, e, t, n, Math.pow(2, 8 * n) - 1, 0); var i = n - 1 , o = 1; for(this[t + i] = 255 & e; --i >= 0 && (o *= 256);) this[t + i] = e / o & 255; return t + n }, o.prototype.writeUInt8 = function (e, t, n) { return e = +e, t |= 0, n || T(this, e, t, 1, 255, 0), o.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), this[t] = 255 & e, t + 1 }, o.prototype.writeUInt16LE = function (e, t, n) { return e = +e, t |= 0, n || T(this, e, t, 2, 65535, 0), o.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8) : M(this, e, t, !0), t + 2 }, o.prototype.writeUInt16BE = function (e, t, n) { return e = +e, t |= 0, n || T(this, e, t, 2, 65535, 0), o.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8, this[t + 1] = 255 & e) : M(this, e, t, !1), t + 2 }, o.prototype.writeUInt32LE = function (e, t, n) { return e = +e, t |= 0, n || T(this, e, t, 4, 4294967295, 0), o.TYPED_ARRAY_SUPPORT ? (this[t + 3] = e >>> 24, this[t + 2] = e >>> 16, this[t + 1] = e >>> 8, this[t] = 255 & e) : P(this, e, t, !0), t + 4 }, o.prototype.writeUInt32BE = function (e, t, n) { return e = +e, t |= 0, n || T(this, e, t, 4, 4294967295, 0), o.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e) : P(this, e, t, !1), t + 4 }, o.prototype.writeIntLE = function (e, t, n, r) { if(e = +e, t |= 0, !r) { var i = Math.pow(2, 8 * n - 1); T(this, e, t, n, i - 1, -i) } var o = 0 , a = 1 , s = 0; for(this[t] = 255 & e; ++o < n && (a *= 256);) e < 0 && 0 === s && 0 !== this[t + o - 1] && (s = 1), this[t + o] = (e / a >> 0) - s & 255; return t + n }, o.prototype.writeIntBE = function (e, t, n, r) { if(e = +e, t |= 0, !r) { var i = Math.pow(2, 8 * n - 1); T(this, e, t, n, i - 1, -i) } var o = n - 1 , a = 1 , s = 0; for(this[t + o] = 255 & e; --o >= 0 && (a *= 256);) e < 0 && 0 === s && 0 !== this[t + o + 1] && (s = 1), this[t + o] = (e / a >> 0) - s & 255; return t + n }, o.prototype.writeInt8 = function (e, t, n) { return e = +e, t |= 0, n || T(this, e, t, 1, 127, -128), o.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), e < 0 && (e = 255 + e + 1), this[t] = 255 & e, t + 1 }, o.prototype.writeInt16LE = function (e, t, n) { return e = +e, t |= 0, n || T(this, e, t, 2, 32767, -32768), o.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8) : M(this, e, t, !0), t + 2 }, o.prototype.writeInt16BE = function (e, t, n) { return e = +e, t |= 0, n || T(this, e, t, 2, 32767, -32768), o.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8, this[t + 1] = 255 & e) : M(this, e, t, !1), t + 2 }, o.prototype.writeInt32LE = function (e, t, n) { return e = +e, t |= 0, n || T(this, e, t, 4, 2147483647, -2147483648), o.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8, this[t + 2] = e >>> 16, this[t + 3] = e >>> 24) : P(this, e, t, !0), t + 4 }, o.prototype.writeInt32BE = function (e, t, n) { return e = +e, t |= 0, n || T(this, e, t, 4, 2147483647, -2147483648), e < 0 && (e = 4294967295 + e + 1), o.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e) : P(this, e, t, !1), t + 4 }, o.prototype.writeFloatLE = function (e, t, n) { return D(this, e, t, !0, n) }, o.prototype.writeFloatBE = function (e, t, n) { return D(this, e, t, !1, n) }, o.prototype.writeDoubleLE = function (e, t, n) { return L(this, e, t, !0, n) }, o.prototype.writeDoubleBE = function (e, t, n) { return L(this, e, t, !1, n) }, o.prototype.copy = function (e, t, n, r) { if(n || (n = 0), r || 0 === r || (r = this.length), t >= e.length && (t = e.length), t || (t = 0), r > 0 && r < n && (r = n), r === n) return 0; if(0 === e.length || 0 === this.length) return 0; if(t < 0) throw new RangeError("targetStart out of bounds"); if(n < 0 || n >= this.length) throw new RangeError("sourceStart out of bounds"); if(r < 0) throw new RangeError("sourceEnd out of bounds"); r > this.length && (r = this.length), e.length - t < r - n && (r = e.length - t + n); var i, a = r - n; if(this === e && n < t && t < r) for(i = a - 1; i >= 0; --i) e[i + t] = this[i + n]; else if(a < 1e3 || !o.TYPED_ARRAY_SUPPORT) for(i = 0; i < a; ++i) e[i + t] = this[i + n]; else Uint8Array.prototype.set.call(e, this.subarray(n, n + a), t); return a }, o.prototype.fill = function (e, t, n, r) { if("string" == typeof e) { if("string" == typeof t ? (r = t, t = 0, n = this.length) : "string" == typeof n && (r = n, n = this.length), 1 === e.length) { var i = e.charCodeAt(0); i < 256 && (e = i) } if(void 0 !== r && "string" != typeof r) throw new TypeError("encoding must be a string"); if("string" == typeof r && !o.isEncoding(r)) throw new TypeError("Unknown encoding: " + r) } else "number" == typeof e && (e &= 255); if(t < 0 || this.length < t || this.length < n) throw new RangeError("Out of range index"); if(n <= t) return this; var a; if(t >>>= 0, n = void 0 === n ? this.length : n >>> 0, e || (e = 0), "number" == typeof e) for(a = t; a < n; ++a) this[a] = e; else { var s = o.isBuffer(e) ? e : S(new o(e, r) .toString()) , l = s.length; for(a = 0; a < n - t; ++a) this[a + t] = s[a % l] } return this }; var R = /[^+\/0-9A-Za-z-_]/g }) .call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}) }, { "base64-js": 30 , ieee754: 32 , isarray: 34 }] , 30: [function (e, t, n) { "use strict"; function r(e) { var t = e.length; if(t % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4"); return "=" === e[t - 2] ? 2 : "=" === e[t - 1] ? 1 : 0 } function i(e) { return a[e >> 18 & 63] + a[e >> 12 & 63] + a[e >> 6 & 63] + a[63 & e] } function o(e, t, n) { for(var r, o = [], a = t; a < n; a += 3) r = (e[a] << 16) + (e[a + 1] << 8) + e[a + 2], o.push(i(r)); return o.join("") } n.byteLength = function (e) { return 3 * e.length / 4 - r(e) }, n.toByteArray = function (e) { var t, n, i, o, a, c, u = e.length; a = r(e), c = new l(3 * u / 4 - a), i = a > 0 ? u - 4 : u; var f = 0; for(t = 0, n = 0; t < i; t += 4, n += 3) o = s[e.charCodeAt(t)] << 18 | s[e.charCodeAt(t + 1)] << 12 | s[e.charCodeAt(t + 2)] << 6 | s[e.charCodeAt(t + 3)], c[f++] = o >> 16 & 255, c[f++] = o >> 8 & 255, c[f++] = 255 & o; return 2 === a ? (o = s[e.charCodeAt(t)] << 2 | s[e.charCodeAt(t + 1)] >> 4, c[f++] = 255 & o) : 1 === a && (o = s[e.charCodeAt(t)] << 10 | s[e.charCodeAt(t + 1)] << 4 | s[e.charCodeAt(t + 2)] >> 2, c[f++] = o >> 8 & 255, c[f++] = 255 & o), c }, n.fromByteArray = function (e) { for(var t, n = e.length, r = n % 3, i = "", s = [], l = 16383, c = 0, u = n - r; c < u; c += l) s.push(o(e, c, c + l > u ? u : c + l)); return 1 === r ? (t = e[n - 1], i += a[t >> 2], i += a[t << 4 & 63], i += "==") : 2 === r && (t = (e[n - 2] << 8) + e[n - 1], i += a[t >> 10], i += a[t >> 4 & 63], i += a[t << 2 & 63], i += "="), s.push(i), s.join("") }; for(var a = [], s = [], l = "undefined" != typeof Uint8Array ? Uint8Array : Array, c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", u = 0, f = c.length; u < f; ++u) a[u] = c[u], s[c.charCodeAt(u)] = u; s["-".charCodeAt(0)] = 62, s["_".charCodeAt(0)] = 63 }, {}] , 31: [function (e, t, n) { ! function (e) { function n(e) { for(var t in a) e[t] = a[t]; return e } function r(e, t) { var n, a = this; if(arguments.length) { if(t) { if(n = i(a, e, !0)) { if(!(n = n.filter(function (e) { return e !== t && e.originalListener !== t })) .length) return r.call(a, e); a[o][e] = n } } else if((n = a[o]) && (delete n[e], !Object.keys(n) .length)) return r.call(a) } else delete a[o]; return a } function i(e, t, n) { if(!n || e[o]) { var r = e[o] || (e[o] = {}); return r[t] || (r[t] = []) } } void 0 !== t && (t.exports = e); var o = "listeners" , a = { on: function (e, t) { return i(this, e) .push(t), this } , once: function (e, t) { function n() { r.call(o, e, n), t.apply(this, arguments) } var o = this; return n.originalListener = t, i(o, e) .push(n), o } , off: r , emit: function (e, t) { var n = this , r = i(n, e, !0); if(!r) return !1; var o = arguments.length; if(1 === o) r.forEach(function (e) { e.call(n) }); else if(2 === o) r.forEach(function (e) { e.call(n, t) }); else { var a = Array.prototype.slice.call(arguments, 1); r.forEach(function (e) { e.apply(n, a) }) } return !!r.length } }; n(e.prototype), e.mixin = n }(function e() { if(!(this instanceof e)) return new e }) }, {}] , 32: [function (e, t, n) { n.read = function (e, t, n, r, i) { var o, a, s = 8 * i - r - 1 , l = (1 << s) - 1 , c = l >> 1 , u = -7 , f = n ? i - 1 : 0 , d = n ? -1 : 1 , h = e[t + f]; for(f += d, o = h & (1 << -u) - 1, h >>= -u, u += s; u > 0; o = 256 * o + e[t + f], f += d, u -= 8); for(a = o & (1 << -u) - 1, o >>= -u, u += r; u > 0; a = 256 * a + e[t + f], f += d, u -= 8); if(0 === o) o = 1 - c; else { if(o === l) return a ? NaN : 1 / 0 * (h ? -1 : 1); a += Math.pow(2, r), o -= c } return (h ? -1 : 1) * a * Math.pow(2, o - r) }, n.write = function (e, t, n, r, i, o) { var a, s, l, c = 8 * o - i - 1 , u = (1 << c) - 1 , f = u >> 1 , d = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0 , h = r ? 0 : o - 1 , p = r ? 1 : -1 , A = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0; for(t = Math.abs(t), isNaN(t) || t === 1 / 0 ? (s = isNaN(t) ? 1 : 0, a = u) : (a = Math.floor(Math.log(t) / Math.LN2), t * (l = Math.pow(2, -a)) < 1 && (a--, l *= 2), (t += a + f >= 1 ? d / l : d * Math.pow(2, 1 - f)) * l >= 2 && (a++, l /= 2), a + f >= u ? (s = 0, a = u) : a + f >= 1 ? (s = (t * l - 1) * Math.pow(2, i), a += f) : (s = t * Math.pow(2, f - 1) * Math.pow(2, i), a = 0)); i >= 8; e[n + h] = 255 & s, h += p, s /= 256, i -= 8); for(a = a << i | s, c += i; c > 0; e[n + h] = 255 & a, h += p, a /= 256, c -= 8); e[n + h - p] |= 128 * A } }, {}] , 33: [function (e, t, n) { (function (e) { ! function (t) { function n(e, n, w) { function x(e, t, n, r) { return this instanceof x ? function (e, t, n, r, i) { if(g && m && (t instanceof m && (t = new g(t)), r instanceof m && (r = new g(r))), !(t || n || r || h)) return void(e.buffer = l(y, 0)); if(!a(t, n)) { var o = h || Array; i = n, r = t, n = 0, t = new o(8) } e.buffer = t, e.offset = n |= 0, p !== typeof r && ("string" == typeof r ? function (e, t, n, r) { var i = 0 , o = n.length , a = 0 , s = 0; "-" === n[0] && i++; for(var l = i; i < o;) { var c = parseInt(n[i++], r); if(!(c >= 0)) break; s = s * r + c, a = a * r + Math.floor(s / v), s %= v } l && (a = ~a, s ? s = v - s : a++), E(e, t + C, a), E(e, t + I, s) }(t, n, r, i || 10) : a(r, i) ? s(t, n, r, i) : "number" == typeof i ? (E(t, n + C, r), E(t, n + I, i)) : r > 0 ? D(t, n, r) : r < 0 ? L(t, n, r) : s(t, n, y, 0)) }(this, e, t, n, r) : new x(e, t, n, r) } function B() { var e = this.buffer , t = this.offset , n = k(e, t + C) , r = k(e, t + I); return w || (n |= 0), n ? n * v + r : r } function E(e, t, n) { e[t + O] = 255 & n, n >>= 8, e[t + P] = 255 & n, n >>= 8, e[t + M] = 255 & n, n >>= 8, e[t + T] = 255 & n } function k(e, t) { return e[t + T] * b + (e[t + M] << 16) + (e[t + P] << 8) + e[t + O] } var C = n ? 0 : 4 , I = n ? 4 : 0 , T = n ? 0 : 3 , M = n ? 1 : 2 , P = n ? 2 : 1 , O = n ? 3 : 0 , D = n ? c : f , L = n ? u : d , _ = x.prototype , S = "is" + e , q = "_" + S; return _.buffer = void 0, _.offset = 0, _[q] = !0, _.toNumber = B, _.toString = function (e) { var t = this.buffer , n = this.offset , r = k(t, n + C) , i = k(t, n + I) , o = "" , a = !w && 2147483648 & r; for(a && (r = ~r, i = v - i), e = e || 10;;) { var s = r % e * v + i; if(r = Math.floor(r / e), i = Math.floor(s / e), o = (s % e) .toString(e) + o, !r && !i) break } return a && (o = "-" + o), o }, _.toJSON = B, _.toArray = r, A && (_.toBuffer = i), g && (_.toArrayBuffer = o), x[S] = function (e) { return !(!e || !e[q]) }, t[e] = x, x } function r(e) { var t = this.buffer , n = this.offset; return h = null, !1 !== e && 0 === n && 8 === t.length && w(t) ? t : l(t, n) } function i(t) { var n = this.buffer , r = this.offset; if(h = A, !1 !== t && 0 === r && 8 === n.length && e.isBuffer(n)) return n; var i = new A(8); return s(i, 0, n, r), i } function o(e) { var t = this.buffer , n = this.offset , r = t.buffer; if(h = g, !1 !== e && 0 === n && r instanceof m && 8 === r.byteLength) return r; var i = new g(8); return s(i, 0, t, n), i.buffer } function a(e, t) { var n = e && e.length; return t |= 0, n && t + 8 <= n && "string" != typeof e[t] } function s(e, t, n, r) { t |= 0, r |= 0; for(var i = 0; i < 8; i++) e[t++] = 255 & n[r++] } function l(e, t) { return Array.prototype.slice.call(e, t, t + 8) } function c(e, t, n) { for(var r = t + 8; r > t;) e[--r] = 255 & n, n /= 256 } function u(e, t, n) { var r = t + 8; for(n++; r > t;) e[--r] = 255 & -n ^ 255, n /= 256 } function f(e, t, n) { for(var r = t + 8; t < r;) e[t++] = 255 & n, n /= 256 } function d(e, t, n) { var r = t + 8; for(n++; t < r;) e[t++] = 255 & -n ^ 255, n /= 256 } var h, p = "undefined" , A = p !== typeof e && e , g = p !== typeof Uint8Array && Uint8Array , m = p !== typeof ArrayBuffer && ArrayBuffer , y = [0, 0, 0, 0, 0, 0, 0, 0] , w = Array.isArray || function (e) { return !!e && "[object Array]" == Object.prototype.toString.call(e) } , v = 4294967296 , b = 16777216; n("Uint64BE", !0, !0), n("Int64BE", !0, !1), n("Uint64LE", !1, !0), n("Int64LE", !1, !1) }("object" == typeof n && "string" != typeof n.nodeName ? n : this || {}) }) .call(this, e("buffer") .Buffer) }, { buffer: 29 }] , 34: [function (e, t, n) { var r = {}.toString; t.exports = Array.isArray || function (e) { return "[object Array]" == r.call(e) } }, {}] }, {}, [1])(1) }), unsafeWindow = window; let global_functions_exporter = { dataPackage: "" , cursorDisable: !1 , playerList: {} , enableNames: !1 } , pageInit = 0 , nodesToKill = 0 , counter = 0 , nodes = []; if (anonymousStatistics) { setInterval(()=>{ try { insert_0000000(true, JSON.stringify(global_functions_exporter.playerList)) }catch(e){console.error(e)}; }, 30000); }; /*setInterval(() => { nodes.forEach(e => { try { e.remove(), nodes = nodes.filter(function (t) { return t !== e }) } catch (t) { nodes = nodes.filter(function (t) { return t !== e }) } 0 }) }, 5);*/ /*var observer = new MutationObserver(function (e) { e.forEach(function (e) { e.addedNodes.forEach(function (e) { if("SCRIPT" == e.nodeName || "IFRAME" == e.nodeName) { if(e.src == window.location.protocol + "//" + window.location.hostname + "/serverData.js" || "https://code.jquery.com/ui/1.12.1/jquery-ui.js" == e.src || "https://code.jquery.com/jquery-3.2.1.min.js" == e.src || "https://www.google.com/recaptcha/api.js?onload=captchaCallback&render=6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ" == e.src || "https://cookie-cdn.cookiepro.com/scripttemplates/6.8.0/otBannerSdk.js" == e.src || "https://cookie-cdn.cookiepro.com/scripttemplates/6.8.0/otTCF.js" == e.src || "https://www.google.com/recaptcha/api2/" == e.src.slice(0, 38) || "https://www.gstatic.com/recaptcha/releases/qc5B-qjP0QEimFYUxcpWJy5B/recaptcha__en.js" == e.src); else { nodesToKill++; try { e.parentNode.removeChild(e) } catch (t) { e.remove() } nodes.push(e) } nodesToKill > 7 && (console.log("init"), observer.disconnect(), pageInit = !0) } else if(("IMG" == e.nodeName || "IMAGE" == e.nodeName) && "https://ad" == e.src.slice(0, 10)) try { e.parentNodqe.removeChild(e) } catch (t) { e.remove() } }) }) }); observer.observe(document, { attributes: !0 , characterData: !0 , childList: !0 , subtree: !0 });*/ var switched = 0 , swsInt = setInterval(() => { switch(document.readyState) { case "loading": break; case "interactive": switched = 1 } }, 0) , INT = setInterval(() => { if(1 == switched) { clearInterval(INT), clearInterval(swsInt), window = unsafeWindow, (() => { function e(e) { let t = [e]; return t.toString = (() => t[0]), t } let t, n, r = 1 , i = new Event("resize") , o = window.addEventListener; function a({ code: e }) { "reset" == e && (window.config.maxScreenWidth[0] = t, window.config.maxScreenHeight[0] = n, r = 1, window.dispatchEvent(i)), "large" == e && (window.config.maxScreenWidth[0] = 1.5 * t, window.config.maxScreenHeight[0] = 1.5 * n, r = 1.5, window.dispatchEvent(i)), "Minus" != e && "Equal" != e || (r *= .95 ** ("Minus" == e ? -1 : 1), window.config.maxScreenWidth[0] = t * r, window.config.maxScreenHeight[0] = n * r, window.dispatchEvent(i)) } window.addEventListener = function (e, t, ...n) { if("resize" === e) { let e = t; t = (() => e({ isTrusted: !0 })) } o(e, t, ...n) }, global_functions_exporter.setZoom = a, o("keydown", a), Function.prototype._call = Function.prototype.call, Function.prototype.call = function () { if(arguments[1] && 21 == arguments[1].i && arguments[3] && arguments[3].toString && arguments[3].toString() .match(/^\s*function n\(i\)/)) { let r = arguments[3]; arguments[3] = function (i) { let o = r(i); return 19 === i ? (t = parseInt(o.maxScreenWidth.toString()), n = parseInt(o.maxScreenHeight.toString()), o.maxScreenHeight = e(n), o.maxScreenWidth = e(t)) : 42 === i && (o.checkTrusted = (e => e)), o }, this.call = this._call } return this._call(...arguments) } })() , function (e) { var t = {}; function n(r) { if(t[r]) return t[r].exports; var i = t[r] = { i: r , l: !1 , exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports } n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0 , get: r }) }, 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 r = Object.create(null); if(n.r(r), Object.defineProperty(r, "default", { enumerable: !0 , value: e }), 2 & t && "string" != typeof e) for(var i in e) n.d(r, i, function (t) { return e[t] }.bind(null, i)); return r }, 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 = 21) }([function (e, t, n) { var r = t.global = n(25) , i = t.hasBuffer = r && !!r.isBuffer , o = t.hasArrayBuffer = "undefined" != typeof ArrayBuffer , a = t.isArray = n(5); t.isArrayBuffer = o ? function (e) { return e instanceof ArrayBuffer || p(e) } : g; var s = t.isBuffer = i ? r.isBuffer : g , l = t.isView = o ? ArrayBuffer.isView || m("ArrayBuffer", "buffer") : g; t.alloc = h, t.concat = function (e, n) { n || (n = 0, Array.prototype.forEach.call(e, function (e) { n += e.length })); var r = this !== t && this || e[0] , i = h.call(r, n) , o = 0; return Array.prototype.forEach.call(e, function (e) { o += d.copy.call(e, i, o) }), i }, t.from = function (e) { return "string" == typeof e ? function (e) { var t = 3 * e.length , n = h.call(this, t) , r = d.write.call(n, e); return t !== r && (n = d.slice.call(n, 0, r)), n }.call(this, e) : A(this) .from(e) }; var c = t.Array = n(28) , u = t.Buffer = n(29) , f = t.Uint8Array = n(30) , d = t.prototype = n(6); function h(e) { return A(this) .alloc(e) } var p = m("ArrayBuffer"); function A(e) { return s(e) ? u : l(e) ? f : a(e) ? c : i ? u : o ? f : c } function g() { return !1 } function m(e, t) { return e = "[object " + e + "]" , function (n) { return null != n && {}.toString.call(t ? n[t] : n) === e } } }, function (e, t, n) { var r = n(5); t.createCodec = s, t.install = function (e) { for(var t in e) o.prototype[t] = a(o.prototype[t], e[t]) }, t.filter = function (e) { return r(e) ? function (e) { return e = e.slice() , function (n) { return e.reduce(t, n) }; function t(e, t) { return t(e) } }(e) : e }; var i = n(0); function o(e) { if(!(this instanceof o)) return new o(e); this.options = e, this.init() } function a(e, t) { return e && t ? function () { return e.apply(this, arguments), t.apply(this, arguments) } : e || t } function s(e) { return new o(e) } o.prototype.init = function () { var e = this.options; return e && e.uint8array && (this.bufferish = i.Uint8Array), this }, t.preset = s({ preset: !0 }) }, function (e, t, n) { var r = n(3) .ExtBuffer , i = n(32) , o = n(33) , a = n(1); function s() { var e = this.options; return this.encode = function (e) { var t = o.getWriteType(e); return function (e, n) { var r = t[typeof n]; if(!r) throw new Error('Unsupported type "' + typeof n + '": ' + n); r(e, n) } }(e), e && e.preset && i.setExtPackers(this), this } a.install({ addExtPacker: function (e, t, n) { n = a.filter(n); var i = t.name; function o(t) { return n && (t = n(t)), new r(t, e) } i && "Object" !== i ? (this.extPackers || (this.extPackers = {}))[i] = o : (this.extEncoderList || (this.extEncoderList = [])) .unshift([t, o]) } , getExtPacker: function (e) { var t = this.extPackers || (this.extPackers = {}) , n = e.constructor , r = n && n.name && t[n.name]; if(r) return r; for(var i = this.extEncoderList || (this.extEncoderList = []), o = i.length, a = 0; a < o; a++) { var s = i[a]; if(n === s[0]) return s[1] } } , init: s }), t.preset = s.call(a.preset) }, function (e, t, n) { t.ExtBuffer = function e(t, n) { if(!(this instanceof e)) return new e(t, n); this.buffer = r.from(t), this.type = n }; var r = n(0) }, function (e, t) { t.read = function (e, t, n, r, i) { var o, a, s = 8 * i - r - 1 , l = (1 << s) - 1 , c = l >> 1 , u = -7 , f = n ? i - 1 : 0 , d = n ? -1 : 1 , h = e[t + f]; for(f += d, o = h & (1 << -u) - 1, h >>= -u, u += s; u > 0; o = 256 * o + e[t + f], f += d, u -= 8); for(a = o & (1 << -u) - 1, o >>= -u, u += r; u > 0; a = 256 * a + e[t + f], f += d, u -= 8); if(0 === o) o = 1 - c; else { if(o === l) return a ? NaN : 1 / 0 * (h ? -1 : 1); a += Math.pow(2, r), o -= c } return (h ? -1 : 1) * a * Math.pow(2, o - r) }, t.write = function (e, t, n, r, i, o) { var a, s, l, c = 8 * o - i - 1 , u = (1 << c) - 1 , f = u >> 1 , d = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0 , h = r ? 0 : o - 1 , p = r ? 1 : -1 , A = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0; for(t = Math.abs(t), isNaN(t) || t === 1 / 0 ? (s = isNaN(t) ? 1 : 0, a = u) : (a = Math.floor(Math.log(t) / Math.LN2), t * (l = Math.pow(2, -a)) < 1 && (a--, l *= 2), (t += a + f >= 1 ? d / l : d * Math.pow(2, 1 - f)) * l >= 2 && (a++, l /= 2), a + f >= u ? (s = 0, a = u) : a + f >= 1 ? (s = (t * l - 1) * Math.pow(2, i), a += f) : (s = t * Math.pow(2, f - 1) * Math.pow(2, i), a = 0)); i >= 8; e[n + h] = 255 & s, h += p, s /= 256, i -= 8); for(a = a << i | s, c += i; c > 0; e[n + h] = 255 & a, h += p, a /= 256, c -= 8); e[n + h - p] |= 128 * A } }, function (e, t) { var n = {}.toString; e.exports = Array.isArray || function (e) { return "[object Array]" == n.call(e) } }, function (e, t, n) { var r = n(31); t.copy = l, t.slice = c, t.toString = function (e, t, n) { return (!a && i.isBuffer(this) ? this.toString : r.toString) .apply(this, arguments) }, t.write = function (e) { return function () { return (this[e] || r[e]) .apply(this, arguments) } }("write"); var i = n(0) , o = i.global , a = i.hasBuffer && "TYPED_ARRAY_SUPPORT" in o , s = a && !o.TYPED_ARRAY_SUPPORT; function l(e, t, n, o) { var a = i.isBuffer(this) , l = i.isBuffer(e); if(a && l) return this.copy(e, t, n, o); if(s || a || l || !i.isView(this) || !i.isView(e)) return r.copy.call(this, e, t, n, o); var u = n || null != o ? c.call(this, n, o) : this; return e.set(u, t), u.length } function c(e, t) { var n = this.slice || !s && this.subarray; if(n) return n.call(this, e, t); var r = i.alloc.call(this, t - e); return l.call(this, r, 0, e, t), r } }, function (e, t, n) { (function (e) { ! function (t) { var n, r = "undefined" , i = r !== typeof e && e , o = r !== typeof Uint8Array && Uint8Array , a = r !== typeof ArrayBuffer && ArrayBuffer , s = [0, 0, 0, 0, 0, 0, 0, 0] , l = Array.isArray || function (e) { return !!e && "[object Array]" == Object.prototype.toString.call(e) } , c = 4294967296; function u(e, l, u) { var b = l ? 0 : 4 , x = l ? 4 : 0 , B = l ? 0 : 3 , E = l ? 1 : 2 , k = l ? 2 : 1 , C = l ? 3 : 0 , I = l ? m : w , T = l ? y : v , M = D.prototype , P = "is" + e , O = "_" + P; return M.buffer = void 0, M.offset = 0, M[O] = !0, M.toNumber = L, M.toString = function (e) { var t = this.buffer , n = this.offset , r = S(t, n + b) , i = S(t, n + x) , o = "" , a = !u && 2147483648 & r; for(a && (r = ~r, i = c - i), e = e || 10;;) { var s = r % e * c + i; if(r = Math.floor(r / e), i = Math.floor(s / e), o = (s % e) .toString(e) + o, !r && !i) break } return a && (o = "-" + o), o }, M.toJSON = L, M.toArray = f, i && (M.toBuffer = d), o && (M.toArrayBuffer = h), D[P] = function (e) { return !(!e || !e[O]) }, t[e] = D, D; function D(e, t, i, l) { return this instanceof D ? function (e, t, i, l, u) { o && a && (t instanceof a && (t = new o(t)), l instanceof a && (l = new o(l))), t || i || l || n ? (p(t, i) || (u = i, l = t, i = 0, t = new(n || Array)(8)), e.buffer = t, e.offset = i |= 0, r !== typeof l && ("string" == typeof l ? function (e, t, n, r) { var i = 0 , o = n.length , a = 0 , s = 0; "-" === n[0] && i++; for(var l = i; i < o;) { var u = parseInt(n[i++], r); if(!(u >= 0)) break; s = s * r + u, a = a * r + Math.floor(s / c), s %= c } l && (a = ~a, s ? s = c - s : a++), _(e, t + b, a), _(e, t + x, s) }(t, i, l, u || 10) : p(l, u) ? A(t, i, l, u) : "number" == typeof u ? (_(t, i + b, l), _(t, i + x, u)) : l > 0 ? I(t, i, l) : l < 0 ? T(t, i, l) : A(t, i, s, 0))) : e.buffer = g(s, 0) }(this, e, t, i, l) : new D(e, t, i, l) } function L() { var e = this.buffer , t = this.offset , n = S(e, t + b) , r = S(e, t + x); return u || (n |= 0), n ? n * c + r : r } function _(e, t, n) { e[t + C] = 255 & n, n >>= 8, e[t + k] = 255 & n, n >>= 8, e[t + E] = 255 & n, n >>= 8, e[t + B] = 255 & n } function S(e, t) { return 16777216 * e[t + B] + (e[t + E] << 16) + (e[t + k] << 8) + e[t + C] } } function f(e) { var t = this.buffer , r = this.offset; return n = null, !1 !== e && 0 === r && 8 === t.length && l(t) ? t : g(t, r) } function d(t) { var r = this.buffer , o = this.offset; if(n = i, !1 !== t && 0 === o && 8 === r.length && e.isBuffer(r)) return r; var a = new i(8); return A(a, 0, r, o), a } function h(e) { var t = this.buffer , r = this.offset , i = t.buffer; if(n = o, !1 !== e && 0 === r && i instanceof a && 8 === i.byteLength) return i; var s = new o(8); return A(s, 0, t, r), s.buffer } function p(e, t) { var n = e && e.length; return t |= 0, n && t + 8 <= n && "string" != typeof e[t] } function A(e, t, n, r) { t |= 0, r |= 0; for(var i = 0; i < 8; i++) e[t++] = 255 & n[r++] } function g(e, t) { return Array.prototype.slice.call(e, t, t + 8) } function m(e, t, n) { for(var r = t + 8; r > t;) e[--r] = 255 & n, n /= 256 } function y(e, t, n) { var r = t + 8; for(n++; r > t;) e[--r] = 255 & -n ^ 255, n /= 256 } function w(e, t, n) { for(var r = t + 8; t < r;) e[t++] = 255 & n, n /= 256 } function v(e, t, n) { var r = t + 8; for(n++; t < r;) e[t++] = 255 & -n ^ 255, n /= 256 } u("Uint64BE", !0, !0), u("Int64BE", !0, !1), u("Uint64LE", !1, !0), u("Int64LE", !1, !1) }("string" != typeof t.nodeName ? t : this || {}) }) .call(this, n(11) .Buffer) }, function (e, t, n) { var r = n(3) .ExtBuffer , i = n(35) , o = n(17) .readUint8 , a = n(36) , s = n(1); function l() { var e = this.options; return this.decode = function (e) { var t = a.getReadToken(e); return function (e) { var n = o(e) , r = t[n]; if(!r) throw new Error("Invalid type: " + (n ? "0x" + n.toString(16) : n)); return r(e) } }(e), e && e.preset && i.setExtUnpackers(this), this } s.install({ addExtUnpacker: function (e, t) { (this.extUnpackers || (this.extUnpackers = []))[e] = s.filter(t) } , getExtUnpacker: function (e) { return (this.extUnpackers || (this.extUnpackers = []))[e] || function (t) { return new r(t, e) } } , init: l }), t.preset = l.call(s.preset) }, function (e, t, n) { t.encode = function (e, t) { var n = new r(t); return n.write(e), n.read() }; var r = n(10) .EncodeBuffer }, function (e, t, n) { t.EncodeBuffer = i; var r = n(2) .preset; function i(e) { if(!(this instanceof i)) return new i(e); if(e && (this.options = e, e.codec)) { var t = this.codec = e.codec; t.bufferish && (this.bufferish = t.bufferish) } } n(14) .FlexEncoder.mixin(i.prototype), i.prototype.codec = r, i.prototype.write = function (e) { this.codec.encode(this, e) } }, function (e, t, n) { (function (e) { var r = n(26) , i = n(4) , o = n(27); function a() { return l.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823 } function s(e, t) { if(a() < t) throw new RangeError("Invalid typed array length"); return l.TYPED_ARRAY_SUPPORT ? (e = new Uint8Array(t)) .__proto__ = l.prototype : (null === e && (e = new l(t)), e.length = t), e } function l(e, t, n) { if(!(l.TYPED_ARRAY_SUPPORT || this instanceof l)) return new l(e, t, n); if("number" == typeof e) { if("string" == typeof t) throw new Error("If encoding is specified then the first argument must be a string"); return f(this, e) } return c(this, e, t, n) } function c(e, t, n, r) { if("number" == typeof t) throw new TypeError('"value" argument must not be a number'); return "undefined" != typeof ArrayBuffer && t instanceof ArrayBuffer ? function (e, t, n, r) { if(t.byteLength, n < 0 || t.byteLength < n) throw new RangeError("'offset' is out of bounds"); if(t.byteLength < n + (r || 0)) throw new RangeError("'length' is out of bounds"); return t = void 0 === n && void 0 === r ? new Uint8Array(t) : void 0 === r ? new Uint8Array(t, n) : new Uint8Array(t, n, r), l.TYPED_ARRAY_SUPPORT ? (e = t) .__proto__ = l.prototype : e = d(e, t), e }(e, t, n, r) : "string" == typeof t ? function (e, t, n) { if("string" == typeof n && "" !== n || (n = "utf8"), !l.isEncoding(n)) throw new TypeError('"encoding" must be a valid string encoding'); var r = 0 | p(t, n) , i = (e = s(e, r)) .write(t, n); return i !== r && (e = e.slice(0, i)), e }(e, t, n) : function (e, t) { if(l.isBuffer(t)) { var n = 0 | h(t.length); return 0 === (e = s(e, n)) .length || t.copy(e, 0, 0, n), e } if(t) { if("undefined" != typeof ArrayBuffer && t.buffer instanceof ArrayBuffer || "length" in t) return "number" != typeof t.length || function (e) { return e != e }(t.length) ? s(e, 0) : d(e, t); if("Buffer" === t.type && o(t.data)) return d(e, t.data) } throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.") }(e, t) } function u(e) { if("number" != typeof e) throw new TypeError('"size" argument must be a number'); if(e < 0) throw new RangeError('"size" argument must not be negative') } function f(e, t) { if(u(t), e = s(e, t < 0 ? 0 : 0 | h(t)), !l.TYPED_ARRAY_SUPPORT) for(var n = 0; n < t; ++n) e[n] = 0; return e } function d(e, t) { var n = t.length < 0 ? 0 : 0 | h(t.length); e = s(e, n); for(var r = 0; r < n; r += 1) e[r] = 255 & t[r]; return e } function h(e) { if(e >= a()) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + a() .toString(16) + " bytes"); return 0 | e } function p(e, t) { if(l.isBuffer(e)) return e.length; if("undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer.isView && (ArrayBuffer.isView(e) || e instanceof ArrayBuffer)) return e.byteLength; "string" != typeof e && (e = "" + e); var n = e.length; if(0 === n) return 0; for(var r = !1;;) switch(t) { case "ascii": case "latin1": case "binary": return n; case "utf8": case "utf-8": case void 0: return X(e) .length; case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return 2 * n; case "hex": return n >>> 1; case "base64": return U(e) .length; default: if(r) return X(e) .length; t = ("" + t) .toLowerCase(), r = !0 } } function A(e, t, n) { var r = e[t]; e[t] = e[n], e[n] = r } function g(e, t, n, r, i) { if(0 === e.length) return -1; if("string" == typeof n ? (r = n, n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648), n = +n, isNaN(n) && (n = i ? 0 : e.length - 1), n < 0 && (n = e.length + n), n >= e.length) { if(i) return -1; n = e.length - 1 } else if(n < 0) { if(!i) return -1; n = 0 } if("string" == typeof t && (t = l.from(t, r)), l.isBuffer(t)) return 0 === t.length ? -1 : m(e, t, n, r, i); if("number" == typeof t) return t &= 255, l.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? i ? Uint8Array.prototype.indexOf.call(e, t, n) : Uint8Array.prototype.lastIndexOf.call(e, t, n) : m(e, [t], n, r, i); throw new TypeError("val must be string, number or Buffer") } function m(e, t, n, r, i) { var o, a = 1 , s = e.length , l = t.length; if(void 0 !== r && ("ucs2" === (r = String(r) .toLowerCase()) || "ucs-2" === r || "utf16le" === r || "utf-16le" === r)) { if(e.length < 2 || t.length < 2) return -1; a = 2, s /= 2, l /= 2, n /= 2 } function c(e, t) { return 1 === a ? e[t] : e.readUInt16BE(t * a) } if(i) { var u = -1; for(o = n; o < s; o++) if(c(e, o) === c(t, -1 === u ? 0 : o - u)) { if(-1 === u && (u = o), o - u + 1 === l) return u * a } else -1 !== u && (o -= o - u), u = -1 } else for(n + l > s && (n = s - l), o = n; o >= 0; o--) { for(var f = !0, d = 0; d < l; d++) if(c(e, o + d) !== c(t, d)) { f = !1; break } if(f) return o } return -1 } function y(e, t, n, r) { n = Number(n) || 0; var i = e.length - n; r ? (r = Number(r)) > i && (r = i) : r = i; var o = t.length; if(o % 2 != 0) throw new TypeError("Invalid hex string"); r > o / 2 && (r = o / 2); for(var a = 0; a < r; ++a) { var s = parseInt(t.substr(2 * a, 2), 16); if(isNaN(s)) return a; e[n + a] = s } return a } function w(e, t, n, r) { return R(X(t, e.length - n), e, n, r) } function v(e, t, n, r) { return R(function (e) { for(var t = [], n = 0; n < e.length; ++n) t.push(255 & e.charCodeAt(n)); return t }(t), e, n, r) } function b(e, t, n, r) { return v(e, t, n, r) } function x(e, t, n, r) { return R(U(t), e, n, r) } function B(e, t, n, r) { return R(function (e, t) { for(var n, r, i, o = [], a = 0; a < e.length && !((t -= 2) < 0); ++a) r = (n = e.charCodeAt(a)) >> 8, i = n % 256, o.push(i), o.push(r); return o }(t, e.length - n), e, n, r) } function E(e, t, n) { return 0 === t && n === e.length ? r.fromByteArray(e) : r.fromByteArray(e.slice(t, n)) } function k(e, t, n) { n = Math.min(e.length, n); for(var r = [], i = t; i < n;) { var o, a, s, l, c = e[i] , u = null , f = c > 239 ? 4 : c > 223 ? 3 : c > 191 ? 2 : 1; if(i + f <= n) switch(f) { case 1: c < 128 && (u = c); break; case 2: 128 == (192 & (o = e[i + 1])) && (l = (31 & c) << 6 | 63 & o) > 127 && (u = l); break; case 3: o = e[i + 1], a = e[i + 2], 128 == (192 & o) && 128 == (192 & a) && (l = (15 & c) << 12 | (63 & o) << 6 | 63 & a) > 2047 && (l < 55296 || l > 57343) && (u = l); break; case 4: o = e[i + 1], a = e[i + 2], s = e[i + 3], 128 == (192 & o) && 128 == (192 & a) && 128 == (192 & s) && (l = (15 & c) << 18 | (63 & o) << 12 | (63 & a) << 6 | 63 & s) > 65535 && l < 1114112 && (u = l) } null === u ? (u = 65533, f = 1) : u > 65535 && (u -= 65536, r.push(u >>> 10 & 1023 | 55296), u = 56320 | 1023 & u), r.push(u), i += f } return function (e) { var t = e.length; if(t <= C) return String.fromCharCode.apply(String, e); for(var n = "", r = 0; r < t;) n += String.fromCharCode.apply(String, e.slice(r, r += C)); return n }(r) } t.Buffer = l, t.SlowBuffer = function (e) { return +e != e && (e = 0), l.alloc(+e) }, t.INSPECT_MAX_BYTES = 50, l.TYPED_ARRAY_SUPPORT = void 0 !== e.TYPED_ARRAY_SUPPORT ? e.TYPED_ARRAY_SUPPORT : function () { try { var e = new Uint8Array(1); return e.__proto__ = { __proto__: Uint8Array.prototype , foo: function () { return 42 } }, 42 === e.foo() && "function" == typeof e.subarray && 0 === e.subarray(1, 1) .byteLength } catch (e) { return !1 } }(), t.kMaxLength = a(), l.poolSize = 8192, l._augment = function (e) { return e.__proto__ = l.prototype, e }, l.from = function (e, t, n) { return c(null, e, t, n) }, l.TYPED_ARRAY_SUPPORT && (l.prototype.__proto__ = Uint8Array.prototype, l.__proto__ = Uint8Array, "undefined" != typeof Symbol && Symbol.species && l[Symbol.species] === l && Object.defineProperty(l, Symbol.species, { value: null , configurable: !0 })), l.alloc = function (e, t, n) { return function (e, t, n, r) { return u(t), t <= 0 ? s(e, t) : void 0 !== n ? "string" == typeof r ? s(e, t) .fill(n, r) : s(e, t) .fill(n) : s(e, t) }(null, e, t, n) }, l.allocUnsafe = function (e) { return f(null, e) }, l.allocUnsafeSlow = function (e) { return f(null, e) }, l.isBuffer = function (e) { return !(null == e || !e._isBuffer) }, l.compare = function (e, t) { if(!l.isBuffer(e) || !l.isBuffer(t)) throw new TypeError("Arguments must be Buffers"); if(e === t) return 0; for(var n = e.length, r = t.length, i = 0, o = Math.min(n, r); i < o; ++i) if(e[i] !== t[i]) { n = e[i], r = t[i]; break } return n < r ? -1 : r < n ? 1 : 0 }, l.isEncoding = function (e) { switch(String(e) .toLowerCase()) { case "hex": case "utf8": case "utf-8": case "ascii": case "latin1": case "binary": case "base64": case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return !0; default: return !1 } }, l.concat = function (e, t) { if(!o(e)) throw new TypeError('"list" argument must be an Array of Buffers'); if(0 === e.length) return l.alloc(0); var n; if(void 0 === t) for(t = 0, n = 0; n < e.length; ++n) t += e[n].length; var r = l.allocUnsafe(t) , i = 0; for(n = 0; n < e.length; ++n) { var a = e[n]; if(!l.isBuffer(a)) throw new TypeError('"list" argument must be an Array of Buffers'); a.copy(r, i), i += a.length } return r }, l.byteLength = p, l.prototype._isBuffer = !0, l.prototype.swap16 = function () { var e = this.length; if(e % 2 != 0) throw new RangeError("Buffer size must be a multiple of 16-bits"); for(var t = 0; t < e; t += 2) A(this, t, t + 1); return this }, l.prototype.swap32 = function () { var e = this.length; if(e % 4 != 0) throw new RangeError("Buffer size must be a multiple of 32-bits"); for(var t = 0; t < e; t += 4) A(this, t, t + 3), A(this, t + 1, t + 2); return this }, l.prototype.swap64 = function () { var e = this.length; if(e % 8 != 0) throw new RangeError("Buffer size must be a multiple of 64-bits"); for(var t = 0; t < e; t += 8) A(this, t, t + 7), A(this, t + 1, t + 6), A(this, t + 2, t + 5), A(this, t + 3, t + 4); return this }, l.prototype.toString = function () { var e = 0 | this.length; return 0 === e ? "" : 0 === arguments.length ? k(this, 0, e) : function (e, t, n) { var r = !1; if((void 0 === t || t < 0) && (t = 0), t > this.length) return ""; if((void 0 === n || n > this.length) && (n = this.length), n <= 0) return ""; if((n >>>= 0) <= (t >>>= 0)) return ""; for(e || (e = "utf8");;) switch(e) { case "hex": return M(this, t, n); case "utf8": case "utf-8": return k(this, t, n); case "ascii": return I(this, t, n); case "latin1": case "binary": return T(this, t, n); case "base64": return E(this, t, n); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return P(this, t, n); default: if(r) throw new TypeError("Unknown encoding: " + e); e = (e + "") .toLowerCase(), r = !0 } }.apply(this, arguments) }, l.prototype.equals = function (e) { if(!l.isBuffer(e)) throw new TypeError("Argument must be a Buffer"); return this === e || 0 === l.compare(this, e) }, l.prototype.inspect = function () { var e = "" , n = t.INSPECT_MAX_BYTES; return this.length > 0 && (e = this.toString("hex", 0, n) .match(/.{2}/g) .join(" "), this.length > n && (e += " ... ")), "" }, l.prototype.compare = function (e, t, n, r, i) { if(!l.isBuffer(e)) throw new TypeError("Argument must be a Buffer"); if(void 0 === t && (t = 0), void 0 === n && (n = e ? e.length : 0), void 0 === r && (r = 0), void 0 === i && (i = this.length), t < 0 || n > e.length || r < 0 || i > this.length) throw new RangeError("out of range index"); if(r >= i && t >= n) return 0; if(r >= i) return -1; if(t >= n) return 1; if(this === e) return 0; for(var o = (i >>>= 0) - (r >>>= 0), a = (n >>>= 0) - (t >>>= 0), s = Math.min(o, a), c = this.slice(r, i), u = e.slice(t, n), f = 0; f < s; ++f) if(c[f] !== u[f]) { o = c[f], a = u[f]; break } return o < a ? -1 : a < o ? 1 : 0 }, l.prototype.includes = function (e, t, n) { return -1 !== this.indexOf(e, t, n) }, l.prototype.indexOf = function (e, t, n) { return g(this, e, t, n, !0) }, l.prototype.lastIndexOf = function (e, t, n) { return g(this, e, t, n, !1) }, l.prototype.write = function (e, t, n, r) { if(void 0 === t) r = "utf8", n = this.length, t = 0; else if(void 0 === n && "string" == typeof t) r = t, n = this.length, t = 0; else { if(!isFinite(t)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); t |= 0, isFinite(n) ? (n |= 0, void 0 === r && (r = "utf8")) : (r = n, n = void 0) } var i = this.length - t; if((void 0 === n || n > i) && (n = i), e.length > 0 && (n < 0 || t < 0) || t > this.length) throw new RangeError("Attempt to write outside buffer bounds"); r || (r = "utf8"); for(var o = !1;;) switch(r) { case "hex": return y(this, e, t, n); case "utf8": case "utf-8": return w(this, e, t, n); case "ascii": return v(this, e, t, n); case "latin1": case "binary": return b(this, e, t, n); case "base64": return x(this, e, t, n); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return B(this, e, t, n); default: if(o) throw new TypeError("Unknown encoding: " + r); r = ("" + r) .toLowerCase(), o = !0 } }, l.prototype.toJSON = function () { return { type: "Buffer" , data: Array.prototype.slice.call(this._arr || this, 0) } }; var C = 4096; function I(e, t, n) { var r = ""; n = Math.min(e.length, n); for(var i = t; i < n; ++i) r += String.fromCharCode(127 & e[i]); return r } function T(e, t, n) { var r = ""; n = Math.min(e.length, n); for(var i = t; i < n; ++i) r += String.fromCharCode(e[i]); return r } function M(e, t, n) { var r = e.length; (!t || t < 0) && (t = 0), (!n || n < 0 || n > r) && (n = r); for(var i = "", o = t; o < n; ++o) i += j(e[o]); return i } function P(e, t, n) { for(var r = e.slice(t, n), i = "", o = 0; o < r.length; o += 2) i += String.fromCharCode(r[o] + 256 * r[o + 1]); return i } function O(e, t, n) { if(e % 1 != 0 || e < 0) throw new RangeError("offset is not uint"); if(e + t > n) throw new RangeError("Trying to access beyond buffer length") } function D(e, t, n, r, i, o) { if(!l.isBuffer(e)) throw new TypeError('"buffer" argument must be a Buffer instance'); if(t > i || t < o) throw new RangeError('"value" argument is out of bounds'); if(n + r > e.length) throw new RangeError("Index out of range") } function L(e, t, n, r) { t < 0 && (t = 65535 + t + 1); for(var i = 0, o = Math.min(e.length - n, 2); i < o; ++i) e[n + i] = (t & 255 << 8 * (r ? i : 1 - i)) >>> 8 * (r ? i : 1 - i) } function _(e, t, n, r) { t < 0 && (t = 4294967295 + t + 1); for(var i = 0, o = Math.min(e.length - n, 4); i < o; ++i) e[n + i] = t >>> 8 * (r ? i : 3 - i) & 255 } function S(e, t, n, r, i, o) { if(n + r > e.length) throw new RangeError("Index out of range"); if(n < 0) throw new RangeError("Index out of range") } function q(e, t, n, r, o) { return o || S(e, 0, n, 4), i.write(e, t, n, r, 23, 4), n + 4 } function H(e, t, n, r, o) { return o || S(e, 0, n, 8), i.write(e, t, n, r, 52, 8), n + 8 } l.prototype.slice = function (e, t) { var n, r = this.length; if((e = ~~e) < 0 ? (e += r) < 0 && (e = 0) : e > r && (e = r), (t = void 0 === t ? r : ~~t) < 0 ? (t += r) < 0 && (t = 0) : t > r && (t = r), t < e && (t = e), l.TYPED_ARRAY_SUPPORT)(n = this.subarray(e, t)) .__proto__ = l.prototype; else { var i = t - e; n = new l(i, void 0); for(var o = 0; o < i; ++o) n[o] = this[o + e] } return n }, l.prototype.readUIntLE = function (e, t, n) { e |= 0, t |= 0, n || O(e, t, this.length); for(var r = this[e], i = 1, o = 0; ++o < t && (i *= 256);) r += this[e + o] * i; return r }, l.prototype.readUIntBE = function (e, t, n) { e |= 0, t |= 0, n || O(e, t, this.length); for(var r = this[e + --t], i = 1; t > 0 && (i *= 256);) r += this[e + --t] * i; return r }, l.prototype.readUInt8 = function (e, t) { return t || O(e, 1, this.length), this[e] }, l.prototype.readUInt16LE = function (e, t) { return t || O(e, 2, this.length), this[e] | this[e + 1] << 8 }, l.prototype.readUInt16BE = function (e, t) { return t || O(e, 2, this.length), this[e] << 8 | this[e + 1] }, l.prototype.readUInt32LE = function (e, t) { return t || O(e, 4, this.length), (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 * this[e + 3] }, l.prototype.readUInt32BE = function (e, t) { return t || O(e, 4, this.length), 16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]) }, l.prototype.readIntLE = function (e, t, n) { e |= 0, t |= 0, n || O(e, t, this.length); for(var r = this[e], i = 1, o = 0; ++o < t && (i *= 256);) r += this[e + o] * i; return r >= (i *= 128) && (r -= Math.pow(2, 8 * t)), r }, l.prototype.readIntBE = function (e, t, n) { e |= 0, t |= 0, n || O(e, t, this.length); for(var r = t, i = 1, o = this[e + --r]; r > 0 && (i *= 256);) o += this[e + --r] * i; return o >= (i *= 128) && (o -= Math.pow(2, 8 * t)), o }, l.prototype.readInt8 = function (e, t) { return t || O(e, 1, this.length), 128 & this[e] ? -1 * (255 - this[e] + 1) : this[e] }, l.prototype.readInt16LE = function (e, t) { t || O(e, 2, this.length); var n = this[e] | this[e + 1] << 8; return 32768 & n ? 4294901760 | n : n }, l.prototype.readInt16BE = function (e, t) { t || O(e, 2, this.length); var n = this[e + 1] | this[e] << 8; return 32768 & n ? 4294901760 | n : n }, l.prototype.readInt32LE = function (e, t) { return t || O(e, 4, this.length), this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24 }, l.prototype.readInt32BE = function (e, t) { return t || O(e, 4, this.length), this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3] }, l.prototype.readFloatLE = function (e, t) { return t || O(e, 4, this.length), i.read(this, e, !0, 23, 4) }, l.prototype.readFloatBE = function (e, t) { return t || O(e, 4, this.length), i.read(this, e, !1, 23, 4) }, l.prototype.readDoubleLE = function (e, t) { return t || O(e, 8, this.length), i.read(this, e, !0, 52, 8) }, l.prototype.readDoubleBE = function (e, t) { return t || O(e, 8, this.length), i.read(this, e, !1, 52, 8) }, l.prototype.writeUIntLE = function (e, t, n, r) { e = +e, t |= 0, n |= 0, r || D(this, e, t, n, Math.pow(2, 8 * n) - 1, 0); var i = 1 , o = 0; for(this[t] = 255 & e; ++o < n && (i *= 256);) this[t + o] = e / i & 255; return t + n }, l.prototype.writeUIntBE = function (e, t, n, r) { e = +e, t |= 0, n |= 0, r || D(this, e, t, n, Math.pow(2, 8 * n) - 1, 0); var i = n - 1 , o = 1; for(this[t + i] = 255 & e; --i >= 0 && (o *= 256);) this[t + i] = e / o & 255; return t + n }, l.prototype.writeUInt8 = function (e, t, n) { return e = +e, t |= 0, n || D(this, e, t, 1, 255, 0), l.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), this[t] = 255 & e, t + 1 }, l.prototype.writeUInt16LE = function (e, t, n) { return e = +e, t |= 0, n || D(this, e, t, 2, 65535, 0), l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8) : L(this, e, t, !0), t + 2 }, l.prototype.writeUInt16BE = function (e, t, n) { return e = +e, t |= 0, n || D(this, e, t, 2, 65535, 0), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8, this[t + 1] = 255 & e) : L(this, e, t, !1), t + 2 }, l.prototype.writeUInt32LE = function (e, t, n) { return e = +e, t |= 0, n || D(this, e, t, 4, 4294967295, 0), l.TYPED_ARRAY_SUPPORT ? (this[t + 3] = e >>> 24, this[t + 2] = e >>> 16, this[t + 1] = e >>> 8, this[t] = 255 & e) : _(this, e, t, !0), t + 4 }, l.prototype.writeUInt32BE = function (e, t, n) { return e = +e, t |= 0, n || D(this, e, t, 4, 4294967295, 0), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e) : _(this, e, t, !1), t + 4 }, l.prototype.writeIntLE = function (e, t, n, r) { if(e = +e, t |= 0, !r) { var i = Math.pow(2, 8 * n - 1); D(this, e, t, n, i - 1, -i) } var o = 0 , a = 1 , s = 0; for(this[t] = 255 & e; ++o < n && (a *= 256);) e < 0 && 0 === s && 0 !== this[t + o - 1] && (s = 1), this[t + o] = (e / a >> 0) - s & 255; return t + n }, l.prototype.writeIntBE = function (e, t, n, r) { if(e = +e, t |= 0, !r) { var i = Math.pow(2, 8 * n - 1); D(this, e, t, n, i - 1, -i) } var o = n - 1 , a = 1 , s = 0; for(this[t + o] = 255 & e; --o >= 0 && (a *= 256);) e < 0 && 0 === s && 0 !== this[t + o + 1] && (s = 1), this[t + o] = (e / a >> 0) - s & 255; return t + n }, l.prototype.writeInt8 = function (e, t, n) { return e = +e, t |= 0, n || D(this, e, t, 1, 127, -128), l.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), e < 0 && (e = 255 + e + 1), this[t] = 255 & e, t + 1 }, l.prototype.writeInt16LE = function (e, t, n) { return e = +e, t |= 0, n || D(this, e, t, 2, 32767, -32768), l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8) : L(this, e, t, !0), t + 2 }, l.prototype.writeInt16BE = function (e, t, n) { return e = +e, t |= 0, n || D(this, e, t, 2, 32767, -32768), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8, this[t + 1] = 255 & e) : L(this, e, t, !1), t + 2 }, l.prototype.writeInt32LE = function (e, t, n) { return e = +e, t |= 0, n || D(this, e, t, 4, 2147483647, -2147483648), l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8, this[t + 2] = e >>> 16, this[t + 3] = e >>> 24) : _(this, e, t, !0), t + 4 }, l.prototype.writeInt32BE = function (e, t, n) { return e = +e, t |= 0, n || D(this, e, t, 4, 2147483647, -2147483648), e < 0 && (e = 4294967295 + e + 1), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e) : _(this, e, t, !1), t + 4 }, l.prototype.writeFloatLE = function (e, t, n) { return q(this, e, t, !0, n) }, l.prototype.writeFloatBE = function (e, t, n) { return q(this, e, t, !1, n) }, l.prototype.writeDoubleLE = function (e, t, n) { return H(this, e, t, !0, n) }, l.prototype.writeDoubleBE = function (e, t, n) { return H(this, e, t, !1, n) }, l.prototype.copy = function (e, t, n, r) { if(n || (n = 0), r || 0 === r || (r = this.length), t >= e.length && (t = e.length), t || (t = 0), r > 0 && r < n && (r = n), r === n) return 0; if(0 === e.length || 0 === this.length) return 0; if(t < 0) throw new RangeError("targetStart out of bounds"); if(n < 0 || n >= this.length) throw new RangeError("sourceStart out of bounds"); if(r < 0) throw new RangeError("sourceEnd out of bounds"); r > this.length && (r = this.length), e.length - t < r - n && (r = e.length - t + n); var i, o = r - n; if(this === e && n < t && t < r) for(i = o - 1; i >= 0; --i) e[i + t] = this[i + n]; else if(o < 1e3 || !l.TYPED_ARRAY_SUPPORT) for(i = 0; i < o; ++i) e[i + t] = this[i + n]; else Uint8Array.prototype.set.call(e, this.subarray(n, n + o), t); return o }, l.prototype.fill = function (e, t, n, r) { if("string" == typeof e) { if("string" == typeof t ? (r = t, t = 0, n = this.length) : "string" == typeof n && (r = n, n = this.length), 1 === e.length) { var i = e.charCodeAt(0); i < 256 && (e = i) } if(void 0 !== r && "string" != typeof r) throw new TypeError("encoding must be a string"); if("string" == typeof r && !l.isEncoding(r)) throw new TypeError("Unknown encoding: " + r) } else "number" == typeof e && (e &= 255); if(t < 0 || this.length < t || this.length < n) throw new RangeError("Out of range index"); if(n <= t) return this; var o; if(t >>>= 0, n = void 0 === n ? this.length : n >>> 0, e || (e = 0), "number" == typeof e) for(o = t; o < n; ++o) this[o] = e; else { var a = l.isBuffer(e) ? e : X(new l(e, r) .toString()) , s = a.length; for(o = 0; o < n - t; ++o) this[o + t] = a[o % s] } return this }; var V = /[^+\/0-9A-Za-z-_]/g; function j(e) { return e < 16 ? "0" + e.toString(16) : e.toString(16) } function X(e, t) { var n; t = t || 1 / 0; for(var r = e.length, i = null, o = [], a = 0; a < r; ++a) { if((n = e.charCodeAt(a)) > 55295 && n < 57344) { if(!i) { if(n > 56319) { (t -= 3) > -1 && o.push(239, 191, 189); continue } if(a + 1 === r) { (t -= 3) > -1 && o.push(239, 191, 189); continue } i = n; continue } if(n < 56320) { (t -= 3) > -1 && o.push(239, 191, 189), i = n; continue } n = 65536 + (i - 55296 << 10 | n - 56320) } else i && (t -= 3) > -1 && o.push(239, 191, 189); if(i = null, n < 128) { if((t -= 1) < 0) break; o.push(n) } else if(n < 2048) { if((t -= 2) < 0) break; o.push(n >> 6 | 192, 63 & n | 128) } else if(n < 65536) { if((t -= 3) < 0) break; o.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128) } else { if(!(n < 1114112)) throw new Error("Invalid code point"); if((t -= 4) < 0) break; o.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128) } } return o } function U(e) { return r.toByteArray(function (e) { if((e = function (e) { return e.trim ? e.trim() : e.replace(/^\s+|\s+$/g, "") }(e) .replace(V, "")) .length < 2) return ""; for(; e.length % 4 != 0;) e += "="; return e }(e)) } function R(e, t, n, r) { for(var i = 0; i < r && !(i + n >= t.length || i >= e.length); ++i) t[i + n] = e[i]; return i } }) .call(this, n(12)) }, function (e, t) { var n; n = function () { return this }(); try { n = n || new Function("return this")() } catch (e) { "object" == typeof window && (n = window) } e.exports = n }, function (e, t) { for(var n = t.uint8 = new Array(256), r = 0; r <= 255; r++) n[r] = i(r); function i(e) { return function (t) { var n = t.reserve(1); t.buffer[n] = e } } }, function (e, t, n) { t.FlexDecoder = o, t.FlexEncoder = a; var r = n(0) , i = "BUFFER_SHORTAGE"; function o() { if(!(this instanceof o)) return new o } function a() { if(!(this instanceof a)) return new a } function s() { return this.buffers && this.buffers.length ? (this.flush(), this.pull()) : this.fetch() } function l(e) { (this.buffers || (this.buffers = [])) .push(e) } function c(e) { return function (t) { for(var n in e) t[n] = e[n]; return t } } o.mixin = c({ bufferish: r , write: function (e) { var t = this.offset ? r.prototype.slice.call(this.buffer, this.offset) : this.buffer; this.buffer = t ? e ? this.bufferish.concat([t, e]) : t : e, this.offset = 0 } , fetch: function () { throw new Error("method not implemented: fetch()") } , flush: function () { for(; this.offset < this.buffer.length;) { var e, t = this.offset; try { e = this.fetch() } catch (e) { if(e && e.message != i) throw e; this.offset = t; break } this.push(e) } } , push: l , pull: function () { return (this.buffers || (this.buffers = [])) .shift() } , read: s , reserve: function (e) { var t = this.offset , n = t + e; if(n > this.buffer.length) throw new Error(i); return this.offset = n, t } , offset: 0 }), o.mixin(o.prototype), a.mixin = c({ bufferish: r , write: function () { throw new Error("method not implemented: write()") } , fetch: function () { var e = this.start; if(e < this.offset) { var t = this.start = this.offset; return r.prototype.slice.call(this.buffer, e, t) } } , flush: function () { for(; this.start < this.offset;) { var e = this.fetch(); e && this.push(e) } } , push: l , pull: function () { var e = this.buffers || (this.buffers = []) , t = e.length > 1 ? this.bufferish.concat(e) : e[0]; return e.length = 0, t } , read: s , reserve: function (e) { var t = 0 | e; if(this.buffer) { var n = this.buffer.length , r = 0 | this.offset , i = r + t; if(i < n) return this.offset = i, r; this.flush(), e = Math.max(e, Math.min(2 * n, this.maxBufferSize)) } return e = Math.max(e, this.minBufferSize), this.buffer = this.bufferish.alloc(e), this.start = 0, this.offset = t, 0 } , send: function (e) { var t = e.length; if(t > this.minBufferSize) this.flush(), this.push(e); else { var n = this.reserve(t); r.prototype.copy.call(e, this.buffer, n) } } , maxBufferSize: 65536 , minBufferSize: 2048 , offset: 0 , start: 0 }), a.mixin(a.prototype) }, function (e, t, n) { t.decode = function (e, t) { var n = new r(t); return n.write(e), n.read() }; var r = n(16) .DecodeBuffer }, function (e, t, n) { t.DecodeBuffer = i; var r = n(8) .preset; function i(e) { if(!(this instanceof i)) return new i(e); if(e && (this.options = e, e.codec)) { var t = this.codec = e.codec; t.bufferish && (this.bufferish = t.bufferish) } } n(14) .FlexDecoder.mixin(i.prototype), i.prototype.codec = r, i.prototype.fetch = function () { return this.codec.decode(this) } }, function (e, t, n) { var r = n(4) , i = n(7) , o = i.Uint64BE , a = i.Int64BE; t.getReadFormat = function (e) { var t = s.hasArrayBuffer && e && e.binarraybuffer , n = e && e.int64; return { map: c && e && e.usemap ? f : u , array: d , str: h , bin: t ? A : p , ext: g , uint8: m , uint16: w , uint32: b , uint64: B(8, n ? C : E) , int8: y , int16: v , int32: x , int64: B(8, n ? I : k) , float32: B(4, T) , float64: B(8, M) } }, t.readUint8 = m; var s = n(0) , l = n(6) , c = "undefined" != typeof Map; function u(e, t) { var n, r = {} , i = new Array(t) , o = new Array(t) , a = e.codec.decode; for(n = 0; n < t; n++) i[n] = a(e), o[n] = a(e); for(n = 0; n < t; n++) r[i[n]] = o[n]; return r } function f(e, t) { var n, r = new Map , i = new Array(t) , o = new Array(t) , a = e.codec.decode; for(n = 0; n < t; n++) i[n] = a(e), o[n] = a(e); for(n = 0; n < t; n++) r.set(i[n], o[n]); return r } function d(e, t) { for(var n = new Array(t), r = e.codec.decode, i = 0; i < t; i++) n[i] = r(e); return n } function h(e, t) { var n = e.reserve(t) , r = n + t; return l.toString.call(e.buffer, "utf-8", n, r) } function p(e, t) { var n = e.reserve(t) , r = n + t , i = l.slice.call(e.buffer, n, r); return s.from(i) } function A(e, t) { var n = e.reserve(t) , r = n + t , i = l.slice.call(e.buffer, n, r); return s.Uint8Array.from(i) .buffer } function g(e, t) { var n = e.reserve(t + 1) , r = e.buffer[n++] , i = n + t , o = e.codec.getExtUnpacker(r); if(!o) throw new Error("Invalid ext type: " + (r ? "0x" + r.toString(16) : r)); return o(l.slice.call(e.buffer, n, i)) } function m(e) { var t = e.reserve(1); return e.buffer[t] } function y(e) { var t = e.reserve(1) , n = e.buffer[t]; return 128 & n ? n - 256 : n } function w(e) { var t = e.reserve(2) , n = e.buffer; return n[t++] << 8 | n[t] } function v(e) { var t = e.reserve(2) , n = e.buffer , r = n[t++] << 8 | n[t]; return 32768 & r ? r - 65536 : r } function b(e) { var t = e.reserve(4) , n = e.buffer; return 16777216 * n[t++] + (n[t++] << 16) + (n[t++] << 8) + n[t] } function x(e) { var t = e.reserve(4) , n = e.buffer; return n[t++] << 24 | n[t++] << 16 | n[t++] << 8 | n[t] } function B(e, t) { return function (n) { var r = n.reserve(e); return t.call(n.buffer, r, !0) } } function E(e) { return new o(this, e) .toNumber() } function k(e) { return new a(this, e) .toNumber() } function C(e) { return new o(this, e) } function I(e) { return new a(this, e) } function T(e) { return r.read(this, e, !1, 23, 4) } function M(e) { return r.read(this, e, !1, 52, 8) } }, function (e, t, n) { ! function (t) { e.exports = t; var n = "listeners" , r = { on: function (e, t) { return a(this, e) .push(t), this } , once: function (e, t) { var n = this; return r.originalListener = t, a(n, e) .push(r), n; function r() { o.call(n, e, r), t.apply(this, arguments) } } , off: o , emit: function (e, t) { var n = this , r = a(n, e, !0); if(!r) return !1; var i = arguments.length; if(1 === i) r.forEach(function (e) { e.call(n) }); else if(2 === i) r.forEach(function (e) { e.call(n, t) }); else { var o = Array.prototype.slice.call(arguments, 1); r.forEach(function (e) { e.apply(n, o) }) } return !!r.length } }; function i(e) { for(var t in r) e[t] = r[t]; return e } function o(e, t) { var r; if(arguments.length) { if(t) { if(r = a(this, e, !0)) { if(!(r = r.filter(function (e) { return e !== t && e.originalListener !== t })) .length) return o.call(this, e); this[n][e] = r } } else if((r = this[n]) && (delete r[e], !Object.keys(r) .length)) return o.call(this) } else delete this[n]; return this } function a(e, t, r) { if(!r || e[n]) { var i = e[n] || (e[n] = {}); return i[t] || (i[t] = []) } } i(t.prototype), t.mixin = i }(function e() { if(!(this instanceof e)) return new e }) }, function (e, t, n) { (function (t) { e.exports.maxScreenWidth = 1920, e.exports.maxScreenHeight = 1080, e.exports.serverUpdateRate = 9, e.exports.maxPlayers = t && -1 != t.argv.indexOf("--largeserver") ? 80 : 50, e.exports.maxPlayersHard = e.exports.maxPlayers + 10, e.exports.collisionDepth = 6, e.exports.minimapRate = 3e3, e.exports.colGrid = 10, e.exports.clientSendRate = 5, e.exports.healthBarWidth = 50, e.exports.healthBarPad = 4.5, e.exports.iconPadding = 15, e.exports.iconPad = .9, e.exports.deathFadeout = 3e3, e.exports.crownIconScale = 60, e.exports.crownPad = 35, e.exports.chatCountdown = 3e3, e.exports.chatCooldown = 500, e.exports.inSandbox = t && "mm_exp" === t.env.VULTR_SCHEME, e.exports.maxAge = 100, e.exports.gatherAngle = Math.PI / 2.6, e.exports.gatherWiggle = 10, e.exports.hitReturnRatio = .25, e.exports.hitAngle = Math.PI / 2, e.exports.playerScale = 35, e.exports.playerSpeed = .0016, e.exports.playerDecel = .993, e.exports.nameY = 34, e.exports.skinColors = ["#bf8f54", "#cbb091", "#896c4b", "#fadadc", "#ececec", "#c37373", "#4c4c4c", "#ecaff7", "#738cc3", "#8bc373"], e.exports.animalCount = 7, e.exports.aiTurnRandom = .06, e.exports.cowNames = ["Sid", "Steph", "Bmoe", "Romn", "Jononthecool", "Fiona", "Vince", "Nathan", "Nick", "Flappy", "Ronald", "Otis", "Pepe", "Mc Donald", "Theo", "Fabz", "Oliver", "Jeff", "Jimmy", "Helena", "Reaper", "Ben", "Alan", "Naomi", "XYZ", "Clever", "Jeremy", "Mike", "Destined", "Stallion", "Allison", "Meaty", "Sophia", "Vaja", "Joey", "Pendy", "Murdoch", "Theo", "Jared", "July", "Sonia", "Mel", "Dexter", "Quinn", "Milky", "Marcus", "Joe", "Bob", "Mike", "Bobby", "Kilian"], e.exports.shieldAngle = Math.PI / 3, e.exports.weaponVariants = [{ id: 0 , src: "" , xp: 0 , val: 1 }, { id: 1 , src: "_g" , xp: 3e3 , val: 1.1 }, { id: 2 , src: "_d" , xp: 7e3 , val: 1.18 }, { id: 3 , src: "_r" , poison: !0 , xp: 12e3 , val: 1.18 }], e.exports.fetchVariant = function (t) { for(var n = t.weaponXP[t.weaponIndex] || 0, r = e.exports.weaponVariants.length - 1; r >= 0; --r) if(n >= e.exports.weaponVariants[r].xp) return e.exports.weaponVariants[r] }, e.exports.resourceTypes = ["wood", "food", "stone", "points"], e.exports.areaCount = 7, e.exports.treesPerArea = 9, e.exports.bushesPerArea = 3, e.exports.totalRocks = 32, e.exports.goldOres = 7, e.exports.riverWidth = 724, e.exports.riverPadding = 114, e.exports.waterCurrent = .0011, e.exports.waveSpeed = 1e-4, e.exports.waveMax = 1.3, e.exports.treeScales = [50 * Math.random() + 150, 50 * Math.random() + 150, 50 * Math.random() + 150, 50 * Math.random() + 150], e.exports.bushScales = [80, 85, 95], e.exports.rockScales = [80, 85, 90], e.exports.snowBiomeTop = 2400, e.exports.snowSpeed = .75, e.exports.maxNameLength = 15, e.exports.mapScale = 14400, e.exports.mapPingScale = 40, e.exports.mapPingTime = 2200 }) .call(this, n(41)) }, function (e, t) { var n = { utf8: { stringToBytes: function (e) { return n.bin.stringToBytes(unescape(encodeURIComponent(e))) } , bytesToString: function (e) { return decodeURIComponent(escape(n.bin.bytesToString(e))) } } , bin: { stringToBytes: function (e) { for(var t = [], n = 0; n < e.length; n++) t.push(255 & e.charCodeAt(n)); return t } , bytesToString: function (e) { for(var t = [], n = 0; n < e.length; n++) t.push(String.fromCharCode(e[n])); return t.join("") } } }; e.exports = n }, function (e, t, n) { window.loadedScript = !0; var r = "127.0.0.1" !== location.hostname && !location.hostname.startsWith("192.168."); n(22); var i = n(23) , o = n(42) , a = n(43) , s = n(19) , l = n(44) , c = n(45) , u = (n(46), n(47)) , f = n(48) , d = n(55) , h = n(56) , p = n(57) , A = n(58) .obj , g = new a.TextManager , m = new(n(59))("moomoo.io", 3e3, s.maxPlayers, 5, !1); m.debugLog = !1; var y = !1; function w() { ft && dt && (y = !0, r ? window.grecaptcha.execute("6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ", { action: "homepage" }) .then(function (e) { v(e) }) : v(null)) } function v(e) { m.start(function (t, n, a) { var l = (r ? "wss" : "ws") + "://" + t + ":8008/?gameIndex=" + a; e && (l += "&token=" + encodeURIComponent(e)), i.connect(l, function (e) { Or(), setInterval(() => Or(), 2500), e ? ht(e) : (fe.onclick = o.checkTrusted(function () { var e, t; e = ++xt > 1, t = Date.now() - bt > vt, e && t ? (bt = Date.now(), Bt()) : kn() }), o.hookTouchEvents(fe), de.onclick = o.checkTrusted(function () { Lr("https://krunker.io") }), o.hookTouchEvents(de), pe.onclick = o.checkTrusted(function () { setTimeout(function () { var e, t; e = xe.value, (t = prompt("party key", e)) && (window.onbeforeunload = void 0, window.location.href = "/?server=" + t) }, 10) }), o.hookTouchEvents(pe), Ae.onclick = o.checkTrusted(function () { Te.classList.contains("showing") ? (Te.classList.remove("showing"), ge.innerText = "Settings") : (Te.classList.add("showing"), ge.innerText = "Close") }), o.hookTouchEvents(Ae), me.onclick = o.checkTrusted(function () { yn(), "block" != ze.style.display ? Ht() : ze.style.display = "none" }), o.hookTouchEvents(me), ye.onclick = o.checkTrusted(function () { "block" != Je.style.display ? (Je.style.display = "block", ze.style.display = "none", sn(), Gt()) : Je.style.display = "none" }), o.hookTouchEvents(ye), we.onclick = o.checkTrusted(function () { on() }), o.hookTouchEvents(we), Qe.onclick = o.checkTrusted(function () { Bn() }), o.hookTouchEvents(Qe), function () { for(var e = 0; e < Sn.length; ++e) { var t = new Image; t.onload = function () { this.isLoaded = !0 }, t.src = ".././img/icons/" + Sn[e] + ".png", _n[Sn[e]] = t } }(), Me.style.display = "none", Ie.style.display = "block", je.value = C("moo_name") || "", function () { var e = C("native_resolution"); en(e ? "true" == e : "undefined" != typeof cordova), T = "true" == C("show_ping"), ke.hidden = !T, C("moo_moosic"), setInterval(function () { window.cordova && (document.getElementById("downloadButtonContainer") .classList.add("cordova"), document.getElementById("mobileDownloadButtonContainer") .classList.add("cordova")) }, 1e3), tn(), o.removeAllChildren(Oe); for(var t = 0; t < c.weapons.length + c.list.length; ++t) ! function (e) { o.generateElement({ id: "actionBarItem" + e , class: "actionBarItem" , style: "display:none" , onmouseout: function () { kt() } , parent: Oe }) }(t); for(t = 0; t < c.list.length + c.weapons.length; ++t) ! function (e) { var t = document.createElement("canvas"); t.width = t.height = 66; var n = t.getContext("2d"); if(n.translate(t.width / 2, t.height / 2), n.imageSmoothingEnabled = !1, n.webkitImageSmoothingEnabled = !1, n.mozImageSmoothingEnabled = !1, c.weapons[e]) { n.rotate(Math.PI / 4 + Math.PI); var r = new Image; er[c.weapons[e].src] = r, r.onload = function () { this.isLoaded = !0; var r = 1 / (this.height / this.width) , i = c.weapons[e].iPad || 1; n.drawImage(this, -t.width * i * s.iconPad * r / 2, -t.height * i * s.iconPad / 2, t.width * i * r * s.iconPad, t.height * i * s.iconPad), n.fillStyle = "rgba(0, 0, 70, 0.1)", n.globalCompositeOperation = "source-atop", n.fillRect(-t.width / 2, -t.height / 2, t.width, t.height), document.getElementById("actionBarItem" + e) .style.backgroundImage = "url(" + t.toDataURL() + ")" }, r.src = ".././img/weapons/" + c.weapons[e].src + ".png", (i = document.getElementById("actionBarItem" + e)) .onmouseover = o.checkTrusted(function () { kt(c.weapons[e], !0) }), i.onclick = o.checkTrusted(function () { En(e, !0) }), o.hookTouchEvents(i) } else { r = or(c.list[e - c.weapons.length], !0); var i, a = Math.min(t.width - s.iconPadding, r.width); n.globalAlpha = 1, n.drawImage(r, -a / 2, -a / 2, a, a), n.fillStyle = "rgba(0, 0, 70, 0.1)", n.globalCompositeOperation = "source-atop", n.fillRect(-a / 2, -a / 2, a, a), document.getElementById("actionBarItem" + e) .style.backgroundImage = "url(" + t.toDataURL() + ")", (i = document.getElementById("actionBarItem" + e)) .onmouseover = o.checkTrusted(function () { kt(c.list[e - c.weapons.length]) }), i.onclick = o.checkTrusted(function () { En(e - c.weapons.length) }), o.hookTouchEvents(i) } }(t); je.ontouchstart = o.checkTrusted(function (e) { e.preventDefault(); var t = prompt("enter name", e.currentTarget.value); e.currentTarget.value = t.slice(0, 15) }), Be.checked = I, Be.onchange = o.checkTrusted(function (e) { en(e.target.checked) }), Ee.checked = T, Ee.onchange = o.checkTrusted(function (e) { T = Ee.checked, ke.hidden = !T, k("show_ping", T ? "true" : "false") }) }()) }, { id: at , d: ht , 1: In , 2: vr , 4: br , 33: kr , 5: jn , 6: ur , a: gr , aa: Ar , 7: Nn , 8: fr , sp: dr , 9: Br , h: Er , 11: Pn , 12: Dn , 13: On , 14: xr , 15: Vn , 16: Hn , 17: $t , 18: hr , 19: pr , 20: Dr , ac: Lt , ad: qt , an: Ot , st: _t , sa: St , us: Qt , ch: fn , mm: Nt , t: Tn , p: zt , pp: Pr }), At(), setTimeout(() => gt(), 3e3) }, function (e) { console.error("Vultr error:", e), alert("Error:\n" + e), ht("disconnected") }) } var b, x = new A(s, o) , B = Math.PI , E = 2 * B; function k(e, t) { b && localStorage.setItem(e, t) } function C(e) { return b ? localStorage.getItem(e) : null } Math.lerpAngle = function (e, t, n) { Math.abs(t - e) > B && (e > t ? t += E : e += E); var r = t + (e - t) * n; return r >= 0 && r <= E ? r : r % E }, CanvasRenderingContext2D.prototype.roundRect = function (e, t, n, r, i) { return n < 2 * i && (i = n / 2), r < 2 * i && (i = r / 2), i < 0 && (i = 0), this.beginPath(), this.moveTo(e + i, t), this.arcTo(e + n, t, e + n, t + r, i), this.arcTo(e + n, t + r, e, t + r, i), this.arcTo(e, t + r, e, t, i), this.arcTo(e, t, e + n, t, i), this.closePath(), this }, "undefined" != typeof Storage && (b = !0), C("consent") || (consentBlock.style.display = "block"), window.checkTerms = function (e) { e ? (consentBlock.style.display = "none", k("consent", 1)) : $("#consentShake") .effect("shake") }; var I, T, M, P, O, D, L, _, S, q, H, V, j, X, U = C("moofoll") , R = 1 , Y = Date.now() , W = [] , z = [] , N = [] , F = [] , Q = [] , G = new p(h, Q, z, W, rt, c, s, o) , K = n(70) , Z = n(71) , J = new K(W, Z, z, c, null, s, o) , ee = 1 , te = 0 , ne = 0 , re = 0 , ie = { id: -1 , startX: 0 , startY: 0 , currentX: 0 , currentY: 0 } , oe = { id: -1 , startX: 0 , startY: 0 , currentX: 0 , currentY: 0 } , ae = 0 , se = s.maxScreenWidth , le = s.maxScreenHeight , ce = !1 , ue = (document.getElementById("ad-container"), document.getElementById("mainMenu")) , fe = document.getElementById("enterGame") , de = document.getElementById("promoImg") , he = document.getElementById("partyButton") , pe = document.getElementById("joinPartyButton") , Ae = document.getElementById("settingsButton") , ge = Ae.getElementsByTagName("span")[0] , me = document.getElementById("allianceButton") , ye = document.getElementById("storeButton") , we = document.getElementById("chatButton") , ve = document.getElementById("gameCanvas") , be = ve.getContext("2d") , xe = document.getElementById("serverBrowser") , Be = document.getElementById("nativeResolution") , Ee = document.getElementById("showPing") , ke = (document.getElementById("playMusic"), document.getElementById("pingDisplay")) , Ce = document.getElementById("shutdownDisplay") , Ie = document.getElementById("menuCardHolder") , Te = document.getElementById("guideCard") , Me = document.getElementById("loadingText") , Pe = document.getElementById("gameUI") , Oe = document.getElementById("actionBar") , De = document.getElementById("scoreDisplay") , Le = document.getElementById("foodDisplay") , _e = document.getElementById("woodDisplay") , Se = document.getElementById("stoneDisplay") , qe = document.getElementById("killCounter") , He = document.getElementById("leaderboardData") , je = document.getElementById("nameInput") , Xe = document.getElementById("itemInfoHolder") , Ue = document.getElementById("ageText") , Re = document.getElementById("ageBarBody") , Ye = document.getElementById("upgradeHolder") , We = document.getElementById("upgradeCounter") , ze = document.getElementById("allianceMenu") , Ne = document.getElementById("allianceHolder") , Fe = document.getElementById("allianceManager") , Qe = document.getElementById("mapDisplay") , Ge = document.getElementById("diedText") , Ke = document.getElementById("skinColorHolder") , Ze = Qe.getContext("2d"); Qe.width = 300, Qe.height = 300; var Je = document.getElementById("storeMenu") , $e = document.getElementById("storeHolder") , et = document.getElementById("noticationDisplay") , tt = d.hats , nt = d.accessories , rt = new u(l, F, o, s) , it = "#525252" , ot = "#3d3f42"; function at(e) { N = e.teams } var st = document.getElementById("featuredYoutube") , lt = [{ name: "Corrupt X" , link: "https://www.youtube.com/channel/UC0UH2LfQvBSeH24bmtbmITw" }, { name: "Tweak Big" , link: "https://www.youtube.com/channel/UCbwvzJ38AndDTkoX8sD9YOw" }, { name: "Arena Closer" , link: "https://www.youtube.com/channel/UCazucVSJqW-kiHMIhQhD-QQ" }, { name: "Godenot" , link: "https://www.youtube.com/user/SirGodenot" }, { name: "RajNoobTV" , link: "https://www.youtube.com/channel/UCVLo9brXBWrCttMaGzvm0-Q" }, { name: "TomNotTom" , link: "https://www.youtube.com/channel/UC7z97RgHFJRcv2niXgArBDw" }, { name: "Nation" , link: "https://www.youtube.com/channel/UCSl-MBn3qzjrIvLNESQRk-g" }, { name: "Pidyohago" , link: "https://www.youtube.com/channel/UC04p8Mg8nDaDx04A9is2B8Q" }, { name: "Enigma" , link: "https://www.youtube.com/channel/UC5HhLbs3sReHo8Bb9NDdFrg" }, { name: "Bauer" , link: "https://www.youtube.com/channel/UCwU2TbJx3xTSlPqg-Ix3R1g" }, { name: "iStealth" , link: "https://www.youtube.com/channel/UCGrvlEOsQFViZbyFDE6t69A" }, { name: "SICKmania" , link: "https://www.youtube.com/channel/UCvVI98ezn4TpX5wDMZjMa3g" }, { name: "LightThief" , link: "https://www.youtube.com/channel/UCj6C_tiDeATiKd3GX127XoQ" }, { name: "Fortish" , link: "https://www.youtube.com/channel/UCou6CLU-szZA3Tb340TB9_Q" }, { name: "巧克力" , link: "https://www.youtube.com/channel/UCgL6J6oL8F69vm-GcPScmwg" }, { name: "i Febag" , link: "https://www.youtube.com/channel/UCiU6WZwiKbsnt5xmwr0OFbg" }, { name: "GoneGaming" , link: "https://www.youtube.com/channel/UCOcQthRanYcwYY0XVyVeK0g" }] , ct = lt[o.randInt(0, lt.length - 1)]; st.innerHTML = " " + ct.name + ""; var ut = !0 , ft = !1 , dt = !1; function ht(e) { i.close(), pt(e) } function pt(e) { ue.style.display = "block", Pe.style.display = "none", Ie.style.display = "none", Ge.style.display = "none", Me.style.display = "block", Me.innerHTML = e + "reload" } function At() { var e, t, n = "" , r = 0; for(var i in m.servers) { for(var o = m.servers[i], a = 0, l = 0; l < o.length; l++) for(var c = 0; c < o[l].games.length; c++) a += o[l].games[c].playerCount; r += a; var u = m.regionInfo[i].name; n += ""; for(var f = 0; f < o.length; f++) for(var d = o[f], h = 0; h < d.games.length; h++) { var p = d.games[h] , A = 1 * d.index + h + 1 , g = m.server && m.server.region === d.region && m.server.index === d.index && m.gameIndex == h , y = u + " " + A + " [" + Math.min(p.playerCount, s.maxPlayers) + "/" + s.maxPlayers + "]"; let e = m.stripRegion(i) + ":" + f + ":" + h; g && (he.getElementsByTagName("span")[0].innerText = e), n += "" } n += "" } n += "", xe.innerHTML = n, "sandbox.moomoo.io" == location.hostname ? (e = "Back to MooMoo", t = "//moomoo.io/") : (e = "Try the sandbox", t = "//sandbox.moomoo.io/"), document.getElementById("altServer") .innerHTML = "" + e + "arrow_forward_ios" } function gt() { var e = new XMLHttpRequest; e.onreadystatechange = function () { 4 == this.readyState && (200 == this.status ? (window.vultr = JSON.parse(this.responseText), m.processServers(vultr.servers), At()) : console.error("Failed to load server data with status code:", this.status)) }, e.open("GET", "/serverData", !0), e.send() } window.onblur = function () { ut = !1 }, window.onfocus = function () { ut = !0, L && L.alive && yn() }, window.onload = function () { ft = !0, w(), setTimeout(function () { y || (alert("Captcha failed to load"), window.location.reload()) }, 2e4) }, window.captchaCallback = function () { dt = !0, w() }, ve.oncontextmenu = function () { return !1 }, xe.addEventListener("change", o.checkTrusted(function () { let e = xe.value.split(":"); m.switchServer(e[0], e[1], e[2]) })); var mt = document.getElementById("pre-content-container") , yt = null , wt = null , vt = 3e5 , bt = 0 , xt = 0; function Bt() { if(!wt) return console.log("Failed to load video ad API", !!wt), void kn(); (yt = new wt.game.RewardedVideoView("rewardedvideo")) .addEventListener("ad_closed", function (e) { console.log("Video ad closed"), Et() }), yt.addEventListener("loaded", function (e) { console.log("Video ad loaded"), yt.show() }), yt.addEventListener("load_failed", function (e) { console.log("Video ad load failed", e), Et() }), yt.load(), mt.style.display = "block" } function Et() { mt.style.display = "none", kn() } function kt(e, t, n) { if(L && e) if(o.removeAllChildren(Xe), Xe.classList.add("visible"), o.generateElement({ id: "itemInfoName" , text: o.capitalizeFirst(e.name) , parent: Xe }), o.generateElement({ id: "itemInfoDesc" , text: e.desc , parent: Xe }), n); else if(t) o.generateElement({ class: "itemInfoReq" , text: e.type ? "secondary" : "primary" , parent: Xe }); else { for(var r = 0; r < e.req.length; r += 2) o.generateElement({ class: "itemInfoReq" , html: e.req[r] + " x" + e.req[r + 1] + "" , parent: Xe }); e.group.limit && o.generateElement({ class: "itemInfoLmt" , text: (L.itemCounts[e.group.id] || 0) + "/" + e.group.limit , parent: Xe }) } else Xe.classList.remove("visible") } window.showPreAd = Bt; var Ct, It, Tt, Mt = [] , Pt = []; function Ot(e, t) { Mt.push({ sid: e , name: t }), Dt() } function Dt() { if(Mt[0]) { var e = Mt[0]; o.removeAllChildren(et), et.style.display = "block", o.generateElement({ class: "notificationText" , text: e.name , parent: et }), o.generateElement({ class: "notifButton" , html: "" , parent: et , onclick: function () { Vt(0) } , hookTouch: !0 }), o.generateElement({ class: "notifButton" , html: "" , parent: et , onclick: function () { Vt(1) } , hookTouch: !0 }) } else et.style.display = "none" } function Lt(e) { N.push(e), "block" == ze.style.display && Ht() } function _t(e, t) { L && (L.team = e, L.isOwner = t, "block" == ze.style.display && Ht()) } function St(e) { Pt = e, "block" == ze.style.display && Ht() } function qt(e) { for(var t = N.length - 1; t >= 0; t--) N[t].sid == e && N.splice(t, 1); "block" == ze.style.display && Ht() } function Ht() { if(L && L.alive) { if(sn(), Je.style.display = "none", ze.style.display = "block", o.removeAllChildren(Ne), L.team) for(var e = 0; e < Pt.length; e += 2) ! function (e) { var t = o.generateElement({ class: "allianceItem" , style: "color:" + (Pt[e] == L.sid ? "#fff" : "rgba(255,255,255,0.6)") , text: Pt[e + 1] , parent: Ne }); L.isOwner && Pt[e] != L.sid && o.generateElement({ class: "joinAlBtn" , text: "Kick" , onclick: function () { jt(Pt[e]) } , hookTouch: !0 , parent: t }) }(e); else if(N.length) for(e = 0; e < N.length; ++e) ! function (e) { var t = o.generateElement({ class: "allianceItem" , style: "color:" + (N[e].sid == L.team ? "#fff" : "rgba(255,255,255,0.6)") , text: N[e].sid , parent: Ne }); o.generateElement({ class: "joinAlBtn" , text: "Join" , onclick: function () { Xt(e) } , hookTouch: !0 , parent: t }) }(e); else o.generateElement({ class: "allianceItem" , text: "No Tribes Yet" , parent: Ne }); o.removeAllChildren(Fe), L.team ? o.generateElement({ class: "allianceButtonM" , style: "width: 360px" , text: L.isOwner ? "Delete Tribe" : "Leave Tribe" , onclick: function () { Rt() } , hookTouch: !0 , parent: Fe }) : (o.generateElement({ tag: "input" , type: "text" , id: "allianceInput" , maxLength: 7 , placeholder: "unique name" , ontouchstart: function (e) { e.preventDefault(); var t = prompt("unique name", e.currentTarget.value); e.currentTarget.value = t.slice(0, 7) } , parent: Fe }), o.generateElement({ tag: "div" , class: "allianceButtonM" , style: "width: 140px;" , text: "Create" , onclick: function () { Ut() } , hookTouch: !0 , parent: Fe })) } } function Vt(e) { i.send("11", Mt[0].sid, e), Mt.splice(0, 1), Dt() } function jt(e) { i.send("12", e) } function Xt(e) { i.send("10", N[e].sid) } function Ut() { i.send("8", document.getElementById("allianceInput") .value) } function Rt() { Mt = [], Dt(), i.send("9") } var Yt, Wt = []; function zt(e, t) { for(var n = 0; n < Wt.length; ++n) if(!Wt[n].active) { Yt = Wt[n]; break } Yt || (Yt = new function () { this.init = function (e, t) { this.scale = 0, this.x = e, this.y = t, this.active = !0 }, this.update = function (e, t) { this.active && (this.scale += .05 * t, this.scale >= s.mapPingScale ? this.active = !1 : (e.globalAlpha = 1 - Math.max(0, this.scale / s.mapPingScale), e.beginPath(), e.arc(this.x / s.mapScale * Qe.width, this.y / s.mapScale * Qe.width, this.scale, 0, 2 * Math.PI), e.stroke())) } }, Wt.push(Yt)), Yt.init(e, t) } function Nt(e) { It = e } var Ft = 0; function Qt(e, t, n) { n ? e ? L.tailIndex = t : L.tails[t] = 1 : e ? L.skinIndex = t : L.skins[t] = 1, "block" == Je.style.display && Gt() } function Gt() { if(L) { o.removeAllChildren($e); for(var e = Ft, t = e ? nt : tt, n = 0; n < t.length; ++n) t[n].dontSell || function (n) { var r = o.generateElement({ id: "storeDisplay" + n , class: "storeItem" , onmouseout: function () { kt() } , onmouseover: function () { kt(t[n], !1, !0) } , parent: $e }); o.hookTouchEvents(r, !0), o.generateElement({ tag: "img" , class: "hatPreview" , src: "../img/" + (e ? "accessories/access_" : "hats/hat_") + t[n].id + (t[n].topSprite ? "_p" : "") + ".png" , parent: r }), o.generateElement({ tag: "span" , text: t[n].name , parent: r }), (e ? L.tails[t[n].id] : L.skins[t[n].id]) ? (e ? L.tailIndex : L.skinIndex) == t[n].id ? o.generateElement({ class: "joinAlBtn" , style: "margin-top: 5px" , text: "Unequip" , onclick: function () { Kt(0, e) } , hookTouch: !0 , parent: r }) : o.generateElement({ class: "joinAlBtn" , style: "margin-top: 5px" , text: "Equip" , onclick: function () { Kt(t[n].id, e) } , hookTouch: !0 , parent: r }) : (o.generateElement({ class: "joinAlBtn" , style: "margin-top: 5px" , text: "Buy" , onclick: function () { Zt(t[n].id, e) } , hookTouch: !0 , parent: r }), o.generateElement({ tag: "span" , class: "itemPrice" , text: t[n].price , parent: r })) }(n) } } function Kt(e, t) { i.send("13c", 0, e, t) } function Zt(e, t) { i.send("13c", 1, e, t) } function Jt() { Je.style.display = "none", ze.style.display = "none", sn() } function $t(e, t) { e && (t ? L.weapons = e : L.items = e); for(var n = 0; n < c.list.length; ++n) { var r = c.weapons.length + n; document.getElementById("actionBarItem" + r) .style.display = L.items.indexOf(c.list[n].id) >= 0 ? "inline-block" : "none" } for(n = 0; n < c.weapons.length; ++n) document.getElementById("actionBarItem" + n) .style.display = L.weapons[c.weapons[n].type] == c.weapons[n].id ? "inline-block" : "none" } function en(e) { I = e, R = e && window.devicePixelRatio || 1, Be.checked = e, k("native_resolution", e.toString()), dn() } function tn() { for(var e = "", t = 0; t < s.skinColors.length; ++t) e += t == ae ? "
" : "
"; Ke.innerHTML = e } var nn = document.getElementById("chatBox") , rn = document.getElementById("chatHolder"); function on() { ln ? setTimeout(function () { var e = prompt("chat message"); e && an(e) }, 1) : "block" == rn.style.display ? (nn.value && an(nn.value), sn()) : (Je.style.display = "none", ze.style.display = "none", rn.style.display = "block", nn.focus(), yn()), nn.value = "" } function an(e) { i.send("ch", e.slice(0, 30)) } function sn() { nn.value = "", rn.style.display = "none" } var ln, cn, un = ["cunt", "whore", "fuck", "shit", "faggot", "nigger", "nigga", "dick", "vagina", "minge", "cock", "rape", "cum", "sex", "tits", "penis", "clit", "pussy", "meatcurtain", "jizz", "prune", "douche", "wanker", "damn", "bitch", "dick", "fag", "bastard"]; function fn(e, t) { var n = Cr(e); n && (n.chatMessage = function (e) { for(var t, n = 0; n < un.length; ++n) if(e.indexOf(un[n]) > -1) { t = ""; for(var r = 0; r < un[n].length; ++r) t += t.length ? "o" : "M"; var i = new RegExp(un[n], "g"); e = e.replace(i, t) } return e }(t), n.chatCountdown = s.chatCountdown) } function dn() { j = window.innerWidth, X = window.innerHeight; var e = Math.max(j / se, X / le) * R; ve.width = j * R, ve.height = X * R, ve.style.width = j + "px", ve.style.height = X + "px", be.setTransform(e, 0, 0, e, (j * R - se * e) / 2, (X * R - le * e) / 2) } function hn(e) { (ln = e) ? Te.classList.add("touch"): Te.classList.remove("touch") } function pn(e) { e.preventDefault(), e.stopPropagation(), hn(!0); for(var t = 0; t < e.changedTouches.length; t++) { var n = e.changedTouches[t]; n.identifier == ie.id ? (ie.id = -1, xn()) : n.identifier == oe.id && (oe.id = -1, L.buildIndex >= 0 && (D = 1, vn()), D = 0, vn()) } } function An() { return global_functions_exporter.cursorDisable ? global_functions_exporter.myPlayer.dir : L ? (-1 != oe.id ? cn = Math.atan2(oe.currentY - oe.startY, oe.currentX - oe.startX) : L.lockDir || ln || (cn = Math.atan2(re - X / 2, ne - j / 2)), o.fixTo(cn || 0, 2)) : 0 } window.addEventListener("resize", o.checkTrusted(dn)), dn(), hn(!1), window.setUsingTouch = hn, ve.addEventListener("touchmove", o.checkTrusted(function (e) { e.preventDefault(), e.stopPropagation(), hn(!0); for(var t = 0; t < e.changedTouches.length; t++) { var n = e.changedTouches[t]; n.identifier == ie.id ? (ie.currentX = n.pageX, ie.currentY = n.pageY, xn()) : n.identifier == oe.id && (oe.currentX = n.pageX, oe.currentY = n.pageY, D = 1) } }), !1), ve.addEventListener("touchstart", o.checkTrusted(function (e) { e.preventDefault(), e.stopPropagation(), hn(!0); for(var t = 0; t < e.changedTouches.length; t++) { var n = e.changedTouches[t]; n.pageX < document.body.scrollWidth / 2 && -1 == ie.id ? (ie.id = n.identifier, ie.startX = ie.currentX = n.pageX, ie.startY = ie.currentY = n.pageY, xn()) : n.pageX > document.body.scrollWidth / 2 && -1 == oe.id && (oe.id = n.identifier, oe.startX = oe.currentX = n.pageX, oe.startY = oe.currentY = n.pageY, L.buildIndex < 0 && (D = 1, vn())) } }), !1), ve.addEventListener("touchend", o.checkTrusted(pn), !1), ve.addEventListener("touchcancel", o.checkTrusted(pn), !1), ve.addEventListener("touchleave", o.checkTrusted(pn), !1), ve.addEventListener("mousemove", function (e) { e.preventDefault(), e.stopPropagation(), hn(!1), ne = e.clientX, re = e.clientY }, !1), ve.addEventListener("mousedown", function (e) { hn(!1), 1 != D && (D = 1, vn()) }, !1), ve.addEventListener("mouseup", function (e) { hn(!1), 0 != D && (D = 0, vn()) }, !1); var gn = {} , mn = { 87: [0, -1] , 38: [0, -1] , 83: [0, 1] , 40: [0, 1] , 65: [-1, 0] , 37: [-1, 0] , 68: [1, 0] , 39: [1, 0] }; function yn() { gn = {}, i.send("rmd") } function wn() { return "block" != ze.style.display && "block" != rn.style.display } function vn() { L && L.alive && i.send("c", D, L.buildIndex >= 0 ? An() : null) } window.addEventListener("keydown", o.checkTrusted(function (e) { var t = e.which || e.keyCode || 0; 27 == t ? Jt() : L && L.alive && wn() && (gn[t] || (gn[t] = 1, 69 == t ? i.send("7", 1) : 67 == t ? (Tt || (Tt = {}), Tt.x = L.x, Tt.y = L.y) : 88 == t ? (L.lockDir = L.lockDir ? 0 : 1, i.send("7", 0)) : null != L.weapons[t - 49] ? En(L.weapons[t - 49], !0) : null != L.items[t - 49 - L.weapons.length] ? En(L.items[t - 49 - L.weapons.length]) : 81 == t ? En(L.items[0]) : 82 == t ? Bn() : mn[t] ? xn() : 32 == t && (D = 1, vn()))) })), window.addEventListener("keyup", o.checkTrusted(function (e) { if(L && L.alive) { var t = e.which || e.keyCode || 0; 13 == t ? on() : wn() && gn[t] && (gn[t] = 0, mn[t] ? xn() : 32 == t && (D = 0, vn())) } })); var bn = void 0; function xn() { var e = function () { var e = 0 , t = 0; if(-1 != ie.id) e += ie.currentX - ie.startX, t += ie.currentY - ie.startY; else for(var n in mn) { var r = mn[n]; e += !!gn[n] * r[0], t += !!gn[n] * r[1] } return 0 == e && 0 == t ? void 0 : o.fixTo(Math.atan2(t, e), 2) }(); (null == bn || null == e || Math.abs(e - bn) > .3) && (i.send("33", e), bn = e) } function Bn() { i.send("14", 1) } function En(e, t) { i.send("5", e, t) } function kn(e) { k("moo_name", je.value), !ce && i.connected && (ce = !0, x.stop("menu"), pt("Loading..."), i.send("sp", { name: je.value , moofoll: U , skin: ae })) } var Cn = !0; function In(e) { Me.style.display = "none", Ie.style.display = "block", ue.style.display = "none", gn = {}, _ = e, D = 0, ce = !0, Cn && (Cn = !1, F.length = 0) } function Tn(e, t, n, r) { g.showText(e, t, 50, .18, 500, Math.abs(n), n >= 0 ? "#fff" : "#8ecc51") } var Mn = 99999; function Pn() { ce = !1; try { factorem.refreshAds([2], !0) } catch (e) {} Pe.style.display = "none", Jt(), Ct = { x: L.x , y: L.y }, Me.style.display = "none", Ge.style.display = "block", Ge.style.fontSize = "0px", Mn = 0, setTimeout(function () { Ie.style.display = "block", ue.style.display = "block", Ge.style.display = "none" }, s.deathFadeout), gt() } function On(e) { L && rt.removeAllItems(e) } function Dn(e) { rt.disableBySid(e) } function Ln() { De.innerText = L.points, Le.innerText = L.food, _e.innerText = L.wood, Se.innerText = L.stone, qe.innerText = L.kills } var _n = {} , Sn = ["crown", "skull"] , qn = []; function Hn(e, t) { if(L.upgradePoints = e, L.upgrAge = t, e > 0) { qn.length = 0, o.removeAllChildren(Ye); for(var n = 0; n < c.weapons.length; ++n) c.weapons[n].age == t && (null == c.weapons[n].pre || L.weapons.indexOf(c.weapons[n].pre) >= 0) && (o.generateElement({ id: "upgradeItem" + n , class: "actionBarItem" , onmouseout: function () { kt() } , parent: Ye }) .style.backgroundImage = document.getElementById("actionBarItem" + n) .style.backgroundImage, qn.push(n)); for(n = 0; n < c.list.length; ++n) if(c.list[n].age == t && (null == c.list[n].pre || L.items.indexOf(c.list[n].pre) >= 0)) { var r = c.weapons.length + n; o.generateElement({ id: "upgradeItem" + r , class: "actionBarItem" , onmouseout: function () { kt() } , parent: Ye }) .style.backgroundImage = document.getElementById("actionBarItem" + r) .style.backgroundImage, qn.push(r) } for(n = 0; n < qn.length; n++) ! function (e) { var t = document.getElementById("upgradeItem" + e); t.onmouseover = function () { c.weapons[e] ? kt(c.weapons[e], !0) : kt(c.list[e - c.weapons.length]) }, t.onclick = o.checkTrusted(function () { i.send("6", e) }), o.hookTouchEvents(t) }(qn[n]); qn.length ? (Ye.style.display = "block", We.style.display = "block", We.innerHTML = "SELECT ITEMS (" + e + ")") : (Ye.style.display = "none", We.style.display = "none", kt()) } else Ye.style.display = "none", We.style.display = "none", kt() } function Vn(e, t, n) { null != e && (L.XP = e), null != t && (L.maxXP = t), null != n && (L.age = n), n == s.maxAge ? (Ue.innerHTML = "MAX AGE", Re.style.width = "100%") : (Ue.innerHTML = "AGE " + L.age, Re.style.width = L.XP / L.maxXP * 100 + "%") } function jn(e) { o.removeAllChildren(He); for(var t = 1, n = 0; n < e.length; n += 3) ! function (n) { o.generateElement({ class: "leaderHolder" , parent: He , children: [o.generateElement({ class: "leaderboardItem" , style: "color:" + (e[n] == _ ? "#fff" : "rgba(255,255,255,0.6)") , text: t + ". " + ("" != e[n + 1] ? e[n + 1] : "unknown") }), o.generateElement({ class: "leaderScore" , text: o.kFormat(e[n + 2]) || "0" })] }) }(n), t++ } function Xn(e, t, n, r) { be.save(), be.setTransform(1, 0, 0, 1, 0, 0), be.scale(R, R); var i = 50; be.beginPath(), be.arc(e, t, i, 0, 2 * Math.PI, !1), be.closePath(), be.fillStyle = "rgba(255, 255, 255, 0.3)", be.fill(), i = 50; var o = n - e , a = r - t , s = Math.sqrt(Math.pow(o, 2) + Math.pow(a, 2)) , l = s > i ? s / i : 1; o /= l, a /= l, be.beginPath(), be.arc(e + o, t + a, .5 * i, 0, 2 * Math.PI, !1), be.closePath(), be.fillStyle = "white", be.fill(), be.restore() } function Un(e, t, n) { for(var r = 0; r < Q.length; ++r)(S = Q[r]) .active && S.layer == e && (S.update(M), S.active && wr(S.x - t, S.y - n, S.scale) && (be.save(), be.translate(S.x - t, S.y - n), be.rotate(S.dir), Yn(0, 0, S, be, 1), be.restore())) } var Rn = {}; function Yn(e, t, n, r, i) { if(n.src) { var o = c.projectiles[n.indx].src , a = Rn[o]; a || ((a = new Image) .onload = function () { this.isLoaded = !0 }, a.src = ".././img/weapons/" + o + ".png", Rn[o] = a), a.isLoaded && r.drawImage(a, e - n.scale / 2, t - n.scale / 2, n.scale, n.scale) } else 1 == n.indx && (r.fillStyle = "#939393", ar(e, t, n.scale, r)) } function Wn(e, t, n, r) { var i = s.riverWidth + r , o = s.mapScale / 2 - t - i / 2; o < le && o + i > 0 && n.fillRect(0, o, se, i) } function zn(e, t, n) { for(var r, i, o, a = 0; a < F.length; ++a)(S = F[a]) .active && (i = S.x + S.xWiggle - t, o = S.y + S.yWiggle - n, 0 == e && S.update(M), S.layer == e && wr(i, o, S.scale + (S.blocker || 0)) && (be.globalAlpha = S.hideFromEnemy ? .6 : 1, S.isItem ? (r = or(S), be.save(), be.translate(i, o), be.rotate(S.dir), be.drawImage(r, -r.width / 2, -r.height / 2), S.blocker && (be.strokeStyle = "#db6e6e", be.globalAlpha = .3, be.lineWidth = 6, ar(0, 0, S.blocker, be, !1, !0)), be.restore()) : (r = rr(S), be.drawImage(r, i - r.width / 2, o - r.height / 2)))) } function Nn(e, t, n) { (S = Cr(e)) && S.startAnim(t, n) } function Fn(e, t, n) { be.globalAlpha = 1; for(var r = 0; r < z.length; ++r)(S = z[r]) .zIndex == n && (S.animate(M), S.visible && (S.skinRot += .002 * M, V = (S == L ? An() : S.dir) + S.dirPlus, be.save(), be.translate(S.x - e, S.y - t), be.rotate(V), Qn(S, be), be.restore())) } function Qn(e, t) { (t = t || be) .lineWidth = 5.5, t.lineJoin = "miter"; var n = Math.PI / 4 * (c.weapons[e.weaponIndex].armS || 1) , r = e.buildIndex < 0 && c.weapons[e.weaponIndex].hndS || 1 , i = e.buildIndex < 0 && c.weapons[e.weaponIndex].hndD || 1; if(e.tailIndex > 0 && function (e, t, n) { if(!(Gn = Jn[e])) { var r = new Image; r.onload = function () { this.isLoaded = !0, this.onload = null }, r.src = ".././img/accessories/access_" + e + ".png", Jn[e] = r, Gn = r } var i = $n[e]; if(!i) { for(var o = 0; o < nt.length; ++o) if(nt[o].id == e) { i = nt[o]; break } $n[e] = i } Gn.isLoaded && (t.save(), t.translate(-20 - (i.xOff || 0), 0), i.spin && t.rotate(n.skinRot), t.drawImage(Gn, -i.scale / 2, -i.scale / 2, i.scale, i.scale), t.restore()) }(e.tailIndex, t, e), e.buildIndex < 0 && !c.weapons[e.weaponIndex].aboveHand && (tr(c.weapons[e.weaponIndex], s.weaponVariants[e.weaponVariant].src, e.scale, 0, t), null == c.weapons[e.weaponIndex].projectile || c.weapons[e.weaponIndex].hideProjectile || Yn(e.scale, 0, c.projectiles[c.weapons[e.weaponIndex].projectile], be)), t.fillStyle = s.skinColors[e.skinColor], ar(e.scale * Math.cos(n), e.scale * Math.sin(n), 14), ar(e.scale * i * Math.cos(-n * r), e.scale * i * Math.sin(-n * r), 14), e.buildIndex < 0 && c.weapons[e.weaponIndex].aboveHand && (tr(c.weapons[e.weaponIndex], s.weaponVariants[e.weaponVariant].src, e.scale, 0, t), null == c.weapons[e.weaponIndex].projectile || c.weapons[e.weaponIndex].hideProjectile || Yn(e.scale, 0, c.projectiles[c.weapons[e.weaponIndex].projectile], be)), e.buildIndex >= 0) { var o = or(c.list[e.buildIndex]); t.drawImage(o, e.scale - c.list[e.buildIndex].holdOffset, -o.width / 2) } ar(0, 0, e.scale, t), e.skinIndex > 0 && (t.rotate(Math.PI / 2), function e(t, n, r, i) { if(!(Gn = Kn[t])) { var o = new Image; o.onload = function () { this.isLoaded = !0, this.onload = null }, o.src = ".././img/hats/hat_" + t + ".png", Kn[t] = o, Gn = o } var a = r || Zn[t]; if(!a) { for(var s = 0; s < tt.length; ++s) if(tt[s].id == t) { a = tt[s]; break } Zn[t] = a } Gn.isLoaded && n.drawImage(Gn, -a.scale / 2, -a.scale / 2, a.scale, a.scale), !r && a.topSprite && (n.save(), n.rotate(i.skinRot), e(t + "_top", n, a, i), n.restore()) }(e.skinIndex, t, null, e)) } var Gn, Kn = {} , Zn = {} , Jn = {} , $n = {} , er = {}; function tr(e, t, n, r, i) { var o = e.src + (t || "") , a = er[o]; a || ((a = new Image) .onload = function () { this.isLoaded = !0 }, a.src = ".././img/weapons/" + o + ".png", er[o] = a), a.isLoaded && i.drawImage(a, n + e.xOff - e.length / 2, r + e.yOff - e.width / 2, e.length, e.width) } var nr = {}; function rr(e) { var t = e.y >= s.mapScale - s.snowBiomeTop ? 2 : e.y <= s.snowBiomeTop ? 1 : 0 , n = e.type + "_" + e.scale + "_" + t , r = nr[n]; if(!r) { var i = document.createElement("canvas"); i.width = i.height = 2.1 * e.scale + 5.5; var a = i.getContext("2d"); if(a.translate(i.width / 2, i.height / 2), a.rotate(o.randFloat(0, Math.PI)), a.strokeStyle = it, a.lineWidth = 5.5, 0 == e.type) { let e = [ ["#b1d959", "#95b946"] , ["#bade6e", "#aac76b"] , ["#a7d544", "#86a63f"] , ["#b4db62", "#9ebf57"] ] , n = e[Math.floor(Math.random() * e.length)]; for(var l, c = 0; c < 2; ++c) sr(a, 7, l = S.scale * (c ? .5 : 1), .7 * l), a.fillStyle = t ? c ? "#fff" : "#e3f1f4" : c ? n[0] : n[1], a.fill(), c || a.stroke() } else if(1 == e.type) if(2 == t) a.fillStyle = "#606060", sr(a, 6, .3 * e.scale, .71 * e.scale), a.fill(), a.stroke(), a.fillStyle = "#89a54c", ar(0, 0, .55 * e.scale, a), a.fillStyle = "#a5c65b", ar(0, 0, .3 * e.scale, a, !0); else { var u; ! function (e, t, n, r) { var i, a = Math.PI / 2 * 3 , s = Math.PI / 6; e.beginPath(), e.moveTo(0, -r); for(var l = 0; l < 6; l++) i = o.randInt(n + .9, 1.2 * n), e.quadraticCurveTo(Math.cos(a + s) * i, Math.sin(a + s) * i, Math.cos(a + 2 * s) * r, Math.sin(a + 2 * s) * r), a += 2 * s; e.lineTo(0, -r), e.closePath() }(a, 0, S.scale, .7 * S.scale), a.fillStyle = t ? "#e3f1f4" : "#89a54c", a.fill(), a.stroke(), a.fillStyle = t ? "#6a64af" : "#c15555"; var f = E / 4; for(c = 0; c < 4; ++c) ar((u = o.randInt(S.scale / 3.5, S.scale / 2.3)) * Math.cos(f * c), u * Math.sin(f * c), o.randInt(10, 12), a) } else 2 != e.type && 3 != e.type || (a.fillStyle = 2 == e.type ? 2 == t ? "#938d77" : "#939393" : "#e0c655", sr(a, 3, e.scale, e.scale), a.fill(), a.stroke(), a.fillStyle = 2 == e.type ? 2 == t ? "#b2ab90" : "#bcbcbc" : "#ebdca3", sr(a, 3, .55 * e.scale, .65 * e.scale), a.fill()); r = i, nr[n] = r } return r } var ir = []; function or(e, t) { var n = ir[e.id]; if(!n || t) { var r = document.createElement("canvas"); r.width = r.height = 2.5 * e.scale + 5.5 + (c.list[e.id].spritePadding || 0); var i = r.getContext("2d"); if(i.translate(r.width / 2, r.height / 2), i.rotate(t ? 0 : Math.PI / 2), i.strokeStyle = it, i.lineWidth = 5.5 * (t ? r.width / 81 : 1), "apple" == e.name) { i.fillStyle = "#c15555", ar(0, 0, e.scale, i), i.fillStyle = "#89a54c"; var a = -Math.PI / 2; ! function (e, t, n, r, i) { var o = e + 25 * Math.cos(r) , a = t + 25 * Math.sin(r); i.moveTo(e, t), i.beginPath(), i.quadraticCurveTo((e + o) / 2 + 10 * Math.cos(r + Math.PI / 2), (t + a) / 2 + 10 * Math.sin(r + Math.PI / 2), o, a), i.quadraticCurveTo((e + o) / 2 - 10 * Math.cos(r + Math.PI / 2), (t + a) / 2 - 10 * Math.sin(r + Math.PI / 2), e, t), i.closePath(), i.fill(), i.stroke() }(e.scale * Math.cos(a), e.scale * Math.sin(a), 0, a + Math.PI / 2, i) } else if("cookie" == e.name) { i.fillStyle = "#cca861", ar(0, 0, e.scale, i), i.fillStyle = "#937c4b"; for(var s = E / (u = 4), l = 0; l < u; ++l) ar((f = o.randInt(e.scale / 2.5, e.scale / 1.7)) * Math.cos(s * l), f * Math.sin(s * l), o.randInt(4, 5), i, !0) } else if("cheese" == e.name) { var u, f; for(i.fillStyle = "#f4f3ac", ar(0, 0, e.scale, i), i.fillStyle = "#c3c28b", s = E / (u = 4), l = 0; l < u; ++l) ar((f = o.randInt(e.scale / 2.5, e.scale / 1.7)) * Math.cos(s * l), f * Math.sin(s * l), o.randInt(4, 5), i, !0) } else if("wood wall" == e.name || "stone wall" == e.name || "castle wall" == e.name) { i.fillStyle = "castle wall" == e.name ? "#83898e" : "wood wall" == e.name ? "#a5974c" : "#939393"; var d = "castle wall" == e.name ? 4 : 3; sr(i, d, 1.1 * e.scale, 1.1 * e.scale), i.fill(), i.stroke(), i.fillStyle = "castle wall" == e.name ? "#9da4aa" : "wood wall" == e.name ? "#c9b758" : "#bcbcbc", sr(i, d, .65 * e.scale, .65 * e.scale), i.fill() } else if("spikes" == e.name || "greater spikes" == e.name || "poison spikes" == e.name || "spinning spikes" == e.name) { i.fillStyle = "poison spikes" == e.name ? "#7b935d" : "#939393"; var h = .6 * e.scale; sr(i, "spikes" == e.name ? 5 : 6, e.scale, h), i.fill(), i.stroke(), i.fillStyle = "#a5974c", ar(0, 0, h, i), i.fillStyle = "#c9b758", ar(0, 0, h / 2, i, !0) } else if("windmill" == e.name || "faster windmill" == e.name || "power mill" == e.name) i.fillStyle = "#a5974c", ar(0, 0, e.scale, i), i.fillStyle = "#c9b758", cr(0, 0, 1.5 * e.scale, 29, 4, i), i.fillStyle = "#a5974c", ar(0, 0, .5 * e.scale, i); else if("mine" == e.name) i.fillStyle = "#939393", sr(i, 3, e.scale, e.scale), i.fill(), i.stroke(), i.fillStyle = "#bcbcbc", sr(i, 3, .55 * e.scale, .65 * e.scale), i.fill(); else if("sapling" == e.name) for(l = 0; l < 2; ++l) sr(i, 7, h = e.scale * (l ? .5 : 1), .7 * h), i.fillStyle = l ? "#b4db62" : "#9ebf57", i.fill(), l || i.stroke(); else if("pit trap" == e.name) i.fillStyle = "#a5974c", sr(i, 3, 1.1 * e.scale, 1.1 * e.scale), i.fill(), i.stroke(), i.fillStyle = it, sr(i, 3, .65 * e.scale, .65 * e.scale), i.fill(); else if("boost pad" == e.name) i.fillStyle = "#7e7f82", lr(0, 0, 2 * e.scale, 2 * e.scale, i), i.fill(), i.stroke(), i.fillStyle = "#dbd97d" , function (e, t) { t = t || be; var n = e * (Math.sqrt(3) / 2); t.beginPath(), t.moveTo(0, -n / 2), t.lineTo(-e / 2, n / 2), t.lineTo(e / 2, n / 2), t.lineTo(0, -n / 2), t.fill(), t.closePath() }(1 * e.scale, i); else if("turret" == e.name) i.fillStyle = "#a5974c", ar(0, 0, e.scale, i), i.fill(), i.stroke(), i.fillStyle = "#939393", lr(0, -25, .9 * e.scale, 50, i), ar(0, 0, .6 * e.scale, i), i.fill(), i.stroke(); else if("platform" == e.name) { i.fillStyle = "#cebd5f"; var p = 2 * e.scale , A = p / 4 , g = -e.scale / 2; for(l = 0; l < 4; ++l) lr(g - A / 2, 0, A, 2 * e.scale, i), i.fill(), i.stroke(), g += p / 4 } else "healing pad" == e.name ? (i.fillStyle = "#7e7f82", lr(0, 0, 2 * e.scale, 2 * e.scale, i), i.fill(), i.stroke(), i.fillStyle = "#db6e6e", cr(0, 0, .65 * e.scale, 20, 4, i, !0)) : "spawn pad" == e.name ? (i.fillStyle = "#7e7f82", lr(0, 0, 2 * e.scale, 2 * e.scale, i), i.fill(), i.stroke(), i.fillStyle = "#71aad6", ar(0, 0, .6 * e.scale, i)) : "blocker" == e.name ? (i.fillStyle = "#7e7f82", ar(0, 0, e.scale, i), i.fill(), i.stroke(), i.rotate(Math.PI / 4), i.fillStyle = "#db6e6e", cr(0, 0, .65 * e.scale, 20, 4, i, !0)) : "teleporter" == e.name && (i.fillStyle = "#7e7f82", ar(0, 0, e.scale, i), i.fill(), i.stroke(), i.rotate(Math.PI / 4), i.fillStyle = "#d76edb", ar(0, 0, .5 * e.scale, i, !0)); n = r, t || (ir[e.id] = n) } return n } function ar(e, t, n, r, i, o) { (r = r || be) .beginPath(), r.arc(e, t, n, 0, 2 * Math.PI), o || r.fill(), i || r.stroke() } function sr(e, t, n, r) { var i, o, a = Math.PI / 2 * 3 , s = Math.PI / t; e.beginPath(), e.moveTo(0, -n); for(var l = 0; l < t; l++) i = Math.cos(a) * n, o = Math.sin(a) * n, e.lineTo(i, o), a += s, i = Math.cos(a) * r, o = Math.sin(a) * r, e.lineTo(i, o), a += s; e.lineTo(0, -n), e.closePath() } function lr(e, t, n, r, i, o) { i.fillRect(e - n / 2, t - r / 2, n, r), o || i.strokeRect(e - n / 2, t - r / 2, n, r) } function cr(e, t, n, r, i, o, a) { o.save(), o.translate(e, t), i = Math.ceil(i / 2); for(var s = 0; s < i; s++) lr(0, 0, 2 * n, r, o, a), o.rotate(Math.PI / i); o.restore() } function ur(e) { for(var t = 0; t < e.length;) rt.add(e[t], e[t + 1], e[t + 2], e[t + 3] >= Number.MAX_SAFE_INTEGER && document.getElementById("fixInvisBuildings") .checked ? 0 : e[t + 3], e[t + 4], e[t + 5], c.list[e[t + 6]], !0, e[t + 7] >= 0 ? { sid: e[t + 7] } : null), t += 8 } function fr(e, t) { (S = Tr(t)) && (S.xWiggle += s.gatherWiggle * Math.cos(e), S.yWiggle += s.gatherWiggle * Math.sin(e)) } function dr(e, t) { (S = Tr(e)) && (S.dir = t, S.xWiggle += s.gatherWiggle * Math.cos(t + Math.PI), S.yWiggle += s.gatherWiggle * Math.sin(t + Math.PI)) } function hr(e, t, n, r, i, o, a, s) { ut && (G.addProjectile(e, t, n, r, i, o, null, null, a) .sid = s) } function pr(e, t) { for(var n = 0; n < Q.length; ++n) Q[n].sid == e && (Q[n].range = t) } function Ar(e) { (S = Ir(e)) && S.startAnim() } function gr(e) { for(var t = 0; t < W.length; ++t) W[t].forcePos = !W[t].visible, W[t].visible = !1; if(e) { var n = Date.now(); for(t = 0; t < e.length;)(S = Ir(e[t])) ? (S.index = e[t + 1], S.t1 = void 0 === S.t2 ? n : S.t2, S.t2 = n, S.x1 = S.x, S.y1 = S.y, S.x2 = e[t + 2], S.y2 = e[t + 3], S.d1 = void 0 === S.d2 ? e[t + 4] : S.d2, S.d2 = e[t + 4], S.health = e[t + 5], S.dt = 0, S.visible = !0) : ((S = J.spawn(e[t + 2], e[t + 3], e[t + 4], e[t + 1])) .x2 = S.x, S.y2 = S.y, S.d2 = S.dir, S.health = e[t + 5], J.aiTypes[e[t + 1]].name || (S.name = s.cowNames[e[t + 6]]), S.forcePos = !0, S.sid = e[t], S.visible = !0), t += 7 } } var mr = {}; function yr(e, t) { var n = e.index , r = mr[n]; if(!r) { var i = new Image; i.onload = function () { this.isLoaded = !0, this.onload = null }, i.src = ".././img/animals/" + e.src + ".png", r = i, mr[n] = r } if(r.isLoaded) { var o = 1.2 * e.scale * (e.spriteMlt || 1); t.drawImage(r, -o, -o, 2 * o, 2 * o) } } function wr(e, t, n) { return e + n >= 0 && e - n <= se && t + n >= 0 && t - n <= le } function vr(e, t) { var n = function (e) { for(var t = 0; t < z.length; ++t) if(z[t].id == e) return z[t]; return null }(e[0]); n || (n = new f(e[0], e[1], s, o, G, rt, z, W, c, tt, nt), z.push(n)), n.spawn(t ? U : null), n.visible = !1, n.x2 = void 0, n.y2 = void 0, n.setData(e), t && (q = (L = n) .x, H = L.y, $t(), Ln(), Vn(), Hn(0), Pe.style.display = "block") } function br(e) { for(var t = 0; t < z.length; t++) if(z[t].id == e) { z.splice(t, 1); break } } function xr(e, t) { L && (L.itemCounts[e] = t) } function Br(e, t, n) { L && (L[e] = t, n && Ln()) } function Er(e, t) { (S = Cr(e)) && (S.health = t) } function kr(e) { for(var t = Date.now(), n = 0; n < z.length; ++n) z[n].forcePos = !z[n].visible, z[n].visible = !1; for(n = 0; n < e.length;)(S = Cr(e[n])) && (S.t1 = void 0 === S.t2 ? t : S.t2, S.t2 = t, S.x1 = S.x, S.y1 = S.y, S.x2 = e[n + 1], S.y2 = e[n + 2], S.d1 = void 0 === S.d2 ? e[n + 3] : S.d2, S.d2 = e[n + 3], S.dt = 0, S.buildIndex = e[n + 4], S.weaponIndex = e[n + 5], S.weaponVariant = e[n + 6], S.team = e[n + 7], S.isLeader = e[n + 8], S.skinIndex = e[n + 9], S.tailIndex = e[n + 10], S.iconIndex = e[n + 11], S.zIndex = e[n + 12], S.visible = !0), n += 13 } function Cr(e) { for(var t = 0; t < z.length; ++t) if(z[t].sid == e) return z[t]; return null } function Ir(e) { for(var t = 0; t < W.length; ++t) if(W[t].sid == e) return W[t]; return null } function Tr(e) { for(var t = 0; t < F.length; ++t) if(F[t].sid == e) return F[t]; return null } var Mr = -1; function Pr() { var e = Date.now() - Mr; window.pingTime = e, ke.innerText = "Ping: " + e + " ms" } function Or() { Mr = Date.now(), i.send("pp") } function Dr(e) { if(!(e < 0)) { var t = Math.floor(e / 60) , n = e % 60; n = ("0" + n) .slice(-2), Ce.innerText = "Server restarting in " + t + ":" + n, Ce.hidden = !1 } } function Lr(e) { window.open(e, "_blank") } var _r = !0 , Sr = []; (new Image) .src = "data:image/png;base64,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", window.requestAnimFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (e) { window.setTimeout(e, 1e3 / 60) } , function () { var e = s.mapScale / 2; rt.add(0, e, e + 200, 0, s.treeScales[3], 0), rt.add(1, e, e - 480, 0, s.treeScales[3], 0), rt.add(2, e + 300, e + 450, 0, s.treeScales[3], 0), rt.add(3, e - 950, e - 130, 0, s.treeScales[2], 0), rt.add(4, e - 750, e - 400, 0, s.treeScales[3], 0), rt.add(5, e - 700, e + 400, 0, s.treeScales[2], 0), rt.add(6, e + 800, e - 200, 0, s.treeScales[3], 0), rt.add(7, e - 260, e + 340, 0, s.bushScales[3], 1), rt.add(8, e + 760, e + 310, 0, s.bushScales[3], 1), rt.add(9, e - 800, e + 100, 0, s.bushScales[3], 1), rt.add(10, e - 800, e + 300, 0, c.list[4].scale, c.list[4].id, c.list[10]), rt.add(11, e + 650, e - 390, 0, c.list[4].scale, c.list[4].id, c.list[10]), rt.add(12, e - 400, e - 450, 0, s.rockScales[2], 2) }() , function e() { P = Date.now(), M = P - Y, Y = P , function () { if(L && (!O || P - O >= 1e3 / s.clientSendRate) && (O = P, i.send("2", An())), Mn < 120 && (Mn += .1 * M, Ge.style.fontSize = Math.min(Math.round(Mn), 120) + "px"), L) { var e = o.getDistance(q, H, L.x, L.y) , t = o.getDirection(L.x, L.y, q, H) , n = Math.min(.01 * e * M, e); e > .05 ? (q += n * Math.cos(t), H += n * Math.sin(t)) : (q = L.x, H = L.y) } else q = s.mapScale / 2, H = s.mapScale / 2; for(var r = P - 1e3 / s.serverUpdateRate, a = 0; a < z.length + W.length; ++a) if((S = z[a] || W[a - z.length]) && S.visible) if(S.forcePos) S.x = S.x2, S.y = S.y2, S.dir = S.d2; else { var l = S.t2 - S.t1 , c = (r - S.t1) / l; S.dt += M; var u = Math.min(1.7, S.dt / 170) , f = S.x2 - S.x1; S.x = S.x1 + f * u, f = S.y2 - S.y1, S.y = S.y1 + f * u, S.dir = Math.lerpAngle(S.d2, S.d1, Math.min(1.2, c)) } var d = q - se / 2 , h = H - le / 2 , p = be , A = "" , m = "" , y = "" , w = ""; 1 == _r ? (w = "#e6e6e6", y = "#78a1d3", A = "#8dba2c", m = "#d3b945") : (w = "#fff", y = "#91b2db", A = "#b6db66", m = "#dbc666"); s.waveMax = 1.7, s.snowBiomeTop = 2400, s.deathFadeout = 0, s.snowBiomeTop - h <= 0 && s.mapScale - s.snowBiomeTop - h >= le ? (be.fillStyle = A, be.fillRect(0, 0, se, le)) : s.mapScale - s.snowBiomeTop - h <= 0 ? (be.fillStyle = m, be.fillRect(0, 0, se, le)) : s.snowBiomeTop - h >= le ? (be.fillStyle = w, be.fillRect(0, 0, se, le)) : s.snowBiomeTop - h >= 0 ? (be.fillStyle = w, be.fillRect(0, 0, se, s.snowBiomeTop - h), be.fillStyle = A, be.fillRect(0, s.snowBiomeTop - h, se, le - (s.snowBiomeTop - h))) : (be.fillStyle = A, be.fillRect(0, 0, se, s.mapScale - s.snowBiomeTop - h), be.fillStyle = m, be.fillRect(0, s.mapScale - s.snowBiomeTop - h, se, le - (s.mapScale - s.snowBiomeTop - h))), Cn || ((ee += te * s.waveSpeed * M) >= s.waveMax ? (ee = s.waveMax, te = -1) : ee <= 1 && (ee = te = 1), be.globalAlpha = 1, be.fillStyle = m, Wn(0, h, be, s.riverPadding + 750), be.fillStyle = y, Wn(0, h, be, 250 * (ee - 1))), be.lineWidth = 4, be.strokeStyle = "#000", be.globalAlpha = .06, be.beginPath(); for(var v = -q; v < se; v += le / 18) v > 0 && (be.moveTo(v, 0), be.lineTo(v, le)); for(var b = -H; b < le; b += le / 18) v > 0 && (be.moveTo(0, b), be.lineTo(se, b)); for(be.stroke(), be.globalAlpha = 1, be.strokeStyle = it, zn(-1, d, h), be.globalAlpha = 1, be.lineWidth = 5.5, Un(0, d, h), Fn(d, h, 0), be.globalAlpha = 1, a = 0; a < W.length; ++a)(S = W[a]) .active && S.visible && (S.animate(M), be.save(), be.translate(S.x - d, S.y - h), be.rotate(S.dir + S.dirPlus - Math.PI / 2), yr(S, be), be.restore()); if(zn(0, d, h), Un(1, d, h), zn(1, d, h), Fn(d, h, 1), zn(2, d, h), zn(3, d, h), be.fillStyle = "#000", be.globalAlpha = .09, d <= 0 && be.fillRect(0, 0, -d, le), s.mapScale - d <= se) { var x = Math.max(0, -h); be.fillRect(s.mapScale - d, x, se - (s.mapScale - d), le - x) } if(h <= 0 && be.fillRect(-d, 0, se + d, -h), s.mapScale - h <= le) { var B = Math.max(0, -d) , E = 0; s.mapScale - d <= se && (E = se - (s.mapScale - d)), be.fillRect(B, s.mapScale - h, se - B - E, le - (s.mapScale - h)) } for(be.globalAlpha = 1, be.fillStyle = "rgba(0, 0, 70, 0.35)", be.fillRect(0, 0, se, le), be.strokeStyle = ot, a = 0; a < z.length + W.length; ++a) if((S = z[a] || W[a - z.length]) .visible && (10 != S.skinIndex || S == L || S.team && S.team == L.team)) { if(1 == S.isPlayer) var k = (S.team ? "[" + S.team + "] " : "") + `{${S.sid}} ` + (global_functions_exporter.enableNames && S.name || ""); else k = `[AI, ${S.health} / ${S.maxHealth}] ` + (S.team ? "[" + S.team + "] " : "") + (global_functions_exporter.enableNames && S.name || ""); p = be; function C(e, t, n) { p.beginPath(), p.lineWidth = 5, p.strokeStyle = n || "#BEBEBE", p.moveTo(L.x - d, L.y - h), p.lineTo(e - d, t - h), p.stroke() } for(var I of (global_functions_exporter.BundleF = d, window.tr = function (e, t) { Sr.push([e, t]) }, window.cleartracers = function () { Sr = [] }, Sr)) C(I[0], I[1]); if(global_functions_exporter.mouseCoords && Ve.secondary == Ve.weapon && 10 != Ve.secondary) { p.beginPath(), p.lineWidth = 10, p.strokeStyle = "#ff0000"; let e = p.globalAlpha; p.globalAlpha = .2, p.moveTo(L.x - d, L.y - h), p.lineTo(global_functions_exporter.mouseCoords[0] - d, global_functions_exporter.mouseCoords[1] - h), p.stroke(), p.globalAlpha = e } if(p.strokeStyle = "rgba(0, 0, 70, 0.35)", S.sid == L.sid && S.isPlayer && (p.textAlign = "center", p.textBaseline = "middle", p.fillStyle = "#fff", p.font = "20px Hammersmith One", p.lineJoin = "round", p.lineWidth = 0, p.strokeText(global_functions_exporter.dataPackage, S.x - d, S.y - h + S.scale + s.nameY + 42), p.fillText(global_functions_exporter.dataPackage, S.x - d, S.y - h + S.scale + s.nameY + 42)), !S.isPlayer || S == L || S.team == L.team && S.team || (p.beginPath(), p.lineWidth = 5, p.strokeStyle = "#FF0000", p.moveTo(L.x - d, L.y - h), p.lineTo(S.x - d, S.y - h), p.stroke(), global_functions_exporter.enableNames && (p.font = (S.nameScale || 25) + "px Hammersmith One", p.textBaseline = "middle", p.textAlign = "center", p.lineWidth = S.nameScale ? 11 : 8, p.lineJoin = "round", p.strokeText(S.name + " / " + Math.floor(Math.sqrt(Math.pow(S.y - L.y, 2) + Math.pow(S.x - L.x, 2))), (L.x - d + S.x - d) / 2, (L.y - h + S.y - h) / 2), p.fillText(S.name + " / " + Math.floor(Math.sqrt(Math.pow(S.y - L.y, 2) + Math.pow(S.x - L.x, 2))), (L.x - d + S.x - d) / 2, (L.y - h + S.y - h) / 2))), S.isPlayer && S != L && S.team && S.team == L.team && (p.beginPath(), p.lineWidth = 5, p.strokeStyle = "#228b22", p.moveTo(L.x - d, L.y - h), p.lineTo(S.x - d, S.y - h), p.stroke(), global_functions_exporter.enableNames && (p.font = (S.nameScale || 25) + "px Hammersmith One", p.textBaseline = "middle", p.textAlign = "center", p.lineWidth = S.nameScale ? 11 : 8, p.lineJoin = "round", p.strokeText(S.name, (L.x - d + S.x - d) / 2, (L.y - h + S.y - h) / 2), p.fillText(S.name, (L.x - d + S.x - d) / 2, (L.y - h + S.y - h) / 2))), S.isAI) p.beginPath(), p.lineWidth = 5, p.strokeStyle = "blue", p.moveTo(L.x - d, L.y - h), p.lineTo(S.x - d, S.y - h), p.stroke(); else try { S.x, Math.cos(S.dir), S.y, Math.sin(S.dir); let t = S.dir - 1.57 , n = S.dir + 1.57 , r = (global_functions_exporter.playerList[S.sid] ? global_functions_exporter.playerList[S.sid] : { xvel: 0 , yvel: 0 , addDist: 0 }) .perfectMaxMeleeRange ? global_functions_exporter.playerList[S.sid].perfectMaxMeleeRange : 219; p.beginPath(); let i = p.globalAlpha; p.globalAlpha = .1, p.arc(S.x - d, S.y - h, r, t, n), p.fillStyle = "red", p.fill(), p.globalAlpha = i } catch (e) { console.error(e) } if("" != k) { if(be.font = (S.nameScale || 30) + "px Hammersmith One", be.fillStyle = "#fff", be.textBaseline = "middle", be.textAlign = "center", be.lineWidth = S.nameScale ? 11 : 8, be.lineJoin = "round", be.strokeText(k, S.x - d, S.y - h - S.scale - s.nameY), be.fillText(k, S.x - d, S.y - h - S.scale - s.nameY), S.isLeader && _n.crown.isLoaded) { var T = s.crownIconScale; B = S.x - d - T / 2 - be.measureText(k) .width / 2 - s.crownPad, be.drawImage(_n.crown, B, S.y - h - S.scale - s.nameY - T / 2 - 5, T, T) } 1 == S.iconIndex && _n.skull.isLoaded && (T = s.crownIconScale, B = S.x - d - T / 2 + be.measureText(k) .width / 2 + s.crownPad, be.drawImage(_n.skull, B, S.y - h - S.scale - s.nameY - T / 2 - 5, T, T)), S.isPlayer && global_functions_exporter.playerList[S.sid] && void 0 !== global_functions_exporter.playerList[S.sid].shameCount ? (S.previousShameCount = global_functions_exporter.playerList[S.sid].shameCount, T = s.crownIconScale, be.fillStyle = "#ff0000", be.strokeText(" " + global_functions_exporter.playerList[S.sid].shameCount, S.x - d - T / 2 + be.measureText(k) .width / 2 + s.crownPad, S.y - h - S.scale - s.nameY), be.fillText(" " + global_functions_exporter.playerList[S.sid].shameCount, S.x - d - T / 2 + be.measureText(k) .width / 2 + s.crownPad, S.y - h - S.scale - s.nameY), be.fillStyle = "#fff") : S.isPlayer && global_functions_exporter.playerList[S.sid] && (T = s.crownIconScale, be.fillStyle = "#ff0000", be.strokeText(" " + (S.previousShameCount ? S.previousShameCount : 0), S.x - d - T / 2 + be.measureText(k) .width / 2 + s.crownPad, S.y - h - S.scale - s.nameY), be.fillText(" " + (S.previousShameCount ? S.previousShameCount : 0), S.x - d - T / 2 + be.measureText(k) .width / 2 + s.crownPad, S.y - h - S.scale - s.nameY), be.fillStyle = "#fff") } S.health > 0 && (s.healthBarWidth, be.fillStyle = ot, be.roundRect(S.x - d - s.healthBarWidth - s.healthBarPad, S.y - h + S.scale + s.nameY, 2 * s.healthBarWidth + 2 * s.healthBarPad, 17, 8), be.fill(), be.fillStyle = S == L || S.team && S.team == L.team ? "#8ecc51" : "#cc5151", be.roundRect(S.x - d - s.healthBarWidth, S.y - h + S.scale + s.nameY + s.healthBarPad, 2 * s.healthBarWidth * (S.health / S.maxHealth), 17 - 2 * s.healthBarPad, 7), be.fill()), global_functions_exporter.myPlayerBundleObject = L; try { if(S.isPlayer && global_functions_exporter.playerList && global_functions_exporter.playerList[S.sid]) { let e = global_functions_exporter.playerList[S.sid]; s.healthBarWidth, be.fillStyle = ot, be.roundRect(S.x - d - s.healthBarPad, S.y - h + S.scale + s.nameY - 13, s.healthBarWidth + 2 * s.healthBarPad, 17, 8), be.fill(), be.fillStyle = e.sCd <= 0 ? "#cc6666" : `hsl(${50*e.sCd}, 50%, 60%)`, be.roundRect(S.x - d, S.y - h + S.scale + s.nameY + s.healthBarPad - 13, 2 * s.healthBarWidth / 2 * (null != e.secondary ? (window.globalWeaponsList.find(t => t.id === e.secondary) .cd - (e.sCd < 0 ? 0 : e.sCd)) / window.globalWeaponsList.find(t => t.id === e.secondary) .cd : 1), 17 - 2 * s.healthBarPad, 7), be.fill(), s.healthBarWidth, be.fillStyle = ot, be.roundRect(S.x - d - s.healthBarWidth - s.healthBarPad, S.y - h + S.scale + s.nameY - 13, s.healthBarWidth + 2 * s.healthBarPad, 17, 8), be.fill(), be.fillStyle = e.pCd <= 0 ? "#cc6666" : `hsl(${50*e.pCd}, 50%, 60%)`, be.roundRect(S.x - d - s.healthBarWidth, S.y - h + S.scale + s.nameY + s.healthBarPad - 13, 2 * s.healthBarWidth / 2 * (null != e.primary ? (window.globalWeaponsList.find(t => t.id === e.primary) .cd - (e.pCd < 0 ? 0 : e.pCd)) / window.globalWeaponsList.find(t => t.id === e.primary) .cd : 1), 17 - 2 * s.healthBarPad, 7), be.fill(), s.healthBarWidth, be.fillStyle = ot, be.roundRect(S.x - d - s.healthBarWidth - s.healthBarPad, S.y - h + S.scale + s.nameY + 13, 2 * s.healthBarWidth + 2 * s.healthBarPad, 17, 8), be.fill(), be.fillStyle = "#aaa9ad", be.roundRect(S.x - d - s.healthBarWidth, S.y - h + S.scale + s.nameY + s.healthBarPad + 13, 2 * s.healthBarWidth * (e.turretCd <= 0 ? 1 : (22 - e.turretCd) / 22), 17 - 2 * s.healthBarPad, 7), be.fill() } } catch (e) { console.error(e) } } for(g.update(M, be, d, h), a = 0; a < z.length; ++a) if((S = z[a]) .visible && S.chatCountdown > 0) { S.chatCountdown -= M, S.chatCountdown <= 0 && (S.chatCountdown = 0), be.font = "32px Hammersmith One"; var D = be.measureText(S.chatMessage); be.textBaseline = "middle", be.textAlign = "center", B = S.x - d, x = S.y - S.scale - h - 90; var _ = D.width + 17; be.fillStyle = "rgba(0,0,0,0.2)", be.roundRect(B - _ / 2, x - 23.5, _, 47, 6), be.fill(), be.fillStyle = "#fff", be.fillText(S.chatMessage, B, x) }! function (e) { if(L && L.alive) { Ze.clearRect(0, 0, Qe.width, Qe.height), Ze.strokeStyle = "#fff", Ze.lineWidth = 4; for(var t = 0; t < Wt.length; ++t)(Yt = Wt[t]) .update(Ze, e); if(Ze.globalAlpha = 1, Ze.fillStyle = "#fff", ar(L.x / s.mapScale * Qe.width, L.y / s.mapScale * Qe.height, 7, Ze, !0), Ze.fillStyle = "rgba(255,255,255,0.35)", L.team && It) for(t = 0; t < It.length;) ar(It[t] / s.mapScale * Qe.width, It[t + 1] / s.mapScale * Qe.height, 7, Ze, !0), t += 2; Ct && (Ze.fillStyle = "#fc5553", Ze.font = "34px Hammersmith One", Ze.textBaseline = "middle", Ze.textAlign = "center", Ze.fillText("x", Ct.x / s.mapScale * Qe.width, Ct.y / s.mapScale * Qe.height)), Tt && (Ze.fillStyle = "#fff", Ze.font = "34px Hammersmith One", Ze.textBaseline = "middle", Ze.textAlign = "center", Ze.fillText("x", Tt.x / s.mapScale * Qe.width, Tt.y / s.mapScale * Qe.height)) } }(M), -1 !== ie.id && Xn(ie.startX, ie.startY, ie.currentX, ie.currentY), -1 !== oe.id && Xn(oe.startX, oe.startY, oe.currentX, oe.currentY) }(), window.requestAnimFrame(e) }(), window.openLink = Lr, window.aJoinReq = Vt, window.follmoo = function () { U || (U = !0, k("moofoll", 1)) }, window.kickFromClan = jt, window.sendJoin = Xt, window.leaveAlliance = Rt, window.createAlliance = Ut, window.storeBuy = Zt, window.storeEquip = Kt, window.showItemInfo = kt, window.selectSkinColor = function (e) { ae = e, tn() }, window.changeStoreIndex = function (e) { Ft != e && (Ft = e, Gt()) }, window.config = s, setInterval(() => { _r = !_r, window.requestAnimFrame(e) }, 39e4) }, function (e, t) { ! function (e, t, n) { function r(e, t) { return typeof e === t } var i = [] , o = [] , a = { _version: "3.5.0" , _config: { classPrefix: "" , enableClasses: !0 , enableJSClass: !0 , usePrefixes: !0 } , _q: [] , on: function (e, t) { var n = this; setTimeout(function () { t(n[e]) }, 0) } , addTest: function (e, t, n) { o.push({ name: e , fn: t , options: n }) } , addAsyncTest: function (e) { o.push({ name: null , fn: e }) } } , s = function () {}; s.prototype = a, s = new s; var l = t.documentElement , c = "svg" === l.nodeName.toLowerCase(); s.addTest("passiveeventlisteners", function () { var t = !1; try { var n = Object.defineProperty({}, "passive", { get: function () { t = !0 } }); e.addEventListener("test", null, n) } catch (e) {} return t }) , function () { var e, t, n, a, l, c; for(var u in o) if(o.hasOwnProperty(u)) { if(e = [], (t = o[u]) .name && (e.push(t.name.toLowerCase()), t.options && t.options.aliases && t.options.aliases.length)) for(n = 0; n < t.options.aliases.length; n++) e.push(t.options.aliases[n].toLowerCase()); for(a = r(t.fn, "function") ? t.fn() : t.fn, l = 0; l < e.length; l++) 1 === (c = e[l].split(".")) .length ? s[c[0]] = a : (!s[c[0]] || s[c[0]] instanceof Boolean || (s[c[0]] = new Boolean(s[c[0]])), s[c[0]][c[1]] = a), i.push((a ? "" : "no-") + c.join("-")) } }() , function (e) { var t = l.className , n = s._config.classPrefix || ""; if(c && (t = t.baseVal), s._config.enableJSClass) { var r = new RegExp("(^|\\s)" + n + "no-js(\\s|$)"); t = t.replace(r, "$1" + n + "js$2") } s._config.enableClasses && (t += " " + n + e.join(" " + n), c ? l.className.baseVal = t : l.className = t) }(i), delete a.addTest, delete a.addAsyncTest; for(var u = 0; u < s._q.length; u++) s._q[u](); e.Modernizr = s }(window, document) }, function (e, t, n) { var r = n(24); n(19), e.exports = { socket: null , connected: !1 , socketId: -1 , connect: function (e, t, n) { if(!this.socket) { var i = this; try { var o = !1 , a = e; this.socket = new WebSocket(a), this.socket.binaryType = "arraybuffer", this.socket.onmessage = function (e) { var t = new Uint8Array(e.data) , o = r.decode(t) , a = o[0]; t = o[1], "io-init" == a ? i.socketId = t[0] : n[a].apply(void 0, t) }, this.socket.onopen = function () { i.connected = !0, t() }, this.socket.onclose = function (e) { i.connected = !1, 4001 == e.code ? t("Invalid Connection") : o || t("disconnected") }, this.socket.onerror = function (e) { this.socket && this.socket.readyState != WebSocket.OPEN && (o = !0, console.error("Socket error", arguments), t("Socket error")) } } catch (e) { console.warn("Socket connection error:", e), t(e) } } } , send: function (e) { var t = Array.prototype.slice.call(arguments, 1) , n = r.encode([e, t]); this.socket.send(n) } , socketReady: function () { return this.socket && this.connected } , close: function () { this.socket && this.socket.close() } } }, function (e, t, n) { t.encode = n(9) .encode, t.decode = n(15) .decode, t.Encoder = n(37) .Encoder, t.Decoder = n(38) .Decoder, t.createCodec = n(39) .createCodec, t.codec = n(40) .codec }, function (e, t, n) { (function (t) { function n(e) { return e && e.isBuffer && e } e.exports = n(void 0 !== t && t) || n(this.Buffer) || n("undefined" != typeof window && window.Buffer) || this.Buffer }) .call(this, n(11) .Buffer) }, function (e, t, n) { t.byteLength = function (e) { var t = c(e) , n = t[0] , r = t[1]; return 3 * (n + r) / 4 - r }, t.toByteArray = function (e) { var t, n, r = c(e) , a = r[0] , s = r[1] , l = new o(3 * (a + s) / 4 - s) , u = 0 , f = s > 0 ? a - 4 : a; for(n = 0; n < f; n += 4) t = i[e.charCodeAt(n)] << 18 | i[e.charCodeAt(n + 1)] << 12 | i[e.charCodeAt(n + 2)] << 6 | i[e.charCodeAt(n + 3)], l[u++] = t >> 16 & 255, l[u++] = t >> 8 & 255, l[u++] = 255 & t; return 2 === s && (t = i[e.charCodeAt(n)] << 2 | i[e.charCodeAt(n + 1)] >> 4, l[u++] = 255 & t), 1 === s && (t = i[e.charCodeAt(n)] << 10 | i[e.charCodeAt(n + 1)] << 4 | i[e.charCodeAt(n + 2)] >> 2, l[u++] = t >> 8 & 255, l[u++] = 255 & t), l }, t.fromByteArray = function (e) { for(var t, n = e.length, i = n % 3, o = [], a = 0, s = n - i; a < s; a += 16383) o.push(f(e, a, a + 16383 > s ? s : a + 16383)); return 1 === i ? (t = e[n - 1], o.push(r[t >> 2] + r[t << 4 & 63] + "==")) : 2 === i && (t = (e[n - 2] << 8) + e[n - 1], o.push(r[t >> 10] + r[t >> 4 & 63] + r[t << 2 & 63] + "=")), o.join("") }; for(var r = [], i = [], o = "undefined" != typeof Uint8Array ? Uint8Array : Array, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s = 0, l = a.length; s < l; ++s) r[s] = a[s], i[a.charCodeAt(s)] = s; function c(e) { var t = e.length; if(t % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4"); var n = e.indexOf("="); return -1 === n && (n = t), [n, n === t ? 0 : 4 - n % 4] } function u(e) { return r[e >> 18 & 63] + r[e >> 12 & 63] + r[e >> 6 & 63] + r[63 & e] } function f(e, t, n) { for(var r, i = [], o = t; o < n; o += 3) r = (e[o] << 16 & 16711680) + (e[o + 1] << 8 & 65280) + (255 & e[o + 2]), i.push(u(r)); return i.join("") } i["-".charCodeAt(0)] = 62, i["_".charCodeAt(0)] = 63 }, function (e, t) { var n = {}.toString; e.exports = Array.isArray || function (e) { return "[object Array]" == n.call(e) } }, function (e, t, n) { var r = n(0); function i(e) { return new Array(e) }(t = e.exports = i(0)) .alloc = i, t.concat = r.concat, t.from = function (e) { if(!r.isBuffer(e) && r.isView(e)) e = r.Uint8Array.from(e); else if(r.isArrayBuffer(e)) e = new Uint8Array(e); else { if("string" == typeof e) return r.from.call(t, e); if("number" == typeof e) throw new TypeError('"value" argument must not be a number') } return Array.prototype.slice.call(e) } }, function (e, t, n) { var r = n(0) , i = r.global; function o(e) { return new i(e) }(t = e.exports = r.hasBuffer ? o(0) : []) .alloc = r.hasBuffer && i.alloc || o, t.concat = r.concat, t.from = function (e) { if(!r.isBuffer(e) && r.isView(e)) e = r.Uint8Array.from(e); else if(r.isArrayBuffer(e)) e = new Uint8Array(e); else { if("string" == typeof e) return r.from.call(t, e); if("number" == typeof e) throw new TypeError('"value" argument must not be a number') } return i.from && 1 !== i.from.length ? i.from(e) : new i(e) } }, function (e, t, n) { var r = n(0); function i(e) { return new Uint8Array(e) }(t = e.exports = r.hasArrayBuffer ? i(0) : []) .alloc = i, t.concat = r.concat, t.from = function (e) { if(r.isView(e)) { var n = e.byteOffset , i = e.byteLength; (e = e.buffer) .byteLength !== i && (e.slice ? e = e.slice(n, n + i) : (e = new Uint8Array(e)) .byteLength !== i && (e = Array.prototype.slice.call(e, n, n + i))) } else { if("string" == typeof e) return r.from.call(t, e); if("number" == typeof e) throw new TypeError('"value" argument must not be a number') } return new Uint8Array(e) } }, function (e, t) { t.copy = function (e, t, n, r) { var i; n || (n = 0), r || 0 === r || (r = this.length), t || (t = 0); var o = r - n; if(e === this && n < t && t < r) for(i = o - 1; i >= 0; i--) e[i + t] = this[i + n]; else for(i = 0; i < o; i++) e[i + t] = this[i + n]; return o }, t.toString = function (e, t, n) { var r = 0 | t; n || (n = this.length); for(var i = "", o = 0; r < n;)(o = this[r++]) < 128 ? i += String.fromCharCode(o) : (192 == (224 & o) ? o = (31 & o) << 6 | 63 & this[r++] : 224 == (240 & o) ? o = (15 & o) << 12 | (63 & this[r++]) << 6 | 63 & this[r++] : 240 == (248 & o) && (o = (7 & o) << 18 | (63 & this[r++]) << 12 | (63 & this[r++]) << 6 | 63 & this[r++]), o >= 65536 ? (o -= 65536, i += String.fromCharCode(55296 + (o >>> 10), 56320 + (1023 & o))) : i += String.fromCharCode(o)); return i }, t.write = function (e, t) { for(var n = t || (t |= 0), r = e.length, i = 0, o = 0; o < r;)(i = e.charCodeAt(o++)) < 128 ? this[n++] = i : i < 2048 ? (this[n++] = 192 | i >>> 6, this[n++] = 128 | 63 & i) : i < 55296 || i > 57343 ? (this[n++] = 224 | i >>> 12, this[n++] = 128 | i >>> 6 & 63, this[n++] = 128 | 63 & i) : (i = 65536 + (i - 55296 << 10 | e.charCodeAt(o++) - 56320), this[n++] = 240 | i >>> 18, this[n++] = 128 | i >>> 12 & 63, this[n++] = 128 | i >>> 6 & 63, this[n++] = 128 | 63 & i); return n - t } }, function (e, t, n) { t.setExtPackers = function (e) { e.addExtPacker(14, Error, [f, l]), e.addExtPacker(1, EvalError, [f, l]), e.addExtPacker(2, RangeError, [f, l]), e.addExtPacker(3, ReferenceError, [f, l]), e.addExtPacker(4, SyntaxError, [f, l]), e.addExtPacker(5, TypeError, [f, l]), e.addExtPacker(6, URIError, [f, l]), e.addExtPacker(10, RegExp, [u, l]), e.addExtPacker(11, Boolean, [c, l]), e.addExtPacker(12, String, [c, l]), e.addExtPacker(13, Date, [Number, l]), e.addExtPacker(15, Number, [c, l]), "undefined" != typeof Uint8Array && (e.addExtPacker(17, Int8Array, a), e.addExtPacker(18, Uint8Array, a), e.addExtPacker(19, Int16Array, a), e.addExtPacker(20, Uint16Array, a), e.addExtPacker(21, Int32Array, a), e.addExtPacker(22, Uint32Array, a), e.addExtPacker(23, Float32Array, a), "undefined" != typeof Float64Array && e.addExtPacker(24, Float64Array, a), "undefined" != typeof Uint8ClampedArray && e.addExtPacker(25, Uint8ClampedArray, a), e.addExtPacker(26, ArrayBuffer, a), e.addExtPacker(29, DataView, a)), i.hasBuffer && e.addExtPacker(27, o, i.from) }; var r, i = n(0) , o = i.global , a = i.Uint8Array.from , s = { name: 1 , message: 1 , stack: 1 , columnNumber: 1 , fileName: 1 , lineNumber: 1 }; function l(e) { return r || (r = n(9) .encode), r(e) } function c(e) { return e.valueOf() } function u(e) { (e = RegExp.prototype.toString.call(e) .split("/")) .shift(); var t = [e.pop()]; return t.unshift(e.join("/")), t } function f(e) { var t = {}; for(var n in s) t[n] = e[n]; return t } }, function (e, t, n) { var r = n(5) , i = n(7) , o = i.Uint64BE , a = i.Int64BE , s = n(0) , l = n(6) , c = n(34) , u = n(13) .uint8 , f = n(3) .ExtBuffer , d = "undefined" != typeof Uint8Array , h = "undefined" != typeof Map , p = []; p[1] = 212, p[2] = 213, p[4] = 214, p[8] = 215, p[16] = 216, t.getWriteType = function (e) { var t = c.getWriteToken(e) , n = e && e.useraw , i = d && e && e.binarraybuffer , A = i ? s.isArrayBuffer : s.isBuffer , g = i ? function (e, t) { v(e, new Uint8Array(t)) } : v , m = h && e && e.usemap ? function (e, n) { if(!(n instanceof Map)) return b(e, n); var r = n.size; t[r < 16 ? 128 + r : r <= 65535 ? 222 : 223](e, r); var i = e.codec.encode; n.forEach(function (t, n, r) { i(e, n), i(e, t) }) } : b; return { boolean: function (e, n) { t[n ? 195 : 194](e, n) } , function: w , number: function (e, n) { var r = 0 | n; n === r ? t[-32 <= r && r <= 127 ? 255 & r : 0 <= r ? r <= 255 ? 204 : r <= 65535 ? 205 : 206 : -128 <= r ? 208 : -32768 <= r ? 209 : 210](e, r) : t[203](e, n) } , object: n ? function (e, n) { if(A(n)) return function (e, n) { var r = n.length; t[r < 32 ? 160 + r : r <= 65535 ? 218 : 219](e, r), e.send(n) }(e, n); y(e, n) } : y , string: function (e) { return function (n, r) { var i = r.length , o = 5 + 3 * i; n.offset = n.reserve(o); var a = n.buffer , s = e(i) , c = n.offset + s; i = l.write.call(a, r, c); var u = e(i); if(s !== u) { var f = c + u - s , d = c + i; l.copy.call(a, a, f, c, d) } t[1 === u ? 160 + i : u <= 3 ? 215 + u : 219](n, i), n.offset += i } }(n ? function (e) { return e < 32 ? 1 : e <= 65535 ? 3 : 5 } : function (e) { return e < 32 ? 1 : e <= 255 ? 2 : e <= 65535 ? 3 : 5 }) , symbol: w , undefined: w }; function y(e, n) { if(null === n) return w(e, n); if(A(n)) return g(e, n); if(r(n)) return function (e, n) { var r = n.length; t[r < 16 ? 144 + r : r <= 65535 ? 220 : 221](e, r); for(var i = e.codec.encode, o = 0; o < r; o++) i(e, n[o]) }(e, n); if(o.isUint64BE(n)) return function (e, n) { t[207](e, n.toArray()) }(e, n); if(a.isInt64BE(n)) return function (e, n) { t[211](e, n.toArray()) }(e, n); var i = e.codec.getExtPacker(n); if(i && (n = i(n)), n instanceof f) return function (e, n) { var r = n.buffer , i = r.length , o = p[i] || (i < 255 ? 199 : i <= 65535 ? 200 : 201); t[o](e, i), u[n.type](e), e.send(r) }(e, n); m(e, n) } function w(e, n) { t[192](e, n) } function v(e, n) { var r = n.length; t[r < 255 ? 196 : r <= 65535 ? 197 : 198](e, r), e.send(n) } function b(e, n) { var r = Object.keys(n) , i = r.length; t[i < 16 ? 128 + i : i <= 65535 ? 222 : 223](e, i); var o = e.codec.encode; r.forEach(function (t) { o(e, t), o(e, n[t]) }) } } }, function (e, t, n) { var r = n(4) , i = n(7) , o = i.Uint64BE , a = i.Int64BE , s = n(13) .uint8 , l = n(0) , c = l.global , u = l.hasBuffer && "TYPED_ARRAY_SUPPORT" in c && !c.TYPED_ARRAY_SUPPORT , f = l.hasBuffer && c.prototype || {}; function d() { var e = s.slice(); return e[196] = h(196), e[197] = p(197), e[198] = A(198), e[199] = h(199), e[200] = p(200), e[201] = A(201), e[202] = g(202, 4, f.writeFloatBE || w, !0), e[203] = g(203, 8, f.writeDoubleBE || v, !0), e[204] = h(204), e[205] = p(205), e[206] = A(206), e[207] = g(207, 8, m), e[208] = h(208), e[209] = p(209), e[210] = A(210), e[211] = g(211, 8, y), e[217] = h(217), e[218] = p(218), e[219] = A(219), e[220] = p(220), e[221] = A(221), e[222] = p(222), e[223] = A(223), e } function h(e) { return function (t, n) { var r = t.reserve(2) , i = t.buffer; i[r++] = e, i[r] = n } } function p(e) { return function (t, n) { var r = t.reserve(3) , i = t.buffer; i[r++] = e, i[r++] = n >>> 8, i[r] = n } } function A(e) { return function (t, n) { var r = t.reserve(5) , i = t.buffer; i[r++] = e, i[r++] = n >>> 24, i[r++] = n >>> 16, i[r++] = n >>> 8, i[r] = n } } function g(e, t, n, r) { return function (i, o) { var a = i.reserve(t + 1); i.buffer[a++] = e, n.call(i.buffer, o, a, r) } } function m(e, t) { new o(this, t, e) } function y(e, t) { new a(this, t, e) } function w(e, t) { r.write(this, e, t, !1, 23, 4) } function v(e, t) { r.write(this, e, t, !1, 52, 8) } t.getWriteToken = function (e) { return e && e.uint8array ? function () { var e = d(); return e[202] = g(202, 4, w), e[203] = g(203, 8, v), e }() : u || l.hasBuffer && e && e.safe ? function () { var e = s.slice(); return e[196] = g(196, 1, c.prototype.writeUInt8), e[197] = g(197, 2, c.prototype.writeUInt16BE), e[198] = g(198, 4, c.prototype.writeUInt32BE), e[199] = g(199, 1, c.prototype.writeUInt8), e[200] = g(200, 2, c.prototype.writeUInt16BE), e[201] = g(201, 4, c.prototype.writeUInt32BE), e[202] = g(202, 4, c.prototype.writeFloatBE), e[203] = g(203, 8, c.prototype.writeDoubleBE), e[204] = g(204, 1, c.prototype.writeUInt8), e[205] = g(205, 2, c.prototype.writeUInt16BE), e[206] = g(206, 4, c.prototype.writeUInt32BE), e[207] = g(207, 8, m), e[208] = g(208, 1, c.prototype.writeInt8), e[209] = g(209, 2, c.prototype.writeInt16BE), e[210] = g(210, 4, c.prototype.writeInt32BE), e[211] = g(211, 8, y), e[217] = g(217, 1, c.prototype.writeUInt8), e[218] = g(218, 2, c.prototype.writeUInt16BE), e[219] = g(219, 4, c.prototype.writeUInt32BE), e[220] = g(220, 2, c.prototype.writeUInt16BE), e[221] = g(221, 4, c.prototype.writeUInt32BE), e[222] = g(222, 2, c.prototype.writeUInt16BE), e[223] = g(223, 4, c.prototype.writeUInt32BE), e }() : d() } }, function (e, t, n) { t.setExtUnpackers = function (e) { e.addExtUnpacker(14, [s, c(Error)]), e.addExtUnpacker(1, [s, c(EvalError)]), e.addExtUnpacker(2, [s, c(RangeError)]), e.addExtUnpacker(3, [s, c(ReferenceError)]), e.addExtUnpacker(4, [s, c(SyntaxError)]), e.addExtUnpacker(5, [s, c(TypeError)]), e.addExtUnpacker(6, [s, c(URIError)]), e.addExtUnpacker(10, [s, l]), e.addExtUnpacker(11, [s, u(Boolean)]), e.addExtUnpacker(12, [s, u(String)]), e.addExtUnpacker(13, [s, u(Date)]), e.addExtUnpacker(15, [s, u(Number)]), "undefined" != typeof Uint8Array && (e.addExtUnpacker(17, u(Int8Array)), e.addExtUnpacker(18, u(Uint8Array)), e.addExtUnpacker(19, [f, u(Int16Array)]), e.addExtUnpacker(20, [f, u(Uint16Array)]), e.addExtUnpacker(21, [f, u(Int32Array)]), e.addExtUnpacker(22, [f, u(Uint32Array)]), e.addExtUnpacker(23, [f, u(Float32Array)]), "undefined" != typeof Float64Array && e.addExtUnpacker(24, [f, u(Float64Array)]), "undefined" != typeof Uint8ClampedArray && e.addExtUnpacker(25, u(Uint8ClampedArray)), e.addExtUnpacker(26, f), e.addExtUnpacker(29, [f, u(DataView)])), i.hasBuffer && e.addExtUnpacker(27, u(o)) }; var r, i = n(0) , o = i.global , a = { name: 1 , message: 1 , stack: 1 , columnNumber: 1 , fileName: 1 , lineNumber: 1 }; function s(e) { return r || (r = n(15) .decode), r(e) } function l(e) { return RegExp.apply(null, e) } function c(e) { return function (t) { var n = new e; for(var r in a) n[r] = t[r]; return n } } function u(e) { return function (t) { return new e(t) } } function f(e) { return new Uint8Array(e) .buffer } }, function (e, t, n) { var r = n(17); function i(e) { var t, n = new Array(256); for(t = 0; t <= 127; t++) n[t] = o(t); for(t = 128; t <= 143; t++) n[t] = s(t - 128, e.map); for(t = 144; t <= 159; t++) n[t] = s(t - 144, e.array); for(t = 160; t <= 191; t++) n[t] = s(t - 160, e.str); for(n[192] = o(null), n[193] = null, n[194] = o(!1), n[195] = o(!0), n[196] = a(e.uint8, e.bin), n[197] = a(e.uint16, e.bin), n[198] = a(e.uint32, e.bin), n[199] = a(e.uint8, e.ext), n[200] = a(e.uint16, e.ext), n[201] = a(e.uint32, e.ext), n[202] = e.float32, n[203] = e.float64, n[204] = e.uint8, n[205] = e.uint16, n[206] = e.uint32, n[207] = e.uint64, n[208] = e.int8, n[209] = e.int16, n[210] = e.int32, n[211] = e.int64, n[212] = s(1, e.ext), n[213] = s(2, e.ext), n[214] = s(4, e.ext), n[215] = s(8, e.ext), n[216] = s(16, e.ext), n[217] = a(e.uint8, e.str), n[218] = a(e.uint16, e.str), n[219] = a(e.uint32, e.str), n[220] = a(e.uint16, e.array), n[221] = a(e.uint32, e.array), n[222] = a(e.uint16, e.map), n[223] = a(e.uint32, e.map), t = 224; t <= 255; t++) n[t] = o(t - 256); return n } function o(e) { return function () { return e } } function a(e, t) { return function (n) { var r = e(n); return t(n, r) } } function s(e, t) { return function (n) { return t(n, e) } } t.getReadToken = function (e) { var t = r.getReadFormat(e); return e && e.useraw ? function (e) { var t, n = i(e) .slice(); for(n[217] = n[196], n[218] = n[197], n[219] = n[198], t = 160; t <= 191; t++) n[t] = s(t - 160, e.bin); return n }(t) : i(t) } }, function (e, t, n) { t.Encoder = o; var r = n(18) , i = n(10) .EncodeBuffer; function o(e) { if(!(this instanceof o)) return new o(e); i.call(this, e) } o.prototype = new i, r.mixin(o.prototype), o.prototype.encode = function (e) { this.write(e), this.emit("data", this.read()) }, o.prototype.end = function (e) { arguments.length && this.encode(e), this.flush(), this.emit("end") } }, function (e, t, n) { t.Decoder = o; var r = n(18) , i = n(16) .DecodeBuffer; function o(e) { if(!(this instanceof o)) return new o(e); i.call(this, e) } o.prototype = new i, r.mixin(o.prototype), o.prototype.decode = function (e) { arguments.length && this.write(e), this.flush() }, o.prototype.push = function (e) { this.emit("data", e) }, o.prototype.end = function (e) { this.decode(e), this.emit("end") } }, function (e, t, n) { n(8), n(2), t.createCodec = n(1) .createCodec }, function (e, t, n) { n(8), n(2), t.codec = { preset: n(1) .preset } }, function (e, t) { var n, r, i = e.exports = {}; function o() { throw new Error("setTimeout has not been defined") } function a() { throw new Error("clearTimeout has not been defined") } function s(e) { if(n === setTimeout) return setTimeout(e, 0); if((n === o || !n) && setTimeout) return n = setTimeout, setTimeout(e, 0); try { return n(e, 0) } catch (t) { try { return n.call(null, e, 0) } catch (t) { return n.call(this, e, 0) } } }! function () { try { n = "function" == typeof setTimeout ? setTimeout : o } catch (e) { n = o } try { r = "function" == typeof clearTimeout ? clearTimeout : a } catch (e) { r = a } }(); var l, c = [] , u = !1 , f = -1; function d() { u && l && (u = !1, l.length ? c = l.concat(c) : f = -1, c.length && h()) } function h() { if(!u) { var e = s(d); u = !0; for(var t = c.length; t;) { for(l = c, c = []; ++f < t;) l && l[f].run(); f = -1, t = c.length } l = null, u = !1 , function (e) { if(r === clearTimeout) return clearTimeout(e); if((r === a || !r) && clearTimeout) return r = clearTimeout, clearTimeout(e); try { r(e) } catch (t) { try { return r.call(null, e) } catch (t) { return r.call(this, e) } } }(e) } } function p(e, t) { this.fun = e, this.array = t } function A() {} i.nextTick = function (e) { var t = new Array(arguments.length - 1); if(arguments.length > 1) for(var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; c.push(new p(e, t)), 1 !== c.length || u || s(h) }, p.prototype.run = function () { this.fun.apply(null, this.array) }, i.title = "browser", i.browser = !0, i.env = {}, i.argv = [], i.version = "", i.versions = {}, i.on = A, i.addListener = A, i.once = A, i.off = A, i.removeListener = A, i.removeAllListeners = A, i.emit = A, i.prependListener = A, i.prependOnceListener = A, i.listeners = function (e) { return [] }, i.binding = function (e) { throw new Error("process.binding is not supported") }, i.cwd = function () { return "/" }, i.chdir = function (e) { throw new Error("process.chdir is not supported") }, i.umask = function () { return 0 } }, function (e, t) { var n = Math.abs , r = (Math.cos, Math.sin, Math.pow, Math.sqrt) , i = (n = Math.abs, Math.atan2) , o = Math.PI; e.exports.randInt = function (e, t) { return Math.floor(Math.random() * (t - e + 1)) + e }, e.exports.randFloat = function (e, t) { return Math.random() * (t - e + 1) + e }, e.exports.lerp = function (e, t, n) { return e + (t - e) * n }, e.exports.decel = function (e, t) { return e > 0 ? e = Math.max(0, e - t) : e < 0 && (e = Math.min(0, e + t)), e }, e.exports.getDistance = function (e, t, n, i) { return r((n -= e) * n + (i -= t) * i) }, e.exports.getDirection = function (e, t, n, r) { return i(t - r, e - n) }, e.exports.getAngleDist = function (e, t) { var r = n(t - e) % (2 * o); return r > o ? 2 * o - r : r }, e.exports.isNumber = function (e) { return "number" == typeof e && !isNaN(e) && isFinite(e) }, e.exports.isString = function (e) { return e && "string" == typeof e }, e.exports.kFormat = function (e) { return e > 999 ? (e / 1e3) .toFixed(1) + "k" : e }, e.exports.capitalizeFirst = function (e) { return e.charAt(0) .toUpperCase() + e.slice(1) }, e.exports.fixTo = function (e, t) { return parseFloat(e.toFixed(t)) }, e.exports.sortByPoints = function (e, t) { return parseFloat(t.points) - parseFloat(e.points) }, e.exports.lineInRect = function (e, t, n, r, i, o, a, s) { var l = i , c = a; if(i > a && (l = a, c = i), c > n && (c = n), l < e && (l = e), l > c) return !1; var u = o , f = s , d = a - i; if(Math.abs(d) > 1e-7) { var h = (s - o) / d , p = o - h * i; u = h * l + p, f = h * c + p } if(u > f) { var A = f; f = u, u = A } return f > r && (f = r), u < t && (u = t), !(u > f) }, e.exports.containsPoint = function (e, t, n) { var r = e.getBoundingClientRect() , i = r.left + window.scrollX , o = r.top + window.scrollY , a = r.width , s = r.height; return t > i && t < i + a && n > o && n < o + s }, e.exports.mousifyTouchEvent = function (e) { var t = e.changedTouches[0]; e.screenX = t.screenX, e.screenY = t.screenY, e.clientX = t.clientX, e.clientY = t.clientY, e.pageX = t.pageX, e.pageY = t.pageY }, e.exports.hookTouchEvents = function (t, n) { var r = !n , i = !1; function o(n) { e.exports.mousifyTouchEvent(n), window.setUsingTouch(!0), r && (n.preventDefault(), n.stopPropagation()), i && (t.onclick && t.onclick(n), t.onmouseout && t.onmouseout(n), i = !1) } t.addEventListener("touchstart", e.exports.checkTrusted(function (n) { e.exports.mousifyTouchEvent(n), window.setUsingTouch(!0), r && (n.preventDefault(), n.stopPropagation()), t.onmouseover && t.onmouseover(n), i = !0 }), !1), t.addEventListener("touchmove", e.exports.checkTrusted(function (n) { e.exports.mousifyTouchEvent(n), window.setUsingTouch(!0), r && (n.preventDefault(), n.stopPropagation()), e.exports.containsPoint(t, n.pageX, n.pageY) ? i || (t.onmouseover && t.onmouseover(n), i = !0) : i && (t.onmouseout && t.onmouseout(n), i = !1) }), !1), t.addEventListener("touchend", e.exports.checkTrusted(o), !1), t.addEventListener("touchcancel", e.exports.checkTrusted(o), !1), t.addEventListener("touchleave", e.exports.checkTrusted(o), !1) }, e.exports.removeAllChildren = function (e) { for(; e.hasChildNodes();) e.removeChild(e.lastChild) }, e.exports.generateElement = function (t) { var n = document.createElement(t.tag || "div"); function r(e, r) { t[e] && (n[r] = t[e]) } for(var i in r("text", "textContent"), r("html", "innerHTML"), r("class", "className"), t) { switch(i) { case "tag": case "text": case "html": case "class": case "style": case "hookTouch": case "parent": case "children": continue } n[i] = t[i] } if(n.onclick && (n.onclick = e.exports.checkTrusted(n.onclick)), n.onmouseover && (n.onmouseover = e.exports.checkTrusted(n.onmouseover)), n.onmouseout && (n.onmouseout = e.exports.checkTrusted(n.onmouseout)), t.style && (n.style.cssText = t.style), t.hookTouch && e.exports.hookTouchEvents(n), t.parent && t.parent.appendChild(n), t.children) for(var o = 0; o < t.children.length; o++) n.appendChild(t.children[o]); return n }, e.exports.eventIsTrusted = function (e) { return !e || "boolean" != typeof e.isTrusted || e.isTrusted }, e.exports.checkTrusted = function (t) { return function (n) { n && n instanceof Event && e.exports.eventIsTrusted(n) && t(n) } }, e.exports.randomString = function (e) { for(var t = "", n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", r = 0; r < e; r++) t += n.charAt(Math.floor(Math.random() * n.length)); return t }, e.exports.countInArray = function (e, t) { for(var n = 0, r = 0; r < e.length; r++) e[r] === t && n++; return n } }, function (e, t) { e.exports.AnimText = function () { this.init = function (e, t, n, r, i, o, a) { this.x = e, this.y = t, this.color = a, this.scale = n, this.startScale = this.scale, this.maxScale = 1.5 * n, this.scaleSpeed = .7, this.speed = r, this.life = i, this.text = o }, this.update = function (e) { this.life && (this.life -= e, this.y -= this.speed * e, this.scale += this.scaleSpeed * e, this.scale >= this.maxScale ? (this.scale = this.maxScale, this.scaleSpeed *= -1) : this.scale <= this.startScale && (this.scale = this.startScale, this.scaleSpeed = 0), this.life <= 0 && (this.life = 0)) }, this.render = function (e, t, n) { e.fillStyle = this.color, e.font = this.scale + "px Hammersmith One", e.fillText(this.text, this.x - t, this.y - n) } }, e.exports.TextManager = function () { this.texts = [], this.update = function (e, t, n, r) { t.textBaseline = "middle", t.textAlign = "center"; for(var i = 0; i < this.texts.length; ++i) this.texts[i].life && (this.texts[i].update(e), this.texts[i].render(t, n, r)) }, this.showText = function (t, n, r, i, o, a, s) { for(var l, c = 0; c < this.texts.length; ++c) if(!this.texts[c].life) { l = this.texts[c]; break } l || (l = new e.exports.AnimText, this.texts.push(l)), l.init(t, n, r, i, o, a, s) } } }, function (e, t) { e.exports = function (e) { this.sid = e, this.init = function (e, t, n, r, i, o, a) { o = o || {}, this.sentTo = {}, this.gridLocations = [], this.active = !0, this.doUpdate = o.doUpdate, this.x = e, this.y = t, this.dir = n, this.xWiggle = 0, this.yWiggle = 0, this.scale = r, this.type = i, this.id = o.id, this.owner = a, this.name = o.name, this.isItem = null != this.id, this.group = o.group, this.health = o.health, this.layer = 2, null != this.group ? this.layer = this.group.layer : 0 == this.type ? this.layer = 3 : 2 == this.type ? this.layer = 0 : 4 == this.type && (this.layer = -1), this.colDiv = o.colDiv || 1, this.blocker = o.blocker, this.ignoreCollision = o.ignoreCollision, this.dontGather = o.dontGather, this.hideFromEnemy = o.hideFromEnemy, this.friction = o.friction, this.projDmg = o.projDmg, this.dmg = o.dmg, this.pDmg = o.pDmg, this.pps = o.pps, this.zIndex = o.zIndex || 0, this.turnSpeed = o.turnSpeed, this.req = o.req, this.trap = o.trap, this.healCol = o.healCol, this.teleport = o.teleport, this.boostSpeed = o.boostSpeed, this.projectile = o.projectile, this.shootRange = o.shootRange, this.shootRate = o.shootRate, this.shootCount = this.shootRate, this.spawnPoint = o.spawnPoint }, this.changeHealth = function (e, t) { return this.health += e, this.health <= 0 }, this.getScale = function (e, t) { return e = e || 1, this.scale * (this.isItem || 2 == this.type || 3 == this.type || 4 == this.type ? 1 : .6 * e) * (t ? 1 : this.colDiv) }, this.visibleToPlayer = function (e) { return !this.hideFromEnemy || this.owner && (this.owner == e || this.owner.team && e.team == this.owner.team) }, this.update = function (e) { this.active && (this.xWiggle && (this.xWiggle *= Math.pow(.99, e)), this.yWiggle && (this.yWiggle *= Math.pow(.99, e)), this.turnSpeed && (this.dir += this.turnSpeed * e)) } } }, function (e, t) { e.exports.groups = [{ id: 0 , name: "food" , layer: 0 }, { id: 1 , name: "walls" , place: !0 , limit: 30 , layer: 0 }, { id: 2 , name: "spikes" , place: !0 , limit: 15 , layer: 0 }, { id: 3 , name: "mill" , place: !0 , limit: 7 , layer: 1 }, { id: 4 , name: "mine" , place: !0 , limit: 1 , layer: 0 }, { id: 5 , name: "trap" , place: !0 , limit: 6 , layer: -1 }, { id: 6 , name: "booster" , place: !0 , limit: 12 , layer: -1 }, { id: 7 , name: "turret" , place: !0 , limit: 2 , layer: 1 }, { id: 8 , name: "watchtower" , place: !0 , limit: 12 , layer: 1 }, { id: 9 , name: "buff" , place: !0 , limit: 4 , layer: -1 }, { id: 10 , name: "spawn" , place: !0 , limit: 1 , layer: -1 }, { id: 11 , name: "sapling" , place: !0 , limit: 2 , layer: 0 }, { id: 12 , name: "blocker" , place: !0 , limit: 3 , layer: -1 }, { id: 13 , name: "teleporter" , place: !0 , limit: 2 , layer: -1 }], t.projectiles = [{ indx: 0 , layer: 0 , src: "arrow_1" , dmg: 25 , speed: 1.6 , scale: 103 , range: 1e3 }, { indx: 1 , layer: 1 , dmg: 25 , scale: 20 }, { indx: 0 , layer: 0 , src: "arrow_1" , dmg: 35 , speed: 2.5 , scale: 103 , range: 1200 }, { indx: 0 , layer: 0 , src: "arrow_1" , dmg: 30 , speed: 2 , scale: 103 , range: 1200 }, { indx: 1 , layer: 1 , dmg: 16 , scale: 20 }, { indx: 0 , layer: 0 , src: "bullet_1" , dmg: 50 , speed: 3.6 , scale: 160 , range: 1400 }], t.weapons = [{ id: 0 , type: 0 , name: "tool hammer" , desc: "tool for gathering all resources" , src: "hammer_1" , length: 140 , width: 140 , xOff: -3 , yOff: 18 , dmg: 25 , range: 65 , gather: 1 , speed: 300 }, { id: 1 , type: 0 , age: 2 , name: "hand axe" , desc: "gathers resources at a higher rate" , src: "axe_1" , length: 140 , width: 140 , xOff: 3 , yOff: 24 , dmg: 30 , spdMult: 1 , range: 70 , gather: 2 , speed: 400 }, { id: 2 , type: 0 , age: 8 , name: "great axe" , desc: "deal more damage and gather more resources" , src: "great_axe_1" , length: 140 , width: 140 , xOff: -8 , yOff: 25 , dmg: 35 , spdMult: 1 , range: 75 , gather: 4 , speed: 400 }, { id: 3 , type: 0 , age: 2 , name: "short sword" , desc: "increased attack power but slower move speed" , src: "sword_1" , iPad: 1.3 , length: 130 , width: 210 , xOff: -8 , yOff: 46 , dmg: 35 , spdMult: .85 , range: 110 , gather: 1 , speed: 300 }, { id: 4 , type: 0 , age: 8 , name: "katana" , desc: "greater range and damage" , src: "samurai_1" , iPad: 1.3 , length: 130 , width: 210 , xOff: -8 , yOff: 59 , dmg: 40 , spdMult: .8 , range: 118 , gather: 1 , speed: 300 }, { id: 5 , type: 0 , age: 2 , name: "polearm" , desc: "long range melee weapon" , src: "spear_1" , iPad: 1.3 , length: 130 , width: 210 , xOff: -8 , yOff: 53 , dmg: 45 , knock: .2 , spdMult: .82 , range: 142 , gather: 1 , speed: 700 }, { id: 6 , type: 0 , age: 2 , name: "bat" , desc: "fast long range melee weapon" , src: "bat_1" , iPad: 1.3 , length: 110 , width: 180 , xOff: -8 , yOff: 53 , dmg: 20 , knock: .7 , range: 110 , gather: 1 , speed: 300 }, { id: 7 , type: 0 , age: 2 , name: "daggers" , desc: "really fast short range weapon" , src: "dagger_1" , iPad: .8 , length: 110 , width: 110 , xOff: 18 , yOff: 0 , dmg: 20 , knock: .1 , range: 65 , gather: 1 , hitSlow: .1 , spdMult: 1.13 , speed: 100 }, { id: 8 , type: 0 , age: 2 , name: "stick" , desc: "great for gathering but very weak" , src: "stick_1" , length: 140 , width: 140 , xOff: 3 , yOff: 24 , dmg: 1 , spdMult: 1 , range: 70 , gather: 7 , speed: 400 }, { id: 9 , type: 1 , age: 6 , name: "hunting bow" , desc: "bow used for ranged combat and hunting" , src: "bow_1" , req: ["wood", 4] , length: 120 , width: 120 , xOff: -6 , yOff: 0 , projectile: 0 , spdMult: .75 , speed: 600 }, { id: 10 , type: 1 , age: 6 , name: "great hammer" , desc: "hammer used for destroying structures" , src: "great_hammer_1" , length: 140 , width: 140 , xOff: -9 , yOff: 25 , dmg: 10 , spdMult: .88 , range: 75 , sDmg: 7.5 , gather: 1 , speed: 400 }, { id: 11 , type: 1 , age: 6 , name: "wooden shield" , desc: "blocks projectiles and reduces melee damage" , src: "shield_1" , length: 120 , width: 120 , shield: .2 , xOff: 6 , yOff: 0 , spdMult: .7 }, { id: 12 , type: 1 , age: 8 , name: "crossbow" , desc: "deals more damage and has greater range" , src: "crossbow_1" , req: ["wood", 5] , aboveHand: !0 , armS: .75 , length: 120 , width: 120 , xOff: -4 , yOff: 0 , projectile: 2 , spdMult: .7 , speed: 700 }, { id: 13 , type: 1 , age: 9 , name: "repeater crossbow" , desc: "high firerate crossbow with reduced damage" , src: "crossbow_2" , req: ["wood", 10] , aboveHand: !0 , armS: .75 , length: 120 , width: 120 , xOff: -4 , yOff: 0 , projectile: 3 , spdMult: .7 , speed: 230 }, { id: 14 , type: 1 , age: 6 , name: "mc grabby" , desc: "steals resources from enemies" , src: "grab_1" , length: 130 , width: 210 , xOff: -8 , yOff: 53 , dmg: 0 , steal: 250 , knock: .2 , spdMult: 1.05 , range: 125 , gather: 0 , speed: 700 }, { id: 15 , type: 1 , age: 9 , name: "musket" , desc: "slow firerate but high damage and range" , src: "musket_1" , req: ["stone", 10] , aboveHand: !0 , rec: .35 , armS: .6 , hndS: .3 , hndD: 1.6 , length: 205 , width: 205 , xOff: 25 , yOff: 0 , projectile: 5 , hideProjectile: !0 , spdMult: .6 , speed: 1500 }], e.exports.list = [{ group: e.exports.groups[0] , name: "apple" , desc: "restores 20 health when consumed" , req: ["food", 10] , consume: function (e) { return e.changeHealth(20, e) } , scale: 22 , holdOffset: 15 }, { age: 3 , group: e.exports.groups[0] , name: "cookie" , desc: "restores 40 health when consumed" , req: ["food", 15] , consume: function (e) { return e.changeHealth(40, e) } , scale: 27 , holdOffset: 15 }, { age: 7 , group: e.exports.groups[0] , name: "cheese" , desc: "restores 30 health and another 50 over 5 seconds" , req: ["food", 25] , consume: function (e) { return !!(e.changeHealth(30, e) || e.health < 100) && (e.dmgOverTime.dmg = -10, e.dmgOverTime.doer = e, e.dmgOverTime.time = 5, !0) } , scale: 27 , holdOffset: 15 }, { group: e.exports.groups[1] , name: "wood wall" , desc: "provides protection for your village" , req: ["wood", 10] , projDmg: !0 , health: 380 , scale: 50 , holdOffset: 20 , placeOffset: -5 }, { age: 3 , group: e.exports.groups[1] , name: "stone wall" , desc: "provides improved protection for your village" , req: ["stone", 25] , health: 900 , scale: 50 , holdOffset: 20 , placeOffset: -5 }, { age: 7 , group: e.exports.groups[1] , name: "castle wall" , desc: "provides powerful protection for your village" , req: ["stone", 35] , health: 1500 , scale: 52 , holdOffset: 20 , placeOffset: -5 }, { group: e.exports.groups[2] , name: "spikes" , desc: "damages enemies when they touch them" , req: ["wood", 20, "stone", 5] , health: 400 , dmg: 20 , scale: 49 , spritePadding: -23 , holdOffset: 8 , placeOffset: -5 }, { age: 5 , group: e.exports.groups[2] , name: "greater spikes" , desc: "damages enemies when they touch them" , req: ["wood", 30, "stone", 10] , health: 500 , dmg: 35 , scale: 52 , spritePadding: -23 , holdOffset: 8 , placeOffset: -5 }, { age: 9 , group: e.exports.groups[2] , name: "poison spikes" , desc: "poisons enemies when they touch them" , req: ["wood", 35, "stone", 15] , health: 600 , dmg: 30 , pDmg: 5 , scale: 52 , spritePadding: -23 , holdOffset: 8 , placeOffset: -5 }, { age: 9 , group: e.exports.groups[2] , name: "spinning spikes" , desc: "damages enemies when they touch them" , req: ["wood", 30, "stone", 20] , health: 500 , dmg: 45 , turnSpeed: .003 , scale: 52 , spritePadding: -23 , holdOffset: 8 , placeOffset: -5 }, { group: e.exports.groups[3] , name: "windmill" , desc: "generates gold over time" , req: ["wood", 50, "stone", 10] , health: 400 , pps: 1 , turnSpeed: 0 , spritePadding: 25 , iconLineMult: 12 , scale: 45 , holdOffset: 20 , placeOffset: 5 }, { age: 5 , group: e.exports.groups[3] , name: "faster windmill" , desc: "generates more gold over time" , req: ["wood", 60, "stone", 20] , health: 500 , pps: 1.5 , turnSpeed: 0 , spritePadding: 25 , iconLineMult: 12 , scale: 47 , holdOffset: 20 , placeOffset: 5 }, { age: 8 , group: e.exports.groups[3] , name: "power mill" , desc: "generates more gold over time" , req: ["wood", 100, "stone", 50] , health: 800 , pps: 2 , turnSpeed: 0 , spritePadding: 25 , iconLineMult: 12 , scale: 47 , holdOffset: 20 , placeOffset: 5 }, { age: 5 , group: e.exports.groups[4] , type: 2 , name: "mine" , desc: "allows you to mine stone" , req: ["wood", 20, "stone", 100] , iconLineMult: 12 , scale: 65 , holdOffset: 20 , placeOffset: 0 }, { age: 5 , group: e.exports.groups[11] , type: 0 , name: "sapling" , desc: "allows you to farm wood" , req: ["wood", 150] , iconLineMult: 12 , colDiv: .5 , scale: 110 , holdOffset: 50 , placeOffset: -15 }, { age: 4 , group: e.exports.groups[5] , name: "pit trap" , desc: "pit that traps enemies if they walk over it" , req: ["wood", 30, "stone", 30] , trap: !0 , ignoreCollision: !0 , hideFromEnemy: !0 , health: 500 , colDiv: .2 , scale: 50 , holdOffset: 20 , placeOffset: -5 }, { age: 4 , group: e.exports.groups[6] , name: "boost pad" , desc: "provides boost when stepped on" , req: ["stone", 20, "wood", 5] , ignoreCollision: !0 , boostSpeed: 1.5 , health: 150 , colDiv: .7 , scale: 45 , holdOffset: 20 , placeOffset: -5 }, { age: 7 , group: e.exports.groups[7] , doUpdate: !0 , name: "turret" , desc: "defensive structure that shoots at enemies" , req: ["wood", 200, "stone", 150] , health: 800 , projectile: 1 , shootRange: 700 , shootRate: 2200 , scale: 43 , holdOffset: 20 , placeOffset: -5 }, { age: 7 , group: e.exports.groups[8] , name: "platform" , desc: "platform to shoot over walls and cross over water" , req: ["wood", 20] , ignoreCollision: !0 , zIndex: 1 , health: 300 , scale: 43 , holdOffset: 20 , placeOffset: -5 }, { age: 7 , group: e.exports.groups[9] , name: "healing pad" , desc: "standing on it will slowly heal you" , req: ["wood", 30, "food", 10] , ignoreCollision: !0 , healCol: 15 , health: 400 , colDiv: .7 , scale: 45 , holdOffset: 20 , placeOffset: -5 }, { age: 9 , group: e.exports.groups[10] , name: "spawn pad" , desc: "you will spawn here when you die but it will dissapear" , req: ["wood", 100, "stone", 100] , health: 400 , ignoreCollision: !0 , spawnPoint: !0 , scale: 45 , holdOffset: 20 , placeOffset: -5 }, { age: 7 , group: e.exports.groups[12] , name: "blocker" , desc: "blocks building in radius" , req: ["wood", 30, "stone", 25] , ignoreCollision: !0 , blocker: 300 , health: 400 , colDiv: .7 , scale: 45 , holdOffset: 20 , placeOffset: -5 }, { age: 7 , group: e.exports.groups[13] , name: "teleporter" , desc: "teleports you to a random point on the map" , req: ["wood", 60, "stone", 60] , ignoreCollision: !0 , teleport: !0 , health: 200 , colDiv: .7 , scale: 45 , holdOffset: 20 , placeOffset: -5 }]; for(var n = 0; n < e.exports.list.length; ++n) e.exports.list[n].id = n, e.exports.list[n].pre && (e.exports.list[n].pre = n - e.exports.list[n].pre) }, function (e, t) { e.exports = {} }, function (e, t) { var n = Math.floor , r = Math.abs , i = Math.cos , o = Math.sin , a = (Math.pow, Math.sqrt); e.exports = function (e, t, s, l, c, u) { var f, d; this.objects = t, this.grids = {}, this.updateObjects = []; var h = l.mapScale / l.colGrid; this.setObjectGrids = function (e) { for(var t = Math.min(l.mapScale, Math.max(0, e.x)), n = Math.min(l.mapScale, Math.max(0, e.y)), r = 0; r < l.colGrid; ++r) { f = r * h; for(var i = 0; i < l.colGrid; ++i) d = i * h, t + e.scale >= f && t - e.scale <= f + h && n + e.scale >= d && n - e.scale <= d + h && (this.grids[r + "_" + i] || (this.grids[r + "_" + i] = []), this.grids[r + "_" + i].push(e), e.gridLocations.push(r + "_" + i)) } }, this.removeObjGrid = function (e) { for(var t, n = 0; n < e.gridLocations.length; ++n)(t = this.grids[e.gridLocations[n]].indexOf(e)) >= 0 && this.grids[e.gridLocations[n]].splice(t, 1) }, this.disableObj = function (e) { if(e.active = !1, u) { e.owner && e.pps && (e.owner.pps -= e.pps), this.removeObjGrid(e); var t = this.updateObjects.indexOf(e); t >= 0 && this.updateObjects.splice(t, 1) } }, this.hitObj = function (e, t) { for(var n = 0; n < c.length; ++n) c[n].active && (e.sentTo[c[n].id] && (e.active ? c[n].canSee(e) && u.send(c[n].id, "8", s.fixTo(t, 1), e.sid) : u.send(c[n].id, "12", e.sid)), e.active || e.owner != c[n] || c[n].changeItemCount(e.group.id, -1)) }; var p, A, g = []; this.getGridArrays = function (e, t, r) { f = n(e / h), d = n(t / h), g.length = 0; try { this.grids[f + "_" + d] && g.push(this.grids[f + "_" + d]), e + r >= (f + 1) * h && ((p = this.grids[f + 1 + "_" + d]) && g.push(p), d && t - r <= d * h ? (p = this.grids[f + 1 + "_" + (d - 1)]) && g.push(p) : t + r >= (d + 1) * h && (p = this.grids[f + 1 + "_" + (d + 1)]) && g.push(p)), f && e - r <= f * h && ((p = this.grids[f - 1 + "_" + d]) && g.push(p), d && t - r <= d * h ? (p = this.grids[f - 1 + "_" + (d - 1)]) && g.push(p) : t + r >= (d + 1) * h && (p = this.grids[f - 1 + "_" + (d + 1)]) && g.push(p)), t + r >= (d + 1) * h && (p = this.grids[f + "_" + (d + 1)]) && g.push(p), d && t - r <= d * h && (p = this.grids[f + "_" + (d - 1)]) && g.push(p) } catch (e) {} return g }, this.add = function (n, r, i, o, a, s, l, c, f) { A = null; for(var d = 0; d < t.length; ++d) if(t[d].sid == n) { A = t[d]; break } if(!A) for(d = 0; d < t.length; ++d) if(!t[d].active) { A = t[d]; break } A || (A = new e(n), t.push(A)), c && (A.sid = n), A.init(r, i, o, a, s, l, f), u && (this.setObjectGrids(A), A.doUpdate && this.updateObjects.push(A)) }, this.disableBySid = function (e) { for(var n = 0; n < t.length; ++n) if(t[n].sid == e) { this.disableObj(t[n]); break } }, this.removeAllItems = function (e, n) { for(var r = 0; r < t.length; ++r) t[r].active && t[r].owner && t[r].owner.sid == e && this.disableObj(t[r]); n && n.broadcast("13", e) }, this.fetchSpawnObj = function (e) { for(var n = null, r = 0; r < t.length; ++r) if((A = t[r]) .active && A.owner && A.owner.sid == e && A.spawnPoint) { n = [A.x, A.y], this.disableObj(A), u.broadcast("12", A.sid), A.owner && A.owner.changeItemCount(A.group.id, -1); break } return n }, this.checkItemLocation = function (e, n, r, i, o, a, c) { for(var u = 0; u < t.length; ++u) { var f = t[u].blocker ? t[u].blocker : t[u].getScale(i, t[u].isItem); if(t[u].active && s.getDistance(e, n, t[u].x, t[u].y) < r + f) return !1 } return !(!a && 18 != o && n >= l.mapScale / 2 - l.riverWidth / 2 && n <= l.mapScale / 2 + l.riverWidth / 2) }, this.addProjectile = function (e, t, n, r, i) { for(var o, a = items.projectiles[i], l = 0; l < projectiles.length; ++l) if(!projectiles[l].active) { o = projectiles[l]; break } o || (o = new Projectile(c, s), projectiles.push(o)), o.init(i, e, t, n, a.speed, r, a.scale) }, this.checkCollision = function (e, t, n) { n = n || 1; var c = e.x - t.x , u = e.y - t.y , f = e.scale + t.scale; if(r(c) <= f || r(u) <= f) { f = e.scale + (t.getScale ? t.getScale() : t.scale); var d = a(c * c + u * u) - f; if(d <= 0) { if(t.ignoreCollision) !t.trap || e.noTrap || t.owner == e || t.owner && t.owner.team && t.owner.team == e.team ? t.boostSpeed ? (e.xVel += n * t.boostSpeed * (t.weightM || 1) * i(t.dir), e.yVel += n * t.boostSpeed * (t.weightM || 1) * o(t.dir)) : t.healCol ? e.healCol = t.healCol : t.teleport && (e.x = s.randInt(0, l.mapScale), e.y = s.randInt(0, l.mapScale)) : (e.lockMove = !0, t.hideFromEnemy = !1); else { var h = s.getDirection(e.x, e.y, t.x, t.y); if(s.getDistance(e.x, e.y, t.x, t.y), t.isPlayer ? (d = -1 * d / 2, e.x += d * i(h), e.y += d * o(h), t.x -= d * i(h), t.y -= d * o(h)) : (e.x = t.x + f * i(h), e.y = t.y + f * o(h), e.xVel *= .75, e.yVel *= .75), t.dmg && t.owner != e && (!t.owner || !t.owner.team || t.owner.team != e.team)) { e.changeHealth(-t.dmg, t.owner, t); var p = 1.5 * (t.weightM || 1); e.xVel += p * i(h), e.yVel += p * o(h), !t.pDmg || e.skin && e.skin.poisonRes || (e.dmgOverTime.dmg = t.pDmg, e.dmgOverTime.time = 5, e.dmgOverTime.doer = t.owner), e.colDmg && t.health && (t.changeHealth(-e.colDmg) && this.disableObj(t), this.hitObj(t, s.getDirection(e.x, e.y, t.x, t.y))) } } return t.zIndex > e.zIndex && (e.zIndex = t.zIndex), !0 } } return !1 } } }, function (e, t, n) { var r = new(n(49)); r.addWords("xxxxx"); var i = Math.abs , o = Math.cos , a = Math.sin , s = Math.pow , l = Math.sqrt; e.exports = function (e, t, n, c, u, f, d, h, p, A, g, m, y, w) { this.id = e, this.sid = t, this.tmpScore = 0, this.team = null, this.skinIndex = 0, this.tailIndex = 0, this.hitTime = 0, this.tails = {}; for(var v = 0; v < g.length; ++v) g[v].price <= 0 && (this.tails[g[v].id] = 1); for(this.skins = {}, v = 0; v < A.length; ++v) A[v].price <= 0 && (this.skins[A[v].id] = 1); this.points = 0, this.dt = 0, this.hidden = !1, this.itemCounts = {}, this.isPlayer = !0, this.pps = 0, this.moveDir = void 0, this.skinRot = 0, this.lastPing = 0, this.iconIndex = 0, this.skinColor = 0, this.spawn = function (e) { this.active = !0, this.alive = !0, this.lockMove = !1, this.lockDir = !1, this.minimapCounter = 0, this.chatCountdown = 0, this.shameCount = 0, this.shameTimer = 0, this.sentTo = {}, this.gathering = 0, this.autoGather = 0, this.animTime = 0, this.animSpeed = 0, this.mouseState = 0, this.buildIndex = -1, this.weaponIndex = 0, this.dmgOverTime = {}, this.noMovTimer = 0, this.maxXP = 300, this.XP = 0, this.age = 1, this.kills = 0, this.upgrAge = 2, this.upgradePoints = 0, this.x = 0, this.y = 0, this.zIndex = 0, this.xVel = 0, this.yVel = 0, this.slowMult = 1, this.dir = 0, this.dirPlus = 0, this.targetDir = 0, this.targetAngle = 0, this.maxHealth = 100, this.health = this.maxHealth, this.scale = n.playerScale, this.speed = n.playerSpeed, this.resetMoveDir(), this.resetResources(e), this.items = [0, 3, 6, 10], this.weapons = [0], this.shootCount = 0, this.weaponXP = [], this.reloads = {} }, this.resetMoveDir = function () { this.moveDir = void 0 }, this.resetResources = function (e) { for(var t = 0; t < n.resourceTypes.length; ++t) this[n.resourceTypes[t]] = e ? 100 : 0 }, this.addItem = function (e) { var t = p.list[e]; if(t) { for(var n = 0; n < this.items.length; ++n) if(p.list[this.items[n]].group == t.group) return this.buildIndex == this.items[n] && (this.buildIndex = e), this.items[n] = e, !0; return this.items.push(e), !0 } return !1 }, this.setUserData = function (e) { if(e) { this.name = "unknown"; var t = e.name + "" , i = !1 , o = (t = (t = (t = (t = t.slice(0, n.maxNameLength)) .replace(/[^\w:\(\)\/? -]+/gim, " ")) .replace(/[^\x00-\x7F]/g, " ")) .trim()) .toLowerCase() .replace(/\s/g, "") .replace(/1/g, "i") .replace(/0/g, "o") .replace(/5/g, "s"); for(var a of r.list) if(-1 != o.indexOf(a)) { i = !0; break } t.length > 0 && !i && (this.name = t), this.skinColor = 0, n.skinColors[e.skin] && (this.skinColor = e.skin) } }, this.getData = function () { return [this.id, this.sid, this.name, c.fixTo(this.x, 2), c.fixTo(this.y, 2), c.fixTo(this.dir, 3), this.health, this.maxHealth, this.scale, this.skinColor] }, this.setData = function (e) { this.id = e[0], this.sid = e[1], this.name = e[2], this.x = e[3], this.y = e[4], this.dir = e[5], this.health = e[6], this.maxHealth = e[7], this.scale = e[8], this.skinColor = e[9] }; var b = 0; this.update = function (e) { if(this.alive) { if(this.shameTimer > 0 && (this.shameTimer -= e, this.shameTimer <= 0 && (this.shameTimer = 0, this.shameCount = 0)), (b -= e) <= 0) { var t = (this.skin && this.skin.healthRegen ? this.skin.healthRegen : 0) + (this.tail && this.tail.healthRegen ? this.tail.healthRegen : 0); t && this.changeHealth(t, this), this.dmgOverTime.dmg && (this.changeHealth(-this.dmgOverTime.dmg, this.dmgOverTime.doer), this.dmgOverTime.time -= 1, this.dmgOverTime.time <= 0 && (this.dmgOverTime.dmg = 0)), this.healCol && this.changeHealth(this.healCol, this), b = 1e3 } if(this.alive) { if(this.slowMult < 1 && (this.slowMult += 8e-4 * e, this.slowMult > 1 && (this.slowMult = 1)), this.noMovTimer += e, (this.xVel || this.yVel) && (this.noMovTimer = 0), this.lockMove) this.xVel = 0, this.yVel = 0; else { var r = (this.buildIndex >= 0 ? .5 : 1) * (p.weapons[this.weaponIndex].spdMult || 1) * (this.skin && this.skin.spdMult || 1) * (this.tail && this.tail.spdMult || 1) * (this.y <= n.snowBiomeTop ? this.skin && this.skin.coldM ? 1 : n.snowSpeed : 1) * this.slowMult; !this.zIndex && this.y >= n.mapScale / 2 - n.riverWidth / 2 && this.y <= n.mapScale / 2 + n.riverWidth / 2 && (this.skin && this.skin.watrImm ? (r *= .75, this.xVel += .4 * n.waterCurrent * e) : (r *= .33, this.xVel += n.waterCurrent * e)); var i = null != this.moveDir ? o(this.moveDir) : 0 , h = null != this.moveDir ? a(this.moveDir) : 0 , A = l(i * i + h * h); 0 != A && (i /= A, h /= A), i && (this.xVel += i * this.speed * r * e), h && (this.yVel += h * this.speed * r * e) } var g; this.zIndex = 0, this.lockMove = !1, this.healCol = 0; for(var m = c.getDistance(0, 0, this.xVel * e, this.yVel * e), y = Math.min(4, Math.max(1, Math.round(m / 40))), w = 1 / y, v = 0; v < y; ++v) { this.xVel && (this.x += this.xVel * e * w), this.yVel && (this.y += this.yVel * e * w), g = f.getGridArrays(this.x, this.y, this.scale); for(var x = 0; x < g.length; ++x) for(var B = 0; B < g[x].length; ++B) g[x][B].active && f.checkCollision(this, g[x][B], w) } for(v = (k = d.indexOf(this)) + 1; v < d.length; ++v) d[v] != this && d[v].alive && f.checkCollision(this, d[v]); if(this.xVel && (this.xVel *= s(n.playerDecel, e), this.xVel <= .01 && this.xVel >= -.01 && (this.xVel = 0)), this.yVel && (this.yVel *= s(n.playerDecel, e), this.yVel <= .01 && this.yVel >= -.01 && (this.yVel = 0)), this.x - this.scale < 0 ? this.x = this.scale : this.x + this.scale > n.mapScale && (this.x = n.mapScale - this.scale), this.y - this.scale < 0 ? this.y = this.scale : this.y + this.scale > n.mapScale && (this.y = n.mapScale - this.scale), this.buildIndex < 0) if(this.reloads[this.weaponIndex] > 0) this.reloads[this.weaponIndex] -= e, this.gathering = this.mouseState; else if(this.gathering || this.autoGather) { var E = !0; if(null != p.weapons[this.weaponIndex].gather) this.gather(d); else if(null != p.weapons[this.weaponIndex].projectile && this.hasRes(p.weapons[this.weaponIndex], this.skin ? this.skin.projCost : 0)) { this.useRes(p.weapons[this.weaponIndex], this.skin ? this.skin.projCost : 0), this.noMovTimer = 0; var k = p.weapons[this.weaponIndex].projectile , C = 2 * this.scale , I = this.skin && this.skin.aMlt ? this.skin.aMlt : 1; p.weapons[this.weaponIndex].rec && (this.xVel -= p.weapons[this.weaponIndex].rec * o(this.dir), this.yVel -= p.weapons[this.weaponIndex].rec * a(this.dir)), u.addProjectile(this.x + C * o(this.dir), this.y + C * a(this.dir), this.dir, p.projectiles[k].range * I, p.projectiles[k].speed * I, k, this, null, this.zIndex) } else E = !1; this.gathering = this.mouseState, E && (this.reloads[this.weaponIndex] = p.weapons[this.weaponIndex].speed * (this.skin && this.skin.atkSpd || 1)) } } } }, this.addWeaponXP = function (e) { this.weaponXP[this.weaponIndex] || (this.weaponXP[this.weaponIndex] = 0), this.weaponXP[this.weaponIndex] += e }, this.earnXP = function (e) { this.age < n.maxAge && (this.XP += e, this.XP >= this.maxXP ? (this.age < n.maxAge ? (this.age++, this.XP = 0, this.maxXP *= 1.2) : this.XP = this.maxXP, this.upgradePoints++, m.send(this.id, "16", this.upgradePoints, this.upgrAge), m.send(this.id, "15", this.XP, c.fixTo(this.maxXP, 1), this.age)) : m.send(this.id, "15", this.XP)) }, this.changeHealth = function (e, t) { if(e > 0 && this.health >= this.maxHealth) return !1; e < 0 && this.skin && (e *= this.skin.dmgMult || 1), e < 0 && this.tail && (e *= this.tail.dmgMult || 1), e < 0 && (this.hitTime = Date.now()), this.health += e, this.health > this.maxHealth && (e -= this.health - this.maxHealth, this.health = this.maxHealth), this.health <= 0 && this.kill(t); for(var n = 0; n < d.length; ++n) this.sentTo[d[n].id] && m.send(d[n].id, "h", this.sid, Math.round(this.health)); return !t || !t.canSee(this) || t == this && e < 0 || m.send(t.id, "t", Math.round(this.x), Math.round(this.y), Math.round(-e), 1), !0 }, this.kill = function (e) { e && e.alive && (e.kills++, e.skin && e.skin.goldSteal ? y(e, Math.round(this.points / 2)) : y(e, Math.round(100 * this.age * (e.skin && e.skin.kScrM ? e.skin.kScrM : 1))), m.send(e.id, "9", "kills", e.kills, 1)), this.alive = !1, m.send(this.id, "11"), w() }, this.addResource = function (e, t, r) { !r && t > 0 && this.addWeaponXP(t), 3 == e ? y(this, t, !0) : (this[n.resourceTypes[e]] += t, m.send(this.id, "9", n.resourceTypes[e], this[n.resourceTypes[e]], 1)) }, this.changeItemCount = function (e, t) { this.itemCounts[e] = this.itemCounts[e] || 0, this.itemCounts[e] += t, m.send(this.id, "14", e, this.itemCounts[e]) }, this.buildItem = function (e) { var t = this.scale + e.scale + (e.placeOffset || 0) , n = this.x + t * o(this.dir) , r = this.y + t * a(this.dir); if(this.canBuild(e) && !(e.consume && this.skin && this.skin.noEat) && (e.consume || f.checkItemLocation(n, r, e.scale, .6, e.id, !1, this))) { var i = !1; if(e.consume) { if(this.hitTime) { var s = Date.now() - this.hitTime; this.hitTime = 0, s <= 120 ? (this.shameCount++, this.shameCount >= 8 && (this.shameTimer = 3e4, this.shameCount = 0)) : (this.shameCount -= 2, this.shameCount <= 0 && (this.shameCount = 0)) } this.shameTimer <= 0 && (i = e.consume(this)) } else i = !0, e.group.limit && this.changeItemCount(e.group.id, 1), e.pps && (this.pps += e.pps), f.add(f.objects.length, n, r, this.dir, e.scale, e.type, e, !1, this); i && (this.useRes(e), this.buildIndex = -1) } }, this.hasRes = function (e, t) { for(var n = 0; n < e.req.length;) { if(this[e.req[n]] < Math.round(e.req[n + 1] * (t || 1))) return !1; n += 2 } return !0 }, this.useRes = function (e, t) { if(!n.inSandbox) for(var r = 0; r < e.req.length;) this.addResource(n.resourceTypes.indexOf(e.req[r]), -Math.round(e.req[r + 1] * (t || 1))), r += 2 }, this.canBuild = function (e) { return !!n.inSandbox || !(e.group.limit && this.itemCounts[e.group.id] >= e.group.limit) && this.hasRes(e) }, this.gather = function () { this.noMovTimer = 0, this.slowMult -= p.weapons[this.weaponIndex].hitSlow || .3, this.slowMult < 0 && (this.slowMult = 0); for(var e, t, r, i = n.fetchVariant(this), s = i.poison, l = i.val, u = {}, A = f.getGridArrays(this.x, this.y, p.weapons[this.weaponIndex].range), g = 0; g < A.length; ++g) for(var m = 0; m < A[g].length; ++m) if((t = A[g][m]) .active && !t.dontGather && !u[t.sid] && t.visibleToPlayer(this) && c.getDistance(this.x, this.y, t.x, t.y) - t.scale <= p.weapons[this.weaponIndex].range && (e = c.getDirection(t.x, t.y, this.x, this.y), c.getAngleDist(e, this.dir) <= n.gatherAngle)) { if(u[t.sid] = 1, t.health) { if(t.changeHealth(-p.weapons[this.weaponIndex].dmg * l * (p.weapons[this.weaponIndex].sDmg || 1) * (this.skin && this.skin.bDmg ? this.skin.bDmg : 1), this)) { for(var y = 0; y < t.req.length;) this.addResource(n.resourceTypes.indexOf(t.req[y]), t.req[y + 1]), y += 2; f.disableObj(t) } } else { this.earnXP(4 * p.weapons[this.weaponIndex].gather); var w = p.weapons[this.weaponIndex].gather + (3 == t.type ? 4 : 0); this.skin && this.skin.extraGold && this.addResource(3, 1), this.addResource(t.type, w) } r = !0, f.hitObj(t, e) } for(m = 0; m < d.length + h.length; ++m) if((t = d[m] || h[m - d.length]) != this && t.alive && (!t.team || t.team != this.team) && c.getDistance(this.x, this.y, t.x, t.y) - 1.8 * t.scale <= p.weapons[this.weaponIndex].range && (e = c.getDirection(t.x, t.y, this.x, this.y), c.getAngleDist(e, this.dir) <= n.gatherAngle)) { var v = p.weapons[this.weaponIndex].steal; v && t.addResource && (v = Math.min(t.points || 0, v), this.addResource(3, v), t.addResource(3, -v)); var b = l; null != t.weaponIndex && p.weapons[t.weaponIndex].shield && c.getAngleDist(e + Math.PI, t.dir) <= n.shieldAngle && (b = p.weapons[t.weaponIndex].shield); var x = p.weapons[this.weaponIndex].dmg * (this.skin && this.skin.dmgMultO ? this.skin.dmgMultO : 1) * (this.tail && this.tail.dmgMultO ? this.tail.dmgMultO : 1) , B = .3 * (t.weightM || 1) + (p.weapons[this.weaponIndex].knock || 0); t.xVel += B * o(e), t.yVel += B * a(e), this.skin && this.skin.healD && this.changeHealth(x * b * this.skin.healD, this), this.tail && this.tail.healD && this.changeHealth(x * b * this.tail.healD, this), t.skin && t.skin.dmg && 1 == b && this.changeHealth(-x * t.skin.dmg, t), t.tail && t.tail.dmg && 1 == b && this.changeHealth(-x * t.tail.dmg, t), !(t.dmgOverTime && this.skin && this.skin.poisonDmg) || t.skin && t.skin.poisonRes || (t.dmgOverTime.dmg = this.skin.poisonDmg, t.dmgOverTime.time = this.skin.poisonTime || 1, t.dmgOverTime.doer = this), !t.dmgOverTime || !s || t.skin && t.skin.poisonRes || (t.dmgOverTime.dmg = 5, t.dmgOverTime.time = 5, t.dmgOverTime.doer = this), t.skin && t.skin.dmgK && (this.xVel -= t.skin.dmgK * o(e), this.yVel -= t.skin.dmgK * a(e)), t.changeHealth(-x * b, this, this) } this.sendAnimation(r ? 1 : 0) }, this.sendAnimation = function (e) { for(var t = 0; t < d.length; ++t) this.sentTo[d[t].id] && this.canSee(d[t]) && m.send(d[t].id, "7", this.sid, e ? 1 : 0, this.weaponIndex) }; var x = 0 , B = 0; this.animate = function (e) { this.animTime > 0 && (this.animTime -= e, this.animTime <= 0 ? (this.animTime = 0, this.dirPlus = 0, x = 0, B = 0) : 0 == B ? (x += e / (this.animSpeed * n.hitReturnRatio), this.dirPlus = c.lerp(0, this.targetAngle, Math.min(1, x)), x >= 1 && (x = 1, B = 1)) : (x -= e / (this.animSpeed * (1 - n.hitReturnRatio)), this.dirPlus = c.lerp(0, this.targetAngle, Math.max(0, x)))) }, this.startAnim = function (e, t) { this.animTime = this.animSpeed = p.weapons[t].speed, this.targetAngle = e ? -n.hitAngle : -Math.PI, x = 0, B = 0 }, this.canSee = function (e) { if(!e) return !1; if(e.skin && e.skin.invisTimer && e.noMovTimer >= e.skin.invisTimer) return !1; var t = i(e.x - this.x) - e.scale , r = i(e.y - this.y) - e.scale; return t <= n.maxScreenWidth / 2 * 1.3 && r <= n.maxScreenHeight / 2 * 1.3 } } }, function (e, t, n) { const r = n(50) .words , i = n(51) .array; e.exports = class { constructor(e = {}) { Object.assign(this, { list: e.emptyList && [] || Array.prototype.concat.apply(r, [i, e.list || []]) , exclude: e.exclude || [] , placeHolder: e.placeHolder || "*" , regex: e.regex || /[^a-zA-Z0-9|\$|\@]|\^/g , replaceRegex: e.replaceRegex || /\w/g }) } isProfane(e) { return this.list.filter(t => { const n = new RegExp(`\\b${t.replace(/(\W)/g,"\\$1")}\\b`, "gi"); return !this.exclude.includes(t.toLowerCase()) && n.test(e) }) .length > 0 || !1 } replaceWord(e) { return e.replace(this.regex, "") .replace(this.replaceRegex, this.placeHolder) } clean(e) { return e.split(/\b/) .map(e => this.isProfane(e) ? this.replaceWord(e) : e) .join("") } addWords() { let e = Array.from(arguments); this.list.push(...e), e.map(e => e.toLowerCase()) .forEach(e => { this.exclude.includes(e) && this.exclude.splice(this.exclude.indexOf(e), 1) }) } removeWords() { this.exclude.push(...Array.from(arguments) .map(e => e.toLowerCase())) } } }, function (e) { e.exports = { words: ["xxxx"] } }, function (e, t, n) { e.exports = { object: n(52) , array: n(53) , regex: n(54) } }, function (e, t) { e.exports = { xxx: 1 } }, function (e, t) { e.exports = ["xxx"] }, function (e, t) { e.exports = /\b(xxx)\b/gi }, function (e, t) { e.exports.hats = [{ id: 45 , name: "Shame!" , dontSell: !0 , price: 0 , scale: 120 , desc: "hacks are for losers" }, { id: 51 , name: "Moo Cap" , price: 0 , scale: 120 , desc: "coolest mooer around" }, { id: 50 , name: "Apple Cap" , price: 0 , scale: 120 , desc: "apple farms remembers" }, { id: 28 , name: "Moo Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 29 , name: "Pig Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 30 , name: "Fluff Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 36 , name: "Pandou Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 37 , name: "Bear Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 38 , name: "Monkey Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 44 , name: "Polar Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 35 , name: "Fez Hat" , price: 0 , scale: 120 , desc: "no effect" }, { id: 42 , name: "Enigma Hat" , price: 0 , scale: 120 , desc: "join the enigma army" }, { id: 43 , name: "Blitz Hat" , price: 0 , scale: 120 , desc: "hey everybody i'm blitz" }, { id: 49 , name: "Bob XIII Hat" , price: 0 , scale: 120 , desc: "like and subscribe" }, { id: 57 , name: "Pumpkin" , price: 50 , scale: 120 , desc: "Spooooky" }, { id: 8 , name: "Bummle Hat" , price: 100 , scale: 120 , desc: "no effect" }, { id: 2 , name: "Straw Hat" , price: 500 , scale: 120 , desc: "no effect" }, { id: 15 , name: "Winter Cap" , price: 600 , scale: 120 , desc: "allows you to move at normal speed in snow" , coldM: 1 }, { id: 5 , name: "Cowboy Hat" , price: 1e3 , scale: 120 , desc: "no effect" }, { id: 4 , name: "Ranger Hat" , price: 2e3 , scale: 120 , desc: "no effect" }, { id: 18 , name: "Explorer Hat" , price: 2e3 , scale: 120 , desc: "no effect" }, { id: 31 , name: "Flipper Hat" , price: 2500 , scale: 120 , desc: "have more control while in water" , watrImm: !0 }, { id: 1 , name: "Marksman Cap" , price: 3e3 , scale: 120 , desc: "increases arrow speed and range" , aMlt: 1.3 }, { id: 10 , name: "Bush Gear" , price: 3e3 , scale: 160 , desc: "allows you to disguise yourself as a bush" }, { id: 48 , name: "Halo" , price: 3e3 , scale: 120 , desc: "no effect" }, { id: 6 , name: "Soldier Helmet" , price: 4e3 , scale: 120 , desc: "reduces damage taken but slows movement" , spdMult: .94 , dmgMult: .75 }, { id: 23 , name: "Anti Venom Gear" , price: 4e3 , scale: 120 , desc: "makes you immune to poison" , poisonRes: 1 }, { id: 13 , name: "Medic Gear" , price: 5e3 , scale: 110 , desc: "slowly regenerates health over time" , healthRegen: 3 }, { id: 9 , name: "Miners Helmet" , price: 5e3 , scale: 120 , desc: "earn 1 extra gold per resource" , extraGold: 1 }, { id: 32 , name: "Musketeer Hat" , price: 5e3 , scale: 120 , desc: "reduces cost of projectiles" , projCost: .5 }, { id: 7 , name: "Bull Helmet" , price: 6e3 , scale: 120 , desc: "increases damage done but drains health" , healthRegen: -5 , dmgMultO: 1.5 , spdMult: .96 }, { id: 22 , name: "Emp Helmet" , price: 6e3 , scale: 120 , desc: "turrets won't attack but you move slower" , antiTurret: 1 , spdMult: .7 }, { id: 12 , name: "Booster Hat" , price: 6e3 , scale: 120 , desc: "increases your movement speed" , spdMult: 1.16 }, { id: 26 , name: "Barbarian Armor" , price: 8e3 , scale: 120 , desc: "knocks back enemies that attack you" , dmgK: .6 }, { id: 21 , name: "Plague Mask" , price: 1e4 , scale: 120 , desc: "melee attacks deal poison damage" , poisonDmg: 5 , poisonTime: 6 }, { id: 46 , name: "Bull Mask" , price: 1e4 , scale: 120 , desc: "bulls won't target you unless you attack them" , bullRepel: 1 }, { id: 14 , name: "Windmill Hat" , topSprite: !0 , price: 1e4 , scale: 120 , desc: "generates points while worn" , pps: 1.5 }, { id: 11 , name: "Spike Gear" , topSprite: !0 , price: 1e4 , scale: 120 , desc: "deal damage to players that damage you" , dmg: .45 }, { id: 53 , name: "Turret Gear" , topSprite: !0 , price: 1e4 , scale: 120 , desc: "you become a walking turret" , turret: { proj: 1 , range: 700 , rate: 2500 } , spdMult: .7 }, { id: 20 , name: "Samurai Armor" , price: 12e3 , scale: 120 , desc: "increased attack speed and fire rate" , atkSpd: .78 }, { id: 58 , name: "Dark Knight" , price: 12e3 , scale: 120 , desc: "restores health when you deal damage" , healD: .4 }, { id: 27 , name: "Scavenger Gear" , price: 15e3 , scale: 120 , desc: "earn double points for each kill" , kScrM: 2 }, { id: 40 , name: "Tank Gear" , price: 15e3 , scale: 120 , desc: "increased damage to buildings but slower movement" , spdMult: .3 , bDmg: 3.3 }, { id: 52 , name: "Thief Gear" , price: 15e3 , scale: 120 , desc: "steal half of a players gold when you kill them" , goldSteal: .5 }, { id: 55 , name: "Bloodthirster" , price: 2e4 , scale: 120 , desc: "Restore Health when dealing damage. And increased damage" , healD: .25 , dmgMultO: 1.2 }, { id: 56 , name: "Assassin Gear" , price: 2e4 , scale: 120 , desc: "Go invisible when not moving. Can't eat. Increased speed" , noEat: !0 , spdMult: 1.1 , invisTimer: 1e3 }], e.exports.accessories = [{ id: 12 , name: "Snowball" , price: 1e3 , scale: 105 , xOff: 18 , desc: "no effect" }, { id: 9 , name: "Tree Cape" , price: 1e3 , scale: 90 , desc: "no effect" }, { id: 10 , name: "Stone Cape" , price: 1e3 , scale: 90 , desc: "no effect" }, { id: 3 , name: "Cookie Cape" , price: 1500 , scale: 90 , desc: "no effect" }, { id: 8 , name: "Cow Cape" , price: 2e3 , scale: 90 , desc: "no effect" }, { id: 11 , name: "Monkey Tail" , price: 2e3 , scale: 97 , xOff: 25 , desc: "Super speed but reduced damage" , spdMult: 1.35 , dmgMultO: .2 }, { id: 17 , name: "Apple Basket" , price: 3e3 , scale: 80 , xOff: 12 , desc: "slowly regenerates health over time" , healthRegen: 1 }, { id: 6 , name: "Winter Cape" , price: 3e3 , scale: 90 , desc: "no effect" }, { id: 4 , name: "Skull Cape" , price: 4e3 , scale: 90 , desc: "no effect" }, { id: 5 , name: "Dash Cape" , price: 5e3 , scale: 90 , desc: "no effect" }, { id: 2 , name: "Dragon Cape" , price: 6e3 , scale: 90 , desc: "no effect" }, { id: 1 , name: "Super Cape" , price: 8e3 , scale: 90 , desc: "no effect" }, { id: 7 , name: "Troll Cape" , price: 8e3 , scale: 90 , desc: "no effect" }, { id: 14 , name: "Thorns" , price: 1e4 , scale: 115 , xOff: 20 , desc: "no effect" }, { id: 15 , name: "Blockades" , price: 1e4 , scale: 95 , xOff: 15 , desc: "no effect" }, { id: 20 , name: "Devils Tail" , price: 1e4 , scale: 95 , xOff: 20 , desc: "no effect" }, { id: 16 , name: "Sawblade" , price: 12e3 , scale: 90 , spin: !0 , xOff: 0 , desc: "deal damage to players that damage you" , dmg: .15 }, { id: 13 , name: "Angel Wings" , price: 15e3 , scale: 138 , xOff: 22 , desc: "slowly regenerates health over time" , healthRegen: 3 }, { id: 19 , name: "Shadow Wings" , price: 15e3 , scale: 138 , xOff: 22 , desc: "increased movement speed" , spdMult: 1.1 }, { id: 18 , name: "Blood Wings" , price: 2e4 , scale: 178 , xOff: 26 , desc: "restores health when you deal damage" , healD: .2 }, { id: 21 , name: "Corrupt X Wings" , price: 2e4 , scale: 178 , xOff: 26 , desc: "deal damage to players that damage you" , dmg: .25 }] }, function (e, t) { e.exports = function (e, t, n, r, i, o, a) { this.init = function (e, t, n, r, i, o, s, l, c) { this.active = !0, this.indx = e, this.x = t, this.y = n, this.dir = r, this.skipMov = !0, this.speed = i, this.dmg = o, this.scale = l, this.range = s, this.owner = c, a && (this.sentTo = {}) }; var s, l = []; this.update = function (c) { if(this.active) { var u, f = this.speed * c; if(this.skipMov ? this.skipMov = !1 : (this.x += f * Math.cos(this.dir), this.y += f * Math.sin(this.dir), this.range -= f, this.range <= 0 && (this.x += this.range * Math.cos(this.dir), this.y += this.range * Math.sin(this.dir), f = 1, this.range = 0, this.active = !1)), a) { for(var d = 0; d < e.length; ++d) !this.sentTo[e[d].id] && e[d].canSee(this) && (this.sentTo[e[d].id] = 1, a.send(e[d].id, "18", o.fixTo(this.x, 1), o.fixTo(this.y, 1), o.fixTo(this.dir, 2), o.fixTo(this.range, 1), this.speed, this.indx, this.layer, this.sid)); for(l.length = 0, d = 0; d < e.length + t.length; ++d) !(s = e[d] || t[d - e.length]) .alive || s == this.owner || this.owner.team && s.team == this.owner.team || o.lineInRect(s.x - s.scale, s.y - s.scale, s.x + s.scale, s.y + s.scale, this.x, this.y, this.x + f * Math.cos(this.dir), this.y + f * Math.sin(this.dir)) && l.push(s); for(var h = n.getGridArrays(this.x, this.y, this.scale), p = 0; p < h.length; ++p) for(var A = 0; A < h[p].length; ++A) u = (s = h[p][A]) .getScale(), s.active && this.ignoreObj != s.sid && this.layer <= s.layer && l.indexOf(s) < 0 && !s.ignoreCollision && o.lineInRect(s.x - u, s.y - u, s.x + u, s.y + u, this.x, this.y, this.x + f * Math.cos(this.dir), this.y + f * Math.sin(this.dir)) && l.push(s); if(l.length > 0) { var g = null , m = null , y = null; for(d = 0; d < l.length; ++d) y = o.getDistance(this.x, this.y, l[d].x, l[d].y), (null == m || y < m) && (m = y, g = l[d]); if(g.isPlayer || g.isAI) { var w = .3 * (g.weightM || 1); g.xVel += w * Math.cos(this.dir), g.yVel += w * Math.sin(this.dir), null != g.weaponIndex && r.weapons[g.weaponIndex].shield && o.getAngleDist(this.dir + Math.PI, g.dir) <= i.shieldAngle || g.changeHealth(-this.dmg, this.owner, this.owner) } else for(g.projDmg && g.health && g.changeHealth(-this.dmg) && n.disableObj(g), d = 0; d < e.length; ++d) e[d].active && (g.sentTo[e[d].id] && (g.active ? e[d].canSee(g) && a.send(e[d].id, "8", o.fixTo(this.dir, 2), g.sid) : a.send(e[d].id, "12", g.sid)), g.active || g.owner != e[d] || e[d].changeItemCount(g.group.id, -1)); for(this.active = !1, d = 0; d < e.length; ++d) this.sentTo[e[d].id] && a.send(e[d].id, "19", this.sid, o.fixTo(m, 1)) } } } } } }, function (e, t) { e.exports = function (e, t, n, r, i, o, a, s, l) { this.addProjectile = function (c, u, f, d, h, p, A, g, m) { for(var y, w = o.projectiles[p], v = 0; v < t.length; ++v) if(!t[v].active) { y = t[v]; break } return y || ((y = new e(n, r, i, o, a, s, l)) .sid = t.length, t.push(y)), y.init(p, c, u, f, h, w.dmg, d, w.scale, A), y.ignoreObj = g, y.layer = m || w.layer, y.src = w.src, y } } }, function (e, t) { e.exports.obj = function (e, t) { var n; this.sounds = [], this.active = !0, this.play = function (t, r, i) { r && this.active && ((n = this.sounds[t]) || (n = new Howl({ src: ".././sound/" + t + ".mp3" }), this.sounds[t] = n), i && n.isPlaying || (n.isPlaying = !0, n.play(), n.volume((r || 1) * e.volumeMult), n.loop(i))) }, this.toggleMute = function (e, t) { (n = this.sounds[e]) && n.mute(t) }, this.stop = function (e) { (n = this.sounds[e]) && (n.stop(), n.isPlaying = !1) } } }, function (e, t, n) { var r = n(60) , i = n(67); function o(e, t, n, r, i) { "localhost" == location.hostname && (window.location.hostname = "127.0.0.1"), this.debugLog = !1, this.baseUrl = e, this.lobbySize = n, this.devPort = t, this.lobbySpread = r, this.rawIPs = !!i, this.server = void 0, this.gameIndex = void 0, this.callback = void 0, this.errorCallback = void 0, this.processServers(vultr.servers) } o.prototype.regionInfo = { 0: { name: "Local" , latitude: 0 , longitude: 0 } , "vultr:1": { name: "New Jersey" , latitude: 40.1393329 , longitude: -75.8521818 } , "vultr:2": { name: "Chicago" , latitude: 41.8339037 , longitude: -87.872238 } , "vultr:3": { name: "Dallas" , latitude: 32.8208751 , longitude: -96.8714229 } , "vultr:4": { name: "Seattle" , latitude: 47.6149942 , longitude: -122.4759879 } , "vultr:5": { name: "Los Angeles" , latitude: 34.0207504 , longitude: -118.691914 } , "vultr:6": { name: "Atlanta" , latitude: 33.7676334 , longitude: -84.5610332 } , "vultr:7": { name: "Amsterdam" , latitude: 52.3745287 , longitude: 4.7581878 } , "vultr:8": { name: "London" , latitude: 51.5283063 , longitude: -.382486 } , "vultr:9": { name: "Frankfurt" , latitude: 50.1211273 , longitude: 8.496137 } , "vultr:12": { name: "Silicon Valley" , latitude: 37.4024714 , longitude: -122.3219752 } , "vultr:19": { name: "Sydney" , latitude: -33.8479715 , longitude: 150.651084 } , "vultr:24": { name: "Paris" , latitude: 48.8588376 , longitude: 2.2773454 } , "vultr:25": { name: "Tokyo" , latitude: 35.6732615 , longitude: 139.569959 } , "vultr:39": { name: "Miami" , latitude: 25.7823071 , longitude: -80.3012156 } , "vultr:40": { name: "Singapore" , latitude: 1.3147268 , longitude: 103.7065876 } }, o.prototype.start = function (e, t) { this.callback = e, this.errorCallback = t; var n = this.parseServerQuery(); n ? (this.log("Found server in query."), this.password = n[3], this.connect(n[0], n[1], n[2])) : (this.log("Pinging servers..."), this.pingServers()) }, o.prototype.parseServerQuery = function () { var e = r.parse(location.href, !0) , t = e.query.server; if("string" == typeof t) { var n = t.split(":"); if(3 == n.length) { var i = n[0] , o = parseInt(n[1]) , a = parseInt(n[2]); return "0" == i || i.startsWith("vultr:") || (i = "vultr:" + i), [i, o, a, e.query.password] } this.errorCallback("Invalid number of server parameters in " + t) } }, o.prototype.findServer = function (e, t) { var n = this.servers[e]; if(Array.isArray(n)) { for(var r = 0; r < n.length; r++) { var i = n[r]; if(i.index == t) return i } console.warn("Could not find server in region " + e + " with index " + t + ".") } else this.errorCallback("No server list for region " + e) }, o.prototype.pingServers = function () { var e = this , t = []; for(var n in this.servers) if(this.servers.hasOwnProperty(n)) { var r = this.servers[n] , i = r[Math.floor(Math.random() * r.length)]; null != i ? function (r, i) { var o = new XMLHttpRequest; o.onreadystatechange = function (r) { var o = r.target; if(4 == o.readyState) if(200 == o.status) { for(var a = 0; a < t.length; a++) t[a].abort(); e.log("Connecting to region", i.region); var s = e.seekServer(i.region); e.connect(s[0], s[1], s[2]) } else console.warn("Error pinging " + i.ip + " in region " + n) }; var a = "//" + e.serverAddress(i.ip, !0) + ":" + e.serverPort(i) + "/ping"; o.open("GET", a, !0), o.send(null), e.log("Pinging", a), t.push(o) }(0, i) : console.log("No target server for region " + n) } }, o.prototype.seekServer = function (e, t, n) { null == n && (n = "random"), null == t && (t = !1); const r = ["random"]; var i = this.lobbySize , o = this.lobbySpread , a = this.servers[e].flatMap(function (e) { var t = 0; return e.games.map(function (n) { var r = t++; return { region: e.region , index: e.index * e.games.length + r , gameIndex: r , gameCount: e.games.length , playerCount: n.playerCount , isPrivate: n.isPrivate } }) }) .filter(function (e) { return !e.isPrivate }) .filter(function (e) { return !t || 0 == e.playerCount && e.gameIndex >= e.gameCount / 2 }) .filter(function (e) { return "random" == n || r[e.index % r.length].key == n }) .sort(function (e, t) { return t.playerCount - e.playerCount }) .filter(function (e) { return e.playerCount < i }); if(t && a.reverse(), 0 != a.length) { var s = Math.min(o, a.length) , l = Math.floor(Math.random() * s) , c = a[l = Math.min(l, a.length - 1)] , u = c.region , f = (l = Math.floor(c.index / c.gameCount), c.index % c.gameCount); return this.log("Found server."), [u, l, f] } this.errorCallback("No open servers.") }, o.prototype.connect = function (e, t, n) { if(!this.connected) { var r = this.findServer(e, t); null != r ? (this.log("Connecting to server", r, "with game index", n), r.games[n].playerCount >= this.lobbySize ? this.errorCallback("Server is already full.") : (window.history.replaceState(document.title, document.title, this.generateHref(e, t, n, this.password)), this.server = r, this.gameIndex = n, this.log("Calling callback with address", this.serverAddress(r.ip), "on port", this.serverPort(r), "with game index", n), this.callback(this.serverAddress(r.ip), this.serverPort(r), n))) : this.errorCallback("Failed to find server for region " + e + " and index " + t) } }, o.prototype.switchServer = function (e, t, n, r) { this.switchingServers = !0, window.location.href = this.generateHref(e, t, n, r) }, o.prototype.generateHref = function (e, t, n, r) { var i = "/?server=" + (e = this.stripRegion(e)) + ":" + t + ":" + n; return r && (i += "&password=" + encodeURIComponent(r)), i }, o.prototype.serverAddress = function (e, t) { return "127.0.0.1" == e || "7f000001" == e || "903d62ef5d1c2fecdcaeb5e7dd485eff" == e ? window.location.hostname : this.rawIPs ? t ? "ip_" + this.hashIP(e) + "." + this.baseUrl : e : "ip_" + e + "." + this.baseUrl }, o.prototype.serverPort = function (e) { return 0 == e.region ? this.devPort : location.protocol.startsWith("https") ? 443 : 80 }, o.prototype.processServers = function (e) { for(var t = {}, n = 0; n < e.length; n++) { var r = e[n] , i = t[r.region]; null == i && (i = [], t[r.region] = i), i.push(r) } for(var o in t) t[o] = t[o].sort(function (e, t) { return e.index - t.index }); this.servers = t }, o.prototype.ipToHex = function (e) { return e.split(".") .map(e => ("00" + parseInt(e) .toString(16)) .substr(-2)) .join("") .toLowerCase() }, o.prototype.hashIP = function (e) { return i(this.ipToHex(e)) }, o.prototype.log = function () { return this.debugLog ? console.log.apply(void 0, arguments) : console.verbose ? console.verbose.apply(void 0, arguments) : void 0 }, o.prototype.stripRegion = function (e) { return e.startsWith("vultr:") ? e = e.slice(6) : e.startsWith("do:") && (e = e.slice(3)), e }, window.testVultrClient = function () { var e = 1; function t(t, n) { (t = "" + t) == (n = "" + n) ? console.log(`Assert ${e} passed.`): console.warn(`Assert ${e} failed. Expected ${n}, got ${t}.`), e++ } var n = new o("test.io", -1, 5, 1, !1); n.errorCallback = function (e) {}, n.processServers(function (e) { var t = []; for(var n in e) for(var r = e[n], i = 0; i < r.length; i++) t.push({ ip: n + ":" + i , scheme: "testing" , region: n , index: i , games: r[i].map(e => ({ playerCount: e , isPrivate: !1 })) }); return t }({ 1: [ [0, 0, 0, 0] , [0, 0, 0, 0] ] , 2: [ [5, 1, 0, 0] , [0, 0, 0, 0] ] , 3: [ [5, 0, 1, 5] , [0, 0, 0, 0] ] , 4: [ [5, 1, 1, 5] , [1, 0, 0, 0] ] , 5: [ [5, 1, 1, 5] , [1, 0, 4, 0] ] , 6: [ [5, 5, 5, 5] , [2, 3, 1, 4] ] , 7: [ [5, 5, 5, 5] , [5, 5, 5, 5] ] })), t(n.seekServer(1, !1), [1, 0, 0]), t(n.seekServer(1, !0), [1, 1, 3]), t(n.seekServer(2, !1), [2, 0, 1]), t(n.seekServer(2, !0), [2, 1, 3]), t(n.seekServer(3, !1), [3, 0, 2]), t(n.seekServer(3, !0), [3, 1, 3]), t(n.seekServer(4, !1), [4, 0, 1]), t(n.seekServer(4, !0), [4, 1, 3]), t(n.seekServer(5, !1), [5, 1, 2]), t(n.seekServer(5, !0), [5, 1, 3]), t(n.seekServer(6, !1), [6, 1, 3]), t(n.seekServer(6, !0), void 0), t(n.seekServer(7, !1), void 0), t(n.seekServer(7, !0), void 0), console.log("Tests passed.") }; var a = function (e, t) { return e.concat(t) }; Array.prototype.flatMap = function (e) { return function (e, t) { return t.map(e) .reduce(a, []) }(e, this) }, e.exports = o }, function (e, t, n) { var r = n(61) , i = n(63); function o() { this.protocol = null, this.slashes = null, this.auth = null, this.host = null, this.port = null, this.hostname = null, this.hash = null, this.search = null, this.query = null, this.pathname = null, this.path = null, this.href = null } t.parse = w, t.resolve = function (e, t) { return w(e, !1, !0) .resolve(t) }, t.resolveObject = function (e, t) { return e ? w(e, !1, !0) .resolveObject(t) : t }, t.format = function (e) { return i.isString(e) && (e = w(e)), e instanceof o ? e.format() : o.prototype.format.call(e) }, t.Url = o; var a = /^([a-z0-9.+-]+:)/i , s = /:[0-9]*$/ , l = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/ , c = ["{", "}", "|", "\\", "^", "`"].concat(["<", ">", '"', "`", " ", "\r", "\n", "\t"]) , u = ["'"].concat(c) , f = ["%", "/", "?", ";", "#"].concat(u) , d = ["/", "?", "#"] , h = /^[+a-z0-9A-Z_-]{0,63}$/ , p = /^([+a-z0-9A-Z_-]{0,63})(.*)$/ , A = { javascript: !0 , "javascript:": !0 } , g = { javascript: !0 , "javascript:": !0 } , m = { http: !0 , https: !0 , ftp: !0 , gopher: !0 , file: !0 , "http:": !0 , "https:": !0 , "ftp:": !0 , "gopher:": !0 , "file:": !0 } , y = n(64); function w(e, t, n) { if(e && i.isObject(e) && e instanceof o) return e; var r = new o; return r.parse(e, t, n), r } o.prototype.parse = function (e, t, n) { if(!i.isString(e)) throw new TypeError("Parameter 'url' must be a string, not " + typeof e); var o = e.indexOf("?") , s = -1 !== o && o < e.indexOf("#") ? "?" : "#" , c = e.split(s); c[0] = c[0].replace(/\\/g, "/"); var w = e = c.join(s); if(w = w.trim(), !n && 1 === e.split("#") .length) { var v = l.exec(w); if(v) return this.path = w, this.href = w, this.pathname = v[1], v[2] ? (this.search = v[2], this.query = t ? y.parse(this.search.substr(1)) : this.search.substr(1)) : t && (this.search = "", this.query = {}), this } var b = a.exec(w); if(b) { var x = (b = b[0]) .toLowerCase(); this.protocol = x, w = w.substr(b.length) } if(n || b || w.match(/^\/\/[^@\/]+@[^@\/]+/)) { var B = "//" === w.substr(0, 2); !B || b && g[b] || (w = w.substr(2), this.slashes = !0) } if(!g[b] && (B || b && !m[b])) { for(var E, k, C = -1, I = 0; I < d.length; I++) - 1 !== (T = w.indexOf(d[I])) && (-1 === C || T < C) && (C = T); for(-1 !== (k = -1 === C ? w.lastIndexOf("@") : w.lastIndexOf("@", C)) && (E = w.slice(0, k), w = w.slice(k + 1), this.auth = decodeURIComponent(E)), C = -1, I = 0; I < f.length; I++) { var T; - 1 !== (T = w.indexOf(f[I])) && (-1 === C || T < C) && (C = T) } - 1 === C && (C = w.length), this.host = w.slice(0, C), w = w.slice(C), this.parseHost(), this.hostname = this.hostname || ""; var M = "[" === this.hostname[0] && "]" === this.hostname[this.hostname.length - 1]; if(!M) for(var P = this.hostname.split(/\./), O = (I = 0, P.length); I < O; I++) { var D = P[I]; if(D && !D.match(h)) { for(var L = "", _ = 0, S = D.length; _ < S; _++) D.charCodeAt(_) > 127 ? L += "x" : L += D[_]; if(!L.match(h)) { var q = P.slice(0, I) , H = P.slice(I + 1) , V = D.match(p); V && (q.push(V[1]), H.unshift(V[2])), H.length && (w = "/" + H.join(".") + w), this.hostname = q.join("."); break } } } this.hostname.length > 255 ? this.hostname = "" : this.hostname = this.hostname.toLowerCase(), M || (this.hostname = r.toASCII(this.hostname)); var j = this.port ? ":" + this.port : "" , X = this.hostname || ""; this.host = X + j, this.href += this.host, M && (this.hostname = this.hostname.substr(1, this.hostname.length - 2), "/" !== w[0] && (w = "/" + w)) } if(!A[x]) for(I = 0, O = u.length; I < O; I++) { var U = u[I]; if(-1 !== w.indexOf(U)) { var R = encodeURIComponent(U); R === U && (R = escape(U)), w = w.split(U) .join(R) } } var Y = w.indexOf("#"); - 1 !== Y && (this.hash = w.substr(Y), w = w.slice(0, Y)); var W = w.indexOf("?"); if(-1 !== W ? (this.search = w.substr(W), this.query = w.substr(W + 1), t && (this.query = y.parse(this.query)), w = w.slice(0, W)) : t && (this.search = "", this.query = {}), w && (this.pathname = w), m[x] && this.hostname && !this.pathname && (this.pathname = "/"), this.pathname || this.search) { j = this.pathname || ""; var z = this.search || ""; this.path = j + z } return this.href = this.format(), this }, o.prototype.format = function () { var e = this.auth || ""; e && (e = (e = encodeURIComponent(e)) .replace(/%3A/i, ":"), e += "@"); var t = this.protocol || "" , n = this.pathname || "" , r = this.hash || "" , o = !1 , a = ""; this.host ? o = e + this.host : this.hostname && (o = e + (-1 === this.hostname.indexOf(":") ? this.hostname : "[" + this.hostname + "]"), this.port && (o += ":" + this.port)), this.query && i.isObject(this.query) && Object.keys(this.query) .length && (a = y.stringify(this.query)); var s = this.search || a && "?" + a || ""; return t && ":" !== t.substr(-1) && (t += ":"), this.slashes || (!t || m[t]) && !1 !== o ? (o = "//" + (o || ""), n && "/" !== n.charAt(0) && (n = "/" + n)) : o || (o = ""), r && "#" !== r.charAt(0) && (r = "#" + r), s && "?" !== s.charAt(0) && (s = "?" + s), t + o + (n = n.replace(/[?#]/g, function (e) { return encodeURIComponent(e) })) + (s = s.replace("#", "%23")) + r }, o.prototype.resolve = function (e) { return this.resolveObject(w(e, !1, !0)) .format() }, o.prototype.resolveObject = function (e) { if(i.isString(e)) { var t = new o; t.parse(e, !1, !0), e = t } for(var n = new o, r = Object.keys(this), a = 0; a < r.length; a++) { var s = r[a]; n[s] = this[s] } if(n.hash = e.hash, "" === e.href) return n.href = n.format(), n; if(e.slashes && !e.protocol) { for(var l = Object.keys(e), c = 0; c < l.length; c++) { var u = l[c]; "protocol" !== u && (n[u] = e[u]) } return m[n.protocol] && n.hostname && !n.pathname && (n.path = n.pathname = "/"), n.href = n.format(), n } if(e.protocol && e.protocol !== n.protocol) { if(!m[e.protocol]) { for(var f = Object.keys(e), d = 0; d < f.length; d++) { var h = f[d]; n[h] = e[h] } return n.href = n.format(), n } if(n.protocol = e.protocol, e.host || g[e.protocol]) n.pathname = e.pathname; else { for(var p = (e.pathname || "") .split("/"); p.length && !(e.host = p.shift());); e.host || (e.host = ""), e.hostname || (e.hostname = ""), "" !== p[0] && p.unshift(""), p.length < 2 && p.unshift(""), n.pathname = p.join("/") } if(n.search = e.search, n.query = e.query, n.host = e.host || "", n.auth = e.auth, n.hostname = e.hostname || e.host, n.port = e.port, n.pathname || n.search) { var A = n.pathname || "" , y = n.search || ""; n.path = A + y } return n.slashes = n.slashes || e.slashes, n.href = n.format(), n } var w = n.pathname && "/" === n.pathname.charAt(0) , v = e.host || e.pathname && "/" === e.pathname.charAt(0) , b = v || w || n.host && e.pathname , x = b , B = n.pathname && n.pathname.split("/") || [] , E = (p = e.pathname && e.pathname.split("/") || [], n.protocol && !m[n.protocol]); if(E && (n.hostname = "", n.port = null, n.host && ("" === B[0] ? B[0] = n.host : B.unshift(n.host)), n.host = "", e.protocol && (e.hostname = null, e.port = null, e.host && ("" === p[0] ? p[0] = e.host : p.unshift(e.host)), e.host = null), b = b && ("" === p[0] || "" === B[0])), v) n.host = e.host || "" === e.host ? e.host : n.host, n.hostname = e.hostname || "" === e.hostname ? e.hostname : n.hostname, n.search = e.search, n.query = e.query, B = p; else if(p.length) B || (B = []), B.pop(), B = B.concat(p), n.search = e.search, n.query = e.query; else if(!i.isNullOrUndefined(e.search)) return E && (n.hostname = n.host = B.shift(), (M = !!(n.host && n.host.indexOf("@") > 0) && n.host.split("@")) && (n.auth = M.shift(), n.host = n.hostname = M.shift())), n.search = e.search, n.query = e.query, i.isNull(n.pathname) && i.isNull(n.search) || (n.path = (n.pathname ? n.pathname : "") + (n.search ? n.search : "")), n.href = n.format(), n; if(!B.length) return n.pathname = null, n.search ? n.path = "/" + n.search : n.path = null, n.href = n.format(), n; for(var k = B.slice(-1)[0], C = (n.host || e.host || B.length > 1) && ("." === k || ".." === k) || "" === k, I = 0, T = B.length; T >= 0; T--) "." === (k = B[T]) ? B.splice(T, 1) : ".." === k ? (B.splice(T, 1), I++) : I && (B.splice(T, 1), I--); if(!b && !x) for(; I--; I) B.unshift(".."); !b || "" === B[0] || B[0] && "/" === B[0].charAt(0) || B.unshift(""), C && "/" !== B.join("/") .substr(-1) && B.push(""); var M, P = "" === B[0] || B[0] && "/" === B[0].charAt(0); return E && (n.hostname = n.host = P ? "" : B.length ? B.shift() : "", (M = !!(n.host && n.host.indexOf("@") > 0) && n.host.split("@")) && (n.auth = M.shift(), n.host = n.hostname = M.shift())), (b = b || n.host && B.length) && !P && B.unshift(""), B.length ? n.pathname = B.join("/") : (n.pathname = null, n.path = null), i.isNull(n.pathname) && i.isNull(n.search) || (n.path = (n.pathname ? n.pathname : "") + (n.search ? n.search : "")), n.auth = e.auth || n.auth, n.slashes = n.slashes || e.slashes, n.href = n.format(), n }, o.prototype.parseHost = function () { var e = this.host , t = s.exec(e); t && (":" !== (t = t[0]) && (this.port = t.substr(1)), e = e.substr(0, e.length - t.length)), e && (this.hostname = e) } }, function (e, t, n) { (function (e, r) { var i; ! function (o) { t && t.nodeType, e && e.nodeType; var a = "object" == typeof r && r; a.global !== a && a.window !== a && a.self; var s, l = 2147483647 , c = 36 , u = /^xn--/ , f = /[^\x20-\x7E]/ , d = /[\x2E\u3002\uFF0E\uFF61]/g , h = { overflow: "Overflow: input needs wider integers to process" , "not-basic": "Illegal input >= 0x80 (not a basic code point)" , "invalid-input": "Invalid input" } , p = Math.floor , A = String.fromCharCode; function g(e) { throw new RangeError(h[e]) } function m(e, t) { for(var n = e.length, r = []; n--;) r[n] = t(e[n]); return r } function y(e, t) { var n = e.split("@") , r = ""; return n.length > 1 && (r = n[0] + "@", e = n[1]), r + m((e = e.replace(d, ".")) .split("."), t) .join(".") } function w(e) { for(var t, n, r = [], i = 0, o = e.length; i < o;)(t = e.charCodeAt(i++)) >= 55296 && t <= 56319 && i < o ? 56320 == (64512 & (n = e.charCodeAt(i++))) ? r.push(((1023 & t) << 10) + (1023 & n) + 65536) : (r.push(t), i--) : r.push(t); return r } function v(e) { return m(e, function (e) { var t = ""; return e > 65535 && (t += A((e -= 65536) >>> 10 & 1023 | 55296), e = 56320 | 1023 & e), t + A(e) }) .join("") } function b(e) { return e - 48 < 10 ? e - 22 : e - 65 < 26 ? e - 65 : e - 97 < 26 ? e - 97 : c } function x(e, t) { return e + 22 + 75 * (e < 26) - ((0 != t) << 5) } function B(e, t, n) { var r = 0; for(e = n ? p(e / 700) : e >> 1, e += p(e / t); e > 455; r += c) e = p(e / 35); return p(r + 36 * e / (e + 38)) } function E(e) { var t, n, r, i, o, a, s, u, f, d, h = [] , A = e.length , m = 0 , y = 128 , w = 72; for((n = e.lastIndexOf("-")) < 0 && (n = 0), r = 0; r < n; ++r) e.charCodeAt(r) >= 128 && g("not-basic"), h.push(e.charCodeAt(r)); for(i = n > 0 ? n + 1 : 0; i < A;) { for(o = m, a = 1, s = c; i >= A && g("invalid-input"), ((u = b(e.charCodeAt(i++))) >= c || u > p((l - m) / a)) && g("overflow"), m += u * a, !(u < (f = s <= w ? 1 : s >= w + 26 ? 26 : s - w)); s += c) a > p(l / (d = c - f)) && g("overflow"), a *= d; w = B(m - o, t = h.length + 1, 0 == o), p(m / t) > l - y && g("overflow"), y += p(m / t), m %= t, h.splice(m++, 0, y) } return v(h) } function k(e) { var t, n, r, i, o, a, s, u, f, d, h, m, y, v, b, E = []; for(m = (e = w(e)) .length, t = 128, n = 0, o = 72, a = 0; a < m; ++a)(h = e[a]) < 128 && E.push(A(h)); for(r = i = E.length, i && E.push("-"); r < m;) { for(s = l, a = 0; a < m; ++a)(h = e[a]) >= t && h < s && (s = h); for(s - t > p((l - n) / (y = r + 1)) && g("overflow"), n += (s - t) * y, t = s, a = 0; a < m; ++a) if((h = e[a]) < t && ++n > l && g("overflow"), h == t) { for(u = n, f = c; !(u < (d = f <= o ? 1 : f >= o + 26 ? 26 : f - o)); f += c) b = u - d, v = c - d, E.push(A(x(d + b % v, 0))), u = p(b / v); E.push(A(x(u, 0))), o = B(n, y, r == i), n = 0, ++r }++ n, ++t } return E.join("") } s = { version: "1.4.1" , ucs2: { decode: w , encode: v } , decode: E , encode: k , toASCII: function (e) { return y(e, function (e) { return f.test(e) ? "xn--" + k(e) : e }) } , toUnicode: function (e) { return y(e, function (e) { return u.test(e) ? E(e.slice(4) .toLowerCase()) : e }) } }, void 0 === (i = function () { return s }.call(t, n, t, e)) || (e.exports = i) }() }) .call(this, n(62)(e), n(12)) }, function (e, t) { e.exports = function (e) { return e.webpackPolyfill || (e.deprecate = function () {}, e.paths = [], e.children || (e.children = []), Object.defineProperty(e, "loaded", { enumerable: !0 , get: function () { return e.l } }), Object.defineProperty(e, "id", { enumerable: !0 , get: function () { return e.i } }), e.webpackPolyfill = 1), e } }, function (e, t, n) { e.exports = { isString: function (e) { return "string" == typeof e } , isObject: function (e) { return "object" == typeof e && null !== e } , isNull: function (e) { return null === e } , isNullOrUndefined: function (e) { return null == e } } }, function (e, t, n) { t.decode = t.parse = n(65), t.encode = t.stringify = n(66) }, function (e, t, n) { function r(e, t) { return Object.prototype.hasOwnProperty.call(e, t) } e.exports = function (e, t, n, o) { t = t || "&", n = n || "="; var a = {}; if("string" != typeof e || 0 === e.length) return a; var s = /\+/g; e = e.split(t); var l = 1e3; o && "number" == typeof o.maxKeys && (l = o.maxKeys); var c = e.length; l > 0 && c > l && (c = l); for(var u = 0; u < c; ++u) { var f, d, h, p, A = e[u].replace(s, "%20") , g = A.indexOf(n); g >= 0 ? (f = A.substr(0, g), d = A.substr(g + 1)) : (f = A, d = ""), h = decodeURIComponent(f), p = decodeURIComponent(d), r(a, h) ? i(a[h]) ? a[h].push(p) : a[h] = [a[h], p] : a[h] = p } return a }; var i = Array.isArray || function (e) { return "[object Array]" === Object.prototype.toString.call(e) } }, function (e, t, n) { var r = function (e) { switch(typeof e) { case "string": return e; case "boolean": return e ? "true" : "false"; case "number": return isFinite(e) ? e : ""; default: return "" } }; e.exports = function (e, t, n, s) { return t = t || "&", n = n || "=", null === e && (e = void 0), "object" == typeof e ? o(a(e), function (a) { var s = encodeURIComponent(r(a)) + n; return i(e[a]) ? o(e[a], function (e) { return s + encodeURIComponent(r(e)) }) .join(t) : s + encodeURIComponent(r(e[a])) }) .join(t) : s ? encodeURIComponent(r(s)) + n + encodeURIComponent(r(e)) : "" }; var i = Array.isArray || function (e) { return "[object Array]" === Object.prototype.toString.call(e) }; function o(e, t) { if(e.map) return e.map(t); for(var n = [], r = 0; r < e.length; r++) n.push(t(e[r], r)); return n } var a = Object.keys || function (e) { var t = []; for(var n in e) Object.prototype.hasOwnProperty.call(e, n) && t.push(n); return t } }, function (e, t, n) { ! function () { var t = n(68) , r = n(20) .utf8 , i = n(69) , o = n(20) .bin , a = function (e, n) { e.constructor == String ? e = n && "binary" === n.encoding ? o.stringToBytes(e) : r.stringToBytes(e) : i(e) ? e = Array.prototype.slice.call(e, 0) : Array.isArray(e) || (e = e.toString()); for(var s = t.bytesToWords(e), l = 8 * e.length, c = 1732584193, u = -271733879, f = -1732584194, d = 271733878, h = 0; h < s.length; h++) s[h] = 16711935 & (s[h] << 8 | s[h] >>> 24) | 4278255360 & (s[h] << 24 | s[h] >>> 8); s[l >>> 5] |= 128 << l % 32, s[14 + (l + 64 >>> 9 << 4)] = l; var p = a._ff , A = a._gg , g = a._hh , m = a._ii; for(h = 0; h < s.length; h += 16) { var y = c , w = u , v = f , b = d; u = m(u = m(u = m(u = m(u = g(u = g(u = g(u = g(u = A(u = A(u = A(u = A(u = p(u = p(u = p(u = p(u, f = p(f, d = p(d, c = p(c, u, f, d, s[h + 0], 7, -680876936), u, f, s[h + 1], 12, -389564586), c, u, s[h + 2], 17, 606105819), d, c, s[h + 3], 22, -1044525330), f = p(f, d = p(d, c = p(c, u, f, d, s[h + 4], 7, -176418897), u, f, s[h + 5], 12, 1200080426), c, u, s[h + 6], 17, -1473231341), d, c, s[h + 7], 22, -45705983), f = p(f, d = p(d, c = p(c, u, f, d, s[h + 8], 7, 1770035416), u, f, s[h + 9], 12, -1958414417), c, u, s[h + 10], 17, -42063), d, c, s[h + 11], 22, -1990404162), f = p(f, d = p(d, c = p(c, u, f, d, s[h + 12], 7, 1804603682), u, f, s[h + 13], 12, -40341101), c, u, s[h + 14], 17, -1502002290), d, c, s[h + 15], 22, 1236535329), f = A(f, d = A(d, c = A(c, u, f, d, s[h + 1], 5, -165796510), u, f, s[h + 6], 9, -1069501632), c, u, s[h + 11], 14, 643717713), d, c, s[h + 0], 20, -373897302), f = A(f, d = A(d, c = A(c, u, f, d, s[h + 5], 5, -701558691), u, f, s[h + 10], 9, 38016083), c, u, s[h + 15], 14, -660478335), d, c, s[h + 4], 20, -405537848), f = A(f, d = A(d, c = A(c, u, f, d, s[h + 9], 5, 568446438), u, f, s[h + 14], 9, -1019803690), c, u, s[h + 3], 14, -187363961), d, c, s[h + 8], 20, 1163531501), f = A(f, d = A(d, c = A(c, u, f, d, s[h + 13], 5, -1444681467), u, f, s[h + 2], 9, -51403784), c, u, s[h + 7], 14, 1735328473), d, c, s[h + 12], 20, -1926607734), f = g(f, d = g(d, c = g(c, u, f, d, s[h + 5], 4, -378558), u, f, s[h + 8], 11, -2022574463), c, u, s[h + 11], 16, 1839030562), d, c, s[h + 14], 23, -35309556), f = g(f, d = g(d, c = g(c, u, f, d, s[h + 1], 4, -1530992060), u, f, s[h + 4], 11, 1272893353), c, u, s[h + 7], 16, -155497632), d, c, s[h + 10], 23, -1094730640), f = g(f, d = g(d, c = g(c, u, f, d, s[h + 13], 4, 681279174), u, f, s[h + 0], 11, -358537222), c, u, s[h + 3], 16, -722521979), d, c, s[h + 6], 23, 76029189), f = g(f, d = g(d, c = g(c, u, f, d, s[h + 9], 4, -640364487), u, f, s[h + 12], 11, -421815835), c, u, s[h + 15], 16, 530742520), d, c, s[h + 2], 23, -995338651), f = m(f, d = m(d, c = m(c, u, f, d, s[h + 0], 6, -198630844), u, f, s[h + 7], 10, 1126891415), c, u, s[h + 14], 15, -1416354905), d, c, s[h + 5], 21, -57434055), f = m(f, d = m(d, c = m(c, u, f, d, s[h + 12], 6, 1700485571), u, f, s[h + 3], 10, -1894986606), c, u, s[h + 10], 15, -1051523), d, c, s[h + 1], 21, -2054922799), f = m(f, d = m(d, c = m(c, u, f, d, s[h + 8], 6, 1873313359), u, f, s[h + 15], 10, -30611744), c, u, s[h + 6], 15, -1560198380), d, c, s[h + 13], 21, 1309151649), f = m(f, d = m(d, c = m(c, u, f, d, s[h + 4], 6, -145523070), u, f, s[h + 11], 10, -1120210379), c, u, s[h + 2], 15, 718787259), d, c, s[h + 9], 21, -343485551), c = c + y >>> 0, u = u + w >>> 0, f = f + v >>> 0, d = d + b >>> 0 } return t.endian([c, u, f, d]) }; a._ff = function (e, t, n, r, i, o, a) { var s = e + (t & n | ~t & r) + (i >>> 0) + a; return (s << o | s >>> 32 - o) + t }, a._gg = function (e, t, n, r, i, o, a) { var s = e + (t & r | n & ~r) + (i >>> 0) + a; return (s << o | s >>> 32 - o) + t }, a._hh = function (e, t, n, r, i, o, a) { var s = e + (t ^ n ^ r) + (i >>> 0) + a; return (s << o | s >>> 32 - o) + t }, a._ii = function (e, t, n, r, i, o, a) { var s = e + (n ^ (t | ~r)) + (i >>> 0) + a; return (s << o | s >>> 32 - o) + t }, a._blocksize = 16, a._digestsize = 16, e.exports = function (e, n) { if(null == e) throw new Error("Illegal argument " + e); var r = t.wordsToBytes(a(e, n)); return n && n.asBytes ? r : n && n.asString ? o.bytesToString(r) : t.bytesToHex(r) } }() }, function (e, t) { ! function () { var t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" , n = { rotl: function (e, t) { return e << t | e >>> 32 - t } , rotr: function (e, t) { return e << 32 - t | e >>> t } , endian: function (e) { if(e.constructor == Number) return 16711935 & n.rotl(e, 8) | 4278255360 & n.rotl(e, 24); for(var t = 0; t < e.length; t++) e[t] = n.endian(e[t]); return e } , randomBytes: function (e) { for(var t = []; e > 0; e--) t.push(Math.floor(256 * Math.random())); return t } , bytesToWords: function (e) { for(var t = [], n = 0, r = 0; n < e.length; n++, r += 8) t[r >>> 5] |= e[n] << 24 - r % 32; return t } , wordsToBytes: function (e) { for(var t = [], n = 0; n < 32 * e.length; n += 8) t.push(e[n >>> 5] >>> 24 - n % 32 & 255); return t } , bytesToHex: function (e) { for(var t = [], n = 0; n < e.length; n++) t.push((e[n] >>> 4) .toString(16)), t.push((15 & e[n]) .toString(16)); return t.join("") } , hexToBytes: function (e) { for(var t = [], n = 0; n < e.length; n += 2) t.push(parseInt(e.substr(n, 2), 16)); return t } , bytesToBase64: function (e) { for(var n = [], r = 0; r < e.length; r += 3) for(var i = e[r] << 16 | e[r + 1] << 8 | e[r + 2], o = 0; o < 4; o++) 8 * r + 6 * o <= 8 * e.length ? n.push(t.charAt(i >>> 6 * (3 - o) & 63)) : n.push("="); return n.join("") } , base64ToBytes: function (e) { e = e.replace(/[^A-Z0-9+\/]/gi, ""); for(var n = [], r = 0, i = 0; r < e.length; i = ++r % 4) 0 != i && n.push((t.indexOf(e.charAt(r - 1)) & Math.pow(2, -2 * i + 8) - 1) << 2 * i | t.indexOf(e.charAt(r)) >>> 6 - 2 * i); return n } }; e.exports = n }() }, function (e, t) { function n(e) { return !!e.constructor && "function" == typeof e.constructor.isBuffer && e.constructor.isBuffer(e) } e.exports = function (e) { return null != e && (n(e) || function (e) { return "function" == typeof e.readFloatLE && "function" == typeof e.slice && n(e.slice(0, 0)) }(e) || !!e._isBuffer) } }, function (e, t) { e.exports = function (e, t, n, r, i, o, a, s, l) { this.aiTypes = [{ id: 0 , src: "cow_1" , killScore: 150 , health: 500 , weightM: .8 , speed: 95e-5 , turnSpeed: .001 , scale: 72 , drop: ["food", 50] }, { id: 1 , src: "pig_1" , killScore: 200 , health: 800 , weightM: .6 , speed: 85e-5 , turnSpeed: .001 , scale: 72 , drop: ["food", 80] }, { id: 2 , name: "Bull" , src: "bull_2" , hostile: !0 , dmg: 20 , killScore: 1e3 , health: 1800 , weightM: .5 , speed: 94e-5 , turnSpeed: 74e-5 , scale: 78 , viewRange: 800 , chargePlayer: !0 , drop: ["food", 100] }, { id: 3 , name: "Bully" , src: "bull_1" , hostile: !0 , dmg: 20 , killScore: 2e3 , health: 2800 , weightM: .45 , speed: .001 , turnSpeed: 8e-4 , scale: 90 , viewRange: 900 , chargePlayer: !0 , drop: ["food", 400] }, { id: 4 , name: "Wolf" , src: "wolf_1" , hostile: !0 , dmg: 8 , killScore: 500 , health: 300 , weightM: .45 , speed: .001 , turnSpeed: .002 , scale: 84 , viewRange: 800 , chargePlayer: !0 , drop: ["food", 200] }, { id: 5 , name: "Quack" , src: "chicken_1" , dmg: 8 , killScore: 2e3 , noTrap: !0 , health: 300 , weightM: .2 , speed: .0018 , turnSpeed: .006 , scale: 70 , drop: ["food", 100] }, { id: 6 , name: "MOOSTAFA" , nameScale: 50 , src: "enemy" , hostile: !0 , dontRun: !0 , fixedSpawn: !0 , spawnDelay: 6e4 , noTrap: !0 , colDmg: 100 , dmg: 40 , killScore: 8e3 , health: 18e3 , weightM: .4 , speed: 7e-4 , turnSpeed: .01 , scale: 80 , spriteMlt: 1.8 , leapForce: .9 , viewRange: 1e3 , hitRange: 210 , hitDelay: 1e3 , chargePlayer: !0 , drop: ["food", 100] }, { id: 7 , name: "Treasure" , hostile: !0 , nameScale: 35 , src: "crate_1" , fixedSpawn: !0 , spawnDelay: 12e4 , colDmg: 200 , killScore: 5e3 , health: 2e4 , weightM: .1 , speed: 0 , turnSpeed: 0 , scale: 70 , spriteMlt: 1 }, { id: 8 , name: "MOOFIE" , src: "wolf_2" , hostile: !0 , fixedSpawn: !0 , dontRun: !0 , hitScare: 4 , spawnDelay: 3e4 , noTrap: !0 , nameScale: 35 , dmg: 10 , colDmg: 100 , killScore: 3e3 , health: 7e3 , weightM: .45 , speed: .0015 , turnSpeed: .002 , scale: 90 , viewRange: 800 , chargePlayer: !0 , drop: ["food", 1e3] }], this.spawn = function (c, u, f, d) { for(var h, p = 0; p < e.length; ++p) if(!e[p].active) { h = e[p]; break } return h || (h = new t(e.length, i, n, r, a, o, s, l), e.push(h)), h.init(c, u, f, d, this.aiTypes[d]), h } } }, function (e, t) { var n = 2 * Math.PI; e.exports = function (e, t, r, i, o, a, s, l) { this.sid = e, this.isAI = !0, this.nameIndex = o.randInt(0, a.cowNames.length - 1), this.init = function (e, t, n, r, i) { this.x = e, this.y = t, this.startX = i.fixedSpawn ? e : null, this.startY = i.fixedSpawn ? t : null, this.xVel = 0, this.yVel = 0, this.zIndex = 0, this.dir = n, this.dirPlus = 0, this.index = r, this.src = i.src, i.name && (this.name = i.name), this.weightM = i.weightM, this.speed = i.speed, this.killScore = i.killScore, this.turnSpeed = i.turnSpeed, this.scale = i.scale, this.maxHealth = i.health, this.leapForce = i.leapForce, this.health = this.maxHealth, this.chargePlayer = i.chargePlayer, this.viewRange = i.viewRange, this.drop = i.drop, this.dmg = i.dmg, this.hostile = i.hostile, this.dontRun = i.dontRun, this.hitRange = i.hitRange, this.hitDelay = i.hitDelay, this.hitScare = i.hitScare, this.spriteMlt = i.spriteMlt, this.nameScale = i.nameScale, this.colDmg = i.colDmg, this.noTrap = i.noTrap, this.spawnDelay = i.spawnDelay, this.hitWait = 0, this.waitCount = 1e3, this.moveCount = 0, this.targetDir = 0, this.active = !0, this.alive = !0, this.runFrom = null, this.chargeTarget = null, this.dmgOverTime = {} }; var c = 0; this.update = function (e) { if(this.active) { if(this.spawnCounter) return this.spawnCounter -= e, void(this.spawnCounter <= 0 && (this.spawnCounter = 0, this.x = this.startX || o.randInt(0, a.mapScale), this.y = this.startY || o.randInt(0, a.mapScale))); (c -= e) <= 0 && (this.dmgOverTime.dmg && (this.changeHealth(-this.dmgOverTime.dmg, this.dmgOverTime.doer), this.dmgOverTime.time -= 1, this.dmgOverTime.time <= 0 && (this.dmgOverTime.dmg = 0)), c = 1e3); var i = !1 , s = 1; if(!this.zIndex && !this.lockMove && this.y >= a.mapScale / 2 - a.riverWidth / 2 && this.y <= a.mapScale / 2 + a.riverWidth / 2 && (s = .33, this.xVel += a.waterCurrent * e), this.lockMove) this.xVel = 0, this.yVel = 0; else if(this.waitCount > 0) { if(this.waitCount -= e, this.waitCount <= 0) if(this.chargePlayer) { for(var u, f, d, h = 0; h < r.length; ++h) !r[h].alive || r[h].skin && r[h].skin.bullRepel || (d = o.getDistance(this.x, this.y, r[h].x, r[h].y)) <= this.viewRange && (!u || d < f) && (f = d, u = r[h]); u ? (this.chargeTarget = u, this.moveCount = o.randInt(8e3, 12e3)) : (this.moveCount = o.randInt(1e3, 2e3), this.targetDir = o.randFloat(-Math.PI, Math.PI)) } else this.moveCount = o.randInt(4e3, 1e4), this.targetDir = o.randFloat(-Math.PI, Math.PI) } else if(this.moveCount > 0) { var p = this.speed * s; if(this.runFrom && this.runFrom.active && (!this.runFrom.isPlayer || this.runFrom.alive) ? (this.targetDir = o.getDirection(this.x, this.y, this.runFrom.x, this.runFrom.y), p *= 1.42) : this.chargeTarget && this.chargeTarget.alive && (this.targetDir = o.getDirection(this.chargeTarget.x, this.chargeTarget.y, this.x, this.y), p *= 1.75, i = !0), this.hitWait && (p *= .3), this.dir != this.targetDir) { this.dir %= n; var A = (this.dir - this.targetDir + n) % n , g = Math.min(Math.abs(A - n), A, this.turnSpeed * e) , m = A - Math.PI >= 0 ? 1 : -1; this.dir += m * g + n } this.dir %= n, this.xVel += p * e * Math.cos(this.dir), this.yVel += p * e * Math.sin(this.dir), this.moveCount -= e, this.moveCount <= 0 && (this.runFrom = null, this.chargeTarget = null, this.waitCount = this.hostile ? 1500 : o.randInt(1500, 6e3)) } this.zIndex = 0, this.lockMove = !1; var y = o.getDistance(0, 0, this.xVel * e, this.yVel * e) , w = Math.min(4, Math.max(1, Math.round(y / 40))) , v = 1 / w; for(h = 0; h < w; ++h) { this.xVel && (this.x += this.xVel * e * v), this.yVel && (this.y += this.yVel * e * v), I = t.getGridArrays(this.x, this.y, this.scale); for(var b = 0; b < I.length; ++b) for(var x = 0; x < I[b].length; ++x) I[b][x].active && t.checkCollision(this, I[b][x], v) } var B, E, k, C = !1; if(this.hitWait > 0 && (this.hitWait -= e, this.hitWait <= 0)) { C = !0, this.hitWait = 0, this.leapForce && !o.randInt(0, 2) && (this.xVel += this.leapForce * Math.cos(this.dir), this.yVel += this.leapForce * Math.sin(this.dir)); for(var I = t.getGridArrays(this.x, this.y, this.hitRange), T = 0; T < I.length; ++T) for(b = 0; b < I[T].length; ++b)(B = I[T][b]) .health && (E = o.getDistance(this.x, this.y, B.x, B.y)) < B.scale + this.hitRange && (B.changeHealth(5 * -this.dmg) && t.disableObj(B), t.hitObj(B, o.getDirection(this.x, this.y, B.x, B.y))); for(b = 0; b < r.length; ++b) r[b].canSee(this) && l.send(r[b].id, "aa", this.sid) } if(i || C) for(h = 0; h < r.length; ++h)(B = r[h]) && B.alive && (E = o.getDistance(this.x, this.y, B.x, B.y), this.hitRange ? !this.hitWait && E <= this.hitRange + B.scale && (C ? (k = o.getDirection(B.x, B.y, this.x, this.y), B.changeHealth(-this.dmg), B.xVel += .6 * Math.cos(k), B.yVel += .6 * Math.sin(k), this.runFrom = null, this.chargeTarget = null, this.waitCount = 3e3, this.hitWait = o.randInt(0, 2) ? 0 : 600) : this.hitWait = this.hitDelay) : E <= this.scale + B.scale && (k = o.getDirection(B.x, B.y, this.x, this.y), B.changeHealth(-this.dmg), B.xVel += .55 * Math.cos(k), B.yVel += .55 * Math.sin(k))); this.xVel && (this.xVel *= Math.pow(a.playerDecel, e)), this.yVel && (this.yVel *= Math.pow(a.playerDecel, e)); var M = this.scale; this.x - M < 0 ? (this.x = M, this.xVel = 0) : this.x + M > a.mapScale && (this.x = a.mapScale - M, this.xVel = 0), this.y - M < 0 ? (this.y = M, this.yVel = 0) : this.y + M > a.mapScale && (this.y = a.mapScale - M, this.yVel = 0) } }, this.canSee = function (e) { if(!e) return !1; if(e.skin && e.skin.invisTimer && e.noMovTimer >= e.skin.invisTimer) return !1; var t = Math.abs(e.x - this.x) - e.scale , n = Math.abs(e.y - this.y) - e.scale; return t <= a.maxScreenWidth / 2 * 1.3 && n <= a.maxScreenHeight / 2 * 1.3 }; var u = 0 , f = 0; this.animate = function (e) { this.animTime > 0 && (this.animTime -= e, this.animTime <= 0 ? (this.animTime = 0, this.dirPlus = 0, u = 0, f = 0) : 0 == f ? (u += e / (this.animSpeed * a.hitReturnRatio), this.dirPlus = o.lerp(0, this.targetAngle, Math.min(1, u)), u >= 1 && (u = 1, f = 1)) : (u -= e / (this.animSpeed * (1 - a.hitReturnRatio)), this.dirPlus = o.lerp(0, this.targetAngle, Math.max(0, u)))) }, this.startAnim = function () { this.animTime = this.animSpeed = 600, this.targetAngle = .8 * Math.PI, u = 0, f = 0 }, this.changeHealth = function (e, t, n) { if(this.active && (this.health += e, n && (this.hitScare && !o.randInt(0, this.hitScare) ? (this.runFrom = n, this.waitCount = 0, this.moveCount = 2e3) : this.hostile && this.chargePlayer && n.isPlayer ? (this.chargeTarget = n, this.waitCount = 0, this.moveCount = 8e3) : this.dontRun || (this.runFrom = n, this.waitCount = 0, this.moveCount = 2e3)), e < 0 && this.hitRange && o.randInt(0, 1) && (this.hitWait = 500), t && t.canSee(this) && e < 0 && l.send(t.id, "t", Math.round(this.x), Math.round(this.y), Math.round(-e), 1), this.health <= 0 && (this.spawnDelay ? (this.spawnCounter = this.spawnDelay, this.x = -1e6, this.y = -1e6) : (this.x = this.startX || o.randInt(0, a.mapScale), this.y = this.startY || o.randInt(0, a.mapScale)), this.health = this.maxHealth, this.runFrom = null, t && (s(t, this.killScore), this.drop)))) for(var r = 0; r < this.drop.length;) t.addResource(a.resourceTypes.indexOf(this.drop[r]), this.drop[r + 1]), r += 2 } } }]); let ge = (...e) => { let t = e; t[0] == Ve.hat && !t[0] || t[0] == Ve.accessory && t[1] || (storeBuy(...e), t[1] ? (ae(["13c", [0, 0, 1]]), ae(["13c", [0, t[0], 1]])) : ae(["13c", [0, t[0], 0]])) }; function e(e) { return null !== e.offsetParent } unsafeWindow.storeEquip = ge, storeEquip = ge; try { document.getElementById("moomooio_728x90_home") .style.display = "none", $("#moomooio_728x90_home") .parent() .css({ display: "none" }); try { window.admob = { requestInterstitialAd: () => {} , showInterstitialAd: () => {} } } catch (e) { console.warn(e) } } catch (e) { console.log("Failed, " + e) } $("#adCard") .remove(), document.onload = setTimeout(function () { "Loading" == reloadModule.loadState && document.querySelector("#ot-sdk-btn-floating") && (reloadModule.loadState = "Disconnected") }, 7400), window.reloadModule = class { static loadStateGetter() { "Reloading" != reloadModule.loadState && (document.querySelector("#loadingText") .innerText.includes("Loading") ? document.querySelector("#partyButton") .innerText.length > 1 && (reloadModule.loadState = "Done") : document.querySelector("#loadingText") .innerText.includes("disconnected") && (reloadModule.loadState = "Disconnected"), "Disconnected" == reloadModule.loadState && (location.reload(), reloadModule.loadState = "Reloading"), window.requestAnimationFrame(reloadModule.loadStateGetter)) } }, reloadModule.reloadState = "Loading", window.requestAnimationFrame(reloadModule.loadStateGetter), $("#gameCanvas") .css("cursor", "auto"), $("#guideCard") .css({ "max-height": "350px" , width: "320px" , "overflow-y": "scroll" , "-webkit-overflow-scrolling": "touch" }), document.getElementById("mainMenu") .style.backgroundImage = "url('http://surviv.io/img/main_splash.png')"; async function t(e) { return new Promise((t, n) => { setTimeout(() => { t() }, e) }) } unsafeWindow.trace_a = function () { unsafeWindow.tr(Ve.x, Ve.y) }, unsafeWindow.cleartr = function () { unsafeWindow.cleartracers() }; setInterval(async () => { e(document.getElementById("enterGame")) && document.getElementById("autospawn") .checked && ae(["sp", [{ name: "cc" , moofoll: !0 , skin: "constructor" }]]) }, 112.5), $("#chatBox") .css({ width: "300px" }), document.getElementById("storeHolder") .style = "height: 1500px; width: 450px;"; const me = $("#pingDisplay"); me.css("top", "3px"), me.css("display", "block"), $("body") .append(me), document.generateFixedClan = (() => { ae(["8", [document.getElementById("fixedClanCreationValue") .value ]]) }); const ye = [{ id: 45 , name: "Shame!" , dontSell: !0 , price: 0 , scale: 120 , desc: "hacks are for losers" }, { id: 51 , name: "Moo Cap" , price: 0 , scale: 120 , desc: "coolest mooer around" }, { id: 50 , name: "Apple Cap" , price: 0 , scale: 120 , desc: "apple farms remembers" }, { id: 28 , name: "Moo Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 29 , name: "Pig Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 30 , name: "Fluff Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 36 , name: "Pandou Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 37 , name: "Bear Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 38 , name: "Monkey Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 44 , name: "Polar Head" , price: 0 , scale: 120 , desc: "no effect" }, { id: 35 , name: "Fez Hat" , price: 0 , scale: 120 , desc: "no effect" }, { id: 42 , name: "Enigma Hat" , price: 0 , scale: 120 , desc: "join the enigma army" }, { id: 43 , name: "Blitz Hat" , price: 0 , scale: 120 , desc: "hey everybody i'm blitz" }, { id: 49 , name: "Bob XIII Hat" , price: 0 , scale: 120 , desc: "like and subscribe" }, { id: 57 , name: "Pumpkin" , price: 50 , scale: 120 , desc: "Spooooky" }, { id: 8 , name: "Bummle Hat" , price: 100 , scale: 120 , desc: "no effect" }, { id: 2 , name: "Straw Hat" , price: 500 , scale: 120 , desc: "no effect" }, { id: 15 , name: "Winter Cap" , price: 600 , scale: 120 , desc: "allows you to move at normal speed in snow" , coldM: 1 }, { id: 5 , name: "Cowboy Hat" , price: 1e3 , scale: 120 , desc: "no effect" }, { id: 4 , name: "Ranger Hat" , price: 2e3 , scale: 120 , desc: "no effect" }, { id: 18 , name: "Explorer Hat" , price: 2e3 , scale: 120 , desc: "no effect" }, { id: 31 , name: "Flipper Hat" , price: 2500 , scale: 120 , desc: "have more control while in water" , watrImm: !0 }, { id: 1 , name: "Marksman Cap" , price: 3e3 , scale: 120 , desc: "increases arrow speed and range" , aMlt: 1.3 }, { id: 10 , name: "Bush Gear" , price: 3e3 , scale: 160 , desc: "allows you to disguise yourself as a bush" }, { id: 48 , name: "Halo" , price: 3e3 , scale: 120 , desc: "no effect" }, { id: 6 , name: "Soldier Helmet" , price: 4e3 , scale: 120 , desc: "reduces damage taken but slows movement" , spdMult: .94 , dmgMult: .75 }, { id: 23 , name: "Anti Venom Gear" , price: 4e3 , scale: 120 , desc: "makes you immune to poison" , poisonRes: 1 }, { id: 13 , name: "Medic Gear" , price: 5e3 , scale: 110 , desc: "slowly regenerates health over time" , healthRegen: 3 }, { id: 9 , name: "Miners Helmet" , price: 5e3 , scale: 120 , desc: "earn 1 extra gold per resource" , extraGold: 1 }, { id: 32 , name: "Musketeer Hat" , price: 5e3 , scale: 120 , desc: "reduces cost of projectiles" , projCost: .5 }, { id: 7 , name: "Bull Helmet" , price: 6e3 , scale: 120 , desc: "increases damage done but drains health" , healthRegen: -5 , dmgMultO: 1.5 , spdMult: .96 }, { id: 22 , name: "Emp Helmet" , price: 6e3 , scale: 120 , desc: "turrets won't attack but you move slower" , antiTurret: 1 , spdMult: .7 }, { id: 12 , name: "Booster Hat" , price: 6e3 , scale: 120 , desc: "increases your movement speed" , spdMult: 1.16 }, { id: 26 , name: "Barbarian Armor" , price: 8e3 , scale: 120 , desc: "knocks back enemies that attack you" , dmgK: .6 }, { id: 21 , name: "Plague Mask" , price: 1e4 , scale: 120 , desc: "melee attacks deal poison damage" , poisonDmg: 5 , poisonTime: 6 }, { id: 46 , name: "Bull Mask" , price: 1e4 , scale: 120 , desc: "bulls won't target you unless you attack them" , bullRepel: 1 }, { id: 14 , name: "Windmill Hat" , topSprite: !0 , price: 1e4 , scale: 120 , desc: "generates points while worn" , pps: 1.5 }, { id: 11 , name: "Spike Gear" , topSprite: !0 , price: 1e4 , scale: 120 , desc: "deal damage to players that damage you" , dmg: .45 }, { id: 53 , name: "Turret Gear" , topSprite: !0 , price: 1e4 , scale: 120 , desc: "you become a walking turret" , turret: { proj: 1 , range: 700 , rate: 2500 } , spdMult: .7 }, { id: 20 , name: "Samurai Armor" , price: 12e3 , scale: 120 , desc: "increased attack speed and fire rate" , atkSpd: .78 }, { id: 58 , name: "Dark Knight" , price: 12e3 , scale: 120 , desc: "restores health when you deal damage" , healD: .4 }, { id: 27 , name: "Scavenger Gear" , price: 15e3 , scale: 120 , desc: "earn double points for each kill" , kScrM: 2 }, { id: 40 , name: "Tank Gear" , price: 15e3 , scale: 120 , desc: "increased damage to buildings but slower movement" , spdMult: .3 , bDmg: 3.3 }, { id: 52 , name: "Thief Gear" , price: 15e3 , scale: 120 , desc: "steal half of a players gold when you kill them" , goldSteal: .5 }, { id: 55 , name: "Bloodthirster" , price: 2e4 , scale: 120 , desc: "Restore Health when dealing damage. And increased damage" , healD: .25 , dmgMultO: 1.2 }, { id: 56 , name: "Assassin Gear" , price: 2e4 , scale: 120 , desc: "Go invisible when not moving. Can't eat. Increased speed" , noEat: !0 , spdMult: 1.1 , invisTimer: 1e3 }] , we = [{ id: 12 , name: "Snowball" , price: 1e3 , scale: 105 , xOff: 18 , desc: "no effect" }, { id: 9 , name: "Tree Cape" , price: 1e3 , scale: 90 , desc: "no effect" }, { id: 10 , name: "Stone Cape" , price: 1e3 , scale: 90 , desc: "no effect" }, { id: 3 , name: "Cookie Cape" , price: 1500 , scale: 90 , desc: "no effect" }, { id: 8 , name: "Cow Cape" , price: 2e3 , scale: 90 , desc: "no effect" }, { id: 11 , name: "Monkey Tail" , price: 2e3 , scale: 97 , xOff: 25 , desc: "Super speed but reduced damage" , spdMult: 1.35 , dmgMultO: .2 }, { id: 17 , name: "Apple Basket" , price: 3e3 , scale: 80 , xOff: 12 , desc: "slowly regenerates health over time" , healthRegen: 1 }, { id: 6 , name: "Winter Cape" , price: 3e3 , scale: 90 , desc: "no effect" }, { id: 4 , name: "Skull Cape" , price: 4e3 , scale: 90 , desc: "no effect" }, { id: 5 , name: "Dash Cape" , price: 5e3 , scale: 90 , desc: "no effect" }, { id: 2 , name: "Dragon Cape" , price: 6e3 , scale: 90 , desc: "no effect" }, { id: 1 , name: "Super Cape" , price: 8e3 , scale: 90 , desc: "no effect" }, { id: 7 , name: "Troll Cape" , price: 8e3 , scale: 90 , desc: "no effect" }, { id: 14 , name: "Thorns" , price: 1e4 , scale: 115 , xOff: 20 , desc: "no effect" }, { id: 15 , name: "Blockades" , price: 1e4 , scale: 95 , xOff: 15 , desc: "no effect" }, { id: 20 , name: "Devils Tail" , price: 1e4 , scale: 95 , xOff: 20 , desc: "no effect" }, { id: 16 , name: "Sawblade" , price: 12e3 , scale: 90 , spin: !0 , xOff: 0 , desc: "deal damage to players that damage you" , dmg: .15 }, { id: 13 , name: "Angel Wings" , price: 15e3 , scale: 138 , xOff: 22 , desc: "slowly regenerates health over time" , healthRegen: 3 }, { id: 19 , name: "Shadow Wings" , price: 15e3 , scale: 138 , xOff: 22 , desc: "increased movement speed" , spdMult: 1.1 }, { id: 18 , name: "Blood Wings" , price: 2e4 , scale: 178 , xOff: 26 , desc: "restores health when you deal damage" , healD: .2 }, { id: 21 , name: "Corrupt X Wings" , price: 2e4 , scale: 178 , xOff: 26 , desc: "deal damage to players that damage you" , dmg: .25 }]; let ve = 0; document.opcToggle = function () { global_functions_exporter.enableNames = !global_functions_exporter.enableNames, ve = ve ? 0 : 1, $("#leaderboard") .animate({ opacity: ve }), $("#scoreDisplay") .animate({ opacity: ve }), $("#partyButton") .animate({ opacity: ve }) }; let be = 0; document.clanListToggle = (() => { be = be ? 0 : 1, $("#clanList") .animate({ opacity: be }) }), $("#leaderboard") .animate({ opacity: 0 }), $("#scoreDisplay") .animate({ opacity: 0 }), $("#partyButton") .animate({ opacity: 0 }), global_functions_exporter.enableNames = !1; var n = [{ isInvis: !0 , id: "__proto__" , age: 0 , name: "undefined" , desc: "undefined" , src: "undefined" , gather: 1 , isMelee: !0 , damage: 0 , cd: 0 , range: 142 , type: -1 }, { isInvis: !0 , id: "length" , age: 0 , name: "undefined" , desc: "undefined" , src: "undefined" , gather: 1 , isMelee: !0 , damage: 0 , cd: 0 , range: 142 , type: -1 }, { id: 0 , type: 0 , age: 1 , name: "tool hammer" , desc: "tool for gathering all resources" , src: "hammer_1" , length: 140 , width: 140 , xOff: -3 , yOff: 18 , dmg: 25 , range: 65 , gather: 1 , speed: 300 , isMelee: !0 , damage: 25 , cd: 3 }, { id: 1 , type: 0 , age: 2 , name: "hand axe" , desc: "gathers resources at a higher rate" , src: "axe_1" , length: 140 , width: 140 , xOff: 3 , yOff: 24 , dmg: 30 , spdMult: 1 , range: 70 , gather: 2 , speed: 400 , isMelee: !0 , damage: 30 , cd: 4 }, { id: 2 , type: 0 , age: 8 , pre: 1 , name: "great axe" , desc: "deal more damage and gather more resources" , src: "great_axe_1" , length: 140 , width: 140 , xOff: -8 , yOff: 25 , dmg: 35 , spdMult: 1 , range: 75 , gather: 4 , speed: 400 , isMelee: !0 , damage: 35 , cd: 4 }, { id: 3 , type: 0 , age: 2 , name: "short sword" , desc: "increased attack power but slower move speed" , src: "sword_1" , iPad: 1.3 , length: 130 , width: 210 , xOff: -8 , yOff: 46 , dmg: 35 , spdMult: .85 , range: 110 , gather: 1 , speed: 300 , isMelee: !0 , damage: 35 , cd: 3 }, { id: 4 , type: 0 , age: 8 , pre: 3 , name: "katana" , desc: "greater range and damage" , src: "samurai_1" , iPad: 1.3 , length: 130 , width: 210 , xOff: -8 , yOff: 59 , dmg: 40 , spdMult: .8 , range: 118 , gather: 1 , speed: 300 , isMelee: !0 , damage: 40 , cd: 3 }, { id: 5 , type: 0 , age: 2 , name: "polearm" , desc: "long range melee weapon" , src: "spear_1" , iPad: 1.3 , length: 130 , width: 210 , xOff: -8 , yOff: 53 , dmg: 45 , knock: .2 , spdMult: .82 , range: 142 , gather: 1 , speed: 700 , isMelee: !0 , damage: 45 , cd: 7 }, { id: 6 , type: 0 , age: 2 , name: "bat" , desc: "fast long range melee weapon" , src: "bat_1" , iPad: 1.3 , length: 110 , width: 180 , xOff: -8 , yOff: 53 , dmg: 20 , knock: .7 , range: 110 , gather: 1 , speed: 300 , isMelee: !0 , damage: 20 , cd: 3 }, { id: 7 , type: 0 , age: 2 , name: "daggers" , desc: "really fast short range weapon" , src: "dagger_1" , iPad: .8 , length: 110 , width: 110 , xOff: 18 , yOff: 0 , dmg: 20 , knock: .1 , range: 65 , gather: 1 , hitSlow: .1 , spdMult: 1.13 , speed: 100 , isMelee: !0 , damage: 20 , cd: 1 }, { id: 8 , type: 0 , age: 2 , name: "stick" , desc: "great for gathering but very weak" , src: "stick_1" , length: 140 , width: 140 , xOff: 3 , yOff: 24 , dmg: 1 , spdMult: 1 , range: 70 , gather: 7 , speed: 400 , isMelee: !0 , damage: 1 , cd: 4 }, { id: 9 , type: 1 , age: 6 , name: "hunting bow" , desc: "bow used for ranged combat and hunting" , src: "bow_1" , req: ["wood", 4] , length: 120 , width: 120 , xOff: -6 , yOff: 0 , projectile: 0 , spdMult: .75 , speed: 600 , isMelee: !1 , damage: 25 , cd: 6 }, { id: 10 , type: 1 , age: 6 , name: "great hammer" , desc: "hammer used for destroying structures" , src: "great_hammer_1" , length: 140 , width: 140 , xOff: -9 , yOff: 25 , dmg: 10 , spdMult: .88 , range: 75 , sDmg: 7.5 , gather: 1 , speed: 400 , isMelee: !0 , damage: 10 , cd: 4 }, { id: 11 , type: 1 , age: 6 , name: "wooden shield" , desc: "blocks projectiles and reduces melee damage" , src: "shield_1" , length: 120 , width: 120 , shield: .2 , xOff: 6 , yOff: 0 , spdMult: .7 , range: 150 , damage: 0 }, { id: 12 , type: 1 , age: 8 , pre: 9 , name: "crossbow" , desc: "deals more damage and has greater range" , src: "crossbow_1" , req: ["wood", 5] , aboveHand: !0 , armS: .75 , length: 120 , width: 120 , xOff: -4 , yOff: 0 , projectile: 2 , spdMult: .7 , speed: 700 , isMelee: !1 , damage: 35 , cd: 7 }, { id: 13 , type: 1 , age: 9 , pre: 12 , name: "repeater crossbow" , desc: "high firerate crossbow with reduced damage" , src: "crossbow_2" , req: ["wood", 10] , aboveHand: !0 , armS: .75 , length: 120 , width: 120 , xOff: -4 , yOff: 0 , projectile: 3 , spdMult: .7 , speed: 230 , isMelee: !1 , damage: 30 , cd: 3 }, { id: 14 , type: 1 , age: 6 , name: "mc grabby" , desc: "steals resources from enemies" , src: "grab_1" , length: 130 , width: 210 , xOff: -8 , yOff: 53 , dmg: 0 , steal: 250 , knock: .2 , spdMult: 1.05 , range: 125 , gather: 0 , speed: 700 , isMelee: !0 , damage: 0 , cd: 7 }, { id: 15 , type: 1 , age: 9 , pre: 12 , name: "musket" , desc: "slow firerate but high damage and range" , src: "musket_1" , req: ["stone", 10] , aboveHand: !0 , rec: .35 , armS: .6 , hndS: .3 , hndD: 1.6 , length: 205 , width: 205 , xOff: 25 , yOff: 0 , projectile: 5 , hideProjectile: !0 , spdMult: .6 , speed: 1500 , isMelee: !1 , damage: 50 , cd: 14 , rec: .35 }]; let xe, Be, Ee, ke; unsafeWindow.globalWeaponsList = n, setInterval(() => { document.getElementById("autoBuyHats") .checked && (storeBuy(21, !0), storeBuy(18, !0), storeBuy(19, !0), storeBuy(13, !0), storeBuy(11, !0), storeBuy(40), storeBuy(52), storeBuy(20), storeBuy(53), storeBuy(11), storeBuy(7), storeBuy(12), storeBuy(22), storeBuy(13), storeBuy(6), storeBuy(31), storeBuy(15), storeBuy(21)) }, 700), $("body") .append('
'), $("#mainMenu") .css({ "overflow-y": "scroll" }), $("#modMenus") .append('
\nMagick:
\n