您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
x18k-chicken hybrid
// ==UserScript== // @name Infinity Ware // @namespace http://tampermonkey.net/ // @version .03 // @description x18k-chicken hybrid // @author Mr. who think he Zyphyr // @match https://*.moomoo.io/* // @grant none // @icon http://moomoo.io/img/icons/crown.png // ==/UserScript== let whereverifybutton = document.querySelector("#altcha_checkbox") function clicktheverify() { if (whereverifybutton) { whereverifybutton.click() } } setInterval(clicktheverify, 1000); const { sin: V, cos: U, min: j, max: oe, random: t, floor: f, trunc: n, ceil: c, round: H, tan: i, PI: W, sqrt: D, abs: S, pow: re, log: s, LN2: o, atan2: P, SQRT2: r, acos: a, sign: l, hypot: d } = Math; const ae = W * 2; const h = W / 2.6; const le = JSON.stringify; const E = JSON.parse; const ce = 1e3 / 9; const u = ce * 2; const { now: R } = Date; var N = "https://fonts.googleapis.com/css2?family=Lilita+One&display=swap"; var O = document.createElement("link"); O.rel = "stylesheet"; O.href = N; document.head.appendChild(O); const L = .35; const F = new Set(["#bf8f54", "#cbb091", "#896c4b", "#fadadc", "#ececec", "#c37373", "#4c4c4c", "#ecaff7", "#738cc3", "#8bc373", "#67A9DD"]); let _ = []; function de(e, t) { const n = e => parseInt(e, 16); const i = (e, t) => e * t | 0; const s = e => e.toString(16).padStart(2, "0"); const o = i(n(e.substr(1, 2)), 1 - t); const r = i(n(e.substr(3, 2)), 1 - t); const a = i(n(e.substr(5, 2)), 1 - t); return `#${s(o)}${s(r)}${s(a)}` } function ue(e, t) { const n = e => parseInt(e, 16); const i = (e, t) => Math.min(255, e + t | 0); const s = e => e.toString(16).padStart(2, "0"); const o = 255 * t; const r = i(n(e.substr(1, 2)), o); const a = i(n(e.substr(3, 2)), o); const l = i(n(e.substr(5, 2)), o); return `#${s(r)}${s(a)}${s(l)}` } var fe = { hats: {}, accessories: {}, weapons: {}, animals: {} }; const he = document.createElement("div"); he.id = "transparentMenu"; document.body.appendChild(he); var pe = ` #transparentMenu { position: fixed; top: 0; left: 0; background: rgba(16, 16, 16, 0.9); /* Darker background color */ color: #ffffff; padding: 20px; transition: all 0.5s ease-in-out; z-index: 9999; max-height: 80vh; overflow-y: auto; display: none; width: 400px; font-family: 'Arial', sans-serif; border: 2px solid #3a3a3a; /* Slightly lighter border color */ border-radius: 12px; box-shadow: 0 0 15px rgba(0, 0, 0, 0.7); } #tabs { display: flex; margin-bottom: 10px; overflow-x: auto; scrollbar-width: thin; scrollbar-color: transparent transparent; } #tabs::-webkit-scrollbar { width: 6px; } #tabs::-webkit-scrollbar-thumb { background-color: #282828; /* Dark scrollbar thumb color */ } .tab { cursor: pointer; padding: 12px; /* Slightly larger padding */ margin-right: 8px; /* Slightly smaller margin */ background: #333333; color: #ffffff; border: 1px solid #555555; border-bottom: none; user-select: none; white-space: nowrap; transition: background 0.3s ease-in-out, border 0.3s ease-in-out, color 0.3s ease-in-out; border-radius: 8px; /* Smaller border radius */ } .tab.active { background: #2a2a2a; /* Darker active tab background color */ border: 1px solid #3a3a3a; /* Slightly lighter active tab border color */ color: #cccccc; } .section { margin-top: 10px; display: none; overflow-y: auto; max-height: 200px; } .section.active { display: block; } .section label { display: flex; align-items: center; margin-bottom: 8px; /* Slightly smaller margin */ color: #ffffff; } .toggle-slider { position: relative; display: flex; align-items: center; width: 100%; height: 24px; /* Slightly larger height */ } .toggle-slider input { opacity: 0; width: 0; height: 0; } .slider { position: relative; cursor: pointer; width: 50px; /* Wider slider */ height: 24px; /* Slightly larger height */ background-color: #2e2d2d; transition: background 0.3s ease-in-out; border-radius: 12px; /* Smaller border radius */ margin-right: 8px; /* Slightly smaller margin */ } .slider:before { position: absolute; content: ""; height: 20px; /* Slightly larger height */ width: 20px; /* Slightly larger width */ left: 4px; bottom: 2px; background-color: black; transition: background 0.3s ease-in-out; border-radius: 50%; } input:checked+.slider { background-color: #666666; } input:focus+.slider { box-shadow: 0 0 1px #666666; } input:checked+.slider:before { transform: translateX(26px); /* Longer translation */ } .slider.round { border-radius: 12px; /* Smaller border radius */ } .slider.round:before { border-radius: 50%; } .dropdown-label { color: #ffffff; margin-top: 8px; /* Slightly smaller margin */ width: 50%; /* Adjust width for the label */ } .dropdown-container { display: flex; align-items: center; width: 50%; /* Adjust width for the dropdown */ margin-top: 8px; /* Slightly smaller margin */ } .chat-container { position: fixed; top: 0; left: 0; width: 400px; height: 250px; background: rgba(0, 0, 0, .0); color: white; opacity: 1; font-family: 'Norican', cursive; font-weight: bold; border-bottom-right-radius: 8px; padding: 10px; display: flex; flex-direction: column; justify-content: space-between; } .chat-history { height: 400px; overflow-y: auto; scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, 0.2) rgba(0, 0, 0, 0.5); } .chat-input { height: 30px; background-color: rgba(255, 255, 255, 0); border: none; border-radius: 4px; outline: none; color: white; padding: 5px; } .scroll-button { position: fixed; top: 220px; left: 380px; // width: 18px; // height: 18px; // background-color: rgba(0, 0, 0, 0.3); border-radius: 100%; display: flex; justify-content: center; align-items: center; cursor: pointer; z-index: 1; } .scroll-button:hover { background-color: rgba(0, 0, 0, 0.8); } .scroll-button::before { content: ""; width: 0; height: 0; border-top: 10px solid white; border-left: 7px solid transparent; border-right: 7px solid transparent; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } `; const me = document.createElement("style"); me.textContent = pe; document.head.appendChild(me); const ge = document.createElement("div"); ge.className = "scroll-button"; ge.color = "white"; const ye = document.createElement("div"); ye.className = "chat-container"; const xe = document.createElement("div"); xe.className = "chat-history"; const we = document.createElement("input"); we.type = "text"; we.className = "chat-input"; we.placeholder = "To chat click here or press / key"; we.maxLength = 100; ye.appendChild(xe); ye.appendChild(we); document.body.appendChild(ge); document.body.appendChild(ye); const be = 2e3; const b = (e, t, n, i, s) => { const o = xe.scrollHeight - xe.scrollTop <= xe.clientHeight + 1; const r = document.createElement("div"); r.style.wordWrap = "break-word"; r.style.color = i ? "#6bdb79" : "white"; xe.appendChild(r); if (!s) { const e = document.createElement("span"); e.style.color = "rgba(255, 255, 255, 0.5)"; e.style.marginRight = "5px"; e.textContent = Me(); r.appendChild(e) } const a = document.createElement("span"); a.style.color = n; a.textContent = e; r.appendChild(a); const l = document.createElement("span"); l.textContent = t; r.appendChild(l); if (xe.children.length > be) { xe.removeChild(xe.children[0]) } if (o) { xe.scrollTop = xe.scrollHeight; ke() } else { ge.style.display = "block" } }; const ve = () => { return xe.scrollHeight - xe.scrollTop <= xe.clientHeight + 1 }; const ke = () => { if (ve() || xe.clientHeight >= xe.scrollHeight) { ge.style.display = "none" } else { ge.style.display = "block" } }; ge.addEventListener("click", () => { xe.scrollTop = xe.scrollHeight }); xe.addEventListener("scroll", ke); ge.style.display = "none"; we.addEventListener("keydown", e => { e.stopPropagation() }); function Ae(e, t) { const n = De(e, t[0]); const i = t.map(e => ` <option value="${e}" ${e===n?"selected":""}>${e}</option> `).join(""); return ` <label class="dropdown-label">${e}</label> <div class="dropdown-container"> <select id="${e}" class="dropdown""> ${i} </select> </div> ` } function e(e, t) { const n = De(e, t === undefined ? true : t); return ` <label class="toggle-slider"> <span>${e}</span> <input type="checkbox" ${n?"checked":""} id="${e}"> <span class="slider round"></span> </label> ` } function Ie(e, t, n = 200) { const i = De(e, ""); return ` <label>${e}</label> <input type="${t}" value="${i}" id="${e}" maxlength="${n}"> ` } function Se(e, t, n, i, s) { const o = De(e, i); return ` <div>${s||""}</div> <label class="throttle-slider"> <span>${e}</span> <input type="range" min="${t}" max="${n}" value="${o}" id="${e}"> <span id="${e}-value">${o}</span> </label> ` } function Ee(e) { const t = gy(e); const n = gy(`${e}-value`); n.innerText = t.value; Pe(e, t.value) } document.addEventListener("keydown", function(e) { if (e.key === "Escape") { Be() } }); const Te = ["Combat", "Healing", "AI", "Visuals", "Extra"]; const Ce = [ ["auto break", "Qsync", "chatSync", "bots Qsync", "auto place", "onetick bypass", "auto replace", "spike sync", "auto push", "polearm aids", "melee sync", "bleed insta", "apple insta", "kbInsta", "stop break"], ["auto heal", "autoQ"], ["e", "stop on collision", "break spike trap", "bots auto clear", "auto hit", "strict soldier", "adv bot auto proj sync", "bot auto proj sync"], ["reload bars", "smooth reloads", "all visuals", "building hp", "building owner", "mill rotate", "stacked damages", "skull", "shame count", "shadows", "fp", "animated text"], ["Assassin Bots", "Assassin", "music", "circle bots", "bots APB", "bots break utility", "autobuy", "autohat", "stealing animal", "auto accept bots", "stop break bots", "auto equip fastest weapon", "send ws", "strict monkey", "bot smart aim"] ]; he.innerHTML = ` <div id="tabs"> <div class="tab" onclick="showTab('section1')">Combat</div> <div class="tab" onclick="showTab('section2')">heal</div> <div class="tab" onclick="showTab('section3')">Visuals</div> <div class="tab" onclick="showTab('section4')">Keybinds</div> <div class="tab" onclick="showTab('section5')">Bots</div> <div class="tab" onclick="showTab('section6')">Throttles</div> <div class="tab" onclick="showTab('section7')">Extra</div> </div> <div id="section1" class="section active"> ${e("auto break")} ${e("stop on break")} ${e("auto place")} ${e("auto replace",false)} ${e("auto push")} ${e("polearm aids")} ${e("aids spike sync",false)} ${e("melee sync",false)} ${e("bleed insta",false)} ${e("apple insta",false)} ${e("kbInsta")} ${e("kbInsta without turret gear",false)} ${e("kbAssist",false)} ${e("stop break")} ${e("stop on collision",false)} ${e("movement on collision",false)} ${e("strict soldier")} ${e("strict monkey")} ${e("auto equip fastest weapon")} ${e("break spike trap")} ${e("Auto Emp")} ${e("autohat")} ${Se("APA",20,180,50)} </div> <div id="section2" class="section"> ${e("auto heal")} ${e("autoQ",false)} </div> <div id="section3" class="section"> ${e("reload bars",false)} ${e("packet count",true)} ${e("all visuals")} ${e("no outline arcs")} ${e("no arcs")} ${e("reload arcs")} ${e("smooth reloads")} ${e("building hp")} ${e("building owner")} ${e("mill rotate",false)} ${e("regular grid")} ${e("stacked damages")} ${e("stacked heal text")} ${e("show place duration",false)} ${e("log autoplace",false)} ${e("spike kb visual")} ${e("skull",true)} ${e("shame count")} ${e("log projectiles",false)} ${e("shadows")} ${e("animated text")} ${e("ChatLog")} ${e("vis aim")} ${e("hide name")} ${e("See through player")} ${e("Shaders",false)} ${e("Legacy Visuals",false)} ${e("Default Visuals",false)} ${e("Op Visuals",false)} </div> <div id="section4" class="section"> ${e("Toggle Quest 1")} ${Ie("Quest Progress","number")} ${e("Toggle Quest 2")} ${Ie("Quest Reward","text")} ${e("Toggle Quest 3")} ${Ie("Quest Difficulty","number")} </div> <div id="section5" class="section"> ${Ae("Bot Summon Movement",["Cursor","Copy","Towards","none"],"itemType")} ${e("bot smart aim")} ${e("farm mats")} ${e("auto accept bots")} ${e("stop break bots",false)} ${e("safe walk bots",false)} ${e("bots break utility")} ${e("bots APB")} ${e("bots Qsync")} ${e("Assassin Bots",false)} ${e("circle bots",false)} ${e("bot auto proj sync")} ${e("adv bot auto proj sync")} ${e("Bots Auto Chat","text",30)} </div> <div id="section6" class="section"> ${Se("Auto Place Accuracy",20,180,50,"higher means longer calculation time ↓")} </div> <div id="section7" class="section"> ${e("Assassin",false)} ${e("send ws")} ${e("autobuy")} ${e("fix ws")} ${e("fakePing",true)} <div id="toggleContainer"> ${e("fakePing",false)} <div id="sliderContainer" style="display:none;"> <input type="range" min="0" max="100" value="40" id="pingSlider"> `; function Be() { const e = document.getElementById("transparentMenu"); const t = e.style.display === "block"; e.style.display = t ? "none" : "block" } function De(e, t, n) { const i = localStorage.getItem(e); if (!n) { return i !== null ? JSON.parse(i) : t } return i !== null ? JSON.parse(i).value : t } function Pe(e, t) { localStorage.setItem(e, JSON.stringify(t)) } function Re(e) { const t = document.querySelectorAll(".tab"); t.forEach(e => e.classList.remove("active")); const n = document.querySelectorAll(".section"); n.forEach(e => e.classList.remove("active")); const i = document.querySelector(`[onclick="showTab('${e}')"]`); const s = document.getElementById(e); if (i && s) { i.classList.add("active"); s.classList.add("active") } } if (gy("ChatLog")?.checked) { xe.style.display = "block"; we.style.display = "block" } else { xe.style.display = "none"; we.style.display = "none" } Re("section1"); document.getElementById("transparentMenu").addEventListener("change", function(e) { const n = e.target; const t = n.id; if (t === "ChatLog") { const e = document.querySelector(".chat-history"); const t = document.querySelector(".chat-input"); if (n.checked) { e.style.display = "block"; t.style.display = "block" } else { e.style.display = "none"; t.style.display = "none" } } const i = n.type == "checkbox" ? n.checked : n.value; console.log(n.type, n.id, n.value); Pe(t, i); if (n.type == "range") { Ee(t) } }); document.getElementById("tabs").addEventListener("click", function(e) { const t = e.target.closest(".tab"); if (t) { Re(t.getAttribute("onclick").match(/'([^']+)'/)[1]) } }); function Me() { const e = new Date; let t = e.getHours(); let n = e.getMinutes(); let i = "AM"; if (t === 0) { t = 12 } else if (t > 12) { i = "PM"; t = t % 12 } if (n < 10) { n = "0" + n } const s = t + ":" + n + " " + i; return s } function Ne(t, n) { const e = Math.SQRT2 - 1; t = S(t); n = S(n); if (t > n) { let e = t; t = n; n = e } return e * t + n } function Le(e, t, n, i, s) { if (!i) i = n; var o = document.createElement("canvas"); var r = o.getContext("2d"); o.width = n; o.height = i; r.shadowColor = "rgba(0, 0, 0, 1)"; r.shadowBlur = e === "animal" ? 18 : e === "weapon" ? 12 : e == "accessory" ? 9 : 20; r.drawImage(t, 0, 0, n, i); var a = new Image; a.src = o.toDataURL(); return a } function BotNames() { var e = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J",d]; var t = [""]; var n = e[Math.floor(Math.random() * e.length)]; var i = t[Math.floor(Math.random() * t.length)]; return n + i; } var _e = BotNames(); setInterval(() => { _e = BotNames(); }, 100); var Ve = [], m = [], Ue = [], je, He = 0, We = 0, Qe = 0, Ye = [], ze = 0, Ge = [], Ke = msgpack, Xe = [], v = 0, Je = [], qe = [], $e = [], Ze = [], et = 0, tt, nt = {}, it = Date.now(), st = false, g = [], ot = false, rt = null, at, lt, y, ct = false, dt = [], ut = [], ft = [], ht = [], pt, mt, gt = false, yt = [], xt = null, wt = null, bt = [], vt, kt = [], At = false, It = [], St = 0, Et = 0, Tt = true, Ct = false, Bt = false, Dt, Pt, Rt, Mt = false, Nt, Ot = false, Lt, Ft, _t = false, Vt = 0, Ut = null, jt = false, Ht = false, Wt = { sec: false, min: false }, Qt, Yt = [], zt = [51, 50, 28, 29, 30, 36, 37, 38, 44, 35, 42, 43, 49, 57, 8, 2, 15, , 5, 4, 18, 31, 1, 10, 48, 6, 23, 13, 9, 32, 22, 12, 26, 21, 46, 14, 11, 58, 27, 52, 55], Gt = [0], Kt = [0], Q = [], Xt = [], Jt, qt, $t = null, Zt = null, en = false, tn = Date.now(), nn = 0, sn = 0, on = { status: false, w: null, a: null, s: null, d: null, aim: null, x: 0, y: 0 }, rn = [], an = [], ln = [], cn = [], dn = false, un = false, p = false, fn = false, hn = false, pn = [], mn, gn, yn, xn = false, wn, bn, vn = [], kn = [], An = [], In = true, Sn = [], En = [1, 1.1, 1.18, 1.18], Y, Tn = [], Cn = [], Bn = [], Dn = null, Pn = [], Rn = [], Mn = [], Nn = [51, 50, 28, 29, 30, 36, 37, 38, 44, 35, 42, 43, 49], On = [], Ln = [], Fn = [ [11], 40, 6, 7, 53, [21], 12, 56, 15, 22, 31, 26, 11, 20, [18], [19], [13] ], _n = false, Vn = false, Un = false, jn = "not", Hn = false, Wn, Qn, Yn, zn = [], Gn = false, Kn = false, Xn, Jn, qn, $n, Zn = { msg: "", time: 0, id: null }, z, ei = [], ti, ni, ii, si, oi = null, ri, ai = "Wander", li = 400, ci = 290, di = 222, ui, fi = 1e3, hi = "all", pi = 0, mi = 0, gi = "all", yi = 110, xi = { ID: null, player: null }, wi = false, bi = "L Nigger Faggot", vi = "Samurai: Fastest", ki = 200, Ai = [], Ii = [], Si = [], Ei = [], Ti = true, Ci = [], Bi = 0, Di = null, Pi = false, Ri = [], Mi = 111, Ni = [], Oi = false, Li = false, Fi = null, _i = { x: null, y: null }, Vi = [], Ui = [], ji = [], Hi = 0, Wi = [], Qi = new Map, Yi = new Map, zi = [], Gi = 0, Ki, Xi, Ji, qi, $i = undefined, Zi = { players: [], player: null, builds: [], isDoing: false, isMe: null }, es = { players: [], player: null, builds: [], rPlayer: null, rBuilds: [], isDoing: false, isMe: null }, ts = { players: [], bot: null, builds: [] }, G = { "do": null, val: 0, play: false }; let ns = [], is = [], ss = []; let os = [], rs = []; const as = (t, e) => e.some(e => e.sid === t.sid); const ls = document.getElementById("Auto Place Accuracy"); const cs = document.getElementById("auto place"); const ds = document.getElementById("log autoplace"); const us = document.getElementById("mill rotate"); const fs = document.getElementById("send ws"); const hs = document.getElementById("stacked damages"); const ps = document.getElementById("stacked heal text"); const ms = document.getElementById("auto replace"); const gs = document.getElementById("regular grid"); const ys = document.getElementById("reload arcs"); const xs = document.getElementById("shame count"); const ws = document.getElementById("all visuals"); const bs = document.getElementById("reload bars"); const vs = document.getElementById("packet count"); const ks = document.getElementById("building hp"); const As = document.getElementById("building owner"); const Is = document.getElementById("smooth reloads"); const Ss = document.getElementById("Shaders"); const Es = document.getElementById("shadows"); const Ts = document.getElementById("autoQ"); const Cs = document.getElementById("apple insta"); const Bs = document.getElementById("bleed insta"); const Ds = document.getElementById("auto break"); const Ps = document.getElementById("stop break"); const Rs = document.getElementById("BotChat"); const Ms = document.getElementById("auto equip fastest weapon"); const Ns = document.getElementById("no arcs"); const Os = document.getElementById("no outline arcs"); const Ls = document.getElementById("See through player"); const Fs = document.getElementById("skull"); const _s = document.getElementById("auto accept bots"); const Vs = document.getElementById("break spike trap"); const Us = document.getElementById("auto heal"); const js = document.getElementById("strict soldier"); const Hs = document.getElementById("autohat"); const Ws = document.getElementById("strict monkey"); const Qs = document.getElementById("autobuy"); const Ys = document.getElementById("stop on collision"); const zs = document.getElementById("movement on collision"); const Gs = document.getElementById("show place duration"); const Ks = document.getElementById("spike kb visual"); const Xs = document.getElementById("melee sync"); const Js = document.getElementById("auto push"); const qs = document.getElementById("vis aim"); const $s = document.getElementById("stealing animal"); const Zs = document.getElementById("bots break utility"); const eo = document.getElementById("hide name"); const to = document.getElementById("kbInsta"); const no = document.getElementById("Auto Emp"); const io = document.getElementById("Assassin"); const so = document.getElementById("spike sync"); const oo = document.getElementById("log projectiles"); const ro = document.getElementById("circle bots"); const ao = document.getElementById("Bot Summon Movement"); const lo = document.getElementById("bots Qsync"); const co = document.getElementById("Qsync"); const uo = document.getElementById("bot smart aim"); const fo = document.getElementById("polearm aids"); const ho = document.getElementById("bot auto proj sync"); const po = document.getElementById("adv bot auto proj sync"); const mo = document.getElementById("Assassin Bots"); const go = document.getElementById("bots APB"); const yo = document.getElementById("safe walk bots"); const xo = document.getElementById("stop break bots"); const wo = document.getElementById("kbAssist"); const bo = document.getElementById("Legacy Visuals"); const vo = document.getElementById("Default Visuals"); const ko = document.getElementById("aids spike sync"); (function() { const e = document.createElement("link").relList; if (e && e.supports && e.supports("modulepreload")) return; for (const t of document.querySelectorAll('link[rel="modulepreload"]')) i(t); new MutationObserver(e => { for (const t of e) if (t.type === "childList") for (const n of t.addedNodes) n.tagName === "LINK" && n.rel === "modulepreload" && i(n) }).observe(document, { childList: !0, subtree: !0 }); function n(e) { const t = {}; return e.integrity && (t.integrity = e.integrity), e.referrerpolicy && (t.referrerPolicy = e.referrerpolicy), e.crossorigin === "use-credentials" ? t.credentials = "include" : e.crossorigin === "anonymous" ? t.credentials = "omit" : t.credentials = "same-origin", t } function i(e) { if (e.ep) return; e.ep = !0; const t = n(e); fetch(e.href, t) } })(); var Ao = 4294967295; function Io(e, t, n) { var i = n / 4294967296, s = n; e.setUint32(t, i), e.setUint32(t + 4, s) } function So(e, t, n) { var i = f(n / 4294967296), s = n; e.setUint32(t, i), e.setUint32(t + 4, s) } function Eo(e, t) { var n = e.getInt32(t), i = e.getUint32(t + 4); return n * 4294967296 + i } function To(e, t) { var n = e.getUint32(t), i = e.getUint32(t + 4); return n * 4294967296 + i } var Co, Bo, Do, Po = (typeof process > "u" || ((Co = process == null ? void 0 : process.env) === null || Co === void 0 ? void 0 : Co.TEXT_ENCODING) !== "never") && typeof TextEncoder < "u" && typeof TextDecoder < "u"; function Ro(e) { for (var t = e.length, n = 0, i = 0; i < t;) { var s = e.charCodeAt(i++); if (s & 4294967168) if (!(s & 4294965248)) n += 2; else { if (s >= 55296 && s <= 56319 && i < t) { var o = e.charCodeAt(i); (o & 64512) === 56320 && (++i, s = ((s & 1023) << 10) + (o & 1023) + 65536) } s & 4294901760 ? n += 4 : n += 3 } else { n++; continue } } return n } function Mo(e, t, n) { for (var i = e.length, s = n, o = 0; o < i;) { var r = e.charCodeAt(o++); if (r & 4294967168) if (!(r & 4294965248)) t[s++] = r >> 6 & 31 | 192; else { if (r >= 55296 && r <= 56319 && o < i) { var a = e.charCodeAt(o); (a & 64512) === 56320 && (++o, r = ((r & 1023) << 10) + (a & 1023) + 65536) } r & 4294901760 ? (t[s++] = r >> 18 & 7 | 240, t[s++] = r >> 12 & 63 | 128, t[s++] = r >> 6 & 63 | 128) : (t[s++] = r >> 12 & 15 | 224, t[s++] = r >> 6 & 63 | 128) } else { t[s++] = r; continue } t[s++] = r & 63 | 128 } } var No = Po ? new TextEncoder : void 0, Oo = Po ? typeof process < "u" && ((Bo = process == null ? void 0 : process.env) === null || Bo === void 0 ? void 0 : Bo.TEXT_ENCODING) !== "force" ? 200 : 0 : Ao; function Lo(e, t, n) { t.set(No.encode(e), n) } function Fo(e, t, n) { No.encodeInto(e, t.subarray(n)) } var _o = No != null && No.encodeInto ? Fo : Lo, Vo = 4096; function Uo(e, t, n) { for (var i = t, s = i + n, o = [], r = ""; i < s;) { var a = e[i++]; if (!(a & 128)) o.push(a); else if ((a & 224) === 192) { var l = e[i++] & 63; o.push((a & 31) << 6 | l) } else if ((a & 240) === 224) { var l = e[i++] & 63, c = e[i++] & 63; o.push((a & 31) << 12 | l << 6 | c) } else if ((a & 248) === 240) { var l = e[i++] & 63, c = e[i++] & 63, d = e[i++] & 63, u = (a & 7) << 18 | l << 12 | c << 6 | d; u > 65535 && (u -= 65536, o.push(u >>> 10 & 1023 | 55296), u = 56320 | u & 1023), o.push(u) } else o.push(a); o.length >= Vo && (r += String.fromCharCode.apply(String, o), o.length = 0) } return o.length > 0 && (r += String.fromCharCode.apply(String, o)), r } var jo = Po ? new TextDecoder : null, Ho = Po ? typeof process < "u" && ((Do = process == null ? void 0 : process.env) === null || Do === void 0 ? void 0 : Do.TEXT_DECODER) !== "force" ? 200 : 0 : Ao; function Wo(e, t, n) { var i = e.subarray(t, t + n); return jo.decode(i) } var Qo = function() { function e(e, t) { this.type = e, this.data = t } return e }(), Yo = globalThis && globalThis.__extends || function() { var i = function(e, t) { return i = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e, t) { e.__proto__ = t } || function(e, t) { for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]) }, i(e, t) }; return function(e, t) { if (typeof t != "function" && t !== null) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null"); i(e, t); function n() { this.constructor = e } e.prototype = t === null ? Object.create(t) : (n.prototype = t.prototype, new n) } }(), zo = function(i) { Yo(s, i); function s(e) { var t = i.call(this, e) || this, n = Object.create(s.prototype); return Object.setPrototypeOf(t, n), Object.defineProperty(t, "name", { configurable: !0, enumerable: !1, value: s.name }), t } return s }(Error), Go = -1, Ko = 4294967296 - 1, Xo = 17179869184 - 1; function Jo(e) { var t = e.sec, n = e.nsec; if (t >= 0 && n >= 0 && t <= Xo) if (n === 0 && t <= Ko) { var i = new Uint8Array(4), s = new DataView(i.buffer); return s.setUint32(0, t), i } else { var o = t / 4294967296, r = t & 4294967295, i = new Uint8Array(8), s = new DataView(i.buffer); return s.setUint32(0, n << 2 | o & 3), s.setUint32(4, r), i } else { var i = new Uint8Array(12), s = new DataView(i.buffer); return s.setUint32(0, n), So(s, 4, t), i } } function qo(e) { var t = e.getTime(), n = f(t / 1e3), i = (t - n * 1e3) * 1e6, s = f(i / 1e9); return { sec: n + s, nsec: i - s * 1e9 } } function $o(e) { if (e instanceof Date) { var t = qo(e); return Jo(t) } else return null } function Zo(e) { var t = new DataView(e.buffer, e.byteOffset, e.byteLength); switch (e.byteLength) { case 4: { var n = t.getUint32(0), i = 0; return { sec: n, nsec: i } } case 8: { var s = t.getUint32(0), o = t.getUint32(4), n = (s & 3) * 4294967296 + o, i = s >>> 2; return { sec: n, nsec: i } } case 12: { var n = Eo(t, 4), i = t.getUint32(0); return { sec: n, nsec: i } } default: throw new zo("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length)) } } function er(e) { var t = Zo(e); return new Date(t.sec * 1e3 + t.nsec / 1e6) } var tr = { type: Go, encode: $o, decode: er }, nr = function() { function e() { this.builtInEncoders = [], this.builtInDecoders = [], this.encoders = [], this.decoders = [], this.register(tr) } return e.prototype.register = function(e) { var t = e.type, n = e.encode, i = e.decode; if (t >= 0) this.encoders[t] = n, this.decoders[t] = i; else { var s = 1 + t; this.builtInEncoders[s] = n, this.builtInDecoders[s] = i } }, e.prototype.tryToEncode = function(e, t) { for (var n = 0; n < this.builtInEncoders.length; n++) { var i = this.builtInEncoders[n]; if (i != null) { var s = i(e, t); if (s != null) { var o = -1 - n; return new Qo(o, s) } } } for (var n = 0; n < this.encoders.length; n++) { var i = this.encoders[n]; if (i != null) { var s = i(e, t); if (s != null) { var o = n; return new Qo(o, s) } } } return e instanceof Qo ? e : null }, e.prototype.decode = function(e, t, n) { var i = t < 0 ? this.builtInDecoders[-1 - t] : this.decoders[t]; return i ? i(e, t, n) : new Qo(t, e) }, e.defaultCodec = new e, e }(); function ir(e) { return e instanceof Uint8Array ? e : ArrayBuffer.isView(e) ? new Uint8Array(e.buffer, e.byteOffset, e.byteLength) : e instanceof ArrayBuffer ? new Uint8Array(e) : Uint8Array.from(e) } function sr(e) { if (e instanceof ArrayBuffer) return new DataView(e); var t = ir(e); return new DataView(t.buffer, t.byteOffset, t.byteLength) } var or = 100, rr = 2048, ar = function() { function e(e, t, n, i, s, o, r, a) { e === void 0 && (e = nr.defaultCodec), t === void 0 && (t = void 0), n === void 0 && (n = or), i === void 0 && (i = rr), s === void 0 && (s = !1), o === void 0 && (o = !1), r === void 0 && (r = !1), a === void 0 && (a = !1), this.extensionCodec = e, this.context = t, this.maxDepth = n, this.initialBufferSize = i, this.sortKeys = s, this.forceFloat32 = o, this.ignoreUndefined = r, this.forceIntegerToFloat = a, this.pos = 0, this.view = new DataView(new ArrayBuffer(this.initialBufferSize)), this.bytes = new Uint8Array(this.view.buffer) } return e.prototype.reinitializeState = function() { this.pos = 0 }, e.prototype.encodeSharedRef = function(e) { return this.reinitializeState(), this.doEncode(e, 1), this.bytes.subarray(0, this.pos) }, e.prototype.encode = function(e) { return this.reinitializeState(), this.doEncode(e, 1), this.bytes.slice(0, this.pos) }, e.prototype.doEncode = function(e, t) { if (t > this.maxDepth) throw new Error("Too deep objects in depth ".concat(t)); e == null ? this.encodeNil() : typeof e == "boolean" ? this.encodeBoolean(e) : typeof e == "number" ? this.encodeNumber(e) : typeof e == "string" ? this.encodeString(e) : this.encodeObject(e, t) }, e.prototype.ensureBufferSizeToWrite = function(e) { var t = this.pos + e; this.view.byteLength < t && this.resizeBuffer(t * 2) }, e.prototype.resizeBuffer = function(e) { var t = new ArrayBuffer(e), n = new Uint8Array(t), i = new DataView(t); n.set(this.bytes), this.view = i, this.bytes = n }, e.prototype.encodeNil = function() { this.writeU8(192) }, e.prototype.encodeBoolean = function(e) { e === !1 ? this.writeU8(194) : this.writeU8(195) }, e.prototype.encodeNumber = function(e) { Number.isSafeInteger(e) && !this.forceIntegerToFloat ? e >= 0 ? e < 128 ? this.writeU8(e) : e < 256 ? (this.writeU8(204), this.writeU8(e)) : e < 65536 ? (this.writeU8(205), this.writeU16(e)) : e < 4294967296 ? (this.writeU8(206), this.writeU32(e)) : (this.writeU8(207), this.writeU64(e)) : e >= -32 ? this.writeU8(224 | e + 32) : e >= -128 ? (this.writeU8(208), this.writeI8(e)) : e >= -32768 ? (this.writeU8(209), this.writeI16(e)) : e >= -2147483648 ? (this.writeU8(210), this.writeI32(e)) : (this.writeU8(211), this.writeI64(e)) : this.forceFloat32 ? (this.writeU8(202), this.writeF32(e)) : (this.writeU8(203), this.writeF64(e)) }, e.prototype.writeStringHeader = function(e) { if (e < 32) this.writeU8(160 + e); else if (e < 256) this.writeU8(217), this.writeU8(e); else if (e < 65536) this.writeU8(218), this.writeU16(e); else if (e < 4294967296) this.writeU8(219), this.writeU32(e); else throw new Error("Too long string: ".concat(e, " bytes in UTF-8")) }, e.prototype.encodeString = function(e) { var t = 5, n = e.length; if (n > Oo) { var i = Ro(e); this.ensureBufferSizeToWrite(t + i), this.writeStringHeader(i), _o(e, this.bytes, this.pos), this.pos += i } else { var i = Ro(e); this.ensureBufferSizeToWrite(t + i), this.writeStringHeader(i), Mo(e, this.bytes, this.pos), this.pos += i } }, e.prototype.encodeObject = function(e, t) { var n = this.extensionCodec.tryToEncode(e, this.context); if (n != null) this.encodeExtension(n); else if (Array.isArray(e)) this.encodeArray(e, t); else if (ArrayBuffer.isView(e)) this.encodeBinary(e); else if (typeof e == "object") this.encodeMap(e, t); else throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e))) }, e.prototype.encodeBinary = function(e) { var t = e.byteLength; if (t < 256) this.writeU8(196), this.writeU8(t); else if (t < 65536) this.writeU8(197), this.writeU16(t); else if (t < 4294967296) this.writeU8(198), this.writeU32(t); else throw new Error("Too large binary: ".concat(t)); var n = ir(e); this.writeU8a(n) }, e.prototype.encodeArray = function(e, t) { var n = e.length; if (n < 16) this.writeU8(144 + n); else if (n < 65536) this.writeU8(220), this.writeU16(n); else if (n < 4294967296) this.writeU8(221), this.writeU32(n); else throw new Error("Too large array: ".concat(n)); for (var i = 0, s = e; i < s.length; i++) { var o = s[i]; this.doEncode(o, t + 1) } }, e.prototype.countWithoutUndefined = function(e, t) { for (var n = 0, i = 0, s = t; i < s.length; i++) { var o = s[i]; e[o] !== void 0 && n++ } return n }, e.prototype.encodeMap = function(e, t) { var n = Object.keys(e); this.sortKeys && n.sort(); var i = this.ignoreUndefined ? this.countWithoutUndefined(e, n) : n.length; if (i < 16) this.writeU8(128 + i); else if (i < 65536) this.writeU8(222), this.writeU16(i); else if (i < 4294967296) this.writeU8(223), this.writeU32(i); else throw new Error("Too large map object: ".concat(i)); for (var s = 0, o = n; s < o.length; s++) { var r = o[s], a = e[r]; this.ignoreUndefined && a === void 0 || (this.encodeString(r), this.doEncode(a, t + 1)) } }, e.prototype.encodeExtension = function(e) { var t = e.data.length; if (t === 1) this.writeU8(212); else if (t === 2) this.writeU8(213); else if (t === 4) this.writeU8(214); else if (t === 8) this.writeU8(215); else if (t === 16) this.writeU8(216); else if (t < 256) this.writeU8(199), this.writeU8(t); else if (t < 65536) this.writeU8(200), this.writeU16(t); else if (t < 4294967296) this.writeU8(201), this.writeU32(t); else throw new Error("Too large extension object: ".concat(t)); this.writeI8(e.type), this.writeU8a(e.data) }, e.prototype.writeU8 = function(e) { this.ensureBufferSizeToWrite(1), this.view.setUint8(this.pos, e), this.pos++ }, e.prototype.writeU8a = function(e) { var t = e.length; this.ensureBufferSizeToWrite(t), this.bytes.set(e, this.pos), this.pos += t }, e.prototype.writeI8 = function(e) { this.ensureBufferSizeToWrite(1), this.view.setInt8(this.pos, e), this.pos++ }, e.prototype.writeU16 = function(e) { this.ensureBufferSizeToWrite(2), this.view.setUint16(this.pos, e), this.pos += 2 }, e.prototype.writeI16 = function(e) { this.ensureBufferSizeToWrite(2), this.view.setInt16(this.pos, e), this.pos += 2 }, e.prototype.writeU32 = function(e) { this.ensureBufferSizeToWrite(4), this.view.setUint32(this.pos, e), this.pos += 4 }, e.prototype.writeI32 = function(e) { this.ensureBufferSizeToWrite(4), this.view.setInt32(this.pos, e), this.pos += 4 }, e.prototype.writeF32 = function(e) { this.ensureBufferSizeToWrite(4), this.view.setFloat32(this.pos, e), this.pos += 4 }, e.prototype.writeF64 = function(e) { this.ensureBufferSizeToWrite(8), this.view.setFloat64(this.pos, e), this.pos += 8 }, e.prototype.writeU64 = function(e) { this.ensureBufferSizeToWrite(8), Io(this.view, this.pos, e), this.pos += 8 }, e.prototype.writeI64 = function(e) { this.ensureBufferSizeToWrite(8), So(this.view, this.pos, e), this.pos += 8 }, e }(); function lr(e) { return "".concat(e < 0 ? "-" : "", "0x").concat(S(e).toString(16).padStart(2, "0")) } var cr = 16, dr = 16, ur = function() { function e(e, t) { e === void 0 && (e = cr), t === void 0 && (t = dr), this.maxKeyLength = e, this.maxLengthPerKey = t, this.hit = 0, this.miss = 0, this.caches = []; for (var n = 0; n < this.maxKeyLength; n++) this.caches.push([]) } return e.prototype.canBeCached = function(e) { return e > 0 && e <= this.maxKeyLength }, e.prototype.find = function(e, t, n) { var i = this.caches[n - 1]; e: for (var s = 0, o = i; s < o.length; s++) { for (var r = o[s], a = r.bytes, l = 0; l < n; l++) if (a[l] !== e[t + l]) continue e; return r.str } return null }, e.prototype.store = function(e, t) { var n = this.caches[e.length - 1], i = { bytes: e, str: t }; n.length >= this.maxLengthPerKey ? n[Math.random() * n.length | 0] = i : n.push(i) }, e.prototype.decode = function(e, t, n) { var i = this.find(e, t, n); if (i != null) return this.hit++, i; this.miss++; var s = Uo(e, t, n), o = Uint8Array.prototype.slice.call(e, t, t + n); return this.store(o, s), s }, e }(), fr = globalThis && globalThis.__awaiter || function(e, r, n, a) { function l(t) { return t instanceof n ? t : new n(function(e) { e(t) }) } return new(n || (n = Promise))(function(t, n) { function i(e) { try { o(a.next(e)) } catch (t) { n(t) } } function s(e) { try { o(a["throw"](e)) } catch (t) { n(t) } } function o(e) { e.done ? t(e.value) : l(e.value).then(i, s) } o((a = a.apply(e, r || [])).next()) }) }, hr = globalThis && globalThis.__generator || function(n, i) { var s = { label: 0, sent: function() { if (a[0] & 1) throw a[1]; return a[1] }, trys: [], ops: [] }, o, r, a, e; return e = { next: t(0), "throw": t(1), "return": t(2) }, typeof Symbol == "function" && (e[Symbol.iterator] = function() { return this }), e; function t(t) { return function(e) { return l([t, e]) } } function l(e) { if (o) throw new TypeError("Generator is already executing."); for (; s;) try { if (o = 1, r && (a = e[0] & 2 ? r["return"] : e[0] ? r["throw"] || ((a = r["return"]) && a.call(r), 0) : r.next) && !(a = a.call(r, e[1])).done) return a; switch (r = 0, a && (e = [e[0] & 2, a.value]), e[0]) { case 0: case 1: a = e; break; case 4: return s.label++, { value: e[1], done: !1 }; case 5: s.label++, r = e[1], e = [0]; continue; case 7: e = s.ops.pop(), s.trys.pop(); continue; default: if (a = s.trys, !(a = a.length > 0 && a[a.length - 1]) && (e[0] === 6 || e[0] === 2)) { s = 0; continue } if (e[0] === 3 && (!a || e[1] > a[0] && e[1] < a[3])) { s.label = e[1]; break } if (e[0] === 6 && s.label < a[1]) { s.label = a[1], a = e; break } if (a && s.label < a[2]) { s.label = a[2], s.ops.push(e); break } a[2] && s.ops.pop(), s.trys.pop(); continue } e = i.call(n, s) } catch (t) { e = [6, t], r = 0 } finally { o = a = 0 } if (e[0] & 5) throw e[1]; return { value: e[0] ? e[1] : void 0, done: !0 } } }, pr = globalThis && globalThis.__asyncValues || function(s) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var e = s[Symbol.asyncIterator], t; return e ? e.call(s) : (s = typeof __values == "function" ? __values(s) : s[Symbol.iterator](), t = {}, n("next"), n("throw"), n("return"), t[Symbol.asyncIterator] = function() { return this }, t); function n(i) { t[i] = s[i] && function(n) { return new Promise(function(e, t) { n = s[i](n), o(e, t, n.done, n.value) }) } } function o(t, e, n, i) { Promise.resolve(i).then(function(e) { t({ value: e, done: n }) }, e) } }, mr = globalThis && globalThis.__await || function(e) { return this instanceof mr ? (this.v = e, this) : new mr(e) }, gr = globalThis && globalThis.__asyncGenerator || function(e, t, n) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var s = n.apply(e, t || []), o, r = []; return o = {}, i("next"), i("throw"), i("return"), o[Symbol.asyncIterator] = function() { return this }, o; function i(i) { s[i] && (o[i] = function(n) { return new Promise(function(e, t) { r.push([i, n, e, t]) > 1 || a(i, n) }) }) } function a(e, t) { try { l(s[e](t)) } catch (w) { u(r[0][3], w) } } function l(e) { e.value instanceof mr ? Promise.resolve(e.value.v).then(c, d) : u(r[0][2], e) } function c(e) { a("next", e) } function d(e) { a("throw", e) } function u(e, t) { e(t), r.shift(), r.length && a(r[0][0], r[0][1]) } }, yr = function(e) { var t = typeof e; return t === "string" || t === "number" }, xr = -1, wr = new DataView(new ArrayBuffer(0)), br = new Uint8Array(wr.buffer), vr = function() { try { wr.getInt8(0) } catch (e) { return e.constructor } throw new Error("never reached") }(), kr = new vr("Insufficient data"), Ar = new ur, Ir = function() { function e(e, t, n, i, s, o, r, a) { e === void 0 && (e = nr.defaultCodec), t === void 0 && (t = void 0), n === void 0 && (n = Ao), i === void 0 && (i = Ao), s === void 0 && (s = Ao), o === void 0 && (o = Ao), r === void 0 && (r = Ao), a === void 0 && (a = Ar), this.extensionCodec = e, this.context = t, this.maxStrLength = n, this.maxBinLength = i, this.maxArrayLength = s, this.maxMapLength = o, this.maxExtLength = r, this.keyDecoder = a, this.totalPos = 0, this.pos = 0, this.view = wr, this.bytes = br, this.headByte = xr, this.stack = [] } return e.prototype.reinitializeState = function() { this.totalPos = 0, this.headByte = xr, this.stack.length = 0 }, e.prototype.setBuffer = function(e) { this.bytes = ir(e), this.view = sr(this.bytes), this.pos = 0 }, e.prototype.appendBuffer = function(e) { if (this.headByte === xr && !this.hasRemaining(1)) this.setBuffer(e); else { var t = this.bytes.subarray(this.pos), n = ir(e), i = new Uint8Array(t.length + n.length); i.set(t), i.set(n, t.length), this.setBuffer(i) } }, e.prototype.hasRemaining = function(e) { return this.view.byteLength - this.pos >= e }, e.prototype.createExtraByteError = function(e) { var t = this, n = t.view, i = t.pos; return new RangeError("Extra ".concat(n.byteLength - i, " of ").concat(n.byteLength, " byte(s) found at buffer[").concat(e, "]")) }, e.prototype.decode = function(e) { this.reinitializeState(), this.setBuffer(e); var t = this.doDecodeSync(); if (this.hasRemaining(1)) throw this.createExtraByteError(this.pos); return t }, e.prototype.decodeMulti = function(t) { return hr(this, function(e) { switch (e.label) { case 0: this.reinitializeState(), this.setBuffer(t), e.label = 1; case 1: return this.hasRemaining(1) ? [4, this.doDecodeSync()] : [3, 3]; case 2: return e.sent(), [3, 1]; case 3: return [2] } }) }, e.prototype.decodeAsync = function(d) { var u, f, h, p; return fr(this, void 0, void 0, function() { var n, i, s, o, r, a, l, c; return hr(this, function(e) { switch (e.label) { case 0: n = !1, e.label = 1; case 1: e.trys.push([1, 6, 7, 12]), u = pr(d), e.label = 2; case 2: return [4, u.next()]; case 3: if (f = e.sent(), !!f.done) return [3, 5]; if (s = f.value, n) throw this.createExtraByteError(this.totalPos); this.appendBuffer(s); try { i = this.doDecodeSync(), n = !0 } catch (t) { if (!(t instanceof vr)) throw t } this.totalPos += this.pos, e.label = 4; case 4: return [3, 2]; case 5: return [3, 12]; case 6: return o = e.sent(), h = { error: o }, [3, 12]; case 7: return e.trys.push([7, , 10, 11]), f && !f.done && (p = u["return"]) ? [4, p.call(u)] : [3, 9]; case 8: e.sent(), e.label = 9; case 9: return [3, 11]; case 10: if (h) throw h.error; return [7]; case 11: return [7]; case 12: if (n) { if (this.hasRemaining(1)) throw this.createExtraByteError(this.totalPos); return [2, i] } throw r = this, a = r.headByte, l = r.pos, c = r.totalPos, new RangeError("Insufficient data in parsing ".concat(lr(a), " at ").concat(c, " (").concat(l, " in the current buffer)")) } }) }) }, e.prototype.decodeArrayStream = function(e) { return this.decodeMultiAsync(e, !0) }, e.prototype.decodeStream = function(e) { return this.decodeMultiAsync(e, !1) }, e.prototype.decodeMultiAsync = function(d, u) { return gr(this, arguments, function() { var t, n, i, s, o, r, a, l, c; return hr(this, function(e) { switch (e.label) { case 0: t = u, n = -1, e.label = 1; case 1: e.trys.push([1, 13, 14, 19]), i = pr(d), e.label = 2; case 2: return [4, mr(i.next())]; case 3: if (s = e.sent(), !!s.done) return [3, 12]; if (o = s.value, u && n === 0) throw this.createExtraByteError(this.totalPos); this.appendBuffer(o), t && (n = this.readArraySize(), t = !1, this.complete()), e.label = 4; case 4: e.trys.push([4, 9, , 10]), e.label = 5; case 5: return [4, mr(this.doDecodeSync())]; case 6: return [4, e.sent()]; case 7: return e.sent(), --n === 0 ? [3, 8] : [3, 5]; case 8: return [3, 10]; case 9: if (r = e.sent(), !(r instanceof vr)) throw r; return [3, 10]; case 10: this.totalPos += this.pos, e.label = 11; case 11: return [3, 2]; case 12: return [3, 19]; case 13: return a = e.sent(), l = { error: a }, [3, 19]; case 14: return e.trys.push([14, , 17, 18]), s && !s.done && (c = i["return"]) ? [4, mr(c.call(i))] : [3, 16]; case 15: e.sent(), e.label = 16; case 16: return [3, 18]; case 17: if (l) throw l.error; return [7]; case 18: return [7]; case 19: return [2] } }) }) }, e.prototype.doDecodeSync = function() { e: for (;;) { var e = this.readHeadByte(), t = void 0; if (e >= 224) t = e - 256; else if (e < 192) if (e < 128) t = e; else if (e < 144) { var n = e - 128; if (n !== 0) { this.pushMapState(n), this.complete(); continue e } else t = {} } else if (e < 160) { var n = e - 144; if (n !== 0) { this.pushArrayState(n), this.complete(); continue e } else t = [] } else { var i = e - 160; t = this.decodeUtf8String(i, 0) } else if (e === 192) t = null; else if (e === 194) t = !1; else if (e === 195) t = !0; else if (e === 202) t = this.readF32(); else if (e === 203) t = this.readF64(); else if (e === 204) t = this.readU8(); else if (e === 205) t = this.readU16(); else if (e === 206) t = this.readU32(); else if (e === 207) t = this.readU64(); else if (e === 208) t = this.readI8(); else if (e === 209) t = this.readI16(); else if (e === 210) t = this.readI32(); else if (e === 211) t = this.readI64(); else if (e === 217) { var i = this.lookU8(); t = this.decodeUtf8String(i, 1) } else if (e === 218) { var i = this.lookU16(); t = this.decodeUtf8String(i, 2) } else if (e === 219) { var i = this.lookU32(); t = this.decodeUtf8String(i, 4) } else if (e === 220) { var n = this.readU16(); if (n !== 0) { this.pushArrayState(n), this.complete(); continue e } else t = [] } else if (e === 221) { var n = this.readU32(); if (n !== 0) { this.pushArrayState(n), this.complete(); continue e } else t = [] } else if (e === 222) { var n = this.readU16(); if (n !== 0) { this.pushMapState(n), this.complete(); continue e } else t = {} } else if (e === 223) { var n = this.readU32(); if (n !== 0) { this.pushMapState(n), this.complete(); continue e } else t = {} } else if (e === 196) { var n = this.lookU8(); t = this.decodeBinary(n, 1) } else if (e === 197) { var n = this.lookU16(); t = this.decodeBinary(n, 2) } else if (e === 198) { var n = this.lookU32(); t = this.decodeBinary(n, 4) } else if (e === 212) t = this.decodeExtension(1, 0); else if (e === 213) t = this.decodeExtension(2, 0); else if (e === 214) t = this.decodeExtension(4, 0); else if (e === 215) t = this.decodeExtension(8, 0); else if (e === 216) t = this.decodeExtension(16, 0); else if (e === 199) { var n = this.lookU8(); t = this.decodeExtension(n, 1) } else if (e === 200) { var n = this.lookU16(); t = this.decodeExtension(n, 2) } else if (e === 201) { var n = this.lookU32(); t = this.decodeExtension(n, 4) } else throw new zo("Unrecognized type byte: ".concat(lr(e))); this.complete(); for (var s = this.stack; s.length > 0;) { var o = s[s.length - 1]; if (o.type === 0) if (o.array[o.position] = t, o.position++, o.position === o.size) s.pop(), t = o.array; else continue e; else if (o.type === 1) { if (!yr(t)) throw new zo("The type of key must be string or number but " + typeof t); if (t === "__proto__") throw new zo("The key __proto__ is not allowed"); o.key = t, o.type = 2; continue e } else if (o.map[o.key] = t, o.readCount++, o.readCount === o.size) s.pop(), t = o.map; else { o.key = null, o.type = 1; continue e } } return t } }, e.prototype.readHeadByte = function() { return this.headByte === xr && (this.headByte = this.readU8()), this.headByte }, e.prototype.complete = function() { this.headByte = xr }, e.prototype.readArraySize = function() { var e = this.readHeadByte(); switch (e) { case 220: return this.readU16(); case 221: return this.readU32(); default: { if (e < 160) return e - 144; throw new zo("Unrecognized array type byte: ".concat(lr(e))) } } }, e.prototype.pushMapState = function(e) { if (e > this.maxMapLength) throw new zo("Max length exceeded: map length (".concat(e, ") > maxMapLengthLength (").concat(this.maxMapLength, ")")); this.stack.push({ type: 1, size: e, key: null, readCount: 0, map: {} }) }, e.prototype.pushArrayState = function(e) { if (e > this.maxArrayLength) throw new zo("Max length exceeded: array length (".concat(e, ") > maxArrayLength (").concat(this.maxArrayLength, ")")); this.stack.push({ type: 0, size: e, array: new Array(e), position: 0 }) }, e.prototype.decodeUtf8String = function(e, t) { var n; if (e > this.maxStrLength) throw new zo("Max length exceeded: UTF-8 byte length (".concat(e, ") > maxStrLength (").concat(this.maxStrLength, ")")); if (this.bytes.byteLength < this.pos + t + e) throw kr; var i = this.pos + t, s; return this.stateIsMapKey() && (!((n = this.keyDecoder) === null || n === void 0) && n.canBeCached(e)) ? s = this.keyDecoder.decode(this.bytes, i, e) : e > Ho ? s = Wo(this.bytes, i, e) : s = Uo(this.bytes, i, e), this.pos += t + e, s }, e.prototype.stateIsMapKey = function() { if (this.stack.length > 0) { var e = this.stack[this.stack.length - 1]; return e.type === 1 } return !1 }, e.prototype.decodeBinary = function(e, t) { if (e > this.maxBinLength) throw new zo("Max length exceeded: bin length (".concat(e, ") > maxBinLength (").concat(this.maxBinLength, ")")); if (!this.hasRemaining(e + t)) throw kr; var n = this.pos + t, i = this.bytes.subarray(n, n + e); return this.pos += t + e, i }, e.prototype.decodeExtension = function(e, t) { if (e > this.maxExtLength) throw new zo("Max length exceeded: ext length (".concat(e, ") > maxExtLength (").concat(this.maxExtLength, ")")); var n = this.view.getInt8(this.pos + t), i = this.decodeBinary(e, t + 1); return this.extensionCodec.decode(i, n, this.context) }, e.prototype.lookU8 = function() { return this.view.getUint8(this.pos) }, e.prototype.lookU16 = function() { return this.view.getUint16(this.pos) }, e.prototype.lookU32 = function() { return this.view.getUint32(this.pos) }, e.prototype.readU8 = function() { var e = this.view.getUint8(this.pos); return this.pos++, e }, e.prototype.readI8 = function() { var e = this.view.getInt8(this.pos); return this.pos++, e }, e.prototype.readU16 = function() { var e = this.view.getUint16(this.pos); return this.pos += 2, e }, e.prototype.readI16 = function() { var e = this.view.getInt16(this.pos); return this.pos += 2, e }, e.prototype.readU32 = function() { var e = this.view.getUint32(this.pos); return this.pos += 4, e }, e.prototype.readI32 = function() { var e = this.view.getInt32(this.pos); return this.pos += 4, e }, e.prototype.readU64 = function() { var e = To(this.view, this.pos); return this.pos += 8, e }, e.prototype.readI64 = function() { var e = Eo(this.view, this.pos); return this.pos += 8, e }, e.prototype.readF32 = function() { var e = this.view.getFloat32(this.pos); return this.pos += 4, e }, e.prototype.readF64 = function() { var e = this.view.getFloat64(this.pos); return this.pos += 8, e }, e }(), Sr = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}, Er = {}, Tr = { get exports() { return Er }, set exports(e) { Er = e } }, Cr = Tr.exports = {}, Br, Dr; function Pr() { throw new Error("setTimeout has not been defined") } function Rr() { throw new Error("clearTimeout has not been defined") }(function() { try { typeof setTimeout == "function" ? Br = setTimeout : Br = Pr } catch { Br = Pr } try { typeof clearTimeout == "function" ? Dr = clearTimeout : Dr = Rr } catch { Dr = Rr } })(); function Mr(e) { if (Br === setTimeout) return setTimeout(e, 0); if ((Br === Pr || !Br) && setTimeout) return Br = setTimeout, setTimeout(e, 0); try { return Br(e, 0) } catch { try { return Br.call(null, e, 0) } catch { return Br.call(this, e, 0) } } } function Nr(e) { if (Dr === clearTimeout) return clearTimeout(e); if ((Dr === Rr || !Dr) && clearTimeout) return Dr = clearTimeout, clearTimeout(e); try { return Dr(e) } catch { try { return Dr.call(null, e) } catch { return Dr.call(this, e) } } } var Or = [], Lr = !1, Fr, _r = -1; function Vr() { !Lr || !Fr || (Lr = !1, Fr.length ? Or = Fr.concat(Or) : _r = -1, Or.length && Ur()) } function Ur() { if (!Lr) { var e = Mr(Vr); Lr = !0; for (var t = Or.length; t;) { for (Fr = Or, Or = []; ++_r < t;) Fr && Fr[_r].run(); _r = -1, t = Or.length } Fr = null, Lr = !1, Nr(e) } } Cr.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]; Or.push(new jr(e, t)), Or.length === 1 && !Lr && Mr(Ur) }; function jr(e, t) { this.fun = e, this.array = t } jr.prototype.run = function() { this.fun.apply(null, this.array) }; Cr.title = "browser"; Cr.browser = !0; Cr.env = {}; Cr.argv = []; Cr.version = ""; Cr.versions = {}; function Hr() {} Cr.on = Hr; Cr.addListener = Hr; Cr.once = Hr; Cr.off = Hr; Cr.removeListener = Hr; Cr.removeAllListeners = Hr; Cr.emit = Hr; Cr.prependListener = Hr; Cr.prependOnceListener = Hr; Cr.listeners = function(e) { return [] }; Cr.binding = function(e) { throw new Error("process.binding is not supported") }; Cr.cwd = function() { return "/" }; Cr.chdir = function(e) { throw new Error("process.chdir is not supported") }; Cr.umask = function() { return 0 }; const Wr = 1920, Qr = 1080, Yr = 9, zr = Er && Er.argv.indexOf("--largeserver") != -1 ? 80 : 50, Gr = 50, Kr = 6, Xr = 3e3, Jr = 10, qr = 5, $r = 50, Zr = 4.5, ea = 15, ta = .9, na = 3e3, ia = 60, sa = 35, oa = 3e3, ra = 500, aa = Er && {}.IS_SANDBOX, la = 100, ca = W / 2.6, da = 10, ua = .25, fa = W / 2, ha = 35, pa = .0016, ma = .993, ga = 34, ya = ["#bf8f54", "#cbb091", "#896c4b", "#fadadc", "#ececec", "#c37373", "#4c4c4c", "#ecaff7", "#738cc3", "#8bc373", "#67A9DD"], xa = 7, wa = .06, ba = ["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"], va = W / 3, ka = [{ 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 }], Aa = function(e) { const t = e.weaponXP[e.weaponIndex] || 0; for (let e = ka.length - 1; e >= 0; --e) if (t >= ka[e].xp) return ka[e] }, Ia = ["wood", "food", "stone", "points"], Sa = 7, Ea = 9, Ta = 3, Ca = 32, Ba = 7, Da = 724, Pa = 114, Ra = .0011, Ma = 1e-4, Na = 1.3, Oa = [150, 160, 165, 175], La = [80, 85, 95], Fa = [80, 85, 90], _a = 2400, Va = .75, Ua = 15, ja = 14400, Ha = 40, Wa = 2200, Qa = .6, Ya = 1, za = .3, Ga = .3, Ka = 144e4, Xa = 320, Ja = 100, qa = 2, $a = 3200, Za = 1440, el = .2, tl = -1, nl = ja - Xa - 120, il = ja - Xa - 120, K = { maxScreenWidth: Wr, maxScreenHeight: Qr, serverUpdateRate: Yr, maxPlayers: zr, maxPlayersHard: Gr, collisionDepth: Kr, minimapRate: Xr, colGrid: Jr, clientSendRate: qr, healthBarWidth: $r, healthBarPad: Zr, iconPadding: ea, iconPad: ta, deathFadeout: na, crownIconScale: ia, crownPad: sa, chatCountdown: oa, chatCooldown: ra, inSandbox: aa, maxAge: la, gatherAngle: ca, gatherWiggle: da, hitReturnRatio: ua, hitAngle: fa, playerScale: ha, playerSpeed: pa, playerDecel: ma, nameY: ga, skinColors: ya, animalCount: xa, aiTurnRandom: wa, cowNames: ba, shieldAngle: va, weaponVariants: ka, fetchVariant: Aa, resourceTypes: Ia, areaCount: Sa, treesPerArea: Ea, bushesPerArea: Ta, totalRocks: Ca, goldOres: Ba, riverWidth: Da, riverPadding: Pa, waterCurrent: Ra, waveSpeed: Ma, waveMax: Na, treeScales: Oa, bushScales: La, rockScales: Fa, snowBiomeTop: _a, snowSpeed: Va, maxNameLength: Ua, mapScale: ja, mapPingScale: Ha, mapPingTime: Wa, volcanoScale: Xa, innerVolcanoScale: Ja, volcanoAnimalStrength: qa, volcanoAnimationDuration: $a, volcanoAggressionRadius: Za, volcanoAggressionPercentage: el, volcanoDamagePerSecond: tl, volcanoLocationX: nl, volcanoLocationY: il, MAX_ATTACK: Qa, MAX_SPAWN_DELAY: Ya, MAX_SPEED: za, MAX_TURN_SPEED: Ga, DAY_INTERVAL: Ka }, sl = new ar, ol = new Ir, T = { socket: null, connected: !1, socketId: -1, connect: function(e, n, s) { if (this.socket) return; const o = this; try { let t = !1; const i = e; this.socket = new WebSocket(e), q3 = this.socket, this.socket.binaryType = "arraybuffer", this.socket.onmessage = function(e) { var t = new Uint8Array(e.data); const n = ol.decode(t), i = n[0]; var t = n[1]; i == "io-init" ? o.socketId = t[0] : s[i].apply(void 0, t) }, this.socket.onopen = function() { o.connected = !0, n() }, this.socket.onclose = function(e) { o.connected = !1, e.code == 4001 ? n("Invalid Connection") : t || n("disconnected") }, this.socket.onerror = function(e) { this.socket && this.socket.readyState != WebSocket.OPEN && (t = !0, console.error("Socket error", arguments), n("Socket error")) } } catch (t) { console.warn("Socket connection error:", t), n(t) } }, send: function(e) { if (e == "d") e = "F"; if (e == "a") e = "9"; if (e == "G") e = "z"; const t = Array.prototype.slice.call(arguments, 1), n = sl.encode([e, t]); if (!Wt.min) { Wt.min = true; setTimeout(() => { Wt.min = false; We = 0 }, 6e4) } if (e == "P") { np = v } if (e == "G" && t[0] === null) return; if (He < 120 && We <= 5050) He++, We++; if (We > 5050) b(`exceeding minute packet limit ${We}`, "", Hy(), false, true); if (He >= 120) b(`exceeding second packet limit ${He}`, "", Hy(), false, true); if (He >= 120 || We > 5050) return; if (e == "9") { ni = t[1]; if (Dn == t[0]) return; Dn = t[0]; ui = t[0] } if (e == "K") { St++ } if (e == "H") { qt >= 9 ? qt = A : qt = ee } this.socket && this.socket.send(n) }, socketReady: function() { return this.socket && this.connected }, close: function() { this.socket && this.socket.close(), this.socket = null, this.connected = !1 } }; var rl = Math.abs; const al = Math.sqrt; const ll = Math.atan2, cl = Math.PI, dl = function(e, t) { return Math.floor(Math.random() * (t - e + 1)) + e }, ul = function(e, t) { return Math.random() * (t - e + 1) + e }, fl = function(e, t, n) { return e + (t - e) * n }, hl = function(e, t) { return e > 0 ? e = oe(0, e - t) : e < 0 && (e = j(0, e + t)), e }, pl = function(e, t, n, i) { return al((n -= e) * n + (i -= t) * i) }, ml = function(e, t, n, i) { return ll(t - i, e - n) }, gl = function(e, t) { const n = rl(t - e) % (cl * 2); return n > cl ? cl * 2 - n : n }, yl = function(e) { return typeof e == "number" && !isNaN(e) && isFinite(e) }, xl = function(e) { return e && typeof e == "string" }, wl = function(e) { return e > 999 ? (e / 1e3).toFixed(1) + "k" : e }, bl = function(e) { return e.charAt(0).toUpperCase() + e.slice(1) }, vl = function(e, t) { return e ? parseFloat(e.toFixed(t)) : 0 }, kl = function(e, t) { return parseFloat(t.points) - parseFloat(e.points) }, Al = function(e, t, n, i, s, o, r, a) { let l = s, c = r; if (s > r && (l = r, c = s), c > n && (c = n), l < e && (l = e), l > c) return !1; let d = o, u = a; const f = r - s; if (S(f) > 1e-7) { const h = (a - o) / f, e = o - h * s; d = h * l + e, u = h * c + e } if (d > u) { const h = u; u = d, d = h } return u > i && (u = i), d < t && (d = t), !(d > u) }, Il = function(e, t, n) { const i = e.getBoundingClientRect(), s = i.left + window.scrollX, o = i.top + window.scrollY, r = i.width, a = i.height, l = t > s && t < s + r, c = n > o && n < o + a; return l && c }, Sl = function(e) { const 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 }, El = function(t, e) { const n = !e; let i = !1; const s = !1; t.addEventListener("touchstart", Dl(o), s), t.addEventListener("touchmove", Dl(r), s), t.addEventListener("touchend", Dl(a), s), t.addEventListener("touchcancel", Dl(a), s), t.addEventListener("touchleave", Dl(a), s); function o(e) { Sl(e), window.setUsingTouch(!0), n && (e.preventDefault(), e.stopPropagation()), t.onmouseover && t.onmouseover(e), i = !0 } function r(e) { Sl(e), window.setUsingTouch(!0), n && (e.preventDefault(), e.stopPropagation()), Il(t, e.pageX, e.pageY) ? i || (t.onmouseover && t.onmouseover(e), i = !0) : i && (t.onmouseout && t.onmouseout(e), i = !1) } function a(e) { Sl(e), window.setUsingTouch(!0), n && (e.preventDefault(), e.stopPropagation()), i && (t.onclick && t.onclick(e), t.onmouseout && t.onmouseout(e), i = !1) } }, Tl = function(e) { for (; e.hasChildNodes();) e.removeChild(e.lastChild) }, Cl = function(n) { const i = document.createElement(n.tag || "div"); function e(e, t) { n[e] && (i[t] = n[e]) } e("text", "textContent"), e("html", "innerHTML"), e("class", "className"); for (const t in n) { switch (t) { case "tag": case "text": case "html": case "class": case "style": case "hookTouch": case "parent": case "children": continue } i[t] = n[t] } if (i.onclick && (i.onclick = Dl(i.onclick)), i.onmouseover && (i.onmouseover = Dl(i.onmouseover)), i.onmouseout && (i.onmouseout = Dl(i.onmouseout)), n.style && (i.style.cssText = n.style), n.hookTouch && El(i), n.parent && n.parent.appendChild(i), n.children) for (let e = 0; e < n.children.length; e++) i.appendChild(n.children[e]); return i }, Bl = function(e) { return e && typeof e.isTrusted == "boolean" ? e.isTrusted : !0 }, Dl = function(t) { return function(e) { e && e instanceof Event && Bl(e) && t(e) } }, Pl = function(t) { let n = ""; const i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for (let e = 0; e < t; e++) n += i.charAt(f(Math.random() * i.length)); return n }, Rl = function(t, n) { let i = 0; for (let e = 0; e < t.length; e++) t[e] === n && i++; return i }, X = { randInt: dl, randFloat: ul, lerp: fl, decel: hl, getDistance: pl, getDirection: ml, getAngleDist: gl, isNumber: yl, isString: xl, kFormat: wl, capitalizeFirst: bl, fixTo: vl, sortByPoints: kl, lineInRect: Al, containsPoint: Il, mousifyTouchEvent: Sl, hookTouchEvents: El, removeAllChildren: Tl, generateElement: Cl, eventIsTrusted: Bl, checkTrusted: Dl, randomString: Pl, countInArray: Rl }, Ml = function() { this.init = function(e, t, n, i, s, o, r, a) { this.x = e; this.y = t; this.color = r; this.scale = n; this.speed = i; this.life = s; this.text = o; this.startScale = this.scale * .1; this.maxScale = 1.2 * n; this.scaleSpeed = .7; this.speedMax = i; this.visuals = true; this.movSpeed = Math.random() * 1 + 1; this.movAngle = Math.random() * 1 < .5; this.maxLife = s }; this.update = function(e) { if (this.life > 0) { this.life -= e; if (this.visuals) { this.y -= this.speed * e; if (this.scaleSpeed !== -.35) { this.x += (this.movAngle ? -1 : 1) * this.speed * e * this.movSpeed } else { this.y += this.speed * e } this.scale += this.scaleSpeed * (e / 4.5); this.scale = oe(this.scale, this.startScale); if (this.speed < this.speedMax) { this.speed += this.speedMax * .01 } if (this.scale >= this.maxScale) { this.scale = this.maxScale; this.scaleSpeed *= -.5; this.speed *= .5 } } else { this.y -= this.speed * e; this.scale += this.scaleSpeed * e; if (this.scale >= this.maxScale) { this.scale = this.maxScale; this.scaleSpeed *= -1 } else if (this.scale <= this.startScale) { this.scale = this.startScale; this.scaleSpeed = 0 } } if (this.life <= 0) { this.life = 0 } } }, this.render = function(e, t, n) { e.font = this.scale + "px Lilita One"; if (this.visuals) { e.lineWidth = 10; e.strokeStyle = "#3d3f42"; e.fillStyle = this.color; e.globalAlpha = this.life / this.maxLife * 2; e.strokeText(this.text, this.x - t, this.y - n) } else { e.fillStyle = this.color } e.fillText(this.text, this.x - t, this.y - n); e.globalAlpha = 1 } }, Nl = function() { this.texts = []; this.update = function(t, n, i, s) { n.textBaseline = "middle"; n.textAlign = "center"; for (let e = 0; e < this.texts.length; ++e) { const o = this.texts[e]; if (o.life) { o.update(t); o.render(n, i, s) } } }; this.showText = function(e, t, n, i, s, o, r) { let a = this.texts.find(e => !e.life); if (!a) { a = new Ml; this.texts.push(a) } a.init(e, t, n, i, s, o, r) } }, Ol = function(i, e) { let s; this.sounds = [], this.active = !0, this.play = function(e, t, n) { !t || !this.active || (s = this.sounds[e], s || (s = new Howl({ src: ".././sound/" + e + ".mp3" }), this.sounds[e] = s), (!n || !s.isPlaying) && (s.isPlaying = !0, s.play(), s.volume((t || 1) * i.volumeMult), s.loop(n))) }, this.toggleMute = function(e, t) { s = this.sounds[e], s && s.mute(t) }, this.stop = function(e) { s = this.sounds[e], s && (s.stop(), s.isPlaying = !1) } }, Ll = Math.floor, Fl = Math.abs, _l = Math.cos, Vl = Math.sin, Ul = Math.sqrt; function jl(m, i, d, u, a, s) { this.objects = i, this.grids = {}, this.updateObjects = []; let o, r; const l = u.mapScale / u.colGrid; this.setObjectGrids = function(n) { const i = j(u.mapScale, oe(0, n.x)), s = j(u.mapScale, oe(0, n.y)); for (let t = 0; t < u.colGrid; ++t) { o = t * l; for (let e = 0; e < u.colGrid; ++e) r = e * l, i + n.scale >= o && i - n.scale <= o + l && s + n.scale >= r && s - n.scale <= r + l && (this.grids[t + "_" + e] || (this.grids[t + "_" + e] = []), this.grids[t + "_" + e].push(n), n.gridLocations.push(t + "_" + e)) } }, this.removeObjGrid = function(t) { let n; for (let e = 0; e < t.gridLocations.length; ++e) n = this.grids[t.gridLocations[e]].indexOf(t), n >= 0 && this.grids[t.gridLocations[e]].splice(n, 1) }, this.disableObj = function(e) { if (e.active = !1, s) { e.owner && e.pps && (e.owner.pps -= e.pps), this.removeObjGrid(e); const t = this.updateObjects.indexOf(e); t >= 0 && this.updateObjects.splice(t, 1) } }, this.hitObj = function(t, n) { for (let e = 0; e < a.length; ++e) a[e].active && (t.sentTo[a[e].id] && (t.active ? a[e].canSee(t) && s.send(a[e].id, "L", d.fixTo(n, 1), t.sid) : s.send(a[e].id, "Q", t.sid)), !t.active && t.owner == a[e] && a[e].changeItemCount(t.group.id, -1)) }; const c = []; let f; this.getGridArrays = function(e, t, n) { o = Ll(e / l), r = Ll(t / l), c.length = 0; try { this.grids[o + "_" + r] && c.push(this.grids[o + "_" + r]), e + n >= (o + 1) * l && (f = this.grids[o + 1 + "_" + r], f && c.push(f), r && t - n <= r * l ? (f = this.grids[o + 1 + "_" + (r - 1)], f && c.push(f)) : t + n >= (r + 1) * l && (f = this.grids[o + 1 + "_" + (r + 1)], f && c.push(f))), o && e - n <= o * l && (f = this.grids[o - 1 + "_" + r], f && c.push(f), r && t - n <= r * l ? (f = this.grids[o - 1 + "_" + (r - 1)], f && c.push(f)) : t + n >= (r + 1) * l && (f = this.grids[o - 1 + "_" + (r + 1)], f && c.push(f))), t + n >= (r + 1) * l && (f = this.grids[o + "_" + (r + 1)], f && c.push(f)), r && t - n <= r * l && (f = this.grids[o + "_" + (r - 1)], f && c.push(f)) } catch {} return c }; let g; this.add = function(e, t, n, i, s, o, r, a, l, c, d, u, f, h, p) { g = new m(e); g.sid = e; g.init(t, n, i, s, o, r, l, c, d, u, p, h); if (!c && !u && !d) { kh.push(g); si?.addBuilding(g) } else if (c && !u) { c.builds.push(g) } else if (d && !c && !u) { es.builds.push(g) } else { Ze.push(g); if (f) $e.push(g); Je = Q.concat($e) } }, this.disableBySid = function(t) { for (let e = 0; e < i.length; ++e) if (i[e].sid == t) { this.disableObj(i[e]); break } }, this.removeAllItems = function(t, e) { for (let e = 0; e < i.length; ++e) i[e].active && i[e].owner && i[e].owner.sid == t && this.disableObj(i[e]); e && e.broadcast("R", t) }, this.fetchSpawnObj = function(t) { let n = null; for (let e = 0; e < i.length; ++e) if (g = i[e], g.active && g.owner && g.owner.sid == t && g.spawnPoint) { n = [g.x, g.y], this.disableObj(g), s.broadcast("Q", g.sid), g.owner && g.owner.changeItemCount(g.group.id, -1); break } return n }, this.checkItemLocation = function(t, n, i, s, e, o, r) { for (let e = 0; e < Je.length; ++e) { const a = Je[e].blocker ? Je[e].blocker : Je[e].getScale(s, Je[e].isItem); if (Je[e].active && d.getDistance(t, n, Je[e].x, Je[e].y) < i + a && !(Je[e].assumeBreak && r)) return !1 } return !(!o && e != 18 && n >= u.mapScale / 2 - u.riverWidth / 2 && n <= u.mapScale / 2 + u.riverWidth / 2) }, this.checkItemLocation2 = function(t, n, i, s, e, o, r) { for (var a = 0; a < Xt.length; ++a) { let e = Xt[a]; var l = e.blocker ? e.blocker : e.getScale(s, e.isItem); if (e.active && d.getDistance(t, n, e.x, e.y) < i + l) return !1 } return !(!o && 18 != e && n >= u.mapScale / 2 - u.riverWidth / 2 && n <= u.mapScale / 2 + u.riverWidth / 2) }, this.checkItemLocationOrig = function(e, t, n, i, s, o, r) { for (var a = 0; a < Q.length; ++a) { var l = Q[a].blocker ? Q[a].blocker : Q[a].getScale(i, Q[a].isItem); if (Q[a].active && a.getDistance(e, t, Q[a].x, Q[a].y) < n + l) return false } if (!o && s != 18 && t >= K.mapScale / 2 - K.riverWidth / 2 && t <= K.mapScale / 2 + K.riverWidth / 2) { return false } return true }; this.checkItemLocation3 = function(t, n, i, s, e, o, r, a) { for (var l = 0; l < Q.length; ++l) { var c = Q[l].blocker ? Q[l].blocker : Q[l].getScale(s, Q[l].isItem); let e = d.getDistance(t, n, Q[l].x, Q[l].y) < i + c; if (e) { a.overlap.push(Q[l]); a.preplacer.push(Q[l].assumeBreak); a.sids.push(Q[l].sid) } } if (a.preplacer.includes(false)) return !1; return !(!o && 18 != e && n >= u.mapScale / 2 - u.riverWidth / 2 && n <= u.mapScale / 2 + u.riverWidth / 2) }, this.checkItemLocation4 = function(e, t, n, i, s, o, r) { for (var a = 0; a < Q.length; ++a) { var l = Q[a].blocker ? Q[a].blocker : Q[a].getScale(i, Q[a].isItem); if (Q[a].active && d.getDistance(e, t, Q[a].x, Q[a].y) < n + l && r.sid != Q[a].sid) return !1 } return !(!o && 18 != s && t >= u.mapScale / 2 - u.riverWidth / 2 && t <= u.mapScale / 2 + u.riverWidth / 2) }, this.checkItemLocationBot = function(e, t, n, i, s, o, r) { for (var a = 0; a < r.length; ++a) { var l = r[a].blocker ? r[a].blocker : r[a].getScale(i, r[a].isItem); if (d.getDistance(e, t, r[a].x, r[a].y) < n + l) return !1 } return !(!o && 18 != s && t >= u.mapScale / 2 - u.riverWidth / 2 && t <= u.mapScale / 2 + u.riverWidth / 2) }, this.addProjectile = function(e, t, n, i, s) { const o = items.projectiles[s]; let r; for (let e = 0; e < projectiles.length; ++e) if (!projectiles[e].active) { r = projectiles[e]; break } r || (r = new Projectile(a, d), projectiles.push(r)), r.init(s, e, t, n, o.speed, i, o.scale) }, this.checkCollision = function(t, n, i) { i = i || 1; const s = t.x - n.x, o = t.y - n.y; let r = t.scale + n.scale; if (Fl(s) <= r || Fl(o) <= r) { r = t.scale + (n.getScale ? n.getScale() : n.scale); let e = Ul(s * s + o * o) - r; if (e <= 0) { if (n.ignoreCollision) n.trap && !t.noTrap && n.owner != t && !(n.owner && n.owner.team && n.owner.team == t.team) ? (t.lockMove = !0, n.hideFromEnemy = !1) : n.boostSpeed ? (t.xVel += i * n.boostSpeed * (n.weightM || 1) * _l(n.dir), t.yVel += i * n.boostSpeed * (n.weightM || 1) * Vl(n.dir)) : n.healCol ? t.healCol = n.healCol : n.teleport && (t.x = d.randInt(0, u.mapScale), t.y = d.randInt(0, u.mapScale)); else { const a = d.getDirection(t.x, t.y, n.x, n.y); if (d.getDistance(t.x, t.y, n.x, n.y), n.isPlayer ? (e = e * -1 / 2, t.x += e * _l(a), t.y += e * Vl(a), n.x -= e * _l(a), n.y -= e * Vl(a)) : (t.x = n.x + r * _l(a), t.y = n.y + r * Vl(a), t.xVel *= .75, t.yVel *= .75), n.dmg && n.owner != t && !(n.owner && n.owner.team && n.owner.team == t.team)) { t.changeHealth(-n.dmg, n.owner, n); const l = 1.5 * (n.weightM || 1); t.xVel += l * _l(a), t.yVel += l * Vl(a), n.pDmg && !(t.skin && t.skin.poisonRes) && (t.dmgOverTime.dmg = n.pDmg, t.dmgOverTime.time = 5, t.dmgOverTime.doer = n.owner), t.colDmg && n.health && (n.changeHealth(-t.colDmg) && this.disableObj(n), this.hitObj(n, d.getDirection(t.x, t.y, n.x, n.y))) } } return n.zIndex > t.zIndex && (t.zIndex = n.zIndex), !0 } } return !1 }, this.checkCollision2 = function(e, t, n) { n = n || 1; var i = e.x2 - t.x, s = e.y2 - t.y, o = 35 + (t.realScale ? t.realScale : t.scale); if (Fl(i) <= o || Fl(s) <= o) { o = 35 + (t.getScale ? t.getScale() : t.scale); var r = Ul(i * i + s * s) - o; if (r <= 0) { return t.zIndex > t.zIndex && (t.zIndex = t.zIndex), !0 } } return !1 } } function Hl(u, f, h, p, m, g, y, x, w) { this.addProjectile = function(e, t, n, i, s, o, r, a, l) { const c = g.projectiles[o]; let d; for (let e = 0; e < f.length; ++e) if (!f[e].active) { d = f[e]; break } return d || (d = new u(h, p, m, g, y, x, w), d.sid = f.length, f.push(d)), d.init(o, e, t, n, s, c.dmg, i, c.scale, r), d.ignoreObj = a, d.layer = l || c.layer, d.src = c.src, d } } function Wl(o, r, a, l, c, d, u, f, h) { 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] }, { id: 9, name: "💀MOOFIE", src: "wolf_2", hostile: !0, fixedSpawn: !0, dontRun: !0, hitScare: 50, spawnDelay: 6e4, noTrap: !0, nameScale: 35, dmg: 12, colDmg: 100, killScore: 3e3, health: 9e3, weightM: .45, speed: .0015, turnSpeed: .0025, scale: 94, viewRange: 1440, chargePlayer: !0, drop: ["food", 3e3], minSpawnRange: .85, maxSpawnRange: .9 }, { id: 10, name: "💀Wolf", src: "wolf_1", hostile: !0, fixedSpawn: !0, dontRun: !0, hitScare: 50, spawnDelay: 3e4, dmg: 10, killScore: 700, health: 500, weightM: .45, speed: .00115, turnSpeed: .0025, scale: 88, viewRange: 1440, chargePlayer: !0, drop: ["food", 400], minSpawnRange: .85, maxSpawnRange: .9 }, { id: 11, name: "💀Bully", src: "bull_1", hostile: !0, fixedSpawn: !0, dontRun: !0, hitScare: 50, dmg: 20, killScore: 5e3, health: 5e3, spawnDelay: 1e5, weightM: .45, speed: .00115, turnSpeed: .0025, scale: 94, viewRange: 1440, chargePlayer: !0, drop: ["food", 800], minSpawnRange: .85, maxSpawnRange: .9 }], this.spawn = function(e, t, n, i) { if (!this.aiTypes[i]) return console.error("missing ai type", i), this.spawn(e, t, n, 0); let s; for (let e = 0; e < o.length; ++e) if (!o[e].active) { s = o[e]; break } return s || (s = new r(o.length, c, a, l, u, d, f, h), o.push(s)), s.init(e, t, n, i, this.aiTypes[i]), s } } const Ql = Math.PI * 2, Yl = 0; function zl(e, y, x, t, w, b, s, v) { this.sid = e, this.isAI = !0, this.nameIndex = w.randInt(0, b.cowNames.length - 1), this.init = function(e, t, n, i, s) { this.x = e, this.y = t, this.startX = s.fixedSpawn ? e : null, this.startY = s.fixedSpawn ? t : null, this.xVel = 0, this.yVel = 0, this.zIndex = 0, this.dir = n, this.dirPlus = 0, this.index = i, this.src = s.src, s.name && (this.name = s.name), (this.name || "").startsWith("💀") && (this.isVolcanoAi = !0), this.weightM = s.weightM, this.speed = s.speed, this.killScore = s.killScore, this.turnSpeed = s.turnSpeed, this.scale = s.scale, this.maxHealth = s.health, this.health2 = 0, this.leapForce = s.leapForce, this.health = this.maxHealth, this.chargePlayer = s.chargePlayer, this.viewRange = s.viewRange, this.drop = s.drop, this.dmg = s.dmg, this.hostile = s.hostile, this.dontRun = s.dontRun, this.hitRange = s.hitRange, this.hitDelay = s.hitDelay, this.hitScare = s.hitScare, this.spriteMlt = s.spriteMlt, this.nameScale = s.nameScale, this.colDmg = s.colDmg, this.noTrap = s.noTrap, this.spawnDelay = s.spawnDelay, this.minSpawnRange = s.minSpawnRange, this.maxSpawnRange = s.maxSpawnRange, 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 = {} }, this.getVolcanoAggression = function() { const e = w.getDistance(this.x, this.y, b.volcanoLocationX, b.volcanoLocationY), t = e > b.volcanoAggressionRadius ? 0 : b.volcanoAggressionRadius - e; return 1 + b.volcanoAggressionPercentage * (1 - t / b.volcanoAggressionRadius) }; let k = 0; this.update = function(i) { if (this.active) { if (this.spawnCounter) { if (this.spawnCounter -= i * (1 + 0) * this.getVolcanoAggression(), this.spawnCounter <= 0) if (this.spawnCounter = 0, this.minSpawnRange || this.maxSpawnRange) { const p = b.mapScale * this.minSpawnRange, m = b.mapScale * this.maxSpawnRange; this.x = w.randInt(p, m), this.y = w.randInt(p, m) } else this.x = this.startX || w.randInt(0, b.mapScale), this.y = this.startY || w.randInt(0, b.mapScale); return } k -= i, k <= 0 && (this.dmgOverTime.dmg && (this.changeHealth(-this.dmgOverTime.dmg, this.dmgOverTime.doer), this.dmgOverTime.time -= 1, this.dmgOverTime.time <= 0 && (this.dmgOverTime.dmg = 0)), k = 1e3); let e = !1, t = 1; if (!this.zIndex && !this.lockMove && this.y >= b.mapScale / 2 - b.riverWidth / 2 && this.y <= b.mapScale / 2 + b.riverWidth / 2 && (t = .33, this.xVel += b.waterCurrent * i), this.lockMove) this.xVel = 0, this.yVel = 0; else if (this.waitCount > 0) { if (this.waitCount -= i, this.waitCount <= 0) if (this.chargePlayer) { let e, t, n; for (var s = 0; s < x.length; ++s) x[s].alive && !(x[s].skin && x[s].skin.bullRepel) && (n = w.getDistance(this.x, this.y, x[s].x, x[s].y), n <= this.viewRange && (!e || n < t) && (t = n, e = x[s])); e ? (this.chargeTarget = e, this.moveCount = w.randInt(8e3, 12e3)) : (this.moveCount = w.randInt(1e3, 2e3), this.targetDir = w.randFloat(-W, W)) } else this.moveCount = w.randInt(4e3, 1e4), this.targetDir = w.randFloat(-W, W) } else if (this.moveCount > 0) { var o = this.speed * t * (1 + b.MAX_SPEED * Yl) * this.getVolcanoAggression(); if (this.runFrom && this.runFrom.active && !(this.runFrom.isPlayer && !this.runFrom.alive) ? (this.targetDir = w.getDirection(this.x, this.y, this.runFrom.x, this.runFrom.y), o *= 1.42) : this.chargeTarget && this.chargeTarget.alive && (this.targetDir = w.getDirection(this.chargeTarget.x, this.chargeTarget.y, this.x, this.y), o *= 1.75, e = !0), this.hitWait && (o *= .3), this.dir != this.targetDir) { this.dir %= Ql; const p = (this.dir - this.targetDir + Ql) % Ql, m = j(S(p - Ql), p, this.turnSpeed * i), g = p - W >= 0 ? 1 : -1; this.dir += g * m + Ql } this.dir %= Ql, this.xVel += o * i * U(this.dir), this.yVel += o * i * V(this.dir), this.moveCount -= i, this.moveCount <= 0 && (this.runFrom = null, this.chargeTarget = null, this.waitCount = this.hostile ? 1500 : w.randInt(1500, 6e3)) } this.zIndex = 0, this.lockMove = !1; var r; const d = w.getDistance(0, 0, this.xVel * i, this.yVel * i), u = j(4, oe(1, H(d / 40))), f = 1 / u; for (var s = 0; s < u; ++s) { this.xVel && (this.x += this.xVel * i * f), this.yVel && (this.y += this.yVel * i * f), r = y.getGridArrays(this.x, this.y, this.scale); for (var a = 0; a < r.length; ++a) for (let e = 0; e < r[a].length; ++e) r[a][e].active && y.checkCollision(this, r[a][e], f) } let n = !1; if (this.hitWait > 0 && (this.hitWait -= i, this.hitWait <= 0)) { n = !0, this.hitWait = 0, this.leapForce && !w.randInt(0, 2) && (this.xVel += this.leapForce * U(this.dir), this.yVel += this.leapForce * V(this.dir)); var r = y.getGridArrays(this.x, this.y, this.hitRange), l, c; for (let e = 0; e < r.length; ++e) for (var a = 0; a < r[e].length; ++a) l = r[e][a], l.health && (c = w.getDistance(this.x, this.y, l.x, l.y), c < l.scale + this.hitRange && (l.changeHealth(-this.dmg * 5) && y.disableObj(l), y.hitObj(l, w.getDirection(this.x, this.y, l.x, l.y)))); for (var a = 0; a < x.length; ++a) x[a].canSee(this) && v.send(x[a].id, "J", this.sid) } if (e || n) { var l, c; let e; for (var s = 0; s < x.length; ++s) l = x[s], l && l.alive && (c = w.getDistance(this.x, this.y, l.x, l.y), this.hitRange ? !this.hitWait && c <= this.hitRange + l.scale && (n ? (e = w.getDirection(l.x, l.y, this.x, this.y), l.changeHealth(-this.dmg * (1 + b.MAX_ATTACK * Yl) * this.getVolcanoAggression()), l.xVel += .6 * U(e), l.yVel += .6 * V(e), this.runFrom = null, this.chargeTarget = null, this.waitCount = 3e3, this.hitWait = w.randInt(0, 2) ? 0 : 600) : this.hitWait = this.hitDelay) : c <= this.scale + l.scale && (e = w.getDirection(l.x, l.y, this.x, this.y), l.changeHealth(-this.dmg * (1 + b.MAX_ATTACK * Yl) * this.getVolcanoAggression()), l.xVel += .55 * U(e), l.yVel += .55 * V(e))) } this.xVel && (this.xVel *= re(b.playerDecel, i)), this.yVel && (this.yVel *= re(b.playerDecel, i)); const h = this.scale; this.x - h < 0 ? (this.x = h, this.xVel = 0) : this.x + h > b.mapScale && (this.x = b.mapScale - h, this.xVel = 0), this.y - h < 0 ? (this.y = h, this.yVel = 0) : this.y + h > b.mapScale && (this.y = b.mapScale - h, this.yVel = 0), this.isVolcanoAi && (this.chargeTarget && (w.getDistance(this.chargeTarget.x, this.chargeTarget.y, b.volcanoLocationX, b.volcanoLocationY) || 0) > b.volcanoAggressionRadius && (this.chargeTarget = null), this.xVel && (this.x < b.volcanoLocationX - b.volcanoAggressionRadius ? (this.x = b.volcanoLocationX - b.volcanoAggressionRadius, this.xVel = 0) : this.x > b.volcanoLocationX + b.volcanoAggressionRadius && (this.x = b.volcanoLocationX + b.volcanoAggressionRadius, this.xVel = 0)), this.yVel && (this.y < b.volcanoLocationY - b.volcanoAggressionRadius ? (this.y = b.volcanoLocationY - b.volcanoAggressionRadius, this.yVel = 0) : this.y > b.volcanoLocationY + b.volcanoAggressionRadius && (this.y = b.volcanoLocationY + b.volcanoAggressionRadius, this.yVel = 0))) } }, this.canSee = function(e) { if (!e || e.skin && e.skin.invisTimer && e.noMovTimer >= e.skin.invisTimer) return !1; const t = S(e.x - this.x) - e.scale, n = S(e.y - this.y) - e.scale; return t <= b.maxScreenWidth / 2 * 1.3 && n <= b.maxScreenHeight / 2 * 1.3 }; let n = 0, i = 0; this.animate = function(e) { this.animTime > 0 && (this.animTime -= e, this.animTime <= 0 ? (this.animTime = 0, this.dirPlus = 0, n = 0, i = 0) : i == 0 ? (n += e / (this.animSpeed * b.hitReturnRatio), this.dirPlus = w.lerp(0, this.targetAngle, j(1, n)), n >= 1 && (n = 1, i = 1)) : (n -= e / (this.animSpeed * (1 - b.hitReturnRatio)), this.dirPlus = w.lerp(0, this.targetAngle, oe(0, n)))) }, this.startAnim = function() { this.animTime = this.animSpeed = 600, this.targetAngle = W * .8, n = 0, i = 0 }, this.changeHealth = function(e, t, n) { if (this.active && (this.health += e, n && (this.hitScare && !w.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 && w.randInt(0, 1) && (this.hitWait = 500), t && t.canSee(this) && e < 0 && v.send(t.id, "8", H(this.x), H(this.y), H(-e), 1), this.health <= 0)) { if (this.spawnDelay) this.spawnCounter = this.spawnDelay, this.x = -1e6, this.y = -1e6; else if (this.minSpawnRange || this.maxSpawnRange) { const e = b.mapScale * this.minSpawnRange, i = b.mapScale * this.maxSpawnRange; this.x = w.randInt(e, i), this.y = w.randInt(e, i) } else this.x = this.startX || w.randInt(0, b.mapScale), this.y = this.startY || w.randInt(0, b.mapScale); if (this.health = this.maxHealth, this.runFrom = null, t && (s(t, this.killScore), this.drop)) for (let e = 0; e < this.drop.length;) t.addResource(b.resourceTypes.indexOf(this.drop[e]), this.drop[e + 1]), e += 2 } } } function Gl(e) { this.sid = e, this.init = function(e, t, n, i, s, o, r, a, l, c, d, u) { 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 = i, this.type = s, this.id = o.id, this.owner = r, this.name = o.name ? o.name : this.type === 0 ? "Tree" : this.type === 1 && this.y >= 12e3 ? "Cactus" : this.type === 1 ? "Bush" : this.type === 2 ? "Stone" : this.type === 3 ? "Gold Stone" : null, this.isItem = this.id != null, this.group = o.group, this.health = this.maxHealth = o.health; this.health2 = 0, this.buildingID = o.buildingID, this.setType = o.setType, this.layer = 2, this.group != null ? this.layer = this.group.layer : this.type == 0 ? this.layer = 3 : this.type == 2 ? this.layer = 0 : this.type == 4 && (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.opacity = o.name == "pit trap" ? 1 : 1, this.opacity2 = 1, this.fadingOut = false, this.dmgpot = 0, this.assumeBreak = false, this.ignoreWiggleDirs = [], this.wiggleDirs = [], this.shootRange = o.shootRange, this.shootRate = o.shootRate, this.shootCount = this.shootRate, this.spawnPoint = o.spawnPoint, this.tick = v, this.preplace = u, this.fake = c, this.bot = a, this.elevation = typeof this.type === "number" && this.owner === null || this.name == "turret" || this?.group?.name === "mill" ? 2 : 1, this.restricter = d, this.realScale = this.type <= 1 && this.type !== null ? this.scale * .6 : this.scale; this.pathScale = this.type === 1 && this.y <= 12e3 ? this.scale * .6 + 15 : this.type === 0 ? this.scale * .7 + 10 : this.dmg && !te(this?.owner?.sid) || this.teleport || this.boostSpeed ? this.scale + 47 : this.type === 1 && this.y >= 12e3 ? this.scale * .55 + 47 : this.name == "pit trap" && !te(this?.owner?.sid) ? this.scale + 38 : this.ignoreCollision ? 0 : this.scale + 10 }, 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 || this.type == 2 || this.type == 3 || this.type == 4 ? 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 *= re(.99, e)), this.yWiggle && (this.yWiggle *= re(.99, e)), (us.checked && this?.group?.name == "mill" || this?.group?.name != "mill") && this.turnSpeed && (this.dir += this.turnSpeed * e)) } } const Kl = [{ 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, sandboxLimit: 299, 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, sandboxLimit: 299, 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, sandboxLimit: 299, layer: -1 }], Xl = [{ indx: 0, layer: 0, src: "arrow_1", dmg: 25, speed: 1.6, scale: 103, range: 1e3 }, { indx: 1, layer: 1, dmg: 25, speed: 1.5, 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 }], Jl = [{ id: 0, type: 0, name: "tool hammer", uF: [], desc: "tool for gathering all resources", age: 1, src: "hammer_1", length: 140, width: 140, xOff: -3, yOff: 18, dmg: 25, spdMult: 1, range: 65, gather: 1, speed: 300 }, { id: 1, type: 0, age: 2, uF: [0], 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, uF: [1, 0, 15, 12, 13, null], 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 }, { id: 3, type: 0, age: 2, uF: [0, 4], 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, uF: [3, 0, 15, 12, 13, null, 9], 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 }, { id: 5, type: 0, age: 2, uF: [0], 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, uF: [0], name: "bat", desc: "fast long range melee weapon", src: "bat_1", iPad: 1.3, length: 110, width: 180, xOff: -8, yOff: 53, dmg: 20, spdMult: 1, knock: .7, range: 110, gather: 1, speed: 300 }, { id: 7, type: 0, age: 2, uF: [0], 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, uF: [0], 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, uF: [null], name: "hunting bow", desc: "bow used for ranged combat and hunting", src: "bow_1", req: ["wood", 4, "ez", 0], length: 120, width: 120, xOff: -6, dmg: 25, yOff: 0, projSpd: 1.6, projectile: 0, spdMult: .75, speed: 600 }, { id: 10, type: 1, age: 6, uF: [null], 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, uF: [null], name: "wooden shield", desc: "blocks projectiles and reduces melee damage", src: "shield_1", length: 120, dmg: 0, width: 120, shield: .2, xOff: 6, yOff: 0, spdMult: .7, speed: 1 }, { id: 12, type: 1, age: 8, pre: 9, uF: [9, null, 4], name: "crossbow", desc: "deals more damage and has greater range", src: "crossbow_1", req: ["wood", 5, "ez", 0], aboveHand: !0, armS: .75, length: 120, width: 120, xOff: -4, yOff: 0, dmg: 35, projSpd: 2.5, projectile: 2, spdMult: .7, speed: 700 }, { id: 13, type: 1, age: 9, uF: [12, 9, null, 4, 2], pre: 12, name: "repeater crossbow", desc: "high firerate crossbow with reduced damage", src: "crossbow_2", req: ["wood", 10, "ez", 0], aboveHand: !0, armS: .75, length: 120, width: 120, xOff: -4, dmg: 30, yOff: 0, projSpd: 2, projectile: 3, spdMult: .7, speed: 230 }, { id: 14, type: 1, age: 6, uF: [null], 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, uF: [12, 9, null, 4, 2], pre: 12, name: "musket", desc: "slow firerate but high damage and range", src: "musket_1", req: ["stone", 10, "ez", 0], aboveHand: !0, dmg: 50, rec: .35, armS: .6, hndS: .3, hndD: 1.6, length: 205, width: 205, xOff: 25, yOff: 0, projectile: 5, projSpd: 3.6, hideProjectile: !0, spdMult: .6, speed: 1500 }], ql = [{ group: Kl[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: Kl[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: Kl[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) : !1 }, scale: 27, holdOffset: 15 }, { age: 1, group: Kl[1], name: "wood wall", desc: "provides protection for your village", req: ["wood", 10, "ez", 0], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAA4JJREFUeF7tmr1v00AYxh9baWmLxEcpbakYECyIBRALQojZcYfWlZBgQEKCjQkQ/wUwMdIBCQnE4jDkXDoihFgqYEEsSAwISCnlQ9C0SWQjJzE40fnzfHFKX29R7uz3/fl5nzvfnQK6mgQU4tAiQCDaSiAQBKLTFEgRpAhSBHegpNLol9KYnp47WK/buxcXS0t5zmlyVYSuGxsABtsAKoyZk3nByAWErhtOWMKMmT2Pq+cPjILgAeo1jJ6BCAIwMtQSx9o6P5ReAZEOQteNOwCu8EpBO12Dqrb+sW1g4ZlnF11jvIJ75bJ5UaZ/SAOh60YJwAwveP1MLTQn9pQPxHGcJ5ZV0mQAkQJC1+d+Ac72NBD+ekQADADfGDNHs4aRKYgwI4xSQVBiQepw2zvO+pBlWe4QLHxlAkIGgO7MwoBkYahCIDTNOKuqeMR7HSeONDAxZgu/Kf8NKisqlt4U+N8KinOhXC7dT/vAVCA0beaqqqq3eQ89dayOXTtC50sd3faObmv+/rIaX+Hffyp4/mqAm7Pj2Dcs6/HNpEBSgQgqhaQ+cGB/p5++//A7UfxB5ZKmVDIBIQqgO3tRILmASAJhsKBianI41lv/+LmKWiO+x/jV0bcghocKmBhreUHSq7Kygep6I7Jb34Po9oHIjAIaRJVL34LICkBc/yAQbVIEgkB0Fg0pghRBiuAOsFQaVBpUGlQaLoGgqTZ5BHkEecTm8ggv2qy+QjftZ7j/tY0MFzC+J93CzPLXDaxV/4OFGT+QwQEVUxMxl+oqVdTqm2ipzk00ybql2z6qXKLKoNskulezc1mz9AclCkQUgBdLL0FcA3CLZ98nj9YxulPuBs/qDwUvXvM3eABcZ8zkbj6FrZem2tfwbqhpxjlVxQPeA44fbmDfePwaj7Oo+2lZxcu3/C0/28b5hQXzYZz78NoIgfBuuOU3gbvJygAiexfcyyETRXCAuJuYIzwJxjXUEABrjJncQyhpy8LtJwVEc0jVDQagmAZGCASLMVMXSTiorzQQ//xj9i6gXOIFEPcwGeDMM1a6LAOA1NLgqiDgkOmWOV6YxFD9bdNMikQUI700kqhDZGYoAkGqWcYJrFg0aoqC5hTRcVC3LJN/wDLOzQTb5KIIf8zF4uwh97dlld4J5iLUPXcQQtFn2JlAtGESCALRWVekCFIEKYI71lBpUGl0CuMPpubCUvT4yHcAAAAASUVORK5CYII=", projDmg: !0, uF: [], health: 380, scale: 50, indx: .5, holdOffset: 20, placeOffset: -5 }, { age: 3, group: Kl[1], name: "stone wall", desc: "provides improved protection for your village", req: ["stone", 25, "ez", 0], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAA2RJREFUeF7tmj9v00AYxp9YIopIOkArlXapBGozZa/6CZzr0LoSEgxISLAxAeJbABMjDEhIIBaHIee2HyDqwtSpiRi6pIrUiiEJCqlkI4dYONH5vy9O6Zstynvn9/35eZ9z7pwDfUYEcsThLwECMVYCgSAQk6ZAiiBFkCKECyW1xry0xvb23t3LS/PW4WHte5bPNJkqgjHtN4D8GECHc/1OVjAyAcGYZvkVzLk+87xmfsEgCA6gWcOYGQgvAIVCYVT7YDAQimRWQKSDYEx7B+CZqMrNzU0oijL6yTRNHB0diZe2HD7W6/pjmf4hDQRjWg3Ajij5ra0t35oajYbwd8uyDgyjpsoAIgUEY3s9wCrGgeCM8YIB4Cfn+u20YaQKws8Ig1TgVZgPEFjWoGAYhr0EJ/6kAkIGgOnK/ICkYaiJQKiqdl9R8FV0O8rlMhYXFxPfKfcEFxcXODk58TBU61G9XvsU94KxQKjqznNFUd6KLlqpVLCwsBA6n+Xl5VFsp9MJPabb7eL4+NjDUM1XhvHtdejJxoGxQHi1QlQfWF9fn8i31WpFyt+rXeK0SiogkgKYrj4pkExARIGQz+extrYW6q6fnp5iOByGirWD3OqYWxDFYhGrq6uhi3IHtttt9Pv9wLFzD2LaBwIr8ggIape5BZEWgLD+QSDGpAgEgZhsGlIEKYIUIVxgqTWoNag1qDVsAl6P2uQR5BHkEVfLI5xs0/oXemX/hrtvW6lUwsrKSqytiLOzM/R6vcCxc2uWosz/6606u+Ao+5Z2fFC7BLXBNOTp3exM9izdSSUFkhSAk8ssQbwA8EYk/6wPeAC85FwXHj75GU2scw1nQlXVHigKPosusLGxgaWlpUCTixJwfn6OZrMpHGKaeLi/r3+JMp87NhEIZ6Jrfwg8TV8GENmn4E4NqShCAMQ+kbkpkmlYQ/UB8ItzXfgSSty2sMdJAWFPzJjGAVTjwPCBYHCusyQFe42VBuKff+y+B3JPRAmEfZkMsD5wXnsqA4DU1hAlfO1fL4xiqO7YOA9FSRQjvTWiqCPJk2ESCFLNMkxi1ao2zOVww461LFwahu68oB5meKoxmSjCXUG1unvP/m4YtR+pVhZxssxBRMxXWjiBGKMlEARisstIEaQIUoRw5aHWoNaYFMYfhr/EUpJ56XkAAAAASUVORK5CYII=", health: 900, uF: [], scale: 50, holdOffset: 20, indx: .5, placeOffset: -5 }, { age: 7, group: Kl[1], name: "castle wall", desc: "provides powerful protection for your village", req: ["stone", 35, "ez", 0], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAA6pJREFUeF7tmkFrU0EQxzdRIpik0Ai1pSdFQcGLF8/pNe3BQr+P9fsI9dDm2py9eBEUFD2V1oIpNEnBoE1Z0wfvTfbNzuzOvg24PTabzczv/f+zs/u2ptLfPwK1xGFOIIG4VUICkUAUi0JSRFJEUoRxoUzWWBZr9Hqv9+v1u4PDw3eDmD1NVEX0eruzfPL9/kG0eCr/Ya0ApWpvsKdfq6nB0dHBVpUKqQQEJfmypOv1O1tV2CYoCAqAtY1NNR5dqqvxCBVAaCBBQEDvmzJ88fLVwr8no0v149sXqyNC1BIxEJTk9dNfW9+0JqoHnJ+dqPPTE3SsZC3xBrGzs9e9vv57jEXMAQDn+f71cyW28QaBKcEkf5IcSgZhUHzt4gVie3v3eDZT3Xzc0smXgfv08cPCRz4wvEBANVQFISMAYSwFCFcIq52OajTuqZ9np06uycOIAsJHDVnypszHk5GajMZkKFKqcLZGHsT9Vls9fvrcGnyj0VCrnQfWcXoAVSFRQcAlE7MFJ/kyQjYoRRizt/3++30S7dwgJ0VwbPFwfYMbk3E8BkNCFWwQUA2YLaQgZGTKYCx2oXxVsEHEUIMNhP7cVxVeIGyts7QiLoa/1HQ6NVoHqoK7lLJAwE4SK5LSEPiq4NmDBYJqi2a7pVrNtkiRhJNMp7/VxXBonNvHHs4gHj15pprtFWNAodTAVQXHHmQQVDXoYJcFhI6FCoMEIuaSaZIcZg/XpZQEAp49YqsFto+QLBplPQU8s6CedZJA6ASSNXKPMQ8jxtJpK5bw8JdaH/S8ZEVwVBHSHtg2vcLls/iWKoYqqJsv7gk3SxFQFVjRlNh+w+KKQai0xebYI0Q/QVUDp3/IYDsoomgPTBXSjZX0kplXHBsERxWS9sB2nj5F0lkRcxD0oilhEQwCPIugNlCw/jgpgqMK+INUu9iSz+aFnSSnd/C2hg8I/V1sm47tI0wtuoQt2A0VDITaaWJ7DK0QbvL5+aK/4PFVhcQGTEoNoorIEnN99ccFAyFwO0mxYplNVHYtgPr2iwPA9AY8+75rkfRaPvPBUy6K+ECh3JxxXTJFVg34JE13JeAY2/F/fjwFgB7vqwQxRZikTblPVXb4i8lfygammJ0bKoq3qbZptVesF8eU4r2noMQXxBrYD1OAlH8/LICg1sCgUGpJ6KdfuTVs8vyvL6VDOHPb/Om6XO6wgeZ8HrRYcgKJPTaBuH0CCUQCUTRjUkRSRFKEcYFK1kjWKArjBu9WC2HgRkavAAAAAElFTkSuQmCC", health: 1500, uF: [], scale: 52, holdOffset: 20, indx: .5, placeOffset: -5 }, { age: 1, group: Kl[2], name: "spikes", desc: "damages enemies when they touch them", req: ["wood", 20, "stone", 5], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAABBdJREFUeF7tms1uEzEQx70JLZWQQgFxQCKiHLhFcATlgNpr+iFa8QC8Sds34QFQi/qRaysOERxBuXFAKEgcEFAiIRVKssibWvXOju3xrrMf4JX2knjt8W//Mx6PN2D+iggEnsOEgAdxrgQPwoOIBwWvCK+IkihibW1jC1ux9vZ20N+nvboV5hqdzpMtxoLN+ATD7W73pQfB2H8JYj3E5N7t7hai0kIG7XRwCAJMETByB4HHBqiN/F2kABBxNbTb7YhCr9eL0chbFbmCgC7RarVYo9GIAAwGg+iWrzxh5AZieXn9KAzZopgoB8BByBdURZ6rSC4gVlaeLo7HoyN50sIlYHQoykVyAQFdgqthOBySk8U8XGTqIKBLkGcvNfwnQJhyBiqYacOYmiJo+QJj169OEsxvP8ymBAE7PjzcXaLCs2lnHp3YGxYQsUfv3Rkxfuuuryc19ubdJW0bDiUI6tsHBy+OiSbq+8vSCfWt8zEe3v/DbsyPrYajABEd1mr1pSxQrBVhM3lhZOfxbysAsHH31azV82nUogWxurrxbDQaLyTrBnS7skIQI9nCkC3kagmC8cL+/s5zleVGRZiifrPZZPzmF0yGXEFQwRBJGc9J+v2+9u2YVh0jCN47hIFlhdwQOUnSxYS5y3V26+Ycavj34Rk7GeKuBGOG/BJEZ2n3LEQQybIahEFVw93bV0h+9eHTT7QddBGTHdT9CgkEtwjLEGUjZBAqNVAhCAIYjPcf64zf4lLZwP+3yTvIIDAXEdKEboHFhvnGLLvWmCGpQTT6/OWUnf5K5hyyKoQNaV1CjGUFAoPBt9IwUGEgbNWgUwV0D8wGU3CEbyQFCKwMH+82bxBwUmmSK2sQE1WoYfC9w6MHZwkXcKmI129nlHsTm7ggG5kKBOYiotOiQdi6ROoYIVNUJVtFuUZaCNEKYxXGQWPVjrMIEGnighPXEJ1g8QIDocsmVS9DlWUm9x3Zz0EyKeICRvysQlVzsA2YWEKFbc2zuISTGKGLF6oNFxUGNcV2ASFzjBAgsFih23TpskxVNsnHwtSQNTY4VYRN0MwSnLGaRCVARPlGxuqUAKcqzFQGhAsYuupUqUFgJ1muirfJvrMvnc6CJcwleI0Abs2FxClAYM1BPCsOjuNFoJKD4MZjNQIYLKkHPOraaAVA8EmrlGGzeujLcRUBISac/PbBjAL7hoI/VVrXgPVMXR3RPP1kC/nLGggibf0BjuJkrwFBcH+GnwHhAC5kTf18AJblSg3C9NZ1az/PUsNwtCl/ZqTrr4Ig7IMa5YS9EiBcGWlSiYsdqJMYAUt2rtJezCUwlZQMhL30TbHE9L+AUhoQJoOr8L8T16jCRE02ehDnhDwIDyLuLF4RXhFeEegC4l3Du4Z3DdQ1/gLN32VhHtKeXAAAAABJRU5ErkJggg==", health: 400, uF: [], dmg: 20, scale: 49, id: 6, spritePadding: -23, holdOffset: 8, indx: .5, placeOffset: -5 }, { age: 5, group: Kl[2], name: "greater spikes", uF: [], desc: "damages enemies when they touch them", req: ["wood", 30, "stone", 10], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAABB9JREFUeF7tm89rE0EUx2cT20aEpCoFBYN48Bb0qPQg7TX9gS3+Af4ntv+Jf4C00h+5VjwEPVZy8yASQaGoTUBMrUnkbTJxdjK/Z5xJzSzkkt2dmfeZ75v39s1uguKREkgihwGBCGKohAgigsguClERURETooi1tc2nrIi1v7/zPEQkC+Ya1erjLYSSZ1mj+9u12sutqQIBxlarG33S6FptN9jEBOuYhoCBhIIRBMTq6pOlXq97xHaBMO4RBARPDSFV4R0EDaFcLqf2N5vNjEB8u0hwEIuLiymAer0+PSBWVjaO+n20hC2uVCqoWCyOAISE4U0R9AIJAAAEeTQaDdRut0d/5XL55YODF6985BXeQLDWhlarlRqOVVEqlYKtFV5AyKKEbMZ9LJxKIEDW/X53lA6Tfi4zIsT5JEEjdzo83F1WGYMSCFY6rNK4yjXXSoMs+1tLeSgqzY6uUVWTVu+2EofR3b3dTX+i4+tpDr19d0nLYNbFOoutNxAqAGhj3hzPWClFVQ3QrxYIlovghAgbQecCIP2H98+tZpcFRNavDgRDENk6AqTIOE2m8wAXEDBBGgbZL4Rg6BsfOi6B79FWhEgVtBqqj35ZKYG+ufZ6NvOXy/TcCQiYHZwc4ZHK1HBjoYAuz+Uzhn1vn6PTNh/e+495BD98QL+QhJFqgHO6bmHkGngQsgjCU0NhLo9uLhSEShEBoVVBN2TiFpYgWDXHwbAe3PuNrs/3xoydL86iq8UZJXf5fNJBnbPxMEurItuYeVHHyDVkquCp4c6tK0oQ8EUfPv1gXs9ThYlLWC2Wf0GwVcECoaMG3P7Psy76ctIZg8EGYa4GK9cQqYIFQlcNIlWwQNiowRGIrCp40cIlCDqnMF0gSalZrRHQEF1wCQECITu3cKSI7CYNNDp1rsHetmODYCVQshDCyycmbrHkJVVTFT55aoBZ5j1yq2SVWCU8NYhrFeZrhdFiKd6yG5jCU4VKPsHLKqFdWYptGkaNQNAuAWV5eOgid6tkhRgWEF4ChVVCh02ofruqfDsBwXsc/q8fw2m3IHerQBGkKmSP4rKoQZ5nqQFvENH9muQV2oqg3UJWMnMBY+JKdbIahGiGTYCIH7nletJZOJUVoRIp5EPj1yrIe20B4Lb+CQgbNciUAucvzAYPbOljgy7Sll+S5LdVdtSVXUNF9rxrbNWkI3HTcXoBkWaa1KuEuPIN5/CrAa6SIxMY3kDEF0WI6RHlIPRuFWztq27pmyiAvsebInDHPBgh359yUqHSnY34eqHARWiYPqJEcNcYRBD+LpmLirSuSoO4Bm+tMEmLTQzm3eN9sSQHEj9TGNLIuoh5vdGFMoIqAgxYX99Mv9jZ29sJ8uUOhhgchIvZdNFGBDGkGEFEEFmHioqIioiKYAaZP321OmHR4N2KAAAAAElFTkSuQmCC", health: 500, dmg: 35, scale: 52, id: 7, spritePadding: -23, indx: .5, holdOffset: 8, placeOffset: -5 }, { age: 9, group: Kl[2], uF: [], name: "poison spikes", desc: "poisons enemies when they touch them", req: ["wood", 35, "stone", 15], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAABEJJREFUeF7tm01rE0EYx2ezpkkUklopKLWIoLeiR8WDtNf0BVv8AH4T22/iB5BW+pJrxYPoUelNQUSLQrE2AU1iTVZmN7Pdmc77TmcSOwu9dF9m5jf/53n+O7MJgD9iAoHnkBDwIAZK8CA8CDwpeEV4RQyJIhYXV57QKtbW1vozF5XMWWjU649WAQie4oOO1hqNF6vnCgQcbL2+HGUH3WhsOJsYZw2TEBAQVzCcgFhYeDzb7/d26SHgJjycgGCpwaUqrIMgIUxMF+PxH345xgRiO0Scg7j14GIM4OPr3+cHxPz88m4UgVk04qmZEqhUwxSASxjWFEEmyEq1AKZmypgK9vc6oN3qp/8rFMK57e3nL234CmsgaLmh3ezFA4dQ4FGphc5yhRUQoiohmnEbiVMKBJR1FPVSO5yNc9EgXJwPApCG087OxpxMH6RA0OywzMNlrpmoJS77sCndFZnHptfIqkmp9bwSh727faMX//GOH0cF8Pb9BaUB0y5WSbbWQMgAIAfz5l0xl1Jk1QDbVQJBCxFkiNAgSC8ApX//Lu4aVaeaBkTUrgoETRD4OgK0yMgmkz7ABAQEjYSRbbfd6oH9vW4u/6GsCJ4qSDXUH/5RnXzu9Y1XY9h5k/bcCAg4O8gcoZ6K1HB1sgwqpRN7De/72ToGRy02vA+fQwD/0jami6BSK2BqgOdUw0IrNFAnRBWEpYZyKQTXJnFrTcqAB4RUBXmvSqXI3quliCQ8aGuOyaPv3fkLroyfvDOgBserY+ByNXntFh3fDjqg0z1dZklV4M/RX9TRBkHLFalaGLnh5vVLovFj5z99/UW9nqUKnZBADeQEQVcFLSxU1IA61+72wPeDzikYdBD6asiVI3i5ggZCVQ3o+TRV0EDkUYMhEISvYBgokyBIT6GbII0kS/QQcsGFVTbPEgQA+cLCkCLwTZo4iVKSpUkQQxcarBJKA0EzUKISwvITQ5csWaaKZaZUVTES5ZNnqFiv3DKuEqmEpQb+WoV+rtDyEfwtu2QoLFXI+AmWq4TPFVls3TKqBYIMCbg/0W72sRVo0UIMDQjLQCGVkGUTrn6bWvk2AoL1Ovxfv4aTYZHdrYL7l9k9TNGruKhqZM/T1IA2iMh2dXyFsiLIsBAtmZmAMXRLdaI1CN4M6wDhv3KL9aSSOKUVIVMpxF1jr1Vk780LAD3rTEDkUYNIKfD8yGzwwC19NKBR2vILgnBNZkddOjRkZM+6Jq+aVCSu208rIGKnSXxKiFa+4Tn0aYApc6QDwxoI/6FIZnp4HoTcrYJb+7Jb+joKIO+xpgjUMAuGy++njKxQqc6G/7yQEyIkTBtVwnloJBWEvUtmYkVaVaVOQoOVK3Rssc6AWfdYT5bZjvifKQxo4CGiv95oQhlOFQEHsLS0Ev9iZ3Nz3ckvdxBE5yBMzKaJZ3gQA4oehAeBB5RXhFeEVwS1yPwDNX06YQXmnr8AAAAASUVORK5CYII=", health: 600, dmg: 30, pDmg: 5, id: 8, scale: 52, spritePadding: -23, holdOffset: 8, indx: .5, placeOffset: -5 }, { age: 9, group: Kl[2], name: "spinning spikes", desc: "damages enemies when they touch them", req: ["wood", 30, "stone", 20], health: 500, uF: [], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAABB9JREFUeF7tm89rE0EUx2cT20aEpCoFBYN48Bb0qPQg7TX9gS3+Af4ntv+Jf4C00h+5VjwEPVZy8yASQaGoTUBMrUnkbTJxdjK/Z5xJzSzkkt2dmfeZ75v39s1uguKREkgihwGBCGKohAgigsguClERURETooi1tc2nrIi1v7/zPEQkC+Ya1erjLYSSZ1mj+9u12sutqQIBxlarG33S6FptN9jEBOuYhoCBhIIRBMTq6pOlXq97xHaBMO4RBARPDSFV4R0EDaFcLqf2N5vNjEB8u0hwEIuLiymAer0+PSBWVjaO+n20hC2uVCqoWCyOAISE4U0R9AIJAAAEeTQaDdRut0d/5XL55YODF6985BXeQLDWhlarlRqOVVEqlYKtFV5AyKKEbMZ9LJxKIEDW/X53lA6Tfi4zIsT5JEEjdzo83F1WGYMSCFY6rNK4yjXXSoMs+1tLeSgqzY6uUVWTVu+2EofR3b3dTX+i4+tpDr19d0nLYNbFOoutNxAqAGhj3hzPWClFVQ3QrxYIlovghAgbQecCIP2H98+tZpcFRNavDgRDENk6AqTIOE2m8wAXEDBBGgbZL4Rg6BsfOi6B79FWhEgVtBqqj35ZKYG+ufZ6NvOXy/TcCQiYHZwc4ZHK1HBjoYAuz+Uzhn1vn6PTNh/e+495BD98QL+QhJFqgHO6bmHkGngQsgjCU0NhLo9uLhSEShEBoVVBN2TiFpYgWDXHwbAe3PuNrs/3xoydL86iq8UZJXf5fNJBnbPxMEurItuYeVHHyDVkquCp4c6tK0oQ8EUfPv1gXs9ThYlLWC2Wf0GwVcECoaMG3P7Psy76ctIZg8EGYa4GK9cQqYIFQlcNIlWwQNiowRGIrCp40cIlCDqnMF0gSalZrRHQEF1wCQECITu3cKSI7CYNNDp1rsHetmODYCVQshDCyycmbrHkJVVTFT55aoBZ5j1yq2SVWCU8NYhrFeZrhdFiKd6yG5jCU4VKPsHLKqFdWYptGkaNQNAuAWV5eOgid6tkhRgWEF4ChVVCh02ofruqfDsBwXsc/q8fw2m3IHerQBGkKmSP4rKoQZ5nqQFvENH9muQV2oqg3UJWMnMBY+JKdbIahGiGTYCIH7nletJZOJUVoRIp5EPj1yrIe20B4Lb+CQgbNciUAucvzAYPbOljgy7Sll+S5LdVdtSVXUNF9rxrbNWkI3HTcXoBkWaa1KuEuPIN5/CrAa6SIxMY3kDEF0WI6RHlIPRuFWztq27pmyiAvsebInDHPBgh359yUqHSnY34eqHARWiYPqJEcNcYRBD+LpmLirSuSoO4Bm+tMEmLTQzm3eN9sSQHEj9TGNLIuoh5vdGFMoIqAgxYX99Mv9jZ29sJ8uUOhhgchIvZdNFGBDGkGEFEEFmHioqIioiKYAaZP321OmHR4N2KAAAAAElFTkSuQmCC", dmg: 45, turnSpeed: .0015, scale: 52, id: 9, spritePadding: -23, holdOffset: 8, indx: .5, placeOffset: -5 }, { group: Kl[3], name: "windmill", desc: "generates gold over time", req: ["wood", 50, "stone", 10], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAudJREFUeF7tm79v00AUx5+TwFaxgVQGJsaO7YgSicktUYuYUP+D/hFN/oj+B4gJkSgkniolYmzHjEwMIMGG2CCJq3Ps5OzcD5/vXRw5z1Imn+/H577v3r13Fw/oiQh4xGFJgEDESiAQBCK9KJAiSBElKaLdftsp4qEGg8+FvjNta2um4fsXoWnnWPkg6G2lj1tphA2IQMQy4EE8OVDz//N3LZ5KK4KBuHzTEFrKhy8zIBAAQCBifRAIApFeKkgRVVeEaP9g4jUSvbh2o043VLJNVBEQDEitVm8Nh58mRXaoum+cgPD98w6Ady1rvCiIZX1hNwj66PEHOojT04txGEJTNQN2IAA8DyajUa+lm2WT96ggREp4+WIO7Bd8fbzqlwkI/9U/+Pa9Hv3SD64y0ECcnb1rLhbzMd9ZNojVYmcBQlQHdmSKBiK7MPIQok4LQNxN5/Dz1zLAOnzmwclRfWOLraoHEwYKiCyExBx4dfAgTGw3C0JkJhiu1QmIbOezirABIarLOQiWXpvNQqkbNBlQ2WUbDa+rSvspFeEShEg1NsrRgd5JEDIIMu+gG2Se92ggdOk1WWf4bBMro4Mgg2HbPioIWXpNNSM3H/+vXueFIIJx9f5RnolPleFD+lJBsH3C/XSBAuL4qBbtM0yenQHRv53Bj9/rjLSNIp4/9eD8tTjhK4NDIGIyOwOCTIPTaiUXS5OFKilbOfdZBILsG92iWTRAU/URzX1iglBtrFxAYO3tLAhssLr6rEDoKk/e65IyNsFUnpDeeRheFMTeJmYim8/ciNnLVF0eE7HJYssiUswDH5RU3RrE5sHO3qXzExh0wMOtrHTkx8EQHfgkr01OunjPheEmZZ4QdY0QNULXAjJUstcL6VYdAJiYhktz4OfKuWmI9hgEIqZCIAhEOhYhRXCKUEW2e3MXO294H+Ux6P8aS1yVA0F/ZTKxgxLLbm1DVeIYczVNIGJMBIJApC2GFEGKSCviAbuwhmEKe216AAAAAElFTkSuQmCC", health: 400, stop: true, pps: 1, uF: [], turnSpeed: .0016, spritePadding: 25, iconLineMult: 12, indx: 2, scale: 45, holdOffset: 20, placeOffset: 5 }, { age: 5, pre: 1, group: Kl[3], name: "faster windmill", uF: [], stop: true, desc: "generates more gold over time", req: ["wood", 60, "stone", 20], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAudJREFUeF7tm79v00AUx5+TwFaxgVQGJsaO7YgSicktUYuYUP+D/hFN/oj+B4gJkSgkniolYmzHjEwMIMGG2CCJq3Ps5OzcD5/vXRw5z1Imn+/H577v3r13Fw/oiQh4xGFJgEDESiAQBCK9KJAiSBElKaLdftsp4qEGg8+FvjNta2um4fsXoWnnWPkg6G2lj1tphA2IQMQy4EE8OVDz//N3LZ5KK4KBuHzTEFrKhy8zIBAAQCBifRAIApFeKkgRVVeEaP9g4jUSvbh2o043VLJNVBEQDEitVm8Nh58mRXaoum+cgPD98w6Ady1rvCiIZX1hNwj66PEHOojT04txGEJTNQN2IAA8DyajUa+lm2WT96ggREp4+WIO7Bd8fbzqlwkI/9U/+Pa9Hv3SD64y0ECcnb1rLhbzMd9ZNojVYmcBQlQHdmSKBiK7MPIQok4LQNxN5/Dz1zLAOnzmwclRfWOLraoHEwYKiCyExBx4dfAgTGw3C0JkJhiu1QmIbOezirABIarLOQiWXpvNQqkbNBlQ2WUbDa+rSvspFeEShEg1NsrRgd5JEDIIMu+gG2Se92ggdOk1WWf4bBMro4Mgg2HbPioIWXpNNSM3H/+vXueFIIJx9f5RnolPleFD+lJBsH3C/XSBAuL4qBbtM0yenQHRv53Bj9/rjLSNIp4/9eD8tTjhK4NDIGIyOwOCTIPTaiUXS5OFKilbOfdZBILsG92iWTRAU/URzX1iglBtrFxAYO3tLAhssLr6rEDoKk/e65IyNsFUnpDeeRheFMTeJmYim8/ciNnLVF0eE7HJYssiUswDH5RU3RrE5sHO3qXzExh0wMOtrHTkx8EQHfgkr01OunjPheEmZZ4QdY0QNULXAjJUstcL6VYdAJiYhktz4OfKuWmI9hgEIqZCIAhEOhYhRXCKUEW2e3MXO294H+Ux6P8aS1yVA0F/ZTKxgxLLbm1DVeIYczVNIGJMBIJApC2GFEGKSCviAbuwhmEKe216AAAAAElFTkSuQmCC", health: 500, pps: 1.5, turnSpeed: .0025, spritePadding: 25, iconLineMult: 12, index: 2, scale: 47, holdOffset: 20, placeOffset: 5 }, { age: 8, group: Kl[3], name: "power mill", uF: [], stop: true, desc: "generates more gold over time", req: ["wood", 100, "stone", 50], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAudJREFUeF7tm79v00AUx5+TwFaxgVQGJsaO7YgSicktUYuYUP+D/hFN/oj+B4gJkSgkniolYmzHjEwMIMGG2CCJq3Ps5OzcD5/vXRw5z1Imn+/H577v3r13Fw/oiQh4xGFJgEDESiAQBCK9KJAiSBElKaLdftsp4qEGg8+FvjNta2um4fsXoWnnWPkg6G2lj1tphA2IQMQy4EE8OVDz//N3LZ5KK4KBuHzTEFrKhy8zIBAAQCBifRAIApFeKkgRVVeEaP9g4jUSvbh2o043VLJNVBEQDEitVm8Nh58mRXaoum+cgPD98w6Ady1rvCiIZX1hNwj66PEHOojT04txGEJTNQN2IAA8DyajUa+lm2WT96ggREp4+WIO7Bd8fbzqlwkI/9U/+Pa9Hv3SD64y0ECcnb1rLhbzMd9ZNojVYmcBQlQHdmSKBiK7MPIQok4LQNxN5/Dz1zLAOnzmwclRfWOLraoHEwYKiCyExBx4dfAgTGw3C0JkJhiu1QmIbOezirABIarLOQiWXpvNQqkbNBlQ2WUbDa+rSvspFeEShEg1NsrRgd5JEDIIMu+gG2Se92ggdOk1WWf4bBMro4Mgg2HbPioIWXpNNSM3H/+vXueFIIJx9f5RnolPleFD+lJBsH3C/XSBAuL4qBbtM0yenQHRv53Bj9/rjLSNIp4/9eD8tTjhK4NDIGIyOwOCTIPTaiUXS5OFKilbOfdZBILsG92iWTRAU/URzX1iglBtrFxAYO3tLAhssLr6rEDoKk/e65IyNsFUnpDeeRheFMTeJmYim8/ciNnLVF0eE7HJYssiUswDH5RU3RrE5sHO3qXzExh0wMOtrHTkx8EQHfgkr01OunjPheEmZZ4QdY0QNULXAjJUstcL6VYdAJiYhktz4OfKuWmI9hgEIqZCIAhEOhYhRXCKUEW2e3MXO294H+Ux6P8aS1yVA0F/ZTKxgxLLbm1DVeIYczVNIGJMBIJApC2GFEGKSCviAbuwhmEKe216AAAAAElFTkSuQmCC", health: 800, pps: 2, turnSpeed: .005, spritePadding: 25, iconLineMult: 12, indx: 2, scale: 47, holdOffset: 20, placeOffset: 5 }, { age: 5, group: Kl[4], type: 2, uF: [], name: "mine", desc: "allows you to mine stone", req: ["wood", 20, "stone", 100], iconLineMult: 12, url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAABypJREFUeF7tml1MU2cYx/98FwoojK8WRapeiMigbBoj02r8QA5zybLIYozbjVmW7XK7dRfb4tV2uZtlu8FEM8yyZMpBJToZSjRurWYi3iDIoOXDSAIUyvfyf9dD2nIOAXpK2+S8N1zQc/o+v/6fj/d5nwQYSxBIMDj8T8AA4VeCAcIAERwUDEUYijAUoZooDdcwXCO2XCMRQIq/npkBsBCtAi9arkEAZsD0VnW1/UJ2drbt7t2284DvEQBvNIBEA4QJMFkBHJCkukuBCpDllo+BxfvA9ACAaQCLG6WQjQSRBCATSKuRJKl5JQNlWX4XmL4PYBzA/EbA2AgQKYD5DWCuSpKkltUa5fV6+9va2j4Bkl2AdyTSQCIJgnHABKRX2u2VFy0Wy2E1CNPT01hcXITJZFJlNDjo+cPpdH4GzPQBmIqUu0QKRCqQXgjM75Wk+l+1VJCXl4eioiLx78HBQbx69UpTMLLc/D6Q9BcwNQyAGUbXpTeIpWxQVVX5jdVqfUdtt1TA9u3bkZ+fj6Qkhg5gfn4ew8PD6OnpQUKC+ra8Xm9fW9ufHwG+vwFM6pld9AKRCGTlALMVdnvl1xaL9aAagIWFBezevRvZ2dkCQKjBBEQgY2NjePbsGRITyXX58gM5B6R0AuOjegAJFwSfTwNMFput9IuysrLP1TY+MzODbdu2CQWYzWbNX1x5lkAmJycxNDSEgYGBJdWEvrurq+uHnp7e7wDfYLjpNhwQzAa5wFylJEk3tRx206ZN2LJlCzIzM8UvrCX70OcVdXi9XnR1dYFq0lAHs8t5IPkx4H0NYHY9wWO9INKA1Pckqb5J60spfwLgXzWJ09DZ2VlMTU0JOMwaKSkpqqDm5uZAIH19fRgfZ2mhvmS5+UNg5ncAvrXCWA+IBCAzT5KOM3ovW9z0rl27kJOTg+Tk5CDDaDx/WQJgHOjt7cXZs2fFO65cuYLS0lKhnNTU1GXw+CzfPTo6KhRCaGpLllsLgQnWHWuqStcJIsMiSbUsg4NWbm4uiouLRRwIVIECgDUDMwMD4smTJ1UNaWxshNVqRUFBwRKQQHciSKqDseP1a3pC8JLlm8XApCdqIMrLy5GVlbUEQDGem+aGVzJeS8YrQSEQuklnZ2fQ41EHYbfbkZ6eLjal+PTIyAgqKipErAhnuVwuoSQWYFSbUnswvvB/gStmQFAJBFBTUxOO7ZrPdnR0CCB0l5gHweh+7NixiIBobW0VNUnMg6D1PDccPKhaXIYNp729fel8EtOKoKVMcfv27QvbaLUXPHz4EMxOXDEPYmJiQpTT4QbJUBD9/f0i/rDWiAsQrBeY52tra3VVxY0bNwTctLS0+ADB9Pn06VOcPn1aVxBXr17Fnj17RMUaF4pg8dTd3Y36+npdQVy/fh07d+6MjzqClrPqc7vdOHLkiK4g7ty5I0p4pXyP+WDJoopl9f79+3UF8eDBA5ExlLNHzIOg9TwH8OCkZ+ZwOp0iY8QVCP5aDJrV1dW6qIIQGCSV80xcBEtukgGTpfaJEyd0AcHSeuvWrUFtu7hwDaUDxSZsuGn01q1bIkiGdrDiAgRlQBgsrlgR1tXVrUsZLS0tonOl1vWOSRC8p+DxWG3DTKcsu1lbNDQ0rApIU1MTduzYsdT0DXxIaezyQujFixdB74t6P4K70WrVKerw+Xyio3TmzJkVYVy+fFlUkGzohna9Y6xVl5kvSceH1KxhY7asrEyzeUs5M4ieOnVKFca1a9dEUMzIyFjW+FWat8+fP18qs0NfIsutBcAE7w4j3rzld5v87fxftH5a9i9LSkqC+piKMmiQx+PB0aNHgx6/ffu26DWEBkV+nq7FWMPut9aS5eYGfzufsxVrWuvpYitfoFzwVDkcjp/MZrNqY1K54FF6jYrU6efsW1AdPLKzPti8efOy5i8BrHTBw83IslwLJD+JxgWPAkO58iuy2Uq/1LryY03B9FdYWBgkefo7/8fFIKucIQiJ3W/2Hl6+fCna+mrLf+X3PeBj+z6sCZtwFBG4N+USuNzhOHTJbDaXqG1cr0tgj8fd7nI9+QpI+SdWLoFD7eX1dQaHxByOQ41aQPiL22w2cRYJHAugApgOte5H3W73vcePn1zwjwXoOnSmlyJCgXBQpACYf1uS6n/TilprHBT5AEh6BEwxW8X8oEigzYScDqS/WV1debGoyKLanGBtQQUo7bdQaB6P567L5foUmP7Xf7kbkVnMSCki0B5lmMzucDh+1MouaqqRZbnOf90f18NkobZxRigLSDuwivHCev944USkp+kC09+aCo8wP6ykWw6c1khSXWPg+2S55RyADsDnXs+MQzh72wjXUNufMnS29/Bhx89jY2PdTqfr20hkg9XCiRYIZX8EwmqJ5wKO/EQkEK4GRrRBrGaPG/IZA4QfswHCABHscYYiDEUYilDNQoZrGK5huIaqa/wH4HLecO4SZnEAAAAASUVORK5CYII=", scale: 65, indx: .5, holdOffset: 20, placeOffset: 0 }, { age: 5, group: Kl[11], type: 0, uF: [], name: "sapling", desc: "allows you to farm wood", req: ["wood", 150], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAACIdJREFUeF7tm/tTlNcZx7/v7rIXFlBQQFgQUINCYomYiumEoiZaONDOrDNtxhr1lzbJ9Mf+If2lM51O219i0smkTtyZBs6SpiYSTb3ULAlaryRCXITlKruwN/bSOXt7L7wL++4F0ul7ZhyX9ZzzPs/nPM9znud5kYM6YgQ4lUOcgAoiYQkqCBWEOCioFqFahGoRshel6hqqa3y/XIMDDN0AwkDgEwDRzUrwNtk1THWEdD9hylM6uBPwxT5vxthEECYLId1OodKUDtYBvon/JxB6QqwBOYUptRkABDcaxmZYhL6xsfn3ra3Pvymn7NTU1CWH4xrZaBgbDYID9K8T0vv+WidO6cApIPjBRgbPjQTBAUUvEdJ3UwihqnUGkUgUs/erRGwo7T8ErNzaKBgbCMLYQEjPmNQSjp7VxL767HxklZFQam8C/KvWFCJ+5AKC5QDNgKYCgBaIGuMCRpOf2d7sjwnQaAnpOS9VoPMUB4NJG/s66Avj8/dXpxGU2s8CEUbJB4D9HQU4P8CF4/uxzywPicwDgYfZWlAuILSEWEPZns4haxhl5eyC4Id7IYCbtjiYbAalNl0civKRC4iMAp+cSK3HvKhtLJOV9umYG3c/LVasCaUDbwDBvypemFiQCwgARW2E9H2l5OGWtjnsa68Cx8k/OhqN4r5jGhNfb1OyLSgdaAOCI4oWCSbnCALlhFjnhQ9vObIMnZ43b62OA9OZAxf7vnSrIfZzcoRD8SCp1cWDJhvRKOB5FkAoGEY0UX6EVvj4wb6/d9ks0plSG4tVC5sFYlWGeOycFhptZnzZ6T8YmcX8lBcvn9iZ1kqkyjF40luGUpsewMpmgeAIsYruvR/9IorikqJ15WGn/uDrGbzS0xCbe9U+jr1t2zOC4V1awb/+JoZNqY2ZVNbVa2ZHt6ZahrcIIX9MTtl/wo/qupJ1QUyOe7D/cLVo3u3rLtQ0lK671uVcwu1/JG7rWOVqfwvw/2ndhWtMyAOIohcJ6RtOPmPr7kkc/HF9Kg4w85947MbinA+RxHmt+EM48XqzrFgff/AQeiO7BQENx2HLNiMsTWUiS3F87sT86I7Uekr7DwIrjk0GUbqdkNdmUsGP8+L4uVJoNHHGkXAUVXXiwKZU4GnncirusHT8k3c80Eb5K5bSf1YCnlml+wrn58EisCpgCjNGFgtuXPoOfWf2ZSXnR+fv4/BrLJDGl8tloPko3fMCwmLZ9WFbW1tfUtP2viAqqvgT+270Gdo7a7MC4bjyFDv3bE2tnXd54RhgF0R8OJ1PHCMjt17OtWzPFQSrN94mhPxBqOXBnwZRXsmDWHYH0bCXV0YJkfEHz2Au4xVfmPHiy4/4n9lelNK3gQALlpt1axj2EEIeCRWrfn4GLxzaIQpuOYF4uAhzKX8ds+B75+YUXP+pFPGklD4HBEaVQM5TjOAbr6lAqZvH8TcqU4Ey6dO1u9a/EtdS4Om3HugTVWosALOA+d4MtCGWTPKD0sF6wCfqg2YKJlvXKCLEuqqvKE2mWKC8P+xCZ29TpvLIzrvS/xj72qtFqblcUhV3k+wyzGxAaAHDm9K4IC2rGYSxB/P44dG6nCAkF//7Myca91aIYLB65MZFcdmeiBd/UVqOZwHC2EVIz2VpXNjfUSNSWJpC50rji8FxNP+gUgSC7Xn7xqRMvLAfAfxDSp6pEMTquKCrHEdnT5OoehQKwO79b+7NobO3UYlcqblXBsawq2VbqpMl3YQVYFfsjxGaidcsyaE0XigBUUyIdVlOG82WKXScqI4VW3JtBmYdzKeH+r/B2d+2ZwTk/O8c6OrdheJSffo9PUFcp25EvfJXM6U2doezFt+6QwkIPaDvJaT3YrpdI5wPHT/ToazCKFtFTj3x4IVD4kIr3V53brqwo371bcNuDPe8H9f63SiKpG/eUDpwEggOZJpoKQHBZOYAcxUQOikNlkKF0lmIbzmE+j3yLTopkCejbpjM8eKLjZhVrWMBbB6l9DeA7iKwPK0kwVIKQijvFkB/nJDeC+lOldP7cex0Scq02WlWWcQF2PDVSYTDEbzUZRFtMz2xnMpHGITLF+YQXtqS1sQpHfg5EGRv1BfX9QOZCbmAyMhC2HuLZBuOKeRyxt3j1tAELA1lKDLEr7+VYBgTY+4YENfEErQavnUn15Hig2J2FiBlkSuIdS2k42Q41qdMDqYUp+FE2adwE2Y1rGIQtvs8iwHc+FCaL+RmAYUEkbAQ42lCet5NPmjPKx40NpdnY62pNWMPFzB6lQ+clNrPAH7Wus+6yCo0CACG3YQQvvgxLuDVU+l7kaFEF1sn6GILhWRF1qcXnIgu8QkbpfbdgP/bnOhKFufTNZJblxBi9Qifc+SMBroi3ufZvzEA086l1MuclqPeWK9TOo/FjqH3xAdPqY2Zx9L3HYTmwIHDl2pqao4kBU32J1iw9HtDeHR7BtN3xWV0cm7N/jk0tVTAZI4nZwuzPnz5d74Mn5ycvDw8fP3VxHvQvLEohEUw9+gmhNiTUtYfXEDDc+V4dGcWrjvbMxLe8uI8mvZVgMUHp4OPMZTSHiAwmNEmCiYVCERxDSE/eapAjrRTl32LMJv4/IHSj2sB72Q+9hbuUSAQMBJizSjHj7fidXpCuq9lohylNhMA9qsAeR2FArHqDZhQ6rifj5wGvC5B30ADmGoPHGh7VxhfpNrm+kYrHb1CgQBg/BUhPX+WABgaHv7qHOBn7bR0v8egBUw1XV2dX5jN5p3C9ZTafw34WdMl76OAIPQthPTeZRJTOvBLIEgBuBUkQUy2EsBoJaTnncQ+rUDwXt4pFPi/MpkAQxcQYL6vBIBUTwakDDB0AIGrALz/ayAKIW/B9iygaxRM5oJsrIJIYFVBqCDEHqZahGoRqkXI3jqqa6iuobqG6hprpaT/Bagy/2FMRPJUAAAAAElFTkSuQmCC", iconLineMult: 12, colDiv: .5, scale: 110, indx: .5, holdOffset: 50, placeOffset: -15 }, { age: 4, group: Kl[5], name: "pit trap", uF: [], desc: "pit that traps enemies if they walk over it", req: ["wood", 30, "stone", 30], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAA4hJREFUeF7tms1r1EAYxp8EldL6WT+qV70UFapUQUR7zqaHNgVBD4KgN08q/hfqyaMeBEHxkvWwk9pjFRF00YKKF8+yftSvttRmSWR3szUbJp+T2Wztu7dlZybz/vK8z8y+Mwro0ySgEIcWAQLhKYFAEIhOUyBFkCJIEdyFklKjV1JjfHxqv207O2ZmytUi9zSFKkLXjT8ANnkAaoyZe4uCUQgIXTfcqIAZM7s+r64/MA5CG1C3YXQNRBiA/r6WOJaW+VPpFhDpIHTduA3gMi8VtFMrUNXWL44DTD9r20VgjVdwr1IxL8j0D2kgdN0oA5jgTV4fW4mMic3ygbiu+8SyypoMIFJA6PrUAuAOZIGw6hEhMAB8Z8wczBtGriCijDBOBWGBhamj0d51l/ssy2oswcKfXEDIABCMLApIHoYqBELTjDOqike81zF6sI6hXY7wm/IPUPuqovp+A/+/guKer1TK97M+MBMITZu4oqrqLd5DTx6xsX1r5H6po9vch1ZgI8P1xDH8+KXg+ZuN3Pau61y3rMc3Eg/mNcwEIiwV0vpAUO6i/VeNNsPONBcQeQXQDkR0vCyeIQwizaQXlhTMvuJLOijlsWM2NvcnTzG/unoWxJd5FS/f8k0uLpePH65j92C86fY8iKhlLw6C//c45fUsiLwABGGFASEQHikCQSA6k4YUQYogRXBXXUoNSg1KDUqNBgHaWXo6IBAEotMS1pwiVstm4ecTaf6Fh3oD7zk9W5ipfVNRfZetMDN6qI6hnf9BYcb/2n8vKnhaTVaqOz1qY8vAGirVRS1pYdqPK9rEVaOC4wbHKyQ10pTT4gIQBVBEOf8qgJu8N35ixMbgtuSSznLAM/9TwYu50BS7xpjJPXyKcudM5fz2gJpmnFVVPOA94OhwHfv2xJtcmqXj02cVr72TsWA/x8G56WnzYZrx/G2FQLQHWveHwEH6MoDIPgVvx5CLIjhAFgH082Sa1BAjACwxZnIvoWRNi0Y/KSCaS6puMAClLDAiIFiMmbpIwGF9pYH45x+TdwDlIm8CSS+TAe5dxsqXZACQmhpcFYRcMl031wvTGKq/bZbdoYhipKdGGnWI7AxFIEg1yyQTK5WMFUVBc4vourAty+RfsEwymGCbQhThn3OpNHmg8d2yyh8FYxHqXjgIodnn2JlAeDAJBIHozCtSBCmCFMFdayg1KDU6hfEXXvzCUuiEamMAAAAASUVORK5CYII=", trap: !0, ignoreCollision: !0, hideFromEnemy: !0, health: 500, colDiv: .2, scale: 50, indx: 0, holdOffset: 20, placeOffset: -5 }, { age: 4, group: Kl[6], name: "boost pad", uF: [], desc: "provides boost when stepped on", req: ["stone", 20, "wood", 5], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAZ5JREFUeF7tmktOAkEQhhvQI3AGiSzcsTLxDCYeqA9k4hlIWLFzIeIZOIL4CNhDMmMDXVPz6NKPJel59DffX12TnoHjtycwgMMPAUAEEwABiHJRwAiMwIjoQkk0iAbR0EfDez+01Il67z9T71dUI3Yglsvnj9ST9zluNrsZAcI5B4igYacgribTPu3/de239cvhP0BghHMYESwABCDK9RIjMAIjov0L0fgL0RiPv9xmI3r3O9rNmjbi4f59P7HHp0t1u24WRAGhIKCFYRLELhJ3t9uSBfPFhSomJkFUbWjCCnMgYjb8SxDHbNDCMGXEKRsKEKvXoVutR+JVxAyIFAgaK8yAOBeJqgLS5RQQllpsqQ11IpK9EZLaUI2HpHBmD6KuDVIrsgahhSCBkS0ITSTqRCRbENeTZveLzzVZ2YIQt4bKAwBhqY9QPuykwzECI9jXYF/jVLGgRlAjMqkRSWtaT4M6/YaqpzkmXRYQAVPrIJIeRyaDWvvyNpP5tXIbzezHt3Jr3Z4UEIE3IABRjh5GYARGRJcjokE0iEY0Gt/OdwVhhTbZ6QAAAABJRU5ErkJggg==", ignoreCollision: !0, boostSpeed: 1.5, health: 150, colDiv: .7, scale: 45, indx: 0, holdOffset: 20, placeOffset: -5 }, { age: 7, group: Kl[7], doUpdate: !0, uF: [], name: "turret", desc: "defensive structure that shoots at enemies", req: ["wood", 200, "stone", 150], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAABBlJREFUeF7tmj1vE0EQhufsJBUyiBRUCRUSEhYUFKBIoKTMJUUs8X+S/BokBHKK+FImQiiCggIUlIIKuaIIAosqxD40ttfeG8/e3u7NWRHsSZYL3349+847++EIwjMkEAUOIwIBxFgJAUQAkTWFoIigiKAINlFWFhqbmzvtKKq/lE7PSfLmlXSdlabPEYhoR7LTaZoeHB0dtCTrVHVVrIgAAoIixlqjINbW1rwUfXp6Oin3T4TGfwsijlvnAHBfTacEiCiCd51O+5mXtCyFKjHLOG6ltF0JEKrOJGmL91u8Qg4CDkASRBTBSafT3pBUhhiION7ZA4h2TZ2TBDFtI91PkoM9CSAiIDgIS4sAl3+mXZQAQesc1S4DQwhE1hPu3e1D73cE3y9qExISIO4sD6BxI4Wv3+oZEUh4RmkQW1ut4zSFdb1n8fNL+PhlgQXR7XYBP6an0WjA6uoq4Dc++joCQTx+cAXJ26WZ4mVhlAJBjRGVgB98KAiJOFYgsC5UhaQyvEFsb79YHwz6x2qAt2+m8PTR1BSqBoHtvv+0CD9+6UPw9wtvEFQNGA76YwOxsrIC+NGfXq8HZ2dnRvHoipisKUiY+IaIFwiqhicPr2D51iAzgNnZGv1c1DR1b1AVcyBoiNRq9Y3Dw9cnrqHoBcKmBuwENTROAbbOojpQJdSIaTnalo8qnEFQNWCnaFjQjmEGaDabtnGzv3NZxtaejyqcQdB0yYUFBVE0HEykaJhQELMZxN00nUHYwuLiZw0+fF6YjKksBFWRDkNP01KmKQ6CmmQVIIqEo6tPlAJB1w7UJNEX1ArRyyC0QtQraHjQCZgrCJtEpdTAhYfNJwKIMbUAIoDIbsLmqgibWfqsJk2mSvch18osi6QxKcPU1xG2CRhmL8cD3lLpkwNBV3lVgCiymp0DiOwhrS2Fuuw4fZfYdDXrc8rtrAifTVcZryiyA6V7m7lsuobhQC5wqHFx23CfHWiRnSfXlmtYYB3OisBCVBVceHAddAkT7mCG8wYaFj5q8AZRVBXcAavyAW4fknfCXRS2jxpKgsiaJpfSsAE6Yz6bLy70sB660fJVQykQnCpMs2YKkyJQTBCuzXG+GgR36WvqvFIIDiJ7DJ9FkgeUg+qTLukkeJklrSTvoqfIrLu8I60E1bYQiNmbcJNnuAyavstfEbifT3J9EAEx8gv+bwFcynOFYc4+MhBKmyU3IO5SWL3nAiUv9Q59wnFTZYMvpgi9IdO/ZvR3MHTo7Rim2jwTVeWlIVSiCNVZbk9imxX773KhUEnWyBuABJAyCyU73NEblYQG1zgCSdP+Lv1Tibmj6X6ttnDic6FbdPD6e3MD4dO5eZYJIMa0A4gAIht4QRFBEUERbDIKoRFCI4RGCI28lWrwiDGdv3AZkWGMex2dAAAAAElFTkSuQmCC", health: 800, stop: true, projectile: 1, shootRange: 700, shootRate: 2200, scale: 43, index: 2, holdOffset: 20, placeOffset: -5 }, { age: 7, group: Kl[8], name: "platform", uF: [], desc: "platform to shoot over walls and cross over water", req: ["wood", 20], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAVtJREFUeF7tmkEOwVAURV9jQJiIHZiYGhoa64gFSOzAWsQGxAbMiKHYhYlVSEyU/PqhX59qI5o2jmH9tq/Hve/d1PeET0jAg8OdACCsEgABCLcpoAgUgSLUQYk1sAbWwBpJKTpzj/D90bUMsXy9XmV6tkyLDQBAWBkAQgEx6NdUl2z3ZwmC51fv1m12Z+f8NOtaTU963ap63+j1crWGKbzTrsSKmi9PDojppKEWPlucnONp1hkQ42E9dr3D8SKAEBFAWG0AAhBum0ARKAJFMD6NBsgR1gmAAIRINIqjCBSBIh5BAWtYFIAAhBufUQSKQBEf320SqAhUBCoC1WujYHwyPhmfjE9DgP8+rQ4AAQi2BYQaYH+Ekg9K3yy1efd3W4fUoV+Qg7nuoSrIM6tlAMJi+TmIIqvgm9oy77z95mZFPhcQ9tcBBCBco6IIFIEi1OGFNbAG1sAaScn2BpFWBnB82lh8AAAAAElFTkSuQmCC", ignoreCollision: !0, zIndex: 1, health: 300, scale: 43, indx: 0, holdOffset: 20, placeOffset: -5 }, { age: 7, group: Kl[9], name: "healing pad", uF: [], desc: "standing on it will slowly heal you", req: ["wood", 30, "food", 10], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAVJJREFUeF7tmkEKwjAQRVM9gOAlFFy460k8UA7kSbrrQtBLCB5AEXUQgqGdjjZp8LmUpkle3p8ETeX4PAlUcHgRAISYAAhAhEUBIzACI6IbJdEgGkTj+2h472clnUS99zfteAfViAeIpmmv2pfnfK6ut3NAOOcAIRomBbFab3La/9H36Xh4fwcIjHAOI8QCQJQKYnc5dxbZ/WJpKsLFGQEIWWdAACKMPEZgBEZEt0Gi8U/R6Ftt00kp0ih26JrUgQoQSu0x4lcE5D1EAxChUhiBEYUZoamJfVssP8x0aK8BPKkDlWbAGKE8dBENotG/I2giR43gf43QE4wo1QhN3i3PFGeEZZKaNoAgGoUXS43mlmeyRcMy2FRtkt6hSjUpSz+AEGqjg7CsTq42o928zTWhFP0OuoudYkC5+gCEkAcEIMIQYgRGYER0YyIaRINoRKNxB85lEmEa+oa0AAAAAElFTkSuQmCC", ignoreCollision: !0, healCol: 15, health: 400, colDiv: .7, scale: 45, indx: 0, holdOffset: 20, placeOffset: -5 }, { age: 9, group: Kl[10], name: "spawn pad", uF: [], desc: "you will spawn here when you die but it will dissapear", req: ["wood", 100, "stone", 100], health: 400, url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAiNJREFUeF7tmrtOwzAUhk9hQAqCpYEFtYKplRjYupR3YOZFmDPzIsy8A126MSC1E6gVC6QLiEgMIBRwqtQ9ceziJLb0d0wcX7585/jStAi/XwItcPgjABDCBIAAiNWkACNgBIxgJ0qEBkIDofH/0IiiaMunlWgURd+6/TXKESmI8fj+S7fyJssNBmfbAEFEACE0rBVEr3/apP1rbU8nD8trAAEjiGCEsAAgfAMRxy+0iF+1Emyne0xBsKtVNivkhRHz2SMlSWI0sCAIqNM90X7GeRD5DmqPKldQd5p2FkQRgP3ekPb6Q5ZJfHdDn4s5e68MiDcgVADkkXNAvATB2XB0cWUUGc+312vlVTCcM4JLjKYQMgIyDFUCdQpEknzQfPa0fJM77Q6F55dGJsiF3ycjepuOlpfb4QGF4aHbew05JDY1QR6lbAYXIk4Zke+MDRsyILIVXoGwZQOXLwBCUAEIgCDKJ0wYASM8NsJkb1G24pL3Hl6FRjo4W1Oodwsq+RTKhhWyDUWnV06tLFMLsOnKBTq24QoYJnsPeW+RVuvlwUza8aKjOhUQDkDG1lsQ3DF72TTJ3S8DwLXj7H+fOM7PvWL59EplR9EplOoZ56bPTfS38QxACIoAARCrAQUjmjbCRoKrqo5a1xFVDcJGvQAhKFYOwsbbqquOyr68rWsATbRj9C12Ex2sq02AEKQBAiBWgw5GwAgYwU5ECA2EBkKDDY0fJZh+YTa6MyMAAAAASUVORK5CYII=", ignoreCollision: !0, spawnPoint: !0, scale: 45, indx: 0, holdOffset: 20, placeOffset: -5 }, { age: 7, group: Kl[12], name: "blocker", uF: [], desc: "blocks building in radius", req: ["wood", 30, "stone", 25], ignoreCollision: !0, url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAA05JREFUeF7tms9L3EAUxyeuXWqsFdrVg6BUKFjopWdPevCyelDw/1H/H8EedC89uKeevQgtCBYFD+1WUGsqq2tk4k47yc7vecmu5i2IsHnZ5H3y/b6ZN5mA4CchECCHRwIIoqsEBIEg0kUBFYGKQEUIB0q0BloDrYHWUM2iC60RKyvrC3Hc2YhjsqC8qYA0g6Cytbu73SyqBSgERL2+uklIsOGSVBCQ5t7ezqLLuTbn5AbCJ3l5AvFWo/F50yZB09hcQNTra7HuBt7WJkgYjiZ/UXSdhNP/v1u/dKeSRmMH/L7Bf1AFYe7DR22SfMD3b4fSeGgYYCBkVrBNXpa5GAqcVUBA5A2BwckTBhCIdE0Iw5BMz8xa2cA0+PTkmERRlAqHsIk3iGxNgLKCDkxWHb4wvEBkIaiUMN65I7PtNjkYCXU5Jsc//Y3IcbVKLirDwnhoZTiDENUFmRoohKU/l0lCR9WXWhgUwvv2TRL/5dVrKYzemuFePD1ApOuCDML89RWZurvtearb42+ET3r94rzn+7PhF+Tr6JgwHsoiICBsIciUwSshm7UpDNda4QRieXltn2+cRCB4O8iKAm8TFQR2vswmaVW42cMJhG6kMIHAkqMw6IfVBF0lFcGAsIc1CNpK39939tkNi9Rg8nR1CZuoSDYdHxqqLNq28NYgTGzBhj/Tp2wKRTXi8Kpwad2tQehswSclGgFMkxbFyUYaGutrDy8QtJWu1SaVuUHYxGTu0Wr9TLXwtqOHF4jpmXfJeoLu4wPDBAK9Pl3LOD358e9WBhKEa80whcCy5+1RKAibBstFFTYgnoQiXCDw8wyTRq2vILBYctVRZY9nPXzihKqrApxic3bQzS5L0XRRHtnVqUFqw136DJqT9cySCYNXRWkXZh5VgUt1iShw8VZRNEu5nC+qFfQ7m/5D17WqjvuuP2R/27lY8j9k86LHJ3l6LvSLHXY/QCDEO2Kg1THwL4FlxRPSKnlC8JpHyCRe+o0iqpohgsa2DtFjbPvQs9o69H80cd9JJy+obm+xTAo0SLHUXSjbuuvi08fzS56/TiEg2AVLv+HUTgH9iS5UEf1J0eyqCKLLCUEgiLRlUBGoCFSEcBhBa6A10BpoDdUc8wG9ozFhleVISQAAAABJRU5ErkJggg==", blocker: 300, health: 400, colDiv: .7, indx: 0, scale: 45, holdOffset: 20, placeOffset: -5 }, { age: 7, group: Kl[13], name: "teleporter", uF: [], desc: "teleports you to a random point on the map", req: ["wood", 60, "stone", 60], url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAzVJREFUeF7tmkFP2zAUxx16YMom7bBsN9B2otO+Age4Fg5F2vcBvs8keoBe6YGvMFFOTHDbssOkLdoOJZPbesRuHPs9v7gTeZUQqmon9i///3vPjhPBnzmBhDksCDCIpRIYBIPQgwIrghXBiqhNlGwNtgZbg63RVEVHjRGHhx/3ynJ2XJZir3FQiZgkSe/0/PzTJNYSIAqIwWB4IkRyjJlUkojJxcXZPqYvpE9rIEImb59AeToej04gE/Rt2wqIweCodA3gVfZapOnz+V9R/Jo3l/+/599cXcV4fEY+bvILNkHY6X9wTrLa4Gb62dqeGgYZCJsVoJO3zbweCp1VSEC0DUHBaRMGEQg9JqRpKra234Fs4Nv4/u5WFEWhNaewSTAIMyZQWcEFxlRHKIwgECaENpVggqFWBhpEXVyIpQZ7zMAHzwAQelyAQtj9uSuyWaY96JvNqbh+NnW5Qu9jpFisRUhAQCDUATBnDgVSjRdRQRwcHF1WF06+IIY/hqCnPXo58mqvB06cPVCKwGQKKARFwAcGRQYBg5BL6YeH2aUaqI8asBCwMDY2evvQJTwYBNQW73/3xc6fvpfEbY3yXi6uXlw1XqOqCszSHQwCaotQNfiqItQeQSDkUjrL3lifFIUa1MVdqsjzr9oSHpo9gkBsbb+d7yfYPlRq8FGF3Mu4v/vybyidBSEJhNQTQYpwZQxWxFKgnQHhCpY+5bRvXnWV3WsNlnISsezhqjCjp09oQUWhCpcazEAZpaDiErtiZmh1KbtiA6fLEqYa5HdoDSH7gNOn7GTuTrnihGIIheEDgcIWaBALGI87VL4gZD+fsttVTq9s5FR2qTBqIAPhkz3MwdcBgQKgskUgiNU33BBl+NYPTe1WX/jgdqeCQJj2kN87uZ2vnhQmg7ShBmxsUGNBZQ1zIjFf9FC/2CEGUX8ihjpm/PcvgetqC0WaCkabEIKDZZ3XO39QpAoFcnRokW0Wx4ee1NGhx2yCP0lnzyr4OsGVqUiyhusm5tLd1V7/vb3JV+8TBYS6YecPnMIUsJ7WURWxnin63ZVBLDkxCAahW4YVwYpgRdSmEbYGW4OtwdZoqjH/Av5ExVLxSFbJAAAAAElFTkSuQmCC", ignoreCollision: !0, teleport: !0, health: 200, colDiv: .7, indx: 0, scale: 45, holdOffset: 20, placeOffset: -5 }]; for (let e = 0; e < ql.length; ++e) ql[e].id = e, ql[e].pre && (ql[e].pre = e - ql[e].pre); const x = { groups: Kl, projectiles: Xl, weapons: Jl, list: ql }, $l = [], Zl = { words: $l }; var ec = {}, tc = [], nc = null, ic = { object: ec, array: tc, regex: nc }; const sc = Zl.words; const oc = ic.array; class rc { constructor(e = {}) { Object.assign(this, { list: e.emptyList && [] || Array.prototype.concat.apply(sc, [oc, e.list || []]), exclude: e.exclude || [], splitRegex: e.splitRegex || /\b/, placeHolder: e.placeHolder || "*", regex: e.regex || /[^a-zA-Z0-9|\$|\@]|\^/g, replaceRegex: e.replaceRegex || /\w/g }) } isProfane(n) { return this.list.filter(e => { const t = new RegExp(`\\b ${e.replace(/(\W)/g,"\\$1")}\\b`, "gi"); return !this.exclude.includes(e.toLowerCase()) && t.test(n) }).length > 0 || !1; return false } replaceWord(e) { return e.replace(this.regex, "").replace(this.replaceRegex, this.placeHolder) } clean(e) { return e.split(this.splitRegex).map(e => this.isProfane(e) ? this.replaceWord(e) : e).join(this.splitRegex.exec(e)[0]) } 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())) } } var ac = rc; const lc = new ac, cc = []; lc.addWords(...cc); const dc = Math.abs, uc = Math.cos, fc = Math.sin, hc = Math.pow, pc = Math.sqrt; function mc(e, t, p, m, u, g, y, x, w, n, i, f, s, o) { 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 r = 0; r < i.length; ++r) i[r].price <= 0 && (this.tails[i[r].id] = 1); this.skins = {}; for (var r = 0; r < n.length; ++r) n[r].price <= 0 && (this.skins[n[r].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.deaths = 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.deathCount = 0, 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.health2 = 0, this.samRP = 1, this.samRS = 1, this.pr = 1, this.sr = 1, this.hasSoldier = false, this.hasTank = false, this.health = this.maxHealth, this.scale = p.playerScale, this.speed = p.playerSpeed, this.resetMoveDir(), this.resetResources(e), this.items = [0, 3, 6, 10], this.weapons = [0], this.shootCount = 0, this.weaponXP = [], this.reloads = {}, this.timeSpentNearVolcano = 0 }, this.resetMoveDir = function() { this.moveDir = void 0 }, this.resetResources = function(t) { for (let e = 0; e < p.resourceTypes.length; ++e) this[p.resourceTypes[e]] = t ? 100 : 100 }, this.addItem = function(t) { const n = w.list[t]; if (n) { for (let e = 0; e < this.items.length; ++e) if (w.list[this.items[e]].group == n.group) return this.buildIndex == this.items[e] && (this.buildIndex = t), this.items[e] = t, !0; return this.items.push(t), !0 } return !1 }, this.setUserData = function(n) { if (n) { this.name = "NaN"; let e = n.name + ""; e = e.slice(0, p.maxNameLength), e = e.replace(/[^\w:\(\)\/? -]+/gim, " "), e = e.replace(/[^\x00-\x7F]/g, " "), e = e.trim(); let t = !1; const i = e.toLowerCase().replace(/\s/g, "").replace(/1/g, "i").replace(/0/g, "o").replace(/5/g, "s"); for (const s of lc.list) if (i.indexOf(s) != -1) { t = !0; break } e.length > 0 && !t && (this.name = e), this.skinColor = 0, p.skinColors[n.skin] && (this.skinColor = n.skin) } }, this.getData = function() { return [this.id, this.sid, this.name, m.fixTo(this.x, 2), m.fixTo(this.y, 2), m.fixTo(this.dir, 3), this.health, this.maxHealth, this.scale, this.skinColor] }, this.setData = function(e, t, n, i) { if (e[2] != t.name && t.name != undefined && !Ei.includes(e[1])) { b(`${t.name}[${t.sid}] has changed name to ${e[2]}`, "", "#e38b49") } 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.bot = n ? true : false, this.health = e[6], this.maxHealth = e[7], this.scale = e[8], this.skinColor = e[9], this.pr = 1, this.sr = 1, this.tr = 1, this.hitProjs = 0, this.primary = undefined, this.secondary = undefined, this.shameCount = 0, this.primaryVar = 3, this.secondaryVar = 3, this.lastx = 0, this.tick = v, this.lasty = 0 }; let h = 0; this.update = function(i) { if (!this.alive) return; if ((m.getDistance(this.x, this.y, p.volcanoLocationX, p.volcanoLocationY) || 0) < p.volcanoAggressionRadius && (this.timeSpentNearVolcano += i, this.timeSpentNearVolcano >= 1e3 && (this.changeHealth(p.volcanoDamagePerSecond, null), f.send(this.id, "8", H(this.x), H(this.y), p.volcanoDamagePerSecond, -1), this.timeSpentNearVolcano %= 1e3)), this.shameTimer > 0 && (this.shameTimer -= i, this.shameTimer <= 0 && (this.shameTimer = 0, this.shameCount = 0)), h -= i, h <= 0) { const l = (this.skin && this.skin.healthRegen ? this.skin.healthRegen : 0) + (this.tail && this.tail.healthRegen ? this.tail.healthRegen : 0); l && this.changeHealth(l, 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), h = 1e3 } if (!this.alive) return; if (this.slowMult < 1 && (this.slowMult += 8e-4 * i, this.slowMult > 1 && (this.slowMult = 1)), this.noMovTimer += i, (this.xVel || this.yVel) && (this.noMovTimer = 0), this.lockMove) this.xVel = 0, this.yVel = 0; else { let e = (this.buildIndex >= 0 ? .5 : 1) * (w.weapons[this.weaponIndex].spdMult || 1) * (this.skin && this.skin.spdMult || 1) * (this.tail && this.tail.spdMult || 1) * (this.y <= p.snowBiomeTop ? this.skin && this.skin.coldM ? 1 : p.snowSpeed : 1) * this.slowMult; !this.zIndex && this.y >= p.mapScale / 2 - p.riverWidth / 2 && this.y <= p.mapScale / 2 + p.riverWidth / 2 && (this.skin && this.skin.watrImm ? (e *= .75, this.xVel += p.waterCurrent * .4 * i) : (e *= .33, this.xVel += p.waterCurrent * i)); let t = this.moveDir != null ? uc(this.moveDir) : 0, n = this.moveDir != null ? fc(this.moveDir) : 0; const c = pc(t * t + n * n); c != 0 && (t /= c, n /= c), t && (this.xVel += t * this.speed * e * i), n && (this.yVel += n * this.speed * e * i) } this.zIndex = 0, this.lockMove = !1, this.healCol = 0; let n; const e = m.getDistance(0, 0, this.xVel * i, this.yVel * i), t = j(4, oe(1, H(e / 40))), s = 1 / t; let o = {}; for (var r = 0; r < t; ++r) { this.xVel && (this.x += this.xVel * i * s), this.yVel && (this.y += this.yVel * i * s), n = g.getGridArrays(this.x, this.y, this.scale); for (let t = 0; t < n.length; ++t) { for (let e = 0; e < n[t].length && !(n[t][e].active && !o[n[t][e].sid] && g.checkCollision(this, n[t][e], s) && (o[n[t][e].sid] = !0, !this.alive)); ++e); if (!this.alive) break } if (!this.alive) break } for (var a = y.indexOf(this), r = a + 1; r < y.length; ++r) y[r] != this && y[r].alive && g.checkCollision(this, y[r]); if (this.xVel && (this.xVel *= hc(p.playerDecel, i), this.xVel <= .01 && this.xVel >= -.01 && (this.xVel = 0)), this.yVel && (this.yVel *= hc(p.playerDecel, i), this.yVel <= .01 && this.yVel >= -.01 && (this.yVel = 0)), this.x - this.scale < 0 ? this.x = this.scale : this.x + this.scale > p.mapScale && (this.x = p.mapScale - this.scale), this.y - this.scale < 0 ? this.y = this.scale : this.y + this.scale > p.mapScale && (this.y = p.mapScale - this.scale), this.buildIndex < 0) { if (this.reloads[this.weaponIndex] > 0) this.reloads[this.weaponIndex] -= i, this.gathering = this.mouseState; else if (this.gathering || this.autoGather) { let e = !0; if (w.weapons[this.weaponIndex].gather != null) this.gather(y); else if (w.weapons[this.weaponIndex].projectile != null && this.hasRes(w.weapons[this.weaponIndex], this.skin ? this.skin.projCost : 0)) { this.useRes(w.weapons[this.weaponIndex], this.skin ? this.skin.projCost : 0), this.noMovTimer = 0; var a = w.weapons[this.weaponIndex].projectile; const d = this.scale * 2, c = this.skin && this.skin.aMlt ? this.skin.aMlt : 1; w.weapons[this.weaponIndex].rec && (this.xVel -= w.weapons[this.weaponIndex].rec * uc(this.dir), this.yVel -= w.weapons[this.weaponIndex].rec * fc(this.dir)), u.addProjectile(this.x + d * uc(this.dir), this.y + d * fc(this.dir), this.dir, w.projectiles[a].range * c, w.projectiles[a].speed * c, a, this, null, this.zIndex) } else e = !1; this.gathering = this.mouseState, e && (this.reloads[this.weaponIndex] = w.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 < p.maxAge && (this.XP += e, this.XP >= this.maxXP ? (this.age < p.maxAge ? (this.age++, this.XP = 0, this.maxXP *= 1.2) : this.XP = this.maxXP, this.upgradePoints++, f.send(this.id, "U", this.upgradePoints, this.upgrAge), f.send(this.id, "T", this.XP, m.fixTo(this.maxXP, 1), this.age)) : f.send(this.id, "T", 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 (let e = 0; e < y.length; ++e) this.sentTo[y[e].id] && f.send(y[e].id, "O", this.sid, this.health); return t && t.canSee(this) && !(t == this && e < 0) && f.send(t.id, "8", H(this.x), H(this.y), H(-e), 1), !0 }, this.kill = function(e) { e && e.alive && (e.kills++, e.skin && e.skin.goldSteal ? s(e, H(this.points / 2)) : s(e, H(this.age * 100 * (e.skin && e.skin.kScrM ? e.skin.kScrM : 1))), f.send(e.id, "N", "kills", e.kills, 1)), this.alive = !1, f.send(this.id, "P"), o() }, this.addResource = function(e, t, n) { !n && t > 0 && this.addWeaponXP(t), e == 3 ? s(this, t, !0) : (this[p.resourceTypes[e]] += t, f.send(this.id, "N", p.resourceTypes[e], this[p.resourceTypes[e]], 1)) }, this.changeItemCount = function(e, t) { this.itemCounts[e] = this.itemCounts[e] || 0, this.itemCounts[e] += t, f.send(this.id, "S", e, this.itemCounts[e]) }, this.buildItem = function(t) { const e = this.scale + t.scale + (t.placeOffset || 0), n = this.x + e * uc(this.dir), i = this.y + e * fc(this.dir); if (this.canBuild(t) && !(t.consume && this.skin && this.skin.noEat) && (t.consume || g.checkItemLocation(n, i, t.scale, .6, t.id, !1, this))) { let e = !1; if (t.consume) { if (this.hitTime) { const 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 && (e = t.consume(this)) } else e = !0, t.group.limit && this.changeItemCount(t.group.id, 1), t.pps && (this.pps += t.pps), g.add(g.objects.length, n, i, this.dir, t.scale, t.type, t, !1, this); e && (this.useRes(t), this.buildIndex = -1) } }, this.hasRes = function(t, n) { for (let e = 0; e < t.req.length;) { if (this[t.req[e]] < H(t.req[e + 1] * (n || 1))) return !1; e += 2 } return !0 }, this.useRes = function(t, n) { if (!p.inSandbox) for (let e = 0; e < t.req.length;) this.addResource(p.resourceTypes.indexOf(t.req[e]), -H(t.req[e + 1] * (n || 1))), e += 2 }, this.canBuild = function(e) { const t = _n ? e.group.sandboxLimit || oe(e.group.limit * 3, 99) : e.group.limit; return t && this.itemCounts[e.group.id] >= t ? !1 : _n ? !0 : this.hasRes(e) }, this.gather = function() { this.noMovTimer = 0, this.slowMult -= w.weapons[this.weaponIndex].hitSlow || .3, this.slowMult < 0 && (this.slowMult = 0); const e = p.fetchVariant(this), n = e.poison, i = e.val, t = {}; let s, o, r, a; const l = g.getGridArrays(this.x, this.y, w.weapons[this.weaponIndex].range); for (let e = 0; e < l.length; ++e) for (var c = 0; c < l[e].length; ++c) if (r = l[e][c], r.active && !r.dontGather && !t[r.sid] && r.visibleToPlayer(this) && (s = m.getDistance(this.x, this.y, r.x, r.y) - r.scale, s <= w.weapons[this.weaponIndex].range && (o = m.getDirection(r.x, r.y, this.x, this.y), m.getAngleDist(o, this.dir) <= p.gatherAngle))) { if (t[r.sid] = 1, r.health) { if (r.changeHealth(-w.weapons[this.weaponIndex].dmg * i * (w.weapons[this.weaponIndex].sDmg || 1) * (this.skin && this.skin.bDmg ? this.skin.bDmg : 1), this)) { for (let e = 0; e < r.req.length;) this.addResource(p.resourceTypes.indexOf(r.req[e]), r.req[e + 1]), e += 2; g.disableObj(r) } } else { if (r.name === "volcano") this.hitVolcano(w.weapons[this.weaponIndex].gather); else { this.earnXP(4 * w.weapons[this.weaponIndex].gather); const d = w.weapons[this.weaponIndex].gather + (r.type == 3 ? 4 : 0); this.addResource(r.type, d) } this.skin && this.skin.extraGold && this.addResource(3, 1) } a = !0, g.hitObj(r, o) } for (var c = 0; c < y.length + x.length; ++c) if (r = y[c] || x[c - y.length], r != this && r.alive && !(r.team && r.team == this.team) && (s = m.getDistance(this.x, this.y, r.x, r.y) - r.scale * 1.8, s <= w.weapons[this.weaponIndex].range && (o = m.getDirection(r.x, r.y, this.x, this.y), m.getAngleDist(o, this.dir) <= p.gatherAngle))) { let e = w.weapons[this.weaponIndex].steal; e && r.addResource && (e = j(r.points || 0, e), this.addResource(3, e), r.addResource(3, -e)); let t = i; r.weaponIndex != null && w.weapons[r.weaponIndex].shield && m.getAngleDist(o + W, r.dir) <= p.shieldAngle && (t = w.weapons[r.weaponIndex].shield); const u = w.weapons[this.weaponIndex].dmg, f = u * (this.skin && this.skin.dmgMultO ? this.skin.dmgMultO : 1) * (this.tail && this.tail.dmgMultO ? this.tail.dmgMultO : 1), h = .3 * (r.weightM || 1) + (w.weapons[this.weaponIndex].knock || 0); r.xVel += h * uc(o), r.yVel += h * fc(o), this.skin && this.skin.healD && this.changeHealth(f * t * this.skin.healD, this), this.tail && this.tail.healD && this.changeHealth(f * t * this.tail.healD, this), r.skin && r.skin.dmg && this.changeHealth(-u * r.skin.dmg, r), r.tail && r.tail.dmg && this.changeHealth(-u * r.tail.dmg, r), r.dmgOverTime && this.skin && this.skin.poisonDmg && !(r.skin && r.skin.poisonRes) && (r.dmgOverTime.dmg = this.skin.poisonDmg, r.dmgOverTime.time = this.skin.poisonTime || 1, r.dmgOverTime.doer = this), r.dmgOverTime && n && !(r.skin && r.skin.poisonRes) && (r.dmgOverTime.dmg = 5, r.dmgOverTime.time = 5, r.dmgOverTime.doer = this), r.skin && r.skin.dmgK && (this.xVel -= r.skin.dmgK * uc(o), this.yVel -= r.skin.dmgK * fc(o)), r.changeHealth(-f * t, this, this) } this.sendAnimation(a ? 1 : 0) }, this.hitVolcano = function(e) { const t = 5 + H(e / 3.5); this.addResource(2, t), this.addResource(3, t) }, this.sendAnimation = function(t) { for (let e = 0; e < y.length; ++e) this.sentTo[y[e].id] && this.canSee(y[e]) && f.send(y[e].id, "K", this.sid, t ? 1 : 0, this.weaponIndex) }; let a = 0, l = 0; this.animate = function(e) { this.animTime > 0 && (this.animTime -= e, this.animTime <= 0 ? (this.animTime = 0, this.dirPlus = 0, a = 0, l = 0) : l == 0 ? (a += e / (this.animSpeed * p.hitReturnRatio), this.dirPlus = m.lerp(0, this.targetAngle, j(1, a)), a >= 1 && (a = 1, l = 1)) : (a -= e / (this.animSpeed * (1 - p.hitReturnRatio)), this.dirPlus = m.lerp(0, this.targetAngle, oe(0, a)))) }, this.startAnim = function(e, t) { this.animTime = this.animSpeed = w.weapons[t].speed, this.targetAngle = e ? -p.hitAngle : -W, a = 0, l = 0 }, this.canSee = function(e) { if (!e || e.skin && e.skin.invisTimer && e.noMovTimer >= e.skin.invisTimer) return !1; const t = dc(e.x - this.x) - e.scale, n = dc(e.y - this.y) - e.scale; return t <= p.maxScreenWidth / 2 * 1.3 && n <= p.maxScreenHeight / 2 * 1.3 } } const gc = [{ 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 }], yc = [{ 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 }], xc = { hats: gc, accessories: yc }; function wc(a, t, l, c, d, u, f) { this.init = function(e, t, n, i, s, o, r, a, l) { this.active = !0, this.indx = e, this.x = t, this.y = n, this.dir = i, this.skipMov = !0, this.speed = s, this.dmg = o, this.scale = a, this.range = r, this.owner = l, f && (this.sentTo = {}) }; const h = []; let p; this.update = function(e) { if (this.active) { let n = this.speed * e, i; if (this.skipMov ? this.skipMov = !1 : (this.x += n * U(this.dir), this.y += n * V(this.dir), this.range -= n, this.range <= 0 && (this.x += this.range * U(this.dir), this.y += this.range * V(this.dir), n = 1, this.range = 0, this.active = !1)), f) { for (var s = 0; s < a.length; ++s) !this.sentTo[a[s].id] && a[s].canSee(this) && (this.sentTo[a[s].id] = 1, f.send(a[s].id, "X", u.fixTo(this.x, 1), u.fixTo(this.y, 1), u.fixTo(this.dir, 2), u.fixTo(this.range, 1), this.speed, this.indx, this.layer, this.sid)); h.length = 0; for (var s = 0; s < a.length + t.length; ++s) p = a[s] || t[s - a.length], p.alive && p != this.owner && !(this.owner.team && p.team == this.owner.team) && u.lineInRect(p.x - p.scale, p.y - p.scale, p.x + p.scale, p.y + p.scale, this.x, this.y, this.x + n * U(this.dir), this.y + n * V(this.dir)) && h.push(p); const o = l.getGridArrays(this.x, this.y, this.scale); for (let t = 0; t < o.length; ++t) for (let e = 0; e < o[t].length; ++e) p = o[t][e], i = p.getScale(), p.active && this.ignoreObj != p.sid && this.layer <= p.layer && h.indexOf(p) < 0 && !p.ignoreCollision && u.lineInRect(p.x - i, p.y - i, p.x + i, p.y + i, this.x, this.y, this.x + n * U(this.dir), this.y + n * V(this.dir)) && h.push(p); if (h.length > 0) { let e = null, t = null, n = null; for (var s = 0; s < h.length; ++s) n = u.getDistance(this.x, this.y, h[s].x, h[s].y), (t == null || n < t) && (t = n, e = h[s]); if (e.isPlayer || e.isAI) { const r = .3 * (e.weightM || 1); e.xVel += r * U(this.dir), e.yVel += r * V(this.dir), (e.weaponIndex == null || !(c.weapons[e.weaponIndex].shield && u.getAngleDist(this.dir + W, e.dir) <= d.shieldAngle)) && e.changeHealth(-this.dmg, this.owner, this.owner) } else { e.projDmg && e.health && e.changeHealth(-this.dmg) && l.disableObj(e); for (var s = 0; s < a.length; ++s) a[s].active && (e.sentTo[a[s].id] && (e.active ? a[s].canSee(e) && f.send(a[s].id, "L", u.fixTo(this.dir, 2), e.sid) : f.send(a[s].id, "Q", e.sid)), !e.active && e.owner == a[s] && a[s].changeItemCount(e.group.id, -1)) } this.active = !1; for (var s = 0; s < a.length; ++s) this.sentTo[a[s].id] && f.send(a[s].id, "Y", this.sid, u.fixTo(t, 1)) } } } } } var bc = {}, vc = { get exports() { return bc }, set exports(e) { bc = e } }, kc = {}, Ac = { get exports() { return kc }, set exports(e) { kc = e } }; (function() { var o = "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 n.rotl(e, 8) & 16711935 | n.rotl(e, 24) & 4278255360; 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(f(Math.random() * 256)); return t }, bytesToWords: function(e) { for (var t = [], n = 0, i = 0; n < e.length; n++, i += 8) t[i >>> 5] |= e[n] << 24 - i % 32; return t }, wordsToBytes: function(e) { for (var t = [], n = 0; n < e.length * 32; 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((e[n] & 15).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 t = [], n = 0; n < e.length; n += 3) for (var i = e[n] << 16 | e[n + 1] << 8 | e[n + 2], s = 0; s < 4; s++) n * 8 + s * 6 <= e.length * 8 ? t.push(o.charAt(i >>> 6 * (3 - s) & 63)) : t.push("="); return t.join("") }, base64ToBytes: function(e) { e = e.replace(/[^A-Z0-9+\/]/gi, ""); for (var t = [], n = 0, i = 0; n < e.length; i = ++n % 4) i != 0 && t.push((o.indexOf(e.charAt(n - 1)) & re(2, -2 * i + 8) - 1) << i * 2 | o.indexOf(e.charAt(n)) >>> 6 - i * 2); return t } }; Ac.exports = n })(); var Ic = { utf8: { stringToBytes: function(e) { return Ic.bin.stringToBytes(unescape(encodeURIComponent(e))) }, bytesToString: function(e) { return decodeURIComponent(escape(Ic.bin.bytesToString(e))) } }, bin: { stringToBytes: function(e) { for (var t = [], n = 0; n < e.length; n++) t.push(e.charCodeAt(n) & 255); return t }, bytesToString: function(e) { for (var t = [], n = 0; n < e.length; n++) t.push(String.fromCharCode(e[n])); return t.join("") } } }, Sc = Ic; var Ec = function(e) { return e != null && (Tc(e) || Cc(e) || !!e._isBuffer) }; function Tc(e) { return !!e.constructor && typeof e.constructor.isBuffer == "function" && e.constructor.isBuffer(e) } function Cc(e) { return typeof e.readFloatLE == "function" && typeof e.slice == "function" && Tc(e.slice(0, 0)) }(function() { var y = kc, x = Sc.utf8, w = Ec, b = Sc.bin, v = function(e, t) { e.constructor == String ? t && t.encoding === "binary" ? e = b.stringToBytes(e) : e = x.stringToBytes(e) : w(e) ? e = Array.prototype.slice.call(e, 0) : !Array.isArray(e) && e.constructor !== Uint8Array && (e = e.toString()); for (var n = y.bytesToWords(e), i = e.length * 8, s = 1732584193, o = -271733879, r = -1732584194, a = 271733878, l = 0; l < n.length; l++) n[l] = (n[l] << 8 | n[l] >>> 24) & 16711935 | (n[l] << 24 | n[l] >>> 8) & 4278255360; n[i >>> 5] |= 128 << i % 32, n[(i + 64 >>> 9 << 4) + 14] = i; for (var c = v._ff, d = v._gg, u = v._hh, f = v._ii, l = 0; l < n.length; l += 16) { var h = s, p = o, m = r, g = a; s = c(s, o, r, a, n[l + 0], 7, -680876936), a = c(a, s, o, r, n[l + 1], 12, -389564586), r = c(r, a, s, o, n[l + 2], 17, 606105819), o = c(o, r, a, s, n[l + 3], 22, -1044525330), s = c(s, o, r, a, n[l + 4], 7, -176418897), a = c(a, s, o, r, n[l + 5], 12, 1200080426), r = c(r, a, s, o, n[l + 6], 17, -1473231341), o = c(o, r, a, s, n[l + 7], 22, -45705983), s = c(s, o, r, a, n[l + 8], 7, 1770035416), a = c(a, s, o, r, n[l + 9], 12, -1958414417), r = c(r, a, s, o, n[l + 10], 17, -42063), o = c(o, r, a, s, n[l + 11], 22, -1990404162), s = c(s, o, r, a, n[l + 12], 7, 1804603682), a = c(a, s, o, r, n[l + 13], 12, -40341101), r = c(r, a, s, o, n[l + 14], 17, -1502002290), o = c(o, r, a, s, n[l + 15], 22, 1236535329), s = d(s, o, r, a, n[l + 1], 5, -165796510), a = d(a, s, o, r, n[l + 6], 9, -1069501632), r = d(r, a, s, o, n[l + 11], 14, 643717713), o = d(o, r, a, s, n[l + 0], 20, -373897302), s = d(s, o, r, a, n[l + 5], 5, -701558691), a = d(a, s, o, r, n[l + 10], 9, 38016083), r = d(r, a, s, o, n[l + 15], 14, -660478335), o = d(o, r, a, s, n[l + 4], 20, -405537848), s = d(s, o, r, a, n[l + 9], 5, 568446438), a = d(a, s, o, r, n[l + 14], 9, -1019803690), r = d(r, a, s, o, n[l + 3], 14, -187363961), o = d(o, r, a, s, n[l + 8], 20, 1163531501), s = d(s, o, r, a, n[l + 13], 5, -1444681467), a = d(a, s, o, r, n[l + 2], 9, -51403784), r = d(r, a, s, o, n[l + 7], 14, 1735328473), o = d(o, r, a, s, n[l + 12], 20, -1926607734), s = u(s, o, r, a, n[l + 5], 4, -378558), a = u(a, s, o, r, n[l + 8], 11, -2022574463), r = u(r, a, s, o, n[l + 11], 16, 1839030562), o = u(o, r, a, s, n[l + 14], 23, -35309556), s = u(s, o, r, a, n[l + 1], 4, -1530992060), a = u(a, s, o, r, n[l + 4], 11, 1272893353), r = u(r, a, s, o, n[l + 7], 16, -155497632), o = u(o, r, a, s, n[l + 10], 23, -1094730640), s = u(s, o, r, a, n[l + 13], 4, 681279174), a = u(a, s, o, r, n[l + 0], 11, -358537222), r = u(r, a, s, o, n[l + 3], 16, -722521979), o = u(o, r, a, s, n[l + 6], 23, 76029189), s = u(s, o, r, a, n[l + 9], 4, -640364487), a = u(a, s, o, r, n[l + 12], 11, -421815835), r = u(r, a, s, o, n[l + 15], 16, 530742520), o = u(o, r, a, s, n[l + 2], 23, -995338651), s = f(s, o, r, a, n[l + 0], 6, -198630844), a = f(a, s, o, r, n[l + 7], 10, 1126891415), r = f(r, a, s, o, n[l + 14], 15, -1416354905), o = f(o, r, a, s, n[l + 5], 21, -57434055), s = f(s, o, r, a, n[l + 12], 6, 1700485571), a = f(a, s, o, r, n[l + 3], 10, -1894986606), r = f(r, a, s, o, n[l + 10], 15, -1051523), o = f(o, r, a, s, n[l + 1], 21, -2054922799), s = f(s, o, r, a, n[l + 8], 6, 1873313359), a = f(a, s, o, r, n[l + 15], 10, -30611744), r = f(r, a, s, o, n[l + 6], 15, -1560198380), o = f(o, r, a, s, n[l + 13], 21, 1309151649), s = f(s, o, r, a, n[l + 4], 6, -145523070), a = f(a, s, o, r, n[l + 11], 10, -1120210379), r = f(r, a, s, o, n[l + 2], 15, 718787259), o = f(o, r, a, s, n[l + 9], 21, -343485551), s = s + h >>> 0, o = o + p >>> 0, r = r + m >>> 0, a = a + g >>> 0 } return y.endian([s, o, r, a]) }; v._ff = function(e, t, n, i, s, o, r) { var a = e + (t & n | ~t & i) + (s >>> 0) + r; return (a << o | a >>> 32 - o) + t }, v._gg = function(e, t, n, i, s, o, r) { var a = e + (t & i | n & ~i) + (s >>> 0) + r; return (a << o | a >>> 32 - o) + t }, v._hh = function(e, t, n, i, s, o, r) { var a = e + (t ^ n ^ i) + (s >>> 0) + r; return (a << o | a >>> 32 - o) + t }, v._ii = function(e, t, n, i, s, o, r) { var a = e + (n ^ (t | ~i)) + (s >>> 0) + r; return (a << o | a >>> 32 - o) + t }, v._blocksize = 16, v._digestsize = 16, vc.exports = function(e, t) { if (e == null) throw new Error("Illegal argument " + e); var n = y.wordsToBytes(v(e, t)); return t && t.asBytes ? n : t && t.asString ? b.bytesToString(n) : y.bytesToHex(n) } })(); var Bc, Dc; function Pc() { if (Dc) return Bc; Dc = 1; function s(e, t, n, i, s, o) { return { tag: e, key: t, attrs: n, children: i, text: s, dom: o, domSize: void 0, state: void 0, events: void 0, instance: void 0 } } return s.normalize = function(e) { return Array.isArray(e) ? s("[", void 0, void 0, s.normalizeChildren(e), void 0, void 0) : e == null || typeof e == "boolean" ? null : typeof e == "object" ? e : s("#", void 0, void 0, String(e), void 0, void 0) }, s.normalizeChildren = function(e) { var t = []; if (e.length) { for (var n = e[0] != null && e[0].key != null, i = 1; i < e.length; i++) if ((e[i] != null && e[i].key != null) !== n) throw new TypeError(n && (e[i] != null || typeof e[i] == "boolean") ? "In fragments, vnodes must either all have keys or none have keys. You may wish to consider using an explicit keyed empty fragment, m.fragment({key: ...}), instead of a hole." : "In fragments, vnodes must either all have keys or none have keys."); for (var i = 0; i < e.length; i++) t[i] = s.normalize(e[i]) } return t }, Bc = s, Bc } var Rc = Pc(), Mc = function() { var e = arguments[this], t = this + 1, n; if (e == null ? e = {} : (typeof e != "object" || e.tag != null || Array.isArray(e)) && (e = {}, t = this), arguments.length === t + 1) n = arguments[t], Array.isArray(n) || (n = [n]); else for (n = []; t < arguments.length;) n.push(arguments[t++]); return Rc("", e.key, e, n) }, Nc = {}.hasOwnProperty, Oc = Pc(), Lc = Mc, Fc = Nc, _c = /(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g, Vc = {}; function Uc(e) { for (var t in e) if (Fc.call(e, t)) return !1; return !0 } function jc(e) { for (var t, n = "div", i = [], s = {}; t = _c.exec(e);) { var o = t[1], r = t[2]; if (o === "" && r !== "") n = r; else if (o === "#") s.id = r; else if (o === ".") i.push(r); else if (t[3][0] === "[") { var a = t[6]; a && (a = a.replace(/\\(["'])/g, "$1").replace(/\\\\/g, "\\")), t[4] === "class" ? i.push(a) : s[t[4]] = a === "" ? a : a || !0 } } return i.length > 0 && (s.className = i.join(" ")), Vc[e] = { tag: n, attrs: s } } function Hc(e, t) { var n = t.attrs, i = Fc.call(n, "class"), s = i ? n["class"] : n.className; if (t.tag = e.tag, t.attrs = {}, !Uc(e.attrs) && !Uc(n)) { var o = {}; for (var r in n) Fc.call(n, r) && (o[r] = n[r]); n = o } for (var r in e.attrs) Fc.call(e.attrs, r) && r !== "className" && !Fc.call(n, r) && (n[r] = e.attrs[r]); (s != null || e.attrs.className != null) && (n.className = s != null ? e.attrs.className != null ? String(e.attrs.className) + " " + String(s) : s : e.attrs.className != null ? e.attrs.className : null), i && (n["class"] = null); for (var r in n) if (Fc.call(n, r) && r !== "key") { t.attrs = n; break } return t } function Wc(e) { if (e == null || typeof e != "string" && typeof e != "function" && typeof e.view != "function") throw Error("The selector must be either a string or a component."); var t = Lc.apply(1, arguments); return typeof e == "string" && (t.children = Oc.normalizeChildren(t.children), e !== "[") ? Hc(Vc[e] || jc(e), t) : (t.tag = e, t) } var Qc = Wc, Yc = Pc(), zc = function(e) { return e == null && (e = ""), Yc("<", void 0, void 0, e, void 0, void 0) }, Gc = Pc(), Kc = Mc, Xc = function() { var e = Kc.apply(0, arguments); return e.tag = "[", e.children = Gc.normalizeChildren(e.children), e }, Jc = Qc; Jc.trust = zc; Jc.fragment = Xc; var qc = Jc, $c = {}, Zc = { get exports() { return $c }, set exports(e) { $c = e } }, ed, td; function nd() { if (td) return ed; td = 1; var h = function(e) { if (!(this instanceof h)) throw new Error("Promise must be called with 'new'."); if (typeof e != "function") throw new TypeError("executor must be a function."); var r = this, a = [], l = [], o = t(a, !0), c = t(l, !1), d = r._instance = { resolvers: a, rejectors: l }, u = typeof setImmediate == "function" ? setImmediate : setTimeout; function t(i, s) { return function o(t) { var e; try { if (s && t != null && (typeof t == "object" || typeof t == "function") && typeof(e = t.then) == "function") { if (t === r) throw new TypeError("Promise can't be resolved with itself."); f(e.bind(t)) } else u(function() { !s && i.length === 0 && console.error("Possible unhandled promise rejection:", t); for (var e = 0; e < i.length; e++) i[e](t); a.length = 0, l.length = 0, d.state = s, d.retry = function() { o(t) } }) } catch (n) { c(n) } } } function f(e) { var n = 0; function t(t) { return function(e) { n++ > 0 || t(e) } } var i = t(c); try { e(t(o), i) } catch (s) { i(s) } } f(e) }; return h.prototype.then = function(e, t) { var n = this, s = n._instance; function i(t, e, n, i) { e.push(function(e) { if (typeof t != "function") n(e); else try { o(t(e)) } catch (w) { r && r(w) } }), typeof s.retry == "function" && i === s.state && s.retry() } var o, r, a = new h(function(e, t) { o = e, r = t }); return i(e, s.resolvers, o, !0), i(t, s.rejectors, r, !1), a }, h.prototype["catch"] = function(e) { return this.then(null, e) }, h.prototype["finally"] = function(t) { return this.then(function(e) { return h.resolve(t()).then(function() { return e }) }, function(e) { return h.resolve(t()).then(function() { return h.reject(e) }) }) }, h.resolve = function(t) { return t instanceof h ? t : new h(function(e) { e(t) }) }, h.reject = function(n) { return new h(function(e, t) { t(n) }) }, h.all = function(a) { return new h(function(n, i) { var s = a.length, o = 0, r = []; if (a.length === 0) n([]); else for (var e = 0; e < a.length; e++)(function(t) { function e(e) { o++, r[t] = e, o === s && n(r) } a[t] != null && (typeof a[t] == "object" || typeof a[t] == "function") && typeof a[t].then == "function" ? a[t].then(e, i) : e(a[t]) })(e) }) }, h.race = function(i) { return new h(function(e, t) { for (var n = 0; n < i.length; n++) i[n].then(e, t) }) }, ed = h, ed } var id = nd(); typeof window < "u" ? (typeof window.Promise > "u" ? window.Promise = id : window.Promise.prototype["finally"] || (window.Promise.prototype["finally"] = id.prototype["finally"]), Zc.exports = window.Promise) : typeof Sr < "u" ? (typeof Sr.Promise > "u" ? Sr.Promise = id : Sr.Promise.prototype["finally"] || (Sr.Promise.prototype["finally"] = id.prototype["finally"]), Zc.exports = Sr.Promise) : Zc.exports = id; var sd, od; function rd() { if (od) return sd; od = 1; var te = Pc(); return sd = function(e) { var d = e && e.document, c, t = { svg: "http://www.w3.org/2000/svg", math: "http://www.w3.org/1998/Math/MathML" }; function u(e) { return e.attrs && e.attrs.xmlns || t[e.tag] } function f(e, t) { if (e.state !== t) throw new Error("'vnode.state' must not be modified.") } function h(e) { var t = e.state; try { return this.apply(t, arguments) } finally { f(e, t) } } function p() { try { return d.activeElement } catch { return null } } function C(e, t, n, i, s, o, r) { for (var a = n; a < i; a++) { var l = t[a]; l != null && B(e, l, s, r, o) } } function B(e, t, n, i, s) { var o = t.tag; if (typeof o == "string") switch (t.state = {}, t.attrs != null && O(t.attrs, t, n), o) { case "#": r(e, t, s); break; case "<": a(e, t, i, s); break; case "[": _(e, t, n, i, s); break; default: V(e, t, n, i, s) } else j(e, t, n, i, s) } function r(e, t, n) { t.dom = d.createTextNode(t.children), y(e, t.dom, n) } var l = { caption: "table", thead: "table", tbody: "table", tfoot: "table", tr: "tbody", th: "tr", td: "tr", colgroup: "table", col: "colgroup" }; function a(e, t, n, i) { var s = t.children.match(/^\s*?<(\w+)/im) || [], o = d.createElement(l[s[1]] || "div"); n === "http://www.w3.org/2000/svg" ? (o.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg">' + t.children + "</svg>", o = o.firstChild) : o.innerHTML = t.children, t.dom = o.firstChild, t.domSize = o.childNodes.length, t.instance = []; for (var r = d.createDocumentFragment(), a; a = o.firstChild;) t.instance.push(a), r.appendChild(a); y(e, r, i) } function _(e, t, n, i, s) { var o = d.createDocumentFragment(); if (t.children != null) { var r = t.children; C(o, r, 0, r.length, n, null, i) } t.dom = o.firstChild, t.domSize = o.childNodes.length, y(e, o, s) } function V(e, t, n, i, s) { var o = t.tag, r = t.attrs, a = r && r.is; i = u(t) || i; var l = i ? a ? d.createElementNS(i, o, { is: a }) : d.createElementNS(i, o) : a ? d.createElement(o, { is: a }) : d.createElement(o); if (t.dom = l, r != null && X(t, r, i), y(e, l, s), !x(t) && t.children != null) { var c = t.children; C(l, c, 0, c.length, n, null, i), t.tag === "select" && r != null && q(t, r) } } function U(e, t) { var n; if (typeof e.tag.view == "function") { if (e.state = Object.create(e.tag), n = e.state.view, n.$$reentrantLock$$ != null) return; n.$$reentrantLock$$ = !0 } else { if (e.state = void 0, n = e.tag, n.$$reentrantLock$$ != null) return; n.$$reentrantLock$$ = !0, e.state = e.tag.prototype != null && typeof e.tag.prototype.view == "function" ? new e.tag(e) : e.tag(e) } if (O(e.state, e, t), e.attrs != null && O(e.attrs, e, t), e.instance = te.normalize(h.call(e.state.view, e)), e.instance === e) throw Error("A view cannot return the vnode it received as argument"); n.$$reentrantLock$$ = null } function j(e, t, n, i, s) { U(t, n), t.instance != null ? (B(e, t.instance, n, i, s), t.dom = t.instance.dom, t.domSize = t.dom != null ? t.instance.domSize : 0) : t.domSize = 0 } function m(e, t, n, i, s, o) { if (!(t === n || t == null && n == null)) if (t == null || t.length === 0) C(e, n, 0, n.length, i, s, o); else if (n == null || n.length === 0) M(e, t, 0, t.length); else { var r = t[0] != null && t[0].key != null, a = n[0] != null && n[0].key != null, l = 0, c = 0; if (!r) for (; c < t.length && t[c] == null;) c++; if (!a) for (; l < n.length && n[l] == null;) l++; if (r !== a) M(e, t, c, t.length), C(e, n, l, n.length, i, s, o); else if (a) { for (var d = t.length - 1, u = n.length - 1, f, h, p, m, g, y; d >= c && u >= l && (m = t[d], g = n[u], m.key === g.key);) m !== g && D(e, m, g, i, s, o), g.dom != null && (s = g.dom), d--, u--; for (; d >= c && u >= l && (h = t[c], p = n[l], h.key === p.key);) c++, l++, h !== p && D(e, h, p, i, P(t, c, s), o); for (; d >= c && u >= l && !(l === u || h.key !== g.key || m.key !== p.key);) y = P(t, c, s), R(e, m, y), m !== p && D(e, m, p, i, y, o), ++l <= --u && R(e, h, s), h !== g && D(e, h, g, i, s, o), g.dom != null && (s = g.dom), c++, d--, m = t[d], g = n[u], h = t[c], p = n[l]; for (; d >= c && u >= l && m.key === g.key;) m !== g && D(e, m, g, i, s, o), g.dom != null && (s = g.dom), d--, u--, m = t[d], g = n[u]; if (l > u) M(e, t, c, d + 1); else if (c > d) C(e, n, l, u + 1, i, s, o); else { var x = s, w = u - l + 1, b = new Array(w), v = 0, k = 0, A = 2147483647, I = 0, f, S; for (k = 0; k < w; k++) b[k] = -1; for (k = u; k >= l; k--) { f == null && (f = G(t, c, d + 1)), g = n[k]; var E = f[g.key]; E != null && (A = E < A ? E : -1, b[k - l] = E, m = t[E], t[E] = null, m !== g && D(e, m, g, i, s, o), g.dom != null && (s = g.dom), I++) } if (s = x, I !== d - c + 1 && M(e, t, c, d + 1), I === 0) C(e, n, l, u + 1, i, s, o); else if (A === -1) for (S = K(b), v = S.length - 1, k = u; k >= l; k--) p = n[k], b[k - l] === -1 ? B(e, p, i, o, s) : S[v] === k - l ? v-- : R(e, p, s), p.dom != null && (s = n[k].dom); else for (k = u; k >= l; k--) p = n[k], b[k - l] === -1 && B(e, p, i, o, s), p.dom != null && (s = n[k].dom) } } else { var T = t.length < n.length ? t.length : n.length; for (l = l < c ? l : c; l < T; l++) h = t[l], p = n[l], !(h === p || h == null && p == null) && (h == null ? B(e, p, i, o, P(t, l + 1, s)) : p == null ? N(e, h) : D(e, h, p, i, P(t, l + 1, s), o)); t.length > T && M(e, t, l, t.length), n.length > T && C(e, n, l, n.length, i, s, o) } } } function D(e, t, n, i, s, o) { var r = t.tag, a = n.tag; if (r === a) { if (n.state = t.state, n.events = t.events, ee(n, t)) return; if (typeof r == "string") switch (n.attrs != null && L(n.attrs, n, i), r) { case "#": H(t, n); break; case "<": W(e, t, n, o, s); break; case "[": Q(e, t, n, i, s, o); break; default: Y(t, n, i, o) } else z(e, t, n, i, s, o) } else N(e, t), B(e, n, i, o, s) } function H(e, t) { e.children.toString() !== t.children.toString() && (e.dom.nodeValue = t.children), t.dom = e.dom } function W(e, t, n, i, s) { t.children !== n.children ? (w(e, t), a(e, n, i, s)) : (n.dom = t.dom, n.domSize = t.domSize, n.instance = t.instance) } function Q(e, t, n, i, s, o) { m(e, t.children, n.children, i, s, o); var r = 0, a = n.children; if (n.dom = null, a != null) { for (var l = 0; l < a.length; l++) { var c = a[l]; c != null && c.dom != null && (n.dom == null && (n.dom = c.dom), r += c.domSize || 1) } r !== 1 && (n.domSize = r) } } function Y(e, t, n, i) { var s = t.dom = e.dom; i = u(t) || i, t.tag === "textarea" && t.attrs == null && (t.attrs = {}), $(t, e.attrs, t.attrs, i), x(t) || m(s, e.children, t.children, n, null, i) } function z(e, t, n, i, s, o) { if (n.instance = te.normalize(h.call(n.state.view, n)), n.instance === n) throw Error("A view cannot return the vnode it received as argument"); L(n.state, n, i), n.attrs != null && L(n.attrs, n, i), n.instance != null ? (t.instance == null ? B(e, n.instance, i, o, s) : D(e, t.instance, n.instance, i, s, o), n.dom = n.instance.dom, n.domSize = n.instance.domSize) : t.instance != null ? (N(e, t.instance), n.dom = void 0, n.domSize = 0) : (n.dom = t.dom, n.domSize = t.domSize) } function G(e, t, n) { for (var i = Object.create(null); t < n; t++) { var s = e[t]; if (s != null) { var o = s.key; o != null && (i[o] = t) } } return i } var g = []; function K(e) { for (var t = [0], n = 0, i = 0, s = 0, o = g.length = e.length, s = 0; s < o; s++) g[s] = e[s]; for (var s = 0; s < o; ++s) if (e[s] !== -1) { var r = t[t.length - 1]; if (e[r] < e[s]) { g[s] = r, t.push(s); continue } for (n = 0, i = t.length - 1; n < i;) { var a = (n >>> 1) + (i >>> 1) + (n & i & 1); e[t[a]] < e[s] ? n = a + 1 : i = a } e[s] < e[t[n]] && (n > 0 && (g[s] = t[n - 1]), t[n] = s) } for (n = t.length, i = t[n - 1]; n-- > 0;) t[n] = i, i = g[i]; return g.length = 0, t } function P(e, t, n) { for (; t < e.length; t++) if (e[t] != null && e[t].dom != null) return e[t].dom; return n } function R(e, t, n) { var i = d.createDocumentFragment(); o(e, i, t), y(e, i, n) } function o(e, t, n) { for (; n.dom != null && n.dom.parentNode === e;) { if (typeof n.tag != "string") { if (n = n.instance, n != null) continue } else if (n.tag === "<") for (var i = 0; i < n.instance.length; i++) t.appendChild(n.instance[i]); else if (n.tag !== "[") t.appendChild(n.dom); else if (n.children.length === 1) { if (n = n.children[0], n != null) continue } else for (var i = 0; i < n.children.length; i++) { var s = n.children[i]; s != null && o(e, t, s) } break } } function y(e, t, n) { n != null ? e.insertBefore(t, n) : e.appendChild(t) } function x(e) { if (e.attrs == null || e.attrs.contenteditable == null && e.attrs.contentEditable == null) return !1; var t = e.children; if (t != null && t.length === 1 && t[0].tag === "<") { var n = t[0].children; e.dom.innerHTML !== n && (e.dom.innerHTML = n) } else if (t != null && t.length !== 0) throw new Error("Child node of a contenteditable must be trusted."); return !0 } function M(e, t, n, i) { for (var s = n; s < i; s++) { var o = t[s]; o != null && N(e, o) } } function N(e, t) { var n = 0, i = t.state, s, o; if (typeof t.tag != "string" && typeof t.state.onbeforeremove == "function") { var r = h.call(t.state.onbeforeremove, t); r != null && typeof r.then == "function" && (n = 1, s = r) } if (t.attrs && typeof t.attrs.onbeforeremove == "function") { var r = h.call(t.attrs.onbeforeremove, t); r != null && typeof r.then == "function" && (n |= 2, o = r) } if (f(t, i), !n) v(t), b(e, t); else { if (s != null) { var a = function() { n & 1 && (n &= 2, n || l()) }; s.then(a, a) } if (o != null) { var a = function() { n & 2 && (n &= 1, n || l()) }; o.then(a, a) } } function l() { f(t, i), v(t), b(e, t) } } function w(e, t) { for (var n = 0; n < t.instance.length; n++) e.removeChild(t.instance[n]) } function b(e, t) { for (; t.dom != null && t.dom.parentNode === e;) { if (typeof t.tag != "string") { if (t = t.instance, t != null) continue } else if (t.tag === "<") w(e, t); else { if (t.tag !== "[" && (e.removeChild(t.dom), !Array.isArray(t.children))) break; if (t.children.length === 1) { if (t = t.children[0], t != null) continue } else for (var n = 0; n < t.children.length; n++) { var i = t.children[n]; i != null && b(e, i) } } break } } function v(e) { if (typeof e.tag != "string" && typeof e.state.onremove == "function" && h.call(e.state.onremove, e), e.attrs && typeof e.attrs.onremove == "function" && h.call(e.attrs.onremove, e), typeof e.tag != "string") e.instance != null && v(e.instance); else { var t = e.children; if (Array.isArray(t)) for (var n = 0; n < t.length; n++) { var i = t[n]; i != null && v(i) } } } function X(e, t, n) { e.tag === "input" && t.type != null && e.dom.setAttribute("type", t.type); var i = t != null && e.tag === "input" && t.type === "file"; for (var s in t) k(e, s, null, t[s], n, i) } function k(e, t, n, i, s, o) { if (!(t === "key" || t === "is" || i == null || A(t) || n === i && !Z(e, t) && typeof i != "object" || t === "type" && e.tag === "input")) { if (t[0] === "o" && t[1] === "n") return T(e, t, i); if (t.slice(0, 6) === "xlink:") e.dom.setAttributeNS("http://www.w3.org/1999/xlink", t.slice(6), i); else if (t === "style") E(e.dom, n, i); else if (I(e, t, s)) { if (t === "value") { if ((e.tag === "input" || e.tag === "textarea") && e.dom.value === "" + i && (o || e.dom === p()) || e.tag === "select" && n !== null && e.dom.value === "" + i || e.tag === "option" && n !== null && e.dom.value === "" + i) return; if (o && "" + i != "") { console.error("`value` is read-only on file inputs!"); return } } e.dom[t] = i } else typeof i == "boolean" ? i ? e.dom.setAttribute(t, "") : e.dom.removeAttribute(t) : e.dom.setAttribute(t === "className" ? "class" : t, i) } } function J(e, t, n, i) { if (!(t === "key" || t === "is" || n == null || A(t))) if (t[0] === "o" && t[1] === "n") T(e, t, void 0); else if (t === "style") E(e.dom, n, null); else if (I(e, t, i) && t !== "className" && t !== "title" && !(t === "value" && (e.tag === "option" || e.tag === "select" && e.dom.selectedIndex === -1 && e.dom === p())) && !(e.tag === "input" && t === "type")) e.dom[t] = null; else { var s = t.indexOf(":"); s !== -1 && (t = t.slice(s + 1)), n !== !1 && e.dom.removeAttribute(t === "className" ? "class" : t) } } function q(e, t) { if ("value" in t) if (t.value === null) e.dom.selectedIndex !== -1 && (e.dom.value = null); else { var n = "" + t.value; (e.dom.value !== n || e.dom.selectedIndex === -1) && (e.dom.value = n) } "selectedIndex" in t && k(e, "selectedIndex", null, t.selectedIndex, void 0) } function $(e, t, n, i) { if (t && t === n && console.warn("Don't reuse attrs object, use new object for every redraw, this will throw in next major"), n != null) { e.tag === "input" && n.type != null && e.dom.setAttribute("type", n.type); var s = e.tag === "input" && n.type === "file"; for (var o in n) k(e, o, t && t[o], n[o], i, s) } var r; if (t != null) for (var o in t)(r = t[o]) != null && (n == null || n[o] == null) && J(e, o, r, i) } function Z(e, t) { return t === "value" || t === "checked" || t === "selectedIndex" || t === "selected" && e.dom === p() || e.tag === "option" && e.dom.parentNode === d.activeElement } function A(e) { return e === "oninit" || e === "oncreate" || e === "onupdate" || e === "onremove" || e === "onbeforeremove" || e === "onbeforeupdate" } function I(e, t, n) { return n === void 0 && (e.tag.indexOf("-") > -1 || e.attrs != null && e.attrs.is || t !== "href" && t !== "list" && t !== "form" && t !== "width" && t !== "height") && t in e.dom } var n = /[A-Z]/g; function s(e) { return "-" + e.toLowerCase() } function S(e) { return e[0] === "-" && e[1] === "-" ? e : e === "cssFloat" ? "float" : e.replace(n, s) } function E(e, t, n) { if (t !== n) if (n == null) e.style.cssText = ""; else if (typeof n != "object") e.style.cssText = n; else if (t == null || typeof t != "object") { e.style.cssText = ""; for (var i in n) { var s = n[i]; s != null && e.style.setProperty(S(i), String(s)) } } else { for (var i in n) { var s = n[i]; s != null && (s = String(s)) !== String(t[i]) && e.style.setProperty(S(i), s) } for (var i in t) t[i] != null && n[i] == null && e.style.removeProperty(S(i)) } } function i() { this._ = c } i.prototype = Object.create(null), i.prototype.handleEvent = function(e) { var t = this["on" + e.type], n; typeof t == "function" ? n = t.call(e.currentTarget, e) : typeof t.handleEvent == "function" && t.handleEvent(e), this._ && e.redraw !== !1 && (0, this._)(), n === !1 && (e.preventDefault(), e.stopPropagation()) }; function T(e, t, n) { if (e.events != null) { if (e.events._ = c, e.events[t] === n) return; n != null && (typeof n == "function" || typeof n == "object") ? (e.events[t] == null && e.dom.addEventListener(t.slice(2), e.events, !1), e.events[t] = n) : (e.events[t] != null && e.dom.removeEventListener(t.slice(2), e.events, !1), e.events[t] = void 0) } else n != null && (typeof n == "function" || typeof n == "object") && (e.events = new i, e.dom.addEventListener(t.slice(2), e.events, !1), e.events[t] = n) } function O(e, t, n) { typeof e.oninit == "function" && h.call(e.oninit, t), typeof e.oncreate == "function" && n.push(h.bind(e.oncreate, t)) } function L(e, t, n) { typeof e.onupdate == "function" && n.push(h.bind(e.onupdate, t)) } function ee(e, t) { do { if (e.attrs != null && typeof e.attrs.onbeforeupdate == "function") { var n = h.call(e.attrs.onbeforeupdate, e, t); if (n !== void 0 && !n) break } if (typeof e.tag != "string" && typeof e.state.onbeforeupdate == "function") { var n = h.call(e.state.onbeforeupdate, e, t); if (n !== void 0 && !n) break } return !1 } while (!1); return e.dom = t.dom, e.domSize = t.domSize, e.instance = t.instance, e.attrs = t.attrs, e.children = t.children, e.text = t.text, !0 } var F; return function(e, t, n) { if (!e) throw new TypeError("DOM element being rendered to does not exist."); if (F != null && e.contains(F)) throw new TypeError("Node is currently being rendered to and thus is locked."); var i = c, s = F, o = [], r = p(), a = e.namespaceURI; F = e, c = typeof n == "function" ? n : void 0; try { e.vnodes == null && (e.textContent = ""), t = te.normalizeChildren(Array.isArray(t) ? t : [t]), m(e, e.vnodes, t, o, null, a === "http://www.w3.org/1999/xhtml" ? void 0 : a), e.vnodes = t, r != null && p() !== r && typeof r.focus == "function" && r.focus(); for (var l = 0; l < o.length; l++) o[l]() } finally { c = i, F = s } } }, sd } var ad, ld; function cd() { return ld || (ld = 1, ad = rd()(typeof window < "u" ? window : null)), ad } var dd = Pc(), ud = function(i, e, t) { var s = [], n = !1, o = -1; function r() { for (o = 0; o < s.length; o += 2) try { i(s[o], dd(s[o + 1]), a) } catch (e) { t.error(e) } o = -1 } function a() { n || (n = !0, e(function() { n = !1, r() })) } a.sync = r; function l(e, t) { if (t != null && t.view == null && typeof t != "function") throw new TypeError("m.mount expects a component, not a vnode."); var n = s.indexOf(e); n >= 0 && (s.splice(n, 2), n <= o && (o -= 2), i(e, [])), t != null && (s.push(e, t), i(e, dd(t), a)) } return { mount: l, redraw: a } }, fd = cd(), hd = ud(fd, typeof requestAnimationFrame < "u" ? requestAnimationFrame : null, typeof console < "u" ? console : null), pd, md; function gd() { return md || (md = 1, pd = function(e) { if (Object.prototype.toString.call(e) !== "[object Object]") return ""; var i = []; for (var t in e) s(t, e[t]); return i.join("&"); function s(e, t) { if (Array.isArray(t)) for (var n = 0; n < t.length; n++) s(e + "[" + n + "]", t[n]); else if (Object.prototype.toString.call(t) === "[object Object]") for (var n in t) s(e + "[" + n + "]", t[n]); else i.push(encodeURIComponent(e) + (t != null && t !== "" ? "=" + encodeURIComponent(t) : "")) } }), pd } var yd, xd; function wd() { if (xd) return yd; xd = 1; var i = Nc; return yd = Object.assign || function(e, t) { for (var n in t) i.call(t, n) && (e[n] = t[n]) }, yd } var bd, vd; function kd() { if (vd) return bd; vd = 1; var m = gd(), g = wd(); return bd = function(e, i) { if (/:([^\/\.-]+)(\.{3})?:/.test(e)) throw new SyntaxError("Template parameter names must be separated by either a '/', '-', or '.'."); if (i == null) return e; var t = e.indexOf("?"), n = e.indexOf("#"), s = n < 0 ? e.length : n, o = t < 0 ? s : t, r = e.slice(0, o), a = {}; g(a, i); var l = r.replace(/:([^\/\.-]+)(\.{3})?/g, function(e, t, n) { return delete a[t], i[t] == null ? e : n ? i[t] : encodeURIComponent(String(i[t])) }), c = l.indexOf("?"), d = l.indexOf("#"), u = d < 0 ? l.length : d, f = c < 0 ? u : c, h = l.slice(0, f); t >= 0 && (h += e.slice(t, s)), c >= 0 && (h += (t < 0 ? "?" : "&") + l.slice(c, u)); var p = m(a); return p && (h += (t < 0 && c < 0 ? "?" : "&") + p), n >= 0 && (h += e.slice(n)), d >= 0 && (h += (n < 0 ? "" : "&") + l.slice(d)), h }, bd } var Ad = kd(), Id = Nc, Sd = function(m, n, l) { var r = 0; function c(e) { return new n(e) } c.prototype = n.prototype, c.__proto__ = n; function e(a) { return function(t, i) { typeof t != "string" ? (i = t, t = t.url) : i == null && (i = {}); var e = new n(function(n, e) { a(Ad(t, i.params), i, function(e) { if (typeof i.type == "function") if (Array.isArray(e)) for (var t = 0; t < e.length; t++) e[t] = new i.type(e[t]); else e = new i.type(e); n(e) }, e) }); if (i.background === !0) return e; var s = 0; function o() { --s === 0 && typeof l == "function" && l() } return r(e); function r(t) { var n = t.then; return t.constructor = c, t.then = function() { s++; var e = n.apply(t, arguments); return e.then(o, function(e) { if (o(), s === 0) throw e }), r(e) }, t } } } function g(e, t) { for (var n in e.headers) if (Id.call(e.headers, n) && n.toLowerCase() === t) return !0; return !1 } return { request: e(function(r, a, l, c) { var e = a.method != null ? a.method.toUpperCase() : "GET", t = a.body, n = (a.serialize == null || a.serialize === JSON.serialize) && !(t instanceof m.FormData || t instanceof m.URLSearchParams), d = a.responseType || (typeof a.extract == "function" ? "" : "json"), u = new m.XMLHttpRequest, f = !1, h = !1, i = u, s, o = u.abort; u.abort = function() { f = !0, o.call(this) }, u.open(e, r, a["async"] !== !1, typeof a.user == "string" ? a.user : void 0, typeof a.password == "string" ? a.password : void 0), n && t != null && !g(a, "content-type") && u.setRequestHeader("Content-Type", "application/json; charset=utf-8"), typeof a.deserialize != "function" && !g(a, "accept") && u.setRequestHeader("Accept", "application/json, text/*"), a.withCredentials && (u.withCredentials = a.withCredentials), a.timeout && (u.timeout = a.timeout), u.responseType = d; for (var p in a.headers) Id.call(a.headers, p) && u.setRequestHeader(p, a.headers[p]); u.onreadystatechange = function(t) { if (!f && t.target.readyState === 4) try { var e = t.target.status >= 200 && t.target.status < 300 || t.target.status === 304 || /^file:\/\//i.test(r), n = t.target.response, i; if (d === "json") { if (!t.target.responseType && typeof a.extract != "function") try { n = E(t.target.responseText) } catch { n = null } } else(!d || d === "text") && n == null && (n = t.target.responseText); if (typeof a.extract == "function" ? (n = a.extract(t.target, a), e = !0) : typeof a.deserialize == "function" && (n = a.deserialize(n)), e) l(n); else { var s = function() { try { i = t.target.responseText } catch { i = n } var e = new Error(i); e.code = t.target.status, e.response = n, c(e) }; u.status === 0 ? setTimeout(function() { h || s() }) : s() } } catch (o) { c(o) } }, u.ontimeout = function(e) { h = !0; var t = new Error("Request timed out"); t.code = e.target.status, c(t) }, typeof a.config == "function" && (u = a.config(u, a, r) || u, u !== i && (s = u.abort, u.abort = function() { f = !0, s.call(this) })), t == null ? u.send() : typeof a.serialize == "function" ? u.send(a.serialize(t)) : t instanceof m.FormData || t instanceof m.URLSearchParams ? u.send(t) : u.send(le(t)) }), jsonp: e(function(e, t, n, i) { var s = t.callbackName || "_mithril_" + H(Math.random() * 1e16) + "_" + r++, o = m.document.createElement("script"); m[s] = function(e) { delete m[s], o.parentNode.removeChild(o), n(e) }, o.onerror = function() { delete m[s], o.parentNode.removeChild(o), i(new Error("JSONP request failed")) }, o.src = e + (e.indexOf("?") < 0 ? "?" : "&") + encodeURIComponent(t.callbackKey || "callback") + "=" + encodeURIComponent(s), m.document.documentElement.appendChild(o) }) } }, Ed = $c, Td = hd, Cd = Sd(typeof window < "u" ? window : null, Ed, Td.redraw), Bd, Dd; function Pd() { if (Dd) return Bd; Dd = 1; function m(e) { try { return decodeURIComponent(e) } catch { return e } } return Bd = function(e) { if (e === "" || e == null) return {}; e.charAt(0) === "?" && (e = e.slice(1)); for (var t = e.split("&"), n = {}, i = {}, s = 0; s < t.length; s++) { var o = t[s].split("="), r = m(o[0]), a = o.length === 2 ? m(o[1]) : ""; a === "true" ? a = !0 : a === "false" && (a = !1); var l = r.split(/\]\[?|\[/), c = i; r.indexOf("[") > -1 && l.pop(); for (var d = 0; d < l.length; d++) { var u = l[d], f = l[d + 1], h = f == "" || !isNaN(parseInt(f, 10)); if (u === "") { var r = l.slice(0, d).join(); n[r] == null && (n[r] = Array.isArray(c) ? c.length : 0), u = n[r]++ } else if (u === "__proto__") break; if (d === l.length - 1) c[u] = a; else { var p = Object.getOwnPropertyDescriptor(c, u); p != null && (p = p.value), p == null && (c[u] = p = h ? [] : {}), c = p } } } return i }, Bd } var Rd, Md; function Nd() { if (Md) return Rd; Md = 1; var r = Pd(); return Rd = function(e) { var t = e.indexOf("?"), n = e.indexOf("#"), i = n < 0 ? e.length : n, s = t < 0 ? i : t, o = e.slice(0, s).replace(/\/{2,}/g, "/"); return o ? (o[0] !== "/" && (o = "/" + o), o.length > 1 && o[o.length - 1] === "/" && (o = o.slice(0, -1))) : o = "/", { path: o, params: t < 0 ? {} : r(e.slice(t + 1, i)) } }, Rd } var Od, Ld; function Fd() { if (Ld) return Od; Ld = 1; var t = Nd(); return Od = function(e) { var i = t(e), s = Object.keys(i.params), o = [], r = new RegExp("^" + i.path.replace(/:([^\/.-]+)(\.{3}|\.(?!\.)|-)?|[\\^$*+.()|\[\]{}]/g, function(e, t, n) { return t == null ? "\\" + e : (o.push({ k: t, r: n === "..." }), n === "..." ? "(.*)" : n === "." ? "([^/]+)\\." : "([^/]+)" + (n || "")) }) + "$"); return function(e) { for (var t = 0; t < s.length; t++) if (i.params[s[t]] !== e.params[s[t]]) return !1; if (!o.length) return r.test(e.path); var n = r.exec(e.path); if (n == null) return !1; for (var t = 0; t < o.length; t++) e.params[o[t].k] = o[t].r ? n[t + 1] : decodeURIComponent(n[t + 1]); return !0 } }, Od } var _d, Vd; function Ud() { if (Vd) return _d; Vd = 1; var s = Nc, o = new RegExp("^(?:key|oninit|oncreate|onbeforeupdate|onupdate|onbeforeremove|onremove)$"); return _d = function(e, t) { var n = {}; if (t != null) for (var i in e) s.call(e, i) && !o.test(i) && t.indexOf(i) < 0 && (n[i] = e[i]); else for (var i in e) s.call(e, i) && !o.test(i) && (n[i] = e[i]); return n }, _d } var jd, Hd; function Wd() { if (Hd) return jd; Hd = 1; var n = Pc(), l = Qc, i = $c, A = kd(), I = Nd(), S = Fd(), E = wd(), T = Ud(), C = {}; function B(e) { try { return decodeURIComponent(e) } catch { return e } } return jd = function(c, d) { var e = c == null ? null : typeof c.setImmediate == "function" ? c.setImmediate : c.setTimeout, u = i.resolve(), t = !1, o = !1, f = 0, h, p, m = C, g, y, x, w, s = { onbeforeupdate: function() { return f = f ? 2 : 1, !(!f || C === m) }, onremove: function() { c.removeEventListener("popstate", a, !1), c.removeEventListener("hashchange", r, !1) }, view: function() { if (!(!f || C === m)) { var e = [n(g, y.key, y)]; return m && (e = m.render(e[0])), e } } }, b = k.SKIP = {}; function r() { t = !1; var e = c.location.hash; k.prefix[0] !== "#" && (e = c.location.search + e, k.prefix[0] !== "?" && (e = c.location.pathname + e, e[0] !== "/" && (e = "/" + e))); var o = e.concat().replace(/(?:%[a-f89][a-f0-9])+/gim, B).slice(k.prefix.length), r = I(o); E(r.params, c.history.state); function a(e) { console.error(e), v(p, null, { replace: !0 }) } l(0); function l(t) { for (; t < h.length; t++) if (h[t].check(r)) { var n = h[t].component, e = h[t].route, i = n, s = w = function(e) { if (s === w) { if (e === b) return l(t + 1); g = e != null && (typeof e.view == "function" || typeof e == "function") ? e : "div", y = r.params, x = o, w = null, m = n.render ? n : null, f === 2 ? d.redraw() : (f = 2, d.redraw.sync()) } }; n.view || typeof n == "function" ? (n = {}, s(i)) : n.onmatch ? u.then(function() { return n.onmatch(r.params, o, e) }).then(s, o === p ? null : a) : s("div"); return } if (o === p) throw new Error("Could not resolve default route " + p + "."); v(p, null, { replace: !0 }) } } function a() { t || (t = !0, e(r)) } function v(e, t, n) { if (e = A(e, t), o) { a(); var i = n ? n.state : null, s = n ? n.title : null; n && n.replace ? c.history.replaceState(i, s, k.prefix + e) : c.history.pushState(i, s, k.prefix + e) } else c.location.href = k.prefix + e } function k(e, t, n) { if (!e) throw new TypeError("DOM element being rendered to does not exist."); if (h = Object.keys(n).map(function(e) { if (e[0] !== "/") throw new SyntaxError("Routes must start with a '/'."); if (/:([^\/\.-]+)(\.{3})?:/.test(e)) throw new SyntaxError("Route parameter names must be separated with either '/', '.', or '-'."); return { route: e, component: n[e], check: S(e) } }), p = t, t != null) { var i = I(t); if (!h.some(function(e) { return e.check(i) })) throw new ReferenceError("Default route doesn't match any known routes.") } typeof c.history.pushState == "function" ? c.addEventListener("popstate", a, !1) : k.prefix[0] === "#" && c.addEventListener("hashchange", r, !1), o = !0, d.mount(e, s), r() } return k.set = function(e, t, n) { w != null && (n = n || {}, n.replace = !0), w = null, v(e, t, n) }, k.get = function() { return x }, k.prefix = "#!", k.Link = { view: function(e) { var t = l(e.attrs.selector || "a", T(e.attrs, ["options", "params", "selector", "onclick"]), e.children), n, i, s; return (t.attrs.disabled = Boolean(t.attrs.disabled)) ? (t.attrs.href = null, t.attrs["aria-disabled"] = "true") : (n = e.attrs.options, i = e.attrs.onclick, s = A(t.attrs.href, e.attrs.params), t.attrs.href = k.prefix + s, t.attrs.onclick = function(e) { var t; typeof i == "function" ? t = i.call(e.currentTarget, e) : i == null || typeof i != "object" || typeof i.handleEvent == "function" && i.handleEvent(e), t !== !1 && !e.defaultPrevented && (e.button === 0 || e.which === 0 || e.which === 1) && (!e.currentTarget.target || e.currentTarget.target === "_self") && !e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey && (e.preventDefault(), e.redraw = !1, k.set(s, null, n)) }), t } }, k.param = function(e) { return y && e != null ? y[e] : y }, k }, jd } var Qd, Yd; function zd() { if (Yd) return Qd; Yd = 1; var e = hd; return Qd = Wd()(typeof window < "u" ? window : null, e), Qd } var Gd = qc, Kd = Cd, Xd = hd, Jd = function() { return Gd.apply(this, arguments) }; Jd.m = Gd; Jd.trust = Gd.trust; Jd.fragment = Gd.fragment; Jd.Fragment = "["; Jd.mount = Xd.mount; Jd.route = zd(); Jd.render = cd(); Jd.redraw = Xd.redraw; Jd.request = Kd.request; Jd.jsonp = Kd.jsonp; Jd.parseQueryString = Pd(); Jd.buildQueryString = gd(); Jd.parsePathname = Nd(); Jd.buildPathname = kd(); Jd.vnode = Pc(); Jd.PromisePolyfill = nd(); Jd.censor = Ud(); var qd = Jd; function $d(e, t, n, i, s) { this.debugLog = !1, this.baseUrl = e, this.lobbySize = n, this.devPort = t, this.lobbySpread = i, this.rawIPs = !!s, this.server = void 0, this.gameIndex = void 0, this.callback = void 0, this.errorCallback = void 0 } $d.prototype.regionInfo = { 0: { name: "Local", latitude: 0, longitude: 0 }, "us-east": { name: "Miami", latitude: 40.1393329, longitude: -75.8521818 }, miami: { name: "Miami", latitude: 40.1393329, longitude: -75.8521818 }, "us-west": { name: "Silicon Valley", latitude: 47.6149942, longitude: -122.4759879 }, siliconvalley: { name: "Silicon Valley", latitude: 47.6149942, longitude: -122.4759879 }, gb: { name: "London", latitude: 51.5283063, longitude: -.382486 }, london: { name: "London", latitude: 51.5283063, longitude: -.382486 }, "eu-west": { name: "Frankfurt", latitude: 50.1211273, longitude: 8.496137 }, frankfurt: { name: "Frankfurt", latitude: 50.1211273, longitude: 8.496137 }, au: { name: "Sydney", latitude: -33.8479715, longitude: 150.651084 }, sydney: { name: "Sydney", latitude: -33.8479715, longitude: 150.651084 }, saopaulo: { name: "São Paulo", latitude: 23.5558, longitude: 46.6396 }, sg: { name: "Singapore", latitude: 1.3147268, longitude: 103.7065876 }, singapore: { name: "Singapore", latitude: 1.3147268, longitude: 103.7065876 } }; $d.prototype.start = function(e, t, n, i) { if (this.callback = t, this.errorCallback = n, i) return t(); const s = this.parseServerQuery(e); s && s.length > 0 ? (this.log("Found server in query."), this.password = s[3], this.connect(s[0], s[1], s[2])) : this.errorCallback("Unable to find server") }; $d.prototype.parseServerQuery = function(e) { const t = new URLSearchParams(location.search, !0), n = e || t.get("server"); if (typeof n != "string") return []; const [i, s] = n.split(":"); return [i, s, t.get("password")] }; $d.prototype.findServer = function(e, t) { var n = this.servers[e]; for (let e = 0; e < n.length; e++) { const i = n[e]; if (i.name === t) return i } console.warn("Could not find server in region " + e + " with serverName " + t + ".") }; $d.prototype.seekServer = function(e, t, n) { n == null && (n = "random"), t == null && (t = !1); const i = ["random"], s = this.lobbySize, o = this.lobbySpread, r = this.servers[e].flatMap(function(n) { let i = 0; return n.games.map(function(e) { const t = i++; return { region: n.region, index: n.index * n.games.length + t, gameIndex: t, gameCount: n.games.length, playerCount: e.playerCount, playerCapacity: 50, isPrivate: e.isPrivate } }) }).filter(function(e) { return !e.isPrivate }).filter(function(e) { return t ? e.playerCount == 0 && e.gameIndex >= e.gameCount / 2 : !0 }).filter(function(e) { return n == "random" ? !0 : i[e.index % i.length].key == n }).sort(function(e, t) { return t.playerCount - e.playerCount }).filter(function(e) { return e.playerCount < s }); if (t && r.reverse(), r.length == 0) { this.errorCallback("No open servers."); return } const a = j(o, r.length); var l = f(Math.random() * a); l = j(l, r.length - 1); const c = r[l], d = c.region; var l = f(c.index / c.gameCount); const u = c.index % c.gameCount; return this.log("Found server."), [d, l, u] }; $d.prototype.connect = function(e, t, n) { if (this.connected) return; const i = this.findServer(e, t); if (i == null) { this.errorCallback("Failed to find server for region " + e + " and serverName " + t); return } if (this.log("Connecting to server", i, "with game index", n), i.playerCount >= 50) { this.errorCallback("Server is already full."); return } window.history.replaceState(document.title, document.title, this.generateHref(e, t, this.password)), this.server = i, this.gameIndex = n, this.log("Calling callback with address", this.serverAddress(i), "on port", this.serverPort(i)), this.callback(this.serverAddress(i), this.serverPort(i), n), Zd && clearInterval(Zd) }; $d.prototype.switchServer = function(e, t) { this.switchingServers = !0, window.location = this.generateHref(e, t, null) }; $d.prototype.generateHref = function(e, t, n) { let i = window.location.href.split("?")[0]; return i += "?server=" + e + ":" + t, n && (i += "&password=" + encodeURIComponent(n)), i }; $d.prototype.serverAddress = function(e) { return e.region == 0 ? "localhost" : e.key + "." + e.region + "." + this.baseUrl }; $d.prototype.serverPort = function(e) { return e.port }; let Zd; function eu(e) { e = e.filter(e => e.playerCount !== 50); const t = j(...e.map(e => e.ping || 1 / 0)), n = e.filter(e => e.ping === t); return !n.length > 0 ? null : n.reduce((e, t) => e.playerCount > t.playerCount ? e : t) } $d.prototype.processServers = function(l) { return Zd && clearInterval(Zd), new Promise(e => { const a = {}, t = e => { const n = a[e], t = n[0]; let i = this.serverAddress(t); const s = this.serverPort(t); s && (i += `:${s}`); const o = `https://${i}/ping`, r = (new Date).getTime(); return Promise.race([fetch(o).then(() => { const t = (new Date).getTime() - r; n.forEach(e => { e.pings = e.pings ?? [], e.pings.push(t), e.pings.length > 10 && e.pings.shift(), e.ping = f(e.pings.reduce((e, t) => e + t, 0) / e.pings.length) }) })["catch"](() => {}), new Promise(e => setTimeout(() => e(), 100))]) }, n = async () => { await Promise.all(Object.keys(a).map(t)), window.blockRedraw || qd.redraw() }; l.forEach(e => { a[e.region] = a[e.region] || [], a[e.region].push(e) }); for (const r in a) a[r] = a[r].sort(function(e, t) { return t.playerCount - e.playerCount }); this.servers = a; let i; const [s, o] = this.parseServerQuery(); l.forEach(e => { s === e.region && o === e.name && (e.selected = !0, i = e) }), n().then(n).then(() => { if (i) return; let e = eu(l); e || (e = l[0]), e && (e.selected = !0, window.history.replaceState(document.title, document.title, this.generateHref(e.region, e.name, this.password))), window.blockRedraw || qd.redraw() }).then(n)["catch"](e => {})["finally"](e), Zd = setInterval(n, 5e3) }) }; $d.prototype.ipToHex = function(e) { return e.split(".").map(e => ("00" + parseInt(e).toString(16)).substr(-2)).join("").toLowerCase() }; $d.prototype.hashIP = function(e) { return bc(this.ipToHex(e)) }; $d.prototype.log = function() { if (this.debugLog) return console.log.apply(void 0, arguments); if (console.verbose) return console.verbose.apply(void 0, arguments) }; $d.prototype.stripRegion = function(e) { return e.startsWith("vultr:") ? e = e.slice(6) : e.startsWith("do:") && (e = e.slice(3)), e }; const tu = function(e, t) { return e.concat(t) }, nu = function(e, t) { return t.map(e).reduce(tu, []) }; Array.prototype.flatMap = function(e) { return nu(e, this) }; const iu = (e, t) => { const n = t.x - e.x, i = t.y - e.y; return D(n * n + i * i) }, su = (e, t) => { const n = t.x - e.x, i = t.y - e.y; return au(P(i, n)) }, ou = (e, t, n) => { const i = { x: 0, y: 0 }; return n = ru(n), i.x = e.x - t * U(n), i.y = e.y - t * V(n), i }, ru = e => e * (W / 180), au = e => e * (180 / W), lu = e => isNaN(e.buttons) ? e.pressure !== 0 : e.buttons !== 0, cu = new Map, du = e => { cu.has(e) && clearTimeout(cu.get(e)), cu.set(e, setTimeout(e, 100)) }, uu = (t, e, n) => { const i = e.split(/[ ,]+/g); let s; for (let e = 0; e < i.length; e += 1) s = i[e], t.addEventListener ? t.addEventListener(s, n, !1) : t.attachEvent && t.attachEvent(s, n) }, fu = (t, e, n) => { const i = e.split(/[ ,]+/g); let s; for (let e = 0; e < i.length; e += 1) s = i[e], t.removeEventListener ? t.removeEventListener(s, n) : t.detachEvent && t.detachEvent(s, n) }, hu = e => (e.preventDefault(), e.type.match(/^touch/) ? e.changedTouches : e), pu = () => { const e = window.pageXOffset !== void 0 ? window.pageXOffset : (document.documentElement || document.body.parentNode || document.body).scrollLeft, t = window.pageYOffset !== void 0 ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop; return { x: e, y: t } }, mu = (e, t) => { t.top || t.right || t.bottom || t.left ? (e.style.top = t.top, e.style.right = t.right, e.style.bottom = t.bottom, e.style.left = t.left) : (e.style.left = t.x + "px", e.style.top = t.y + "px") }, gu = (e, i, s) => { const t = xu(e); for (let e in t) if (t.hasOwnProperty(e)) if (typeof i == "string") t[e] = i + " " + s; else { let n = ""; for (let e = 0, t = i.length; e < t; e += 1) n += i[e] + " " + s + ", "; t[e] = n.slice(0, -2) } return t }, yu = (e, t) => { const n = xu(e); for (let e in n) n.hasOwnProperty(e) && (n[e] = t); return n }, xu = t => { const n = {}; return n[t] = "", ["webkit", "Moz", "o"].forEach(function(e) { n[e + t.charAt(0).toUpperCase() + t.slice(1)] = "" }), n }, wu = (t, n) => { for (let e in n) n.hasOwnProperty(e) && (t[e] = n[e]); return t }, bu = (t, n) => { const i = {}; for (let e in t) t.hasOwnProperty(e) && n.hasOwnProperty(e) ? i[e] = n[e] : t.hasOwnProperty(e) && (i[e] = t[e]); return i }, vu = (n, i) => { if (n.length) for (let e = 0, t = n.length; e < t; e += 1) i(n[e]); else i(n) }, ku = (e, t, n) => ({ x: j(oe(e.x, t.x - n), t.x + n), y: j(oe(e.y, t.y - n), t.y + n) }); var Au = "ontouchstart" in window, Iu = !!window.PointerEvent, Su = !!window.MSPointerEvent, Eu = { touch: { start: "touchstart", move: "touchmove", end: "touchend, touchcancel" }, mouse: { start: "mousedown", move: "mousemove", end: "mouseup" }, pointer: { start: "pointerdown", move: "pointermove", end: "pointerup, pointercancel" }, MSPointer: { start: "MSPointerDown", move: "MSPointerMove", end: "MSPointerUp" } }, Tu, Cu = {}; Iu ? Tu = Eu.pointer : Su ? Tu = Eu.MSPointer : Au ? (Tu = Eu.touch, Cu = Eu.mouse) : Tu = Eu.mouse; function Bu() {} Bu.prototype.on = function(e, t) { var n = this, i = e.split(/[ ,]+/g), s; n._handlers_ = n._handlers_ || {}; for (var o = 0; o < i.length; o += 1) s = i[o], n._handlers_[s] = n._handlers_[s] || [], n._handlers_[s].push(t); return n }; Bu.prototype.off = function(e, t) { var n = this; return n._handlers_ = n._handlers_ || {}, e === void 0 ? n._handlers_ = {} : t === void 0 ? n._handlers_[e] = null : n._handlers_[e] && n._handlers_[e].indexOf(t) >= 0 && n._handlers_[e].splice(n._handlers_[e].indexOf(t), 1), n }; Bu.prototype.trigger = function(e, t) { var n = this, i = e.split(/[ ,]+/g), s; n._handlers_ = n._handlers_ || {}; for (var o = 0; o < i.length; o += 1) s = i[o], n._handlers_[s] && n._handlers_[s].length && n._handlers_[s].forEach(function(e) { e.call(n, { type: s, target: n }, t) }) }; Bu.prototype.config = function(e) { var t = this; t.options = t.defaults || {}, e && (t.options = bu(t.options, e)) }; Bu.prototype.bindEvt = function(e, t) { var n = this; return n._domHandlers_ = n._domHandlers_ || {}, n._domHandlers_[t] = function() { typeof n["on" + t] == "function" ? n["on" + t].apply(n, arguments) : console.warn('[WARNING] : Missing "on' + t + '" handler.') }, uu(e, Tu[t], n._domHandlers_[t]), Cu[t] && uu(e, Cu[t], n._domHandlers_[t]), n }; Bu.prototype.unbindEvt = function(e, t) { var n = this; return n._domHandlers_ = n._domHandlers_ || {}, fu(e, Tu[t], n._domHandlers_[t]), Cu[t] && fu(e, Cu[t], n._domHandlers_[t]), delete n._domHandlers_[t], this }; function Du(e, t) { return this.identifier = t.identifier, this.position = t.position, this.frontPosition = t.frontPosition, this.collection = e, this.defaults = { size: 100, threshold: .1, color: "white", fadeTime: 250, dataOnly: !1, restJoystick: !0, restOpacity: .5, mode: "dynamic", zone: document.body, lockX: !1, lockY: !1, shape: "circle" }, this.config(t), this.options.mode === "dynamic" && (this.options.restOpacity = 0), this.id = Du.id, Du.id += 1, this.buildEl().stylize(), this.instance = { el: this.ui.el, on: this.on.bind(this), off: this.off.bind(this), show: this.show.bind(this), hide: this.hide.bind(this), add: this.addToDom.bind(this), remove: this.removeFromDom.bind(this), destroy: this.destroy.bind(this), setPosition: this.setPosition.bind(this), resetDirection: this.resetDirection.bind(this), computeDirection: this.computeDirection.bind(this), trigger: this.trigger.bind(this), position: this.position, frontPosition: this.frontPosition, ui: this.ui, identifier: this.identifier, id: this.id, options: this.options }, this.instance } Du.prototype = new Bu; Du.constructor = Du; Du.id = 0; Du.prototype.buildEl = function(e) { return this.ui = {}, this.options.dataOnly ? this : (this.ui.el = document.createElement("div"), this.ui.back = document.createElement("div"), this.ui.front = document.createElement("div"), this.ui.el.className = "nipple collection_" + this.collection.id, this.ui.back.className = "back", this.ui.front.className = "front", this.ui.el.setAttribute("id", "nipple_" + this.collection.id + "_" + this.id), this.ui.el.appendChild(this.ui.back), this.ui.el.appendChild(this.ui.front), this) }; Du.prototype.stylize = function() { if (this.options.dataOnly) return this; var e = this.options.fadeTime + "ms", t = yu("borderRadius", "50%"), n = gu("transition", "opacity", e), i = {}; return i.el = { position: "absolute", opacity: this.options.restOpacity, display: "block", zIndex: 999 }, i.back = { position: "absolute", display: "block", width: this.options.size + "px", height: this.options.size + "px", marginLeft: -this.options.size / 2 + "px", marginTop: -this.options.size / 2 + "px", background: this.options.color, opacity: ".5" }, i.front = { width: this.options.size / 2 + "px", height: this.options.size / 2 + "px", position: "absolute", display: "block", marginLeft: -this.options.size / 4 + "px", marginTop: -this.options.size / 4 + "px", background: this.options.color, opacity: ".5", transform: "translate(0px, 0px)" }, wu(i.el, n), this.options.shape === "circle" && wu(i.back, t), wu(i.front, t), this.applyStyles(i), this }; Du.prototype.applyStyles = function(e) { for (var t in this.ui) if (this.ui.hasOwnProperty(t)) for (var n in e[t]) this.ui[t].style[n] = e[t][n]; return this }; Du.prototype.addToDom = function() { return this.options.dataOnly || document.body.contains(this.ui.el) ? this : (this.options.zone.appendChild(this.ui.el), this) }; Du.prototype.removeFromDom = function() { return this.options.dataOnly || !document.body.contains(this.ui.el) ? this : (this.options.zone.removeChild(this.ui.el), this) }; Du.prototype.destroy = function() { clearTimeout(this.removeTimeout), clearTimeout(this.showTimeout), clearTimeout(this.restTimeout), this.trigger("destroyed", this.instance), this.removeFromDom(), this.off() }; Du.prototype.show = function(e) { var t = this; return t.options.dataOnly || (clearTimeout(t.removeTimeout), clearTimeout(t.showTimeout), clearTimeout(t.restTimeout), t.addToDom(), t.restCallback(), setTimeout(function() { t.ui.el.style.opacity = 1 }, 0), t.showTimeout = setTimeout(function() { t.trigger("shown", t.instance), typeof e == "function" && e.call(this) }, t.options.fadeTime)), t }; Du.prototype.hide = function(t) { var n = this; if (n.options.dataOnly) return n; if (n.ui.el.style.opacity = n.options.restOpacity, clearTimeout(n.removeTimeout), clearTimeout(n.showTimeout), clearTimeout(n.restTimeout), n.removeTimeout = setTimeout(function() { var e = n.options.mode === "dynamic" ? "none" : "block"; n.ui.el.style.display = e, typeof t == "function" && t.call(n), n.trigger("hidden", n.instance) }, n.options.fadeTime), n.options.restJoystick) { const e = n.options.restJoystick, i = {}; i.x = e === !0 || e.x !== !1 ? 0 : n.instance.frontPosition.x, i.y = e === !0 || e.y !== !1 ? 0 : n.instance.frontPosition.y, n.setPosition(t, i) } return n }; Du.prototype.setPosition = function(e, t) { var n = this; n.frontPosition = { x: t.x, y: t.y }; var i = n.options.fadeTime + "ms", s = {}; s.front = gu("transition", ["transform"], i); var o = { front: {} }; o.front = { transform: "translate(" + n.frontPosition.x + "px," + n.frontPosition.y + "px)" }, n.applyStyles(s), n.applyStyles(o), n.restTimeout = setTimeout(function() { typeof e == "function" && e.call(n), n.restCallback() }, n.options.fadeTime) }; Du.prototype.restCallback = function() { var e = this, t = {}; t.front = gu("transition", "none", ""), e.applyStyles(t), e.trigger("rested", e.instance) }; Du.prototype.resetDirection = function() { this.direction = { x: !1, y: !1, angle: !1 } }; Du.prototype.computeDirection = function(e) { var t = e.angle.radian, n = W / 4, i = W / 2, s, o, r; if (t > n && t < n * 3 && !e.lockX ? s = "up" : t > -n && t <= n && !e.lockY ? s = "left" : t > -n * 3 && t <= -n && !e.lockX ? s = "down" : e.lockY || (s = "right"), e.lockY || (t > -i && t < i ? o = "left" : o = "right"), e.lockX || (t > 0 ? r = "up" : r = "down"), e.force > this.options.threshold) { var a = {}, l; for (l in this.direction) this.direction.hasOwnProperty(l) && (a[l] = this.direction[l]); var c = {}; this.direction = { x: o, y: r, angle: s }, e.direction = this.direction; for (l in a) a[l] === this.direction[l] && (c[l] = !0); if (c.x && c.y && c.angle) return e; (!c.x || !c.y) && this.trigger("plain", e), c.x || this.trigger("plain:" + o, e), c.y || this.trigger("plain:" + r, e), c.angle || this.trigger("dir dir:" + s, e) } else this.resetDirection(); return e }; function Pu(e, t) { var n = this; n.nipples = [], n.idles = [], n.actives = [], n.ids = [], n.pressureIntervals = {}, n.manager = e, n.id = Pu.id, Pu.id += 1, n.defaults = { zone: document.body, multitouch: !1, maxNumberOfNipples: 10, mode: "dynamic", position: { top: 0, left: 0 }, catchDistance: 200, size: 100, threshold: .1, color: "white", fadeTime: 250, dataOnly: !1, restJoystick: !0, restOpacity: .5, lockX: !1, lockY: !1, shape: "circle", dynamicPage: !1, follow: !1 }, n.config(t), (n.options.mode === "static" || n.options.mode === "semi") && (n.options.multitouch = !1), n.options.multitouch || (n.options.maxNumberOfNipples = 1); const i = getComputedStyle(n.options.zone.parentElement); return i && i.display === "flex" && (n.parentIsFlex = !0), n.updateBox(), n.prepareNipples(), n.bindings(), n.begin(), n.nipples } Pu.prototype = new Bu; Pu.constructor = Pu; Pu.id = 0; Pu.prototype.prepareNipples = function() { var e = this, i = e.nipples; i.on = e.on.bind(e), i.off = e.off.bind(e), i.options = e.options, i.destroy = e.destroy.bind(e), i.ids = e.ids, i.id = e.id, i.processOnMove = e.processOnMove.bind(e), i.processOnEnd = e.processOnEnd.bind(e), i.get = function(e) { if (e === void 0) return i[0]; for (var t = 0, n = i.length; t < n; t += 1) if (i[t].identifier === e) return i[t]; return !1 } }; Pu.prototype.bindings = function() { var e = this; e.bindEvt(e.options.zone, "start"), e.options.zone.style.touchAction = "none", e.options.zone.style.msTouchAction = "none" }; Pu.prototype.begin = function() { var e = this, t = e.options; if (t.mode === "static") { var n = e.createNipple(t.position, e.manager.getIdentifier()); n.add(), e.idles.push(n) } }; Pu.prototype.createNipple = function(e, t) { var n = this, i = n.manager.scroll, s = {}, o = n.options, r = { x: n.parentIsFlex ? i.x : i.x + n.box.left, y: n.parentIsFlex ? i.y : i.y + n.box.top }; if (e.x && e.y) s = { x: e.x - r.x, y: e.y - r.y }; else if (e.top || e.right || e.bottom || e.left) { var a = document.createElement("DIV"); a.style.display = "hidden", a.style.top = e.top, a.style.right = e.right, a.style.bottom = e.bottom, a.style.left = e.left, a.style.position = "absolute", o.zone.appendChild(a); var l = a.getBoundingClientRect(); o.zone.removeChild(a), s = e, e = { x: l.left + i.x, y: l.top + i.y } } var c = new Du(n, { color: o.color, size: o.size, threshold: o.threshold, fadeTime: o.fadeTime, dataOnly: o.dataOnly, restJoystick: o.restJoystick, restOpacity: o.restOpacity, mode: o.mode, identifier: t, position: e, zone: o.zone, frontPosition: { x: 0, y: 0 }, shape: o.shape }); return o.dataOnly || (mu(c.ui.el, s), mu(c.ui.front, c.frontPosition)), n.nipples.push(c), n.trigger("added " + c.identifier + ":added", c), n.manager.trigger("added " + c.identifier + ":added", c), n.bindNipple(c), c }; Pu.prototype.updateBox = function() { var e = this; e.box = e.options.zone.getBoundingClientRect() }; Pu.prototype.bindNipple = function(e) { var n = this, i, t = function(e, t) { i = e.type + " " + t.id + ":" + e.type, n.trigger(i, t) }; e.on("destroyed", n.onDestroyed.bind(n)), e.on("shown hidden rested dir plain", t), e.on("dir:up dir:right dir:down dir:left", t), e.on("plain:up plain:right plain:down plain:left", t) }; Pu.prototype.pressureFn = function(t, n, e) { var i = this, s = 0; clearInterval(i.pressureIntervals[e]), i.pressureIntervals[e] = setInterval(function() { var e = t.force || t.pressure || t.webkitForce || 0; e !== s && (n.trigger("pressure", e), i.trigger("pressure " + n.identifier + ":pressure", e), s = e) }.bind(i), 100) }; Pu.prototype.onstart = function(n) { var i = this, t = i.options, s = n; n = hu(n), i.updateBox(); var e = function(e) { i.actives.length < t.maxNumberOfNipples ? i.processOnStart(e) : s.type.match(/^touch/) && (Object.keys(i.manager.ids).forEach(function(t) { if (Object.values(s.touches).findIndex(function(e) { return e.identifier === t }) < 0) { var e = [n[0]]; e.identifier = t, i.processOnEnd(e) } }), i.actives.length < t.maxNumberOfNipples && i.processOnStart(e)) }; return vu(n, e), i.manager.bindDocument(), !1 }; Pu.prototype.processOnStart = function(t) { var n = this, e = n.options, i, s = n.manager.getIdentifier(t), o = t.force || t.pressure || t.webkitForce || 0, r = { x: t.pageX, y: t.pageY }, a = n.getOrCreate(s, r); a.identifier !== s && n.manager.removeIdentifier(a.identifier), a.identifier = s; var l = function(e) { e.trigger("start", e), n.trigger("start " + e.id + ":start", e), e.show(), o > 0 && n.pressureFn(t, e, e.identifier), n.processOnMove(t) }; if ((i = n.idles.indexOf(a)) >= 0 && n.idles.splice(i, 1), n.actives.push(a), n.ids.push(a.identifier), e.mode !== "semi") l(a); else { var c = iu(r, a.position); if (c <= e.catchDistance) l(a); else { a.destroy(), n.processOnStart(t); return } } return a }; Pu.prototype.getOrCreate = function(e, t) { var n = this, i = n.options, s; return /(semi|static)/.test(i.mode) ? (s = n.idles[0], s ? (n.idles.splice(0, 1), s) : i.mode === "semi" ? n.createNipple(t, e) : (console.warn("Coudln't find the needed nipple."), !1)) : (s = n.createNipple(t, e), s) }; Pu.prototype.processOnMove = function(e) { var n = this, t = n.options, i = n.manager.getIdentifier(e), s = n.nipples.get(i), o = n.manager.scroll; if (!lu(e)) { this.processOnEnd(e); return } if (!s) { console.error("Found zombie joystick with ID " + i), n.manager.removeIdentifier(i); return } if (t.dynamicPage) { var r = s.el.getBoundingClientRect(); s.position = { x: o.x + r.left, y: o.y + r.top } } s.identifier = i; var a = s.options.size / 2, l = { x: e.pageX, y: e.pageY }; t.lockX && (l.y = s.position.y), t.lockY && (l.x = s.position.x); var c = iu(l, s.position), d = su(l, s.position), u = ru(d), f = c / a, h = { distance: c, position: l }, p, m; if (s.options.shape === "circle" ? (p = j(c, a), m = ou(s.position, p, d)) : (m = ku(l, s.position, a), p = iu(m, s.position)), t.follow) { if (c > a) { let e = l.x - m.x, t = l.y - m.y; s.position.x += e, s.position.y += t, s.el.style.top = s.position.y - (n.box.top + o.y) + "px", s.el.style.left = s.position.x - (n.box.left + o.x) + "px", c = iu(l, s.position) } } else l = m, c = p; var g = l.x - s.position.x, y = l.y - s.position.y; s.frontPosition = { x: g, y: y }, t.dataOnly || (s.ui.front.style.transform = "translate(" + g + "px," + y + "px)"); var x = { identifier: s.identifier, position: l, force: f, pressure: e.force || e.pressure || e.webkitForce || 0, distance: c, angle: { radian: u, degree: d }, vector: { x: g / a, y: -y / a }, raw: h, instance: s, lockX: t.lockX, lockY: t.lockY }; x = s.computeDirection(x), x.angle = { radian: ru(180 - d), degree: 180 - d }, s.trigger("move", x), n.trigger("move " + s.id + ":move", x) }; Pu.prototype.processOnEnd = function(e) { var t = this, n = t.options, i = t.manager.getIdentifier(e), s = t.nipples.get(i), o = t.manager.removeIdentifier(s.identifier); s && (n.dataOnly || s.hide(function() { n.mode === "dynamic" && (s.trigger("removed", s), t.trigger("removed " + s.id + ":removed", s), t.manager.trigger("removed " + s.id + ":removed", s), s.destroy()) }), clearInterval(t.pressureIntervals[s.identifier]), s.resetDirection(), s.trigger("end", s), t.trigger("end " + s.id + ":end", s), t.ids.indexOf(s.identifier) >= 0 && t.ids.splice(t.ids.indexOf(s.identifier), 1), t.actives.indexOf(s) >= 0 && t.actives.splice(t.actives.indexOf(s), 1), /(semi|static)/.test(n.mode) ? t.idles.push(s) : t.nipples.indexOf(s) >= 0 && t.nipples.splice(t.nipples.indexOf(s), 1), t.manager.unbindDocument(), /(semi|static)/.test(n.mode) && (t.manager.ids[o.id] = o.identifier)) }; Pu.prototype.onDestroyed = function(e, t) { var n = this; n.nipples.indexOf(t) >= 0 && n.nipples.splice(n.nipples.indexOf(t), 1), n.actives.indexOf(t) >= 0 && n.actives.splice(n.actives.indexOf(t), 1), n.idles.indexOf(t) >= 0 && n.idles.splice(n.idles.indexOf(t), 1), n.ids.indexOf(t.identifier) >= 0 && n.ids.splice(n.ids.indexOf(t.identifier), 1), n.manager.removeIdentifier(t.identifier), n.manager.unbindDocument() }; Pu.prototype.destroy = function() { var e = this; e.unbindEvt(e.options.zone, "start"), e.nipples.forEach(function(e) { e.destroy() }); for (var t in e.pressureIntervals) e.pressureIntervals.hasOwnProperty(t) && clearInterval(e.pressureIntervals[t]); e.trigger("destroyed", e.nipples), e.manager.unbindDocument(), e.off() }; function Ru(e) { var n = this; n.ids = {}, n.index = 0, n.collections = [], n.scroll = pu(), n.config(e), n.prepareCollections(); var t = function() { var t; n.collections.forEach(function(e) { e.forEach(function(e) { t = e.el.getBoundingClientRect(), e.position = { x: n.scroll.x + t.left, y: n.scroll.y + t.top } }) }) }; uu(window, "resize", function() { du(t) }); var i = function() { n.scroll = pu() }; return uu(window, "scroll", function() { du(i) }), n.collections } Ru.prototype = new Bu; Ru.constructor = Ru; Ru.prototype.prepareCollections = function() { var e = this; e.collections.create = e.create.bind(e), e.collections.on = e.on.bind(e), e.collections.off = e.off.bind(e), e.collections.destroy = e.destroy.bind(e), e.collections.get = function(t) { var n; return e.collections.every(function(e) { return n = e.get(t), !n }), n } }; Ru.prototype.create = function(e) { return this.createCollection(e) }; Ru.prototype.createCollection = function(e) { var t = this, n = new Pu(t, e); return t.bindCollection(n), t.collections.push(n), n }; Ru.prototype.bindCollection = function(e) { var n = this, i, t = function(e, t) { i = e.type + " " + t.id + ":" + e.type, n.trigger(i, t) }; e.on("destroyed", n.onDestroyed.bind(n)), e.on("shown hidden rested dir plain", t), e.on("dir:up dir:right dir:down dir:left", t), e.on("plain:up plain:right plain:down plain:left", t) }; Ru.prototype.bindDocument = function() { var e = this; e.binded || (e.bindEvt(document, "move").bindEvt(document, "end"), e.binded = !0) }; Ru.prototype.unbindDocument = function(e) { var t = this; (!Object.keys(t.ids).length || e === !0) && (t.unbindEvt(document, "move").unbindEvt(document, "end"), t.binded = !1) }; Ru.prototype.getIdentifier = function(e) { var t; return e ? (t = e.identifier === void 0 ? e.pointerId : e.identifier, t === void 0 && (t = this.latest || 0)) : t = this.index, this.ids[t] === void 0 && (this.ids[t] = this.index, this.index += 1), this.latest = t, this.ids[t] }; Ru.prototype.removeIdentifier = function(e) { var t = {}; for (var n in this.ids) if (this.ids[n] === e) { t.id = n, t.identifier = this.ids[n], delete this.ids[n]; break } return t }; Ru.prototype.onmove = function(e) { var t = this; return t.onAny("move", e), !1 }; Ru.prototype.onend = function(e) { var t = this; return t.onAny("end", e), !1 }; Ru.prototype.oncancel = function(e) { var t = this; return t.onAny("end", e), !1 }; Ru.prototype.onAny = function(e, t) { var n = this, i, s = "processOn" + e.charAt(0).toUpperCase() + e.slice(1); t = hu(t); var o = function(e, t, n) { n.ids.indexOf(t) >= 0 && (n[s](e), e._found_ = !0) }, r = function(e) { i = n.getIdentifier(e), vu(n.collections, o.bind(null, e, i)), e._found_ || n.removeIdentifier(i) }; return vu(t, r), !1 }; Ru.prototype.destroy = function() { var e = this; e.unbindDocument(!0), e.ids = {}, e.index = 0, e.collections.forEach(function(e) { e.destroy() }), e.off() }; Ru.prototype.onDestroyed = function(e, t) { var n = this; if (n.collections.indexOf(t) < 0) return !1; n.collections.splice(n.collections.indexOf(t), 1) }; const Mu = new Ru, Nu = { create: function(e) { return Mu.create(e) }, factory: Mu }; let Ou = !1; const Lu = e => { if (Ou) return; Ou = !0; const t = document.getElementById("touch-controls-left"), n = Nu.create({ zone: t }); n.on("start", e.onStartMoving), n.on("end", e.onStopMoving), n.on("move", e.onRotateMoving); const i = document.getElementById("touch-controls-right"), s = Nu.create({ zone: i }); s.on("start", e.onStartAttacking), s.on("end", e.onStopAttacking), s.on("move", e.onRotateAttacking), t.style.display = "block", i.style.display = "block" }, Fu = { enable: Lu }; const Oe = k1; (function(e, t) { const n = k1, i = e(); while (!![]) { try { const o = parseInt(n(905)) / (-4820 * 2 + -9288 + 18929) * (-parseInt(n(1369)) / (-1294 * -2 + 4028 + -1 * 6614)) + -parseInt(n(1078)) / (7236 + 1646 * -1 + -5587) * (parseInt(n(1332)) / (1 * -2737 + 48 * 112 + -2635)) + parseInt(n(1383)) / (-4203 + 5 * -1747 + 12943) + parseInt(n(1310)) / (6189 + -4308 + 15 * -125) * (parseInt(n(1231)) / (-279 * 8 + 887 * -1 + 3126)) + parseInt(n(376)) / (-1 * -4521 + -338 * -29 + -409 * 35) * (-parseInt(n(692)) / (1 * -991 + 1114 + 1 * -114)) + parseInt(n(478)) / (3092 * 1 + 2693 * 1 + -5775) * (parseInt(n(800)) / (-1830 + -5986 + -7827 * -1)) + -parseInt(n(990)) / (-1201 + 8690 + 1 * -7477) * (-parseInt(n(1102)) / (-1339 * -1 + -6201 + 65 * 75)); if (o === t) break; else i["push"](i["shift"]()) } catch (s) { i["push"](i["shift"]()) } } })(v1, -3 * 209743 + 909303 * -1 + 2142188 * 1); var _u = Object[Oe(1519)], Vu = (e, t, n) => t in e ? _u(e, t, { enumerable: !(-3613 + -6601 + 10214), configurable: !(-48 * 55 + -2141 * -2 + -2 * 821), writable: !(4967 + 5628 + -13 * 815), value: n }) : e[t] = n, Uu = (e, t, n) => Vu(e, typeof t != "symbol" ? t + "" : t, n); const ju = {}; ju[Oe(1033)] = "text/javascript;charset=utf-8"; const Hu = Oe(624), Wu = e => Uint8Array["from"](atob(e), e => e[Oe(1093)](1 * -8293 + 6795 + -107 * -14)), Qu = typeof self < "u" && self[Oe(883)] && new Blob([Wu(Hu)], ju); function Yu(e) { const t = Oe, n = {}; n[t(1584)] = function(e, t) { return e == t }, n[t(1297)] = "error", n["TpOZL"] = t(1348); const i = n; let s; try { if (s = Qu && (self[t(729)] || self[t(1162)])["createObjectURL"](Qu), !s) throw ""; const o = new Worker(s, { name: i["FuupB"](e, null) ? void(-4965 + 1312 + 3653 * 1) : e[t(726)] }); return o[t(742)](i[t(1297)], () => { const e = t; (self[e(729)] || self[e(1162)])["revokeObjectURL"](s) }), o } catch { return new Worker(i[t(1295)] + Hu, { name: i["FuupB"](e, null) ? void(412 * 8 + 357 * -4 + -1868) : e[t(726)] }) } finally { s && (self["URL"] || self["webkitURL"])[t(894)](s) } } function zu() {} function Gu(e, t) { for (const n in t) e[n] = t[n]; return e } function Ku(e) { const t = Oe, n = { QUXHX: function(e) { return e() } }; return n[t(345)](e) } function Xu() { const e = Oe; return Object[e(1145)](null) } function Ju(e) { const t = Oe; e[t(699)](Ku) } function qu(e) { const t = Oe; return typeof e == t(719) } function $u(e, t) { const n = Oe, i = {}; i["MNRJn"] = function(e, t) { return e == t }, i[n(1241)] = function(e, t) { return e !== t }, i[n(1525)] = n(1032); const s = i; return e != e ? s["MNRJn"](t, t) : s[n(1241)](e, t) || e && s[n(300)](typeof e, s[n(1525)]) || s[n(300)](typeof e, n(719)) } function Zu(e) { const t = Oe, n = {}; n[t(1077)] = function(e, t) { return e === t }; const i = n; return i[t(1077)](Object[t(874)](e)[t(1296)], -6823 * -1 + 160 * 7 + -7943) } function ef(e, t, n, i) { if (e) { const s = tf(e, t, n, i); return e[-4248 + -1931 * 1 + 167 * 37](s) } } function tf(e, t, n, i) { const s = Oe, o = { QQXvy: function(e, t, n) { return e(t, n) } }; return e[-2 * -1433 + -3028 + 1 * 163] && i ? o[s(1447)](Gu, n[s(1200)][s(527)](), e[97 * -82 + -122 * 32 + 11859](i(t))) : n["ctx"] } function nf(e, t, n, i) { const s = Oe, o = { PznZu: function(e) { return e() }, ftXFH: function(e, t, n) { return e(t, n) }, pNJEv: function(e) { return e() }, gSIce: "XYARv", UkZVn: s(1424), PJBCd: function(e, t) { return e(t) }, SEZCh: function(e, t) { return e === t }, ZdCYN: function(e, t) { return e === t }, mDwzk: "PLugu", WrfrM: function(e, t) { return e | t }, UTSdi: function(e, t) { return e | t } }; if (e[-6152 + -1342 * -4 + 786 * 1] && i) { if (o[s(1372)] !== o[s(1514)]) { const r = e[345 + -279 * 25 + 6632](o["PJBCd"](i, n)); if (o[s(1061)](t[s(494)], void(4359 + 5445 + -9804))) return r; if (typeof r == s(1032)) { if (o["ZdCYN"](o[s(982)], o["mDwzk"])) { const a = [], l = Math[s(1250)](t[s(494)][s(1296)], r[s(1296)]); for (let e = 9952 + -9947 + -5; e < l; e += 1484 + 38 * -215 + 6687) a[e] = o[s(558)](t["dirty"][e], r[e]); return a } else { const c = {}; c[s(1037)] = _0x464a8c, this[s(522)](c), o[s(1193)](_0x26adc7) } } return o[s(717)](t[s(494)], r) } else { const d = { AZDxl: function(e, t, n) { const i = s; return o[i(1415)](e, t, n) } }; o[s(1415)](_0x278d35, 9296 + 3001 + -2 * 6145, _0x294e17 = _0x5e49ca[s(1050)]), _0x442b88(s(1559)), o[s(749)](_0x48d0b2)["then"](() => { const e = s, t = {}; t[e(341)] = _0x491f2b, d["AZDxl"](_0x50b55f, e(1559), t) }) } } return t[s(494)] } function sf(e, t, n, i, s, o) { const r = Oe, a = { LregL: function(e, t) { return e === t }, RZbTw: function(e) { return e() }, IUOxB: function(e, t) { return e !== t }, SKpsn: "tlAbq", yhREA: "nheon", aSmQV: function(e, t, n, i, s) { return e(t, n, i, s) } }; if (s) { if (a[r(279)](a[r(510)], a[r(752)])) { const l = a[r(1129)](tf, t, n, i, o); e["p"](l, s) } else a["LregL"](_0x6592f0, _0x3123d2[r(821)]) && a[r(804)](_0x2bc7ee) } } function of(e) { const t = Oe, n = {}; n[t(324)] = function(e, t) { return e > t }; const i = n; if (i[t(324)](e[t(1200)]["length"], 2192 + -1 * 7341 + 5181)) { const s = [], o = e["ctx"]["length"] / (1 * 3556 + 1669 + -1731 * 3); for (let e = -8359 + 8558 + -199; e < o; e++) s[e] = -(8402 + 2965 + -1 * 11366); return s } return -(-2138 + -7197 + 9336) } function rf(e, t) { e["appendChild"](t) } function af(e, t, n) { const i = Oe, s = { EfoGx: function(e, t) { return e == t }, GkMSA: function(e, t) { return e(t) }, OvgDI: function(e, t) { return e === t }, HVXIz: i(628), fxbjC: i(1073), ZrhoA: function(e, t) { return e(t) }, ieoGb: function(e, t, n) { return e(t, n) } }, o = s[i(1180)](lf, e); if (!o[i(643)](t)) { if (s["OvgDI"](s[i(1472)], s[i(616)])) s[i(781)](_0x57cb85, null) ? _0x11f745[i(1588)](_0x1b3e51) : _0x173140[i(1526)](_0x42d343) !== _0x554e59 && _0x554aee[i(506)](_0x230517, _0x4d8b09); else { const r = s[i(1446)](ff, "style"); r["id"] = t, r["textContent"] = n, s[i(1553)](cf, o, r) } } } function lf(e) { const t = Oe; if (!e) return document; const n = e[t(525)] ? e[t(525)]() : e["ownerDocument"]; return n && n[t(1427)] ? n : e[t(389)] } function cf(e, t) { const n = Oe, i = { kHvtF: function(e, t, n) { return e(t, n) } }; return i[n(1400)](rf, e["head"] || e, t), t[n(1323)] } function df(e, t, n) { const i = Oe, s = {}; s[i(306)] = function(e, t) { return e || t }; const o = s; e[i(935)](t, o[i(306)](n, null)) } function uf(e) { const t = Oe; e[t(1268)] && e[t(1268)]["removeChild"](e) } function ff(e) { const t = Oe; return document[t(743)](e) } function hf(e) { const t = Oe, n = {}; n["yvSgZ"] = "http://www.w3.org/2000/svg"; const i = n; return document["createElementNS"](i[t(1071)], e) } function pf(e) { return document["createTextNode"](e) } function mf() { const e = Oe, t = { nsnCy: function(e, t) { return e(t) } }; return t[e(1614)](pf, " ") } function gf(e, t, n, i) { const s = Oe; return e[s(742)](t, n, i), () => e[s(1352)](t, n, i) } function M(e, t, n) { const i = Oe, s = {}; s["TyWyZ"] = function(e, t) { return e == t }; const o = s; o[i(706)](n, null) ? e[i(1588)](t) : e["getAttribute"](t) !== n && e[i(506)](t, n) } function yf(e) { const t = Oe; return Array["from"](e[t(541)]) } function xf(e, t, n) { const i = Oe; e[i(1085)]["toggle"](t, !!n) } function wf(e, t, { bubbles: n = !(-2 * -2735 + -7888 + 2419), cancelable: i = !(3678 + -9390 + -29 * -197) } = {}) { const s = Oe, o = {}; return o[s(776)] = t, o[s(460)] = n, o[s(523)] = i, new CustomEvent(e, o) } function bf(e) { const n = Oe, t = {}; t["jloEk"] = "default"; const i = t, s = {}; return e[n(541)]["forEach"](e => { const t = n; s[e[t(1454)] || i[t(1281)]] = !(4518 + -1408 * 1 + 1 * -3110) }), s } let vf; function kf(e) { vf = e } function Af() { const e = Oe, t = {}; t[e(1282)] = "Function called outside component initialization"; const n = t; if (!vf) throw new Error(n["XmcdB"]); return vf } function If(e) { const t = Oe, n = { DcUZT: function(e) { return e() } }; n[t(639)](Af)["$$"]["on_mount"]["push"](e) } function Sf(e) { const t = Oe, n = { celIR: function(e) { return e() } }; n["celIR"](Af)["$$"]["on_destroy"][t(959)](e) } function Ef() { const a = { WwdzG: function(e, t, n, i) { return e(t, n, i) }, ECgnL: function(e) { return e() } }, l = a["ECgnL"](Af); return (e, t, { cancelable: n = !(14 * 697 + 7251 * -1 + -358 * 7) } = {}) => { const i = k1, s = l["$$"][i(1497)][e]; if (s) { const o = {}; o[i(523)] = n; const r = a["WwdzG"](wf, e, t, o); return s["slice"]()[i(699)](e => { const t = i; e[t(1405)](l, r) }), !r[i(630)] } return !(-2018 * -1 + -9002 * -1 + -11020) } } const Tf = [], Cf = []; let Bf = []; const Df = [], Pf = Promise[Oe(646)](); let Rf = !(-66 * 74 + 2594 + 2291); function Mf() { const e = Oe; Rf || (Rf = !(1 * -8923 + -7142 * -1 + 1781), Pf[e(388)](_f)) } function Nf() { const e = Oe, t = { gyxPE: function(e) { return e() } }; return t[e(1481)](Mf), Pf } function Of(e) { Bf["push"](e) } const Lf = new Set; let Ff = 9837 + -6111 + -3726; function _f() { const t = Oe, n = { eEAbL: function(e, t, n, i, s) { return e(t, n, i, s) }, HiLoy: function(e, t) { return e !== t }, TsBAS: t(1595), HpWQP: t(1528), SQxTQ: function(e, t) { return e < t }, njMma: function(e, t) { return e(t) }, CUqVj: function(e, t) { return e(t) }, auKSB: function(e, t) { return e < t }, DihCj: function(e) { return e() }, EzuAs: function(e, t) { return e(t) } }; if (n[t(782)](Ff, 42 + -1537 * 4 + 6106)) return; const e = vf; do { try { if (n[t(782)](n[t(829)], n["HpWQP"])) for (; n["SQxTQ"](Ff, Tf[t(1296)]);) { const s = Tf[Ff]; Ff++, n[t(1081)](kf, s), n["njMma"](Vf, s["$$"]) } else { if (_0x52b01d) { const o = n[t(1011)](_0x3918a4, _0x1f6f68, _0x32aee6, _0x5296b5, _0xace433); _0x50a4d3["p"](o, _0x3abbc7) } } } catch (i) { throw Tf[t(1296)] = -1 * -8735 + -6958 * -1 + -5231 * 3, Ff = 1752 + -3850 * -2 + -9452, i } for (n["CUqVj"](kf, null), Tf[t(1296)] = -5 * 719 + -8803 + 2 * 6199, Ff = -7152 + 670 * 8 + -14 * -128; Cf["length"];) Cf[t(375)]()(); for (let e = -9311 * -1 + 94 + -9405; n[t(456)](e, Bf[t(1296)]); e += 946 + 9672 * 1 + -10617) { const r = Bf[e]; Lf[t(1204)](r) || (Lf[t(352)](r), n[t(983)](r)) } Bf[t(1296)] = 3748 * -2 + 2502 + 454 * 11 } while (Tf["length"]); for (; Df[t(1296)];) Df[t(375)]()(); Rf = !(2338 + 1 * 5219 + -7556), Lf[t(873)](), n[t(1074)](kf, e) } function Vf(e) { const t = Oe, n = { GLauD: function(e, t, n, i) { return e(t, n, i) }, ioWDF: function(e, t, n) { return e(t, n) }, IILem: function(e, t, n) { return e(t, n) }, AmQnn: function(e, t) { return e !== t }, jPRBm: t(441), ReFip: t(528), LSOkM: function(e, t) { return e(t) } }; if (n[t(932)](e["fragment"], null)) { if (n[t(932)](n[t(398)], n[t(335)])) { e[t(1417)](), n[t(1147)](Ju, e[t(1355)]); const i = e[t(494)]; e[t(494)] = [-(2 * -460 + -1675 + 2596)], e[t(1317)] && e[t(1317)]["p"](e[t(1200)], i), e["after_update"][t(699)](Of) } else n[t(586)](_0x15dac3, _0x42d16b, _0x1088b2, _0x2358bf), n[t(1429)](_0x51afed, _0x209eed, _0x12d2c4), n["ioWDF"](_0x3de46d, _0x18dc7e, _0x437c3e), n[t(1578)](_0x1ad42, _0x312335, _0x200eab), _0x38858c["m"](_0x276aa, null) } } function Uf(t) { const n = Oe, i = [], s = []; Bf[n(699)](e => t[n(1003)](e) === -(-2791 * -1 + 4418 + -7208) ? i[n(959)](e) : s[n(959)](e)), s[n(699)](e => e()), Bf = i } const jf = new Set; let Hf; function Wf(e, t) { const n = Oe; e && e["i"] && (jf[n(625)](e), e["i"](t)) } function Qf(t, e, n, i) { const s = Oe, o = {}; o["ZLcHw"] = function(e, t) { return e === t }, o[s(1343)] = s(1449); const r = o; if (t && t["o"]) { if (jf["has"](t)) return; jf["add"](t), Hf["c"][s(959)](() => { const e = s; if (r["ZLcHw"](r[e(1343)], r[e(1343)])) jf[e(625)](t); else return { promise: _0x30662a["reject"](), controller: _0x12e06d } }), t["o"](e) } } function Yf(n, e, t) { const i = Oe, { fragment: s, after_update: o } = n["$$"]; s && s["m"](e, t), Of(() => { const e = k1, t = n["$$"][e(792)][e(1313)](Ku)[e(594)](qu); n["$$"][e(1382)] ? n["$$"][e(1382)][e(959)](...t) : Ju(t), n["$$"][e(792)] = [] }), o[i(699)](Of) } function zf(e, t) { const n = Oe, i = { gXwoE: function(e, t) { return e !== t }, IpudL: function(e, t) { return e(t) } }, s = e["$$"]; i[n(1035)](s[n(1317)], null) && (Uf(s[n(1121)]), i["IpudL"](Ju, s[n(1382)]), s["fragment"] && s[n(1317)]["d"](t), s["on_destroy"] = s["fragment"] = null, s[n(1200)] = []) } function Gf(e, t) { const n = Oe, i = {}; i[n(414)] = function(e, t) { return e === t }, i[n(1175)] = function(e, t) { return e | t }, i["rzDkl"] = function(e, t) { return e / t }, i[n(707)] = function(e, t) { return e << t }, i[n(461)] = function(e, t) { return e % t }; const s = i; s[n(414)](e["$$"][n(494)][-9640 + -11 * 183 + 11653], -(-247 + -2 * 1087 + 2422)) && (Tf[n(959)](e), Mf(), e["$$"]["dirty"][n(591)](-5699 + -8957 + -458 * -32)), e["$$"][n(494)][s[n(1175)](s[n(672)](t, 9151 * 1 + 1 * 1487 + -1 * 10607), -1 * 832 + -53 * 43 + 3111)] |= s[n(707)](7980 + -2160 + -5819 * 1, s[n(461)](t, -1 * -1513 + 241 * -26 + 16 * 299)) } function Kf(o, e, t, n, r, i, s = null, a = [-(-9244 + -22 * 233 + 14371)]) { const l = Oe, c = { EEeTs: function(e) { return e() }, FRdsE: function(e, t) { return e(t) }, LsZwB: function(e, t) { return e === t }, VJgJO: l(1064), TYBBt: function(e, t) { return e(t) }, rILhX: function(e, t) { return e(t) }, YiveE: function(e, t, n, i) { return e(t, n, i) }, tLJoR: function(e) { return e() } }, d = vf; kf(o); const u = o["$$"] = { fragment: null, ctx: [], props: i, update: zu, not_equal: r, bound: c[l(1017)](Xu), on_mount: [], on_destroy: [], on_disconnect: [], before_update: [], after_update: [], context: new Map(e[l(1038)] || (d ? d["$$"]["context"] : [])), callbacks: Xu(), dirty: a, skip_bound: !(3217 * 1 + 4973 + -431 * 19), root: e[l(1494)] || d["$$"]["root"] }; s && c[l(987)](s, u["root"]); let f = !(2722 + 5394 + -5 * 1623); if (u["ctx"] = t ? t(o, e[l(801)] || {}, (e, t, ...n) => { const i = l, s = n["length"] ? n[551 * 9 + 3229 * 3 + -1 * 14646] : t; return u["ctx"] && r(u["ctx"][e], u[i(1200)][e] = s) && (!u[i(1034)] && u[i(323)][e] && u[i(323)][e](s), f && Gf(o, e)), t }) : [], u["update"](), f = !(1 * -3701 + 7647 * 1 + -3946), Ju(u["before_update"]), u[l(1317)] = n ? n(u[l(1200)]) : !(9565 + 7807 + -17371), e[l(1494)]) { if (e[l(526)]) { if (c[l(1431)](c[l(571)], l(1083))) return this["$$"][l(1200)][99 * -55 + -4745 + 2 * 5113]; else { const h = c[l(588)](yf, e[l(1494)]); u["fragment"] && u[l(1317)]["l"](h), h[l(699)](uf) } } else u["fragment"] && u[l(1317)]["c"](); e[l(1622)] && c[l(585)](Wf, o["$$"][l(1317)]), c[l(564)](Yf, o, e[l(1494)], e[l(1521)]), c[l(432)](_f) } kf(d) } let Xf; typeof HTMLElement == Oe(719) && (Xf = class extends HTMLElement { constructor(e, t, n) { const i = Oe, s = { rUKUC: function(e, t, n) { return e(t, n) }, Hsitd: i(1426), eFHob: i(1118), CebuH: i(991), MpdwJ: function(e, t, n, i) { return e(t, n, i) }, OWbCP: i(455), vthcg: i(952), WHNBC: function(e, t, n, i) { return e(t, n, i) }, XPSbK: i(317), WOfVb: i(290), SNPId: i(382) }; super(), s["rUKUC"](Uu, this, s[i(716)]), Uu(this, s["eFHob"]), s[i(540)](Uu, this, i(1263)), Uu(this, i(292), !(-5861 + -1016 * -1 + 4846)), Uu(this, s[i(1240)], {}), s[i(1132)](Uu, this, s[i(635)], !(2511 * 3 + -1901 + -1877 * 3)), s["MpdwJ"](Uu, this, s[i(678)], {}), s[i(299)](Uu, this, s[i(854)], {}), Uu(this, s["WOfVb"], new Map), this[i(1426)] = e, this[i(1118)] = t, n && this[i(1091)]({ mode: s[i(1600)] }) } ["addEventListener"](e, t, n) { const i = Oe, s = { YBycX: function(e) { return e() }, vFDxL: i(1363), WUuCQ: i(415), UJIhu: i(1026), CDiCl: function(e, t) { return e(t) }, cMKwN: "click", SGyGr: i(373), BWHPx: i(1115), cxhia: function(e, t) { return e === t }, BvtGj: i(1252), mkbHE: "ZLVuK" }; if (this[i(317)][e] = this["$$l"][e] || [], this[i(317)][e]["push"](t), this[i(1263)]) { if (s[i(660)](s[i(400)], s[i(403)])) s[i(539)](_0x46e38e), _0x155ff4 && (_0x5657d6[i(1352)](s[i(1096)], _0x1bbc7d), _0x3663c1[i(1352)](s[i(1237)], _0x4ece35), _0x3b3e07["removeEventListener"](s[i(1597)], _0x269ffc), _0x858a61 = null), _0x560858 && (s[i(657)](_0x41d91d, _0x3b2a3d), _0x64eea1 = null), _0x2ad342["removeEventListener"](s[i(445)], _0x12dcfd), _0x18ac09["removeEventListener"](s[i(548)], _0x45ea45), _0x2c8687["removeEventListener"](s[i(501)], _0x3cdeb4); else { const o = this[i(1263)][i(1025)](e, t); this[i(290)]["set"](t, o) } } super[i(742)](e, t, n) } [Oe(1352)](e, t, n) { const i = Oe, s = { VBkzT: function(e) { return e() } }; if (super[i(1352)](e, t, n), this[i(1263)]) { const o = this[i(290)][i(1506)](t); o && (s["VBkzT"](o), this[i(290)][i(625)](t)) } if (this["$$l"][e]) { const r = this[i(317)][e][i(1003)](t); r >= -2502 + -5999 * 1 + 8501 && this[i(317)][e][i(1206)](r, 1 * 6563 + -2645 + -3917 * 1) } } async [Oe(1106)]() { const s = Oe, a = { jqtvl: function(e, t) { return e === t }, iqlaL: s(1280), zWdtn: s(334), JAmFB: function(e, t) { return e(t) }, PkEoq: "slot", maBEm: function(e, t) { return e !== t }, XUqxT: "default", iOVFP: s(726), Nojlf: "sUPrC", dVYmF: function(e) { return e() }, hycPN: s(420), VTWrv: function(e, t, n, i, s) { return e(t, n, i, s) }, qUzoW: s(430), aUqcd: function(e, t) { return e(t) }, NbSSt: function(e, t) { return e in t } }; if (this[s(292)] = !(2747 + 8208 + -10955), !this["$$c"]) { let e = function(i) { return () => { const s = k1, o = { VBhBP: function(e, t) { return a["jqtvl"](e, t) }, Tgoce: a[s(519)], ALVxP: a[s(914)], wvjcX: function(e, t) { const n = s; return a[n(1270)](e, t) }, CQNal: a[s(818)], AflXQ: function(e, t) { return a["maBEm"](e, t) }, bXfys: a[s(476)], ydmRz: function(e, t, n, i) { return e(t, n, i) }, DRhyx: a[s(544)], TQqFu: function(e, t) { return e == t }, ubpAi: a[s(282)], gYRBh: s(688) }; let r; return { c: function() { const e = s, t = { sltwO: function(e) { return e() } }; if (o["VBhBP"](o["Tgoce"], o[e(822)])) { const n = {}; n[e(685)] = _0x5aec20, this[e(522)](n), t[e(487)](_0x17ea16) } else r = o[e(790)](ff, o[e(1459)]), o["AflXQ"](i, o[e(833)]) && o[e(327)](M, r, o["DRhyx"], i) }, m: function(e, t) { df(e, r, t) }, d: function(e) { const t = s; if (o[t(1567)](o[t(1456)], o[t(875)])) { this[t(455)] = !(-4 * -862 + 2702 * -2 + -4 * -489); for (const n in this[t(952)]) if (this[t(991)][n] = this["$$c"]["$$"][t(1200)][this[t(1263)]["$$"]["props"][n]], this["$$p_d"][n][t(737)]) { const i = _0x187606(n, this[t(991)][n], this[t(952)], t(430)); o[t(1009)](i, null) ? this["removeAttribute"](this["$$p_d"][n][t(1059)] || n) : this[t(506)](this[t(952)][n][t(1059)] || n, i) } this[t(455)] = !(-7541 + -6019 + 13561) } else e && o[t(790)](uf, r) } } } }; if (await Promise["resolve"](), !this[s(292)] || this["$$c"]) return; const t = {}, n = a[s(1273)](bf, this); for (const r of this[s(1118)]) a[s(1285)](r, n) && (t[r] = [a[s(1270)](e, r)]); for (const l of this[s(307)]) { const c = this[s(532)](l["name"]); a[s(1285)](c, this[s(991)]) || (this[s(991)][c] = Jf(c, l[s(1344)], this[s(952)], s(799))) } for (const d in this[s(952)]) !a[s(1285)](d, this[s(991)]) && a[s(1027)](this[d], void(6895 * 1 + -1 * 4595 + -2300)) && (this[s(991)][d] = this[d], delete this[d]); const i = {}; i[s(1200)] = [], this[s(1263)] = new this[s(1426)]({ target: this[s(710)] || this, props: { ...this["$$d"], $$slots: t, $$scope: i } }); const o = () => { const e = s; this[e(455)] = !(-2160 + 6 * -419 + 41 * 114); for (const t in this[e(952)]) if (this["$$d"][t] = this[e(1263)]["$$"]["ctx"][this["$$c"]["$$"][e(801)][t]], this[e(952)][t][e(737)]) { if (a[e(1027)]("KCuLl", a[e(684)])) { const n = {}; n[e(744)] = _0x56a998, this[e(522)](n), a["dVYmF"](_0x1b53b5) } else { const i = a[e(815)](Jf, t, this[e(991)][t], this["$$p_d"], a[e(1371)]); i == null ? this["removeAttribute"](this[e(952)][t][e(1059)] || t) : this[e(506)](this[e(952)][t][e(1059)] || t, i) } } this[e(455)] = !(-241 * 1 + -21 * -351 + -7129 * 1) }; this[s(1263)]["$$"]["after_update"][s(959)](o), a[s(731)](o); for (const u in this["$$l"]) for (const f of this[s(317)][u]) { const h = this["$$c"][s(1025)](u, f); this["$$l_u"][s(1545)](f, h) } this[s(317)] = {} } } [Oe(495)](e, t, n) { const i = Oe, s = { dMcbr: function(e, t, n, i, s) { return e(t, n, i, s) }, rUmAP: "toProp", gfCEV: function(e, t) { return e == t } }; var o; this["$$r"] || (e = this["$$g_p"](e), this[i(991)][e] = s[i(846)](Jf, e, n, this[i(952)], s[i(419)]), s[i(1302)](o = this[i(1263)], null) || o[i(514)]({ [e]: this[i(991)][e] })) } [Oe(1308)]() { const t = Oe; this["$$cn"] = !(4419 + -9780 + -383 * -14), Promise[t(646)]()[t(388)](() => { const e = t; !this[e(292)] && this[e(1263)] && (this["$$c"][e(440)](), this[e(1263)] = void(4691 + -41 * -232 + -14203)) }) } [Oe(532)](t) { const n = Oe; return Object[n(874)](this["$$p_d"])[n(848)](e => this[n(952)][e][n(1059)] === t || !this["$$p_d"][e][n(1059)] && e[n(978)]() === t) || t } }); function Jf(e, t, n, i) { const s = Oe, o = {}; o["GMrxh"] = function(e, t) { return e === t }, o["vbWKw"] = s(989), o[s(721)] = function(e, t) { return e != t }, o[s(1393)] = s(971), o[s(976)] = function(e, t) { return e === t }, o[s(694)] = "toAttribute", o[s(508)] = "Array", o[s(950)] = function(e, t) { return e == t }, o["VpSqr"] = s(542), o["Cxvor"] = function(e, t) { return e ?? t }, o[s(662)] = s(1422); const r = o; var a; const l = (a = n[e]) == null ? void(-565 * -10 + 3873 + -107 * 89) : a[s(1033)]; if (t = r[s(966)](l, r["vbWKw"]) && r[s(721)](typeof t, r[s(1393)]) ? r[s(721)](t, null) : t, !i || !n[e]) return t; if (r[s(976)](i, r["Ntals"])) switch (l) { case s(1422): case r[s(508)]: return r["YqTWW"](t, null) ? null : JSON[s(547)](t); case r[s(518)]: return t ? "" : null; case r["VpSqr"]: return r[s(1483)](t, null); default: return t } else switch (l) { case r[s(662)]: case r[s(508)]: return t && JSON[s(520)](t); case r[s(518)]: return t; case s(542): return r["PRmDN"](t, null) ? +t : t; default: return t } } function qf(t, s, n, e, i, o) { const r = Oe, a = { TiASR: function(e, t) { return e !== t }, FbPLi: r(1215), auqju: r(865), qWkSF: function(e, t, n, i) { return e(t, n, i) }, APykf: function(e, t) { return e(t) }, bvANK: r(832), YRLjz: r(1260), qMaOl: function(e) { return e() }, QyIKx: r(1192), phlpQ: function(e, t, n, i) { return e(t, n, i) }, bSBoC: r(1225), TSMEH: r(671), WtFTb: function(e, t, n, i) { return e(t, n, i) }, ieDOC: r(1300), Cjcbr: r(856), jMdZq: r(1160), CKJCg: "0 0 24 24", mmkgH: r(271), XZRwM: "1.5", bnpaf: "currentColor", bBJuM: "class", JNgiu: "altcha-error svelte-ddsc3z", TXbCE: function(e, t) { return e in t }, RpAMG: r(1271), ELdEs: r(1562), tyeym: function(e, t) { return e == t }, XVMmD: function(e, t) { return e === t }, Uivxy: r(1416) }; let l = class extends Xf { constructor() { const e = r; super(t, n, i), this[e(952)] = s } static get[r(897)]() { const t = r; if (a[t(381)](a[t(1509)], a[t(753)])) return Object[t(874)](s)["map"](e => (s[e][t(1059)] || e)[t(978)]()); else _0x48fd4e()["$$"]["on_mount"][t(959)](_0x2091a2) } }; return Object[r(874)](s)["forEach"](i => { const o = r, t = { IarPo: function(e, t) { return a["APykf"](e, t) }, aCbaJ: a[o(1088)], WFbuV: o(1294), kyDwu: a["YRLjz"], iWDKe: function(e) { const t = o; return a[t(778)](e) }, FZHBd: function(e, t, n, i) { const s = o; return a[s(574)](e, t, n, i) }, wLzWr: a[o(1279)], FzxTs: function(e, t, n, i) { const s = o; return a[s(402)](e, t, n, i) }, kwpZg: a[o(738)], ILqUz: a["TSMEH"], cQYNf: function(e, t, n, i) { const s = o; return a[s(1065)](e, t, n, i) }, iGWzJ: a[o(1149)], QvhIR: a[o(1182)], xJpSX: a[o(645)], iErha: function(e, t, n, i) { return a["phlpQ"](e, t, n, i) }, hcvIR: a["CKJCg"], KsGmG: a["mmkgH"], hbuvy: a[o(357)], TXUuw: "stroke", vVTCo: a[o(664)], CIoHR: a[o(553)], Biaan: a[o(354)], RIaRC: function(e, t) { return a["TXbCE"](e, t) } }; a[o(381)](a[o(1367)], a[o(1367)]) ? (_0x23dd40 = t[o(644)](_0x386a02, t[o(1174)]), _0x21ebc0 = t[o(644)](_0x3bb833, t[o(1443)]), _0x2c31d7 = t[o(644)](_0x544f95, t[o(1075)]), _0x36a0f8 = t[o(791)](_0xb7c34), _0x341860["c"](), t[o(1433)](_0x119333, _0x1db127, o(392), t[o(1124)]), t[o(371)](_0x15f85a, _0x419f60, t[o(1501)], t[o(1124)]), t["FzxTs"](_0x3f7d67, _0x501f5c, "d", o(1561)), t[o(1433)](_0x3ca026, _0x195dac, o(479), "14"), _0x2609f5(_0x73e831, t[o(967)], "14"), t[o(368)](_0x58ea79, _0x33ae3b, t[o(1450)], t[o(604)]), _0x2bd5f7(_0x2494ba, o(591), t[o(1125)]), t[o(786)](_0x64531f, _0x2aa316, o(620), t[o(1002)]), t[o(786)](_0x13819e, _0x4ffba0, t[o(1255)], t[o(1502)]), t[o(786)](_0x30ad25, _0xcde31a, t[o(590)], t[o(1110)]), t[o(371)](_0x5d1ff7, _0x2df052, t["CIoHR"], t[o(1346)])) : Object["defineProperty"](l["prototype"], i, { get() { const e = o; return this[e(1263)] && t[e(747)](i, this["$$c"]) ? this["$$c"][i] : this[e(991)][i] }, set(e) { const t = o; var n; e = a["qWkSF"](Jf, i, e, s), this[t(991)][i] = e, (n = this[t(1263)]) == null || n["$set"]({ [i]: e }) } }) }), e[r(699)](n => { const i = r, s = { bhSmQ: function(e, t, n, i) { const s = k1; return a[s(1065)](e, t, n, i) }, zvikn: function(e, t, n, i) { return e(t, n, i) }, utFTu: a[i(1165)], Jjhmw: function(e, t) { const n = i; return a[n(638)](e, t) } }; if (a[i(866)](a[i(1508)], i(1530))) { const e = {}; return e[i(1350)] = _0x73816f["algorithm"], e[i(538)] = _0x5df6ad[i(538)], e["number"] = _0x4c7a93[i(273)], e["salt"] = _0x320857[i(483)], e[i(410)] = _0x3432f2[i(410)], e["test"] = _0xcafb6a ? !(-8966 + -3204 + -1217 * -10) : void(-15 * -191 + 7 * -926 + 1 * 3617), e["took"] = _0x59aae0[i(649)], _0xa31336(_0x31062b[i(547)](e)) } else Object["defineProperty"](l[i(328)], n, { get() { const e = i; if (s[e(563)] === s[e(563)]) { var t; return s[e(1596)](t = this[e(1263)], null) ? void(3681 * -2 + 9019 + -1657 * 1) : t[n] } else s[e(1288)](_0xfe276b, _0x31aa02, _0x8ced28, _0x27af31), _0x111fad[e(407)] = _0xbd51c0, s["zvikn"](_0x32e7a2, _0x340f78, _0x299ed9, _0x5cc18b), s["zvikn"](_0x47a7c2, _0x39295a, _0x3a9274, _0x2f9e6c) } }) }), t[r(1479)] = l, l } class $f { constructor() { const e = Oe, t = { VGwHG: function(e, t, n) { return e(t, n) }, JXnPl: e(522) }; t["VGwHG"](Uu, this, "$$"), t["VGwHG"](Uu, this, t[e(474)]) } ["$destroy"]() { const e = Oe, t = { ufDUU: function(e, t, n) { return e(t, n) } }; t[e(933)](zf, this, 4555 + 377 + 4931 * -1), this[e(440)] = zu } [Oe(1025)](e, i) { const s = Oe, o = { wNzWl: function(e, t) { return e !== t }, zWRjM: function(e, t) { return e === t }, gYULU: s(682), UPWsc: function(e, t) { return e(t) } }; if (!o[s(509)](qu, i)) return zu; const r = this["$$"][s(1497)][e] || (this["$$"]["callbacks"][e] = []); return r[s(959)](i), () => { const e = s; if (o[e(1015)](o[e(572)], e(682))) { const t = r["indexOf"](i); t !== -(-1469 * -3 + -1 * -6761 + -11167) && r["splice"](t, 4870 + -732 + -4137 * 1) } else { const n = _0x1f0442[e(1003)](_0x52781c); o[e(1082)](n, -(7722 + 3 * -1559 + -3044)) && _0x47708d[e(1206)](n, 131 * 1 + 7781 + -7911) } } } [Oe(514)](e) { const t = Oe; this[t(522)] && !Zu(e) && (this["$$"][t(1034)] = !(-8690 + -329 * -16 + 3426), this["$$set"](e), this["$$"][t(1034)] = !(-1867 + 10 * 916 + -7292)) } } const Zf = "4"; typeof window < "u" && (window[Oe(1542)] || (window["__svelte"] = { v: new Set }))["v"][Oe(352)](Zf); const e1 = new TextEncoder; function t1(e) { const t = Oe; return [...new Uint8Array(e)][t(1313)](e => e["toString"](5 * -1571 + 1464 + 6407)["padStart"](133 + -5026 + 4895, "0"))["join"]("") } async function n1(e, t = Oe(296), n = 3 * 51938 + 1 * 143138 + -24869 * 8) { const i = Oe, s = { xQKlE: function(e, t) { return e * t }, TtmiD: function(e, t, n, i) { return e(t, n, i) } }, o = Date[i(741)]()[i(1114)](7 * 509 + -23 * 3 + -3478); e || (e = Math[i(1192)](s[i(1229)](Math[i(1233)](), n))); const r = await s[i(1306)](i1, o, e, t), a = {}; return a["algorithm"] = t, a[i(538)] = r, a[i(483)] = o, a[i(410)] = "", a } async function i1(e, t, n) { const i = Oe, s = { vuGsk: function(e, t) { return e(t) }, bldVl: function(e, t) { return e + t } }; return s["vuGsk"](t1, await crypto[i(1398)][i(372)](n[i(366)](), e1["encode"](s[i(995)](e, t)))) } function s1(n, i, s = Oe(296), o = 25 * 15749 + 339189 + 267086, r = 4921 + -61 * 17 + -1 * 3884) { const e = Oe, a = { reLbj: e(816), zJdUR: function(e, t, n) { return e(t, n) }, jSsYY: function(e, t) { return e in t }, uBbDY: function(e, t) { return e in t }, LjRwb: e(1037), YxxYc: function(e, t) { return e in t }, AnmjC: e(896), sqBeN: e(1134), eSvOs: function(e, t) { return e in t }, qZDSu: e(1269), IgDwq: function(e, t) { return e in t }, LmttA: function(e, t, n) { return e(t, n) }, dnviT: e(703), fbEJJ: function(e, t, n) { return e(t, n) }, lNomP: e(685), WRetO: "hidefooter", hWCxP: "hidelogo", hHfyP: function(e, t, n) { return e(t, n) }, NLRbo: function(e, t) { return e in t }, mLuCj: e(726), yndRC: e(652), hLlpk: "mockerror", rSMyS: function(e, t) { return e in t }, ZWLJb: e(1399), XhguG: function(e, t) { return e in t }, kpxzQ: "plugins", vBkKu: function(e, t, n) { return e(t, n) }, JZBeY: "refetchonexpire", InIrx: e(1437), fdDwV: e(744), yUSpM: e(680), HTmkA: function(e, t) { return e in t }, YndCc: "verifyurl", uQsQH: function(e, t) { return e in t }, OHUYm: e(393), uCcBg: e(955), SuKqP: function(e, t) { return e !== t }, SEuAG: e(1552), EmUbO: e(1095), gZfHz: function(e, t) { return e <= t }, pYnxG: function(e, t, n, i) { return e(t, n, i) }, PDflU: function(e, t) { return e - t } }, l = new AbortController, c = Date["now"](); return { promise: (async () => { const t = e; if (a[t(1022)](a[t(397)], a[t(1020)])) { for (let e = r; a[t(561)](e, o); e += -1950 + 1 * -5944 + 7895) { if (l[t(857)][t(1223)]) return null; if (await a[t(481)](i1, i, e, s) === n) return { number: e, took: a[t(1498)](Date[t(741)](), c) } } return null } else a["reLbj"] in _0x40a2fc && a[t(1484)](_0x2a277f, 1755 + -5817 + 4062 * 1, _0x4d3bd4 = _0x18ae33["auto"]), a[t(515)](t(1330), _0x3ae122) && a[t(1484)](_0x2bbc0e, -3342 + -9865 * 1 + -1 * -13223, _0x1f9bda = _0x4fe966["blockspam"]), a[t(595)](a[t(612)], _0x4ab58b) && a["zJdUR"](_0x18ed55, -23 * 121 + -1 * 2213 + 1 * 5011, _0x17e91e = _0x1b6216["challengeurl"]), a[t(353)](a[t(391)], _0x2ac9d5) && _0x4b84ec(9760 * 1 + 3971 + 548 * -25, _0x5e45bf = _0x26787d["challengejson"]), a[t(353)](a[t(1184)], _0x2fd8c7) && _0x9d2b20(-479 * -7 + 1 * -2861 + -475, _0x47ff64 = _0x27eeeb["debug"]), a[t(640)](a[t(780)], _0x4f2426) && a[t(1484)](_0x3f859b, -582 * -16 + 1997 * 3 + -15285, _0xc6aef0 = _0x164151[t(1269)]), a["IgDwq"]("expire", _0x206b6a) && a[t(1070)](_0x5f5508, -342 + 3 * -2804 + -1 * -8773, _0x1b8783 = _0x3f6e72["expire"]), a["IgDwq"](a[t(1256)], _0x4db457) && a[t(969)](_0x487d5d, 587 * -2 + -7843 + 9 * 1002, _0x2f6e0 = _0x50540c["floating"]), a[t(1402)] in _0x33874d && a[t(1484)](_0x403439, 1 * -4734 + -8505 + 13259, _0x41687c = _0x3393cb[t(685)]), a[t(640)](t(1067), _0x3d190b) && _0x4c9373(1101 + -285 + -795, _0x361486 = _0x5b67a2[t(1067)]), a[t(900)] in _0x36b252 && _0x2f8a0b(-7 * 1032 + -7437 + 14663, _0x2d9004 = _0x43b442[t(1301)]), a["hWCxP"] in _0x727332 && a[t(507)](_0xfb2902, -5 * -1621 + -745 * 10 + -652, _0x5533ef = _0x62e9ea["hidelogo"]), a[t(1014)](a[t(760)], _0x51ac41) && _0x1b929b(-709 + -5935 + -831 * -8, _0x302d3f = _0x1ac304[t(726)]), a[t(359)] in _0x42eab2 && _0x48a068(691 + 258 * -17 + 9 * 413, _0x3ea8a0 = _0x4de6d4[t(652)]), a[t(1014)](a[t(1004)], _0xab31c4) && _0x3b294b(5 * 941 + 46 * -114 + 562, _0x2d3a1c = _0x1014b1[t(1594)]), a["rSMyS"](a[t(1385)], _0x10c78b) && _0x2a9e3b(-11 * -125 + 9618 * -1 + 8267, _0x3bfaa8 = _0x4ed776[t(1399)]), a["XhguG"](a[t(537)], _0x390679) && a[t(724)](_0x37fb51, -7231 + -6589 + 13852, _0x14b1ca = _0x23b34c[t(1425)]), a[t(640)](a["JZBeY"], _0x27e098) && a[t(1070)](_0x3793fa, 12 * -571 + 18 * 238 + 2593, _0x18dbd8 = _0x18cbc6[t(305)]), a["rSMyS"](a["InIrx"], _0x12cfab) && _0x31f073(-3290 + 3849 + -533, _0x3c6fde = _0x276c89[t(1437)]), a[t(920)] in _0x5dd7da && _0x7db754(-8602 + -53 * 92 + 13511, _0x4fb122 = _0x1f933a[t(744)]), a["rSMyS"](a[t(303)], _0x5c80ea) && a["fbEJJ"](_0xa8c931, -4 * 2243 + 7627 + 1372, _0xef5008 = _0x73ec8e[t(680)]), a[t(1403)](a[t(954)], _0x22dc61) && a[t(724)](_0xa16a91, 3105 + 8902 * -1 + 5825 * 1, _0x4158a7 = _0x1f8a57[t(953)]), a["uQsQH"](a[t(597)], _0x3e1f72) && _0x5ca3e2(194 * -43 + 4390 + 3 * 1327, _0x1b6980 = _0x4d9c90["workers"]), t(436) in _0x3a0d9e && _0x3ec64b(7766 + -19 * -499 + -9 * 1913, _0x3010d4 = _0xba39e5["workerurl"]), a[t(1254)] in _0x153636 && a[t(1484)](_0x3782c9, 9 * -192 + -849 + -19 * -138, _0x1f7f32 = _0x520eb6["$$scope"]) })(), controller: l } } function o1() { const e = Oe; try { return Intl[e(820)]()["resolvedOptions"]()["timeZone"] } catch {} } function r1(e) { const t = Oe, n = { ZzmEl: function(e, t) { return e(t) }, vcJOI: function(e, t) { return e < t } }, i = n["ZzmEl"](atob, e), s = new Uint8Array(i["length"]); for (let e = -1842 * -3 + -9205 + 1 * 3679; n["vcJOI"](e, i[t(1296)]); e++) s[e] = i[t(1093)](e); return s } function a1(t, n = 3444 + -368 * 4 + -1960) { const i = Oe, e = {}; e[i(444)] = function(e, t) { return e < t }, e[i(284)] = function(e, t) { return e / t }; const s = e, o = new Uint8Array(n); for (let e = 2 * 3718 + 1272 + -8708; s[i(444)](e, n); e++) o[e] = t % (6846 + 5107 + -11697), t = Math[i(1358)](s["rUlcJ"](t, -6398 + -3390 + 10044)); return o } async function l1(e, t = "", i = 905018 * 1 + -60 * -24652 + -1384138, s = 5708 + 2498 + -1 * 8206) { const r = Oe, a = { aSPlT: function(e, t) { return e(t) }, SRSQg: r(832), YBtVJ: function(e, t) { return e(t) }, OJbTZ: function(e, t) { return e(t) }, vgLkH: r(1260), kmkHZ: function(e, t) { return e(t) }, QZBBU: r(1421), gPLCF: r(591), GJxgh: function(e, t, n, i) { return e(t, n, i) }, JkoJC: r(620), IMzoO: "0 0 20 20", dnzPH: r(1160), AXetD: r(1202), ktVap: r(1494), OonDO: "_blank", rxxmK: "aria-label", vCvSX: function(e, t) { return e <= t }, rhNVv: r(310), jbqYF: r(1590), pnXaI: r(296), mspnc: r(593), ExYZC: r(468), luXhf: function(e) { return e() } }, l = a[r(1585)], c = new AbortController, d = Date["now"](), n = async () => { const o = r, t = { nVCmE: function(e, t) { const n = k1; return a[n(1284)](e, t) }, YQKqv: a[o(837)], VcuDJ: function(e, t) { const n = o; return a[n(1090)](e, t) }, HXnRL: "svg", OEDZw: function(e, t) { const n = o; return a[n(1381)](e, t) }, IHeHG: a[o(1158)], JNQKB: function(e, t) { const n = o; return a[n(459)](e, t) }, SGSUh: function(e, t) { return e(t) }, WZDrA: "currentColor", LYlkr: function(e, t, n, i) { return e(t, n, i) }, HZFgn: a[o(1181)], uypmc: a[o(451)], UlIpH: function(e, t, n, i) { const s = o; return a[s(1334)](e, t, n, i) }, xTZlM: a[o(470)], hCzsd: a["IMzoO"], xkbTV: a[o(808)], oJple: function(e, t, n, i) { return e(t, n, i) }, cHOWM: "xmlns", nbFwG: a[o(1153)], nLYYy: a[o(1013)], cFjHP: a[o(972)], PEofw: o(1408), XXFUt: a[o(288)] }; for (let e = s; a["vCvSX"](e, i); e += 4856 + -19 * -144 + 7591 * -1) { if (a[o(1008)] === a[o(1008)]) { if (c[o(857)]["aborted"] || !u || !f) return null; try { const n = await crypto[o(1398)][o(468)]({ name: l, iv: a1(e) }, u, f); if (n) return { clearText: (new TextDecoder)[o(1311)](n), took: Date["now"]() - d } } catch {} } else _0x1afaf2 = t["nVCmE"](_0x174163, t[o(704)]), _0xd8bc82 = t[o(890)](_0x5d2dc2, "a"), _0x43ff19 = t["nVCmE"](_0x417aed, t[o(913)]), _0x5cdd41 = t[o(855)](_0x124309, t[o(1277)]), _0x15a455 = t[o(923)](_0x401217, t[o(1277)]), _0x38dea9 = t[o(964)](_0x46ad33, o(1260)), _0x46b836(_0x670000, "d", o(940)), _0x2f9da6(_0xa63d9b, o(591), t[o(1489)]), t["LYlkr"](_0x1c4e9f, _0x10e53c, "d", t[o(881)]), _0x34d498(_0x2fea48, t[o(1603)], t["WZDrA"]), t[o(1517)](_0x2a34f8, _0x414050, "d", o(1478)), t[o(1517)](_0x2bf5b2, _0x12da26, t[o(1603)], "currentColor"), t[o(423)](_0x5db80b, _0x17e136, o(479), "22"), _0x563ed3(_0x4a7333, o(671), "22"), t[o(1517)](_0x55caab, _0x125121, t[o(1467)], t[o(380)]), t[o(423)](_0xe8a8fe, _0x4d96b5, t[o(1603)], t[o(1127)]), t[o(361)](_0x40ab2f, _0x101f0, t[o(1320)], o(856)), t[o(361)](_0x3aff09, _0x2f3996, t[o(1170)], _0x3a7e5d), _0x3a7e31(_0x356602, t[o(598)], t[o(602)]), _0x1979e0(_0x4c6a56, t[o(318)], o(1513)), _0x38136e(_0x2849ea, t[o(1084)], _0x3f8a7e = _0x407984[5191 + 7618 + 6399 * -2][o(517)]) } return null }; let u = null, f = null; try { f = a[r(1090)](r1, e); const o = await crypto[r(1398)][r(372)](a["pnXaI"], e1[r(443)](t)); u = await crypto[r(1398)][r(937)](a[r(603)], o, l, !(4417 + -7630 + 3214), [a[r(396)]]) } catch { return { promise: Promise[r(277)](), controller: c } } return { promise: a[r(1550)](n), controller: c } } var c1 = (e => (e[Oe(1463)] = Oe(1023), e[Oe(1050)] = Oe(1559), e[Oe(1154)] = Oe(957), e[Oe(821)] = "unverified", e["EXPIRED"] = "expired", e))(c1 || {}); function d1(e) { const t = Oe, n = { sWYLE: function(e, t, n, i) { return e(t, n, i) }, YEqXJ: t(1135), IheZj: '.altcha.svelte-ddsc3z.svelte-ddsc3z{background:var(--altcha-color-base, transparent);border:var(--altcha-border-width, 1px) solid var(--altcha-color-border, #a0a0a0);border-radius:var(--altcha-border-radius, 3px);color:var(--altcha-color-text, currentColor);display:flex;flex-direction:column;max-width:var(--altcha-max-width, 260px);position:relative;text-align:left}.altcha.svelte-ddsc3z.svelte-ddsc3z:focus-within{border-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating].svelte-ddsc3z.svelte-ddsc3z{background:var(--altcha-color-base, white);display:none;filter:drop-shadow(3px 3px 6px rgba(0, 0, 0, 0.2));left:-100%;position:fixed;top:-100%;width:var(--altcha-max-width, 260px);z-index:999999}.altcha[data-floating=top].svelte-ddsc3z .altcha-anchor-arrow.svelte-ddsc3z{border-bottom-color:transparent;border-top-color:var(--altcha-color-border, #a0a0a0);bottom:-12px;top:auto}.altcha[data-floating=bottom].svelte-ddsc3z.svelte-ddsc3z:focus-within::after{border-bottom-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating=top].svelte-ddsc3z.svelte-ddsc3z:focus-within::after{border-top-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating].svelte-ddsc3z.svelte-ddsc3z:not([data-state=unverified]){display:block}.altcha-anchor-arrow.svelte-ddsc3z.svelte-ddsc3z{border:6px solid transparent;border-bottom-color:var(--altcha-color-border, #a0a0a0);content:"";height:0;left:12px;position:absolute;top:-12px;width:0}.altcha-main.svelte-ddsc3z.svelte-ddsc3z{align-items:center;display:flex;gap:0.4rem;padding:0.7rem}.altcha-label.svelte-ddsc3z.svelte-ddsc3z{flex-grow:1}.altcha-label.svelte-ddsc3z label.svelte-ddsc3z{cursor:pointer}.altcha-logo.svelte-ddsc3z.svelte-ddsc3z{color:currentColor;opacity:0.3}.altcha-logo.svelte-ddsc3z.svelte-ddsc3z:hover{opacity:1}.altcha-error.svelte-ddsc3z.svelte-ddsc3z{color:var(--altcha-color-error-text, #f23939);display:flex;font-size:0.85rem;gap:0.3rem;padding:0 0.7rem 0.7rem}.altcha-footer.svelte-ddsc3z.svelte-ddsc3z{align-items:center;background-color:var(--altcha-color-footer-bg, transparent);display:flex;font-size:0.75rem;opacity:0.4;padding:0.2rem 0.7rem;text-align:right}.altcha-footer.svelte-ddsc3z.svelte-ddsc3z:hover{opacity:1}.altcha-footer.svelte-ddsc3z>.svelte-ddsc3z:first-child{flex-grow:1}.altcha-footer.svelte-ddsc3z a{color:currentColor}.altcha-checkbox.svelte-ddsc3z.svelte-ddsc3z{display:flex;align-items:center;height:24px;width:24px}.altcha-checkbox.svelte-ddsc3z input.svelte-ddsc3z{width:18px;height:18px;margin:0}.altcha-hidden.svelte-ddsc3z.svelte-ddsc3z{display:none}.altcha-spinner.svelte-ddsc3z.svelte-ddsc3z{animation:svelte-ddsc3z-altcha-spinner 0.75s infinite linear;transform-origin:center}@keyframes svelte-ddsc3z-altcha-spinner{100%{transform:rotate(360deg)}}' }; n[t(701)](af, e, n["YEqXJ"], n[t(1195)]) } function u1(e) { const s = Oe, o = { tHsGH: function(e, t) { return e(t) }, cDBzB: "svg", ERvSv: s(1260), RsOvQ: function(e, t, n, i) { return e(t, n, i) }, NwZGK: s(591), ZfCWA: s(690), xgDBz: s(1230), PIpIb: ".25", CGSkx: s(675), noeZs: s(1408), REQwz: s(458), EKOMO: function(e, t, n, i) { return e(t, n, i) }, GbHKv: s(479), ltUdh: s(671), MVjpN: s(620), IfWaD: s(346), Kdywf: s(1300), VXALE: function(e, t) { return e & t }, CpUhm: function(e, t) { return e !== t }, ETGvJ: function(e, t) { return e + t }, pOtSB: function(e, t) { return e !== t }, AGdGU: s(1356), QgwCx: function(e, t, n, i) { return e(t, n, i) }, FFbHI: function(e, t, n) { return e(t, n) } }; let r, a, l; return { c() { const e = s; r = o[e(1040)](hf, o[e(1194)]), a = hf(o["ERvSv"]), l = o[e(1040)](hf, o[e(1477)]), M(a, "d", e(1491)), o["RsOvQ"](M, a, o[e(606)], o["ZfCWA"]), o[e(426)](M, a, o[e(1435)], o["PIpIb"]), o[e(426)](M, l, "d", o[e(705)]), o[e(426)](M, l, o[e(606)], o["ZfCWA"]), M(l, o["noeZs"], o[e(582)]), o["EKOMO"](M, r, o["GbHKv"], "24"), o[e(1448)](M, r, o[e(592)], "24"), M(r, o[e(876)], o[e(1197)]), M(r, o[e(301)], e(856)) }, m(e, t) { const n = s, i = { aIase: function(e, t) { const n = k1; return o[n(819)](e, t) }, syJWK: function(e, t) { return o["CpUhm"](e, t) }, QAlhO: function(e, t) { const n = k1; return o[n(1444)](e, t) }, qjJPS: function(e, t, n, i) { const s = k1; return o[s(426)](e, t, n, i) } }; o["pOtSB"](n(1272), o[n(1547)]) ? (o[n(1602)](df, e, r, t), o[n(1445)](rf, r, a), rf(r, l)) : (i[n(824)](_0x1cdbf3[-7745 + -1 * -2719 + -2 * -2513], -755 + -4004 + 6807) && i[n(1139)](_0x2dda31, _0x3df874 = i["QAlhO"](_0x5f2609[-7355 + -6873 + -29 * -491]["expired"], "")) && (_0x4dcc61[n(407)] = _0x209db8), _0x5bcd6c[3 * 1283 + 1 * 4783 + -8632] & 4669 + -11 * -393 + -256 * 35 && i[n(1571)](_0x2c164c, _0x43c991, n(473), _0x2a0b64[-1936 + -1 * -5479 + -3538])) }, d(e) { e && uf(r) } } } function f1(n) { const i = Oe, s = { SPebk: function(e) { return e() }, isVQb: function(e, t) { return e !== t }, UQlTE: i(1041), bVVnJ: "label", Wavpf: function(e, t, n, i) { return e(t, n, i) }, qyHno: i(1042), zYLgQ: function(e, t) { return e + t }, TsCdx: i(805), EXCIK: i(1408), xkrFY: "svelte-ddsc3z", EryKC: function(e, t) { return e & t }, feMpB: function(e, t) { return e !== t }, fAWOT: function(e, t) { return e !== t }, itdFS: function(e, t) { return e + t }, JhAiW: function(e, t) { return e(t) } }; let o, r = n[1457 + 5877 + 2441 * -3][i(1092)] + "", a; return { c() { const e = i; if (s["isVQb"](e(1041), s["UQlTE"])) { const t = {}; t["obfuscated"] = _0x126042, this[e(522)](t), s[e(1377)](_0x42496f) } else o = ff(s["bVVnJ"]), s[e(712)](M, o, s[e(1555)], a = s[e(291)](n[-2849 + 324 + -9 * -281], s[e(686)])), M(o, s[e(1243)], s[e(700)]) }, m(e, t) { const n = i; df(e, o, t), o[n(407)] = r }, p(e, t) { const n = i; s[n(1599)](t[-9364 + -7 * 668 + 14040], 6661 * 1 + 522 + 395 * -13) && s[n(668)](r, r = s["zYLgQ"](e[9430 + 4784 + 7 * -2029][n(1092)], "")) && (o[n(407)] = r), s[n(1599)](t[8317 + -2758 + 1853 * -3], -4072 + 1891 + 169 * 13) && s[n(1549)](a, a = s["itdFS"](e[-1681 * -3 + 9187 + -14226], s["TsCdx"])) && M(o, s[n(1555)], a) }, d(e) { e && s["JhAiW"](uf, o) } } } function h1(e) { const s = Oe, o = { DQvgF: function(e, t) { return e === t }, YMAqy: s(958), uhTNq: s(1177), XyzWO: s(302), xadtO: function(e, t, n, i) { return e(t, n, i) }, jFlsW: function(e, t) { return e(t) }, sNYiB: s(609), biYrA: "iKZbH", MKOnJ: s(1236), mxQFz: function(e, t) { return e + t } }; let r, a = e[354 * -14 + 3470 + -1497 * -1][s(957)] + ""; return { c() { const e = s; if (o[e(1043)](o[e(362)], o[e(730)])) return this["$$"][e(1200)][251 * 1 + 6304 + -6514]; else r = ff(o[e(490)]) }, m(e, t) { const n = s; o[n(746)](df, e, r, t), r["innerHTML"] = a }, p(e, t) { const n = s; if (o[n(1043)](o[n(637)], o[n(1178)])) { const i = o["jFlsW"](_0xd9f800, o[n(841)]); i["id"] = _0x28c457, i[n(442)] = _0xf0fe8b, _0x20327c(_0x3bcc7c, i) } else t[5073 + -25 * -217 + 10498 * -1] & -3467 + 7985 + -2470 && a !== (a = o[n(898)](e[-1229 * -7 + 1 * -8939 + 1 * 347][n(957)], "")) && (r["innerHTML"] = a) }, d(e) { const t = s; e && o[t(936)](uf, r) } } } function p1(n) { const i = Oe, o = { AZiPL: i(1199), OlKUc: i(636), gdoTN: function(e, t, n) { return e(t, n) }, wYCvB: "plugins", nBXmx: "none", wHkfg: function(e, t) { return e(t) }, tVoRf: i(370), hKXPl: i(415), IesOB: function(e, t) { return e === t }, payXT: i(1378), PzuxO: function(e) { return e() }, CEMdS: i(449), yWBNO: "span", CrYGE: "input", vtrZB: function(e, t, n, i) { return e(t, n, i) }, dnNvF: i(1033), ETDCU: "hidden", IAeIM: function(e, t, n, i) { return e(t, n, i) }, pfBQT: function(e, t) { return e(t) }, yrSWu: i(1454), rrzcS: function(e, t) { return e !== t }, hJsot: i(404), mybpH: i(726), mzJFS: function(e, t) { return e === t }, Ecewg: i(1428), tywSB: i(1228), eQWxj: function(e, t, n, i) { return e(t, n, i) }, aeAic: function(e, t, n, i) { return e(t, n, i) }, JQlxz: function(e, t) { return e & t }, SkjJa: i(884), IpmAo: function(e, t) { return e(t) }, PmDrU: function(e, t) { return e + t } }; let r, s = o[i(583)](n[1 * 58 + 905 * 5 + 18 * -254][i(1559)], ""), a, l; return { c() { const s = i, e = { nEmxu: o[s(1460)], oIIFp: o[s(677)], UlCKy: function(e, t, n) { return o["gdoTN"](e, t, n) }, AeAhK: s(393), cMNxE: function(e) { return e() }, eUuSV: function(e, t, n) { const i = s; return o[i(549)](e, t, n) }, Ehkbg: o[s(642)], bAadG: o["nBXmx"], CeMlL: function(e, t) { const n = s; return o[n(1458)](e, t) }, XHovn: function(e, t) { const n = s; return o[n(1458)](e, t) }, YyXCp: function(e, t) { return e !== t }, OfXAt: o[s(529)], HYHCs: o[s(613)], mEgcg: s(1389), kqhzw: function(e, t) { return o["IesOB"](e, t) }, zwlWh: o[s(904)], tFqCO: function(e) { const t = s; return o[t(999)](e) }, GAnTz: s(851) }; if ("JokUX" !== o[s(550)]) { const t = {}; t[s(1028)] = !(2658 * 2 + -9838 + -17 * -266), _0x4af040(e["nEmxu"], e[s(761)]), e["UlCKy"](_0x4d3518, e[s(962)], _0x56cfcd), e[s(1055)](_0x477b4a), e["eUuSV"](_0x240656, e[s(293)], _0x453669[s(1296)] ? _0x18099a[s(1313)](e => e[s(1143)][s(1112)])[s(486)](", ") : e[s(1362)]), _0x131894 && e[s(1226)](_0x1ca35b, s(926)), _0x412539 && e[s(1539)](_0x1e537f, _0x280c40), e[s(910)](_0x482cc4, void(-1 * -313 + 6992 + -7305)) && _0x57dc45(s(816), _0x2f7259), _0x2ae15c !== void(-1146 + 3099 + -1953) && e[s(1539)](_0x188bc2, _0x466436), _0x5b6f49 = _0x109df8["closest"](e[s(784)]), _0x25ab78 && (_0x28f8bb[s(742)](s(1363), _0x328889, t), _0x449f67[s(742)](e[s(1123)], _0x3e17f1), _0x4a28b1 === e[s(1359)] && _0x4ebb54[s(742)]("focusin", _0x83c441)), e[s(1036)](_0x52c9f0, e[s(1245)]) && (_0x30f596 ? e[s(477)](_0x11e6fc) : _0x5e098b()), _0x5ef94c && (_0x4b21a6 || _0xd625bb) && _0x118945(e[s(1503)]), _0x193634(() => { const e = s; _0x3e3241(e(1211)) }) } else r = ff(o["yWBNO"]), a = o["PzuxO"](mf), l = o[s(1458)](ff, o["CrYGE"]), o[s(850)](M, l, o["dnNvF"], o["ETDCU"]), o[s(823)](M, l, s(726), n[-8129 + -9 * 228 + 679 * 15]), l[s(1344)] = n[1542 + -4559 + 3023 * 1] }, m(e, t) { const n = i; o[n(1164)](o[n(1133)], o[n(1527)]) ? (_0x5bd04d = o[n(1068)](_0x3e9e83, o["yrSWu"]), o[n(1412)](_0x2ecc6d, o[n(1413)]) && o[n(850)](_0x52f14e, _0x166e70, o[n(1314)], _0xf230dc)) : (o["eQWxj"](df, e, r, t), r[n(407)] = s, df(e, a, t), o[n(1613)](df, e, l, t)) }, p(e, t) { const n = i; t[1 * 7496 + -3679 + -3817 * 1] & -233 + -430 * 4 + -1 * -4001 && o[n(1412)](s, s = e[1 * 6881 + -1 * -1037 + -7907][n(1559)] + "") && (r[n(407)] = s), o[n(1406)](t[-1 * -88 + 4321 + -4409], 826 + -1 * 4724 + 103 * 38) && M(l, n(726), e[-13 * -710 + 2 * 2908 + -15042]), o[n(1406)](t[8 * 835 + -9593 + 1 * 2913], -330 + -12 * -478 + 2 * -2671) && (l[n(1344)] = e[-1 * 3727 + -1500 + 5233]) }, d(e) { const t = i; if (o[t(566)](t(884), o[t(283)])) e && (o[t(1068)](uf, r), o[t(383)](uf, a), o[t(383)](uf, l)); else return this["$$"][t(1200)][26 * 95 + 7830 + -10298] } } } function m1(t) { const o = Oe, r = { NHNgN: function(e, t) { return e(t) }, rLMHo: o(832), ZGchL: o(1294), fxQrQ: function(e, t) { return e(t) }, TxvPK: o(1260), IEBqR: function(e, t, n, i) { return e(t, n, i) }, MvKph: o(940), vALlc: function(e, t, n, i) { return e(t, n, i) }, wBzOr: "fill", qaVjk: "currentColor", BBFWh: "M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z", EOUOo: "M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z", pjDDT: function(e, t, n, i) { return e(t, n, i) }, KvLEm: o(479), XhlGe: o(1475), pjZKO: function(e, t, n, i) { return e(t, n, i) }, LINxY: o(1160), meogQ: o(1300), dmADF: "href", hisMZ: function(e, t, n, i) { return e(t, n, i) }, uKycY: o(1366), rWvov: "class", TxCqo: o(1513), npYHp: function(e, t, n, i) { return e(t, n, i) }, YlWsy: o(1291), NHbRd: function(e) { return e() }, GLQwi: function(e, t) { return e === t }, sAWpK: function(e, t, n, i) { return e(t, n, i) }, HrRlJ: function(e, t, n) { return e(t, n) }, cmmDr: "HfyqG", IZhRr: function(e, t) { return e & t }, soGgu: function(e, t, n, i) { return e(t, n, i) }, gfftj: function(e, t, n, i) { return e(t, n, i) }, HJWTJ: function(e, t) { return e !== t }, sAbws: "APGSo" }; let a, l, c, d, u, f, i; return { c() { const e = o; a = r[e(344)](ff, r[e(1609)]), l = r["NHNgN"](ff, "a"), c = r[e(344)](hf, r[e(511)]), d = r["fxQrQ"](hf, r[e(1341)]), u = r[e(344)](hf, r[e(1341)]), f = r[e(1604)](hf, r["TxvPK"]), r["IEBqR"](M, d, "d", r[e(1278)]), r["vALlc"](M, d, r[e(493)], r[e(951)]), M(u, "d", r["BBFWh"]), r["IEBqR"](M, u, r[e(493)], r["qaVjk"]), M(f, "d", r[e(321)]), r[e(679)](M, f, r[e(493)], r["qaVjk"]), r[e(1213)](M, c, r[e(735)], "22"), r[e(903)](M, c, e(671), "22"), r[e(903)](M, c, e(620), r[e(828)]), r["pjZKO"](M, c, e(591), r[e(1462)]), M(c, r[e(319)], e(856)), r[e(1213)](M, l, r[e(1376)], S1), r[e(1221)](M, l, e(1494), r[e(1546)]), M(l, r["rWvov"], r[e(431)]), r[e(1146)](M, l, r[e(985)], i = t[-7871 * 1 + 1 * -2063 + 9945][e(517)]) }, m(e, t) { const n = o, i = { RMuev: function(e) { const t = k1; return r[t(922)](e) } }; if (r[n(1144)](n(272), n(793))) { const s = {}; s[n(436)] = _0x147ffa, this[n(522)](s), i[n(919)](_0x25d374) } else r[n(365)](df, e, a, t), rf(a, l), rf(l, c), r["HrRlJ"](rf, c, d), rf(c, u), rf(c, f) }, p(e, t) { const n = o; if (r["GLQwi"](r["cmmDr"], n(1232))) return _0x38d130[n(557)](_0x2fb07d); else r[n(634)](t[-34 * -261 + 4 * 1389 + 13 * -1110], -3808 + 7306 + -1450) && i !== (i = e[23 * -13 + 1928 * 5 + -9330][n(517)]) && r["soGgu"](M, l, r[n(985)], i) }, d(e) { const n = o, t = { RGqcW: function(e, t, n, i) { const s = k1; return r[s(1249)](e, t, n, i) } }; if (r[n(1386)](r[n(546)], r["sAbws"])) { const i = {}; i["cancelable"] = _0x3afabc; const s = t[n(1316)](_0x1265aa, _0x26642b, _0x389074, i); return _0x14d752["slice"]()[n(699)](e => { const t = n; e[t(1405)](_0x239279, s) }), !s[n(630)] } else e && r[n(344)](uf, a) } } } function g1(e) { const o = Oe, r = { dPWWV: function(e, t) { return e === t }, uBQKO: function(e, t) { return e(t) }, ckXHD: function(e, t) { return e !== t }, hgAEr: o(1560), CScwS: o(767), ONnMw: o(832), Akhpd: function(e, t) { return e(t) }, kITiu: o(1294), PMPOn: function(e) { return e() }, CsAbC: function(e, t, n, i) { return e(t, n, i) }, jhaLA: o(392), ViPwO: o(1192), SObqV: function(e, t, n, i) { return e(t, n, i) }, yvaFv: o(1225), Sbatp: "M6 18L18 6M6 6l12 12", cobxd: function(e, t, n, i) { return e(t, n, i) }, tOPNp: "width", mpebe: o(671), xoDju: o(1300), FKUiQ: o(856), RyhOt: function(e, t, n, i) { return e(t, n, i) }, laUGl: o(591), fIqLB: function(e, t, n, i) { return e(t, n, i) }, jtGKl: o(620), RCHdm: o(346), tjbAE: function(e, t, n, i) { return e(t, n, i) }, ppUfC: o(271), uaQvS: "1.5", hrttr: o(448), iMQBa: o(1592), bSXah: function(e, t) { return e + t }, OMEZy: o(773), JaARX: function(e, t, n, i) { return e(t, n, i) }, jhQYS: function(e, t, n) { return e(t, n) }, MzfSy: function(e, t, n) { return e(t, n) }, sPOkI: function(e, t) { return e(t) }, WUbxL: function(e, t) { return e(t) }, QirXU: function(e, t) { return e(t) } }; let a, l, c, d; function i(e, t) { const n = o; if (r[n(1117)]("hyiSV", "hyiSV")) return r[n(1117)](e[718 + -940 + 229], c1[n(1248)]) ? x1 : y1; else _0x24958f && _0x281ba1(_0x5ca859) } let s = r[o(1235)](i, e), u = r["QirXU"](s, e); return { c() { const n = o, e = { WqpMH: function(e, t) { const n = k1; return r[n(925)](e, t) } }; if (r[n(1126)](r[n(934)], r[n(465)])) a = r[n(925)](ff, r["ONnMw"]), l = r[n(1116)](hf, r[n(1063)]), c = r[n(1116)](hf, n(1260)), d = r["PMPOn"](mf), u["c"](), r[n(1168)](M, c, r["jhaLA"], r[n(1388)]), r[n(1024)](M, c, r[n(653)], r[n(1388)]), r[n(1024)](M, c, "d", r[n(1457)]), r[n(899)](M, l, r[n(621)], "14"), M(l, r[n(938)], "14"), r[n(1024)](M, l, r["xoDju"], r["FKUiQ"]), r[n(1189)](M, l, r[n(1309)], "none"), r["fIqLB"](M, l, r["jtGKl"], r[n(1556)]), r[n(1157)](M, l, r[n(655)], r[n(1136)]), r["SObqV"](M, l, r[n(1432)], n(690)), r[n(1189)](M, a, "class", r[n(732)]); else { const t = {}; t[n(806)] = function(e, t) { return e !== t }; const i = t; if (!e[n(1579)](_0x1b39e0, _0x13a6e1)) return _0x177e04; const s = this["$$"][n(1497)][_0x2b89a8] || (this["$$"]["callbacks"][_0x411aeb] = []); return s[n(959)](_0x20666d), () => { const e = n, t = s[e(1003)](_0x46affb); i[e(806)](t, -(-5969 + -4683 + 10653)) && s[e(1206)](t, -11 * 151 + 582 + 15 * 72) } } }, m(e, t) { const n = o; r[n(754)] === r[n(754)] ? (r["JaARX"](df, e, a, t), r[n(765)](rf, a, l), r[n(1563)](rf, l, c), r[n(1563)](rf, a, d), u["m"](a, null)) : _0x775679[-8018 + -5 * 1811 + 9 * 1897] & -4622 + -31 * 83 + 13 * 711 && _0x1a9be6 !== (_0x9b2d5a = r[n(1247)](_0x38dbf4[-1 * -5184 + -1 * -2194 + -7367][n(957)], "")) && (_0x4e321a["innerHTML"] = _0x390b24) }, p(e, t) { const n = o; r[n(1117)](s, s = r[n(880)](i, e)) && u ? u["p"](e, t) : (u["d"](8618 + 3742 + -12359), u = r[n(880)](s, e), u && (u["c"](), u["m"](a, null))) }, d(e) { const t = o; e && r[t(1116)](uf, a), u["d"]() } } } function y1(t) { const i = Oe, s = { tgKDT: function(e, t) { return e(t) }, HtGUX: i(832), QwBSd: function(e, t, n, i) { return e(t, n, i) }, ZhIXG: i(473), thsTt: function(e, t, n, i) { return e(t, n, i) }, lNHIE: function(e, t) { return e !== t }, ZNhYH: function(e, t) { return e + t }, MFghe: function(e, t, n, i) { return e(t, n, i) }, qXLAS: "fbDCm", vzRsM: i(1338), IMhrT: function(e, t) { return e + t } }; let o, r = s[i(416)](t[7 * -970 + -8189 * 1 + -2998 * -5][i(1023)], ""); return { c() { const e = i; o = s[e(1589)](ff, s["HtGUX"]), s[e(358)](M, o, s["ZhIXG"], t[-2227 + 8641 + -6409]) }, m(e, t) { const n = i; s["thsTt"](df, e, o, t), o[n(407)] = r }, p(e, t) { const n = i; t[4951 * -2 + -4815 + 1 * 14717] & -14 * -59 + -2 * 657 + 317 * 8 && s[n(812)](r, r = s[n(817)](e[-5191 + 8261 + -7 * 437][n(1023)], "")) && (o[n(407)] = r), t[-1966 * 3 + 8306 + -2408] & -1655 + -848 * 2 + -17 * -199 && s["MFghe"](M, o, s[n(892)], e[-1 * 2587 + 8520 + -4 * 1482]) }, d(e) { const t = i; if (s["lNHIE"](s[t(418)], s[t(1053)])) e && s[t(1589)](uf, o); else return this["$$"]["ctx"][-25 * 2 + -1 * -557 + -53 * 9] } } } function x1(t) { const i = Oe, s = { qOwAQ: function(e, t) { return e(t) }, XjnPy: i(832), rrceQ: i(473), Wqvlh: function(e, t, n, i) { return e(t, n, i) }, QgTkL: function(e, t) { return e & t }, PkvvC: function(e, t) { return e !== t }, dXQEj: function(e, t) { return e + t }, JTVFZ: function(e, t, n, i) { return e(t, n, i) }, KEyyk: function(e, t, n) { return e(t, n) }, mMYit: function(e, t, n) { return e(t, n) }, mDOYM: function(e, t, n) { return e(t, n) }, alJnS: "change", FLqHy: function(e, t, n, i) { return e(t, n, i) }, zYAxo: function(e, t, n, i) { return e(t, n, i) }, GKHlQ: i(697), FBDvL: i(942), jnoKA: function(e, t) { return e(t) }, qxBfC: function(e, t) { return e + t } }; let o, r = s[i(844)](t[-9923 * -1 + -187 + 9725 * -1][i(695)], ""); return { c() { const e = i; o = s[e(406)](ff, s[e(1030)]), M(o, s[e(610)], t[-5614 + -2 * -4867 + 5 * -823]) }, m(e, t) { const n = i; s[n(1593)](df, e, o, t), o[n(407)] = r }, p(e, t) { const n = i; s[n(656)](t[512 + -1 * 2833 + 2321 * 1], 1561 * -3 + 1957 + -4774 * -1) && s[n(1373)](r, r = s[n(1439)](e[-5305 + 160 * 35 + -284]["expired"], "")) && (o["innerHTML"] = r), t[5 * 1713 + 1571 * -1 + -6994] & -2 * -4983 + 1535 + -11469 && s[n(1593)](M, o, s[n(610)], e[-1 * 5853 + -6 * -921 + 332]) }, d(e) { const t = i; s[t(1140)] !== t(942) ? (_0x52b1be && _0x4ea446["m"](_0x2881f7, _0x4ac0ec), s["Wqvlh"](_0x7b8869, _0x417aa5, _0x39009c, _0x53272a), s[t(488)](_0x3beb2e, _0x5d043e, _0x549143, _0x5a0ee8), s[t(943)](_0xa2e692, _0x2a5f8b, _0x34d4a5), _0x1ae17e && _0x13f647["m"](_0x2876a0, null), s["KEyyk"](_0x35f289, _0x5b7afe, _0x39eca7), s[t(943)](_0x53c0dd, _0x2862a9, _0x256adb), s[t(1303)](_0x31dcbc, _0x49a83e, _0x25e754), _0x452eff[t(1531)] = _0x39ac09[-9537 + -3392 + 12937], s["KEyyk"](_0x1b35af, _0x5d9e9f, _0x202cde), _0x4fc4a1(_0x5bf6c5, _0x57f7bf), _0x2bce2f["m"](_0x599a29, null), s["mMYit"](_0x411507, _0x5532cb, _0x26cccb), _0x463c0b && _0x31eae8["m"](_0x5bbb53, null), s["KEyyk"](_0xae5a0c, _0x3719fb, _0xed2d8d), _0x478e3c && _0x3d85c1["m"](_0x368641, null), s[t(1615)](_0x2a68b5, _0x11fee9, _0x1934be), _0x3c8fcd && _0x115ca1["m"](_0x158942, null), s[t(1303)](_0x4aaf5d, _0xf748ea, _0x498c05), _0x1d56b6 && _0x3647c4["m"](_0xc18616, null), _0x4e1b76[-31 * 113 + 1534 + -2 * -1009](_0x35c3f1), _0x23bd98 = !(274 * 18 + -2111 + 13 * -217), _0x5a4721 || (_0x7bd4f2 = [s["Wqvlh"](_0xaa13a3, _0x18254d, s[t(309)], _0x555103[-5056 + -9967 + 15070]), s[t(619)](_0x45e576, _0x43a426, s["alJnS"], _0x4912c2[-6133 + -6143 + 12289]), s[t(1442)](_0x34ad9c, _0x12eeb2, s[t(1108)], _0x4d03f9[288 + -9 * 280 + 2246])], _0x334f26 = !(8141 * -1 + -7897 + -2673 * -6))) : e && s[t(543)](uf, o) } } } function w1(e) { const s = Oe, o = { CliRJ: function(e, t) { return e(t) }, NBpaB: s(832), JzQKe: function(e, t, n, i) { return e(t, n, i) }, LvxUZ: s(1408), dhYZu: s(1135), xuFng: function(e, t, n, i) { return e(t, n, i) }, PxneK: s(1576), TNilb: s(1434), vHtcy: function(e, t, n, i) { return e(t, n, i) }, nvJLb: function(e, t, n) { return e(t, n) }, VAdas: function(e, t, n) { return e(t, n) }, YUSML: s(838), cBcOK: function(e, t) { return e === t }, nkHKN: "hRzth", Usexu: "EWATv", rlCeZ: function(e, t) { return e & t }, Yeupy: function(e, t) { return e + t }, RWiJw: s(673), GlXWK: s(336), CzEdW: function(e, t) { return e(t) } }; let r, a, l = o[s(1364)](e[-9997 + 7082 + 133 * 22]["footer"], ""); return { c() { const e = s; r = o[e(909)](ff, o[e(1407)]), a = o[e(909)](ff, o["NBpaB"]), o[e(1056)](M, a, o[e(607)], o[e(1611)]), o[e(1274)](M, r, e(1408), e(748)) }, m(e, t) { const n = s; if (o[n(1258)] === o["TNilb"]) { const i = {}; return i[n(816)] = _0x312f06, i[n(1330)] = _0x13d1f6, i["challengeurl"] = _0x389409, i["debug"] = _0x2be8c6, i[n(1269)] = _0x4585db, i[n(1476)] = _0x316ca8, i["floating"] = _0x1dad4e, i[n(685)] = _0x48d405, i[n(1067)] = _0x481a16, i["hidefooter"] = _0x2704a9, i["hidelogo"] = _0x494795, i[n(726)] = _0x3b0ca0, i[n(652)] = _0x31b987, i[n(1594)] = _0x4d169a, i[n(1399)] = _0x307c99, i["refetchonexpire"] = _0x19c331, i[n(1437)] = _0x42b564, i[n(744)] = _0x2795d0, i["test"] = _0x59e809, i[n(953)] = _0x59f2ce, i[n(393)] = _0x4672a4, i[n(436)] = _0x414458, i } else o[n(472)](df, e, r, t), o["nvJLb"](rf, r, a), a[n(407)] = l }, p(e, t) { const n = s, i = { qPKXM: function(e, t, n) { const i = k1; return o[i(1342)](e, t, n) }, PAhpj: o[n(1049)] }; o["cBcOK"](o[n(600)], o[n(475)]) ? i[n(722)](_0x57bfda, i[n(350)], _0x480732) : o[n(1224)](t[-8233 + -47 * -135 + 1888], 5963 + -5735 + -140 * -13) && l !== (l = o[n(1364)](e[5806 * 1 + -137 * 11 + -4288][n(647)], "")) && (a[n(407)] = l) }, d(e) { const t = s; if (o[t(629)] !== o["GlXWK"]) e && o[t(944)](uf, r); else return this["$$"][t(1200)][-2740 + -5 * 1572 + -3 * -3541] } } } function b1(i) { const s = Oe, o = { pRqJs: function(e, t) { return e !== t }, KNrwc: s(980), nlhhJ: function(e, t) { return e(t) }, yWvMl: s(832), qedLD: function(e, t, n, i) { return e(t, n, i) }, OLljL: s(1408), ZxSYP: s(762), XjqWp: function(e, t, n, i) { return e(t, n, i) }, XulQK: function(e, t, n) { return e(t, n) }, lpxtL: function(e, t) { return e !== t }, lBwGo: "mROdD" }; let r; return { c() { const e = s; if (o["pRqJs"](e(980), o[e(326)])) { const t = this[e(1263)][e(1025)](_0x54fd63, _0x6077c0); this[e(290)][e(1545)](_0x381c9a, t) } else r = o["nlhhJ"](ff, o["yWvMl"]), o[e(1374)](M, r, o[e(1251)], o[e(355)]) }, m(e, t) { const n = s; o[n(1203)](df, e, r, t), i[-9975 + 5351 + -292 * -16](r) }, p: zu, d(e) { const t = s, n = { YtDyz: function(e, t, n) { const i = k1; return o[i(1418)](e, t, n) } }; if (o[t(756)]("mROdD", o[t(411)])) return n["YtDyz"](_0x3806b3, _0x31a022[t(1239)] || _0xbec9e7, _0x41c368), _0x2eb5b1[t(1323)]; else e && o[t(1219)](uf, r), i[8637 + 568 + -1 * 9157](null) } } } function v1() { const e = ["msWGu", "LkXDJ", "xGsSd", "sgnTP", "vunhD", "pReuG", "blockspam", "key", "4Ipzkcb", "ncBrq", "GJxgh", "UJcxz", "MPAfx", "RSGBm", "vtfOu", "IKoav", "cRkNg", "TxvPK", "VAdas", "YVHto", "value", "mocking error", "Biaan", "onErrorChange", "data:text/javascript;base64,", "wuYqN", "algorithm", "pTBxc", "removeEventListener", "csuhG", "eRuag", "before_update", "oQTwK", "SAnuT", "floor", "mEgcg", "documentElement", "kkfSP", "bAadG", "submit", "Yeupy", "ayVRl", "_blank", "RpAMG", 'input[name="', "311678FumWmk", "FnOYN", "qUzoW", "gSIce", "PkvvC", "qedLD", "WmITY", "dmADF", "SPebk", "onload", "kGfnr", "KSSoC", "OJbTZ", "on_destroy", "2124355dTxESq", "PKdVC", "ZWLJb", "HJWTJ", "JOist", "ViPwO", "onfocus", "eXDRu", "eVLkn", "WEQVV", "OAoLu", "nFoiL", "DDouh", "NGzCA", "YZebk", "subtle", "obfuscated", "kHvtF", "DnePO", "lNomP", "HTmkA", "fvZPT", "call", "JQlxz", "NBpaB", "class", "DixiV", "ZSyfl", "hcyJD", "rrzcS", "hJsot", "zBLGZ", "ftXFH", "HRwVP", "update", "XulQK", "aEKZN", "[name=", "M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z", "Object", "zORhn", "dHpDA", "plugins", "$$ctor", "host", "SMOpe", "ioWDF", "jpPuP", "LsZwB", "hrttr", "FZHBd", "dKzNX", "xgDBz", "LYEln", "spamfilter", "application/json", "dXQEj", "lZvlm", "yPbwr", "zYAxo", "WFbuV", "ETGvJ", "FFbHI", "ZrhoA", "QQXvy", "EKOMO", "btoSb", "iGWzJ", "HKfHj", "eDbmf", "uemgU", "slot", "KnEok", "ubpAi", "Sbatp", "wHkfg", "CQNal", "AZiPL", "checkbox", "LINxY", "ERROR", "tjOQN", "wToUl", "wgdYx", "xTZlM", "state", "gefsA", "left", "false", "HVXIz", "batKB", "AtwSk", "0 0 20 20", "expire", "ERvSv", "M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z", "element", "yVvIe", "gyxPE", "NcrWg", "Cxvor", "zJdUR", "eNLPR", "serververification", "solve", "Miueg", "WZDrA", "ffRyr", "M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z", "verify", "HhiWw", "target", "MbBKr", "clientHeight", "callbacks", "PDflU", "GsSOv", "hHlfF", "kwpZg", "hbuvy", "GAnTz", "uHKtj", "Fuqwe", "get", "fields", "Uivxy", "FbPLi", "AAbMg", "classifier", "PiOOe", "altcha-logo svelte-ddsc3z", "UkZVn", "QqcVp", "kXGtE", "LYlkr", "altchaCreateWorker", "defineProperty", "PPDMS", "anchor", 'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])', "X-Altcha-Config", "uPJpA", "HyEBD", "getAttribute", "tywSB", "RlxrV", "querySelectorAll", "eQqIy", "checked", "vHrzl", "XMPtC", "XvybN", "MkVJz", "sMrxD", "ggNqv", "ZkUeS", "XHovn", "lqjAA", "DrOpW", "__svelte", "MSVJl", "/altcha", "set", "uKycY", "AGdGU", "expectedCountries", "fAWOT", "luXhf", "VkRcD", "bctlO", "ieoGb", "gvcYW", "qyHno", "RCHdm", "wLPDa", "yRzVW", "verified", "SLSyh", "M6 18L18 6M6 6l12 12", "VGhsb", "MzfSy", "GGSBL", "replace", "xtJaE", "VBhBP", "lqdbC", "hFvBr", "oTIqS", "qjJPS", "YWNnx", "mXcRc", "BhSXa", "ZyTCQ", "iOQXb", "clientWidth", "IILem", "WqpMH", "ZlSNB", "AmnWo", "GXKCG", "hZfwA", "FuupB", "jbqYF", "altcha svelte-ddsc3z", "ObAbf", "removeAttribute", "tgKDT", "AES-GCM", "DvmDG", "altcha-error svelte-ddsc3z", "Wqvlh", "mockerror", "fZHrD", "Jjhmw", "UJIhu", "cuxMf", "EryKC", "SNPId", "NxrfB", "QgwCx", "uypmc", "fxQrQ", "FmHtO", "lnmnb", "YbvlX", "KsRCQ", "rLMHo", "ELPPJ", "dhYZu", "hzlBp", "aeAic", "nsnCy", "mDOYM", "aQTOj", "xuyJp", "timeZone", "MUUsD", "x-altcha-spam-filter", "expectedLanguages", "intro", "iyjFq", "stroke-width", "Vptfp", "number", "FtCaV", "SxCZm", "fLuak", "reject", "arsOR", "IUOxB", "setFloatingAnchor", "cdxAn", "Nojlf", "SkjJa", "rUlcJ", "NYwXb", "off", "clearText", "rxxmK", "zKqkp", "$$l_u", "zYLgQ", "$$cn", "Ehkbg", "Kxcaj", "WVpOm", "SHA-256", "YiGKU", "IryLE", "WHNBC", "MNRJn", "Kdywf", "span", "yUSpM", "UbjfQ", "refetchonexpire", "mAdNR", "attributes", "QBDAO", "alJnS", "XzjID", "(?<!\\r)\\n", "Challenge is too short. Min. 40 chars.", 'input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])', "CtzAd", "reduce", "xsAoi", "$$l", "PEofw", "meogQ", "pAQbj", "EOUOo", "log", "bound", "YRPWT", "ZaMKA", "KNrwc", "ydmRz", "prototype", "AprAP", "XOMWw", "onsubmit", "aCdhc", "ESGmi", "JmtSz", "ReFip", "SMKFh", "CzgVs", "Qjrtu", "PmwHG", "aufra", "payload", "PnfVr", "define", "NHNgN", "QUXHX", "0 0 24 24", "wgrlC", "LzMPw", "iNbHK", "PAhpj", "data-state", "add", "YxxYc", "JNgiu", "ZxSYP", "ZEsuX", "XZRwM", "QwBSd", "yndRC", "ipAddress", "oJple", "YMAqy", "ucjLt", "jtcJg", "sAWpK", "toUpperCase", "nmOtQ", "cQYNf", "etbWf", "form", "FzxTs", "digest", "scroll", "eHJct", "pop", "8ezOkqN", "jKzOt", "DVyiv", "YSbBO", "hCzsd", "TiASR", "open", "IpmAo", "BpAPi", "wEjUZ", "sGqax", "WIDYS", "then", "ownerDocument", "nDJkG", "AnmjC", "stroke-linecap", "workers", "Server responded with ", "XayQe", "ExYZC", "SEuAG", "jPRBm", "NiuFq", "BvtGj", "kfmbH", "phlpQ", "mkbHE", "default", "zzUWa", "qOwAQ", "innerHTML", "mJNcD", "pWMIN", "signature", "lBwGo", "JuSfl", "tUJMA", "wMNtC", "reset", "IMhrT", "BvFtq", "qXLAS", "rUmAP", "KCuLl", "TbNjV", "KjrTx", "UlIpH", "HsDEe", "StYga", "RsOvQ", "GekuB", "kKMoA", "TvgiD", "toAttribute", "TxCqo", "tLJoR", "EQDrB", "xXCkP", "xBFrm", "workerurl", "zPYgx", "hsiVg", "fBNwB", "$destroy", "deGTx", "textContent", "encode", "GhDrv", "cMKwN", "qNMki", "VNUKR", "stroke", "JokUX", "altchaPlugins", "gPLCF", "SrlXx", "Plugin `obfuscation` not found. Import `altcha/plugins/obfuscation` to load it.", "LMLWn", "$$r", "auKSB", "bottom", "altcha-spinner svelte-ddsc3z", "kmkHZ", "bubbles", "PvOQB", "ZPDwP", "xTIgt", "tTkvi", "CScwS", "susTx", "SpamFilter returned negative classification.", "decrypt", "https://altcha.org/", "JkoJC", "postMessage", "vHtcy", "title", "JXnPl", "Usexu", "XUqxT", "tFqCO", "10799610qWSzhu", "width", "Verification failed. Try again later.", "pYnxG", "ojDtq", "salt", "AxUAA", "data", "join", "sltwO", "JTVFZ", "lkypW", "XyzWO", "email", '">ALTCHA</a>', "wBzOr", "dirty", "attributeChangedCallback", "FCZPu", "KSeCl", "wsjQR", "wKgNP", "xkkvM", "BWHPx", "icBuy", "QIIYX", "oppmy", "IXHHh", "setAttribute", "hHfyP", "uKzcN", "UPWsc", "SKpsn", "ZGchL", "bOQOd", "eSucG", "$set", "jSsYY", "DjcnP", "ariaLinkLabel", "vbWKw", "iqlaL", "parse", "json", "$$set", "cancelable", "MJzhN", "getRootNode", "hydrate", "slice", "tCoDO", "tVoRf", "SkziS", "UEfHT", "$$g_p", "RTumo", "KeSCp", "action", "duxLh", "kpxzQ", "challenge", "YBycX", "rUKUC", "childNodes", "Number", "jnoKA", "iOVFP", "hsENE", "sAbws", "stringify", "SGyGr", "gdoTN", "CEMdS", "SkPwE", "qPwIA", "bBJuM", "LPPNP", "Unknown algorithm value. Allowed values: ", "RrShO", "createTextNode", "WrfrM", "ASaEP", "jEIFW", "gZfHz", "reportValidity", "utFTu", "YiveE", "catch", "IesOB", "mrlPu", "getTime", "JgWfF", "IJRWf", "VJgJO", "gYULU", "bAQVL", "qWkSF", "JodZM", "rfhHZ", "cEpdb", "icruo", "fCLrN", "altcha", "lMFio", "REQwz", "PmDrU", "TbrNq", "rILhX", "GLauD", "hvtzC", "TYBBt", "znCBX", "TXUuw", "fill", "ltUdh", "raw", "filter", "uBbDY", "IaGES", "OHUYm", "nLYYy", "npKXE", "nkHKN", "nasQj", "cFjHP", "mspnc", "QvhIR", "wXanm", "NwZGK", "LvxUZ", "CISmp", "style", "rrceQ", "promise", "LjRwb", "hKXPl", "Unexpected result returned.", "requestSubmit", "fxbjC", "AjoMY", "CKkig", "FLqHy", "viewBox", "tOPNp", "getState", "plNbb", "KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IGY9bmV3IFRleHRFbmNvZGVyO2Z1bmN0aW9uIHAoZSl7cmV0dXJuWy4uLm5ldyBVaW50OEFycmF5KGUpXS5tYXAodD0+dC50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX1hc3luYyBmdW5jdGlvbiB3KGUsdCxyKXtyZXR1cm4gcChhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdChyLnRvVXBwZXJDYXNlKCksZi5lbmNvZGUoZSt0KSkpfWZ1bmN0aW9uIGIoZSx0LHI9IlNIQS0yNTYiLG49MWU2LHM9MCl7Y29uc3Qgbz1uZXcgQWJvcnRDb250cm9sbGVyLGE9RGF0ZS5ub3coKTtyZXR1cm57cHJvbWlzZTooYXN5bmMoKT0+e2ZvcihsZXQgYz1zO2M8PW47Yys9MSl7aWYoby5zaWduYWwuYWJvcnRlZClyZXR1cm4gbnVsbDtpZihhd2FpdCB3KHQsYyxyKT09PWUpcmV0dXJue251bWJlcjpjLHRvb2s6RGF0ZS5ub3coKS1hfX1yZXR1cm4gbnVsbH0pKCksY29udHJvbGxlcjpvfX1mdW5jdGlvbiBoKGUpe2NvbnN0IHQ9YXRvYihlKSxyPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylyW25dPXQuY2hhckNvZGVBdChuKTtyZXR1cm4gcn1mdW5jdGlvbiBnKGUsdD0xMil7Y29uc3Qgcj1uZXcgVWludDhBcnJheSh0KTtmb3IobGV0IG49MDtuPHQ7bisrKXJbbl09ZSUyNTYsZT1NYXRoLmZsb29yKGUvMjU2KTtyZXR1cm4gcn1hc3luYyBmdW5jdGlvbiBtKGUsdD0iIixyPTFlNixuPTApe2NvbnN0IHM9IkFFUy1HQ00iLG89bmV3IEFib3J0Q29udHJvbGxlcixhPURhdGUubm93KCksbD1hc3luYygpPT57Zm9yKGxldCB1PW47dTw9cjt1Kz0xKXtpZihvLnNpZ25hbC5hYm9ydGVkfHwhY3x8IXkpcmV0dXJuIG51bGw7dHJ5e2NvbnN0IGQ9YXdhaXQgY3J5cHRvLnN1YnRsZS5kZWNyeXB0KHtuYW1lOnMsaXY6Zyh1KX0sYyx5KTtpZihkKXJldHVybntjbGVhclRleHQ6bmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGQpLHRvb2s6RGF0ZS5ub3coKS1hfX1jYXRjaHt9fXJldHVybiBudWxsfTtsZXQgYz1udWxsLHk9bnVsbDt0cnl7eT1oKGUpO2NvbnN0IHU9YXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLGYuZW5jb2RlKHQpKTtjPWF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLHUscywhMSxbImRlY3J5cHQiXSl9Y2F0Y2h7cmV0dXJue3Byb21pc2U6UHJvbWlzZS5yZWplY3QoKSxjb250cm9sbGVyOm99fXJldHVybntwcm9taXNlOmwoKSxjb250cm9sbGVyOm99fWxldCBpO29ubWVzc2FnZT1hc3luYyBlPT57Y29uc3R7dHlwZTp0LHBheWxvYWQ6cixzdGFydDpuLG1heDpzfT1lLmRhdGE7bGV0IG89bnVsbDtpZih0PT09ImFib3J0IilpPT1udWxsfHxpLmFib3J0KCksaT12b2lkIDA7ZWxzZSBpZih0PT09IndvcmsiKXtpZigib2JmdXNjYXRlZCJpbiByKXtjb25zdHtrZXk6YSxvYmZ1c2NhdGVkOmx9PXJ8fHt9O289YXdhaXQgbShsLGEscyxuKX1lbHNle2NvbnN0e2FsZ29yaXRobTphLGNoYWxsZW5nZTpsLHNhbHQ6Y309cnx8e307bz1iKGwsYyxhLHMsbil9aT1vLmNvbnRyb2xsZXIsby5wcm9taXNlLnRoZW4oYT0+e3NlbGYucG9zdE1lc3NhZ2UoYSYmey4uLmEsd29ya2VyOiEwfSl9KX19fSkoKTsK", "delete", "uwCht", "SNJQg", "fFXxL", "RWiJw", "defaultPrevented", "oLWqA", "ODXBs", ".altcha.org", "IZhRr", "OWbCP", "1.0.6", "biYrA", "tyeym", "DcUZT", "eSvOs", "LPHnW", "wYCvB", "getElementById", "IarPo", "jMdZq", "resolve", "footer", "AnHvl", "took", 'input[type="email"]:not([data-no-spamfilter])', "OLUUJ", "maxnumber", "yvaFv", "hidelogo", "ppUfC", "QgTkL", "CDiCl", "SpBJi", "Verifying...", "cxhia", "bRxnw", "NFzGe", "NDZoq", "bnpaf", "louVQ", "POST", "disableRules", "feMpB", "dispatch", "vyBMP", "height", "rzDkl", "rxLlo", "ALTCHA", "M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z", "XUPGv", "OlKUc", "vthcg", "IEBqR", "test", "getPlugin", "xeKGe", "hkBpc", "hycPN", "floatinganchor", "TsCdx", "oAPeG", "NEknx", "mkgIG", "currentColor", "tjyou", "6097365JBuJQf", "QyVdK", "Ntals", "expired", "rpDlH", "invalid", "seMTv", "forEach", "xkrFY", "sWYLE", "lzXmP", "floating", "YQKqv", "CGSkx", "TyWyZ", "SjaCd", "ouJlC", "zwrLc", "shadowRoot", "BmnUj", "Wavpf", "string", "Fwxrb", "koOEg", "Hsitd", "UTSdi", "HoXUe", "function", "FUUQy", "PRmDN", "qPKXM", "DvEXr", "vBkKu", "sEDyQ", "name", "Fmwpu", "acxWA", "URL", "uhTNq", "dVYmF", "iMQBa", "EsCTF", "bFZBL", "KvLEm", "vHLiw", "reflect", "bSBoC", "Pidfl", "LKgqw", "now", "addEventListener", "createElement", "strings", "QUnEM", "xadtO", "RIaRC", "altcha-footer svelte-ddsc3z", "pNJEv", "tEQBc", "OjVxD", "yhREA", "auqju", "OMEZy", "BisDm", "lpxtL", "classification", "Verification expired. Try again.", "lPzvI", "mLuCj", "oIIFp", "altcha-anchor-arrow svelte-ddsc3z", "AmMeK", "resolvedOptions", "jhQYS", "RFzel", "ayLsx", "getConfiguration", "script-widget", "iRgOr", "headers", "uYXFr", "YlIZt", "GloJT", "VifvV", "detail", "BoRsZ", "qMaOl", "Jtswj", "qZDSu", "EfoGx", "HiLoy", "SkagF", "OfXAt", "jPavr", "iErha", "jkFsC", "min", "blockedCountries", "wvjcX", "iWDKe", "on_mount", "dDiNK", "display", "unable to find floating anchor element", "configure", "hATGi", "ARRXy", "toProp", "11zMawxo", "props", "ipYDf", "fIdXn", "RZbTw", "_checkbox", "pjlIt", "ZDYQJ", "dnzPH", "clarify", "IdpjL", "contains", "lNHIE", "top", "altcha-label svelte-ddsc3z", "VTWrv", "auto", "ZNhYH", "PkEoq", "VXALE", "DateTimeFormat", "UNVERIFIED", "ALVxP", "IAeIM", "aIase", "Verified", "uLbPW", "yPDxg", "XhlGe", "TsBAS", "sXVUJ", "GcIXw", "div", "bXfys", "DVJur", "NtYfY", "aceva", "SRSQg", "unable to configure from X-Altcha-Config", "using provided json data", "ISJxc", "sNYiB", "rfDnO", "psPzP", "qxBfC", "ETpuM", "dMcbr", "kUgCy", "find", "wCfdC", "vtrZB", "Attributes hidefooter and hidelogo ignored because usage with free API Keys requires attribution.", "KjDpK", "AAYtz", "XPSbK", "OEDZw", "http://www.w3.org/2000/svg", "signal", "rfhpB", "unshift", "pmrwj", "tLbZX", "Worker", "DkdNR", "generating test challenge", "nqmMw", "XVMmD", "IeNlO", "terminate", "Pwpsw", "qAynK", "GBlQs", "BAD", "clear", "keys", "gYRBh", "MVjpN", "wwcds", "iEVTg", "oACwl", "sPOkI", "HZFgn", "UBIzc", "Blob", "ZCtQg", "WYexw", "IvUpM", "voCfe", "QidFj", "vGXQx", "VcuDJ", "LUion", "ZhIXG", "kjdek", "revokeObjectURL", "altcha-main svelte-ddsc3z", "challengejson", "observedAttributes", "mxQFz", "cobxd", "WRetO", "ceil", "TaeWM", "vALlc", "payXT", "5HNRthS", "pXiOK", "destroy", "ebNZW", "CliRJ", "YyXCp", "yXSvw", "ROYdt", "HXnRL", "zWdtn", "kZyvV", "wvjwZ", "hTJoh", "TqYzg", "RMuev", "fdDwV", "NziEN", "NHbRd", "JNQKB", "xdCjb", "uBQKO", "using test mode", "obfuscation", "rcjBg", "CAfEe", "QLmpT", "bsGuL", "AmQnn", "ufDUU", "hgAEr", "insertBefore", "jFlsW", "importKey", "mpebe", "aezSN", "M2.33955 16.4279C5.88954 20.6586 12.1971 21.2105 16.4279 17.6604C18.4699 15.947 19.6548 13.5911 19.9352 11.1365L17.9886 10.4279C17.8738 12.5624 16.909 14.6459 15.1423 16.1284C11.7577 18.9684 6.71167 18.5269 3.87164 15.1423C1.03163 11.7577 1.4731 6.71166 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577C16.9767 5.86872 17.5322 7.02798 17.804 8.2324L19.9522 9.01429C19.7622 7.07737 19.0059 5.17558 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956C-0.658625 5.88958 -1.21046 12.1971 2.33955 16.4279Z", "nAIFR", "ulrJz", "KEyyk", "CzEdW", "PYBIs", "PBCZv", "pKVhh", "TIsuv", "ZvPoW", "YqTWW", "qaVjk", "$$p_d", "verifyurl", "YndCc", "$$scope", "qypAI", "verifying", "wvEQl", "push", "bjjSy", "Invalid challenge. Property algorithm is missing.", "AeAhK", "preventDefault", "SGSUh", "tcuHZ", "GMrxh", "ILqUz", "BuNTi", "fbEJJ", "apiKey=ckey_", "boolean", "OonDO", "qRTXd", "SVbcn", "Naedf", "aSkkC", "TKAEW", "toLowerCase", "ukykh", "ztyop", "WXCGp", "mDwzk", "DihCj", "jiHTp", "YlWsy", "AZHXu", "FRdsE", "TOffB", "Boolean", "3350436bHaHSK", "$$d", "gyrCs", "JMejX", "ENdsE", "bldVl", "EeVeS", "COfAZ", "Jhnij", "PzuxO", "utHRE", "ukTJg", "hcvIR", "indexOf", "hLlpk", "GLdZK", "QWWPp", "bjTII", "rhNVv", "TQqFu", "aLWsK", "eEAbL", "wAgtk", "ktVap", "NLRbo", "zWRjM", "jZayR", "EEeTs", "MlUYd", "ibgwG", "EmUbO", "KJsWZ", "SuKqP", "error", "SObqV", "$on", "focusin", "maBEm", "capture", "kuANw", "XjnPy", "data-floating", "object", "type", "skip_bound", "gXwoE", "kqhzw", "challengeurl", "context", "sfkgy", "tHsGH", "wmJYu", "for", "DQvgF", "DqewF", "change", "DzoJa", "Visit Altcha.org", "fPWQg", "YUSML", "VERIFIED", "MiXtm", "querySelector", "vzRsM", "yhyXa", "cMNxE", "JzQKe", "inHOl", "3|1|2|4|0", "attribute", "all", "SEZCh", "tNnxJ", "kITiu", "pTcYw", "WtFTb", "LhOlM", "floatingoffset", "pfBQT", "zPRHJ", "LmttA", "yvSgZ", "wvulm", "OdyXY", "EzuAs", "kyDwu", "VXcVA", "IooUe", "3604503fBZXnb", "JTpCD", "otRqO", "njMma", "wNzWl", "XFjXI", "XXFUt", "classList", "RKaff", "rqhCM", "bvANK", "hardwareConcurrency", "YBtVJ", "attachShadow", "label", "charCodeAt", "RMoQY", "XNDGS", "vFDxL", "ZdHSr", "expires", "Mocked error.", "OWDQb", "SHA-384", "39PmKXrK", "DFczE", "getFloatingAnchor", "TXlsv", "connectedCallback", "ehFeC", "GKHlQ", "jGdMR", "vVTCo", "OnPyT", "pluginName", "DJSdQ", "toString", "resize", "Akhpd", "dPWWV", "$$s", "input", "FoZpr", "after_update", "cVsrP", "HYHCs", "wLzWr", "xJpSX", "ckXHD", "xkbTV", "eVwAJ", "aSmQV", "LEYwD", '" target="_blank" aria-label="', "MpdwJ", "Ecewg", "debug", "svelte-ddsc3z", "uaQvS", "rgqOS", "onStateChange", "syJWK", "FBDvL", "Ywrmr", "DEoIZ", "constructor", "GLQwi", "create", "npYHp", "LSOkM", "includes", "ieDOC", "RCbpt", "hcBAq", "vIFBf", "AXetD", "VERIFYING", "wdZrs", "stopPropagation", "tjbAE", "vgLkH", "fGoxH", "none", "click", "webkitURL", "setState", "mzJFS", "ELdEs", "hMIbw", "rvXoh", "CsAbC", "rHwpK", "nbFwG", "YBesK", "dkPvB", "BnSUK", "aCbaJ", "HAswK", "gbueJ", "yTUpk", "MKOnJ", "NHhtv", "GkMSA", "QZBBU", "Cjcbr", "VSXHB", "sqBeN", "status", "lJywh", "KRffa", "solution", "RyhOt", "dMxhA", "kONBH", "round", "PznZu", "cDBzB", "IheZj", "drTLh", "IfWaD", "XIjZh", "mounted", "ctx", "sHILj", "href", "XjqWp", "has", "VTFdV", "splice", "xlNyE", "message", "split", "wtYxk", "load", "vjSNg", "pjDDT", "FVWxH", "kWjfZ", "nnhay", "SDkMY", "TtGvj", "nlhhJ", "wReca", "hisMZ", "ltArJ", "aborted", "rlCeZ", "stroke-linejoin", "CeMlL", "qTejr", "mnzHR", "xQKlE", "opacity", "7IuZCoF", "cnaPc", "random", "rrxmL", "WUbxL", "hTAWc", "WUuCQ", "gMuep", "head", "CebuH", "NMgNZ", "jbdoN", "EXCIK", "LvHCc", "zwlWh", "JEtKR", "bSXah", "EXPIRED", "gfftj", "max", "OLljL", "vMUbL", "Oekge", "uCcBg", "KsGmG", "dnviT", "block", "PxneK", "vDCfs", "path", "bHUQd", "RLAxM", "$$c", "fwKuC", "iNmjF", "AxQHr", "LfiKl", "parentNode", "delay", "JAmFB", "Kxxet", "urKrU", "aUqcd", "xuFng", "WHOMF", "vsEwl", "IHeHG", "MvKph", "QyIKx", "IBDnQ", "jloEk", "XmcdB", "kRert", "aSPlT", "NbSSt", "RMLqG", "gVXqp", "bhSmQ", "vQLWY", "LyuQz", "aria-label", "tTekq", "BwwLs", "svg", "TpOZL", "length", "UjHkw", "Attribute challengeurl not set.", "JMxKp", "xmlns", "hidefooter", "gfCEV", "mMYit", "SEPTC", "JQHTH", "TtmiD", "JuTMa", "disconnectedCallback", "laUGl", "5516376Wigmrq", "decode", "QnNtn", "map", "mybpH", "text", "RGqcW", "fragment", "oiJbN", "mpTNn", "cHOWM", "fetching challenge from", "getBoundingClientRect", "sheet"]; v1 = function() { return e }; return v1() } function k1(e, t) { const i = v1(); return k1 = function(e, t) { e = e - (266 * -16 + 6 * 1659 + -118 * 46); let n = i[e]; return n }, k1(e, t) } function A1(i) { const s = Oe, o = { DrOpW: function(e, t) { return e === t }, YZebk: function(e) { return e() }, zwrLc: function(e, t) { return e(t) }, JMejX: "div", wdZrs: function(e, t) { return e(t) }, AjoMY: function(e, t) { return e(t) }, xGsSd: s(1119), gyrCs: function(e) { return e() }, TbrNq: function(e) { return e() }, ltArJ: function(e, t, n, i) { return e(t, n, i) }, UbjfQ: s(1033), yXSvw: function(e, t, n, i) { return e(t, n, i) }, KSeCl: s(805), jZayR: function(e, t) { return e !== t }, BwwLs: s(331), aceva: "off", bFZBL: s(1408), ETpuM: s(1135), sbupl: function(e, t, n, i) { return e(t, n, i) }, rvXoh: "altcha-hidden", ZiTvh: s(814), FKgDF: function(e, t, n, i) { return e(t, n, i) }, RLAxM: s(895), MSVJl: function(e, t, n, i) { return e(t, n, i) }, BhVCX: s(1586), GsSOv: function(e, t, n, i) { return e(t, n, i) }, yPbwr: s(1031), XvybN: function(e, t, n, i) { return e(t, n, i) }, NHhtv: function(e, t, n) { return e(t, n) }, PHsCO: function(e, t, n) { return e(t, n) }, VifvV: function(e, t, n) { return e(t, n) }, LhOlM: function(e, t, n, i) { return e(t, n, i) }, SEPTC: s(1045), vsEwl: function(e, t, n, i) { return e(t, n, i) }, xTIgt: s(697), SkPwE: function(e, t, n, i, s, o, r) { return e(t, n, i, s, o, r) }, JOist: function(e, t) { return e + t }, KjDpK: function(e, t) { return e & t }, GekuB: function(e, t) { return e !== t }, pWMIN: function(e, t) { return e(t) }, JTpCD: function(e, t) { return e(t) }, WyHSA: function(e, t) { return e & t }, ESGmi: s(351), DlJBj: function(e, t, n) { return e(t, n) }, YiGKU: function(e, t) { return e(t) }, IeNlO: function(e, t, n, i, s) { return e(t, n, i, s) }, lnNDg: function(e, t) { return e === t }, FtCaV: function(e) { return e() }, fGoxH: function(e, t) { return e !== t }, etbWf: function(e, t) { return e === t } }; let r, a, l, c, d, u, f, h, p, m, g, y, x, w, b, v, k; const A = i[-9885 + -291 * 3 + 10804]["default"], I = o[s(867)](ef, A, i, i[3 * 241 + 2 * 1277 + -808 * 4], null); let S = o["lnNDg"](i[1 * -4697 + -3868 + 4 * 2143], c1[s(1154)]) && o[s(274)](u1); function E(e, t) { const n = s; return o[n(1541)](e[-2184 + -1 * 8871 + 11062 * 1], c1["VERIFIED"]) ? p1 : o["DrOpW"](e[3119 * 3 + -6327 + 3023 * -1], c1[n(1154)]) ? h1 : f1 } let T = o[s(297)](E, i), C = o["YiGKU"](T, i), B = (o[s(1159)](i[-6450 * -1 + 7911 + 3 * -4786], !(-7492 + -5 * 1021 + -57 * -221)) || i[-27 * 141 + -5854 * 1 + -9673 * -1]) && m1(i), D = (i[3 * -499 + -3738 + 5240] || o[s(369)](i[-206 * 41 + -1108 + 3 * 3187], c1[s(1248)])) && o[s(617)](g1, i), P = i[-8377 * 1 + -4472 * -1 + 2 * 1958][s(647)] && (i[1 * -3199 + -7131 + 82 * 126] !== !(-9958 + 63 * -121 + 1 * 17581) || i[-2 * 1013 + 391 * 20 + -5782]) && w1(i), R = i[-4 * 1266 + -3 * -1737 + -146] && b1(i); return { c() { const e = s; I && I["c"](), r = o[e(1397)](mf), a = o["zwrLc"](ff, o["JMejX"]), l = o[e(1155)](ff, o[e(993)]), S && S["c"](), c = o["YZebk"](mf), d = o[e(617)](ff, o["JMejX"]), u = ff(o[e(1326)]), p = o[e(992)](mf), m = o[e(709)](ff, o[e(993)]), C["c"](), g = mf(), B && B["c"](), y = mf(), D && D["c"](), x = o[e(992)](mf), P && P["c"](), w = o[e(584)](mf), R && R["c"](), o[e(1222)](M, u, o[e(304)], e(1461)), o[e(911)](M, u, "id", f = i[-2292 + 2859 * 3 + 6281 * -1] + o["KSeCl"]), u["required"] = h = o[e(1016)](i[-2709 + -1211 + 3920], o[e(1293)]) && (!i[-150 + 136 * -71 + 3269 * 3] || o["jZayR"](i[362 * 3 + -5 * 1188 + 4854], o["aceva"])), o[e(911)](M, u, o[e(734)], o[e(845)]), M(d, o[e(734)], "altcha-checkbox svelte-ddsc3z"), o["sbupl"](xf, d, o[e(1167)], i[4 * 1802 + -27 * 334 + 1817] === c1["VERIFYING"]), M(m, e(1408), o["ZiTvh"]), o["FKgDF"](M, l, o[e(734)], o[e(1262)]), o[e(1543)](M, a, o[e(734)], o["BhVCX"]), M(a, e(351), i[-937 * -8 + 8210 + -15699 * 1]), o[e(1499)](M, a, o[e(1441)], i[7975 + 7185 + 3 * -5053]) }, m(e, t) { const n = s; I && I["m"](e, t), o[n(911)](df, e, r, t), o[n(1534)](df, e, a, t), o[n(1179)](rf, a, l), S && S["m"](l, null), o[n(1179)](rf, l, c), rf(l, d), o[n(1179)](rf, d, u), u[n(1531)] = i[-8856 + -82 * 29 + 11242], o[n(1179)](rf, l, p), rf(l, m), C["m"](m, null), rf(l, g), B && B["m"](l, null), o[n(1179)](rf, a, y), D && D["m"](a, null), o["PHsCO"](rf, a, x), P && P["m"](a, null), o[n(775)](rf, a, w), R && R["m"](a, null), i[-1 * -3469 + 5344 + -8764](a), b = !(7689 + -4725 + -2964), v || (k = [o[n(1066)](gf, u, o["SEPTC"], i[8703 + 4526 + -13182]), o["LhOlM"](gf, u, o[n(1304)], i[-6044 * 1 + -2143 * 2 + 10343]), o[n(1276)](gf, u, o[n(463)], i[10 * 725 + 596 * -2 + -6044])], v = !(-5 * -1124 + -4832 + -788)) }, p(e, t) { const n = s; I && I["p"] && (!b || t[7057 * -1 + -7351 * 1 + 14409] & -3 * 4181 + 3 * -1209 + 32554) && o[n(551)](sf, I, A, e, e[-487 * 3 + 37 * 179 + -43 * 119], b ? nf(A, e[2083 + -611 + -1 * 1427], t, null) : of(e[2 * 971 + 6615 + -112 * 76]), null), e[1 * -7087 + 5 * 515 + -1 * -4519] === c1[n(1154)] ? S || (S = o[n(584)](u1), S["c"](), S["m"](l, c)) : S && (S["d"](-4117 + 5491 + -1373 * 1), S = null), (!b || t[-2841 + -919 * 3 + -18 * -311] & -4 * 2467 + 6816 + -767 * -4 && o[n(1016)](f, f = o[n(1387)](e[3964 + 3017 * 1 + -1 * 6977], o[n(497)]))) && o["MSVJl"](M, u, "id", f), (!b || o[n(852)](t[6696 + 1361 * -1 + -5335], 9793 + -2449 + 2447 * -3) && h !== (h = e[8139 * -1 + -9236 + 17375] !== o[n(1293)] && (!e[9813 + 2099 * -4 + -1 * 1416] || o[n(427)](e[-1 * 8291 + 3947 + -3 * -1448], o[n(836)])))) && (u["required"] = h), t[2 * 1154 + 9223 + -11531 * 1] & 5091 + -4148 + -687 * 1 && (u[n(1531)] = e[766 + 2631 * -1 + 1873]), (!b || t[-8885 + -3345 + 12230] & 1678 + -3486 * 1 + -8 * -242) && o["MSVJl"](xf, d, o[n(1167)], o[n(1541)](e[-5668 + 7521 + -1846], c1[n(1154)])), T === (T = o[n(709)](E, e)) && C ? C["p"](e, t) : (C["d"](-3 * -2539 + -5 * -1699 + -16111), C = o[n(409)](T, e), C && (C["c"](), C["m"](m, null))), o[n(1016)](e[3082 + -2 * 2564 + 2049], !(-3889 + -2338 * -3 + 1 * -3125)) || e[-6 * -1358 + -4303 * -2 + -16742] ? B ? B["p"](e, t) : (B = m1(e), B["c"](), B["m"](l, null)) : B && (B["d"](5 * 1714 + -7928 + -641), B = null), e[7528 * -1 + -3 * 2827 + 16014] || e[658 + 11 * 439 + -1370 * 4] === c1[n(1248)] ? D ? D["p"](e, t) : (D = g1(e), D["c"](), D["m"](a, x)) : D && (D["d"](-4051 + 1 * -8076 + 1516 * 8), D = null), e[4597 + 5590 + 106 * -96]["footer"] && (o[n(427)](e[-4 * -1471 + 421 + -33 * 191], !(-1478 + -478 * 5 + 3868)) || e[-1119 + -2289 * 3 + -1333 * -6]) ? P ? P["p"](e, t) : (P = o[n(1079)](w1, e), P["c"](), P["m"](a, w)) : P && (P["d"](7036 + 1 * 4071 + 1234 * -9), P = null), e[-2144 + -6219 + -82 * -102] ? R ? R["p"](e, t) : (R = o[n(1079)](b1, e), R["c"](), R["m"](a, null)) : R && (R["d"](-5643 + 9137 + -3493), R = null), (!b || o["WyHSA"](t[6600 + -900 * 4 + -3e3], -8017 * -1 + 9424 + 87 * -199)) && o[n(1543)](M, a, o[n(333)], e[1 * 2036 + 6163 * 1 + -8192]), (!b || t[-2461 * -1 + 3097 * -3 + 6830] & 2483 + -6977 + 16 * 281) && M(a, o[n(1441)], e[1 * -7981 + -1398 * -3 + -947 * -4]) }, i(e) { b || (Wf(I, e), b = !(3 * -1452 + 16 * 99 + 2772)) }, o(e) { o["DlJBj"](Qf, I, e), b = !(681 * 9 + 1 * -9447 + 3319) }, d(e) { const t = s; e && (o["YiGKU"](uf, r), o[t(409)](uf, a)), I && I["d"](e), S && S["d"](), C["d"](), B && B["d"](), D && D["d"](), P && P["d"](), R && R["d"](), i[3171 + 109 * 15 + 4757 * -1](null), v = !(4794 + 8387 + 2636 * -5), Ju(k) } } } const I1 = Oe(1047), S1 = Oe(469); function E1(e) { const t = Oe; return JSON[t(520)](e) } function T1(n, e, w) { const b = Oe, v = { JQHTH: "submit", eDbmf: b(415), TvgiD: b(1026), xsAoi: function(e, t) { return e(t) }, wqYrJ: b(1211), XOMWw: function(e, t) { return e !== t }, AnHvl: b(500), fLuak: function(e, t, n) { return e(t, n) }, AAYtz: b(1199), eXDRu: function(e, t, n) { return e(t, n) }, vQLWY: b(393), vGXQx: function(e) { return e() }, louVQ: "plugins", JgWfF: "none", EeVeS: function(e, t) { return e(t) }, IdpjL: function(e, t, n) { return e(t, n) }, LKgqw: b(816), NxrfB: function(e, t) { return e(t) }, voCfe: function(e, t) { return e === t }, ipYDf: b(1378), wgrlC: function(e, t) { return e(t) }, EBmde: b(851), LyuQz: function(e, t) { return e(t) }, lqjAA: function(e, t) { return e !== t }, EsCTF: b(275), wReca: function(e, t) { return e / t }, lMFio: function(e, t) { return e !== t }, cVsrP: "pLdMM", ouJlC: b(285), LecxN: function(e, t) { return e && t }, RTumo: function(e, t) { return e === t }, NtYfY: function(e) { return e() }, kjdek: function(e, t) { return e == t }, EQDrB: b(719), uemgU: function(e, t) { return e !== t }, oAPeG: function(e, t, n) { return e(t, n) }, BSGBL: function(e, t) { return e === t }, hcyJD: function(e, t, n) { return e(t, n) }, LUion: b(1345), fvZPT: b(1099), StYga: function(e, t) { return e(t) }, rkilW: b(839), VSXHB: b(864), zPYgx: function(e, t) { return e(t) }, wKgNP: function(e, t) { return e != t }, FmHtO: b(971), WIDYS: b(605), TIsuv: function(e, t) { return e && t }, ucjLt: b(956), TVjOq: b(535), hTJoh: function(e, t) { return e + t }, aQTOj: b(1544), atJeI: b(1298), rpDlH: b(1321), zBLGZ: function(e, t) { return e !== t }, KnEok: b(1523), WHOMF: b(1098), nasQj: b(1476), kuANw: "JuSfl", pmrwj: function(e, t) { return e - t }, msWGu: function(e, t) { return e > t }, JuTMa: function(e, t) { return e(t) }, icruo: b(1032), vDCfs: b(1351), mkgIG: "unable to configure from X-Altcha-Config", GcIXw: function(e, t) { return e - t }, tiogZ: function(e, t) { return e(t) }, QexTk: function(e, t) { return e == t }, iRgOr: b(713), OmnUU: b(650), fIdXn: function(e, t) { return e(t) }, bHUQd: function(e, t) { return e === t }, FoZpr: b(947), DqewF: function(e, t) { return e && t }, SrlXx: b(311), jpPuP: function(e, t) { return e === t }, LYEln: b(298), bOQOd: function(e, t) { return e == t }, tjOQN: function(e, t) { return e != t }, batKB: b(1522), cRkNg: function(e, t) { return e || t }, vyBMP: b(1216), QyVdK: function(e, t) { return e instanceof t }, YWNnx: b(1023), Fuqwe: function(e, t) { return e == t }, BmnUj: function(e, t, n) { return e(t, n) }, KjrTx: function(e, t) { return e === t }, TKAEW: function(e, t) { return e === t }, lzXmP: function(e, t, n, i) { return e(t, n, i) }, JodZM: function(e, t) { return e !== t }, DzoJa: function(e, t) { return e && t }, etEZH: function(e, t) { return e === t }, dkPvB: b(286), UEfHT: function(e, t) { return e === t }, nmOtQ: function(e, t, n, i) { return e(t, n, i) }, YBesK: function(e, t) { return e !== t }, VNUKR: "FkynM", ZVGhd: b(408), nFoiL: function(e, t) { return e == t }, PPDMS: function(e, t) { return e === t }, wtYxk: "NIjXg", DFczE: b(1336), npKXE: function(e) { return e() }, DVJur: b(929), csuhG: function(e, t) { return e == t }, arsOR: "onsubmit", gmWqt: function(e, t) { return e === t }, gvcYW: function(e) { return e() }, pAQbj: function(e, t) { return e !== t }, RMLqG: function(e, t) { return e === t }, ZFStm: function(e, t) { return e && t }, QBDAO: function(e, t) { return e === t }, GXKCG: function(e, t, n, i) { return e(t, n, i) }, ROYdt: function(e, t) { return e === t }, ObAbf: function(e) { return e() }, ayVRl: function(e, t) { return e !== t }, RrShO: "NnvpN", jPavr: function(e, t) { return e !== t }, dMxhA: function(e, t) { return e(t) }, vHrzl: function(e, t, n) { return e(t, n) }, DDouh: function(e, t) { return e === t }, bRxnw: b(1238), XayQe: b(930), qRTXd: b(1607), fiLhb: function(e, t, n) { return e(t, n) }, Miueg: function(e, t) { return e === t }, hZfwA: function(e, t) { return e > t }, flNnF: function(e, t) { return e + t }, TqYzg: function(e, t) { return e + t }, RSGBm: function(e, t) { return e === t }, xdCjb: b(813), jbdoN: function(e, t) { return e - t }, LkXDJ: function(e, t) { return e - t }, LPPNP: function(e, t) { return e + t }, lxNJQ: function(e, t) { return e - t }, ELPPJ: function(e, t, n, i) { return e(t, n, i) }, jHDtP: function(e, t) { return e + t }, Jhnij: function(e, t, n, i) { return e(t, n, i) }, uwCht: "bottom", OWDQb: function(e, t) { return e + t }, SNJQg: function(e, t) { return e / t }, GGSBL: function(e, t) { return e(t) }, ABJfs: function(e, t, n, i) { return e(t, n, i) }, uPJpA: b(1408), Naedf: function(e, t) { return e !== t }, utHRE: "Attribute verifyurl not set.", JMxKp: "vSDak", xuyJp: b(1007), ukTJg: function(e, t) { return e === t }, wuYqN: function(e, t, n) { return e(t, n) }, nDJkG: b(1438), IaGES: b(666), WVpOm: function(e, t, n) { return e(t, n) }, jNvJf: b(1486), RKaff: b(872), hDmcx: function(e, t, n) { return e(t, n) }, NziEN: function(e, t) { return e(t) }, wvjwZ: function(e, t) { return e < t }, IvUpM: function(e) { return e() }, susTx: function(e, t, n) { return e(t, n) }, iEVTg: b(703), koOEg: function(e, t) { return e !== t }, hzlBp: function(e, t, n, i) { return e(t, n, i) }, ZkUeS: function(e, t, n, i) { return e(t, n, i) }, AprAP: function(e, t, n) { return e(t, n) }, tTekq: function(e, t) { return e === t }, TOffB: function(e, t) { return e === t }, MZZWO: b(373), PmwHG: b(1161), wHSIe: function(e, t) { return e === t }, DixiV: function(e, t, n) { return e(t, n) }, Jtswj: b(1058), lkypW: "Salt is too short. Min. 10 chars.", AmnWo: function(e, t) { return e === t }, jtwXb: "Invalid challenge. Property signature is missing.", lqdbC: b(961), MUUsD: function(e, t) { return e < t }, BvFtq: b(1294), IXHHh: b(1491), XIjZh: function(e, t, n, i) { return e(t, n, i) }, HzBMl: b(1230), GBlQs: ".25", kONBH: b(675), oiJbN: "currentColor", BnSUK: "altcha-spinner svelte-ddsc3z", cdxAn: function(e, t, n, i) { return e(t, n, i) }, Oekge: b(671), ZyTCQ: "0 0 24 24", hvtzC: b(1300), KsRCQ: b(856), iRUXL: function(e, t) { return e === t }, JcrpE: b(1012), KSSoC: function(e, t, n) { return e(t, n) }, vHLiw: function(e, t) { return e !== t }, AAbMg: b(1399), cEpdb: function(e, t) { return e in t }, kGfnr: function(e, t, n, i) { return e(t, n, i) }, ZvPoW: function(e, t, n, i, s) { return e(t, n, i, s) }, OnPyT: "abort", NGzCA: function(e, t) { return e(t) }, YUfmb: function(e, t) { return e !== t }, FVWxH: b(1021), ojDtq: b(984), NcrWg: "work", VpuAD: b(1141), rgqOS: function(e, t) { return e * t }, QqcVp: b(404), MJzhN: b(809), IXwXJ: function(e, t) { return e === t }, HsDEe: b(714), kRert: function(e, t, n) { return e(t, n) }, pXiOK: b(453), rtrkS: function(e, t) { return e == t }, sMrxD: function(e, t) { return e === t }, ENdsE: b(1392), ZaMKA: function(e, t, n) { return e(t, n) }, ZSyfl: function(e, t, n) { return e(t, n) }, wwcds: function(e, t, n) { return e(t, n) }, WXCGp: function(e, t, n) { return e(t, n) }, inHOl: function(e, t) { return e !== t }, txzCk: function(e, t) { return e(t) }, SkziS: function(e, t) { return e !== t }, eVLkn: function(e, t) { return e !== t }, ISJxc: function(e, t, n) { return e(t, n) }, wToUl: function(e, t, n) { return e(t, n) }, wLPDa: function(e, t, n) { return e(t, n) }, hsENE: function(e, t) { return e == t }, UJcxz: function(e, t) { return e !== t }, ZdHSr: function(e, t, n) { return e(t, n) }, rHwpK: function(e, t, n) { return e(t, n) }, CISmp: b(651), mXcRc: b(1423), kfmbH: function(e, t) { return e(t) }, pReuG: function(e, t, n) { return e(t, n) }, RMoQY: function(e, t, n) { return e(t, n) }, MlUYd: function(e, t) { return e == t }, rfhpB: function(e, t) { return e !== t }, ZXreC: function(e, t) { return e !== t }, kZyvV: b(349), ehFeC: b(847), YNTxG: function(e, t) { return e(t) }, QnNtn: function(e, t, n) { return e(t, n) }, WiKOf: function(e, t) { return e === t }, aEKZN: b(579), Fmwpu: b(663), kKMoA: function(e, t, n) { return e(t, n) }, tTkvi: function(e, t, n) { return e(t, n) }, WmITY: function(e, t) { return e === t }, tNnxJ: function(e, t) { return e(t) }, eRuag: function(e, t, n) { return e(t, n) }, gbueJ: function(e, t, n) { return e(t, n) }, wWrKC: function(e, t) { return e(t) }, GLdZK: b(832), SAnuT: b(946), DMyzz: function(e, t, n) { return e(t, n) }, Pidfl: b(341), PiOOe: function(e, t) { return e === t }, CKkig: function(e, t, n) { return e(t, n) }, ZPDwP: b(1559), BisDm: function(e, t) { return e === t }, hMIbw: b(504), lZvlm: function(e, t, n) { return e(t, n) }, DkdNR: function(e, t) { return e / t }, niWva: function(e, t) { return e - t }, aCdhc: function(e, t, n, i) { return e(t, n, i) }, EstVb: b(567), NiuFq: b(859), ebNZW: b(959), mpTNn: function(e, t) { return e === t }, wEjUZ: b(570), tswHP: b(885), RxnOn: b(1485), DjcnP: function(e, t) { return e !== t }, iNlUE: b(1361), HKfHj: function(e, t) { return e in t }, AxUAA: b(1330), kXGtE: function(e, t, n) { return e(t, n) }, HoXUe: function(e, t) { return e in t }, oACwl: function(e, t) { return e in t }, fBNwB: b(1134), SpBJi: "delay", ntNbJ: function(e, t, n) { return e(t, n) }, gCgjO: function(e, t, n) { return e(t, n) }, wgdYx: b(685), icBuy: b(1301), MbBKr: function(e, t) { return e in t }, SWRgD: "hidelogo", hATGi: function(e, t, n) { return e(t, n) }, VTFdV: function(e, t) { return e in t }, ggNqv: b(726), lJywh: function(e, t, n) { return e(t, n) }, TXlsv: function(e, t) { return e in t }, YlGNl: "maxnumber", tcuHZ: b(1594), BuNTi: function(e, t) { return e in t }, oLWqA: function(e, t) { return e in t }, Cxvtl: b(305), sgnTP: b(1437), eVwAJ: function(e, t, n) { return e(t, n) }, bjjSy: b(744), JEtKR: b(680), SDkMY: function(e, t) { return e in t }, iNmjF: function(e, t) { return e in t }, eSucG: function(e, t) { return e in t }, uYXFr: b(436), gefsA: function(e, t, n) { return e(t, n) }, OYrBk: function(e, t) { return e in t }, drTLh: "$$scope", hFvBr: function(e, t) { return e & t }, tUJMA: b(633), FUUQy: function(e, t) { return e & t }, ZEsuX: function(e, t) { return e(t) }, duxLh: function(e, t, n) { return e(t, n) }, Jjerq: b(825), lPzvI: "Verifying... please wait.", aZRpi: "statechange", pYIfh: b(580), sXVUJ: "SHA-256", DvmDG: "SHA-512", psPzP: function(e, t) { return e == t }, BoRsZ: function(e, t) { return e(t) } }; var t, F; let _, V, i, o, { $$slots: U = {}, $$scope: j } = e, { auto: s = void(-7710 + -601 * 1 + 8311) } = e, { blockspam: y = void(826 + -3951 + -25 * -125) } = e, { challengeurl: k = void(-38 * 188 + 4975 + 2169) } = e, { challengejson: H = void(-5335 + -2173 + -1877 * -4) } = e, { debug: r = !(55 * -75 + -707 * 5 + 7661) } = e, { delay: a = -29 * 313 + 3177 * -1 + -1114 * -11 } = e, { expire: A = void(-5819 * 1 + 4617 + 601 * 2) } = e, { floating: d = void(1739 + 4354 + -6093 * 1) } = e, { floatinganchor: u = void(1 * -3404 + -122 + 3526) } = e, { floatingoffset: f = void(2547 + -5560 + 3013 * 1) } = e, { hidefooter: l = !(-10 * 415 + -6268 + 10419) } = e, { hidelogo: c = !(8781 + -1 * -6857 + 15637 * -1) } = e, { name: h = v["pYIfh"] } = e, { maxnumber: p = -1016675 + 1343024 + 673651 } = e, { mockerror: W = !(-3170 + 1206 * -4 + 39 * 205) } = e, { obfuscated: m = void(2645 + 499 + -3144) } = e, { plugins: Q = void(6963 + -5512 + -1451) } = e, { refetchonexpire: Y = !(79 * -15 + 9312 + 7 * -1161) } = e, { spamfilter: I = !(-1935 + -6264 + 8 * 1025) } = e, { strings: z = void(-2831 + 174 * -15 + 5441) } = e, { test: S = !(-4943 + -2363 + 7307) } = e, { verifyurl: x = void(6545 + 7670 + 1 * -14215) } = e, { workers: g = Math[b(788)](-3347 * 1 + -6538 + 9901 * 1, navigator[b(1089)] || 1 * -3517 + -869 * -5 + -820) } = e, { workerurl: G = void(1581 * 3 + 6189 + -5466 * 2) } = e; const K = Ef(), X = [v[b(830)], b(1101), v[b(1591)]], J = v[b(843)](F = v["hsENE"](t = document["documentElement"]["lang"], null) ? void(9488 + -538 * -14 + 10 * -1702) : t["split"]("-"), null) ? void(1627 + -3 * -1194 + 1 * -5209) : F[-3702 + -295 + 3997]; let E = !(-6161 + -6437 + 12599), T, C = null, B = null, D = null, q = null, P = null, R = null, M = [], N = c1[b(821)]; v[b(777)](Sf, () => { const e = b; Z(), D && (D["removeEventListener"](v[e(1305)], ue), D[e(1352)](v[e(1452)], fe), D[e(1352)](v[e(429)], de), D = null), P && (v[e(316)](clearTimeout, P), P = null), document[e(1352)]("click", ae), document[e(1352)](e(373), le), window[e(1352)](e(1115), me) }), If(() => { const t = b; if (v[t(330)](v[t(648)], v["AnHvl"])) return _0x1821cf[t(820)]()[t(764)]()[t(1618)]; else { const e = {}; e[t(1028)] = !(2 * -81 + -5352 + -919 * -6), v[t(276)](O, v[t(853)], t(636)), v[t(1390)](O, v[t(1289)], g), v[t(889)](oe), v[t(276)](O, v[t(665)], M[t(1296)] ? M[t(1313)](e => e[t(1143)][t(1112)])[t(486)](", ") : v[t(569)]), S && v[t(316)](O, t(926)), A && v[t(996)](xe, A), v[t(330)](s, void(3648 + -9459 + 5811)) && v[t(810)](O, v[t(740)], s), v[t(330)](d, void(-6389 * 1 + -2081 + 1 * 8470)) && v[t(1601)](we, d), D = T["closest"](t(370)), D && (D[t(742)](v[t(1305)], ue, e), D[t(742)](v[t(1452)], fe), s === t(1389) && D["addEventListener"](v[t(429)], de)), v[t(887)](s, v[t(802)]) && (m ? Ae() : v[t(889)](L)), _ && (l || c) && v[t(347)](O, v["EBmde"]), v[t(1290)](requestAnimationFrame, () => { K(v["wqYrJ"]) }) } }); function $(e, t) { const n = b, i = {}; return i[n(1350)] = e[n(1350)], i["challenge"] = e[n(538)], i["number"] = t[n(273)], i[n(483)] = e[n(483)], i[n(410)] = e[n(410)], i["test"] = S ? !(4 * 305 + -18 * 410 + 35 * 176) : void(-9182 + -1611 * -3 + -4349 * -1), i[n(649)] = t[n(649)], btoa(JSON["stringify"](i)) } function Z() { const e = b; if (v[e(1540)](v[e(733)], v[e(733)])) return this["$$"][e(1200)][3029 + 8 * 509 + 65 * -109]; else { for (const t of M) t[e(907)]() } } function ee() { const t = b, n = { SkagF: function(e, t) { const n = k1; return v[n(1220)](e, t) }, bAQVL: function(e, t) { return e < t } }; if (v[t(581)](v[t(1122)], v[t(708)])) v["LecxN"](k, Y) && v[t(533)](N, c1[t(1050)]) ? L() : Be(c1[t(1248)], o[t(695)]); else { const i = [], s = n[t(783)](_0x1822a7[t(1200)][t(1296)], -8599 + 17 * -289 + 1 * 13544); for (let e = -3948 + -2741 + 6689; n[t(573)](e, s); e++) i[e] = -(2945 + -4564 * 2 + -2 * -3092); return i } } async function te() { const s = b, t = { uHKtj: function(e) { const t = k1; return v[t(835)](e) }, sGqax: function(e, t) { const n = k1; return v[n(893)](e, t) }, xXCkP: v[s(433)], oQMxM: function(e, t) { const n = s; return v[n(1453)](e, t) }, RCbpt: function(e, t) { return e(t) }, rqhCM: function(e, t, n) { const i = s; return v[i(687)](e, t, n) }, wCfdC: function(e, t) { return v["BSGBL"](e, t) }, vunhD: function(e, t, n) { return v["hcyJD"](e, t, n) } }; var e; if (W) throw v[s(1290)](O, v[s(891)]), new Error(v[s(1404)]); if (V) return v["StYga"](O, v["rkilW"]), V; if (S) return v["oAPeG"](O, v[s(1183)], { test: S }), v[s(437)](n1, v["wKgNP"](typeof S, v[s(1605)]) ? +S : void(5872 + 4996 * -2 + 1030 * 4)); { if (v["lqjAA"](v[s(387)], v["WIDYS"])) { for (const i of _0x57fc36) t[s(386)](typeof i[s(1138)], t[s(434)]) && i[s(1138)](_0x27d57e); _0x5ee530 && t["oQMxM"](_0x2ea66, _0x11bccd[s(821)]) && t[s(1150)](_0x53a5db, () => { const e = s; t[e(1504)](_0x3afeb3) }), t[s(1087)](_0x2136db, 2 * 1811 + 8004 + -157 * 74, _0x40083b = t[s(849)](_0x4bbe03, _0x1241a6[s(1050)])) } else { if (v[s(948)](!k, D)) { if (v[s(363)] === v[s(363)]) { const h = D[s(1526)](v["TVjOq"]); v[s(499)](h, null) && h[s(1148)]("/form/") && v["hcyJD"](w, 347 * 18 + -5 * -719 + -9826, k = v[s(917)](h, v[s(1616)])) } else return this["$$"][s(1200)][-7209 + -11 * 188 + 16 * 582] } if (!k) throw new Error(v["atJeI"]); v[s(687)](O, v[s(696)], k); const o = {}; o[s(1620)] = "1"; const r = {}; r[s(771)] = I ? o : {}; const a = await fetch(k, r); if (v[s(1414)](a[s(1185)], -7700 + 69 * -41 + 10729 * 1)) throw new Error("Server responded with " + a["status"] + "."); const l = a[s(771)][s(1506)]("Expires"), c = a[s(771)][s(1506)](v[s(1455)]), d = await a["json"](), u = new URLSearchParams(v[s(893)](e = d[s(483)]["split"]("?"), null) ? void(-2 * -3569 + 358 * -5 + -2 * 2674) : e[-4626 + 8146 + 1 * -3519]), f = u[s(1506)](v[s(1275)]) || u[s(1506)](v[s(601)]); if (f) { if (v[s(1029)] !== s(412)) return this["$$"][s(1200)][3908 + 1361 + -5226]; else { const p = new Date(+f * (-23 * -373 + -4032 + -3547 * 1)), m = v[s(1290)](isNaN, p["getTime"]()) ? -3093 + -2011 * -2 + -929 : v[s(860)](p[s(568)](), Date["now"]()); v[s(1324)](m, -9 * -1051 + 7136 + -16595) && v[s(1307)](xe, m) } } if (c) try { const g = JSON[s(520)](c); g && v["kjdek"](typeof g, v[s(578)]) && (g[s(953)] && (g["verifyurl"] = new URL(g[s(953)], new URL(k))["toString"]()), v[s(437)](Ie, g)) } catch (n) { v[s(533)](v[s(1259)], v[s(1259)]) ? v["eXDRu"](O, v[s(689)], n) : (_0x11113e(_0x53c3c4, _0x1c0642, _0x517e32), _0x52ccba(_0x1dd662, _0x270788), t[s(1328)](_0x930d7, _0x546137, _0x4168c2), _0x2ace2f(_0x4feee7, _0x53ff22), t[s(1087)](_0x2e1834, _0x306b2b, _0x2dcec7), t[s(1087)](_0x21a06a, _0x4ac82b, _0x53283d)) } if (!A && v["wKgNP"](l, null) && l[s(1296)]) { const y = Date[s(520)](l); if (y) { const x = v[s(831)](y, Date["now"]()); x > -7519 + -1 * 3918 + -1 * -11437 && v["tiogZ"](xe, x) } } return d } } } function ne(e) { const t = b; var n; const i = v["QexTk"](D, null) ? void(1297 * -1 + 6740 + 5443 * -1) : D["querySelector"](v["kjdek"](typeof e, v[t(770)]) ? 'input[name="' + e + '"]' : v["OmnUU"]); return ((n = v["QexTk"](i, null) ? void(2 * -1388 + -5354 + -542 * -15) : i[t(1344)]) == null ? void(-3639 + 4954 + -1315) : n["slice"](i[t(1344)]["indexOf"]("@"))) || void(6346 + -7 * -644 + -10854) } function ie() { const e = b, t = {}; t[e(789)] = void(-350 * -14 + 1762 * 3 + -10186 * 1), t[e(1511)] = void(1 * 4903 + -7 * 916 + 1509), t[e(667)] = void(1411 * -5 + 746 + 6309), t[e(491)] = !(10 * 937 + -973 * 1 + -2099 * 4), t[e(1548)] = void(-7555 + 4043 + 3512), t[e(1621)] = void(-5986 + -9 * -519 + 1315), t[e(1507)] = !(-8693 + -8876 + 17570), t[e(360)] = void(-7330 * -1 + -8144 + 814), t[e(1315)] = void(3296 * -2 + -166 * -6 + 4 * 1399), t["timeZone"] = void(3720 + -2414 + -1306 * 1); const n = {}; return n[e(789)] = void(2 * -3495 + 7737 + -747), n[e(1511)] = void(-6523 + -773 * -4 + 3431), n[e(667)] = void(-33 * -31 + 49 * 4 + 1 * -1219), n[e(491)] = void(-7100 + 5279 + 1821), n["expectedCountries"] = void(8987 * 1 + -6678 + -1 * 2309), n[e(1621)] = void(-1263 * 2 + -361 * 25 + 1 * 11551), n[e(1507)] = void(6426 + 166 * -16 + -3770), n[e(360)] = void(3369 + 13 * -119 + -1822 * 1), n["text"] = void(-4964 + -5953 + 3639 * 3), n[e(1618)] = void(-737 * -8 + -1045 + -4851), I === "ipAddress" ? t : typeof I == v["icruo"] ? I : n } function se(e) { const r = b, a = { MbVuX: function(e, t) { const n = k1; return v[n(1261)](e, t) }, JoIXu: v[r(1120)], VXcVA: function(e, t) { const n = r; return v[n(1044)](e, t) }, QFYOH: v[r(452)] }; if (v[r(1430)]("OBSNT", v[r(1436)])) for (; _0x4355bb < _0x18c582[r(1296)];) { const t = _0x32e0eb[_0x5cca46]; _0x27127c++, v[r(803)](_0x4b3153, t), v[r(1307)](_0x36a58e, t["$$"]) } else return [...(v[r(512)](D, null) ? void(-5 * -1850 + 56 * -166 + -46 * -1) : D[r(1529)](v[r(1464)](e, null) && e[r(1296)] ? e[r(1313)](e => r(1368) + e + '"]')[r(486)](", ") : v[r(1473)])) || []][r(315)]((e, t) => { const n = r; if (a["MbVuX"](n(947), a["JoIXu"])) { const i = t[n(726)], s = t["value"]; return a[n(1076)](i, s) && (e[i] = /\n/ [n(680)](s) ? s[n(1565)](new RegExp(a["QFYOH"], "g"), "\r\n") : s), e } else { const o = this[n(1263)][n(1025)](_0x44bf72, _0x3cdf84); this[n(290)][n(1545)](_0xb2e99b, o) } }, {}) } function oe() { const e = b, t = Q !== void(8807 * -1 + -200 + 9007) ? Q[e(1209)](",") : void(-9397 + 2839 + 6558), n = {}; n["el"] = T, n[e(809)] = Ae, n[e(669)] = K, n[e(768)] = Se, n[e(1104)] = Ee, n[e(622)] = Ce, n[e(322)] = O, n[e(415)] = Be, n[e(1487)] = ve, n[e(1163)] = Pe, n[e(280)] = De, n[e(1492)] = L; for (const i of globalThis["altchaPlugins"])(!t || t[e(1148)](i["pluginName"])) && M[e(959)](new i(n)) } function O(...e) { const t = b; v[t(887)](t(766), v[t(670)]) ? _0x1e8746[t(935)](_0x3c4b28, v["cRkNg"](_0x24b4ca, null)) : (r || e["some"](e => e instanceof Error)) && console[v[t(693)](e[-6434 + 807 + 5627], Error) ? v[t(1572)] : t(322)](t(674), t(1420) + h + "]", ...e) } function re() { const e = b; [c1[e(821)], c1[e(1463)], c1["EXPIRED"]]["includes"](N) ? I && v[e(1430)](v[e(1505)](D, null) ? void(101 * -23 + 2711 + -1 * 388) : D[e(562)](), !(-9383 * 1 + 5 * -751 + -1877 * -7)) ? v[e(711)](w, 4676 + -261 + -4407, E = !(-4201 + -337 * -11 + 495)) : m ? v[e(889)](Ae) : v[e(889)](L): v["fLuak"](w, 9458 + -1 * 6469 + -2981, E = !(-1054 + 1626 + -572)) } function ae(e) { const t = b, n = e[t(1494)]; d && n && !T[t(811)](n) && (v["bHUQd"](N, c1["VERIFIED"]) || v[t(422)](s, t(286)) && v[t(977)](N, c1[t(821)])) && v["lzXmP"](w, 213 * 7 + 7002 + -8484, T[t(609)][t(794)] = v[t(569)], T) } function le() { const e = b; d && v[e(575)](N, c1[e(821)]) && v[e(835)](ge) } function ce(e) { const t = b; if (v[t(1171)](v[t(447)], v["ZVGhd"])) { for (const n of M) v[t(1394)](typeof n[t(1347)], v[t(433)]) && n[t(1347)](q) } else { const i = _0x3f7a67[t(1494)]; v[t(1046)](_0x5866e8, i) && !_0x41ff8f[t(811)](i) && (v[t(422)](_0x168751, _0x110ad5[t(1050)]) || v["etEZH"](_0x5917b4, v[t(1172)]) && v[t(531)](_0x26af70, _0x55a165[t(821)])) && v[t(367)](_0x1aeef7, -8114 + 3 * 3268 + 1 * -1681, _0x58fe34[t(609)]["display"] = v["JgWfF"], _0x4207c1) } } function de(e) { const t = b; if (v["PPDMS"](v[t(1210)], v[t(1103)])) return this["$$"][t(1200)][75 * -89 + -8453 + -5 * -3029]; else v[t(1430)](N, c1[t(821)]) && v[t(599)](L) } function ue(e) { const i = b, t = { ZbbaZ: function(e, t) { return v["YBesK"](e, t) }, CzgVs: v[i(834)], IKoav: function(e, t) { const n = i; return v[n(1353)](e, t) } }; D && v[i(1520)](s, v[i(278)]) ? v["gmWqt"](N, c1[i(821)]) ? (e[i(963)](), e[i(1156)](), v[i(1554)](L)[i(388)](() => { const e = i; if (t["ZbbaZ"](t[e(337)], e(929))) return this["$$"][e(1200)][2 * 4387 + 28 + -8780]; else t[e(1339)](D, null) || D[e(615)]() })) : v[i(320)](N, c1[i(1050)]) && (e[i(963)](), e["stopPropagation"](), v[i(1286)](N, c1[i(1154)]) && v[i(889)](he)) : v["ZFStm"](D, d) && v[i(308)](s, v[i(1172)]) && N === c1[i(821)] && (e[i(963)](), e[i(1156)](), v[i(1582)](w, 7224 + 25 * -192 + -2415, T["style"][i(794)] = i(1257), T), ge()) } function fe() { v["vGXQx"](Be) } function he() { const e = b; v[e(912)](N, c1["VERIFYING"]) && o["waitAlert"] && v[e(996)](alert, o["waitAlert"]) } function pe(e) { const t = b, n = { hcBAq: function(e, t) { const n = k1; return v[n(1365)](e, t) }, QWWPp: t(1291) }; if (v["JodZM"](v["RrShO"], v[t(556)])) _0x580c4a[-1 * 266 + 9268 + -9002] & 5900 + -3067 + -785 * 1 && n[t(1151)](_0x3f86f3, _0x2b7fa1 = _0x2604d1[4252 + -529 * -6 + -1 * 7415][t(517)]) && _0x3eb925(_0x57fc3f, n[t(1006)], _0x438468); else { for (const i of M) v[t(512)](typeof i[t(1138)], v["EQDrB"]) && i[t(1138)](N); d && v[t(785)](N, c1[t(821)]) && v[t(1190)](requestAnimationFrame, () => { v["ObAbf"](ge) }), v[t(1532)](w, 17 * 439 + -5 * -1867 + -16790, E = N === c1[t(1050)]) } } function me() { const e = b; if (v[e(1395)](v[e(661)], v[e(395)])) { for (const t of _0x5d42c0) t[e(907)]() } else d && v[e(1587)](ge) } function ge(e = 4632 + -9 * 967 + 4091) { const t = b; if (T) { if (B || (B = (u ? document["querySelector"](u) : D == null ? void(7704 + -3956 + 2 * -1874) : D[t(1052)](t(313))) || D), B) { if (v[t(973)] === t(378)) return this["$$"][t(1200)][26 * 343 + 1 * 7537 + -16418]; else { const n = v["fiLhb"](parseInt, f, -1 * 2411 + 3930 + -1509 * 1) || 2179 + 5824 + -7991, i = B["getBoundingClientRect"](), s = T[t(1322)](), o = document["documentElement"]["clientHeight"], r = document["documentElement"][t(1577)], a = v[t(1488)](d, t(816)) ? v[t(1583)](v["flNnF"](v[t(918)](i["bottom"], s[t(671)]) + n, e), o) : v["RSGBm"](d, v[t(924)]), l = Math["max"](e, Math["min"](v[t(1242)](v["LkXDJ"](r, e), s[t(479)]), v[t(1325)](v[t(554)](i[t(1470)], i["width"] / (1 * -927 + -6616 + 3 * 2515)), v[t(1220)](s[t(479)], -8493 + -9624 + 18119)))); if (a ? v[t(702)](w, 900 + -3 * -745 + -3126, T[t(609)]["top"] = v["lxNJQ"](i[t(813)], v[t(554)](s["height"], n)) + "px", T) : v[t(1610)](w, -7944 + 100 * -29 + 10853, T["style"][t(813)] = v["jHDtP"](i[t(457)], n) + "px", T), v[t(998)](w, -2 * -4834 + 1 * 7315 + -16974, T[t(609)][t(1470)] = l + "px", T), T["setAttribute"]("data-floating", a ? "top" : v[t(626)]), C) { const c = C[t(1322)](); w(8854 + -8727 + -117 * 1, C["style"][t(1470)] = v[t(1100)](v["pmrwj"](i["left"], l), v[t(627)](i["width"], 1 * 7071 + -9849 * -1 + -8459 * 2)) - v[t(1220)](c[t(479)], 8851 + -2 * -1318 + -1 * 11485) + "px", C) } } } else v["GGSBL"](O, t(795)) } } async function ye(e) { const t = b; if (v[t(975)]("rcjBg", t(928))) return this["$$"][t(1200)][-6803 * 1 + -7127 + 13972]; else { if (!x) throw new Error(v[t(1e3)]); O("requesting server verification from", x); const n = {}; n[t(341)] = e; const i = n; if (I) { if (v[t(1299)] === v[t(1617)]) { const r = { PYBIs: function(e, t, n, i) { return v["ABJfs"](e, t, n, i) }, qTejr: v[t(1524)] }; let n; return { c() { const e = t; n = _0x196380(e(832)), r[e(945)](_0x2c6575, n, r[e(1227)], e(762)) }, m(e, t) { _0x127f72(e, n, t), _0x3db699[6920 + 1428 + -8300](n) }, p: _0x3fac26, d(e) { e && _0x2e3325(n), _0x4b3902[-2851 + -332 * -7 + 575 * 1](null) } } } else { const { blockedCountries: a, classifier: l, disableRules: c, email: d, expectedLanguages: u, expectedCountries: f, fields: h, ipAddress: p, text: m, timeZone: g } = v[t(889)](ie); i[t(789)] = a, i[t(1511)] = l, i["disableRules"] = c, i[t(491)] = v[t(1001)](d, !(7391 + 1 * 7647 + -15037)) ? void(-9433 + 9833 + -400) : v[t(1564)](ne, d), i[t(1548)] = f, i[t(1621)] = u || (J ? [J] : void(-2619 + -3085 + -248 * -23)), i[t(1507)] = h === !(313 * -7 + 4449 + 1 * -2257) ? void(1035 + -3361 * 1 + -2326 * -1) : v[t(316)](se, h), i[t(360)] = v["ROYdt"](p, !(76 + 8047 + -62 * 131)) ? void(-231 * -3 + -7979 + 7286) : v[t(1340)](p, v["LKgqw"]), i["text"] = m, i[t(1618)] = g === !(1 * 8565 + -7764 + -800) ? void(-8150 + -1052 + 1 * 9202) : g || o1() } } const s = await v[t(1349)](fetch, x, { body: JSON[t(547)](i), headers: { "content-type": v[t(390)] }, method: v[t(596)] }); if (v["XOMWw"](s[t(1185)], -494 * 17 + -7348 + -34 * -469)) throw new Error(t(394) + s[t(1185)] + "."); const o = await s[t(521)](); if (o != null && o[t(341)] && v[t(295)](w, 3217 * -1 + -9832 + 13055, R = o[t(341)]), K(v["jNvJf"], o), y && v[t(422)](o[t(757)], v[t(1086)])) throw new Error(t(467)) } } function xe(e) { v["hDmcx"](O, "expire", e), P && (v["NziEN"](clearTimeout, P), P = null), v["wvjwZ"](e, -5 * -1511 + 7710 + 636 * -24) ? v["IvUpM"](ee) : P = setTimeout(ee, e) } function we(e) { const t = b; v["susTx"](O, v[t(878)], e), v[t(715)](d, e) && (v[t(1612)](w, 8413 + -302 * 23 + -1458 * 1, T[t(609)][t(1470)] = "", T), v[t(1538)](w, -4 * 2111 + -2987 + 11440, T[t(609)][t(813)] = "", T)), v[t(329)](w, 1 * 9740 + -3047 + 1673 * -4, d = v[t(1292)](e, !(1080 + 2323 + -3403)) || e === "" ? v["LKgqw"] : v[t(988)](e, !(6999 + -7397 + 7 * 57)) || e === t(1471) ? void(7695 + 4082 + -11777 * 1) : d), d ? (s || w(40 * -193 + 6541 + -1179 * -1, s = t(331)), document[t(742)](v["MZZWO"], le), document[t(742)](v[t(339)], ae), window[t(742)](t(1115), me)) : v["wHSIe"](s, v["arsOR"]) && v[t(1409)](w, -6985 + -5 * -737 + 5 * 660, s = void(-2513 * 2 + -1 * -8179 + 1051 * -3)) } function be(e) { const t = b, n = v[t(779)]["split"]("|"); let i = -4057 * 2 + 1 * 4822 + 3292; while (!![]) { switch (n[i++]) { case "0": if (!e["salt"] || v[t(916)](e[t(483)][t(1296)], -904 + 5022 + -4108)) throw new Error(v[t(489)]); continue; case "1": if (v[t(1581)](e[t(410)], void(6848 + 4593 + -11441 * 1))) throw new Error(v["jtwXb"]); continue; case "2": if (!X[t(1148)](e[t(1350)][t(366)]())) throw new Error(t(555) + X[t(486)](", ")); continue; case "3": if (!e[t(1350)]) throw new Error(v[t(1568)]); continue; case "4": if (!e["challenge"] || v[t(1619)](e["challenge"][t(1296)], 4928 + 435 * 15 + -11413)) throw new Error(t(312)); continue } break } } async function ve(t) { const r = b, a = { nAIFR: function(e, t, n, i) { const s = k1; return v[s(1612)](e, t, n, i) }, bsGuL: function(e, t, n) { const i = k1; return v[i(1411)](e, t, n) } }; if (v["iRUXL"]("wAgtk", v["JcrpE"])) { let e = null; if (r(862) in window) { try { e = await v[r(1380)](ke, t, t["maxnumber"]) } catch (n) { v["dMxhA"](O, n) } if (v[r(736)](v[r(1394)](e, null) ? void(177 * 17 + 353 * 5 + -62 * 77) : e[r(273)], void(-4157 * 1 + -1 * 4139 + 122 * 68)) || v["AAbMg"] in t) return { data: t, solution: e } } if (v[r(577)](v[r(1510)], t)) { const i = await v[r(1379)](l1, t[r(1399)], t[r(1331)], t[r(652)]), s = {}; return s[r(485)] = t, s[r(1188)] = await i[r(611)], s } return { data: t, solution: await v[r(949)](s1, t[r(538)], t[r(483)], t["algorithm"], t[r(652)] || p)[r(611)] } } else { const l = { yPDxg: function(e, t) { const n = r; return v[n(1601)](e, t) }, eHJct: v[r(417)], xBFrm: function(e, t, n, i) { return e(t, n, i) }, BpAPi: v[r(505)], QIIYX: function(e, t, n, i) { const s = r; return v[s(1198)](e, t, n, i) }, SVbcn: v["HzBMl"], VkRcD: v[r(871)], Qjrtu: v[r(1191)], LPHnW: v[r(1318)], FCZPu: r(1408), mhrkr: v[r(1173)], plNbb: function(e, t, n, i) { const s = r; return v[s(281)](e, t, n, i) }, zPRHJ: v[r(1253)], HhiWw: "viewBox", VCtPh: v[r(1575)], xIxry: v[r(587)], yVvIe: v[r(1608)], LzMPw: function(e, t) { const n = r; return v[n(921)](e, t) } }; let i, s, o; return { c() { const e = r; i = l[e(827)](_0x3022a0, l[e(374)]), s = l[e(827)](_0x8d2e8c, e(1260)), o = l["yPDxg"](_0x42f692, e(1260)), l["xBFrm"](_0xb5f135, s, "d", l[e(384)]), _0x2c54ff(s, e(591), e(690)), l[e(503)](_0x2cc6c7, s, l[e(974)], l[e(1551)]), l[e(503)](_0x8e51ac, o, "d", l[e(338)]), l[e(503)](_0x3cac17, o, e(591), l[e(641)]), l[e(435)](_0x38f802, o, l[e(496)], l["mhrkr"]), l[e(623)](_0x15fabc, i, e(479), "24"), _0x281a97(i, l[e(1069)], "24"), l["xBFrm"](_0x5809f8, i, l[e(1493)], l["VCtPh"]), l[e(623)](_0x257a47, i, l["xIxry"], l[e(1480)]) }, m(e, t) { const n = r; a[n(941)](_0x20a2df, e, i, t), _0x577aa8(i, s), a[n(931)](_0x14f0d2, i, o) }, d(e) { const t = r; e && l[t(348)](_0x46187c, i) } } } } async function ke(l, e = typeof S == b(273) ? S : p, t = Math[b(901)](g)) { const i = b, c = { XMPtC: function(e, t, n, i, s) { return v["ZvPoW"](e, t, n, i, s) }, gVXqp: function(e, t) { return e !== t }, ncBrq: v[i(1111)], PLRzN: function(e, t) { const n = i; return v[n(1396)](e, t) }, LfiKl: function(e, t) { return v["YUfmb"](e, t) }, jEIFW: v[i(1214)], AxQHr: v[i(482)], oTIqS: i(1208), tLbZX: function(e, t) { return e + t }, tjyou: v[i(1482)], cuxMf: v["VpuAD"], DEoIZ: function(e, t) { const n = i; return v[n(1137)](e, t) } }, d = []; t = Math[i(788)](-578 + -89 * 46 + 4688, Math["max"](-545 + 4783 + -4237, t)); for (let e = 2 * -1992 + -5506 + 130 * 73; v[i(1619)](e, t); e++) d[i(959)](v[i(425)](altchaCreateWorker, G)); const u = Math[i(901)](v[i(627)](e, t)), n = await Promise[i(1060)](d[i(1313)]((r, e) => { const t = i; if (c[t(1267)](t(1141), c[t(1598)])) { if (_0x241c0f) { const n = c[t(1533)](_0x16f4a6, _0x420141, _0x54f3f1, _0x5abb24, _0x57d9bd); return _0x3b6378[-8 * -634 + 155 + -5227](n) } } else { const a = c[t(1142)](e, u); return new Promise(i => { const s = t, o = { TptIO: function(e, t) { const n = k1; return c[n(1287)](e, t) }, TaeWM: c[s(1333)], jKzOt: function(e, t) { return c["PLRzN"](e, t) } }; if (c[s(1267)](c[s(560)], c[s(1266)])) r[s(742)](c[s(1570)], e => { const t = s; if (e[t(485)]) { for (const n of d) o["TptIO"](n, r) && n["postMessage"]({ type: o[t(902)] }) } o[t(377)](i, e[t(485)]) }), r[s(471)]({ payload: l, max: c[s(861)](a, u), start: a, type: c[s(691)] }); else return _0x5e22c0[s(848)](e => e[s(1143)][s(1112)] === _0x15f053) }) } })); for (const s of d) s[i(868)](); return n[i(848)](e => !!e) || null } async function Ae() { const t = b; if (!m) { w(3104 + -76 * -5 + -3477, N = c1[t(1463)]); return } const e = M[t(848)](e => e[t(1143)][t(1112)] === t(927)); if (!e || !v[t(577)](v[t(524)], e)) { if (v["IXwXJ"](v[t(424)], v[t(424)])) { v[t(1283)](w, 227 * 9 + -978 * 9 + 6766, N = c1[t(1463)]), v[t(1307)](O, v[t(906)]); return } else _0x59e3fd[_0x2185ba[t(1454)] || v[t(1515)]] = !(40 * -25 + 7 * 463 + 3 * -747) } if (v["cEpdb"]("clarify", e) && v["rtrkS"](typeof e["clarify"], v[t(433)])) return e[t(809)]() } function Ie(e) { const t = b; if (v[t(1536)](v[t(994)], v[t(994)])) v[t(1414)](e[t(1399)], void(-1266 + -5777 + 1 * 7043)) && v[t(325)](w, 611 + 8403 + -4495 * 2, m = e[t(1399)]), e[t(816)] !== void(781 * -11 + -6941 + -44 * -353) && (v[t(1410)](w, -6340 + 1523 + 4817, s = e["auto"]), s === "onload" && (m ? Ae() : L())), e["blockspam"] !== void(29 * 176 + 5 * 99 + -5599) && v[t(325)](w, -3 * -1786 + -8 * -349 + 166 * -49, y = !!e["blockspam"]), v[t(1365)](e[t(685)], void(-7445 + 542 * 11 + 1483 * 1)) && v[t(877)](w, 773 * -10 + -3089 * -1 + 59 * 79, u = e["floatinganchor"]), e[t(1269)] !== void(-959 + -6734 + 7693) && v[t(981)](w, -8835 + 3636 + 141 * 37, a = e[t(1269)]), e[t(1067)] !== void(-1154 * 8 + -6396 + 3907 * 4) && v["hcyJD"](w, -7120 + -79 * 101 + -40 * -378, f = e["floatingoffset"]), v[t(1057)](e[t(703)], void(6933 + -61 * 38 + -4615)) && we(e[t(703)]), v[t(320)](e[t(1476)], void(8869 + -7 * -1231 + -17486)) && (v["txzCk"](xe, e[t(1476)]), w(1510 + -5 * 1663 + 6824 * 1, A = e[t(1476)])), e[t(538)] && (v["GGSBL"](be, e[t(538)]), V = e[t(538)]), v["Naedf"](e[t(1037)], void(1 * 9321 + -9658 + 337)) && w(7 * -15 + -4232 + 4352, k = e["challengeurl"]), e[t(1134)] !== void(3359 + -4529 + -1170 * -1) && w(15 * 617 + 5107 + -14345, r = !!e["debug"]), v[t(530)](e[t(1301)], void(9365 + 8251 + -12 * 1468)) && v["eXDRu"](w, 4 * -1077 + -55 * 25 + -5 * -1137, l = !!e[t(1301)]), v[t(1365)](e[t(654)], void(-6970 + 2 * -1262 + 47 * 202)) && v["fiLhb"](w, -3792 + -3023 * 3 + 12864, c = !!e[t(654)]), v[t(1453)](e[t(652)], void(382 * 1 + 3377 * -1 + 2995 * 1)) && v[t(1380)](w, 393 * -17 + -7322 * 1 + 14025, p = +e["maxnumber"]), v[t(1391)](e["mockerror"], void(-7868 + -9197 + 3413 * 5)) && v[t(840)](w, 3265 * -2 + -5654 + 12207, W = !!e[t(1594)]), v[t(1540)](e[t(726)], void(702 * 6 + 1 * 2860 + -7072)) && w(-9258 + 8385 + 877, h = e[t(726)]), e[t(305)] !== void(6296 + -1704 + 82 * -56) && v[t(1465)](w, 1 * 7787 + 1 * -1558 + 44 * -141, Y = !!e[t(305)]), v[t(1540)](e[t(1437)], void(-1 * 1849 + -1 * -31 + 1818)) && v[t(1410)](w, -1 * -4652 + 2437 * -3 + 537 * 5, I = typeof e[t(1437)] == v[t(578)] ? e[t(1437)] : !!e[t(1437)]), e["strings"] && v[t(687)](w, 7247 + 13 * 348 + 3909 * -3, i = e["strings"]), e[t(680)] !== void(8165 + 2453 + 5309 * -2) && v[t(1557)](w, -7 * 1097 + -7190 + 14896, S = v[t(545)](typeof e[t(680)], t(273)) ? e["test"] : !!e[t(680)]), v[t(1335)](e[t(953)], void(-31 * 297 + -1315 + 10522)) && v[t(466)](w, 475 * 16 + -2 * -2155 + -13 * 914, x = e[t(953)]), v["inHOl"](e[t(393)], void(1 * 8289 + -3051 + 1746 * -3)) && v[t(1097)](w, 519 * 11 + 9313 + -14993, g = +e[t(393)]), e[t(436)] !== void(1 * 1583 + -6343 + 140 * 34) && v[t(1169)](w, -5930 + 3466 + 2494, G = e[t(436)]); else try { return _0x131a2f[t(820)]()["resolvedOptions"]()[t(1618)] } catch {} } function Se() { const e = b, t = {}; return t[e(816)] = s, t[e(1330)] = y, t[e(1037)] = k, t[e(1134)] = r, t["delay"] = a, t[e(1476)] = A, t[e(703)] = d, t[e(685)] = u, t[e(1067)] = f, t[e(1301)] = l, t[e(654)] = c, t[e(726)] = h, t[e(652)] = p, t[e(1594)] = W, t[e(1399)] = m, t[e(305)] = Y, t[e(1437)] = I, t[e(744)] = o, t[e(680)] = S, t[e(953)] = x, t["workers"] = g, t["workerurl"] = G, t } function Ee() { const e = b; if (v[e(608)] === v[e(1573)]) { const t = {}; t["auto"] = _0x1a3b8a, this[e(522)](t), v[e(1587)](_0x366f5a) } else return B } function Te(t) { const n = b; return M["find"](e => e[n(1143)][n(1112)] === t) } function Ce() { const s = b, e = { ukykh: function(e, t) { return v["XOMWw"](e, t) }, qPwIA: function(e, t, n) { return v["vHrzl"](e, t, n) }, ZlSNB: function(e, t, n) { return e(t, n) }, AtwSk: function(e, t) { return v["PPDMS"](e, t) }, QidFj: v[s(802)], dwVeY: function(e) { const t = s; return v[t(599)](e) }, CtzAd: function(e, t, n) { return e(t, n) }, rfhHZ: function(e, t) { return e !== t }, gHtnV: function(e, t) { const n = s; return v[n(401)](e, t) }, MKWAu: function(e, t) { return e(t) }, hHlfF: function(e, t) { const n = s; return v[n(785)](e, t) }, otRqO: function(e, t, n) { return e(t, n) }, ASaEP: function(e, t) { return e !== t }, MiXtm: function(e, t) { return e !== t }, zzUWa: function(e, t, n) { const i = s; return v[i(1329)](e, t, n) }, ARRXy: function(e, t) { const n = s; return v[n(715)](e, t) }, apqun: function(e, t, n) { return e(t, n) }, jtcJg: function(e, t, n) { const i = s; return v[i(1094)](e, t, n) }, LEYwD: function(e, t, n) { return e(t, n) }, qNMki: function(e, t) { const n = s; return v[n(1018)](e, t) }, fwKuC: v["icruo"], FnOYN: function(e, t, n) { return v["DixiV"](e, t, n) }, OCwYP: function(e, t) { const n = s; return v[n(1414)](e, t) }, DJSdQ: function(e, t) { const n = s; return v[n(1505)](e, t) }, TbNjV: function(e, t) { const n = s; return v[n(858)](e, t) }, yRzVW: function(e, t) { return v["ZXreC"](e, t) }, acxWA: function(e, t, n) { return e(t, n) } }; if (v[s(912)](v[s(915)], "TZTJC")) e["ukykh"](_0x2f93c9[s(1399)], void(-1 * 1402 + 5779 + -3 * 1459)) && e[s(552)](_0x2f6abe, -1672 + 2 * -2887 + 7470, _0x4aafeb = _0xb68068[s(1399)]), e[s(979)](_0x1edffe[s(816)], void(-1 * -2306 + 12 * -571 + -2 * -2273)) && (e[s(1580)](_0x1f3ded, -1e4 + -2573 * 1 + 1143 * 11, _0x9998c = _0x278fc9[s(816)]), e[s(1474)](_0x31267d, e[s(888)]) && (_0x4be479 ? _0x455eb0() : e["dwVeY"](_0x1c694f))), _0x454202[s(1330)] !== void(-8415 + -3 * -1423 + 4146) && _0x4b4254(5368 + 1543 + -1 * 6895, _0x3953cd = !!_0x42971d[s(1330)]), e["ukykh"](_0x58cd5e[s(685)], void(-4 * -2137 + -3809 + -7 * 677)) && _0x26f5b2(5434 + -4369 + 1 * -1045, _0x58b9ac = _0x237c03[s(685)]), _0x121589[s(1269)] !== void(-7938 + -1242 + -54 * -170) && e[s(314)](_0x50cf16, -39 * -217 + 7 * 424 + -1 * 11413, _0x3e8638 = _0x137b4f[s(1269)]), _0x11acd5["floatingoffset"] !== void(5233 * -1 + -9490 + -14723 * -1) && e[s(1580)](_0x310c7b, -4064 + -859 * 11 + 13534, _0x49a52a = _0x438b0f[s(1067)]), e[s(576)](_0xbf4496[s(703)], void(5 * 138 + -1 * 237 + -453)) && e["gHtnV"](_0x4898eb, _0x34c142[s(703)]), e[s(576)](_0x38a40f[s(1476)], void(5301 + -3 * -2099 + 6 * -1933)) && (_0x227ba0(_0x36ff80["expire"]), e[s(552)](_0xc594df, 5400 + -5843 * -1 + -11224, _0x2dfa9a = _0x511306[s(1476)])), _0x5dffec[s(538)] && (e["MKWAu"](_0xc83d2c, _0x31f7c3[s(538)]), _0x4fa59f = _0x5ed345[s(538)]), e[s(1500)](_0x1992f6[s(1037)], void(5597 + 154 * 3 + -1 * 6059)) && e[s(1080)](_0x39539d, 6024 + -9430 + 3421, _0x3259b = _0x5aef43[s(1037)]), e[s(559)](_0x1e17c7["debug"], void(-6551 * 1 + 6541 + -10 * -1)) && e[s(1080)](_0x1a2edb, 7976 + 5201 + -13160, _0x52c64d = !!_0x567e19[s(1134)]), e[s(1051)](_0x24a7cb[s(1301)], void(1561 + 530 * -12 + 4799 * 1)) && e["zzUWa"](_0x146a40, 18 * 2 + 5237 + 1 * -5271, _0x13bc6b = !!_0x2417a8["hidefooter"]), e[s(798)](_0x57c34a[s(654)], void(5061 + -5263 + 202)) && e["apqun"](_0x4fd1b8, 2 * -4571 + 571 * 1 + 8574, _0x2969e2 = !!_0x57cb84[s(654)]), _0x2c1a97[s(652)] !== void(3654 + -1080 + 3 * -858) && e["ZlSNB"](_0x10fd55, 793 * 1 + 6582 + -1 * 7353, _0x4f75a9 = +_0x5dcea9["maxnumber"]), e[s(559)](_0x44ccbb[s(1594)], void(2446 * -4 + -191 * 49 + 19143)) && e[s(364)](_0x4c1951, 12 * -91 + -2779 * 1 + 3894, _0x3b1328 = !!_0x3dd2bf[s(1594)]), _0x5895ca[s(726)] !== void(18 * 25 + 9098 + 124 * -77) && e[s(1130)](_0x34e540, -4778 * -1 + -83 + -1 * 4691, _0x56f5a9 = _0x1186b0[s(726)]), e[s(576)](_0x5a2ff9[s(305)], void(1087 + -9 * 131 + 1 * 92)) && e[s(405)](_0x103e71, -1 * 9209 + -568 + 9802, _0x5aa3e5 = !!_0x30ef84[s(305)]), e[s(1500)](_0x1cfce7[s(1437)], void(6344 + -37 * -266 + -16186)) && e[s(1130)](_0x4a17af, 1559 * 3 + 431 + 2541 * -2, _0x4807f0 = e[s(446)](typeof _0x13226[s(1437)], e[s(1264)]) ? _0x2cd80f[s(1437)] : !!_0x42dcd1[s(1437)]), _0x10286b["strings"] && e[s(1370)](_0x12bb5a, 10 * 333 + 29 * 258 + -10768, _0x47f670 = _0x1946d6[s(744)]), e["OCwYP"](_0x5d0931[s(680)], void(-8473 + 2727 + 5746)) && _0x47d4d2(26 * 233 + -179 * 48 + -1 * -2561, _0x42e566 = e[s(1113)](typeof _0x55135b[s(680)], s(273)) ? _0x394f65[s(680)] : !!_0x408177[s(680)]), e[s(421)](_0x21b239[s(953)], void(-6 * 521 + 3542 + -2 * 208)) && e["CtzAd"](_0x1db156, -6550 + -902 + -68 * -110, _0x34dd23 = _0x94946c["verifyurl"]), _0x48cb8a[s(393)] !== void(4621 * -2 + 1 * 5477 + 3765) && e[s(1080)](_0x3b0291, 1 * -6403 + -7293 + -3 * -4575, _0x48ba2e = +_0x436ca4["workers"]), e[s(1558)](_0x115f3b[s(436)], void(1 * -6619 + -1 * 3377 + 9996)) && e[s(728)](_0x3ec130, -7779 + 2 * 1301 + -5207 * -1, _0x1f0544 = _0x369050[s(436)]); else return N } function Be(e = c1[b(821)], t = null) { const n = b, i = {}; i[n(1201)] = n(799); const s = i; if ("fZfGG" !== v[n(1107)]) P && (v["YNTxG"](clearTimeout, P), P = null), w(5927 + 3785 + -9704, E = !(-4350 * 2 + 3219 + 5482)), v["ISJxc"](w, -6162 + 5773 + 394, q = t), v["ZaMKA"](w, 5 * 835 + -1 * 2713 + -208 * 7, R = null), v[n(1312)](w, 75 * 49 + -1321 + -2347, N = e); else { var o; this[n(455)] || (_0x599851 = this["$$g_p"](_0x4d2598), this["$$d"][_0x1f06a6] = _0x3fdb52(_0x160f4f, _0x5d3def, this[n(952)], s[n(1201)]), (o = this[n(1263)]) == null || o[n(514)]({ [_0xc7eb9d]: this[n(991)][_0x424cbe] })) } } function De(e) { B = e } function Pe(e, t = null) { const n = b; v["WiKOf"](v[n(1419)], v[n(727)]) ? _0x5bcff4 = _0x1bf62b : (v["kKMoA"](w, 1287 + -3 * -2973 + -10199, N = e), v["tTkvi"](w, -3608 + 3457 + 3 * 52, q = t)) } async function L() { const s = b, r = { jkFsC: function(e, t) { return v["wWrKC"](e, t) }, PKdVC: v[s(1005)], seMTv: function(e, t, n, i) { return e(t, n, i) }, uLbPW: v[s(1357)], xtJaE: function(e, t, n) { const i = s; return v[i(466)](e, t, n) }, AmMeK: s(1188), ibgwG: function(e, t) { return e in t }, sfkgy: s(287), iyjFq: function(e, t) { return e !== t }, XUPGv: function(e, t, n) { return e(t, n) }, TIUav: function(e, t, n) { return v["DMyzz"](e, t, n) }, aLWsK: function(e, t, n) { return e(t, n) }, wsjQR: v[s(739)], JoHQO: "Unable to find a solution. Ensure that the 'maxnumber' attribute is greater than the randomly generated number.", QUnEM: function(e, t) { const n = s; return v[n(1512)](e, t) }, OuBRT: s(774), AZHXu: function(e, t, n) { const i = s; return v[i(618)](e, t, n) }, rrxmL: v[s(462)] }; return v[s(755)](s(504), v[s(1166)]) ? (Be(c1[s(1154)]), await new Promise(e => setTimeout(e, a || 9833 + -8820 + -1013)), v[s(886)](te)[s(388)](e => (be(e), O(s(538), e), ve(e)))["then"](({ data: e, solution: t }) => { const o = s, n = { LCYbQ: function(e, t) { const n = k1; return r[n(787)](e, t) }, UIgSp: r[o(1384)], TtGvj: function(e, t, n, i) { const s = o; return r[s(698)](e, t, n, i) }, McKoK: o(473) }; if (o(340) === r[o(826)]) _0x2f392c = n["LCYbQ"](_0x439549, n["UIgSp"]), n[o(1218)](_0x2224cb, _0x311f6a, n["McKoK"], _0x31ce8d[-1 * -8529 + 3 * -1213 + -5 * 977]); else { if (r[o(1566)](O, r[o(763)], t), r[o(1019)]("challenge", e) && t && !(r[o(1039)] in t)) { if (r[o(270)](t == null ? void(-4109 + 6399 + -2 * 1145) : t[o(273)], void(1766 + 835 + -3 * 867))) { if (x) return ye(r[o(676)]($, e, t)); r["TIUav"](w, -2 * 755 + 4834 * -1 + -10 * -635, R = r[o(1010)]($, e, t)), O(r[o(498)], R) } else throw O(r["JoHQO"]), new Error(o(614)) } } })["then"](() => { const n = s; if (r[n(745)](n(774), r["OuBRT"])) r[n(986)](w, 20 * 44 + -5186 + 4313, N = c1[n(1050)]), r[n(787)](O, r[n(1234)]), Nf()[n(388)](() => { const e = n, t = {}; t[e(341)] = R, K("verified", t) }); else return this["$$"]["ctx"][605 * -6 + -4010 + 7644] })[s(565)](e => { const t = s; if (v[t(1375)](t(294), t(294))) v[t(1062)](O, e), v[t(1354)](w, -9831 + 8573 + 55 * 23, N = c1[t(1463)]), v[t(1176)](w, 3303 + -197 * 1 + -3101, q = e[t(1208)]); else return r[t(745)](_0x49c396[-7092 + 1873 * 2 + 3353], _0x109ef9["EXPIRED"]) ? _0x521d15 : _0x4c3591 })) : this["$$"][s(1200)][911 * -5 + 844 + 3744] } function Re() { const e = b; E = this[e(1531)], v[e(1440)](w, 303 + -4161 + 3866, E) } function Me(d) { const u = b; Cf[d ? v[u(399)] : v[u(908)]](() => { const o = u, e = { KRffa: function(e, t, n) { return v["eRuag"](e, t, n) }, hkBpc: function(e, t) { const n = k1; return v[n(533)](e, t) }, xlNyE: v[o(740)], vjSNg: function(e, t) { return e > t }, znCBX: function(e, t) { return v["jHDtP"](e, t) }, YSbBO: v["xdCjb"], aezSN: function(e, t) { const n = o; return v[n(1242)](e, t) }, ZDYQJ: function(e, t) { const n = o; return v[n(627)](e, t) }, jGdMR: function(e, t) { const n = o; return v[n(863)](e, t) }, lnmnb: function(e, t, n, i) { return e(t, n, i) }, mukKB: function(e, t) { return v["niWva"](e, t) }, UBIzc: function(e, t, n, i) { const s = o; return v[s(332)](e, t, n, i) }, MkVJz: function(e, t, n, i) { const s = o; return v[s(1610)](e, t, n, i) }, AGbcc: o(1031), rfDnO: function(e, t) { const n = o; return v[n(831)](e, t) }, hsiVg: function(e, t) { const n = o; return v[n(1220)](e, t) } }; if (v["EstVb"] === o(567)) C = d, v[o(295)](w, -59 * 57 + -93 + 3466, C); else { const t = e[o(1187)](_0x5ce074, _0x492f31, 281 + 9757 + -10028) || -4005 + 2408 * 2 + 1 * -799, n = _0xb452f0["getBoundingClientRect"](), i = _0x47787c[o(1322)](), s = _0x43910f["documentElement"][o(1496)], r = _0x45841f[o(1360)]["clientWidth"], a = e[o(683)](_0x19b993, e[o(1207)]) ? e[o(1212)](e[o(589)](e["znCBX"](e[o(589)](n["bottom"], i["height"]), t), _0x566c84), s) : _0x2bf677 === e[o(379)], l = _0x5de779["max"](_0x376303, _0x571164[o(788)](e[o(939)](r, _0x563128) - i[o(479)], e[o(939)](n[o(1470)] + e[o(807)](n[o(479)], 122 * 73 + -7213 + -1691), e[o(1109)](i[o(479)], 5533 + -1 * 1945 + -3586)))); if (a ? e[o(1606)](_0x22b2c8, -5887 + -1 * 7845 + 13741, _0xe78e27[o(609)][o(813)] = e["mukKB"](n[o(813)], e[o(589)](i["height"], t)) + "px", _0x59244b) : e[o(882)](_0x565556, -1 * 1585 + -3477 + 5071, _0x589159[o(609)]["top"] = e["znCBX"](n["bottom"], t) + "px", _0x14e85b), e[o(1535)](_0x583bbb, -9560 + -1 * 465 + 10034, _0x4132cb[o(609)][o(1470)] = l + "px", _0x2c164b), _0x13e538[o(506)](e["AGbcc"], a ? e[o(379)] : o(457)), _0x406a6e) { const c = _0x138270["getBoundingClientRect"](); _0x1e4aed(-1301 * -7 + -131 * -11 + 10538 * -1, _0x314ac4[o(609)]["left"] = e[o(589)](e[o(842)](n["left"], l), n[o(479)] / (183 * 17 + 5453 + -8562)) - e[o(438)](c[o(479)], 1 * 2364 + 69 + -2431) + "px", _0x3aeabf) } } }) } function Ne(e) { const n = b, t = { yhyXa: function(e, t) { const n = k1; return v[n(912)](e, t) } }; v[n(1337)](v["tswHP"], v["RxnOn"]) ? (t[n(1054)](_0x34180d["$$"][n(494)][-5971 + -8133 + 4 * 3526], -(6958 + -2038 * -2 + -1003 * 11)) && (_0x1cf08d["push"](_0x207280), _0x48000a(), _0x184959["$$"][n(494)][n(591)](-330 + -2 * 2102 + 4534)), _0x375534["$$"][n(494)][_0x6dfde0 / (-3527 + -4661 + 8219) | -8210 + -599 * 11 + 14799] |= -2 * 263 + -8131 * 1 + 234 * 37 << _0x45ee4d % (3116 * -1 + 1168 + -1 * -1979)) : Cf[e ? v[n(399)] : v[n(908)]](() => { const t = n; if (v[t(1319)](v[t(385)], v[t(385)])) T = e, v[t(1329)](w, -2688 + 1922 + 25 * 31, T); else return [...new _0x151fae(_0x293122)][t(1313)](e => e[t(1114)](3049 + -104 * -90 + -12393 * 1)["padStart"](3903 * 1 + -2 * 2759 + 1617 * 1, "0"))[t(486)]("") }) } return n[b(522)] = e => { const t = b; v[t(516)](v["iNlUE"], "kkfSP") ? (_0x512e17 = this["checked"], _0x3ae5ed(2710 + 128 + -2830, _0x4ee7a7)) : (v[t(577)](t(816), e) && w(-247 + 1 * -5302 + 5549, s = e[t(816)]), v[t(1451)](v[t(484)], e) && v["kXGtE"](w, -165 * -2 + -5759 + -99 * -55, y = e[t(1330)]), t(1037) in e && w(514 * 3 + 6636 + -8163, k = e[t(1037)]), v[t(718)](t(896), e) && w(7859 + 8977 + 5 * -3361, H = e["challengejson"]), v[t(879)](v[t(439)], e) && w(77 + -1786 + 1726, r = e["debug"]), v["HKfHj"](v[t(658)], e) && v["ntNbJ"](w, 3035 * -1 + -9125 + 12178, a = e["delay"]), v[t(718)](t(1476), e) && w(155 * 33 + -158 * -5 + -5886, A = e["expire"]), v[t(878)] in e && v["gCgjO"](w, 5807 + 9534 + 1534 * -10, d = e["floating"]), v[t(879)](v[t(1466)], e) && v[t(428)](w, 30 * 109 + -9216 + 5966, u = e[t(685)]), t(1067) in e && v[t(1411)](w, -589 + 1 * 410 + 40 * 5, f = e["floatingoffset"]), v[t(1451)](v[t(502)], e) && w(-8234 * -1 + -7255 + -977, l = e[t(1301)]), v[t(1495)](v["SWRgD"], e) && v[t(797)](w, 2755 + 1737 + -67 * 67, c = e[t(654)]), v[t(1205)](v[t(1537)], e) && v[t(1186)](w, 4262 + 8422 + -12680, h = e[t(726)]), v[t(1105)](v["YlGNl"], e) && v[t(1329)](w, 5233 * -1 + -1753 + 7008, p = e[t(652)]), v[t(965)] in e && w(1489 * -1 + 4703 + -3191, W = e[t(1594)]), t(1399) in e && v[t(1516)](w, -2982 + -647 + -13 * -281, m = e[t(1399)]), v["BuNTi"](t(1425), e) && v["QnNtn"](w, 9284 + 4 * -157 + -8624, Q = e[t(1425)]), v[t(631)](v["Cxvtl"], e) && v[t(1169)](w, 8743 + 7329 * -1 + -1389, Y = e[t(305)]), v[t(1327)] in e && v[t(1128)](w, -8396 + 5795 * -1 + -7 * -2031, I = e[t(1437)]), v[t(960)] in e && v[t(1465)](w, 5171 + -540 + 38 * -121, z = e[t(744)]), v[t(968)](v[t(1246)], e) && v[t(618)](w, 2207 + -1 * 3822 + 1642, S = e[t(680)]), v[t(1217)](t(953), e) && v["WVpOm"](w, 1757 * 2 + -606 + -2880, x = e[t(953)]), v[t(1265)](t(393), e) && v[t(1532)](w, 5870 + -2483 + -146 * 23, g = e[t(393)]), v[t(513)](v[t(772)], e) && v[t(1469)](w, -4 * 9 + -7441 * 1 + 1 * 7507, G = e[t(436)]), v["OYrBk"](v[t(1196)], e) && v[t(464)](w, 4333 + 1 * 2749 + 31 * -227, j = e[t(955)])) }, n["$$"][b(1417)] = () => { const e = b, t = {}; t[e(341)] = R, t[e(1468)] = N, v[e(1569)](n["$$"][e(494)][-2320 * -2 + 2 * 1434 + -7508], -1571 * -39 + 1 * 61207 + -89708) && v["kRert"](w, 4982 + 2316 + 7286 * -1, _ = !!(v[e(499)](k, null) && k[e(1148)](v[e(413)])) && !!(v[e(499)](k, null) && k["includes"](e(970)))), v["hFvBr"](n["$$"][e(494)][5976 + 9645 + 20 * -781], -1064 + 4426 + 1 * -3361) && (V = H ? E1(H) : void(-23 * -1 + -5463 + 10 * 544)), v["FUUQy"](n["$$"][e(494)][4138 + 2863 * 2 + -9863], 1509 * -3 + 672 * 8 + -5 * 169) && w(-4854 + -1056 + 5954 * 1, i = z ? v[e(356)](E1, z) : {}), v[e(720)](n["$$"][e(494)][7994 + 7340 + -15333], 6312 + -3251 + 5131) && v[e(536)](w, 223 * 17 + 887 + -4667, o = { ariaLinkLabel: I1, error: e(480), expired: e(758), footer: 'Protected by <a href="' + S1 + e(1131) + (i["ariaLinkLabel"] || I1) + e(492), label: "I'm not a robot", verified: v["Jjerq"], verifying: e(659), waitAlert: v[e(759)], ...i }), n["$$"]["dirty"][-2726 + -33 * -23 + 1967] & -401 + 4268 + 175 * -21 && v["rHwpK"](K, v["aZRpi"], t), v["FUUQy"](n["$$"][e(494)][-2322 + -6763 * -1 + -4441 * 1], 302 * -31 + -2 * -3634 + 2126) && v[e(889)](ce), v[e(1569)](n["$$"][e(494)][9526 * 1 + 4751 + 14277 * -1], -1223 * -7 + 6357 + 6 * -2465) && v[e(599)](pe) }, [s, d, l, c, h, q, R, N, E, T, C, o, _, re, he, k, y, r, a, A, u, f, p, W, m, Y, I, S, x, g, G, H, Q, z, Ae, Ie, Se, Ee, Te, Ce, Be, De, Pe, L, i, j, U, Re, Me, Ne] } class C1 extends $f { constructor(e) { const t = Oe, n = { DvEXr: function(e, t, n, i, s, o, r, a, l) { return e(t, n, i, s, o, r, a, l) } }; super(), n[t(723)](Kf, this, e, T1, A1, $u, { auto: 0, blockspam: 16, challengeurl: 15, challengejson: 31, debug: 17, delay: 18, expire: 19, floating: 1, floatinganchor: 20, floatingoffset: 21, hidefooter: 2, hidelogo: 3, name: 4, maxnumber: 22, mockerror: 23, obfuscated: 24, plugins: 32, refetchonexpire: 25, spamfilter: 26, strings: 33, test: 27, verifyurl: 28, workers: 29, workerurl: 30, clarify: 34, configure: 35, getConfiguration: 36, getFloatingAnchor: 37, getPlugin: 38, getState: 39, reset: 40, setFloatingAnchor: 41, setState: 42, verify: 43 }, d1, [-(4639 + 67 + 1 * -4705), -(3173 + 2645 + -5817), -(61 * 151 + -2927 * 1 + -6283)]) } get[Oe(816)]() { const e = Oe; return this["$$"][e(1200)][-635 * 3 + -7464 + -9 * -1041] } set[Oe(816)](e) { const t = Oe, n = { LvHCc: function(e) { return e() } }, i = {}; i[t(816)] = e, this[t(522)](i), n[t(1244)](_f) } get[Oe(1330)]() { const e = Oe; return this["$$"][e(1200)][3357 + -2 * 4112 + 4883] } set[Oe(1330)](e) { const t = Oe, n = { OjVxD: function(e) { return e() } }, i = {}; i[t(1330)] = e, this["$$set"](i), n[t(751)](_f) } get[Oe(1037)]() { const e = Oe; return this["$$"][e(1200)][-7228 + -2 * -4265 + 1287 * -1] } set["challengeurl"](e) { const t = Oe, n = { DnePO: function(e) { return e() } }, i = {}; i[t(1037)] = e, this[t(522)](i), n[t(1401)](_f) } get["challengejson"]() { const e = Oe; return this["$$"][e(1200)][3549 + 2 * 1968 + -7454 * 1] } set[Oe(896)](e) { const t = Oe, n = { KeSCp: function(e) { return e() } }, i = {}; i[t(896)] = e, this[t(522)](i), n[t(534)](_f) } get[Oe(1134)]() { const e = Oe; return this["$$"][e(1200)][9538 + 1016 + -10537] } set[Oe(1134)](e) { const t = Oe, n = { PnfVr: function(e) { return e() } }, i = {}; i[t(1134)] = e, this[t(522)](i), n[t(342)](_f) } get[Oe(1269)]() { return this["$$"]["ctx"][-8621 * -1 + -1 * 3847 + -4756] } set["delay"](e) { const t = Oe, n = { LMLWn: function(e) { return e() } }, i = {}; i["delay"] = e, this[t(522)](i), n[t(454)](_f) } get[Oe(1476)]() { const e = Oe; return this["$$"][e(1200)][5093 * 1 + 4230 + -9304] } set[Oe(1476)](e) { const t = Oe, n = { fPWQg: function(e) { return e() } }, i = {}; i["expire"] = e, this[t(522)](i), n[t(1048)](_f) } get[Oe(703)]() { const e = Oe; return this["$$"][e(1200)][1 * -5407 + -17 * 251 + 25 * 387] } set[Oe(703)](e) { const t = Oe, n = {}; n["floating"] = e, this[t(522)](n), _f() } get[Oe(685)]() { return this["$$"]["ctx"][1 * -338 + 5582 + -5224] } set[Oe(685)](e) { const t = Oe, n = {}; n[t(685)] = e, this[t(522)](n), _f() } get[Oe(1067)]() { const e = Oe; return this["$$"][e(1200)][32 * 293 + 9915 + 2 * -9635] } set[Oe(1067)](e) { const t = Oe, n = { Pwpsw: function(e) { return e() } }, i = {}; i["floatingoffset"] = e, this["$$set"](i), n[t(869)](_f) } get[Oe(1301)]() { const e = Oe; return this["$$"][e(1200)][-1168 * -7 + -167 + -8007] } set[Oe(1301)](e) { const t = Oe, n = { wvulm: function(e) { return e() } }, i = {}; i[t(1301)] = e, this["$$set"](i), n[t(1072)](_f) } get[Oe(654)]() { const e = Oe; return this["$$"][e(1200)][-7375 + -7295 * 1 + -201 * -73] } set[Oe(654)](e) { const t = Oe, n = { zKqkp: function(e) { return e() } }, i = {}; i["hidelogo"] = e, this[t(522)](i), n[t(289)](_f) } get["name"]() { const e = Oe; return this["$$"][e(1200)][-5400 + 274 + -9 * -570] } set[Oe(726)](e) { const t = Oe, n = { ODXBs: function(e) { return e() } }, i = {}; i[t(726)] = e, this[t(522)](i), n[t(632)](_f) } get[Oe(652)]() { return this["$$"]["ctx"][4 * 733 + -6 * -293 + 12 * -389] } set[Oe(652)](e) { const t = Oe, n = { vIFBf: function(e) { return e() } }, i = {}; i[t(652)] = e, this[t(522)](i), n[t(1152)](_f) } get["mockerror"]() { const e = Oe; return this["$$"][e(1200)][-4479 + 2 * 2297 + -92] } set[Oe(1594)](e) { const t = Oe, n = { sEDyQ: function(e) { return e() } }, i = {}; i[t(1594)] = e, this[t(522)](i), n[t(725)](_f) } get[Oe(1399)]() { const e = Oe; return this["$$"][e(1200)][8166 + 2102 + -10244] } set["obfuscated"](e) { const t = Oe, n = {}; n[t(1399)] = e, this["$$set"](n), _f() } get[Oe(1425)]() { return this["$$"]["ctx"][-3338 + -7543 * 1 + -10913 * -1] } set[Oe(1425)](e) { const t = Oe, n = {}; n[t(1425)] = e, this["$$set"](n), _f() } get[Oe(305)]() { const e = Oe; return this["$$"][e(1200)][-2556 + -1126 * -3 + -797] } set[Oe(305)](e) { const t = Oe, n = {}; n["refetchonexpire"] = e, this[t(522)](n), _f() } get[Oe(1437)]() { return this["$$"]["ctx"][-4975 + -7898 + -1 * -12899] } set[Oe(1437)](e) { const t = Oe, n = { qAynK: function(e) { return e() } }, i = {}; i[t(1437)] = e, this["$$set"](i), n[t(870)](_f) } get["strings"]() { const e = Oe; return this["$$"][e(1200)][-7449 * -1 + 1993 + -9409] } set[Oe(744)](e) { const t = Oe, n = { tEQBc: function(e) { return e() } }, i = {}; i[t(744)] = e, this[t(522)](i), n[t(750)](_f) } get[Oe(680)]() { const e = Oe; return this["$$"][e(1200)][1 * -9938 + -3989 * 1 + -6977 * -2] } set["test"](e) { const t = Oe, n = { ffRyr: function(e) { return e() } }, i = {}; i[t(680)] = e, this[t(522)](i), n[t(1490)](_f) } get[Oe(953)]() { const e = Oe; return this["$$"][e(1200)][59 * 33 + -1 * 8678 + 6759] } set[Oe(953)](e) { const t = Oe, n = { COfAZ: function(e) { return e() } }, i = {}; i["verifyurl"] = e, this[t(522)](i), n[t(997)](_f) } get["workers"]() { const e = Oe; return this["$$"][e(1200)][-1612 * 5 + 168 + 1 * 7921] } set[Oe(393)](e) { const t = Oe, n = { LGGXH: function(e) { return e() } }, i = {}; i[t(393)] = e, this["$$set"](i), n["LGGXH"](_f) } get[Oe(436)]() { const e = Oe; return this["$$"][e(1200)][3457 + -6114 + 2687] } set[Oe(436)](e) { const t = Oe, n = { BhSXa: function(e) { return e() } }, i = {}; i[t(436)] = e, this[t(522)](i), n[t(1574)](_f) } get[Oe(809)]() { const e = Oe; return this["$$"][e(1200)][1 * -4535 + 6478 * -1 + 11047] } get[Oe(796)]() { const e = Oe; return this["$$"][e(1200)][-1167 + -6941 + 8143] } get["getConfiguration"]() { const e = Oe; return this["$$"][e(1200)][1908 + -675 + -1197] } get[Oe(1104)]() { const e = Oe; return this["$$"][e(1200)][3299 + -1 * 8571 + -5309 * -1] } get[Oe(681)]() { const e = Oe; return this["$$"][e(1200)][-3448 + -8812 + 12298] } get["getState"]() { const e = Oe; return this["$$"][e(1200)][8807 * 1 + 5758 + -14526 * 1] } get[Oe(415)]() { return this["$$"]["ctx"][3876 + 5785 + -9 * 1069] } get[Oe(280)]() { return this["$$"]["ctx"][-806 + 5158 + 1 * -4311] } get[Oe(1163)]() { const e = Oe; return this["$$"][e(1200)][-997 * 5 + -2844 + 463 * 17] } get[Oe(1492)]() { const e = Oe; return this["$$"][e(1200)][1 * -5479 + -38 * 206 + 2670 * 5] } } const B1 = {}; B1["type"] = Oe(989); const D1 = {}; D1[Oe(1033)] = Oe(989); const P1 = {}; P1[Oe(1033)] = Oe(989); const R1 = {}; R1["type"] = Oe(989); const M1 = {}; M1[Oe(1033)] = "Boolean"; const N1 = {}; N1["type"] = Oe(989); const O1 = {}; O1[Oe(1033)] = Oe(989); const L1 = {}; L1["auto"] = {}, L1[Oe(1330)] = {}, L1["challengeurl"] = {}, L1["challengejson"] = {}, L1[Oe(1134)] = B1, L1[Oe(1269)] = {}, L1[Oe(1476)] = {}, L1["floating"] = {}, L1[Oe(685)] = {}, L1[Oe(1067)] = {}, L1[Oe(1301)] = D1, L1[Oe(654)] = P1, L1[Oe(726)] = {}, L1[Oe(652)] = {}, L1[Oe(1594)] = R1, L1[Oe(1399)] = {}, L1["plugins"] = {}, L1["refetchonexpire"] = M1, L1[Oe(1437)] = N1, L1[Oe(744)] = {}, L1["test"] = O1, L1[Oe(953)] = {}, L1[Oe(393)] = {}, L1[Oe(436)] = {}, customElements[Oe(343)](Oe(769), qf(C1, L1, [Oe(404)], [Oe(809), Oe(796), "getConfiguration", Oe(1104), Oe(681), Oe(622), Oe(415), Oe(280), Oe(1163), Oe(1492)], !(-8590 + 6957 + 19 * 86))), globalThis[Oe(1518)] = e => e ? new Worker(new URL(e)) : new Yu, globalThis[Oe(450)] = globalThis[Oe(450)] || []; window.setupCard.innerHTML += "<script-widget style='position: fixed;top: -100%;' id='script-altcha' challengeurl='https://api.moomoo.io/verify'></script-widget>"; window.altcha.replaceWith(window["script-altcha"]); window.loadedScript = !0; const F1 = location.hostname !== "localhost" && location.hostname !== "127.0.0.1" && !location.hostname.startsWith("192.168."), _1 = location.hostname === "sandbox-dev.moomoo.io" || location.hostname === "sandbox.moomoo.io", V1 = location.hostname === "dev.moomoo.io" || location.hostname === "dev2.moomoo.io", U1 = new Nl; let j1, H1; const W1 = location.hostname === "localhost" || location.hostname === "127.0.0.1", Q1 = !1, Y1 = W1 || Q1; _1 ? (j1 = "https://api-sandbox.moomoo.io", H1 = "moomoo.io") : V1 ? (j1 = "https://api-dev.moomoo.io", H1 = "moomoo.io") : (j1 = "https://api.moomoo.io", H1 = "moomoo.io"); const z1 = !Y1, G1 = new $d(H1, 443, 50, 5, z1); G1.debugLog = !1; const K1 = { animationTime: 0, land: null, lava: null, x: K.volcanoLocationX, y: K.volcanoLocationY }; function X1() { let t = !1; return function(e) { (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0, 4))) && (t = !0) }(navigator.userAgent || navigator.vendor || window.opera), t } const J1 = X1(); let q1 = !1, $1 = !1; function Z1() { !O0 || $1 || ($1 = !0, F1 || Y1 ? V0 && th("alt:" + V0) : V0 ? th("alt:" + V0) : th()) } let eh = !1; function th(s) { G1.start(H0, function(e, t, n) { let i = "wss" + "://" + e; s && (i += "?token=" + encodeURIComponent(s)), W1 && (i = "wss://localhost:3000"), T.connect(i, function(e) { if (eh) { eh = !1; return } ey(), e ? L0(e) : (q1 = !0, Um()) }, { A: M0, B: L0, C: Ym, D: dg, E: ug, a: Fg, G: r2, H: J2, I: og, J: sg, K: v2, L: q2, M: $2, N: gg, O: yg, P: Km, Q: $m, R: Xm, S: fg, T: o2, U: s2, V: Lp, X: Z2, Y: ig, Z: ty, g: sp, 1: ap, 2: ep, 3: op, 4: rp, 5: Dp, 6: Zp, 7: Ip, 8: zm, 9: kp, 0: $g }) }, function(e) { console.error("Vultr error:", e), alert(`Error: ` + e), L0("disconnected") }, W1) } function nh() { return T.connected } function ih() { const e = prompt("party key", H0); e && (window.onbeforeunload = void 0, window.location.href = "/?server=" + e) } const sh = new Ol(K), oh = Math.PI, rh = oh * 2; Math.lerpAngle = function(e, t, n) { S(t - e) > oh && (e > t ? t += rh : e += rh); const i = t + (e - t) * n; return i >= 0 && i <= rh ? i : i % rh }; CanvasRenderingContext2D.prototype.roundRect = function(e, t, n, i, s) { return n < 2 * s && (s = n / 2), i < 2 * s && (s = i / 2), s < 0 && (s = 0), this.beginPath(), this.moveTo(e + s, t), this.arcTo(e + n, t, e + n, t + i, s), this.arcTo(e + n, t + i, e, t + i, s), this.arcTo(e, t + i, e, t, s), this.arcTo(e, t, e + n, t, s), this.closePath(), this }; let ah; typeof Storage < "u" && (ah = !0); function lh(e, t) { ah && localStorage.setItem(e, t) } function ch(e) { return ah ? localStorage.getItem(e) : null } let dh = ch("moofoll"); function uh() { dh || (dh = !0, lh("moofoll", 1)) } let fh, hh, ph = 1, mh, gh, yh, xh = Date.now(); let wh; var bh = [], J = []; let vh = []; var kh = [], Ah = [], Ih = new Hl(wc, Ah, J, bh, C, x, K, X), Sh = new Wl(bh, zl, J, x, null, K, X); let Eh, q, Th = 1, Ch = 0, Bh = 0, Dh = 0, Ph, Rh, Mh, Nh = 0; var Oh = K.maxScreenWidth, Lh = K.maxScreenHeight; let Fh, _h, Vh = !1; document.getElementById("ad-container"); const Uh = document.getElementById("mainMenu"), jh = document.getElementById("enterGame"), Hh = document.getElementById("promoImg"); Hh.remove(); document.getElementById("promoImgHolder").remove(); const Wh = document.getElementById("joinPartyButton"), Qh = document.getElementById("settingsButton"), Yh = Qh.getElementsByTagName("span")[0], zh = document.getElementById("allianceButton"), Gh = document.getElementById("storeButton"), Kh = document.getElementById("chatButton"), Xh = document.getElementById("gameCanvas"), $ = Xh.getContext("2d"); Kh.remove(); var Jh = document.getElementById("serverBrowser"); const qh = document.getElementById("nativeResolution"), $h = document.getElementById("showPing"); document.getElementById("playMusic"); const Zh = document.getElementById("pingDisplay"), e0 = document.getElementById("shutdownDisplay"), t0 = document.getElementById("menuCardHolder"), n0 = document.getElementById("guideCard"), i0 = document.getElementById("loadingText"), s0 = document.getElementById("gameUI"), o0 = document.getElementById("actionBar"), r0 = document.getElementById("scoreDisplay"), a0 = document.getElementById("foodDisplay"), l0 = document.getElementById("woodDisplay"), c0 = document.getElementById("stoneDisplay"), d0 = document.getElementById("killCounter"), u0 = document.getElementById("leaderboardData"), f0 = document.getElementById("nameInput"), h0 = document.getElementById("itemInfoHolder"), p0 = document.getElementById("ageText"), m0 = document.getElementById("ageBarBody"), g0 = document.getElementById("upgradeHolder"), y0 = document.getElementById("upgradeCounter"), x0 = document.getElementById("allianceMenu"), w0 = document.getElementById("allianceHolder"), b0 = document.getElementById("allianceManager"), v0 = document.getElementById("mapDisplay"), k0 = document.getElementById("diedText"), A0 = document.getElementById("skinColorHolder"), I0 = v0.getContext("2d"); const S0 = document.getElementById("storeMenu"), E0 = document.getElementById("storeHolder"), T0 = document.getElementById("noticationDisplay"), C0 = xc.hats, B0 = xc.accessories; var C = new jl(Gl, kh, X, K); const D0 = "#525252", P0 = "#3d3f42", R0 = 5.5; K.DAY_INTERVAL / 24; K.DAY_INTERVAL / 2; window.addEventListener("wheel", function(e) { if (!m.q) return; if (e.deltaY > 0) { Oh *= 1.05; Lh *= 1.05 } else { Oh /= 1.05; Lh /= 1.05 } sm() }); function M0(e) { vh = e.teams } let N0 = !0; var O0 = !1; (!Y1 || W1) && (O0 = !0); window.onblur = function() { N0 = !1 }; window.onfocus = function() { N0 = !0, z && z.alive && Am() }; window.captchaCallbackHook = function() { O0 = !0 }; window.captchaCallbackComplete && window.captchaCallbackHook(); window.addEventListener("keydown", function(e) { e.keyCode == 32 && e.target == document.body && e.preventDefault() }); Xh.oncontextmenu = function() { return !1 }; ["touch-controls-left", "touch-controls-right", "touch-controls-fullscreen", "storeMenu"].forEach(e => { document.getElementById(e) && (document.getElementById(e).oncontextmenu = function(e) { e.preventDefault() }) }); function L0(e) { q1 = !1, T.close(), F0(e) } function F0(e, t) { Uh.style.display = "block", s0.style.display = "none", t0.style.display = "none", k0.style.display = "none", i0.style.display = "block", i0.innerHTML = e + (t ? "<a href='javascript:window.location.href=window.location.href' class='ytLink'>reload</a>" : "") } function _0() { Zh.hidden = false, i0.style.display = "none", Uh.style.display = "block", t0.style.display = "block", Op(), j0(), n2(), i0.style.display = "none", t0.style.display = "block"; let e = ch("moo_name") || ""; !e.length && FRVR.profile && (e = FRVR.profile.name(), e && (e += f(Math.random() * 90) + 9)), f0.value = e || "" } var V0; function U0(e) { var t; ((t = e == null ? void 0 : e.detail) == null ? void 0 : t.state) === "verified" && (V0 = e.detail.payload, document.getElementById("script-altcha").remove(), jh.classList.remove("disabled"), ! function() { document.getElementById("enterGame").innerText = "Enter Game"; }()) } window.addEventListener("load", () => { document.getElementById("altcha_checkbox").click(); document.getElementById("enterGame").innerText = "Generating Token"; const e = document.getElementById("script-altcha"); e == null || e.addEventListener("statechange", U0) }); function j0() { jh.onclick = X.checkTrusted(function() { jh.classList.contains("disabled") || F0("Connecting..."), nh() ? Um() : Z1() }), X.hookTouchEvents(jh), Hh && (Hh.onclick = X.checkTrusted(function() {}), X.hookTouchEvents(Hh)), Wh && (Wh.onclick = X.checkTrusted(function() { setTimeout(function() { ih() }, 10) }), X.hookTouchEvents(Wh)), Qh.onclick = X.checkTrusted(function() { Vp() }), X.hookTouchEvents(Qh), zh.onclick = X.checkTrusted(function() { lp() }), X.hookTouchEvents(zh), Gh.onclick = X.checkTrusted(function() { Cp() }), X.hookTouchEvents(Gh), Kh.onclick = X.checkTrusted(function() { Qp() }), X.hookTouchEvents(Kh), v0.onclick = X.checkTrusted(function(e) { console.log(e); const t = v0.getBoundingClientRect(); const n = e.clientX - t.left; const i = e.clientY - t.top; let s = 14400 / t.width; const o = n * s; const r = i * s; si?.updateChat(`goto ${o} ${r}`, z?.sid); si?.updateChat("path", z?.sid); Fm() }), X.hookTouchEvents(v0) } let H0; const W0 = { view: () => { if (!G1.servers) return; let t = 0; const e = Object.keys(G1.servers).map(a => { const l = G1.regionInfo[a].name; let c = 0; const e = G1.servers[a].map(e => { var t; c += e.playerCount; const n = e.selected; let i = l + " " + e.name + " [" + Math.min(e.playerCount, 50) + "/" + 50 + "]"; const s = e.name, o = n ? "selected" : ""; e.ping && ((t = e.pings) == null ? void 0 : t.length) >= 2 ? i += ` [${Math.floor(e.ping)}ms]` : n || (i += " [?]"); let r = { value: a + ":" + s }; return o && (H0 = a + ":" + s, r.selected = !0), qd("option", r, i) }); return t += c, [qd("option[disabled]", `${l} - ${c} players`), e, qd("option[disabled]")] }); return qd("select", { value: H0, onfocus: () => { window.blockRedraw = !0 }, onblur: () => { window.blockRedraw = !1 }, onchange: X0 }, [e, qd("option[disabled]", `All Servers - ${t} players`)]) } }; qd.mount(Jh, W0); var Q0, Y0; location.hostname == "sandbox.moomoo.io" ? (Q0 = "Back to MooMoo", Y0 = "//moomoo.io/") : (Q0 = "Try the sandbox", Y0 = "//sandbox.moomoo.io/"); document.getElementById("altServer").innerHTML = "<a href='" + Y0 + "'>" + Q0 + "<i class='material-icons' style='font-size:10px;vertical-align:middle'>arrow_forward_ios</i></a>"; const z0 = `${j1}/servers?v=1.26`, G0 = async () => fetch(z0).then(e => e.json()).then(async e => G1.processServers(e))["catch"](e => { console.error("Failed to load server data with status code:", e) }), K0 = () => G0().then(_0)["catch"](e => { console.error("Failed to load.") }); window.frvrSdkInitPromise.then(() => window.FRVR.bootstrapper.complete()).then(() => K0()); const X0 = e => { if (window.blockRedraw = !1, FRVR.channelCharacteristics.allowNavigation) { const [t, n] = e.target.value.split(":"); G1.switchServer(t, n) } else q1 && (q1 = !1, $1 = !1, eh = !0, Wm = !0, T.close()) }; document.getElementById("pre-content-container"); function J0() {} window.showPreAd = J0; function q0(t, e, n) { if (z && t) { if (X.removeAllChildren(h0), h0.classList.add("visible"), X.generateElement({ id: "itemInfoName", text: X.capitalizeFirst(t.name), parent: h0 }), X.generateElement({ id: "itemInfoDesc", text: t.desc, parent: h0 }), !n) if (e) X.generateElement({ "class": "itemInfoReq", text: t.type ? "secondary" : "primary", parent: h0 }); else { for (let e = 0; e < t.req.length; e += 2) X.generateElement({ "class": "itemInfoReq", html: t.req[e] + "<span class='itemInfoReqVal'> x" + t.req[e + 1] + "</span>", parent: h0 }); const i = _1 ? t.group.sandboxLimit || Math.max(t.group.limit * 3, 99) : t.group.limit; t.group.limit && X.generateElement({ "class": "itemInfoLmt", text: (z.itemCounts[t.group.id] || 0) + "/" + i, parent: h0 }) } } else h0.classList.remove("visible") } let $0 = [], Z0 = []; function ep(e, t) { $0.push({ sid: e, name: t }), b(`${t}[${e}] requested to join ${z.team}`, "", "blue", false, true); tp() } async function tp() { if ($0[0]) { var e = $0[0]; var t = Ei.includes(e.sid) ? "#53a7db" : "#FFFFFF"; X.removeAllChildren(T0); T0.style.display = "block"; if (!(Ei.includes(e.sid) && gy("auto accept bots")?.checked) && true === false) { var n = X.generateElement({ "class": "notificationText", parent: T0 }); n.textContent = e.name + ` [${e.sid}]`; n.style.color = t; X.generateElement({ "class": "notifButton", html: "<i class='material-icons' style='font-size:28px;color:#cc5151;'></i>", parent: T0, onclick: function() { up(0) }, hookTouch: !0 }), X.generateElement({ "class": "notifButton", html: "<i class='material-icons' style='font-size:28px;color:#8ecc51;'></i>", parent: T0, onclick: function() { up(1) }, hookTouch: !0 }) } } else T0.style.display = "none" } var np = 0; async function ip(t, e) { np === 0 && (np = v); await A4(); await A4(); if (v - np <= 5) return; for (let e = 0; e < $0.length; e++) { if ($0[e].sid === t) { T.send("P", t, 1); $0.splice(e, 1); break; return } } } function sp(e) { vh.push(e), x0.style.display == "block" && dp() } function op(e, t) { z && (z.team = e, z.isOwner = t, x0.style.display == "block" && dp()); if (e == undefined && t == undefined || e == null && t == false) { py = []; if (si?.goal?.pathing) { kh.forEach(e => { if (e.dmg && !te(e?.owner?.sid)) { e.pathScale = e.scale + 47 } if (e.name == "pit trap" && !te(e?.owner?.sid)) { e.pathScale = e.scale + 38 } }); ri?.setBuildings(kh) } } } function rp(e) { Z0 = e, x0.style.display == "block" && dp(); py = e; if (si?.goal?.pathing) { kh.forEach(e => { if (e.dmg && !te(e?.owner?.sid)) { e.pathScale = e.scale + 50 } if (e.name == "pit trap" && !te(e?.owner?.sid)) { e.pathScale = e.scale + 40 } }); ri?.setBuildings(kh) } } function ap(t) { np = 0; for (let e = vh.length - 1; e >= 0; e--) vh[e].sid == t && vh.splice(e, 1); x0.style.display == "block" && dp() } function lp() { Am(), x0.style.display != "block" ? dp() : cp() } function cp() { x0.style.display == "block" && (x0.style.display = "none") } function dp() { if (z && z.alive) { if (Jp(), S0.style.display = "none", x0.style.display = "block", X.removeAllChildren(w0), z.team) for (var e = 0; e < Z0.length; e += 2)(function(e) { const t = X.generateElement({ "class": "allianceItem", style: "color:" + (Z0[e] == z.sid ? "#fff" : Ei.includes(Z0[e]) ? "#53a7db" : "rgba(255,255,255,0.6)"), text: Z0[e + 1] + ` [${Z0[e]}]`, parent: w0 }); z.isOwner && Z0[e] != z.sid && X.generateElement({ "class": "joinAlBtn", text: "Kick", onclick: function() { fp(Z0[e]) }, hookTouch: !0, parent: t }) })(e); else if (vh.length) for (var e = 0; e < vh.length; ++e)(function(e) { const t = X.generateElement({ "class": "allianceItem", style: "color:" + (vh[e].sid == z.team ? "#fff" : "rgba(255,255,255,0.6)"), text: vh[e].sid, parent: w0 }); X.generateElement({ "class": "joinAlBtn", text: "Join", onclick: function() { hp(e) }, hookTouch: !0, parent: t }) })(e); else X.generateElement({ "class": "allianceItem", text: "No Tribes Yet", parent: w0 }); X.removeAllChildren(b0), z.team ? X.generateElement({ "class": "allianceButtonM", style: "width: 360px", text: z.isOwner ? "Delete Tribe" : "Leave Tribe", onclick: function() { mp() }, hookTouch: !0, parent: b0 }) : (X.generateElement({ tag: "input", type: "text", id: "allianceInput", maxLength: 7, placeholder: "unique name", onchange: e => { e.target.value = (e.target.value || "").slice(0, 7) }, onkeypress: e => { if (e.key === "Enter") return e.preventDefault(), pp(), !1 }, parent: b0 }), X.generateElement({ tag: "div", "class": "allianceButtonM", style: "width: 140px;", text: "Create", onclick: function() { pp() }, hookTouch: !0, parent: b0 })) } } function up(e) { np === 0 && (np = v); T.send("P", $0[0].sid, e), $0.splice(0, 1); tp() } function fp(e) { T.send("Q", e) } function hp(e) { T.send("b", vh[e].sid) } function pp(e = document.getElementById("allianceInput").value) { np = 0; T.send("L", e == "" ? String.fromCharCode(0) : e) } function mp() { np = 0; $0 = [], tp(), T.send("N") } let gp, yp, xp; const wp = []; let bp; function vp() { 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 >= K.mapPingScale ? this.active = !1 : (e.globalAlpha = 1 - oe(0, this.scale / K.mapPingScale), e.beginPath(), e.arc(this.x / K.mapScale * v0.width, this.y / K.mapScale * v0.width, this.scale, 0, ae), e.stroke())) } } function kp(e, t) { for (let e = 0; e < wp.length; ++e) if (!wp[e].active) { bp = wp[e]; break } bp || (bp = new vp, wp.push(bp)), bp.init(e, t) } function Ap() { xp || (xp = {}), xp.x = z.x, xp.y = z.y } function Ip(e) { yp = e } function Sp(e) { if (z && z.alive) { I0.clearRect(0, 0, v0.width, v0.height), I0.strokeStyle = "#fff", I0.lineWidth = 4; if (Yt.length && Tt) { Yt.forEach(t => { let n = $n.find(e => e.name == t.name)?.url; if (n) { I0.globalAlpha = 1; let e = new Image; e.src = n; I0.drawImage(e, t.x / K.mapScale * v0.width - 32 / 2, t.y / K.mapScale * v0.height - 32 / 2, 32, 32) } }) } I0.strokeStyle = "#fff", I0.lineWidth = 1; for (var t = 0; t < wp.length; ++t) bp = wp[t], bp.update(I0, e); if (I0.globalAlpha = 1, I0.fillStyle = "#fff", k(z.x / K.mapScale * v0.width, z.y / K.mapScale * v0.height, 7, I0, !0), z.team && yp) for (var t = 0; t < yp.length;) { I0.fillStyle = "rgba(255,255,255,0.35)"; k(yp[t] / K.mapScale * v0.width, yp[t + 1] / K.mapScale * v0.height, 7, I0, !0), t += 2; gp && (I0.fillStyle = "#fc5553", I0.font = "34px Lilita One", I0.textBaseline = "middle", I0.textAlign = "center", I0.fillText("x", gp.x / K.mapScale * v0.width, gp.y / K.mapScale * v0.height)), xp && (I0.fillStyle = "#fff", I0.font = "34px Lilita One", I0.textBaseline = "middle", I0.textAlign = "center", I0.fillText("x", xp.x / K.mapScale * v0.width, xp.y / K.mapScale * v0.height)) } si?.drawWaypointMap(I0, v0); ie.forEach(e => { if (e.enemies.length) { e.enemies.forEach(e => { I0.fillStyle = "red"; I0.globalAlpha = 1; k(e.x / K.mapScale * v0.width, e.y / K.mapScale * v0.height, 5, I0, !0) }) } }); if (Gn && zn.length) { for (let e = 0; e < zn.length; e++) { I0.globalAlpha = 1; I0.fillStyle = "#000000"; k(zn[e].x2 / K.mapScale * v0.width, zn[e].y2 / K.mapScale * v0.height, 8, I0, !0) } } if (G["do"] && ie.length && ie[G.val]?.HERE) { I0.globalAlpha = 1; I0.fillStyle = "#000000"; k(ie[G.val].x2 / K.mapScale * v0.width, ie[G.val].y2 / K.mapScale * v0.height, 8, I0, !0) } ht.forEach((t, e, n) => { let i = t?.sid ? Hg(t.sid) : t?.name ? J.find(e => e.name === t.name) : false; if (i?.visible) { i.color = t.color; i.spotted = true; n[e] = i } let s = wy(t); if (s) { s.color = t.color; let e = i && i.visible ? i : s; I0.fillStyle = e.color; I0.globalAlpha = 1; k(e.x / K.mapScale * v0.width, e.y / K.mapScale * v0.height, 9, I0, true) } else { t.spotted = false } }) } } let Ep = 0; function Tp(e) { Ep != e && (Ep = e, Pp()) } function Cp() { S0.style.display != "block" ? (S0.style.display = "block", x0.style.display = "none", Jp(), Pp()) : Bp() } function Bp() { S0.style.display == "block" && (S0.style.display = "none", q0()) } function Dp(e, t, n) { n ? e ? (z.tailIndex = t, Zt = t) : z.tails[t] = 1 : e ? (z.skinIndex = t, $t = t) : z.skins[t] = 1; S0.style.display == "block" && Pp(); if (e == 0 && t != 0) { if (n == 0) Nn.push(t); if (n == 1) On.push(t); if (Fn.length && (n == 0 || n == 1)) { for (let e = 0; e < Fn.length; e++) { if (n == 0 && !Array.isArray(Fn[e]) && Fn[e] == t) { Fn.splice(e, 1) } if (n == 1 && Array.isArray(Fn[e]) && Fn[e][0] == t) { Fn.splice(e, 1) } } if ([40, 12, 22, 6, 7, 56, 53, 15, 31].includes(t) && !Gt.includes(t) && n == 0) Gt.push(t); if ([11, 19].includes(t) && !Kt.includes(t) && n == 1) Kt.push(t) } } } function Pp() { if (z) { X.removeAllChildren(E0); const r = Ep, a = r ? B0 : C0; for (let e = 0; e < a.length; ++e) a[e].dontSell || function(e) { const t = X.generateElement({ id: "storeDisplay" + e, "class": "storeItem", onmouseout: q0(), onmouseover: () => q0(a[e], !1, !0), parent: E0 }); X.hookTouchEvents(t, !0); const n = "./img/" + (r ? "accessories/access_" : "hats/hat_") + a[e].id + (a[e].topSprite ? "_p" : "") + ".png"; const i = X.generateElement({ tag: "img", "class": "hatPreview smallImage", src: n, parent: t }); const s = X.generateElement({ tag: "span", style: "font-size: 85%; vertical-align: middle; line-height: 1.2;", text: `[${a[e].id}] ${a[e].name}`, parent: t }); if (r ? !z.tails[a[e].id] : !z.skins[a[e].id]) { X.generateElement({ "class": "joinAlBtn", style: "margin-top: 5px; font-size: 85%; vertical-align: middle; line-height: 1.51;", text: "Buy", onclick: () => Mp(a[e].id, r), hookTouch: !0, parent: t }); X.generateElement({ tag: "span", "class": "itemPrice", style: "font-size: 85%; vertical-align: middle; line-height: 1.51;", text: a[e].price / 1e3 >= 1 ? a[e].price / 1e3 + "k" : a[e].price, parent: t }) } else { const o = (r ? z.tailIndex : z.skinIndex) == a[e].id ? "Unequip" : "Equip"; X.generateElement({ "class": "joinAlBtn", style: "margin-top: 5px; font-size: 85%; vertical-align: middle; line-height: 1.51;", text: o, onclick: () => o == "Unequip" ? Rp(0, r) : Rp(a[e].id, r), hookTouch: !0, parent: t }) } }(e) } } function Rp(e, t) { T.send("c", 0, e, t) } function Mp(e, t) { T.send("c", 1, e, t) } function Np() { S0.style.display = "none", x0.style.display = "none", Jp() } function Op() { const e = ch("native_resolution"); Fp(e ? e == "true" : typeof cordova < "u"), hh = "true"; Zh.hidden = false; ch("moo_moosic"), setInterval(function() { window.cordova && (document.getElementById("downloadButtonContainer").classList.add("cordova"), document.getElementById("mobileDownloadButtonContainer").classList.add("cordova")) }, 1e3), Up(), X.removeAllChildren(o0); for (var t = 0; t < x.weapons.length + x.list.length; ++t)(function(e) { X.generateElement({ id: "actionBarItem" + e, "class": "actionBarItem", style: "display:none", onmouseout: function() { q0() }, parent: o0 }) })(t); for (var t = 0; t < x.list.length + x.weapons.length; ++t)(function(n) { const i = document.createElement("canvas"); i.width = i.height = 66; const s = i.getContext("2d"); if (s.translate(i.width / 2, i.height / 2), s.imageSmoothingEnabled = !1, s.webkitImageSmoothingEnabled = !1, s.mozImageSmoothingEnabled = !1, x.weapons[n]) { s.rotate(Math.PI / 4 + Math.PI); var e = new Image; N2[x.weapons[n].src] = e, e.onload = function() { this.isLoaded = !0; const e = 1 / (this.height / this.width), t = x.weapons[n].iPad || 1; s.drawImage(this, -(i.width * t * K.iconPad * e) / 2, -(i.height * t * K.iconPad) / 2, i.width * t * e * K.iconPad, i.height * t * K.iconPad), s.fillStyle = "rgba(0, 0, 70, 0.1)", s.globalCompositeOperation = "source-atop", s.fillRect(-i.width / 2, -i.height / 2, i.width, i.height), document.getElementById("actionBarItem" + n).style.backgroundImage = "url(" + i.toDataURL() + ")" }, e.src = "./img/weapons/" + x.weapons[n].src + ".png"; var t = document.getElementById("actionBarItem" + n); t.onmouseover = X.checkTrusted(function() { q0(x.weapons[n], !0) }), t.onclick = X.checkTrusted(function() { Vm(n, !0) }), X.hookTouchEvents(t) } else { var e = j2(x.list[n - x.weapons.length], !0, true); const o = Math.min(i.width - K.iconPadding, e.width); s.globalAlpha = 1, s.drawImage(e, -o / 2, -o / 2, o, o), s.fillStyle = "rgba(0, 0, 70, 0.1)", s.globalCompositeOperation = "source-atop", s.fillRect(-o / 2, -o / 2, o, o), document.getElementById("actionBarItem" + n).style.backgroundImage = "url(" + i.toDataURL() + ")"; var t = document.getElementById("actionBarItem" + n); t.onmouseover = X.checkTrusted(function() { q0(x.list[n - x.weapons.length]) }), t.onclick = X.checkTrusted(function() { Vm(n - x.weapons.length) }), X.hookTouchEvents(t) } })(t); f0.onchange = e => { e.target.value = (e.target.value || "").slice(0, 15) }, f0.onkeypress = e => { if (e.key === "Enter") return e.preventDefault(), jh.onclick(e), !1 }, qh.checked = fh, qh.onchange = X.checkTrusted(function(e) { Fp(e.target.checked) }), $h.checked = true; $h.onchange = X.checkTrusted(function(e) { hh = "true"; Zh.hidden = true }) } function Lp(e, t) { e && (t ? z.weapons = e : z.items = e); for (var n = 0; n < x.list.length; ++n) { const i = x.weapons.length + n; document.getElementById("actionBarItem" + i).style.display = z.items.indexOf(x.list[n].id) >= 0 ? "inline-block" : "none" } for (var n = 0; n < x.weapons.length; ++n) document.getElementById("actionBarItem" + n).style.display = z.weapons[x.weapons[n].type] == x.weapons[n].id ? "inline-block" : "none" } function Fp(e) { fh = e, ph = e && window.devicePixelRatio || 2, qh.checked = e, lh("native_resolution", e.toString()), sm() } function _p() { am ? n0.classList.add("touch") : n0.classList.remove("touch") } function Vp() { n0.classList.contains("showing") ? (n0.classList.remove("showing"), Yh.innerText = "Settings") : (n0.classList.add("showing"), Yh.innerText = "Close") } function Up() { let t = ""; for (let e = 0; e < K.skinColors.length; ++e) e == Nh ? t += "<div class='skinColorItem activeSkin' style='background-color:" + K.skinColors[e] + "' onclick='selectSkinColor(" + e + ")'></div>" : t += "<div class='skinColorItem' style='background-color:" + K.skinColors[e] + "' onclick='selectSkinColor(" + e + ")'></div>"; A0.innerHTML = t } function jp(e) { Nh = e, Up() } const Hp = document.getElementById("chatBox"), Wp = document.getElementById("chatHolder"); function Qp() { if (document.activeElement === we) return; am ? Xp(prompt("chat message")) : Wp.style.display == "block" ? (Hp.value && Xp(Hp.value), Jp()) : (S0.style.display = "none", x0.style.display = "none", Wp.style.display = "block", Hp.focus(), Am()), Hp.value = "" } function Yp(i, s, o, e = 1, t) { if (Ci.length + e >= 1500) { b(`Error amount exceeds player render capacity rate`, "", "#5c0620", false, true); return false } let r = i; i = Ci.find(e => e.purpose == "formation" && e.sid == i); console.log(Ci); if (!i) { b(`Error ID: ${r} not found`, "", "#5c0620", false, true); return false } for (let n = 0; n < e; n++) { let e = P3(i.x2, i.y2, Z(s) - Z(90), o * (n + 1)); let t = { ...z }; t.sid = Vi.length + 1; Vi.push({ origin: r, distance: o * (n + 1), angle: s }); x3(y3(t, e.x, e.y, 0, 0, 0), "formation") } } function zp() { b(`Pathfinder commands ↓`, "", "#5c0620", false, true); b(`"setPF (search radius) (resolution)" to adjust Pathfinder`, "", "#5c0620", false, true); b(`</ * path`, "", "#5c0620", false, true); b(`* stop`, "", "#5c0620", false, true); b(`* goal`, "", "#5c0620", false, true); b(`* <goal/goto> x [Number: x position]`, "", "#5c0620", false, true); b(`* <goal/goto> y [Number: y position]`, "", "#5c0620", false, true); b(`* <goal/goto> [x: Number] [y: Number]`, "", "#5c0620", false, true); b(`* waypoint set [name: String]`, "", "#5c0620", false, true); b(`* waypoint del [name: String]`, "", "#5c0620", false, true); b(`* waypoint goto [name: String]`, "", "#5c0620", false, true); b(`* follow player <[ID/Name: Any]/all(default)>`, "", "#5c0620", false, true); b(`* follow animal <[ID/Name: Any]/all(default)>`, "", "#5c0620", false, true); b(`* wander />`, "", "#5c0620", false, true); b(`---------------------------------------------------`, "", "#5c0620", false, true); b(`Bot commands ↓`, "", "#5c0620", false, true); b(`dc bots "!dc (any | all | botID) if using "any" → (number of bots)"`, "", "#5c0620", false, true); b(`"!clear (radius) (all | team | clan | enemy | enemies) (all)"`, "", "#5c0620", false, true); b(`"!summon" to summon bots "!summon false" to wander`, "", "#5c0620", false, true); b(`scout bot (best when bots set to wander) → "!find (sid or -(name))"`, "", "#5c0620", false, true); b(`bots attack → "!attack (sid | don't fill for nearest enemy) " (coming soon)`, "", "#5c0620", false, true); b(`q = proj sync with bots`, "", "#5c0620", false, true); b(`!q instachat (chatInput) [sets q sync chat]`, "", "#5c0620", false, true); b(`!target (id) [sets target for q sync insta] | !target [none] | resets target to nearest enemy (default)`, "", "#5c0620", false, true); b(`spawn bots press 'y'`, "", "#5c0620", false, true); b(`!watch (botID) to spectate bot`, "", "#5c0620", false, true); b(`!play (botID) to play as bot`, "", "#5c0620", false, true); b(`v = spike macro f = trap macro n = triple mills`, "", "#5c0620", false, true); b(`zoom = hold q and use mouse wheel`, "", "#5c0620", false, true); b(`p = reset camera zoom`, "", "#5c0620", false, true) } function Gp(t = 400) { let n = ""; for (let e = 0; e < t; e++) { n += t } return n } function Kp(e) { if (e === "debug") { console.log("debugged"); p = false; hn = false; $t = null; Zt = null; return true } } document.addEventListener("keydown", function(e) { if (e.key === "m") { Kp("debug") } }); function Xp(n, e) { let t = function(e) { return n.toLowerCase().startsWith("!" + e.toLowerCase()) }; const s = n.split(" "); if (t("radius")) { const r = parseFloat(s[1]); if (!isNaN(r)) { s3 = r; b(`move circle radius set at ${r}`, "", Hy(), false, true); return true } } else if (t("speed")) { const r = parseFloat(s[1]); if (!isNaN(r)) { i3 = r; b(`move circle speed set at ${r}`, "", Hy(), false, true); return true } } if (t("botCount") || t("bc")) { b(`bot count is ${ie.length}`, "", Hy(), false, true); return true } if (t("kys")) { const r = parseFloat(s[1]); if (s[1] == ".all") { ie.forEach(e => { e.kys = !e.kys }); return true } else if (!isNaN(r)) { let t = s[1].split(",").map(e => parseFloat(e.trim())); ie.forEach(e => { t.includes(e.sid) && (e.kys = !e.kys) }); return true } } if (t("chat")) { const r = parseFloat(s[1]); if (!isNaN(r)) { for (let e = 0; e < r; e++) { xe.removeChild(xe.children[0]) } return } } if (t("botMsg")) { if (s[1] == "?player") { let e = parseFloat(s[2]); if (isNaN(e)) { b(`${e} is NaN`, "", "red", false, true); return true } let t = Hg(e); if (!t) { b(`player [${e}] is NaN`, "", "red", false, true); return true } else { Rs.value = t.chatMessage; b(`botMsg copied chat ${t.name}[${t.sid}] "${s[1]}"`, "", "red", false, true); return true } } Rs.value = s[1]; b(`botMsg is ${s[1]}`, "", "red", false, true); return true } if (t("logmsgs")) { Pi = !Pi; b(`logging messages is ${Pi}`, "", "red", false, true); return true } if (t("hitlist")) { let i = false; for (let n = 0; n < ht.length; n++) { let t = ht[n]; if (t.name || t.sid) { i = true; let e = t?.sid && t?.name ? `${t.name}[${t.sid}]` : t.name ? `${t.name}` : `${t.sid}`; b(`${n+1}. ${e}`, "", t.color, false, true) } } if (i) return true } if (t("start")) { e5() } if (t("botdist")) { let e = parseFloat(s[1]); if (!isNaN(e)) { ki = e; b(`bot distance set to ${e}`, "", Hy(), false, true); return true } } if (t("origin")) { Ci = Ci.filter(e => e?.purpose != "formation"); Vi = []; _i.x = z.x2; _i.y = z.y2; let e = { ...z }; e.sid = 1; Vi.push(e); x3(y3(e, z.x2, z.y2, 0, 0, 0), "formation"); return true } if (t("changeBot")) { if (s.length !== 4) { b("Error: 3 parameters required (ID/all, property, value)", "", "red", false, true); return true } console.log(s); let t = s[1] === "all" ? "all" : parseFloat(s[1]); let n = isNaN(parseFloat(s[3])) ? s[3] === "true" || s[3] === "false" ? E(s[3]) : s[3] : parseFloat(s[3]); if (isNaN(t) && t !== "all") { return b("Error: 1st parameter invalid (all / ID)", "", "red", false, true) } if (s[2] === "dir" || s[2] === "d2" || s[2] === "d1") n = Z(n) - Z(90); Ci.forEach(e => { if (e.purpose === "formation" && (t === "all" || e.sid === t)) { e[s[2]] = n; b(`Fake ID: [${e.sid}] changed ${s[2]} to ${n}`, "", "red", false, true) } }); return true } if (t("createFrom")) { if (!_i.x && !_i.y) { b("Error create an origin point first", "", "red", false, true) } let e = [parseFloat(s[1]), parseFloat(s[2]), parseFloat(s[3]), parseFloat(s[4])]; for (let t = 0; t < 4; t++) { if (isNaN(e[t])) { let e; switch (t) { case 0: e = "Error first parameter (creation point) is NaN"; break; case 1: e = "Error second parameter (angle - degrees) is NaN"; break; case 2: e = "Error third parameter (distance) is NaN"; break } b(e, "", "red", false, true); return true } } Yp(e[0], e[1], e[2], e[3] || 1); return true } if (t("savePos") && _i.x) {} if (t("delay")) { let e = parseFloat(s[1]); if (!isNaN(e)) { Mi = e; b(`preplace delay set to ${e}`, "", Hy(), false, true); return true } } if (t("pdelay")) { let e = parseFloat(s[1]); if (!isNaN(e)) { Bi = e * 111; b(`preplace in advance delay set to ${e*111}`, "", Hy(), false, true); return true } } if (t("kick")) { let n = parseFloat(s[1]); if (!isNaN(n) && te(n)) { fp(n); let e = Hg(n); let t = e ? `kicked player: ${e.name}[${e.sid}]` : `kicked ID: [${n}]`; b(t, "", Hy(), false, true); return true } else { let e = isNaN(n) ? `Syntax Error: input value is not a number => !kick (teammate SID)` : `ID: ${n} is not in the clan`; b(e, "", Hy(), false, true); return true } } if (t("repeater crossbow") && ie.length) { let n = parseFloat(s[1]); if (!isNaN(n)) { let e = ie.find(e => e.sid == n); if (!e) { b(`cannot set properties of bot undefined`, "", "red", false, true); return; } e.getCrossBow = !e.getCrossBow; b(`${e.name}[${n}] crossbow set to ${e.getCrossBow}`, "", Hy(), false, true); return true; } if (s[1] === "all") { let t = s[2] === "true" || s[2] === "false" ? E(s[2]) : !isNaN(parseFloat(s[2])) ? parseFloat(s[2]) : null; ie.forEach(e => { e.getCrossBow = t !== null ? t : !e.getCrossBow; b(`${e.name}[${n}] crossbow set to ${e.getCrossBow}`, "", Hy(), false, true); }); return true; } b(`error in setting bot loadout`, "", "red", false, true); } if (t("apd")) { let e = parseFloat(s[1]); if (!isNaN(e)) { yi = e; b(`autoplace distance set to ${e}`, "", Hy(), false, true); return true } } if (t("botinfo")) { let t = parseFloat(s[1]); let e = ie.find(e => e.sid == t); if (!e) { b(`bot ID: ${t} not found`, "red", false, true); return true } if (!isNaN(t)) { console.log(e); return true } } if (t("watch") && ie.length) { let t = parseFloat(s[1]); let n = ie.find(e => e.sid == t); if (n) { let e = ie.findIndex(e => e.sid === n.sid); G = { "do": true, val: e, play: false }; b(`watching Bot ID: ${t}`, "", Hy(), false, true); return } else { b(`Bot ID: ${s[1]} not found`, "", Hy(), false, true) } } if (n === "!play" && G["do"]) { G.play = true; b(`playing as Bot: ${ts?.bot?.name}[${ts.bot?.sid}]`, "", Hy(), false, true); return } else if (t("play") && ie.length) { let i = [parseFloat(s[1]), parseFloat(s[2])]; if (!isNaN(i[0])) { let e = ie.findIndex(e => e.sid === i[0]); let t = ie.find(e => e.sid === i[0]); if (!t) { b(`Bot ID: ${s[1]} not found`, "", Hy(), false, true); return } G = { "do": true, val: e, play: true }; let n = t.findPlayer(t.sid); b(`playing as Bot: ${n.name}[${n.sid}]`, "", Hy(), false, true); return } else { b(`Bot ID: ${s[1]} not found`, "", Hy(), false, true); return } } if (t("target")) { let e = parseFloat(s[1]); xi.ID = e; let t = isNaN(e) ? "target ID has been reset" : `projectile sync target set to ID: ${e}`; b(t, "", Hy(), false, true); return true } if (t("instachat")) { let e = s.slice(1).join(" "); bi = e; b(`Q sync insta chat set to ${e}`, "", Hy(), false, true); return true } if (t("botName")) { let e = s.slice(1).join(" "); _e = e; b(`bot name set to ${e}`, "", Hy(), false, true); return true } if (t("skip")) { if (qx !== null) { qx.pause(); qx = null; return true } } if (t("syncChat")) { let e = s.slice(1).join(" "); vi = e; b(`syncChat name set to ${e}`, "", Hy(), false, true); return true } if (t("sDist")) { let e = parseFloat(s[1]); if (!isNaN(e)) { li = e; b(`soldier distance set to ${e}`, "", Hy(), false, true); return true } } if (s[1] === ".clan") {} if (t("accept")) { let n = parseFloat(s[1]); T.send("P", n, 1); for (let t = 0; t < $0.length; t++) { let e = $0[t]; if (e.sid === n) { b(`accepted request ${e.name}[${e.sid}]`, "", "#32CD32"); $0.slice(t, 1) } } return true } if (t("decline")) { let n = parseFloat(s[1]); T.send("P", n, 0); for (let t = 0; t < $0.length; t++) { let e = $0[t]; if (e.sid === n) { b(`declined request ${e.name}[${e.sid}]`, "", "#FF7F7F"); $0.slice(t, 1) } } return true } if (t("kick")) { let n = parseFloat(s[1]); fp(n); for (let t = 0; t < py.length; t++) { let e = py[t]; if (e.sid === n) { b(`kicked request ${e.name}[${e.sid}]`, "", "#FF7F7F"); $0.slice(t, 1) } } return true } if (t("autodecline")) { let e = parseFloat(s[1]); if (!isNaN(e)) An.push(e) } if (t("clanreq")) { for (let t = 0; t < $0.length; t++) { let e = $0[t]; if (t === 0) b(`clan requests`, "", "blue", false, true); b(`${t}. ${e.name}[${e.sid}]`, "", "blue", false, true) } return true } if (t("clanreset")) { for (let e = 0; e < $0.length; e++) { T.send("P", $0[e].sid, 0) } return true } if (t("search")) { let e = parseFloat(s[1]); let n = Hg(e); if (n) { let t = [`Deaths: ${n.deaths}`, n.noAnti ? `Leaks shame at: ${n.noAnti}` : `Could not find information about shame from heal tracking`]; b(`Information found for ${n.name} [${n.sid}]`, "", "#f2e9d3", false, true); for (let e = 0; e < t.length; e++) { b(`${t[e]}`, "", "#f2e9d3", false, true) } } else { b(`Could not find player.`, "", "#f2e9d3", false, true) } return true } if (t("lookup")) { if (vh.length) { b(`Clans found: ${vh.length}`, "", "#baab99", false, true); for (var i = 0; i < vh.length; ++i) { let e = Hg(vh[i].owner); if (e) { b(`Clan ${vh[i].sid} ${e.name} [${vh[i].owner}]`, "", "#f2e9d3", false, true) } else { b(`Clan: ${vh[i].sid} [${vh[i].owner}]`, "", "#f2e9d3", false, true) } } } else { b(`No clans found.`, "", "#FF7F7F", false, true) } return true } if (t("ping")) { if (Hn && en) { Ki.send(le({ msg: "pinger", player: z, sender: z?.sid, doing: false, time: Date.now(), server: location.href })); Gn = 1e4; zn = [] } return true } if (t("XP")) { b(`Primary: ${z.weaponXP[z.weapons[0]]}, Secondary: ${z.weaponXP[z.weapons[1]]}`, "", "#baab99", false, true); return true } if (t("mute")) { const r = [parseFloat(s[1]), parseFloat(s[2]), parseFloat(s[3])]; if (!isNaN(r[0])) { Ii.push(r[0]); let e = Hg(r[0]); let t = e ? `${e.name}[${e.sid}]` : `ID: ${r[0]}`; b(`muted ${t}`, "", "red", false, true); return true } if (s[1] === ".clanval" && r[1]) { let t = Hg(r[1]); if (t && typeof t.team === "string") { J.forEach(e => { if (e.team === t.team) { Ii.push(e.sid); b(`muted ${e.name}[${e.sid}] in clan ${t.team}`, "", "red", false, true) } }); return true } } b(`failed to mute parameter issue`, "", "red", false, true) } if (t("unmute")) { const r = [parseFloat(s[1]), parseFloat(s[2]), parseFloat(s[3])]; if (!isNaN(r[0]) && Ii.includes(r[0])) { Ii = Ii.filter(e => e != r[0]); let e = Hg(r[0]); let t = e ? `${e.name}[${e.sid}]` : `ID: ${r[0]}`; b(`unmuted ${t}`, "", "green", false, true); return true } if (s[1] === ".clanval" && r[1]) { let n = Hg(r[1]); if (n && typeof n.team === "string") { for (let t = 0; t < Ii.length; t++) { J.forEach(e => { if (e.team === n.team && Ii[t] === e.sid) { Ii.splice(t, 1); b(`unmuted ${e.name}[${e.sid}] in clan ${n.team}`, "", "green", false, true) } }) } return true } } b(`failed to unmute parameter issue`, "", "green", false, true) } if (t("find")) { var o; const r = [parseFloat(s[1]), parseFloat(s[2]), parseFloat(s[3])]; if (s[1] === ".del") { let t; if (s[2] == "all") { ht = []; b(`hit list cleared`, "", Hy(), false, true); return true } if (!isNaN(r[1])) { t = ht.find(e => e.sid == r[1]); ht = ht.filter(e => e.sid != r[1]); let e = t ? `${t.name}[${t.sid}]` : `${t.name}`; b(`${e} has been removed from hit list`, "", t.color, false, true); return true } } if (!isNaN(r[0])) { o = Hg(r[0]); if (o) { if (!o.color) o.color = Hy(ht); o.spotted = o.visible ? true : false; ht.push(o); b(`${o?.name}[${o.sid}] was added to the hit list`, "", o.color, false, true); return true } else { o = {}; o.sid = r[0]; if (!o.color) o.color = Hy(ht); o.spotted = false; ht.push(o); b(`ID: ${o.sid} was added to the hit list`, "", o.color, false, true); return true } } if (isNaN(r[0]) && typeof s[1] === "string") { let t = n.split("."); o = J.find(e => e.name == t[1]); if (o) { if (!o.color) o.color = Hy(ht); ht.push(o); o.spotted = o.visible ? true : false; b(`${o.name}[${o.sid}] was added to the hit list`, "", o.color, false, true); return true } else { o = {}; o.name = t[1]; if (!o.color) o.color = Hy(ht); o.spotted = false; ht.push(o); b(`${o.name} was added to the hit list`, "", o.color, false, true); return true } } } if (n.startsWith("setPF")) { if (!isNaN(s[1]) || !isNaN(s[2])) { ri.size = parseInt(s[1]); ri.res = parseInt(s[2]); ri.initiateCanvas(); si.pathfinder.size = parseInt(s[1]); si.pathfinder.res = parseInt(s[2]); si.pathfinder.initiateCanvas(); if (si.goal.pathing) { si?.updateChat("stop", z?.sid); si?.updateChat("path", z?.sid); b(`Change Pathfinder | radius: ${s[1]} resolution: ${s[2]} `, "", Hy()) } return true } } si?.updateChat(n.slice(0, 30), z?.sid); if (t("commands") || t("help")) { zp(); return true } if (t("teamID")) { vt = parseFloat(s[1]); b(`sync ID set to ${vt}`, "", Hy(), false, true); return true } if (t("bMin")) { ci = parseFloat(s[1]); b(`bMin is ${ci}`, "", Hy(), false, true); return true } if (t("bMax")) { di = parseFloat(s[1]); b(`max one tick distance: ${di}`, "", Hy(), false, true); return true } if (t("set")) { fi = parseFloat(s[1]); hi = s[2]; gi = s[3]; if (Vt) { setTimeout(() => { Xp(`!clear ${fi} ${hi} ${gi}`) }, 500) } return true } if (t("summon")) { ai = "Summon"; return true } if (t("wander")) { ai = "Wander"; return true } if (t("Static")) { ai = "Static"; return true } if (t("dc")) { const r = [parseFloat(s[1]), parseFloat(s[2])]; if (s[1] == "any") { if (!isNaN(r[1])) { ie.slice(-r[1]).forEach(e => { e.close() }); return true } } if (s[1] == "all") { ie.forEach(e => e.close()); return true } if (!isNaN(r[0])) { ie.forEach(e => e.sid == r[0] && e.close()); return true } } if (t("clear")) { const r = parseFloat(s[1]); if (!isNaN(r)) { if (!ts?.bot) { Ft = { x: z.x2, y: z.y2, scale: r }; let n = s[2]; !n ? n = x.sid : !isNaN(parseFloat(n)) ? n = parseFloat(n) : n = n; s[3] = s[3] + (s[4] !== undefined && s[4] !== null && typeof s[4] !== "number" ? s[4] : ""); let i = s[3]; Ut = { x: z.x2, y: z.y2, types: i, IDS: n, value: r, r: false }; Vt = kh.filter(e => { const t = se(z, e); if (e.name == "pit trap") { e.opacity = 1 } else e.opacity = 1; if (t <= r && (i != "all" && (e.group?.name === "spikes" || e.name === "pit trap" || e?.name == "turret" && Zs.checked || e?.name == "teleporter" && Zs.checked) || i == "all" || e?.name == i || e?.group?.name == i) && (e.type === null || e.type === undefined)) { if ((n == "team" || n == "clan" || n == "tribe") && te(e?.owner?.sid)) return true; if ((n == "enemy" || n == "enemies" || n == "hostile" || n == "nEnemy") && !te(e?.owner?.sid)) return true; if (typeof n === "number" && e?.owner?.sid === n) { return true } if (n == "all" || n == "every" || n == "everything") return true; if (!n && e?.owner?.sid === x.sid) return true } return false }) } else { Ft = { x: ts?.bot.x, y: ts?.bot.y, scale: r }; let n = s[2]; !n ? n = x.sid : !isNaN(parseFloat(n)) ? n = parseFloat(n) : n = n; s[3] = s[3] + (s[4] !== undefined && s[4] !== null && typeof s[4] !== "number" ? s[4] : ""); let i = s[3]; Ut = { x: ts?.bot.x, y: ts?.bot.y, types: i, IDS: n, value: r, r: false }; Vt = ts.builds.filter(e => { const t = se(ts.bot, e); if (e.name == "pit trap") { e.opacity = 1 } else e.opacity = 1; if (t <= r && (i != "all" && (e.group?.name === "spikes" || e.name === "pit trap" || e?.name == "turret" && Zs.checked || e?.name == "teleporter" && Zs.checked) || i == "all" || e?.name == i || e?.group?.name == i) && (e.type === null || e.type === undefined)) { if ((n == "team" || n == "clan" || n == "tribe") && te(e?.owner?.sid)) return true; if ((n == "enemy" || n == "enemies" || n == "hostile" || n == "nEnemy") && !te(e?.owner?.sid)) return true; if (typeof n === "number" && e?.owner?.sid === n) { return true } if (n == "all" || n == "every" || n == "everything") return true; if (!n && e?.owner?.sid === x.sid) return true } return false }) } return true } } if (t("rclear")) { const r = parseFloat(s[1]); if (!isNaN(r)) { Ft = { x: z.x2, y: z.y2, scale: r }; let n = s[2]; !n ? n = x.sid : !isNaN(parseFloat(n)) ? n = parseFloat(n) : n = n; s[3] = s[3] + (s[4] !== undefined && s[4] !== null && typeof s[4] !== "number" ? s[4] : ""); let i = s[3]; Ut = { x: z.x2, y: z.y2, types: i, IDS: n, value: r, r: true }; Vt = kh.filter(e => { const t = se(z, e); if (e.name == "pit trap") { e.opacity = 1 } else e.opacity = 1; if (t >= r && (i != "all" && (e.group?.name === "spikes" || e.name === "pit trap" || e?.name == "turret" && Zs.checked || e?.name == "teleporter" && Zs.checked) || i == "all" || e?.name == i || e?.group?.name == i) && (e.type === null || e.type === undefined)) { if ((n == "team" || n == "clan" || n == "tribe") && te(e?.owner?.sid)) return true; if ((n == "enemy" || n == "enemies" || n == "hostile" || n == "nEnemy") && !te(e?.owner?.sid)) return true; if (typeof n === "number" && e?.owner?.sid === n) { return true } if (n == "all" || n == "every" || n == "everything") return true; if (!n && e?.owner?.sid === x.sid) return true } return false }); return true } } if (G["do"] && ie.length) { ie[G.val].emit("6", n.slice(0, 30)); return } if ($p) { !e && T.send("6", n.slice(0, 30), false) } else if (qp) { Ki.send(le({ message: n.slice(0, 30), id: z.sid, time: 3e3 })) } } function Jp() { Hp.value = "", Wp.style.display = "none" } let qp = false; let $p = true; function Zp(e, n) { const t = Hg(e); if (Pi) console.log(`${t.name}[${t.sid}] ${n}`); if ((!Ei.includes(e) || ts?.bot?.sid === e) && !Ii.includes(t.sid)) b(`${t.name}[${t.sid}]: `, n, z.sid == e || ts?.bot?.sid === e ? "#0aa8fc" : "#FFFFFF"); if ((e == z.sid || ts?.bot?.sid === e) && Hn && document.getElementById("send ws")?.checked) { Ki.send(le({ message: n, id: z.sid === e ? z.sid : ts?.bot?.sid, time: 3e3 })) } if (e == z.sid && n == "spectate none" && Hn && en) { es.isDoing = false; b(`You have stopped spectating`, "", "#2b0640", false, true); Ki.send(le({ msg: "spectate", playerToSpec: undefined, sender: z?.sid, doing: false, time: Date.now(), server: location.href })) } else if (e == z.sid && n.startsWith("spectate") && Hn && en) { let e = n.split("spectate"); let t = Number(e[1]); if (t != z?.sid) { b(`You are now spectating ${Hg(t)?.name} [${t}]`, "", "#2b0640", false, true); es.isDoing = true; Ki.send(le({ msg: "spectate", playerToSpec: t, sender: z?.sid, time: Date.now(), server: location.href })) } else { b(`You cannot spectate yourself.`, "", "#2b0640", false, true) } } if (e == z.sid && n == "ping" && Hn && en) { Ki.send(le({ msg: "pinger", player: z, sender: z?.sid, doing: false, time: Date.now(), server: location.href })); Gn = 1e4; zn = [] } Hn && document.getElementById("send ws").checked && (!Ei.includes(e) || ts?.bot?.sid === e) && Ki.send(le({ chat: n, id: t, chatter: false, color: z.sid == e || ts?.bot?.sid === e ? "#0aa8fc" : "#FFFFFF", server: location.href })); t && (t.chatMessage = n, t.chatCountdown = K.chatCountdown) } window.addEventListener("resize", X.checkTrusted(sm)); async function em() { if (Oh > K.maxScreenWidth + 1) { await wx(2); Oh /= 1.05; Lh /= 1.05; sm(); em() } else if (Oh < K.maxScreenWidth - 1) { await wx(2); Oh *= 1.05; Lh *= 1.05; sm(); em() } else return } let tm = window.innerWidth; let nm = window.innerHeight; let im = 1; function sm() { Fh = window.innerWidth; _h = window.innerHeight; im *= Math.min(Oh / tm, Lh / nm); tm = Oh; nm = Lh; const e = Math.max(Fh / Oh, _h / Lh) * ph; Xh.width = Fh * ph; Xh.height = _h * ph; Xh.style.width = Fh + "px"; Xh.style.height = _h + "px"; $.setTransform(e, 0, 0, e, (Fh * ph - Oh * e) / 2, (_h * ph - Lh * e) / 2) } var om = { x: null, y: null, x2: null, y2: null }; function rm(e, t) { t = Xh.getBoundingClientRect(); if (e) { om.x = e.clientX; om.y = e.clientY } const n = (om.x - Fh / 2) * im * .91975; const i = (om.y - _h / 2) * im * .91975; const s = z.x2 + n; const o = z.y2 + i; om.x2 = s; om.y2 = o; return { x: s, y: o } } sm(); let am; lm(!1); function lm(e) { am = e, _p() } window.setUsingTouch = lm; let cm = document.getElementById("leaderboardButton"), dm = document.getElementById("leaderboard"); cm.addEventListener("touchstart", () => { dm.classList.add("is-showing") }); const um = () => { dm.classList.remove("is-showing") }; document.body.addEventListener("touchend", um); document.body.addEventListener("touchleave", um); document.body.addEventListener("touchcancel", um); if (!J1) { let e = function(e) { rm(e); e.preventDefault(), e.stopPropagation(), lm(!1), Bh = e.clientX, Dh = e.clientY }, t = function(e) { if (e.button == 0) { if (m.lc === undefined) m.lc = 0; m.lc = 1 } if (e.button == 1) { if (m.mc === undefined) m.mc = 0; m.mc = 1 } if (e.button == 2) { if (m.rc === undefined) m.rc = 0; m.rc = 1 } lm(!1), wh != 1 && (wh = 1, Bm()) }, n = function(e) { if (e.button == 0) { if (m.lc === undefined) m.lc = 0; m.lc = 0 } if (e.button == 1) { if (m.mc === undefined) m.mc = 0; m.mc = 0 } if (e.button == 2) { if (m.rc === undefined) m.rc = 0; m.rc = 0 } lm(!1), wh != 0 && (wh = 0, Bm()) }; var fm = e, hm = t, pm = n; const E4 = document.getElementById("touch-controls-fullscreen"); E4.style.display = "block", E4.addEventListener("mousemove", e, !1), E4.addEventListener("mousedown", t, !1), E4.addEventListener("mouseup", n, !1) } let mm = !1, gm; function ym() { let e = 0, t = 0, n; if (am) { if (!mm) return; n = gm } for (var i in km) { var s = km[i]; e += !!vm[i] * s[0], t += !!vm[i] * s[1] } if ((e != 0 || t != 0) && (n = P(t, e)), n !== void 0) return X.fixTo(n, 2) } let xm; function wm(e) { if (ct && !e) return z.dir; return z ? (!z.lockDir && !am && (xm = P(Dh - _h / 2, Bh - Fh / 2)), X.fixTo(xm || 0, 2)) : 0 } function bm() { return z ? (!z.lockDir && !am && (xm = P(Dh - _h / 2, Bh - Fh / 2)), X.fixTo(xm || 0, 2)) : 0 } var vm = {}, km = { 87: [0, -1], 83: [0, 1], 65: [-1, 0], 68: [1, 0] }; function Am() { vm = {} } function Im() { return x0.style.display != "block" && Wp.style.display != "block" } var Sm = false; var Em = false; function Tm(e) { if (!I4() || !en) return; const t = e.which || e.keyCode || 0; 78 == t && (on.status = !on.status); e.key == "e" && (Ct = !Ct); if (m[e.key] === undefined) m[e.key] = 0; m[e.key] <= 2 && m[e.key]++; t == 27 ? Np() : z && z.alive && Im() && (vm[t] || (vm[t] = 1, t == 75 ? si?.setWaypoint("quick", z) : t == 88 ? Lm() : z.weapons[t - 49] != null ? Vm(z.weapons[t - 49], !0) : z.items[t - 49 - z.weapons.length] != null ? Vm(z.items[t - 49 - z.weapons.length]) : t == 82 ? Fm() : t == 32 && (wh = 1, Bm()))); Ue[e.keyCode] = 1; let n; if (e.keyCode == 79) { if (ai == "Wander") { ai = "Summon" } else { ai = "Wander" } U1.showText(z.x2, z.y2, 30, .2, 400, ai, "#fff") } else if (e.keyCode == 189) { if (ai == "Static") { ai = "Summon" } else { n = ai; ai = "Static" } U1.showText(z.x2, z.y2, 30, .2, 400, ai, "#fff") } if (ie.length) { if (e.keyCode === 37) { G["do"] = true; G.val = (G.val - 1 + ie.length) % ie.length; G.play = false } else if (e.keyCode === 39) { G["do"] = true; G.val = (G.val + 1) % ie.length; G.play = false } } if (e.code == "ShiftRight") { G["do"] = false; G.play = false } if (e.keyCode == 66 && ie.length) { if (!Vt) { Xp(`!clear ${fi} ${hi} ${gi}`) } else { Ut = null; Vt = null; kh.forEach(e => { if (e.name == "pit trap") { e.opacity = 1 } else { e.opacity = 1 } }) } } Ue[e.keyCode] = 1; if (m[e.key] === undefined) m[e.key] = 0; m[e.key] <= 2 && m[e.key]++; if (m.q) { xn = true; setTimeout(() => { xn = false }, ce) } if (e.code == "ShiftRight" || e.code == "ShiftLeft") { if (m[e.code] === undefined) m[e.key] = 0; m[e.code] = 1 } e.key == "l" && (In = !In, U1.showText(z.x2, z.y2, 30, .2, 400, In, "#fff")); e.key == "U" && !Hn && (T5(), console.log("trying to connect")); e.key == "p" && em(); e.key == "r" && (un = un == "normal" ? un = false : un = "normal"); e.key == "R" && (un = un == "reverse" ? un = false : un = "reverse"); e.code == "NumpadMultiply" && (fn = !fn, U1.showText(z.x2, z.y2, 30, .2, 400, fn, "#fff")); e.code == "NumpadSubtract" && (z.customColor = Array.from(F)[f(Math.random() * F.size)]); e.key == "t" && si.goal.pathing ? si?.updateChat("stop", z?.sid) : e.key == "t" ? si?.updateChat("path", z?.sid) : null; e.key == "0" && (Em = false); if (e.keyCode == 32) { if (m.mc === undefined) m.mc = 0; m.mc = 1 } if (e.key == "y") { const i = async () => { let e = []; for (let e = 0; e < 20; e++) { bx(ie.length); if (!Em) { console.log("stopped spawning"); break } } }; i().then(() => {})["catch"](e => {}) } m["1"] == 1 && (qt = ee); m["2"] == 1 && A != null && (qt = A) } window.addEventListener("keydown", X.checkTrusted(Tm)); function Cm(e) { if (z && z.alive) { const t = e.which || e.keyCode || 0; if (t == 13) { if (x0.style.display === "block") return; Qp() } else { Im() && vm[t] && (vm[t] = 0, t == 32 && (wh = 0, Bm())) } if (m[e.key] === undefined) m[e.key] = 0; m[e.key] = 0; m[e.key] = 0; Ue[e.keyCode] = 0 } if (e.code == "ShiftRight" || e.code == "ShiftLeft") { if (m[e.code] === undefined) m[e.key] = 0; m[e.code] = 0 } if (e.key === "Enter") { if (document.activeElement === we) { const n = we.value.trim(); if (n !== "") { Xp(we.value, true); document.getElementById("send ws").checked && Ki.send(le({ chat: n, id: z, chatter: true, color: "#0aa8fc", server: location.href, pm: true })) } we.value = ""; setTimeout(() => { we.blur() }, 0) } } if (e.key === "/" && "chatbox" !== document.activeElement.id.toLowerCase()) { we.focus() } if (e.keyCode == 32) { if (m.mc === undefined) m.mc = 0; m.mc = 0 } } window.addEventListener("keyup", X.checkTrusted(Cm)); bo.onclick = function() { if (bo.checked) { K.healthBarWidth = 50 } else { K.healthBarWidth = 35 } }; function Bm() { return } var Dm = null; function Pm(e, t, n, i, s, o) { return D((e - i) ** 2 + (t - s) ** 2) - (n + o) < 1 } const Rm = W / 12; function Mm(t) { let n = w4(z) * y4; w; if (t === undefined) return undefined; if (Nm(t, n) === null) { for (let e = 0; e < W; e += Rm) { if (Nm(t + e, n) !== null) return t + e; if (Nm(t - e, n) !== null) return t - e } return W + null } return t } function Nm(e, t) { let s = z.x2 + U(e) * t; let o = z.y2 + V(e) * t; let r = 45; if (Pm(s, o, 35, Nt.x, Nt.y, 45)) { let e = P(s - Nt.x, o - Nt.y), t = D((s - Nt.x) ** 2 + (o - Nt.y) ** 2) + 35; let n = s + U(e) * t; let i = o + V(e) * t; if (Pm(n, i, 35, Nt.x, Nt.y, r)) { return null } } return e } function Om(e = false) { var t = ym(); let n = { ...z }; let i = Vg(1, t); n.buildIndex = -1; n.weaponIndex = y != null ? y : z.weaponIndex; n.skinIndex = z.skins[i.skinIndex] ? i.skinIndex : z.skinIndex; n.tailIndex = z.tails[i.tailIndex] ? i.tailIndex : z.tailIndex; e = !isNaN(t) ? E3(z, t, l4(n, t, n, 1)) : false; let s = !(ie.length && G["do"] && G.play) ? false : true; let o = s ? ui : Dm; if (e && !m.ShiftLeft && !(ni == "pathfinder" && si.goal.pathing)) t = undefined; if (t == Dn && !s) return; if ((null == ui || null == t || Math.abs(t - ui) > .3) && !(ni == "pathfinder" && si.goal.pathing && !s) && !jt) { if (!s) { T.send("a", t); ui = t } else { ie[G.val].emit("a", t); Dm = t } } } function Lm() { z.lockDir = z.lockDir ? 0 : 1 } function Fm() { T.send("S", 1) } function _m() { T.send("K", 1) } function Vm(e, t) { T.send("G", e, t) } window.io = T; function Um() { Zh.hidden = !hh, window.onbeforeunload = function(e) { return "Are you sure?" }, window.FRVR && window.FRVR.tracker.levelStart("game_start"), lh("moo_name", f0.value), !Vh && nh() && (Vh = !0, sh.stop("menu"), F0("Loading..."), T.send("M", { name: f0.value, moofoll: 1, skin: Nh === 10 ? "constructor" : Nh })), jm() } function jm() { var e = document.getElementById("ot-sdk-btn-floating"); e && (e.style.display = "none") } function Hm() { var e = document.getElementById("ot-sdk-btn-floating"); e && (e.style.display = "block") } let Wm = !0, Qm = !1; function Ym(e) { en = true; st = true; on = { status: false, w: null, a: null, s: null, d: null, aim: null, x: 0, y: 0 }; i0.style.display = "none", t0.style.display = "block", Uh.style.display = "none", vm = {}, Eh = e, wh = 0, Vh = !0, Wm && (Wm = !1, kh.length = 0); J1 && Fu.enable({ onStartMoving: () => { Bp(), cp(), lm(!0), mm = !0 }, onStopMoving: () => { mm = !1, Om() }, onRotateMoving: (e, t) => { t.force < .25 || (gm = -t.angle.radian, Om(), Qm || (xm = -t.angle.radian)) } }) } function zm(e, t, n, i) { if (n < 0 || !hs.checked) { i === -1 ? U1.showText(e, t, 50, .18, 500, n, "#ee5551") : ps.checked ? zi.push({ x: e, y: t, value: n }) : U1.showText(e, t, 50, .18, 500, S(n), n >= 0 ? "#fff" : "#8ecc51") } } let Gm = 99999; async function Km() { Vh = !1, Hm(); en = false; St = 0; p = false; on = { status: false, w: null, a: null, s: null, d: null, aim: null, x: 0, y: 0 }; si?.setWaypoint("death", z); s0.style.display = "none", Np(), gp = { x: z.x, y: z.y }, i0.style.display = "none", k0.style.display = "block", k0.style.fontSize = "0px", Gm = 0, setTimeout(function() { t0.style.display = "block", Uh.style.display = "block", k0.style.display = "none" }, K.deathFadeout), G0(); await A4(); setTimeout(() => { b(le(z.dmgpots), "", "black", false, true); b(le(z.healths), "", "#ff17dd", false, true); b(`Ping: ${window.pingTime}`, "", "black", false, true); b(`Shame Leak attempted: ${z.shameLeak}`, "", "black", false, true) }, 10) } function Xm(t) { if (xi.ID == t) { b(`target ID reset to undefined`, "", "green", false, true); xi.ID = null } kh = kh.filter(e => e?.owner?.sid != t); ht = ht.filter(e => e?.sid != t); ie.length && (ie = ie.filter(e => e.HERE)); $0 = $0.filter(e => e.sid != t) } function Jm(r, s, t, e) { let a; let l; let c = Q.filter(e => (e.name == "pit trap" || e.group?.name == "spikes" || e.type === 1 && e.y >= 12e3) && e.distance <= 450); let d = {}; let u = x.list[ly].scale - 50; for (let e = 0; e < t.length; e++) { let o = t[e]; for (let i = 0; i < s.length; i++) { let n = true; for (let t = 0; t < o.placePot.possible.length; t++) { let e = o.placePot.possible[t]; d[s[i].angle + o.name + o.sid + e.angle] = S4(s[i], e); if (d[s[i].angle + o.name + o.sid + e.angle] <= s[i].scale + e.scale) { s[i].placePriority = true; n = false; break } } let e = S4(s[i], o); if (e <= 200) s[i].points += 1; if (e <= 20.4) { s[i].points += 1 } if (e <= 50) { s[i].collide.push(o.sid); s[i].points += Nt ? 4 : 2 } let t = c.filter(e => (e?.group?.name === "spikes" && (te(e.owner.sid) || !o.team && e?.owner?.sid != o.sid) || e.y >= 12e3 && e.type === 1) && Ne(e.x - s[i].x, e.y - s[i].y) <= 50 + (e.type == 1 ? e.scale * .55 : e.scale) + 24 && !s[i].sids.includes(e.sid)); if (t.length) { s[i].points += 1 + t.length; s[i].canPush = true } if (e <= o.placePot.placeRange) { if (n) { s[i].points += 1 } else { s[i].points += .5 } } if (!l || l.points <= s[i].points) l = s[i] } for (let s = 0; s < r.length; s++) { r[s].bounce = false; r[s].collision = false; if (kx(r[s])) continue; let e = S4(r[s], o); let n = true; for (let t = 0; t < o.placePot.possible.length; t++) { let e = o.placePot.possible[t]; if (d[r[s].angle + o.name + o.sid + e.angle] + u <= r[s].scale + e.scale) { r[s].placePriority = true; n = false; break } } let t = o.inTrap ? S4(r[s], o.inTrap) : Infinity; let i = Ay(P(r[s].y - z.y2, r[s].x - z.x2), Ay(P(o.y2 - z.y2, o.x2 - z.x2))); if (e <= 35 + r[s].scale) { if (r[s].collide.length >= 1) r[s].origin.push({ amount: 1, from: `collides with ${o.name}[${o.sid}]`, player: o }); r[s].collide.push(o.sid); r[s].collision = true; let e = j5(r[s], c, o); if (e.building) { r[s].into = e; if (e.building.name == "pit trap" && !(r[s].preplace && o.inTrap && r[s].sids.includes(o.inTrap.sid))) { r[s].points += 2.5 } else if (e.bounce) { r[s].bounce = true; r[s].points += 5 } else if (e.building.name !== "pit trap") { r[s].points += 3 } else { r[s].into = false } } if (o.inTrap && !r[s].sids.includes(o.inTrap.sid)) { r[s].points += 2; r[s].spikeTrap = true; r[s].canPush = true } } if (o.inTrap && !r[s].sids.includes(o.inTrap.sid) && t <= 50 + r[s].scale + 21) { r[s].canPush = true; r[s].points += 1 } if (o.inTrap && e <= 250 && (Ay(r[s].angle, o.inTrap.angToMe) >= 1.5 || Dn === null || Dn === undefined)) { r[s].points += 2 } if (o.inTrap && jt && Ay(ne.dir, P(o.y2 - z.y2, o.x2 - z.x2)) > 4.7) { i4("prevents bounce back"); r[s].points += 2 } if (n && e <= o.placePot.placeRange) { r[s].points += 1 } if (!a || a.points <= r[s].points) a = r[s] } d = {} } return { spikes: r, traps: s, bestSpike: a, bestTrap: l } } let qm = false; function $m(s, e, t) { kh = kh.filter(e => { if (e.sid !== s) return true; if (!L3(z, e)) { e.TICK = v; Yt.push(e) } if (e.sid == s && Nt.sid === e.sid) { I(6, z.tailIndex) } if (e.sid == s && Y && Y?.globalTrap?.sid === e.sid && se(z, e) <= 126) { cn.push({ build: e, destroyedAt: v }); if (gt) { c4(z.items[2], B(z, e)); c4(z.items[2], B(z, Y)) } } if (e.sid === s && !qm && Y && se(z, Y) <= 235 && se(z, e) <= 190 && ms.checked && x.list[z.items[4]]?.name == "pit trap") { const n = F5(ly, 0, 0, W / ls.value); const i = F5(uy, 0, 0, W / ls.value); const o = Jm(n, i, ss); const { bestTrap: r, bestSpike: a } = o; o.spikes.sort((e, t) => t.points - e.points); o.traps.sort((e, t) => t.points - e.points); if (o.spikes.length && o.traps.length) { function t(n, e = o.spikes.concat(o.traps)) { e = e.filter(e => e.points > 0); if (He >= 85 || !a && !r && !m.c) return; e.sort((e, t) => { if (t.points === e.points && e.name !== t.name) { return e.name === "pit trap" ? -1 : 1 } return t.points - e.points }); for (let t of e) { const i = n.some(e => S4(e, t) <= e.scale + t.scale); const s = os.some(e => S4(e, t) <= e.scale + t.scale); if (!i && !s) { n.push(t) } if (n.length === 4) break } for (let e of n) { if (!e.did) { Z5(e.id, e.angle); rs.push(e); Tn.push({ ...e, tick: v }) } } } let e = []; if (a && a.points > 0 && !os.some(e => S4(e, a) <= e.scale + a.scale) && (!r.canPush || a.into) && (jt && r.points > 0 || a.bounce)) { if (a.into) { m3(a.into.newPos) } if (a.collision) { i4(`spike sync tester`) } if (a.placePriority) { Z5(Nt ? 15 : ly, a.angle); Tn.push({ ...a, tick: v }) } else { Z5(Nt ? 15 : ly, a.angle); Tn.push({ ...a, tick: v }) } a.did = true; e.push(a); rs.push(a) } if (r && r.points > 0 && !os.some(e => S4(e, r) <= e.scale + r.scale) && !(a && a.points > 0 && (!jt && a.bounce) && se(r, a) <= r.scale + a.scale) || r?.canPush || jt) { if (r.placePriority) { Z5(uy, r.angle); Tn.push({ ...r, tick: v }) } else { Z5(uy, r.angle); Tn.push({ ...r, tick: v }) } r.did = true; e.push(r); rs.push(r) } t(e) } } return false }) } function Zm() { r0.innerText = z.points, a0.innerText = z.food, l0.innerText = z.wood, c0.innerText = z.stone, d0.innerText = z.kills } const e2 = {}, t2 = ["crown", "skull"]; function n2() { for (let e = 0; e < t2.length; ++e) { const t = new Image; t.onload = function() { this.isLoaded = !0 }, t.src = "./img/icons/" + t2[e] + ".png", e2[t2[e]] = t } } const i2 = []; function s2(e, t) { pg(); if (z.upgradePoints = e, z.upgrAge = t, e > 0) { i2.length = 0, X.removeAllChildren(g0); for (var n = 0; n < x.weapons.length; ++n) if (x.weapons[n].age == t && (x.weapons[n].pre == null || z.weapons.indexOf(x.weapons[n].pre) >= 0)) { var i = X.generateElement({ id: "upgradeItem" + n, "class": "actionBarItem", onmouseout: function() { q0() }, parent: g0 }); i.style.backgroundImage = document.getElementById("actionBarItem" + n).style.backgroundImage, i2.push(n) } for (var n = 0; n < x.list.length; ++n) if (x.list[n].age == t && (x.list[n].pre == null || z.items.indexOf(x.list[n].pre) >= 0)) { const s = x.weapons.length + n; var i = X.generateElement({ id: "upgradeItem" + s, "class": "actionBarItem", onmouseout: function() { q0() }, parent: g0 }); i.style.backgroundImage = document.getElementById("actionBarItem" + s).style.backgroundImage, i2.push(s) } for (var n = 0; n < i2.length; n++)(function(e) { const t = document.getElementById("upgradeItem" + e); t.onmouseover = function() { x.weapons[e] ? q0(x.weapons[e], !0) : q0(x.list[e - x.weapons.length]) }, t.onclick = X.checkTrusted(function() { T.send("H", e) }), X.hookTouchEvents(t) })(i2[n]); i2.length ? (g0.style.display = "block", y0.style.display = "block", y0.innerHTML = "SELECT ITEMS (" + e + ")") : (g0.style.display = "none", y0.style.display = "none", q0()) } else g0.style.display = "none", y0.style.display = "none", q0() } function o2(e, t, n) { e != null && (z.XP = e), t != null && (z.maxXP = t), n != null && (z.age = n), n == K.maxAge ? (p0.innerHTML = "MAX AGE", m0.style.width = "100%") : (p0.innerHTML = "AGE " + z.age, m0.style.width = z.XP / z.maxXP * 100 + "%") } function r2(t) { X.removeAllChildren(u0); let n = 1; for (let e = 0; e < t.length; e += 3) { (function(e) { X.generateElement({ "class": "leaderHolder", style: "font-size: 14px; display: flex; justify-content: space-between; align-items: center;", parent: u0, children: [X.generateElement({ "class": "", style: "color:" + (t[e] == Eh ? "#fff; font-size: 14px;" : "rgba(255,255,255,0.6); font-size: 14px;"), text: `${t[e+1]} [${t[e]}]` }), X.generateElement({ "class": "leaderScore", style: "font-size: 14px;", text: X.kFormat(t[e + 2]) || "0" })] }) })(e); n++ } } let a2 = null; function l2() { { if (z && (!yh || gh - yh >= 1e3 / K.clientSendRate)) { yh = gh; const r = wm(); a2 !== r && (a2 = r) } let e = !ts?.bot && !es.isDoing ? z : es.isDoing ? es?.rPlayer : ts?.bot; if (Gm < 120 && (Gm += .1 * mh, k0.style.fontSize = j(H(Gm), 120) + "px"), e) { const r = X.getDistance(Ph, Rh, e.x, e.y), v = X.getDirection(e.x, e.y, Ph, Rh), a = j(r * .01 * mh, r); r > .05 ? (Ph += a * U(v), Rh += a * V(v)) : (Ph = e.x, Rh = e.y) } else Ph = K.mapScale / 2, Rh = K.mapScale / 2; const x = gh - ce; for (var i, s = 0, o = J.concat(Ci, ts.players, es.rPlayers); s < o.length + bh.length; ++s) if ((q = o[s] || bh[s - o.length]) && q && (q?.visible || q?.fake)) if (q.forcePos) q.x = q.x2, q.y = q.y2, q.dir = q.d2; else { var r = q.t2 - q.t1, a = (x - q.t1) / r, l = 170; q.dt += mh; var c = j(1.7, q.dt / l); var i = q.x2 - q.x1; q.x = q.x1 + i * c, i = q.y2 - q.y1, q.y = q.y1 + i * c, q.lastx = q.x; q.lasty = q.y; q.dir = Math.lerpAngle(q.d2, q.d1, j(1.2, a)); if (q?.bot) { let e = ie[G?.val]?.findPlayer(q.sid); e && (e = q) } } const w = Ph - Oh / 2 + pi, b = Rh - Lh / 2 + mi; K.snowBiomeTop - b <= 0 && K.mapScale - K.snowBiomeTop - b >= Lh ? ($.fillStyle = "#b6db66", $.fillRect(0, 0, Oh, Lh)) : K.mapScale - K.snowBiomeTop - b <= 0 ? ($.fillStyle = "#dbc666", $.fillRect(0, 0, Oh, Lh)) : K.snowBiomeTop - b >= Lh ? ($.fillStyle = "#fff", $.fillRect(0, 0, Oh, Lh)) : K.snowBiomeTop - b >= 0 ? ($.fillStyle = "#fff", $.fillRect(0, 0, Oh, K.snowBiomeTop - b), $.fillStyle = "#b6db66", $.fillRect(0, K.snowBiomeTop - b, Oh, Lh - (K.snowBiomeTop - b))) : ($.fillStyle = "#b6db66", $.fillRect(0, 0, Oh, K.mapScale - K.snowBiomeTop - b), $.fillStyle = "#dbc666", $.fillRect(0, K.mapScale - K.snowBiomeTop - b, Oh, Lh - (K.mapScale - K.snowBiomeTop - b))), Wm || (Th += Ch * K.waveSpeed * mh, Th >= K.waveMax ? (Th = K.waveMax, Ch = -1) : Th <= 1 && (Th = Ch = 1), $.globalAlpha = 1, $.fillStyle = "#dbc666", p2(w, b, $, K.riverPadding), $.fillStyle = "#91b2db", p2(w, b, $, (Th - 1) * 250)), $.lineWidth = 4, $.strokeStyle = "#000", $.globalAlpha = .06, $.beginPath(); if (!gs.checked && !vo.checked) { for (var d = (14400 - w) % 1440; d < Oh; d += 1440) d > 0 && ($.moveTo(d, 0), $.lineTo(d, Lh)); for (var u = (14400 - b) % 1440; u < Lh; u += 1440) u > 0 && ($.moveTo(0, u), $.lineTo(Oh, u)) } else { for (var f = -Ph; f < Oh; f += Lh / 18) f > 0 && ($.moveTo(f, 0), $.lineTo(f, Lh)); for (let e = -Rh; e < Lh; e += Lh / 18) f > 0 && ($.moveTo(0, e), $.lineTo(Oh, e)) } $.stroke(), $.globalAlpha = 1, $.strokeStyle = D0, b2(-1, w, b), $.globalAlpha = 1, $.lineWidth = R0, c2(0, w, b), A2(w, b, 0), $.globalAlpha = 1; for (var s = 0; s < bh.length; ++s) q = bh[s], q.active && q.visible && (q.animate(mh), $.save(), $.translate(q.x - w, q.y - b), $.rotate(q.dir + q.dirPlus - W / 2), lg(q, $), $.restore()); if (b2(0, w, b), c2(1, w, b), b2(1, w, b), A2(w, b, 1), b2(2, w, b), b2(3, w, b), $.fillStyle = "#000", $.globalAlpha = .09, w <= 0 && $.fillRect(0, 0, -w, Lh), K.mapScale - w <= Oh) { var h = oe(0, -b); $.fillRect(K.mapScale - w, h, Oh - (K.mapScale - w), Lh - h) } if (b <= 0 && $.fillRect(-w, 0, Oh + w, -b), K.mapScale - b <= Lh) { var p = oe(0, -w); let e = 0; K.mapScale - w <= Oh && (e = Oh - (K.mapScale - w)), $.fillRect(p, K.mapScale - b, Oh - p - e, Lh - (K.mapScale - b)) } if (z && si?.goal?.pathing) { $.globalAlpha = 1; $.save(); $.translate(-w, -b); ri?.drawPath($, "#ffffff", z, "#00FF00"); si?.drawWaypoints($, z.skinRot); $.restore() } $.fillStyle = vo.checked ? `rgba(0, 0, 70, 0.35)` : `rgba(15, 0, 70, 0.49)`; $.globalAlpha = 1, $.fillRect(0, 0, Oh, Lh), $.strokeStyle = P0; let t = J.concat(ts.players, es.rPlayers); for (var s = 0; s < t.length + bh.length; ++s) if (q = t[s] || bh[s - t.length], q?.visible && (q?.skinIndex != 10 || q?.skinIndex == 10 || q == z || q?.team && q?.team == z.team)) { const v = (q.team ? "[" + q.team + "] " : "") + (q.name || ""); if (!eo.checked && !Ei.includes(q.sid) && ws.checked) { if (v !== "") { $.font = (q.nameScale || 30) + "px Lilita One"; $.fillStyle = bo.checked ? "#fff" : q.isAI ? "#f2eff9" : q === z ? "#a0cac2" : q.team && q.team === z.team ? "#a6c7e7" : "#ebaebc"; $.textBaseline = "middle"; $.textAlign = "center"; $.lineWidth = q.nameScale ? 11 : 8; $.lineJoin = "round"; const A = q.x - w; const I = q.y - b - q.scale - K.nameY; $.strokeText(v, A, I); $.fillText(v, A, I); if (q.isLeader && e2.crown.isLoaded) { const S = K.crownIconScale; const E = A - S / 2 - $.measureText(v).width / 2 - K.crownPad; $.drawImage(e2.crown, E, I - S / 2 - 5, S, S) } if (q.iconIndex === 1 && e2.skull.isLoaded) { const T = K.crownIconScale; const C = A + $.measureText(v).width / 2 + K.crownPad - T / 2; $.drawImage(e2.skull, C, I - T / 2 - 5, T, T) } } } if (q.isPlayer && ws.checked) { $.globalAlpha = 1; $.textAlign = "center"; $.fillStyle = q.customColor; $.font = "19px Lilita One"; $.strokeStyle = "#212123"; $.lineWidth = 6; $.strokeText(q.sid, q.x - w, q.y - b); $.fillText(q.sid, q.x - w, q.y - b) } if (q.isPlayer && ws.checked && !Ei.includes(q.sid)) { if (!Ei.includes(q.sid) || G?.["do"] && ts?.bot?.sid == q.sid) { if (q.sid != z.sid && !vo.checked) { $.globalAlpha = 1; $.textAlign = "center", $.fillStyle = "#fff", $.font = "20px Lilita One", $.strokeStyle = "#212123", $.lineWidth = 3, $.strokeText(`[${q.gainSpeed?H(q.gainSpeed):0} / ${q.leakSpeed?H(q.leakSpeed):0}]`, q.x - w, q.y - b - 50); $.fillText(`[${q.gainSpeed?H(q.gainSpeed):0} / ${q.leakSpeed?H(q.leakSpeed):0}]`, q.x - w, q.y - b - 50) } if (xs.checked || !vo.checked) { const B = bo.checked ? 29 : 12; $.textAlign = "center", $.fillStyle = bo.checked ? "#fff" : q.isAI ? "#f2eff9" : q === z ? "#a0cac2" : q.team && q.team == z.team ? "#a6c7e7" : "#ebaebc", $.font = "18px Lilita One", $.strokeStyle = P0, $.lineWidth = 5, $.strokeText(!q.clowned ? q.shameCount : q.shameTimer > 0 ? H(1e3 * q.shameTimer) / 1e3 : 0, q.x - w, q.y - b + q.scale + K.nameY + B), $.fillText(!q.clowned ? q.shameCount : q.shameTimer > 0 ? H(1e3 * q.shameTimer) / 1e3 : 0, q.x - w, q.y - b + q.scale + K.nameY + B) } if (!vo.checked || (ys.checked || bo.checked)) { $.globalAlpha = .06; $.beginPath(); $.arc(q.x - w, q.y - b, q.scale, W / 2, W / 2 + W / 1.5); $.stroke(); $.strokeStyle = q.lastpr != 1 ? `hsl(${100-q.pr*405},100%,50%)` : "rgba(0, 0, 70, 0.35)"; $.lineWidth = 4; $.beginPath(); $.globalAlpha = q.lastpr == 1 ? .06 : 1; $.arc(q.x - w, q.y - b, q.scale, W / 2, W / 2 + W / 1.5 * (q.lastpr + (q.multpr - q.lastpr) * j(1, q.dt / q.delta)), false); $.stroke(); $.strokeStyle = "rgba(0, 0, 70, 0.35)"; $.lineWidth = 6; $.globalAlpha = .06; $.beginPath(); $.arc(q.x - w, q.y - b, q.scale, W / 2 + W / 1.5 * 2, W / 2 + W / 1.5 * 2 + W / 1.5); $.stroke(); $.globalAlpha = q.lastsr == 1 ? .06 : 1; $.strokeStyle = q.lastsr != 1 ? `hsl(${100-q.sr*405},100%,50%)` : "rgba(0, 0, 70, 0.35)"; $.lineWidth = 4; $.beginPath(); $.arc(q.x - w, q.y - b, q.scale, W / 2 + W / 1.5 * 2, W / 2 + W / 1.5 * 2 + W / 1.5 * (q.lastsr + (q.multsr - q.lastsr) * j(1, q.dt / q.delta)), false); $.stroke(); $.strokeStyle = "rgba(0, 0, 70, 0.35)"; $.lineWidth = 6; $.globalAlpha = .06; $.beginPath(); $.arc(q.x - w, q.y - b, q.scale, W / 2 + W / 1.5, W / 2 + W / 1.2 + W / 2); $.stroke(); $.globalAlpha = q.lasttr == 1 ? .06 : 1; $.strokeStyle = q.lasttr != 1 ? `hsl(${100-q.tr*405},100%,50%)` : "rgba(0, 0, 70, 0.35)"; $.lineWidth = 4; $.beginPath(); $.arc(q.x - w, q.y - b, q.scale, W / 2 + W / 1.5, W / 2 + W / 1.2 + W / 2 * (q.lasttr + (q.tr - q.lasttr) * j(1, q.dt / q.delta)), false); $.stroke() } $.globalAlpha = 1; if (bs.checked && z.sid == q.sid) { let e = He; let t = 0; t += (e - t) * .75; const D = 120; const P = t / D; let n, i, s; if (P < .5) { n = Math.floor(510 * P); i = 255; s = 0 } else { n = 255; i = Math.floor(510 * (1 - P)); s = 0 } const R = `rgb(${n},${i},${s})`; $.fillStyle = P0; $.roundRect(q.x - w - K.healthBarWidth - K.healthBarPad + 34.7, q.y - b + q.scale - 170 + K.nameY, K.healthBarWidth * 2 / 3.25 + K.healthBarPad * 2, 17, 8); $.fill(); $.fillStyle = R; $.roundRect(q.x - w - K.healthBarWidth + 34.7, q.y - b + q.scale - 170 + K.nameY + K.healthBarPad, K.healthBarWidth * 2 / 3.25 * (t / 120), 17 - K.healthBarPad * 2, 7); $.fill() } } if (Y && q.sid == Y.sid && typeof Ny === "object" && jt) { $.globalAlpha = .3; $.fillStyle = "#5f6ee7"; $.strokeStyle = "#5f6ee7"; $.beginPath(); $.arc(Ny.x - w, Ny.y - b, 35, 0, ae); $.arc(Y.x2 + ne.x - w, Y.y2 + ne.y - b, 35, 0, ae); $.fill() } } $.font = "20px Lilita One"; const k = $.measureText(q.name).width; if (Y && q.isPlayer && q.sid == Y.sid && !vo.checked) { const e = se(z, Y) - 35; if (e > 350) { $.globalAlpha = 0; $.fillStyle = "black"; $.strokeStyle = "black"; $.lineWidth = 5; $.beginPath(); $.moveTo(z.x - w, z.y - b); $.lineTo(q.x - w, q.y - b); $.stroke(); $.globalAlpha = 1; $.fillStyle = "white"; $.lineWidth = 5; const M = (q.x + z.x) / 2 - w; const N = (q.y + z.y) / 2 - b; const O = M - k / 2; const L = N + 15; $.strokeText(q.name, O, L); $.fillText(q.name, O, L) } } if (q.isAI) { $.globalAlpha = 1; $.textAlign = "center", $.fillStyle = "#fff", $.font = "20px Lilita One", $.strokeStyle = "#212123", $.lineWidth = 3, $.strokeText(q.health, q.x - w, q.y - b), $.fillText(q.health, q.x - w, q.y - b) } if (Vt?.length && q.sid == z.sid) { $.globalAlpha = .4; $.lineWidth = 5; $.strokeStyle = "black"; $.beginPath(); $.arc(Ft.x - w, Ft.y - b, Ft.scale, 0, ae); $.stroke(); $.globalAlpha = 1 } if (Y && q.sid == Y.sid && q.isPlayer && (un || fn && ee == 5)) { $.globalAlpha = 1; if (q.scaler === undefined) { q.scaler = 0; q.scalerR = false; q.rotater = 0; q.rotaterR = false } q.scalerR ? q.scaler -= .05 : q.scaler += .05; q.rotaterR ? q.rotater -= 1.8 : q.rotater += 1.8; if (q.rotater >= 360) q.rotater = 0; if (Math.round(q.scaler * 10) / 10 >= 1 || Math.round(q.scaler * 10) / 10 <= -1) q.scalerR = !q.scalerR; $.strokeStyle = "#ba5e69"; $.lineWidth = 5; let o = q.scale + 15 + q.scaler * 5; let e = Math.PI / 6; let i = 2 * Math.PI / 3 - e; for (let n = 0; n < 3; n++) { let e = 2 * Math.PI / 3 * n + Z(q.rotater); let t = e + i; $.beginPath(); $.arc(q.x - w, q.y - b, o, e, t); $.stroke() } $.fillStyle = "#ba5e69"; let t = 3; let n = 20 + q.scaler * 4; let r = 30 + q.scaler * 6; let a = [Z(q.rotater) + i / 2 + W / 3, Z(q.rotater) + 2 * W / 3 + i / 2 + W / 3, Z(q.rotater) + 4 * W / 3 + i / 2 + W / 3]; for (let s = 0; s < t; s++) { let e = a[s]; let t = f2(q.x, q.y, e, o); let n = f2(t.x, t.y, e + W / 6, r); let i = f2(t.x, t.y, e - W / 6, r); $.beginPath(); $.moveTo(t.x - w, t.y - b); $.lineTo(n.x - w, n.y - b); $.lineTo(i.x - w, i.y - b); $.closePath(); $.fill() } } if (q.sid === z.sid && !q.isAI) { Ci.forEach(e => { if (e.purpose === "formation" && e.showSID) { $.globalAlpha = 1; $.textAlign = "center"; $.fillStyle = "white"; $.font = "19px Lilita One"; $.strokeStyle = "black"; $.lineWidth = 6; $.strokeText(e.sid, e.x - w, e.y - b); $.fillText(e.sid, e.x - w, e.y - b) } }); $.globalAlpha = 1; $.lineWidth = 5; for (let e = 0; e < Q.length; e++) { if (Q[e].group !== undefined && Q[e].type === null && Q[e].distance <= 300 && ks.checked && Q[e].health !== Q[e].maxHealth) { const F = Q[e].health; $.fillStyle = bo.checked ? "black" : z.sid == Q[e].owner.sid ? de("#657ba3", .35) : te(Q[e].owner.sid) && Q[e].owner.sid !== z.sid ? de("#657ba3", .35) : de("#a4628a", .35); $.roundRect(Q[e].x - w - 33 - K.healthBarPad, Q[e].y - b + Q[e].scale + K.nameY - 90, 1.45 * 45 + 2 * K.healthBarPad, 17, 10); $.fill(); $.fillStyle = bo.checked ? z.sid == Q[e].owner.sid ? "#2693c7" : te(Q[e].owner.sid) && Q[e].owner.sid != z.sid ? "#2693c7" : "#c9346b" : z.sid == Q[e].owner.sid ? "#93d1fa" : te(Q[e].owner.sid) && Q[e].owner.sid !== z.sid ? "#93d1fa" : "#d38595"; $.roundRect(Q[e].x - w - 33, Q[e].y - b + Q[e].scale + K.nameY - 90 + K.healthBarPad, 1.45 * 45 * (Q[e].health / Q[e].maxHealth), 17 - 2 * K.healthBarPad, 10); $.fill() } if (Q[e].group !== undefined && Q[e].owner?.sid > 0 && Q[e].active !== 0 && As.checked) { $.fillStyle = bo.checked ? te(Q[e].owner.sid) ? "#2693c7" : "#c9346b" : te(Q[e].owner.sid) ? "#93d1fa" : "#d38595"; $.textBaseline = "middle"; $.textAlign = "center"; $.font = "13px Lilita One"; $.strokeStyle = bo.checked ? "black" : "#212123"; $.strokeText(Q[e].owner.sid.toString(), Q[e].x - w, Q[e].y - b + Q[e].scale - 20); $.fillText(Q[e].owner.sid.toString(), Q[e].x - w, Q[e].y - b + Q[e].scale - 20) } } $.globalAlpha = 1; if (kt.length && Gs.checked) { $.globalAlpha = 1; $.textAlign = "center"; $.fillStyle = "#fff"; $.font = "20px Lilita One"; $.strokeStyle = "#212123"; $.lineWidth = 3; $.strokeText(le(kt), q.x - w, q.y - b - 50); $.fillText(le(kt), q.x - w, q.y - b - 50) } } if (q.sid === z.sid && ws.checked) { $.globalAlpha = .45; Wi.forEach(e => { "#212123"; $.fillStyle = e.assumeBreak ? "#c9346b" : "#2693c7"; $.strokeStyle = e.assumeBreak ? "#c9346b" : "#2693c7", $.beginPath(); $.arc(e.x - w, e.y - b, e.scale * .35, 0, ae); $.fill(); $.stroke() }) } if (q.sid == z.sid && ws.checked && vs.checked) { $.globalAlpha = 1; $.textAlign = "center", $.fillStyle = "#fff", $.font = "20px Lilita One"; $.strokeStyle = "black"; $.lineWidth = 3; $.strokeText(He, q.x - w, q.y - b - 100 + q.scale + K.nameY - 70); $.fillText(He, q.x - w, q.y - b - 100 + q.scale + K.nameY - 70) } if (Y3 && Y3.length && q.sid == z.sid) { $.lineCap = "round"; $.strokeStyle = "white"; $.lineWidth = 3; $.beginPath(); var m = Y3.length; $.moveTo(Y3[0] - w, Y3[1] - b); for (let e = 0; e < m; e += 2) { $.lineTo(Y3[e] - w, Y3[e + 1] - b); $.stroke() } } $.strokeStyle = P0; $.globalAlpha = 1; q.health2 += (q.health - q.health2) * .5; if (q.health > 0 && !Ei.includes(q.sid) || G?.["do"] && ts?.bot?.sid == q.sid) { let e = bo.checked ? 0 : 20; $.fillStyle = P0; $.roundRect(q.x - w - K.healthBarWidth - K.healthBarPad, q.y - b + q.scale + K.nameY - e, K.healthBarWidth * 2 + K.healthBarPad * 2, 17, 8); $.fill(); $.fillStyle = bo.checked ? P0 : de(q.isAI ? "#f2eff9" : q === z ? "#a0cac2" : q.team && q.team == z.team ? "#a6c7e7" : "#ebaebc", .35); $.roundRect(q.x - w - K.healthBarWidth, q.y - b + q.scale + K.nameY + K.healthBarPad - e, K.healthBarWidth * 2, 17 - K.healthBarPad * 2, 7); $.fill(); $.fillStyle = bo.checked ? q == z || q.team && q.team == z.team ? "#8ecc51" : "#cc5151" : q.isAI ? "#f2eff9" : q === z ? "#a0cac2" : q.team && q.team == z.team ? "#a6c7e7" : "#ebaebc"; let t = !bo.checked ? q.isAI ? q.health2 : q.lastHealth == undefined || q.animatedHealth == undefined ? q.health2 : q.lastHealth + (q.health - q.lastHealth) * j(1, oe(0, 1 - re(1 - j(1, (Date.now() - q.animatedHealth) / 250), 2))) : q.health; let n = t / q.maxHealth; let i = K.healthBarWidth * 2 * n; $.roundRect(q.x - w - K.healthBarWidth, q.y - b + q.scale + K.nameY + K.healthBarPad - e, i, 17 - K.healthBarPad * 2, 7); $.fill() } } U1.update(mh, $, w, b); let n = J.concat(ts.players, es.rPlayer); for (var s = 0; s < n.length; ++s) { if (q = n[s], q?.visible && !Ei.includes(q?.sid) && q.chatCountdown > 0) { q.chatCountdown -= mh, q.chatCountdown <= 0 && (q.chatCountdown = 0); $.font = "32px Lilita One"; const v = $.measureText(q.chatMessage); $.strokeStyle = "2d3030"; $.textBaseline = "middle", $.textAlign = "center"; var p = q.x - w, h = q.y - q.scale - b - 90; const c = 47, e = v.width + 17; $.lineWidth = 11; $.strokeStyle = "black"; $.fillStyle = $.color; $.strokeText(q.chatMessage, p, h); $.fillStyle = "rgba(0,0,0,0.2)"; $.roundRect(p - e / 2, h - c / 2, e, c, 6); $.fill(); $.fillStyle = "#fff"; $.fillText(q.chatMessage, p, h) } if (Zn.time > 0 && (q = n[s])?.sid == z?.sid && en) { Zn.time -= mh; $.font = "32px Lilita One"; $.strokeStyle = "#2d3030"; var g = $.measureText(Zn.message); $.textBaseline = "middle", $.textAlign = "center", p = q.x - w, h = q.y - q.scale - b - 140; var y = g.width + 17; $.fillStyle = "rgba(0,0,0,.5)", $.roundRect(p - y / 2, h - 23.5, y, 47, 6), $.fill(), $.fillStyle = "#fff", $.fillText(Zn.message, p, h) } } if (!Ss.checked) { Et += (1 - Et) / 160; const _ = $.getTransform(); $.setTransform(1, 0, 0, 1, 0, 0); $.fillStyle = `rgba(${[24,0,82,.3].map(e=>e*Et).join(", ")})`; $.fillRect(0, 0, Xh.width, Xh.height); $.setTransform(_) } } Sp(mh) } function c2(t, n, i) { for (let e = 0; e < Ah.length; ++e) q = Ah[e], q.active && q.layer == t && (q.update(mh), q.active && cg(q.x - n, q.y - i, q.scale) && ($.save(), $.translate(q.x - n, q.y - i), $.rotate(q.dir), u2(0, 0, q, $), $.restore())) } const d2 = {}; function u2(e, t, n, i, s) { if (n.src) { var o = x.projectiles[n.indx].src, r = d2[o]; if (!r) { r = new Image; r.onload = function() { this.isLoaded = true; fe.weapons[o] = Le(1, this, n.scale) }; r.src = ".././img/weapons/" + o + ".png"; d2[o] = r } else if (r && fe.weapons[o] == undefined) { r = new Image; r.onload = function() { this.isLoaded = true; fe.weapons[o] = Le(1, this, n.scale) }; r.src = ".././img/weapons/" + o + ".png"; d2[o] = r } if (r.isLoaded) { var a = Es.checked ? fe.weapons[o] : r; if (a) { i.drawImage(a, e - n.scale / 2, t - n.scale / 2, n.scale, n.scale) } } } else if (n.indx === 1) { i.fillStyle = "#939393"; k(e, t, n.scale, i) } } function f2(e, t, n, i) { return { x: e + i * U(n), y: t + i * V(n) } } function h2() { const e = Ph - Oh / 2, t = Rh - Lh / 2; K1.animationTime += mh, K1.animationTime %= K.volcanoAnimationDuration; const n = K.volcanoAnimationDuration / 2, i = 1.7 + .3 * (S(n - K1.animationTime) / n), s = K.innerVolcanoScale * i; $.drawImage(K1.land, K1.x - K.volcanoScale - e, K1.y - K.volcanoScale - t, K.volcanoScale * 2, K.volcanoScale * 2), $.drawImage(K1.lava, K1.x - s - e, K1.y - s - t, s * 2, s * 2) } function p2(e, t, n, i) { const s = K.riverWidth + i, o = K.mapScale / 2 - t - s / 2; o < Lh && o + s > 0 && n.fillRect(0, o, Oh, s) } const m2 = .05; const g2 = .025; const y2 = .1; const x2 = 1; function w2(e) { if (!e.fadingOut) { e.opacity2 += m2; if (e.opacity2 >= x2) { e.opacity2 = x2; e.fadingOut = true } } else { e.opacity2 -= g2; if (e.opacity2 <= y2) { e.opacity2 = y2; e.fadingOut = false } } return e.opacity2 } function b2(t, n, i, s) { let o, r, a, l; s = en ? Xt.concat(Ze, ts.builds, es.rBuilds) : kh; l = s.length; for (let e = 0; e < l; ++e) { q = s[e]; if (!q || !q.active) continue; r = q.x + q.xWiggle - n; a = q.y + q.yWiggle - i; if (t === 0) q.update(mh); Wi; if (q.layer === t && cg(r, a, q.scale + (q.blocker || 0))) { if (Wi.some(e => e.sid === q.sid)) { w2(q); $.globalAlpha = q.hideFromEnemy ? .6 : q.preplace ? .7 : q.fake ? .3 : q.opacity2 } else { $.globalAlpha = q.hideFromEnemy ? .6 : q.preplace ? .7 : q.fake ? .3 : q.opacity } if (q.isItem) { if (q.fake && !Ns.checked) { $.save(); $.translate(r, a); $.rotate(q.dir); $.beginPath(); $.arc(0, 0, q.scale, 0, ae); $.fillStyle = q.restricter ? "#6bed5f" : q.preplace ? "#d4577c" : "#7da7b1"; $.fill(); $.stroke(); $.restore() } else { o = H2(q, false, false, q); $.save(); $.translate(r, a); $.rotate(q.dir); $.drawImage(o, -(o.width / 2), -(o.height / 2)); if (q.blocker) { $.strokeStyle = "#db6e6e"; $.globalAlpha = .3; $.lineWidth = 6; k(0, 0, q.blocker, $, false, true) } $.restore() } } else if (q.type === 4) { h2() } else { o = F2(q); $.drawImage(o, r - o.width / 2, a - o.height / 2) } } } } async function v2(e, t, n, i, s) { if (!i) { if (s = Hg(e)) { s.startAnim(t, n); k2(e, t, n, false); s.hitBuild = t } await A4(); if (t) { s = Hg(e); ft.forEach(e => { e.attemptResolve(s, s.skinIndex, v) }) } } else { s = i.findPlayer(e); s.startAnim(t, n) } } function k2(e, n, t, i, s, o) { if (!i) return pn.push({ id: k2, data: [e, t, n, true] }); o = Hg(e); if (o === null) return; n > 9 ? o.sr = 0 : o.pr = 0; o.slowMult -= x.weapons[n].hitSlow || .3; if (o.slowMult < 0) o.slowMult = 0; o.sid == z.sid && (z.invisTime = 1e3); o.skinIndex == 20 && n > 9 ? o.samRS = .78 : o.samRS = 1; o.skinIndex == 20 && n < 9 ? o.samRP = .78 : o.samRP = 1; s = Hg(e); let r = J.concat(bh); r.filter(e => { let t = e.sid != s.sid && se(s, e, "player") <= x.weapons[n].range && (s.team && s.team != e.team || !s.team) && X.getAngleDist(B(s, e), s.d2) <= h ? true : false; if (!e.isAI && t) { if (n >= 9 && (s.secondaryVar === 3 || s.skinIndex == 21) || n < 9 && (s.primaryVar === 3 || s.skinIndex == 21)) e.poison = 5 } if (t) { if (s.skinIndex == 58 || s.skinIndex == 55 || s.tailIndex == 18) { s.gatherHeal = { dmg: x.weapons[n].dmg, tick: v } } } }) } function A2(i, s, o, r) { for (let e = 0, n = J.concat(Ci, ts.players, es.rPlayers); e < n.length; ++e) { let t = n[e]; if (t) { if (t?.zIndex == o) { t.animate(mh); if (t.fake) { $.globalAlpha = t.vals && (t.vals = oe(0, t.vals -= t.decay)) } else if (r) { $.globalAlpha = .55 } else if (Ei.includes(t.sid)) { $.globalAlpha = .295 } else { $.globalAlpha = !Ls.checked ? 1 : .67 } if (t.visible || t.fake || t.spectate) { t.skinRot += .002 * mh; let e = (t == z ? wm() : t.dir) + t.dirPlus; $.save(); $.translate(t.x - i, t.y - s); $.rotate(e); I2(t, $); $.restore() } } } } } function k(e, t, n, i, s, o) { i = i || $; i.beginPath(); i.arc(e, t, n, 0, ae); o || i.fill(); s || i.stroke() } function I2(e, t) { t = t || $, t.lineWidth = R0, t.lineJoin = "miter"; const n = W / 4 * (x.weapons[e.weaponIndex].armS || 1), i = e.buildIndex < 0 && x.weapons[e.weaponIndex].hndS || 1, s = e.buildIndex < 0 && x.weapons[e.weaponIndex].hndD || 1; if (e.tailIndex > 0 && M2(e.tailIndex, t, e), e.buildIndex < 0 && !x.weapons[e.weaponIndex].aboveHand && (O2(x.weapons[e.weaponIndex], K.weaponVariants[e.weaponVariant]?.src, e.scale, 0, t), x.weapons[e.weaponIndex].projectile != null && !x.weapons[e.weaponIndex].hideProjectile && u2(e.scale, 0, x.projectiles[x.weapons[e.weaponIndex].projectile], $)), t.fillStyle = e.customColor, k(e.scale * U(n), e.scale * V(n), 14), k(e.scale * s * U(-n * i), e.scale * s * V(-n * i), 14), e.buildIndex < 0 && x.weapons[e.weaponIndex].aboveHand && (O2(x.weapons[e.weaponIndex], K.weaponVariants[e.weaponVariant]?.src, e.scale, 0, t), x.weapons[e.weaponIndex].projectile != null && !x.weapons[e.weaponIndex].hideProjectile && u2(e.scale, 0, x.projectiles[x.weapons[e.weaponIndex].projectile], $)), e.buildIndex >= 0) { const o = j2(x.list[e.buildIndex]); t.drawImage(o, e.scale - x.list[e.buildIndex].holdOffset, -o.width / 2) } k(0, 0, e.scale, t), e.skinIndex > 0 && (t.rotate(W / 2), C2(e.skinIndex, t, null, e)); D2(e, t) } const S2 = {}, E2 = {}; let T2; function C2(e, t, n, i) { if (!(T2 = S2[e])) { var s = new Image; s.onload = function() { this.isLoaded = true; this.onload = null; fe.hats[e] = Le(1, this, o.scale) }; s.src = ".././img/hats/hat_" + e + ".png"; S2[e] = s; T2 = s } var o = n || E2[e]; if (!o) { for (var r = 0; r < C0.length; ++r) { if (C0[r].id == e) { o = C0[r]; break } } E2[e] = o } if (T2.isLoaded) { var a = gy("shadows")?.checked ? fe.hats[e] : T2; if (a) { t.drawImage(a, -o.scale / 2, -o.scale / 2, o.scale, o.scale) } if (!n && o.topSprite) { t.save(); t.rotate(i.skinRot); C2(e + "_top", t, o, i); t.restore() } } } function B2(e, t, n, i, s, o, r) { let a = e[t]; if (!a) { const c = new Image; c.onload = function() { this.isLoaded = true; this.onload = null; e[t] = Le(r, this, o) }; c.src = i + t + s; a = c } const l = gy("shadows")?.checked ? e[t] : a; if (l) { n.drawImage(l, -s.scale / 2, -s.scale / 2, s.scale, s.scale) } if (!i && s.topSprite) { n.save(); n.rotate(o.skinRot); B2(e, t + "_top", n, i, s, o, r); n.restore() } } function D2(e, t) { if (Y && e.sid == Y?.sid && jt) { t.strokeStyle = "blue"; t.fillStyle = "blue"; if (Ne(ne.x, ne.y) > 10) { t.beginPath(); t.moveTo(0, 0); t.lineTo(ne.x, ne.y); t.stroke() } } } const P2 = {}, R2 = {}; function M2(t, e, n) { let i = R2[t]; if (!(T2 = P2[t])) { var s = new Image; s.onload = function() { this.isLoaded = true; fe.accessories[t] = Le("accessory", this, i.scale, i.scale, n.fake) }; s.src = ".././img/accessories/access_" + t + ".png"; P2[t] = s; T2 = s } if (!i) { for (let e = 0; e < B0.length; ++e) if (B0[e].id == t) { i = B0[e]; break } R2[t] = i } if (T2.isLoaded) { var o = gy("shadows")?.checked ? fe.accessories[t] : T2; if (o) { e.save(); e.translate(-20 - (i.xOff || 0), 0); if (i.spin) { e.rotate(n.skinRot) } e.drawImage(o, -i.scale / 2, -i.scale / 2, i.scale, i.scale); e.restore() } } } var N2 = {}; function O2(e, t, n, i, s) { var o = e.src + (t || ""), r = N2[o]; if (!r) { r = new Image; r.onload = function() { this.isLoaded = true; fe.weapons[o] = Le("weapon", this, e.length, e.width) }; r.src = ".././img/weapons/" + o + ".png"; N2[o] = r } else if (r && fe.weapons[o] == undefined) { r = new Image; r.onload = function() { this.isLoaded = true; fe.weapons[o] = Le("weapon", this, e.length, e.width) }; r.src = ".././img/weapons/" + o + ".png"; N2[o] = r } if (r.isLoaded) { var a = gy("shadows")?.checked ? fe.weapons[o] : r; if (a) { s.drawImage(a, n + e.xOff - e.length / 2, i + e.yOff - e.width / 2, e.length, e.width) } } } const L2 = {}; function F2(e) { const n = e.y >= K.mapScale - K.snowBiomeTop ? 2 : e.y <= K.snowBiomeTop ? 1 : 0, i = e.type + "_" + e.scale + "_" + n; let s = Es.checked && !n ? 0 : 54; let o = L2[i + s]; if (!o) { let t = Es.checked; const a = document.createElement("canvas"); a.width = a.height = e.scale * 2.1 + R0; const l = a.getContext("2d"); if (l.translate(a.width / 2, a.height / 2), l.rotate(X.randFloat(0, W)), l.strokeStyle = D0, l.lineWidth = R0, e.type == 0) { let e; for (var r = 0; r < 2; ++r) { l.shadowBlur = r === 0 && t ? 21 : 0; l.shadowColor = r === 0 && t ? "rgba(0, 0, 0, 1)" : 0; e = q.scale * (r ? .5 : 1), Q2(l, q.sid % 2 === 0 ? 5 : 7, e, e * .7), l.fillStyle = n ? r ? "#fff" : "#e3f1f4" : r ? "#b4db62" : "#9ebf57", l.fill(), r || l.stroke() } } else if (e.type == 1) { if (n == 2) l.fillStyle = "#606060", Q2(l, 6, e.scale * .3, e.scale * .71), l.fill(), l.stroke(), l.fillStyle = "#89a54c", k(0, 0, e.scale * .55, l), l.fillStyle = "#a5c65b", k(0, 0, e.scale * .3, l, !0); else { l.shadowBlur = t ? 22 : 0; l.shadowColor = t ? "rgba(0, 0, 0, 1)" : null; G2(l, 6, q.scale, q.scale * .7), l.fillStyle = n ? "#e3f1f4" : "#89a54c", l.fill(), l.shadowBlur = 0; l.shadowColor = null; l.stroke(), l.fillStyle = n ? "#6a64af" : "#c15555"; let e; const c = 4, d = rh / c; for (var r = 0; r < c; ++r) e = X.randInt(q.scale / 3.5, q.scale / 2.3), k(e * U(d * r), e * V(d * r), X.randInt(10, 12), l) } } else { e.type == 2 || e.type == 3; l.shadowBlur = t ? 12 : 0; l.shadowColor = t ? "rgba(0, 0, 0, 1)" : null; l.fillStyle = e.type == 2 ? n == 2 ? "#938d77" : "#939393" : "#e0c655", Q2(l, 3, e.scale, e.scale), l.fill(), l.stroke(), l.fillStyle = e.type == 2 ? n == 2 ? "#b2ab90" : "#bcbcbc" : "#ebdca3", l.shadowBlur = 0; l.shadowColor = null; Q2(l, 3, e.scale * .55, e.scale * .65), l.fill(); l.shadowBlur = 0; l.shadowColor = null } o = a, L2[i + s] = o } return o } function _2(t, n, i) { const s = t.lineWidth || 0; i /= 2, t.beginPath(); let o = ae / n; for (let e = 0; e < n; e++) t.lineTo(i + (i - s / 2) * U(o * e), i + (i - s / 2) * V(o * e)); t.closePath() } function V2() { const e = K.volcanoScale * 2, t = document.createElement("canvas"); t.width = e, t.height = e; const n = t.getContext("2d"); n.strokeStyle = "#3e3e3e", n.lineWidth = R0 * 2, n.fillStyle = "#7f7f7f", _2(n, 10, e), n.fill(), n.stroke(), K1.land = t; const i = document.createElement("canvas"), s = K.innerVolcanoScale * 2; i.width = s, i.height = s; const o = i.getContext("2d"); o.strokeStyle = D0, o.lineWidth = R0 * 1.6, o.fillStyle = "#f54e16", o.strokeStyle = "#f56f16", _2(o, 10, s), o.fill(), o.stroke(), K1.lava = i } V2(); const U2 = []; function j2(i, e, s, o) { let t = Es.checked && !s && !e ? 0 : 54; let r = U2[i.id + t]; if (!r || e || i.lastAnim != ws.checked) { const f = document.createElement("canvas"); f.width = f.height = i.scale * 2.5 + R0 + (x.list[i.id].spritePadding || 0); const h = f.getContext("2d"); let n = Es.checked && !s ? true : 0; h.shadowBlur = n ? 15 : 0; h.shadowColor = `rgba(0, 0, 0, 0.35)`; if (h.translate(f.width / 2, f.height / 2), h.rotate(e ? 0 : W / 2), h.strokeStyle = D0, h.lineWidth = R0 * (e ? f.width / 81 : 1), i.name == "apple") { h.fillStyle = "#c15555", k(0, 0, i.scale, h), h.fillStyle = "#89a54c"; const p = -(W / 2); W2(i.scale * U(p), i.scale * V(p), 25, p + W / 2, h) } else if (i.name == "cookie") { h.fillStyle = "#cca861", k(0, 0, i.scale, h), h.fillStyle = "#937c4b"; for (var a = 4, l = rh / a, c, d = 0; d < a; ++d) c = X.randInt(i.scale / 2.5, i.scale / 1.7), k(c * U(l * d), c * V(l * d), X.randInt(4, 5), h, !0) } else if (i.name == "cheese") { h.fillStyle = "#f4f3ac", k(0, 0, i.scale, h), h.fillStyle = "#c3c28b"; for (var a = 4, l = rh / a, c, d = 0; d < a; ++d) c = X.randInt(i.scale / 2.5, i.scale / 1.7), k(c * U(l * d), c * V(l * d), X.randInt(4, 5), h, !0) } else if (i.name == "wood wall" || i.name == "stone wall" || i.name == "castle wall") { h.fillStyle = i.name == "castle wall" ? "#83898e" : i.name == "wood wall" ? "#a5974c" : "#939393"; const p = i.name == "castle wall" ? 4 : 3; Q2(h, p, i.scale * 1.1, i.scale * 1.1), h.fill(), h.stroke(), h.fillStyle = i.name == "castle wall" ? "#9da4aa" : i.name == "wood wall" ? "#c9b758" : "#bcbcbc", Q2(h, p, i.scale * .65, i.scale * .65), h.fill() } else if (i.name == "spikes" || i.name == "greater spikes" || i.name == "poison spikes" || i.name == "spinning spikes") { let e = i.name == "spikes" ? 8 : 8.5; let t = i.name == "spikes" ? .6 : .65; h.shadowBlur = n ? e : 0; h.shadowColor = `rgba(0, 0, 0, ${t})`; h.fillStyle = i.name == "poison spikes" ? "#7b935d" : "#79A9CA"; var u = i.scale * .6; if (s || (Os.checked ? true : !o?.fake)) { Q2(h, i.name == "spikes" ? 5 : 6, i.scale, u); h.fill(); h.stroke(); h.fillStyle = "#a5974c"; h.shadowBlur = 0, h.shadowColor = null; k(0, 0, u, h); h.fillStyle = "#c9b758"; k(0, 0, u / 2, h, !0) } else if (o?.fake) { h.strokeStyle = !o?.fake ? "#525252" : o?.restricter ? "#6bed5f" : o?.preplace ? "#d4577c" : "#000000", Q2(h, i.name == "spikes" ? 5 : 6, i.scale, u); h.stroke(); h.shadowBlur = 0, h.shadowColor = null; if (!o?.fake) { h.beginPath(); h.arc(0, 0, u, 0, ae); h.stroke() } } } else if (i.name == "windmill" || i.name == "faster windmill" || i.name == "power mill") h.fillStyle = "#a5974c", k(0, 0, i.scale, h), h.fillStyle = "#c9b758", z2(0, 0, i.scale * 1.5, 29, 4, h), h.shadowBlur = 0, h.shadowColor = null, h.fillStyle = "#a5974c", k(0, 0, i.scale * .5, h); else if (i.name == "mine") h.fillStyle = "#939393", Q2(h, 3, i.scale, i.scale), h.fill(), h.stroke(), h.fillStyle = "#bcbcbc", Q2(h, 3, i.scale * .55, i.scale * .65), h.fill(); else if (i.name == "sapling") for (var d = 0; d < 2; ++d) { var u = i.scale * (d ? .5 : 1); Q2(h, 7, u, u * .7), h.fillStyle = d ? "#b4db62" : "#9ebf57", h.fill(), d || h.stroke() } else if (i.name == "pit trap") { h.shadowBlur = n ? 8.5 : 0; h.shadowColor = `rgba(0, 0, 0, ${.65})`; if (s || (Os.checked ? true : !o?.fake)) { h.fillStyle = "#a5974c", Q2(h, 3, i.scale * 1.1, i.scale * 1.1), h.fill(), h.stroke(), h.fillStyle = D0, Q2(h, 3, i.scale * .65, i.scale * .65), h.fill() } else if (o?.fake || o?.preplace) { h.strokeStyle = !o?.fake ? "#525252" : o?.restricter ? "#6bed5f" : o?.preplace ? "#d4577c" : "#5e79db", Q2(h, 3, i.scale * 1.1, i.scale * 1.1), h.stroke(); if (!o?.fake) { Q2(h, 3, i.scale * .65, i.scale * .65), h.stroke() } } } else if (i.name == "boost pad") h.fillStyle = "#7e7f82", Y2(0, 0, i.scale * 2, i.scale * 2, h), h.fill(), h.stroke(), h.fillStyle = "#dbd97d", K2(i.scale * 1, h); else if (i.name == "turret") { h.fillStyle = "#a5974c", k(0, 0, i.scale, h), h.fill(), h.stroke(), h.fillStyle = "#939393"; const p = 50; Y2(0, -p / 2, i.scale * .9, p, h), k(0, 0, i.scale * .6, h), h.fill(), h.stroke() } else if (i.name == "platform") { h.fillStyle = "#cebd5f"; const p = 4, m = i.scale * 2, g = m / p; let e = -(i.scale / 2); for (var d = 0; d < p; ++d) Y2(e - g / 2, 0, g, i.scale * 2, h), h.fill(), h.stroke(), e += m / p } else i.name == "healing pad" ? (h.fillStyle = "#7e7f82", Y2(0, 0, i.scale * 2, i.scale * 2, h), h.fill(), h.stroke(), h.fillStyle = "#db6e6e", z2(0, 0, i.scale * .65, 20, 4, h, !0)) : i.name == "spawn pad" ? (h.fillStyle = "#7e7f82", Y2(0, 0, i.scale * 2, i.scale * 2, h), h.fill(), h.stroke(), h.fillStyle = "#71aad6", k(0, 0, i.scale * .6, h)) : i.name == "blocker" ? (h.fillStyle = "#7e7f82", k(0, 0, i.scale, h), h.fill(), h.stroke(), h.rotate(W / 4), h.fillStyle = "#db6e6e", z2(0, 0, i.scale * .65, 20, 4, h, !0)) : i.name == "teleporter" && (h.fillStyle = "#7e7f82", k(0, 0, i.scale, h), h.fill(), h.stroke(), h.rotate(W / 4), h.fillStyle = "#d76edb", k(0, 0, i.scale * .5, h, !0)); r = f, e || (U2[i.id + t] = r) } i.lastAnim = ws.checked; return r } function H2(i, e, s, o) { let t = Es.checked && !s && !e ? 0 : 54; let r = U2[i.id + t]; if (!r || e || i.lastAnim != ws.checked) { const f = document.createElement("canvas"); f.width = f.height = i.scale * 2.5 + R0 + (x.list[i.id].spritePadding || 0); const h = f.getContext("2d"); let n = Es.checked && !s ? true : 0; h.shadowBlur = n ? 15 : 0; h.shadowColor = `rgba(0, 0, 0, 0.35)`; if (h.translate(f.width / 2, f.height / 2), h.rotate(e ? 0 : W / 2), h.strokeStyle = D0, h.lineWidth = R0 * (e ? f.width / 81 : 1), i.name == "apple") { h.fillStyle = "#c15555", k(0, 0, i.scale, h), h.fillStyle = "#89a54c"; const p = -(W / 2); W2(i.scale * U(p), i.scale * V(p), 25, p + W / 2, h) } else if (i.name == "cookie") { h.fillStyle = "#cca861", k(0, 0, i.scale, h), h.fillStyle = "#937c4b"; for (var a = 4, l = rh / a, c, d = 0; d < a; ++d) c = X.randInt(i.scale / 2.5, i.scale / 1.7), k(c * U(l * d), c * V(l * d), X.randInt(4, 5), h, !0) } else if (i.name == "cheese") { h.fillStyle = "#f4f3ac", k(0, 0, i.scale, h), h.fillStyle = "#c3c28b"; for (var a = 4, l = rh / a, c, d = 0; d < a; ++d) c = X.randInt(i.scale / 2.5, i.scale / 1.7), k(c * U(l * d), c * V(l * d), X.randInt(4, 5), h, !0) } else if (i.name == "wood wall" || i.name == "stone wall" || i.name == "castle wall") { h.fillStyle = i.name == "castle wall" ? "#83898e" : i.name == "wood wall" ? "#a5974c" : "#939393"; const p = i.name == "castle wall" ? 4 : 3; Q2(h, p, i.scale * 1.1, i.scale * 1.1), h.fill(), h.stroke(), h.fillStyle = i.name == "castle wall" ? "#9da4aa" : i.name == "wood wall" ? "#c9b758" : "#bcbcbc", Q2(h, p, i.scale * .65, i.scale * .65), h.fill() } else if (i.name == "spikes" || i.name == "greater spikes" || i.name == "poison spikes" || i.name == "spinning spikes") { let e = i.name == "spikes" ? 8 : 8.5; let t = i.name == "spikes" ? .6 : .65; h.shadowBlur = n ? e : 0; h.shadowColor = `rgba(0, 0, 0, ${t})`; h.fillStyle = i.name == "poison spikes" ? "#7b935d" : "#79A9CA"; var u = i.scale * .6; if (s || (Os.checked ? true : !o?.fake)) { Q2(h, i.name == "spikes" ? 5 : 6, i.scale, u); h.fill(); h.stroke(); h.fillStyle = "#a5974c"; h.shadowBlur = 0, h.shadowColor = null; k(0, 0, u, h); h.fillStyle = "#c9b758"; k(0, 0, u / 2, h, !0) } else if (o?.fake) { h.strokeStyle = !o?.fake ? "#525252" : o?.restricter ? "#6bed5f" : o?.preplace ? "#d4577c" : "#000000", Q2(h, i.name == "spikes" ? 5 : 6, i.scale, u); h.stroke(); h.shadowBlur = 0, h.shadowColor = null; if (!o?.fake) { h.beginPath(); h.arc(0, 0, u, 0, ae); h.stroke() } } } else if (i.name == "windmill" || i.name == "faster windmill" || i.name == "power mill") h.fillStyle = "#a5974c", k(0, 0, i.scale, h), h.fillStyle = "#c9b758", z2(0, 0, i.scale * 1.5, 29, 4, h), h.shadowBlur = 0, h.shadowColor = null, h.fillStyle = "#a5974c", k(0, 0, i.scale * .5, h); else if (i.name == "mine") h.fillStyle = "#939393", Q2(h, 3, i.scale, i.scale), h.fill(), h.stroke(), h.fillStyle = "#bcbcbc", Q2(h, 3, i.scale * .55, i.scale * .65), h.fill(); else if (i.name == "sapling") for (var d = 0; d < 2; ++d) { var u = i.scale * (d ? .5 : 1); Q2(h, 7, u, u * .7), h.fillStyle = d ? "#b4db62" : "#9ebf57", h.fill(), d || h.stroke() } else if (i.name == "pit trap") { h.shadowBlur = n ? 8.5 : 0; h.shadowColor = `rgba(0, 0, 0, ${.65})`; if (s || (Os.checked ? true : !o?.fake)) { h.fillStyle = "#a5974c", Q2(h, 3, i.scale * 1.1, i.scale * 1.1), h.fill(), h.stroke(), h.fillStyle = D0, Q2(h, 3, i.scale * .65, i.scale * .65), h.fill() } else if (o?.fake || o?.preplace) { h.strokeStyle = !o?.fake ? "#525252" : o?.restricter ? "#6bed5f" : o?.preplace ? "#d4577c" : "#5e79db", Q2(h, 3, i.scale * 1.1, i.scale * 1.1), h.stroke(); if (!o?.fake) { Q2(h, 3, i.scale * .65, i.scale * .65), h.stroke() } } } else if (i.name == "boost pad") h.fillStyle = "#7e7f82", Y2(0, 0, i.scale * 2, i.scale * 2, h), h.fill(), h.stroke(), h.fillStyle = "#dbd97d", K2(i.scale * 1, h); else if (i.name == "turret") { h.fillStyle = "#a5974c", k(0, 0, i.scale, h), h.fill(), h.stroke(), h.fillStyle = "#939393"; const p = 50; Y2(0, -p / 2, i.scale * .9, p, h), k(0, 0, i.scale * .6, h), h.fill(), h.stroke() } else if (i.name == "platform") { h.fillStyle = "#cebd5f"; const p = 4, m = i.scale * 2, g = m / p; let e = -(i.scale / 2); for (var d = 0; d < p; ++d) Y2(e - g / 2, 0, g, i.scale * 2, h), h.fill(), h.stroke(), e += m / p } else i.name == "healing pad" ? (h.fillStyle = "#7e7f82", Y2(0, 0, i.scale * 2, i.scale * 2, h), h.fill(), h.stroke(), h.fillStyle = "#db6e6e", z2(0, 0, i.scale * .65, 20, 4, h, !0)) : i.name == "spawn pad" ? (h.fillStyle = "#7e7f82", Y2(0, 0, i.scale * 2, i.scale * 2, h), h.fill(), h.stroke(), h.fillStyle = "#71aad6", k(0, 0, i.scale * .6, h)) : i.name == "blocker" ? (h.fillStyle = "#7e7f82", k(0, 0, i.scale, h), h.fill(), h.stroke(), h.rotate(W / 4), h.fillStyle = "#db6e6e", z2(0, 0, i.scale * .65, 20, 4, h, !0)) : i.name == "teleporter" && (h.fillStyle = "#7e7f82", k(0, 0, i.scale, h), h.fill(), h.stroke(), h.rotate(W / 4), h.fillStyle = "#d76edb", k(0, 0, i.scale * .5, h, !0)); r = f, e || (U2[i.id + t] = r) } i.lastAnim = ws.checked; return r } function W2(e, t, n, i, s) { const o = e + n * U(i), r = t + n * V(i), a = n * .4; s.moveTo(e, t), s.beginPath(), s.quadraticCurveTo((e + o) / 2 + a * U(i + W / 2), (t + r) / 2 + a * V(i + W / 2), o, r), s.quadraticCurveTo((e + o) / 2 - a * U(i + W / 2), (t + r) / 2 - a * V(i + W / 2), e, t), s.closePath(), s.fill(), s.stroke() } function k(e, t, n, i, s, o) { i = i || $, i.beginPath(), i.arc(e, t, n, 0, ae), o || i.fill(), s || i.stroke() } function Q2(t, n, i, s) { let o = W / 2 * 3, r, a; const l = W / n; t.beginPath(), t.moveTo(0, -i - 25e-6); for (let e = 0; e < n; e++) r = U(o) * i, a = V(o) * i, t.lineTo(r, a), o += l, r = U(o) * s, a = V(o) * s, t.lineTo(r, a), o += l; t.lineTo(0, -i), t.closePath() } function Y2(e, t, n, i, s, o) { s.fillRect(e - n / 2, t - i / 2, n, i), o || s.strokeRect(e - n / 2, t - i / 2, n, i) } function z2(e, t, n, i, s, o, r) { o.save(), o.translate(e, t), s = c(s / 2); for (let e = 0; e < s; e++) Y2(0, 0, n * 2, i, o, r), o.rotate(W / s); o.restore() } function G2(t, n, i, s) { let o = W / 2 * 3; const r = W / n; let a; t.beginPath(), t.moveTo(0, -s); for (let e = 0; e < n; e++) a = X.randInt(i + .9, i * 1.2), t.quadraticCurveTo(U(o + r) * a, V(o + r) * a, U(o + r * 2) * s, V(o + r * 2) * s), o += r * 2; t.lineTo(0, -s), t.closePath() } function K2(e, t) { t = t || $; const n = e * (D(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() } function X2() { const e = K.mapScale / 2; C.add(0, e, e + 200, 0, K.treeScales[3], 0), C.add(1, e, e - 480, 0, K.treeScales[3], 0), C.add(2, e + 300, e + 450, 0, K.treeScales[3], 0), C.add(3, e - 950, e - 130, 0, K.treeScales[2], 0), C.add(4, e - 750, e - 400, 0, K.treeScales[3], 0), C.add(5, e - 700, e + 400, 0, K.treeScales[2], 0), C.add(6, e + 800, e - 200, 0, K.treeScales[3], 0), C.add(7, e - 260, e + 340, 0, K.bushScales[3], 1), C.add(8, e + 760, e + 310, 0, K.bushScales[3], 1), C.add(9, e - 800, e + 100, 0, K.bushScales[3], 1), C.add(10, e - 800, e + 300, 0, x.list[4].scale, x.list[4].id, x.list[10]), C.add(11, e + 650, e - 390, 0, x.list[4].scale, x.list[4].id, x.list[10]), C.add(12, e - 400, e - 450, 0, K.rockScales[2], 2) } function J2(e, t) { for (var n = 0; n < e.length; n += 8) { C.add(...e.slice(n, n + 6), x.list[e[n + 6]], true, e[n + 7] >= 0 ? { sid: e[n + 7] } : null); t = Hg(e[n + 7]); if (e[n + 7] !== null && t != null && L3(z, t)) { b4(Hg(e[n + 7]).loadout, e[n + 6]) } } } async function q2(e, t) { await A4(); if (q = Qg(t)) { q.xWiggle += K.gatherWiggle * U(e); q.yWiggle += K.gatherWiggle * V(e); q.tick = v; ft.push(new O3(e, q)); q.lastHealth = q.health; q.animatedHealth = Date.now() } } function $2(e, t) { if (q = Qg(e)) { q.dir = t; q.xWiggle += K.gatherWiggle * U(t + W); q.yWiggle += K.gatherWiggle * V(t + W) } } function Z2(e, t, n, i, s, o, r, a, l) { N0 && (Ih.addProjectile(e, t, n, i, s, o, null, null, r).sid = a); if (!l) { tg(e, t, n, i, s, o) } } function eg(t, n) { n = Xt.filter(e => e.name == "platform"); if (!n.length) return 0; for (let e = 0; e < n.length; e++) { if (S4(n[e], t) <= 35 + n[e].scale) { return 1 } } return 0 } async function tg(i, s, o, e, t, n, r, a, l, c) { if (r && !a && !l) return r.updater.push({ id: tg, data: [i, s, o, e, t, n, r, true] }); if (!r && !a && !l) return pn.push({ id: tg, data: [i, s, o, e, t, n, false, true] }); if (n == 1) { let e = v4(i, s); if (l && e) return e; if (e) return } let d = Infinity; let u = -1; let f = null; let h = P3(i, s, o + W, 70); for (let e = 0; e < J.length; e++) { c = J[e]; if (t == 1.5 && n == 1) { if (c.visible && c.skinIndex == 53 && se({ x: i, y: s }, c) <= 2) { f = c; break } } if (!(t == 1.5 && n == 1)) { if (c.visible && c?.weaponIndex == c?.secondary && c.d2 === o && x.weapons[c.weaponIndex].projectile == n && S4(h, c) <= 20) { f = c; break } } } if (l) return f; if (f) { Ln.push({ x: f.x2, y: f.y2, dir: o, spd: t * (f.skinIndex === 1 ? 1.3 : 1), avoid: t == 1.5 || eg(f) ? 1 : 0, max: x.projectiles[n].range, dmg: x.projectiles[n].dmg, traveled: 0, owner: f, building: null, hit: null, info: x.projectiles[n] }); let e = ng.find(e => e.player.sid === f.sid); if (!e) { ng.push({ player: f, projs: [n], amt: 1, tick: v }) } else { if (!e.projs.includes(n)) e.amt++; e.projs.push(n); e.tick = v } } if (t == 1.5 && n == 1 && f) { if (rn[f.sid] === 1 && !te(f.sid) && se(f, z) <= 300 && (f.primary === 5 && f.primaryVar >= 2 || f.primary === undefined)) { wn = 1; $y() } f.tr = 0 } if (t != 1.5 && n != 1 && f) { f.skinIndex == 20 ? f.samRS = .78 : f.samRS = 1; f.sr = 0 } if (f && !te(f.sid)) { let e = B({ x: i, y: s }, z); let t = B(z, { x: i, y: s }); let n = ng.find(e => e.player?.sid == f.sid); if (Ay(o, e) < .6 && n?.amt >= 3) { b(`anti bow insta ${f.name}[${f.sid}]`, "", "red", false, true); c4(cy, t); c4(ay, t); if (!z.inTrap) { T.send("a", o + Z(90)) } p = true; I(6, 11); setTimeout(() => { c4(ry) }, ce); setTimeout(() => { c4(ry); c4(ry); T.send("a", undefined); p = false }, 222) } } } var ng = []; function ig(t, n) { for (let e = 0; e < Ah.length; ++e) Ah[e].sid == t && (Ah[e].range = n) } async function sg(e) { if (q = Wg(e)) { q.startAnim(); await A4(); ft.forEach(e => { e.attemptResolve(1, 1, v, 0, q) }) } } function og(n) { Xi = undefined; Ji = undefined; qi = undefined; for (var e = bh.length; e--;) { bh[e].forcePos = !bh[e].visible; bh[e].visible = false } if (n) { for (let e = 0, t = Date.now(); e < n.length; e += 7) { if (q = Wg(n[e])) { q.index = n[e + 1]; q.t1 = q.t2 === undefined ? t : q.t2; q.t2 = t; q.x1 = q.x; q.y1 = q.y; q.x2 = n[e + 2]; q.y2 = n[e + 3]; q.d1 = q.d2 === undefined ? n[e + 4] : q.d2; q.d2 = n[e + 4]; q.health = n[e + 5]; q.dt = 0; q.visible = true } else { q = Sh.spawn(n[e + 2], n[e + 3], n[e + 4], n[e + 1]); q.x2 = q.x; q.y2 = q.y; q.d2 = q.dir; q.health = n[e + 5]; if (!Sh.aiTypes[n[e + 1]].name) q.name = K.cowNames[n[e + 6]]; q.forcePos = true; q.sid = n[e]; q.visible = true } if (q.id < 6) continue; if (q.name === "MOOSTAFA") Xi = q; else if (q.name === "MOOFIE") Ji = q; else if (q.name === "Treasure") qi = q } } } function rg() { let { playerGathers: e, playerHits: a, objectsWiggled: t, newBuilds: n } = thisTick; let l = a.length; for (let e = t.length; e--;) { By((q = t[e]).ignoreWiggleDirs, q.wiggleDirs); let s = Xi ? P(Xi.y - q.y, Xi.x - q.x) : undefined; let o = Ji ? P(Ji.y - q.y, Ji.x - q.x) : undefined; let r = qi ? P(qi.y - q.y, qi.x - q.x) : undefined; for (let e = q.wiggleDirs.length, t, n, i; e--;) { for (n = l, t = q.wiggleDirs[e]; n--;) { if (X.getAngleDist(P(q.y - (i = a[n]).y2, q.x - i.x2), t) <= .05) { q.wiggleDirs[e] = undefined; q.health -= i.gatherWeapon.dmg; (i.gatherWeapon.sDmg || 1) * (i.skinObj?.bDmg || 1); U1.showText(q.x, q.y, 20, .085, 350, H(i.gatherWeapon.dmg * (i.gatherWeapon.sDmg || 1) * (i.skinObj?.bDmg || 1)), "#00aaff"); break } } if (X.getAngleDist(t, s) <= .05 || X.getAngleDist(t, o) <= .05) { q.wiggleDirs[e] = undefined; q.health -= 100; U1.showText(q.x, q.y, 20, .085, 350, 100, "#00aaff"); break } else if (X.getAngleDist(t, r) <= .05) { q.wiggleDirs[e] = undefined; q.health -= 200; U1.showText(q.x, q.y, 20, .085, 350, 200, "#00aaff"); break } } } let i = t.length; for (; i--;) { t[i].ignoreWiggleDirs.length = 0 } t.length = a.length = e.length = n.length = 0 } const ag = {}; function lg(e, t) { const n = e.index; let i = ag[n]; if (!i) { const s = new Image; s.onload = function() { this.isLoaded = !0, this.onload = null }, s.src = "./img/animals/" + e.src + ".png", i = s, ag[n] = i } if (i.isLoaded) { const s = e.scale * 1.2 * (e.spriteMlt || 1); t.drawImage(i, -s, -s, s * 2, s * 2) } } function cg(e, t, n) { return e + n >= 0 && e - n <= Oh && t + n >= 0 && t - n <= Lh } function dg(t, n, i) { let e = jg(t[0]); if (!i) { !e && !n && !i && b(`Encountered ${t[2]}[${t[1]}]`, "", "#15c283"); e || (e = new mc(t[0], t[1], K, X, Ih, C, J, bh, x, C0, B0), J.push(e)), e.spawn(n ? dh : null), e.visible = !1, e.x2 = void 0, e.y2 = void 0, e.setData(t, e), n && (z = e, Ph = z.x, Rh = z.y, Lp(), Zm(), o2(), s2(0), s0.style.display = "block") } else { let e = i.findPlayer(t[1]); e || (e = new mc(t[0], t[1], K, X, Ih, C, i.players, bh, x, C0, B0), i.players.push(e)); e.spawn(n ? dh : null); e.visible = !1; e.x2 = void 0; e.y2 = void 0; e.setData(t, e, true); return }!e.customColor && (e.customColor = Array.from(F)[f(Math.random() * F.size)]); !e.color && (e.color = Hy(J)); rn[t[1]] = 1, an[t[1]] = 1, e.pr = 1, e.sr = 1; !e.seenCount ? e.seenCount = 1 : e.seenCount++, e.primary = null; e.secondary = null; e.samRP = 1; e.didDeath = false; e.samRS = 1; e.noAntiList = e.noAntiList ?? new Array(10).fill(0); e.healArr = []; e.loadout = { spike: x.list[9], spawnpad: false, utility: undefined, windmill: undefined, trap: true, wall: x.list[3], food: x.list[0] }; ln[t[1]] = 1; e.deathDmgs = []; e.dmgsNow = []; !e.trackLeak && (e.trackLeak = []); !e.trackGain && (e.trackGain = []); e.tr = 1; e.shameCount = 0; e.healTrack = []; e.Alive = true; if (e.seenCount > 1 && !n) b(`Encountered ${t[2]}[${t[1]}] ${m4(e.seenCount)} time`, "", "#15c283"); if (e.sid === z.sid && Hn) Ki.send(le({ updating: z, server: location.href })) } function ug(t) { ie.length && (ie = ie.filter(e => e.HERE)); Ln.length && (Ln = Ln.filter(e => e.owner.sid != t)); $0 = $0.filter(e => e.sid != t); for (let e = 0; e < J.length; e++) if (J[e].id == t) { b(`${J[e].name}[${J[e].sid}] has left`, " ", "red"); J.splice(e, 1); break } } function fg(e, t) { z && (z.itemCounts[e] = t); pg(e) } var hg = []; function pg(i = undefined) { for (let n = 3; n < x.list.length; ++n) { let e = x.list[n].group.id; let t = x.weapons.length + n; if (!hg[t]) { hg[t] = document.createElement("div"); hg[t].id = "itemCount" + t; gy("actionBarItem" + t).appendChild(hg[t]); hg[t].style = ` display: block; position: absolute; padding-left: 5px; font-size: 2em; color: #fff; `; hg[t].innerHTML = z.itemCounts[e] || 0 } else { if (i == e) hg[t].innerHTML = z.itemCounts[i] || 0 } } } let mg = ["food", "stone", "wood"]; async function gg(e, t, n) { if (z) { z[e] = t; if (mg.includes(e.toString())) { const i = parseInt(document.getElementById(`${e}Display`).innerText), s = t - i; await A4(); if (s > 0) { if (!z.weaponXP[z.weaponIndex]) z.weaponXP[z.weaponIndex] = 0; z.weaponXP[z.weaponIndex] += s } } n && Zm() } } function yg(e, t) { if (!(q = Hg(e))) return; let n = Date.now(); let i = t - q.health; q.isPlayer && q.healArr.push([i, t, n]); q.lastHealth = q.health; q.animatedHealth = Date.now(); q.health = t } function xg(e, t) { const n = e.concat(t); const i = n.filter((t, e, n) => { return e === n.findIndex(e => e.sid === t.sid) }); return i } function wg(s, t, e = Q) { let o = e.filter(e => se(z, e, "object") <= t); let r = B(z, s); let a = [s]; let l = 0; let c = 0; for (let t = 0; t < 36; t++) { let n = B(z, s) + Z(t * 10); let i = []; let e = o.reduce((e, t) => { if (X.getAngleDist(B(z, t), n) <= h && X.getAngleDist(B(z, s), n) <= h) { i.push(t); return e + 1 } return e }, 0); if (X.getAngleDist(B(z, s), n) <= h) { if (e > c) { c = e; r = n; a = i } } if (e > l) { l = e } } Wi.push(a); Wi = Wi.flat(); return r } function bg(o, t, e = Q) { let r = e.filter(e => se(z, e, "object") <= t); let a = B(z, o); let l = [o]; if (r.length > 1) { let s = 0; for (let t = 0; t < 36; t++) { let n = B(z, o) + Z(t * 10); let i = []; let e = r.reduce((e, t) => { if (X.getAngleDist(B(z, t), n) <= h && X.getAngleDist(B(z, o), n) <= h) { i.push(t); return e + 1 } return e }, 0); if (e > s) { s = e; a = n; l = i } } } Wi.push(l); Wi = Wi.flat(); return a } function vg(o, t, e = Q) { let r = e.filter(e => se(z, e, "object") <= t); let a = B(z, o); let l = [o]; if (r.length > 1) { let s = 0; for (let t = 0; t < 36; t++) { let n = B(z, o) + Z(t * 10); let i = []; let e = r.reduce((e, t) => { if (X.getAngleDist(B(z, t), n) <= h && X.getAngleDist(B(z, o), n) <= h) { i.push(t); return e + 1 } return e }, 0); if (e > s) { s = e; a = n; l = i } } } Wi.push(l); Wi = Wi.flat(); return a } function kg(e, t) { const n = e.x2 - t.x; const i = e.y2 - t.y; return n * n + i * i } function Ag(e, t, n) { const i = t.reduce((e, t) => e + t.x, 0) / t.length; const s = t.reduce((e, t) => e + t.y, 0) / t.length; const o = P(s - e.y2, i - e.x2); if (!n) return o; if (n) return { x: i, y: s } } function Ig(e, t, n) { const i = t.reduce((e, t) => e + t.x2, 0) / t.length; const s = t.reduce((e, t) => e + t.y2, 0) / t.length; const o = P(s - e.y2, i - e.x2); if (!n) return o; if (n) return { x: i, y: s } } var Sg; function Eg(e, t, n, i, s) { if (!(v > 5 && !Ci.length)) return; s.x = e; s.x2 = t; s.x1 = e; s.y = t; s.y1 = t; s.y2 = t; s.sid = 1e3; s.distance = 1e4 } function Tg(n, e) { Q.forEach(e => { e.assumeBreak = false }); for (let e = 0; e < J.length; e++) { if (!J[e].visible || z.sid === J[e].sid) continue; n = J[e]; n.bDmg = n?.secondary === 10 && (n.sr === 1 || Bi && _y(n, Bi) === 1) ? { dmg: 10 * (En[n.secondaryVar] * 7.5 * 3.3), wep: 10 } : n?.primary && (n?.pr === 1 || n.weaponIndex == n.primary && Bi && _y(n, Bi) === 1) ? { dmg: x.weapons[n?.primary]?.dmg * 3.3 * En[n.primaryVar], wep: n.primary } : 0; if (n.bDmg === 0) continue; for (let t = 0; t < Q.length; t++) { if (Q[t].type !== null || !Q[t]?.owner?.sid) continue; let e = se(n, Q[t], "object") <= x.weapons[n.bDmg.wep].range; e && (!Q[t].dmgpot || Q[t].dmgpot < n.bDmg.dmg) && (Q[t].dmgpot = n.bDmg.dmg); if (Q[t].dmgpot >= Q[t].health && e) { Q[t].assumeBreak = true; continue } } } } function Cg(t, n, i, s, o, e, r, a, l, c, d, u) { if (!vn.length) return; for (let e = vn.length; e--;) { if (vn[e].skinIndex == 11 || vn[e].tailIndex == 21 || vn[e].tailIndex == 16) { a = B(z, vn[e]); if (se(z, vn[e], "player") <= x.weapons[n].range && X.getAngleDist(a, t) <= h) { l = x.weapons[n].dmg * (C0.find(e => e.id === s)?.dmgMultO || 1) * (B0.find(e => e.id === o)?.dmgMultO || 1) * En[i]; d = vn[e].skinIndex === 11 ? .45 : 0; u = vn[e].tailIndex === 21 ? .25 : vn[e].tailIndex === 16 ? .15 : 0; c = l * (d + u); if (n === 10 && z.sr === 1 || n != 10 && z.pr === 1) { U1.showText(vn[e].x2, vn[e].y2, 20, .18, 300, c, "#fff") } } } } } function Bg(e, n, i, s, o, t, r, a, l) { for (let t = 0; t < Q.length; t++) { a = B(z, Q[t]); if (se(z, Q[t], "object") <= x.weapons[n].range && X.getAngleDist(a, e) <= h && Q[t].type === null) { l = x.weapons[n].dmg * (n === 10 ? 7.5 : 1) * (s === 40 ? 3.3 : 1) * En[i]; let e = (n === 10 && z.sr === 1 || n != 10 && z.pr === 1) && Q[t].dmgpot + l >= Q[t].health; if (o && !e) Wi.push(Q[t]); if (e) { Q[t].assumeBreak = true; Q[t].manualBreak = true; Wi.push(Q[t]) } } } } function Dg(n, e, i) { if ((m.q >= 1 || xn) && lo.checked) return true; if (!ho.checked) return false; if (!po.checked) return true; let t = bh.filter(e => e.visible); let s = Xt.concat(t, n.enemies); let o = Infinity; let r = null; s.forEach(t => { let e = t.realScale ? t.realScale : t.scale; if (X.lineInRect((t.x2 || t.x) - e, (t.y2 || t.y) - e, (t.x2 || t.x) + e, (t.y2 || t.y) + e, n.x2, n.y2, n.x2 + i * U(n.dir), n.y2 + i * V(n.dir))) { const e = S4(n, t); if (e < o) { o = e; r = t } } }); return r.isPlayer && e.sid == r.sid } let Pg = []; function Rg(e) { let n = bh.filter(e => e.visible); let t = []; for (let c = 0; c < Ln.length; c++) { let s = Infinity; let o = Infinity; let r = []; let a = Ln[c]; let t = Hg(a.owner.sid); if (!t) { Ln.splice(c, 1); continue } let e = J.filter(e => e.visible && !(typeof t.team == "string" && e.team == t.team) && e.sid != t.sid); let l = Xt.filter(e => !e.ignoreCollision && e.elevation > a.avoid).concat(n, e); for (let i = 0; i < l.length; i++) { let e = l[i]; let t = e.realScale ? e.realScale : e.scale; const n = S4(a, e); r[0] = X.lineInRect((e.x2 || e.x) - t, (e.y2 || e.y) - t, (e.x2 || e.x) + t, (e.y2 || e.y) + t, a.owner.x2, a.owner.y2, a.x + a.spd * ce * U(a.dir), a.y + a.spd * ce * V(a.dir)); r[1] = X.lineInRect((e.x2 || e.x) - t, (e.y2 || e.y) - t, (e.x2 || e.x) + t, (e.y2 || e.y) + t, a.owner.x2, a.owner.y2, a.x + a.spd * u * U(a.dir), a.y + a.spd * u * V(a.dir)); if (r[0]) { if (n < s) { s = n; Ln[c].hit = e; if (e.realScale) { Ln[c].building = e } else Ln[c].building = null } } if (r[1]) { if (n < o) { o = n; Ln[c].futureHit = e } } } if (Ln[c].futureHit && !Ln[c].hit) { if (Ln[c].futureHit.isPlayer) { Hg(Ln[c].futureHit.sid).hitProjs += Ln[c].dmg; if (z.sid == Ln[c].futureHit.sid) b(`updated projectile dmgpot`, "", "red"); if (oo.checked) b(`${Ln[c].futureHit.name}[${Ln[c].futureHit.sid}] getting hit next tick ${v+1} by ${Ln[c].info.src}[${Ln[c].owner.sid}]`, "", "red"); if (Ln[c].owner.sid != z.sid && te(Ln[c].owner.sid) && Y && Ln[c].futureHit.sid == Y.sid) { U1.showText(Hg(Ln[c].futureHit.sid).x2, Hg(Ln[c].futureHit.sid).y2, 20, .18, 300, "sync ally proj hit", "#fff"); if (ee == 5 && Y && !p && (se(z.np.accel, Y.np.real, "player") <= x.weapons[ee].range || se(z, Y, "player") <= x.weapons[ee].range) && z.pr == 1 && z.sr == 1 && en && o4(z, Y)) { un = false; p = true; I(7, 18); g[0] = B(z, Y); ct = true; T.send("D", B(z, Y), "client"); T.send("G", ee, true); y = ee; setTimeout(() => { p = false }, 120) } } } } Ln[c].x += a.spd * ce * U(a.dir); Ln[c].y += a.spd * ce * V(a.dir); Ln[c].traveled += a.spd * ce; if (Ln[c].hit && oo.checked) b(`${Ln[c].info.src}[${Ln[c].owner.sid}] has hit ${Ln[c].hit.name} [${Ln[c].hit.sid}] on ${v}`, "", "red") } Ln.forEach(t => { if (t.building) { setTimeout(() => { ft.forEach(e => { e.attemptResolve(1, 1, v, t) }) }, 10) } }); Ln = Ln.filter(e => { if (e.hit || e.traveled >= e.max) return; if (!e.hit && e.traveled < e.max) return e }) } function Mg() {} function Ng() {} function Og() { m.f >= 1 && c4(z.items[4]); m.v >= 1 && c4(z.items[2]); m.h >= 1 && c4(hy); m.m >= 1 && c4(fy); m.i >= 1 && c4(ay, bm()); m.j >= 1 && dy != null && c4(dy) } function Lg(e, t = {}, n) { const i = { ...e, tick: v }; t.skinIndex = e.skinIndex; t.skinTick = v; t.tailIndex = e.tailIndex; t.tailTick = v; if (e.skinIndex !== t.skinIndex) { console.log(n, "OLD", i.skinIndex, "NEW", t.skinIndex) } if (e.tailIndex !== t.tailIndex) { console.log(n, "OLD", i.tailIndex, "NEW", t.tailIndex) } } async function Fg(i) { Qe = 0; At = false; $y(); Ot = false; tn = Date.now(); v++; if (!(v % 9)) { Ye.push(He); if (Ye.length > 5) Ye.shift(); ze = c(Ye.reduce((e, t) => e + t) / Ye.length); He = 0 } ss.length = ns.length = is.length = vn.length = Sn.length = 0; y = null; for (var e = J.length; e--;) { J[e].visible ? J[e].vis2 = true : J[e].vis2 = false; (q = J[e]).forcePos = !q.visible; q.visible = false } let n = ce, s = i.length; for (let e = 0, t = Date.now(); e < s; e += 13) { if (!(q = Hg(i[e]))) continue; q.t1 = void 0 === q.t2 ? t : q.t2, Xe[q.sid] = q, q.t2 = t, q.x1 = q.x, q.y1 = q.y, q.preX = q.x2, q.preY = q.y2, q.pmovDir = q.movDir, q.x2 = i[e + 1], q.y2 = i[e + 2], q.d1 = void 0 === q.d2 ? i[e + 3] : q.d2, q.d2 = i[e + 3], q.delta = q.dt, q.dt = 0, q.buildIndex = i[e + 4], q.weaponIndex = i[e + 5], q.xVel = q.x2 - q.preX, q.xVel2 = q.x2 - q.x1, q.yVel = q.y2 - q.preY, q.yVel2 = q.x2 - q.x1, q.weaponVariant = i[e + 6], q.team = i[e + 7], q.isLeader = i[e + 8], q.skinIndex = i[e + 9], q.skinIndex != 45 && (q.shameTimer = 30, q.clowned = false), q.skinIndex == 45 && q.shameTimer == 30 && x5(q), q.tailIndex = i[e + 10], q.iconIndex = i[e + 11], q.zIndex = i[e + 12], q.visible = true, q.slowMult = oe(1, q.slowMult + 8e-4 * n), q.movSpd = D((q.preY - q.y2) ** 2 + (q.preX - q.x2) ** 2), q.movSpd2 = D((q.y1 - q.y2) ** 2 + (q.x1 - q.x2) ** 2), q.movDir = P(q.y2 - q.preY, q.x2 - q.preX), (q.movDir == 0 && q.movSpd == 0 || q.preX == q.x2 && q.preY == q.y2) && (q.movDir = undefined), q.weaponIndex >= 9 ? q.secondary = q.weaponIndex : q.primary = q.weaponIndex, q.weaponIndex == q.primary && (q.primaryVar = q.weaponVariant), q.weaponIndex == q.secondary && (q.secondaryVar = q.weaponVariant), q.lastpr = q.pr, q.lastsr = q.sr, q.lasttr = q.tr, q.tick = v, xy(q), q.weaponE = q.weaponIndex == q.secondary ? q.sr : q.pr, q.multpr = q.lastpr == q.pr && q.pr == 0 ? (q.multpr = .015, q.lastpr = .015) : q.pr, q.multsr = q.lastsr == q.sr && q.sr == 0 ? (q.multsr = .015, q.lastsr = .015) : q.sr, q.hitProjs = 0, q.hitSpike = false, q.np = l4(q), q.inWater = q.y2 >= K.mapScale / 2 - K.riverWidth / 2 && q.y2 <= K.mapScale / 2 + K.riverWidth / 2, q.buildIndex != -1 && b4(q.loadout, q.buildIndex), q.assumeAge = g4(q); if (te(q.sid)) { Sn.push(q) } else { vn.push(q) } } rm(); yy(); if (z.d1 == z.dir && z.d2 == z.dir && g[0] === null) ct = false; ie.length && (ie = ie.filter(e => e.HERE)); z.shameLeak = false; Og(); await wx(1); Xt = kh.filter(e => (e.distance = X5(e.x - z.x2, e.y - z.y2)) <= 2e3); Q = Xt.filter(e => e.distance <= 800); $e = $e.filter(e => C.checkItemLocation(e.x, e.y, e.scale, .6, e.id, false) && v - e.sid <= 3); os = []; qm = false; Ve.forEach(e => e()); Ve = []; pn.forEach(e => e.id(...e.data)); pn = []; ri?.setPos(z.x2, z.y2); si?.setSend(T.send.bind(T)); si?.setSelf(z); si?.updatePlayers(J); _ = false; for (let e = J.length; e--;) { if (i = J[e]) { i.visible && (i.weaponR = i.weaponIndex == i.secondary ? i.sr : i.pr); if (isNaN(i.poison)) i.poison = 0; i.poison > 0 && (i.poison = oe(0, i.poison - i.delta / 1e3)); if (!i?.Alive2 && !i?.Alive) { let n = ""; i.deathDmgs.forEach((e, t) => { n += `${le(e)}`; if (t < i.deathDmgs.length - 1) { n += ", " } }); n = n.replace(/,/g, ", "); b(`${i.name}[${i.sid}] has died ${n}`, "", "#ed5a55"); i.deaths++ } i.Alive2 = true; if (hs.checked) { if (i.dmgs >= 0 && i.dmgs < 100 && (!Ei.includes(i.sid) || G["do"] && ts?.bot?.sid === i.sid)) U1.showText(i.x2, i.y2, 50, .18, 700, H(S(i.dmgs)), i.customColor); if (i.dmgs >= 100) U1.showText(i.x2, i.y2, 60, .18, 1e3, Fs.checked ? "☠️" : H(i.dmgs), i.customColor) } i.dmgs = "XD"; if (i.vis2 == false && i.visible && i.buildIndex == -1) { if (i.weaponIndex != i?.primary && i.primaryVar <= 2) { i.primaryVar = 3 } else if (i.weaponIndex != i?.secondary && i.secondaryVar <= 2 && (i.secondary == 10 || i.secondary == 14)) i.secondaryVar = 3 } if (i.healArr.length) { i.healArr.forEach(e => l5(i.sid, e[0], e[1], e[2])), i.healArr = [] } if (i.dmgsNow.length) i.deathDmgs.push(i.dmgsNow); i.dmgsNow = []; if (i.health === 100) i.deathDmgs = []; i.bleed = i.lastBull ? ((v - i.lastBull + (i.sid === z.sid ? et : 0)) % 9 + 9) % 9 : undefined } } if (Ts.checked && window.pingTime >= 95) { z.Qheal = false; if (en && z?.dmgpot?.add + z?.dmgpot?.turretGear >= 100 && z.shameCount < 7 && !z.shameLeak) { p4(); b(`AutoQ`, "", "#5c0620", false, true); z.Qheal = true } else if ((!_n && (z.health < 85 || z.shameCount > 0 && z.health < 100) || _n && z.health < 100) && en && z.skinIndex != 45) { setTimeout(() => { if (Ts.checked && z.health < 100 && (z.health > z.dmgpot?.hp * (z.skinIndex == 6 && !z.hitting && !p ? .75 : 1) || z.shameCount >= 7)) u4() }, 120 - xt + 9) } } if (en && zi.length > 0) { Gi = zi.reduce((e, t) => e + S(t.value), 0); U1.showText(zi[0].x, zi[0].y, 50, .18, 500, Gi, "#8ecc51"); zi = [] } if (!z.dmgpots) z.dmgpots = []; if (vn.length) { for (let e = vn.length; e--;) vn[e].distance = D((vn[e].x2 - z.x2) ** 2 + (vn[e].y2 - z.y2) ** 2); vn = vn.sort((e, t) => e.distance - t.distance) } Y = vn[0]; xi.player = J.find(e => e.sid === xi.ID && e.visible); if (xi.player) { xi.player.positions = a4(xi.player, 6) } else if (Y) { xi.player = Y; xi.player.positions = a4(xi.player, 6) } z.antiOneTickBowInsta = false; z.hitting = false; z.movSpd != 0 && (z.invisTime = 1e3); z.movSpd == 0 && (z.invisTime -= z.delta); k4(); if (!ie.length || !G["do"]) ts = { players: [], bot: null, builds: [], realBuilds: [] }; Zy(); h3(); w3(); Ei = ie.map(e => e?.sid); ri?.setBuildings(kh); by(); ri?.setSpeed(55 * x4(z)); L5(ly, 1, 0, W / ls.value); let t = p == true || z.hitting ? true : false; Xs.checked && fs.checked && Y && Hn && Ki.send(le({ team: z, busy: t, msg: "status", move: Dn, server: location.href })); e3(); Yt = Yt.filter(t => v - t.TICK <= 200 && !L3(z, t) && !ie.find(e => L3(e, t))); if (Gn) { Hn && fs.checked && Ki.send(le({ msg: "ping", player: z, time: tn, server: location.href })); Gn = oe(Gn - z.delta, 0) } s4(); P5(un); Rg(); cn = cn.filter(e => v - e.destroyedAt <= 2); for (let e = vn.length; e--;) { if (i = vn[e]) { if (i.distance <= 275) ss.push(i); i.kbpot = w5(i, z, B(i, z)); i.KB = w5(z, i, B(z, i)); i.placePot = i.distance <= 300 ? O5(i, i.loadout.spike.id, B(i, z)) : { onPlayer: [], possible: [], placeRange: null }; i.dmgpot = m5(i); i.inTrap = false; i.globalTrap = false; for (let e = Xt.length; e--;) { if (Xt[e].name === "pit trap" && S4(i, Xt[e]) <= 47 && te(Xt[e]?.owner?.sid)) { i.inTrap = Xt[e]; break } } for (let e = Xt.length; e--;) { if (Xt[e].name === "pit trap" && S4(i, Xt[e]) <= 47 && (te(Xt[e]?.owner?.sid) || !i.team && Xt[e]?.owner?.sid != i.sid)) { i.globalTrap = Xt[e]; break } } if (i.inTrap) i.inTrap.angToMe = B(z, i.inTrap); const o = B(z, i), e = se(z, i); if (se(z, i.np.accel) < se(z, i) && se(i.np.accel, z) < 200 && Ay(B(i, z), i.movDir) < 1 && i.movSpd >= 114 && z.delta < 123 && v - Xe[i.sid].tick <= 1) { if (hy != null && x.list[hy]?.name == "blocker" && z.canBuild(x.list[hy])) { for (let e = 0; e < 18; e++) { u5(hy, o + Z(e * 20)); u5(hy, o - Z(e * 20)) } console.log("anti boost blocker") } else if (z.canBuild(x.list[ly])) { u5(ly, o + Z(90)); u5(ly, o - Z(90)); u5(ly, o + Z(180)); console.log("anti boost spike") } else if (uy != null && z.canBuild(x.list[uy])) { for (let e = 0; e < 18; e++) { u5(uy, o + Z(e * 20)); u5(uy, o - Z(e * 20)) } console.log("anti boost trap") } else { for (let e = 0; e < 18; e++) { u5(ay, o + Z(e * 20)); u5(ay, o - Z(e * 20)) } console.log("anti boost wall") } } if (i.movSpd <= 5 && z.movSpd <= 5 && (i.secondary == 9 || i.secondary == null || i.secondary == undefined) && (e >= 665 && e <= 705)) { z.antiOneTickBowInsta = true } } } z.dmgpot = p5(); Wi = []; Tg(); sy(); Yx(); z.primaryVar > 1 && ee == 5 && A == 10 ? Yx() : Qx(); jx(); ii = Sn.find(e => e.sid == vt); ng = ng.filter(e => v - e?.tick <= 4); Nt = false; for (let e = Q.length; e--;) { if (D((Q[e].x - z.x2) ** 2 + (Q[e].y - z.y2) ** 2) > 350 && (!(Q[e].dmg || Q[e].trap) || Q[e]?.type !== 1 && Q[e].y < 12e3)) continue; if (Q[e].dmg || Q[e]?.type === 1 && Q[e].y >= 12e3) { ns.push(Q[e]) } else if (Q[e].trap) { is.push(Q[e]) } } for (let e = Q.length; e--;) { if ((q = Q[e]).trap) { if (D((q.x - z.x2) ** 2 + (q.y - z.y2) ** 2) <= 47 && !te(q?.owner?.sid)) { Nt = q; break } } } z.spikeTrap = Q.filter(e => Nt && e?.group?.name === "spikes" && (Y && se(z, Y) <= 130 && Ay(B(Y, e), B(Y, z)) <= 3 || se(z, e) <= 35 + e.realScale + 2) && !te(e.owner.sid) && se(z, e, "object") <= (A === 10 ? 75 : x.weapons[ee]?.range)).sort((e, t) => se(z, e, "object") - se(z, t, "object"))[0]; Js.checked ? Ly() : Oy(); fn && Nx(); if (Cs.checked && ee == 5 && A == 10 && Y && !(Y.inTrap && Wx(x.list[ly], B(z, Y.inTrap), Y.inTrap) && jt && ee == 5 && z.primaryVar > 0) && !Mt && _y(Y) == 1 && !p && Y.weaponR != 1 && !gt && (Y.weaponIndex <= 10 && Y.weaponIndex != 9 && Y)) { if (Vy(z, Y, x.weapons[A].range, true) && o4(z, Y) && (z.primaryVar >= 1 || z.secondaryVar >= 1 && z.primaryVar < 1 && (v - Y?.lastBull) % 9 == 8) && Y.skinIndex == 6 && z.pr == 1 && z.sr == 1 && z.tr == 1 && Y) { ct = true; b(`AI on ${Y.name}[${Y.sid}]`, "", "#5c0620", false, true); p = true; y = A; I(53); T.send("G", A, true); g[0] = B(z, Y); T.send("D", g[0], "client"); setTimeout(() => { y = ee; T.send("G", ee, true); I(7); g[0] = B(z, Y); T.send("D", g[0], "client") }, ce); setTimeout(() => { p = false; ct = false; g[0] = null }, u) } } if (Y && !Mt && !p && A == 10 && ee == 5 && Bs.checked) { let e = x.weapons[A].range; if (Y && Vy(z, Y, e, true) && Y && o4(z, Y) && (v - Y?.lastBull) % 9 == 8 && (z.primaryVar == 3 || z.primaryVar >= 2 && z.secondaryVar == 3) && Y.skinIndex != 6 && z.pr === 1 && z.sr === 1) { p = true; b(`Bleed Insta on ${Y.name}[${Y.sid}]`, "", "#5c0620", false, true); y = A; ct = true; T.send("G", A, true); g[0] = B(z, Y); I(7, 18); T.send("D", g[0], "client"); setTimeout(() => { y = ee; T.send("G", ee, true); I(7, 18); g[0] = B(z, Y); T.send("D", g[0], "client") }, ce); setTimeout(() => { p = false; ct = false; y = null }, u) } } Hn && Ki.send(le({ fixer: z, server: location.href, time: Date.now() })); Sg = no.checked ? Xt.filter(e => e.name == "turret" && se(z, e) <= 700 + z.movSpd && e?.time == 2200 && !te(e?.owner?.sid)) : []; z.doAssassin = io.checked && !Sg.length && Nn.includes(56) && z.invisTime <= 0 && "chatbox" !== document.activeElement.id.toLowerCase() && z.health === 100 && (Dn === undefined || Dn === null) && z.movSpd == 0 ? true : false; g[0] = null; Om(); z.selectedWeapon = null; if (Nt && !p && Ds.checked) { let e; if (!(z.spikeTrap && Vs.checked)) { e = B(z, Nt); z.selectedWeapon = A == 10 && Nt.health - x.weapons[ee].dmg * K.weaponVariants[z.primaryVar].val <= 0 && (ee == 7 ? true : z.pr === 1) } else { e = B(z, z.spikeTrap); z.selectedWeapon = A == 10 && z.spikeTrap.health - x.weapons[ee].dmg * K.weaponVariants[z.primaryVar].val <= 0 && (ee == 7 ? true : z.pr === 1) } if (z.selectedWeapon ? z.pr === 1 : z.pr == 1 && A != 10 || z.sr == 1 && A == 10) { g[0] = e } Bg(e, z.selectedWeapon ? ee : A === 10 ? A : ee, z.selectedWeapon ? z.primaryVar : A === 10 ? z.secondaryVar : z.primaryVar, z?.dmgpot?.forceSoldier ? 6 : z.selectedWeapon ? 0 : Nn.includes(40) ? 40 : 0, 1) } if (Nt && !p && Ds.checked) { y = z.selectedWeapon ? ee : A != 10 ? ee : 10; if (z.selectedWeapon ? z.pr === 1 : z.sr == 1 && A == 10 || z.pr == 1 && A != 10) { I(Sg.length ? 22 : z?.dmgpot?.forceSoldier ? 6 : z.selectedWeapon ? 6 : 40, 11); z.hitting = true } } if (!p && !gt) { if (!Nt) { if (m.lc) { y = ee; if (z.weaponIndex != ee || z.buildIndex != null) T.send("G", ee, true); if (z.pr == 1) { if (z.tailIndex === 11) { Rp(On.includes(18) ? 19 : 0, 1) } else { I(z.dmgpot?.soldier ? 6 : Sg.length ? 22 : 7, 18) } z.hitting = true } Bg(bm(), y, z.primaryVar, 0, 1) } if (m.rc) { !m.ShiftLeft && A == 10 ? y = A : y = ee; if (z.sr == 1 && A == 10 && z.weaponIndex == A && !m.ShiftLeft || z.pr == 1 && (z.weaponIndex == ee || m.ShiftLeft)) { I(z.dmgpot?.soldier ? 6 : Sg.length ? 22 : et < 2 ? 40 : 7, 11, 1); z.hitting = true } Bg(bm(), y, y === 10 ? z.secondaryVar : z.primaryVar, Nn.includes(40) ? 40 : 0, 1) } if (m.mc) { for (let n = Q.filter(e => e.health && se(z, e, "object") <= (!m.ShiftLeft && A === 10 ? 75 : x.weapons[ee].range)).sort((e, t) => Ne(z.x2 - e.x, z.y2 - e.y) - Ne(z.x2 - t.x, z.y2 - e.y)), i = n.length; i--;) { let e = n[i]; let t = bg(e, A === 10 ? 75 : x.weapons[ee].range, n); !m.ShiftLeft && A == 10 ? y = A : y = ee; if (z.sr == 1 && A == 10 && z.weaponIndex == A && !m.ShiftLeft || z.pr == 1 && (z.weaponIndex == ee || m.ShiftLeft)) { I(z.dmgpot?.soldier ? 6 : Sg.length ? 22 : et < 2 ? 40 : 7, 11, 1); z.hitting = true } g[0] = t; Bg(t, y, y === 10 ? z.secondaryVar : z.primaryVar, Nn.includes(40) ? 40 : 0, 1); break } } } Vg() } if (z.lastBull && Nn.includes(7) && !z.hitSpike && z.dmgpot?.hp < 80 && z.shameCount > 0 && z.poison <= 0 && !z.dmgpot?.soldier && z.bleed === 0 && en && !Sg.length && $t != 7) { if (z.lastDamage == 0 && z.skinIndex != 45) { z.shameLeak = true; et++; I(7, 11) } } if (z.hitSpike && Nt || !Nt && z.hitSpike && z?.dmgpot?.shouldHeal) { if (z.health <= z.hitSpike.dmg || z.hitSpike.dmg + z?.dmgpot?.primary + z?.dmgpot?.turretGear >= z.health) p4() } else if (Us.checked) { if (z.alive && z.health <= z.dmgpot?.hp * (z.skinIndex == 6 && !z.hitting && !p && !Sg.length && !gt && !z.shameLeak ? .75 : 1) && z.skinIndex != 45 && z.shameCount < 7) { u4() } else if ((!_n && (z.health < 85 || z.shameCount > 0 && z.health < 100) || _n && Date.now() - z.lastDamage >= 100 && z.health < 100 || _n && z.health <= 69) && en && z.skinIndex != 45) { if (z.health <= 69) { setTimeout(() => { u4() }, 120 - xt + 9) } else { u4() } } } Ze = []; e4(); Je = Q.concat($e); if (!p && !gt) { if (g[0]) ct = true; if (z.dir != g[0] && g[0] !== null) T.send("D", g[0]); if (y && (y == ee || y == A) && (z.weaponIndex != y || z.buildIndex != -1)) T.send("G", y, true); if (g[0] === null && z.dir != bm()) T.send("D", bm()) } if (z.dmgpots.length >= 4) z.dmgpots.pop(); if (z.dmgpot) z.dmgpots.unshift({ ping: window.pingTime, tick: v, dmgpot: z.dmgpot, health: z.health, packets: He, currentHat: z.skinIndex, nextHat: $t, shameCount: z.shameCount, spikeTrap: z.hitSpike && Nt }); k5[1] = false; A5(); t3(); if (Ct || p && !At && !hn || m.rc || m.lc || m.mc || z.hitting || gt || Ot) { if (St % 2 == 0 && en) { T.send("K", 1) } } else { if (St % 2 == 1) { T.send("K", 1) } } d5(); Iy() } function _g(e, t, n, i, s = 6) { let o = Ei.includes(e.sid) ? l4(e, e.moveDirection, e, 1).real : e.np.real; let r = { norm: { dir: null, ticks: null, dist: null }, marks: { dir: null, ticks: null, dist: null } }; let a = Array.isArray(t) ? t : a4(i, 6); for (let t = 0; t < a.length; t++) { let e = { dir: B(o, a[t].real), dist: se(o, a[t].real) - 105, position: a[t] }; if (l(e.dist, n * 111) === t && !r.norm.dir) { r.norm.dir = e.dir; r.norm.ticks = t; r.norm.dist = e.dist + 105; r.position = e.position } if (l(e.dist, n * 111 * 1.3) === t && !r.marks.dir) { r.marks.dir = e.dir; r.marks.ticks = t; r.marks.dist = e.dist + 105; r.position = e.position } } if (r.norm.dir || r.marks.dir) return r; return null; function l(e, t) { if (t === 0) { throw new Error("Cannot divide by zero.") } const n = Math.floor(e / t); const i = e % t; const s = i > 0 ? 1 : 0; return n + s } } function Vg(t, e = Dn) { if (Ot && !z.dmgpot.soldier && !t) return; let n = Y && se(z, Y) <= li && !z.inWater && js.checked ? true : false; let i = Y && se(z, Y) <= li && !Ws.checked ? 21 : 11; if (!js.checked) { if (z.dmgpot?.add >= 100 || z.dmgpot?.secondary >= 100 || z.dmgpot?.soldier || e === undefined) { if (t) return { skinIndex: 6, tailIndex: Ws.checked ? 21 : 21 }; n = true } } if (Hs.checked || t) { if (!z.antiOneTickBowInsta && z.doAssassin) { I(56, 0); if (t) return { skinIndex: 56, tailIndex: 0 } } else { if (!z.antiOneTickBowInsta && !z.hitting && S0.style.display == "none" && !At) { if (!Sg.length && !(et >= 2 && !z.dmgpot.soldier) && (e === undefined || n || Nt && Ds.checked) && !z.doAssassin || !n && i === 19) { let e = 6; if (!n && i === 19) e = b5(1).skinIndex; if (t) return { skinIndex: e, tailIndex: i }; I(e, i) } else if (!wn && !Sg.length && !(et >= 2 && !z.dmgpot.soldier) && !z.doAssassin) { if (t) return b5(1); b5() } else if (et >= 2 && !z.antiOneTickBowInsta && !wn) { if (t) return { skinIndex: 7, tailIndex: z.tailIndex }; I(7) } else if (!wn) { if (t) return { skinIndex: 22, tailIndex: 11 }; I(22, 11) } } if (t) return b5(1) } } } function Ug(e) { if (Fi) { I(Fi) } } function jg(t) { for (let e = 0; e < J.length; ++e) if (J[e].id == t) return J[e]; return null } function Hg(t) { for (let e = 0; e < J.length; ++e) if (J[e].sid == t) return J[e]; return null } function Wg(t) { for (let e = 0; e < bh.length; ++e) if (bh[e].sid == t) return bh[e]; return null } function Qg(t) { for (let e = kh.length; e--;) { if (kh[e].sid === t) { return kh[e] } } return null } function Yg(t) { for (let e = 0; e < es.players.length; ++e) { if (es.players[e].sid == t) { return es.players[e] } } return null } function zg(t) { for (let e = 0; e < es.builds.length; ++e) { if (es.builds[e].sid == t) { return es.builds[e] } } return null } let Gg = -1; const Kg = document.getElementById("fakePing"); Kg.addEventListener("change", function() { const e = document.getElementById("sliderContainer"); if (this.checked) { e.style.display = "block" } else { e.style.display = "none" } }); const Xg = document.getElementById("pingSlider"); const Jg = document.getElementById("pingSliderValue"); Xg.addEventListener("input", function() { Jg.innerText = this.value }); const qg = false; function $g() { const e = Date.now() - Gg; window.pingTime = e; bn = e; if (!qg || !qg.checked) { if (!Kg.checked) { wd = e } else { const t = parseInt(Xg.value); wd = f(Math.random() * t) + parseInt(Xg.value) + 90 } Zh.innerText = e + (Kg.checked ? wd : "") + " ms"; yt.push(e); if (yt.length >= 4) { yt.shift() } xt = yt.reduce((e, t) => e + t, 0) / yt.length } else { Zh.innerText = "Hidden" } } let Zg; function ey() { Zg && clearTimeout(Zg), nh() && (Gg = Date.now(), T.send("0")), Zg = setTimeout(ey, 400) } function ty(e) { if (e < 0) return; const t = f(e / 60); let n = e % 60; n = ("0" + n).slice(-2), e0.innerText = "Server restarting in " + t + ":" + n, e0.hidden = !1 } window.requestAFrame = function() { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(e) { window.setTimeout(e, 1e3 / 60) } }(); function ny() { gh = Date.now(), mh = gh - xh, xh = gh, l2(), requestAFrame(ny) } X2(); ny(); function iy(e) { window.open(e, "_blank") } window.openLink = iy; window.aJoinReq = up; window.follmoo = uh; window.kickFromClan = fp; window.sendJoin = hp; window.leaveAlliance = mp; window.createAlliance = pp; window.storeBuy = Mp; window.storeEquip = Rp; window.showItemInfo = q0; window.selectSkinColor = jp; window.changeStoreIndex = Tp; window.config = K; async function sy(e) { if (!Y || ee != 5 || z.tr != 1 || z.pr != 1 || p || Mt || !to.checked) return; if (Y && Vy(z, Y, x.weapons[ee].range, true) && o4(z, Y) && !Y?.inTrap) { let e = [v3(Y, B(z.np.real, Y.np.real), se(Y, Y.KB.fpriTKB), true, 1), v3(Y, B(z.np.real, Y.np.real), se(Y, Y.KB.fsecKB), true, 1)]; if (!e[0]) return; let t = { newPos: { ...Y } }; let n = Ne(Y.np.real.x - e[0].x, Y.np.real.y - e[0].y); let i = P3(Y.np.real.x, Y.np.real.y, B(z, Y), j(n, 170)); t.newPos.NEWX = i.x; t.newPos.NEWY = i.y; t.originDir = B(z, Y); t.newPos.dstSpd = n; t.newPos["static"] = true; t.newPos.expire = 3; m3(t.newPos); b(`KnockBack Insta on ${Y.name}[${Y.sid}]`, "", "#5c0620", false, true); hn = true; p = true; I(53, 11); g[0] = B(z, Y); ct = true; T.send("G", A, true); y = A; await A4(); if (Y) { p = true; hn = false; y = ee; T.send("G", ee, true); g[0] = B(z, Y); T.send("D", B(z, Y), "client"); I(7, 18) } else { p = false; return } await A4(); p = false } } function Z(e) { return e * (W / 180) } function oy(e) { return e * 180 / W } var ee, A, ry, ay, ly, cy, dy, uy, fy, hy, py = []; function my(e) { return e.offsetParent !== null } function gy(e) { return document.getElementById(e) } function te(t) { if (t == z.sid) return true; for (let e = 0; e < py.length; e += 2) { if (t == py[e]) return true } return false } function yy() { ee = null; ry = null; A = null; dy = null; ay = null; ly = null; cy = null; fy = null; hy = null; for (let e = 0; e < 9; e++) { if (my(document.getElementById("actionBarItem" + e))) { ee = e } } for (let e = 9; e < 16; e++) { if (my(document.getElementById("actionBarItem" + e))) { A = e } } for (let e = 16; e < 19; e++) { if (my(document.getElementById("actionBarItem" + e))) { ry = e - 16 } } for (let e = 19; e < 22; e++) { if (my(document.getElementById("actionBarItem" + e))) { ay = e - 16 } } for (let e = 22; e < 26; e++) { if (my(document.getElementById("actionBarItem" + e))) { ly = e - 16 } } for (let e = 26; e < 29; e++) { if (my(document.getElementById("actionBarItem" + e))) { cy = e - 16 } } for (let e = 29; e < 31; e++) { if (my(document.getElementById("actionBarItem" + e))) { dy = e - 16 } } for (let e = 31; e < 33; e++) { if (my(document.getElementById("actionBarItem" + e))) { uy = e - 16 } } if (my(document.getElementById("actionBarItem" + 36))) { fy = 36 - 16 } for (let e = 33; e < 39; e++) { if (my(document.getElementById("actionBarItem" + e)) && e != 36) { hy = e - 16 } } function e(e) { return null !== e.offsetParent }!A && (qt = ee) } function xy(t, e) { if (Ei.includes(t.sid) && !e) return; if (e) { t = Hg(t.sid) } if (e && t === null) return; if (t.buildIndex == -1) { if (t.weaponIndex <= 8) { let { speed: e } = x.weapons[t.primary]; t.pr = j(1, t.pr + (t.delta > 190 ? t.delta : ce) / (e * t.samRP)) } else if (t.weaponIndex > 8) { let { speed: e } = x.weapons[t.secondary]; t.sr = j(1, t.sr + (t.delta > 190 ? t.delta : ce) / (e * t.samRS)) } } t.tr = j(1, t.tr + t.delta / 2400); rn[t.sid] = t.pr; an[t.sid] = t.sr; ln[t.sid] = t.tr; if (t.sid != z.sid) { if (!t.hasSoldier && t.skinIndex == 6) { t.hasSoldier = true } if (!t.hasTank && t.skinIndex == 40) { t.hasTank = true } } } function wy(i) { for (let n = 0; n < ie.length; n++) { for (let e = 0; e < ie[n].players.length; e++) { let t = ie[n].players[e]; if ((i.name && !i.sid && t.name == i.name || i.sid && i.sid == t.sid) && t.visible) { if (!i.spotted) { let e = `${t.name}[${t.sid}]`; if (!L3(z, t)) b(`bot ID: [${ie[n].sid}] spotted ${e}`, "", i.color, false, true) } i.spotted = true; return t } } } return false } function by(t) { for (let e = 0; e < J.length; e++) { if (!J[e].visible && J[e].sid != z.sid && !Ei.includes(J[e].sid)) { t = J[e]; t.pr != undefined && t.pr !== 1 && (t.pr = j(1, t.pr + ce / (x.weapons[t?.primary]?.speed * t.samRP))); t.sr != undefined && t.sr !== 1 && (t.sr = j(1, t.sr + ce / (x.weapons[t?.secondary]?.speed * t.samRS))); t.tr != undefined && t.tr !== 1 && (t.tr = j(1, t.tr + ce / 2500)); rn[t.sid] = t.pr; an[t.sid] = t.sr; ln[t.sid] = t.tr } } } function vy(e, t) { return se(e, t) } function ky(e, t) { return S(e.x - t.x) + S(e.y - t.y) } function Ay(e, t) { let n = S(e - t); n = n % ae; if (n > W) { n = ae - n } return n } function Iy() { if (Nn.length + On.length >= 66 || !en || !_n || S0.style.display != "none" || !Qs.checked) return; if (Fn.length) { if (!Array.isArray(Fn[0]) && z.points >= C0.find(e => e.id == Fn[0]).price) Mp(Fn[0], 0); if (Array.isArray(Fn[0]) && z.points >= B0.find(e => e.id == Fn[0][0]).price) Mp(Fn[0][0], 1) } if (Fn.length == 0 && Nn.length != C0.length - 1) { let e = C0.find(e => e.id != 45 && !Nn.includes(e.id) && z.points >= e.price); if (e) Mp(e.id, 0); let t = B0.find(e => !On.includes(e.id) && z.points >= e.price); if (t) Mp(t.id, 1) } } function Sy(e, t) { const n = e * (W / 180); const i = t * (W / 180); const s = (n + i) / 2; let o = s % ae; if (o < 0) { o += ae } o = o * (180 / W); return o } var Ey = false; async function Ty(e, t, n, i, s, o, r = Math.abs, a = Math.round) { if (!Y || Ey) return; let l = B(z, Y), c = l4(z, l), d = B(c.accel, Y), u = c.accel.x - Y.x2, f = c.accel.y - Y.y2, h = se(c.accel, Y); T.send("a", l, "client"); if (r(u) <= 70 || r(f) <= 70) { const m = u * u + f * f; var p = Math.sqrt(m) - 70; if (p <= 0) { Ey = true; p = p * -.5; n = Y.x2 - p * Math.cos(d); i = Y.y2 - p * Math.sin(d); s = n + p * Math.cos(d); o = i + p * Math.sin(d); console.log({ x: n, y: i }, { x: s, y: o }, "did", v); console.log(a(Y.movSpd), a(z.movSpd), p) } } await A4(); console.log(se({ x: n, y: i }, Y)); Ey = false; console.log("_____________________________") } function I(e, t) { if (!isNaN(e)) { if (!Nn.includes(e)) { if ($t != 0) Rp(0, 0), lt = 0, nn = 0 } else { if ($t != e) Rp(e, 0), lt = e, nn = e } } if (!isNaN(t)) { if (!On.includes(t)) { if (Zt != 0) Rp(0, 1), mt = 0, sn = 0 } else { if (Zt != t) Rp(t, 1), mt = t, sn = t } } } function Cy(e, t) { if (e.x2 && t.x2) return D(re(t.y2 - e.y2, 2) + re(t.x2 - e.x2, 2)); if (!e.x2 == undefined && !t.x2) return D(re(t.y - e.y, 2) + re(t.x - e.x, 2)); if (e.x2 && !t.x2) return D(re(t.y - e.y2, 2) + re(t.x - e.x2, 2)); if (!e.x2 && t.x2) return D(re(t.y2 - e.y, 2) + re(t.x2 - e.x, 2)) } function By(i, s) { for (let e = 0, t, n; e < i.length; e++) { for (n = s.length, t = i[e]; n--;) { if (t === s[n]) { i.splice(e, 1); s.splice(n, 1); e--; break } } } } function B(e, t) { return P((t.y2 || t.y) - (e.y2 || e.y), (t.x2 || t.x) - (e.x2 || e.x)) } function Dy(e, t) { return d((e.x2 || e.x) - (t.x2 || t.x), (e.y2 || e.y) - (t.y2 || t.y)) } function Py(e, t, n) { return (e.x * t + e.y * n) / (e.x * n - e.y * t) } var Ry, My = 65, ne = { x: null, y: null, objs: [], dev: null, dir: null }, Ny = { x: null, y: null }; function Oy(r, e, t, n, i, s, o) { if (!Y?.inTrap || !Y || !In || Y && z.skinIndex == 45 && se(z, Y) > 90) { jt = false; Ht = false; jn = "not"; ne = "not"; Ny = "not"; ni == "autopush" && T.send("a", undefined); return false } let a; let l; jt = false; Ht = false; r = B(z, Y); ne = { x: U(r), y: V(r), objs: [], dev: null, dir: null }; let c = Q.sort((e, t) => se(e, Y) - se(t, Y)); for (let e = 0; e < c.length; e++) { i = c[e]; if (Y.inTrap.sid === i.sid) continue; if (se(Y.inTrap, i) <= 50 + (i.type == 1 ? i.scale * .55 : i.scale) + 26 && (te(i?.owner?.sid) && i?.group?.name == "spikes" || !Y.team && i?.group?.name == "spikes" && i?.owner?.sid != Y.sid || i?.type === 1 && i.y >= 12e3) || ne.objs.length === 1 && se(i, Y.inTrap) <= 50 + i.scale + 22.5 && se(i, ne.objs[0]) <= ne.objs[0].scale + i.scale + 42.5 && !i.ignoreCollision) { let e = P(i.y - Y.y2, i.x - Y.x2); let t = 170 - Dy(i, Y); if (ne.objs[0] && Ay(B(i, Y.inTrap), B(ne.objs[0], Y.inTrap)) <= 1.9 && se(i, ne.objs[0]) <= i.scale + ne.objs[0].scale + 67.5 || !ne.objs.length) { ne.x += t * U(e); ne.y += t * V(e); if (ne.objs[0]) console.log(Ay(B(i, Y.inTrap), B(ne.objs[0], Y.inTrap)), Math.round(se(i, ne.objs[0])) - (ne.objs[0].scale + i.scale)); ne.objs.push(i) } if (Py(ne, Y.inTrap.x - Y.x2, Y.inTrap.y - Y.y2) > 0) { ne.x += (Y.inTrap.x - Y.x2) * 2; ne.y += (Y.inTrap.y - Y.y2) * 2 } } } if (Ne(ne.x, ne.y) > 5) { let e = Dy(Y, z); let t = Ay(r, P(ne.y, ne.x)); let i = ne.objs[0]; let n = se(Y, i) <= i.scale + 38.75; let s = 3600 + re(e, 2) - (28.5 + (n ? 71.5 : 0)) * e * U(t); let o = Math.acos((re(e, 2) + s - 3600) / (2 * e * D(s))); if (o) { l = r - Math.sign((Y.x2 - z.x2) * ne.y - (Y.y2 - z.y2) * ne.x) * o; let e = se(z, Y) + 30; Ny = { x: z.x2 + e * U(l), y: z.y2 + e * V(l) }; let t = E3(z, l, l4(z, l, z, 1)); let n = Ay(B(Y, i), B(z, Y)) <= 2; if ((!Y.hitSpike || se(z, Ny) > 100 && Y.hitSpike) && Ys.checked || !Ys.checked && n && !t) { T.send("a", l, "autopush"); ne.dev = o; ne.dir = l } else { T.send("a", null, "autopush") } jt = true; Ht = true } } } function Ly(t, n, e) { if (!Y?.inTrap || !Y || !In) { jt = false; Ht = false; jn = "not"; Ny = "not"; ni == "autopush" && T.send("a", undefined); ne = "not"; return false } if (!t) t = []; let i = Q.filter(e => !t.includes(e.sid) && se(Y.inTrap, e) <= 50 + (e.type == 1 ? e.scale * .55 : e.scale) + 26 && (te(e?.owner?.sid) && e?.group?.name == "spikes" || !Y.team && e?.group?.name == "spikes" && e?.owner?.sid != Y.sid || e?.type == 1 && e.y >= 12e3)).sort((e, t) => se(e, Y) - se(t, Y)); if (!i.length || se(z, Y) >= 400) { Ht = false; jt = false; jn = "not"; ne = "not"; Ny = "not"; ni == "autopush" && T.send("a", undefined); return false } Y = Hg(Y.sid); const s = Y.x2 - i[0].x; const o = Y.y2 - i[0].y; const r = Y.x2 - z.x2; const a = Y.y2 - z.y2; const l = Y.x2 - Y.inTrap.x; const c = Y.y2 - Y.inTrap.y; const d = i[0].x - Y.inTrap.x; const u = i[0].y - Y.inTrap.y; const f = D(s * s + o * o); Qn = { x: s / f, y: o / f }; const h = D(r * r + a * a); Wn = { x: r / h, y: a / h }; const p = D(l * l + c * c); Yn = { x: l / p, y: c / p }; const m = D(d * d + u * u); let g = { x: d / m, y: u / m }; const y = [P(Qn.y, Qn.x), P(Yn.y, Yn.x), P(Wn.y, Wn.x)]; const x = [(y[0] + y[1]) / 2, (y[0] + y[2]) / 2]; const w = [{ x: U(x[0]), y: V(x[0]) }, { x: U(x[1]), y: V(x[2]) }]; Jn = Qn.x * Wn.x + Qn.y * Wn.y; Xn = i[0]?.type == 1 ? (i[0].scale * .55, i[0].realScale = i[0].scale * .55) : i[0].scale; qn = i[0]; jn = { x: Y.x2 + Qn.x * (Jn + Xn), y: Y.y2 + Qn.y * (Jn + Xn) }; const b = B(z, jn); const v = se(z, jn); const k = Ay(b, B(z, Y)); e = v <= 100 && k <= 2; let A = C.checkCollision2(Y, i[0]); let I = { x: Y.x2, y: Y.y2, scale: 35, "do": true }; let S = e ? Q : Q.concat(I); let E = Date.now(); Y3 = []; if (A) { Fy() } if (Y.hitSpike && !zs.checked) { jt = false; Ht = false; jn = "not"; Ny = "not"; ni == "autopush" && T.send("a", undefined); ne = "not"; return } if (e) { Oy() } if (!e) { U3({ player: z, target: { x: Y.x2 + Qn.x * (Jn + Xn + 35), y: Y.y2 + Qn.y * (Jn + Xn + 35) }, buildings: S, clan: py }).then(e => { let t = e; Y = Hg(Y.sid); Ht = false; jt = true; if (!t) { Ht = false; jt = false; jn = "not"; ne = "not"; Ny = "not"; return false } n = Ax(E, 360, true); if (!n) { Ht = false; jt = false; jn = "not"; ne = "not"; Ny = "not"; Y3 = []; return } })["catch"](e => { jt = false; Ht = false; jn = "not"; return false }) } } async function Fy() { if (Y && (Y.weaponR == 1 || Y.skinIndex != 6) && !p && (se(z.np.accel, Y.np.real, "player") <= x.weapons[ee].range || se(z, Y, "player") <= x.weapons[ee].range) && z.pr == 1 && en && (Y.weaponIndex == 11 && X.getAngleDist(B(z, Y) + W, Y.dir) > W / 3 || Y.weaponIndex != 11)) { un = false; p = true; if (z.skinIndex != 11) { I(7, 18) } else Rp(19, 1); g[0] = B(z, Y); ct = true; T.send("D", B(z, Y), "client"); T.send("G", ee, true); y = ee; await A4(); I(53); await A4(); p = false } } function _y(e, t) { if (!e) return; !t && (t = 111); return j(1, e.weaponR + t / x.weapons[e.weaponIndex]?.speed) } function Vy(e, t, n, i) { return se(e, t, "player") <= n || i && se(e?.np?.real, t?.np?.real, "player") <= n } function Uy(e, t, n, i, s, o) { s = se(e, t) - 35; o = s / (i * 111); return o } function jy(e, s, t, n) { const i = e.map(e => { let t = P3(e.x2, e.y2, B(e, s), 35); const n = Uy(t, s, 5, 3.6); const i = Uy(t, s, 1, 1.54); return { player: e, musketTicks: n, turretBallTicks: i } }); i.sort((e, t) => e.musketTicks - t.musketTicks); const o = oe(...i.map(e => e.turretBallTicks)); i.forEach(e => { e.waitTicksForTurretBall = o - e.turretBallTicks }); const r = i.map(e => e.player.name); i.forEach(e => { e.waitTimeForMusket = e.musketTicks * 111; e.waitTimeForTurretBall = e.waitTicksForTurretBall * 111 }); return { pP: i, syncOrder: r } } function Hy(e) { const t = f(Math.random() * 360); const n = f(Math.random() * 81) + 20; const i = f(Math.random() * 61) + 20; const s = `hsl(${t}, ${n}%, ${i}%)`; if (!e) return s; if (e.some(({ color: e }) => e && Wy(e, s))) { return Hy(e) } return s } function Wy(e, t) { const [n, i, s] = Qy(e); const [o, r, a] = Qy(t); const l = S(n - o); const c = S(i - r); const d = S(s - a); return l <= 60 && c <= 20 && d <= 20 } function Qy(e) { const t = e.indexOf(",") > -1 ? "," : " "; const [n, i, s] = e.substr(e.indexOf("(") + 1).split(")")[0].split(t).map(Number); const o = n / 255; const r = i / 255; const a = s / 255; const l = Math.max(o, r, a); const c = Math.min(o, r, a); let d, u, f; if (l === c) { d = 0 } else if (l === o) { d = 60 * ((r - a) / (l - c)) + 0 } else if (l === r) { d = 60 * ((a - o) / (l - c)) + 120 } else { d = 60 * ((o - r) / (l - c)) + 240 } f = (l + c) / 2; if (l === c) { u = 0 } else if (f <= .5) { u = (l - c) / (l + c) } else { u = (l - c) / (2 - l - c) } return [H(d), H(f * 100), H(u * 100)] } function Yy(e) { return e.type === 1 && e.y >= 12e3 ? e.scale * .55 : e.type === 1 ? e.scale * .6 : e.type === 0 ? e.scale * .7 : e.scale } const zy = ` self.onmessage = (msg) => { const bitmap = msg.data.bitmap; const player = JSON.parse(msg.data.R) const time = msg.data.time const size = msg.data.size const res = msg.data.res const canvas = new OffscreenCanvas(bitmap.width, bitmap.height); const ctx = canvas.getContext("2d"); ctx.drawImage(bitmap, 0, 0); ctx.clearRect(Math.floor(bitmap.width/2), Math.floor(bitmap.height/2), 1, 1); const endpoints = []; const data = ctx.getImageData(0,0,bitmap.width, bitmap.height).data; const map = new Map(canvas,player,size,res); for(let i = 0;i < data.length;i += 4){ let l = i / 4; map.graph[l % bitmap.width][Math.floor(l / bitmap.width)].cost = data[i] if(data[i + 2]){ endpoints.push({ x: l % bitmap.width, y: Math.floor(l / bitmap.width), }); } } bitmap.close(); if(!endpoints.length){ endpoints.push(map.getCentreNode()); } //begin the pathfinding let openSet = new BinHeap(); openSet.setCompare = (a, b) => a.f > b.f; openSet.push(map.getCentreNode()); let currentNode; while(openSet.length){ currentNode = openSet.remove(0) if(endpoints.some((goal) => goal.x == currentNode.x && goal.y == currentNode.y)){ break; } let neighbors = map.getNeighbor(currentNode.x, currentNode.y,player,size,res); for(let i = 0;i < neighbors.length;i++){ let neighbor = neighbors[i]; if(neighbor && neighbor.cost == 0){//make weighted later let tempG = currentNode.g + Map[i % 2 == 0 ? "DiagonalCost" : "TraversalCost"]; if(tempG < neighbor.g){ neighbor.parent = currentNode; neighbor.g = tempG; neighbor.h = Math.min.apply(Math, endpoints.map((goal) => fastHypot(neighbor.x - goal.x, neighbor.y - goal.y))); if(!neighbor.inset){ openSet.insert(neighbor); } } } } } //recontruct path if(!endpoints.some((goal) => goal.x == currentNode.x && goal.y == currentNode.y)){ currentNode = map.getLowest('h',player,size,res); } let output = []; while(currentNode.parent){ let nextNode = currentNode.parent; let d = Math.round(Math.atan2(nextNode.y - currentNode.y, nextNode.x - currentNode.x) / Math.PI * 4); if(d < 0){d+=8}; output.push(d); currentNode = nextNode; } output = new Uint8Array(output.reverse()).buffer; self.postMessage(output, [output]); } //approximate hypot function fastHypot(a, b){ const c = Math.SQRT2-1; a = Math.abs(a); b = Math.abs(b); if(a > b){ let temp = a; a = b; b = temp; } return (c * a) + b } //Map Constructor for object class Map{ static TraversalCost = 1; static DiagonalCost = Math.sqrt(2) * 1; constructor(canvas,player,size,res){ //init variables this.width = canvas.width; this.height = canvas.height; this.middleWidth = Math.floor(this.width / 2); this.middleHeight = Math.floor(this.height / 2); this.graph = new Array(canvas.width); for(let x = 0;x < this.width;x++){ this.graph[x] = new Array(this.height); for(let y = 0;y < this.height; y++){ this.graph[x][y] = new Node(x, y); } } this.getCentreNode(player,size,res).g = 0; this.getCentreNode(player,size,res).pending = false; } getLowest(type,player,size,res){ let lowestNode = this.graph[0][0]; for(let x = 0;x < this.width;x++){ for(let y = 0;y < this.height; y++){ let node = this.getNode(x, y, player,size,res) if(lowestNode[type] > node[type]){ lowestNode = node; } } } return lowestNode; } getNode(x, y, player,size,res){ let X = x*res+ player.x2-size, Y = y*res + player.y2-size if(X<0||Y<0||X>14400||Y>14400){ if(this.graph[x] && this.graph[x][y]?.cost!=undefined){ this.graph[x][y].cost = 100 return this.graph[x][y]; } return undefined } if(this.graph[x]){ return this.graph[x][y]; } } getCentreNode(player,size,res){ return this.graph[this.middleWidth][this.middleHeight]; } getNeighbor(x, y,player,size,res){ return [ this.getNode(x - 1, y - 1,player,size,res), this.getNode(x + 0, y - 1,player,size,res), this.getNode(x + 1, y - 1,player,size,res), this.getNode(x + 1, y + 0,player,size,res), this.getNode(x + 1, y + 1,player,size,res), this.getNode(x + 0, y + 1,player,size,res), this.getNode(x - 1, y + 1,player,size,res), this.getNode(x - 1, y + 0,player,size,res), ] } lineOfSight(node1, node2) { let x0 = node1.x; let y0 = node1.y; let x1 = node2.x; let y1 = node2.y; let dx = Math.abs(x1 - x0); let dy = Math.abs(y1 - y0); let sx = x0 < x1 ? 1 : -1; let sy = y0 < y1 ? 1 : -1; let err = dx - dy; while (x0 !== x1 || y0 !== y1) { if (this.graph[x0][y0].cost !== 0) { return false; // Line-of-sight blocked } let e2 = 2 * err; if (e2 > -dy) { err -= dy; x0 += sx; } if (e2 < dx) { err += dx; y0 += sy; } } return true; // Line-of-sight clear } } //Node for Map class Node{ constructor(x, y){ this.x = x; this.y = y; this.g = Number.POSITIVE_INFINITY;//distance to start this.h = Number.POSITIVE_INFINITY;//estimated distance to end this.parent;//where it came from } get f(){ return this.h + this.g; } } //binary heap object constructor class BinHeap extends Array { //private variable declaration #compare = (a, b) => a < b; //constuctor constructor(len = 0) { super(len); } //change compare function set setCompare(func) { if (typeof func == "function") { this.#compare = func; } else { throw new Error("Needs a function for comparing") } } //sort into a binary heap sort() { for (let i = Math.trunc(this.length / 2); i >= 0; i--) { this.siftDown(i) } } //old array sort arraySort(compare) { super.sort(compare) } //sift down siftDown(index) { let left = index * 2 + 1; let right = index * 2 + 2; let max = index; if (left < this.length && this.#compare(this[max], this[left])){ max = left; } if (right < this.length && this.#compare(this[max], this[right])){ max = right; } if (max != index) { this.swap(index, max); this.siftDown(max); } } //sift up siftUp(index) { let parent = (index - (index % 2 || 2)) / 2; if (parent >= 0 && this.#compare(this[parent], this[index])) { this.swap(index, parent); this.siftUp(parent); } } //inserts element into the binary heap insert(elem) { this.push(elem); this.siftUp(this.length - 1); } //removes elem at index from binary heap remove(index) { if (index < this.length) { this.swap(index, this.length - 1); let elem = super.pop(); this.siftUp(index); this.siftDown(index); return elem; } else { throw new Error("Index Out Of Bounds") } } //changes elem at index update(index, elem) { if (index < this.length) { this[index] = elem; this.siftUp(index); this.siftDown(index); } else { throw new Error("Index Out Of Bounds") } } //swap two elem at indexes swap(i1, i2) { let temp = this[i1]; this[i1] = this[i2]; this[i2] = temp; } } `; var Gy; var Ky; class Xy { constructor(e, t) { this.size = e; this.res = t; this.prevPos = {}; this.prevPath = []; b(`Default pathfinder | radius: ${e} resolution: ${t} `, "", "#5c0620", false, true); b(`use !help, !commands to navigate hack.`, "", "#5c0620", false, true); this.blob = new Blob([zy], { type: "application/javascript" }); this.url = URL.createObjectURL(this.blob); this.worker = new Worker(this.url); this.worker.url = this.url; this.worker.onmessage = e => { Ky = Date.now() - Gy; this.attemptFulfil(new Uint8Array(e.data)) }; this.worker.onerror = e => { throw e }; this.initiateCanvas() } close() { this.worker.terminate(); URL.revokeObjectURL(this.url); si = null } attemptFulfil(e, t = 0) { if (this.resolve) { this.resolve(e); this.resolve = null } else { if (t < 10) { setTimeout(() => { this.attemptFulfil(e, t + 1) }, 0) } else { console.error("Unexpected Message from Worker at ", this) } } } initiateCanvas() { this.width = c(this.size * 2 / this.res) + 1; if (this.canvas) { this.canvas.width = this.width; this.canvas.height = this.width } else { this.canvas = new OffscreenCanvas(this.width, this.width); this.ctx = this.canvas.getContext("2d") } } setBuildings(e) { this.buildings = e } setSpeed(e) { this.estimatedSpeed = e } setPos(e, t) { this.x = e; this.y = t } clearPath() { this.prevPath = [] } pathBlocked(e) { if (se(e[0], si.finalGoal) >= 30) { this.pathBlocked = true } } async drawPath(n, e = "#0000FF", i = this, t = "#00FF00") { if (this.prevPath.length) { const s = Date.now() * .3; n.lineWidth = 5; n.globalAlpha = 1; for (let e = 0; e < this.prevPath.length - 1; e++) { const o = (e / (this.prevPath.length - 1) * 360 + s) % 360; const r = ((e + 1) / (this.prevPath.length - 1) * 360 + s) % 360; const [a, l, c] = qy(o / 360, 1, .55); const [d, u, f] = qy(r / 360, 1, .55); const h = n.createLinearGradient(this.prevPath[e].x, this.prevPath[e].y, this.prevPath[e + 1].x, this.prevPath[e + 1].y); h.addColorStop(0, `rgba(${a}, ${l}, ${c}, 1)`); h.addColorStop(1, `rgba(${d}, ${u}, ${f}, 1)`); n.beginPath(); n.moveTo(this.prevPath[e].x, this.prevPath[e].y); n.lineTo(this.prevPath[e + 1].x, this.prevPath[e + 1].y); n.strokeStyle = h; n.stroke() } if (i.x && i.y) { n.lineWidth = 5; n.globalAlpha = 1; n.strokeStyle = "#ffffff"; n.beginPath(); for (let t of this.prevPath) { n.globalAlpha = 1; let e = Math.hypot(i.x - t.x, i.y - t.y); if (e < this.estimatedSpeed + this.res * 2) { if (e > this.estimatedSpeed) { n.moveTo(i.x, i.y); n.lineTo(t.x, t.y) } break } } n.stroke() } } } async response() { return await new Promise(e => { this.resolve = e }) } checkBoundaries(e, t) { return e >= 0 && t >= 0 && e <= 14400 && t <= 14400 } fastHypot(t, n) { const e = Math.SQRT2 - 1; t = Math.abs(t); n = Math.abs(n); if (t > n) { let e = t; t = n; n = e } return e * t + n } getPath() { window.pf = this; for (let n in this.prevPath) { let e = this.prevPath[n]; let t = Math.hypot(z.x2 - e.x, z.y2 - e.y); if (t < this.estimatedSpeed + this.res * 2) { if (t > this.estimatedSpeed) { return { ang: Math.atan2(e.y - z.y2, e.x - z.x2), dist: parseInt(n) } } else { break } } } } norm(e) { return Math.max(0, Math.min(this.width - 1, e)) } async initCalc(t, e = false, n) { if (this.resolve) { return } this.prevGoal = t.map(e => { return { x: e.x, y: e.y } }); if (e && !n) { this.prevPos = this.prevPath[0] } else { this.prevPos = { x: this.x, y: this.y } } t = t.map(e => { return { x: this.norm((e.x - this.prevPos.x + this.size) / this.res), y: this.norm((e.y - this.prevPos.y + this.size) / this.res) } }); const s = ae; this.ctx.fillStyle = "#FF0000"; for (let i of this.buildings) { let e = (i.x - this.prevPos.x + this.size) / this.res; let t = (i.y - this.prevPos.y + this.size) / this.res; let n = i.pathScale; this.ctx.beginPath(); this.ctx.arc(e, t, n / this.res, 0, s); this.ctx.fill() } this.ctx.fillStyle = "#0000FF"; for (let e of t) { this.ctx.fillRect(Math.round(e.x), Math.round(e.y), 1, 1) } let i = await createImageBitmap(this.canvas, 0, 0, this.width, this.width); this.worker.postMessage({ bitmap: i, R: le(z), time: Date.now(), res: this.res, size: this.size }); Gy = Date.now(); this.initiateCanvas(); let o = await this.response(); const r = [-1, -1, 0, 1, 1, 1, 0, -1]; const a = [0, -1, -1, -1, 0, 1, 1, 1]; if (!e || n) { this.prevPath = [] } let l = { x: this.prevPos.x, y: this.prevPos.y }; for (let e = 0; e < o.length; e++) { l = { x: l.x + r[o[e]] * this.res, y: l.y + a[o[e]] * this.res }; this.checkBoundaries(l.x, l.y) && this.prevPath.unshift(l) } return } async pathTo(n, t) { if (!(n instanceof Array)) { n = [n] } if (this.prevGoal?.length == n.length && this.prevGoal.every((e, t) => e.x == n[t].x && e.y == n[t].y) || t) { let e = this.getPath(); if (e) { if (e.dist < 150 || t) { this.initCalc(n, true, t) } return e } } await this.initCalc(n, false, t); return this.getPath() } } ri = new Xy(2e3, 10); class Jy { constructor(e) { this.pathfinder = e; this.goal = { pathing: false, type: null, entity: null, pos: { x: null, y: null }, hasGoal: false }; this.finalGoal = { x: null, y: null }; this.waypoints = { death: { x: null, y: null }, quick: { x: null, y: null } } } setWaypoint(e, t) { if (t.x && t.y) { this.waypoints[e] = { x: t.x, y: t.y } } } drawWaypointMap(t, n) { t.font = "34px Lilita One"; t.textBaseline = "middle"; t.textAlign = "center"; for (let e in this.waypoints) { if (e == "death") { t.fillStyle = "#E44" } else if (e == "quick") { t.fillStyle = "#44E" } else { t.fillStyle = "#fff" } if (this.waypoints[e].x && this.waypoints[e].y) { t.fillText("x", this.waypoints[e].x / 14400 * n.width, this.waypoints[e].y / 14400 * n.height) } } t.strokeStyle = "#4E4"; if (this.goal.type == "xpos") { t.beginPath(); t.moveTo(this.goal.pos.x / 14400 * n.width, 0); t.lineTo(this.goal.pos.x / 14400 * n.width, n.height); t.stroke() } else if (this.goal.type == "ypos") { t.beginPath(); t.moveTo(0, this.goal.pos.y / 14400 * n.height); t.lineTo(n.width, this.goal.pos.y / 14400 * n.height); t.stroke() } else if (this.goal.pos.x && this.goal.pos.y) { t.fillStyle = "#4E4"; t.fillText("x", this.goal.pos.x / 14400 * n.width, this.goal.pos.y / 14400 * n.height) } } drawWaypoints(n, i) { for (let e in this.waypoints) { if (e == "death") { n.strokeStyle = "#E44" } else if (e == "quick") { n.strokeStyle = "#44E" } else { n.strokeStyle = "#fff" } if (this.waypoints[e].x && this.waypoints[e].y) { n.save(); n.translate(this.waypoints[e].x, this.waypoints[e].y); n.rotate(i); n.globalAlpha = .6; n.lineWidth = 8; for (let e = 0; e < 4; e++) { n.rotate(e * Math.PI / 2); n.beginPath(); n.arc(0, 0, 50, 0, Math.PI / 4); n.stroke() } n.lineWidth = 6; n.globalAlpha = Math.min(.4, 1 - Math.pow(Math.sin(i / 2), 2) / 1.2); n.beginPath(); n.arc(0, 0, 50 + Math.max(0, Math.tan(i / 2)), 0, ae); n.stroke(); n.restore() } } n.strokeStyle = "#4F4"; n.lineWidth = 10; n.globalAlpha = .8; if (this.goal.type == "xpos") { n.beginPath(); n.moveTo(this.goal.pos.x, 0); n.lineTo(this.goal.pos.x, 14400); n.stroke() } else if (this.goal.type == "ypos") { n.beginPath(); n.moveTo(0, this.goal.pos.y); n.lineTo(14400, this.goal.pos.y); n.stroke() } else if (this.goal.pos.x && this.goal.pos.y) { n.save(); n.translate(this.goal.pos.x, this.goal.pos.y); n.beginPath(); n.arc(0, 0, 10, 0, ae); n.stroke(); n.beginPath(); n.rotate(i / 3); let t = Math.cos(i) * 10; for (let e = 0; e < 3; e++) { n.rotate(ae / 3); n.moveTo(60 + t, 0); n.lineTo(120 + t, -20); n.lineTo(100 + t, 0); n.lineTo(120 + t, 20); n.closePath() } n.stroke(); n.restore() } } setSelf(e) { this.self = e } setSend(e) { this.send = e } abort() { this.goal.pathing = false } updateChat(e, t) { if (t != this.self.sid) { return } let n = e.trimEnd().split(" "); if (n[0] == "path") { if (this.goal.type) { this.goal.pathing = true; this.pathfinder.clearPath() } } else if (n[0] == "stop") { if (this.goal.pathing) { this.goal.pathing = false; this.pathfinder.clearPath(); T.send("a", null, "client") } } else if (n[0] == "goal" || n[0] == "goto") { if (isNaN(parseInt(n[1]))) { if (n[1] == "x") { let e = parseInt(n[2]); if (e >= 0 && e <= 14400) { this.goal.pathing = n[0] == "goto"; this.goal.type = "xpos"; this.goal.pos.x = e } } else if (n[1] == "y") { let e = parseInt(n[2]); if (e >= 0 && e <= 14400) { this.goal.pathing = n[0] == "goto"; this.goal.type = "ypos"; this.goal.pos.y = e } } else if (n[0] == "goal" && !n[1]) { this.goal.type = "pos"; this.goal.pos.x = this.self.x; this.goal.pos.y = this.self.y } } else { let e = parseInt(n[1]); let t = parseInt(n[2]); if (e >= 0 && e <= 14400 && t >= 0 && t <= 14400) { this.goal.pathing = n[0] == "goto"; this.goal.type = "pos"; this.goal.pos.x = e; this.goal.pos.y = t } } } else if (n[0] == "thisway" || n[0] == "project") { let e = parseInt(n[1]); let t = parseFloat(n[2]) || this.self.dir; if (!isNaN(e) && this.self.x && this.self.y && this.self.dir) { this.goal.type = "pos"; this.goal.pos.x = Math.max(0, Math.min(14400, this.self.x + Math.cos(t) * e)); this.goal.pos.y = Math.max(0, Math.min(14400, this.self.y + Math.sin(t) * e)) } } else if (n[0] == "follow" || n[0] == "flw") { if (n[1] == "player" || n[1] == "ply") { this.goal.pathing = true; this.goal.type = "player"; if (n[2]) { this.goal.entity = n.slice(2).join(" ") } else { this.goal.entity = -1 } } else if (n[1] == "team") { this.goal.pathing = true; this.goal.type = "team" } else if (n[1] == "animal") { this.goal.pathing = true; this.goal.type = "animal"; if (n[2]) { this.goal.entity = n[2] } else { this.goal.entity = -1 } } } else if (n[0] == "find" || n[0] == "fnd") {} else if (n[0] == "waypoint" || n[0] == "wp") { if (n[1] == "set") { if (Boolean(n[2]) && !this.waypoints[n[2]]) { this.waypoints[n[2]] = { x: this.self.x, y: this.self.y } } } else if (n[1] == "del") { delete this.waypoints[n[2]] } else if (n[1] == "goto") { if (this.waypoints[n[2]]?.x && this.waypoints[n[2]]?.y) { this.goal.pathing = true; this.goal.type = "pos"; this.goal.pos.x = this.waypoints[n[2]].x; this.goal.pos.y = this.waypoints[n[2]].y } } } else if (n[0] == "wander" || n[0] == "wnd") { this.goal.pathing = true; this.goal.type = "wander"; this.goal.pos.x = Math.random() * 14400; this.goal.pos.y = Math.random() * 14400 } } reachedGoal() { if (this.goal.type == "xpos") { return Math.abs(this.self.x - this.goal.pos.x) < this.pathfinder.estimatedSpeed } else if (this.goal.type == "ypos") { return Math.abs(this.self.y - this.goal.pos.y) < this.pathfinder.estimatedSpeed } else if (this.goal.type == "pos" || this.goal.type == "wander") { return Math.hypot(this.self.x - this.goal.pos.x, this.self.y - this.goal.pos.y) < this.pathfinder.estimatedSpeed } } async updatePlayers(n) { if (this.goal.pathing) { let t; if (this.goal.type == "xpos") { t = []; for (let e = -this.pathfinder.size; e <= this.pathfinder.size; e++) { t.push({ x: this.goal.pos.x, y: this.self.y + e * this.pathfinder.res }) } } else if (this.goal.type == "ypos") { t = []; for (let e = -this.pathfinder.size; e <= this.pathfinder.size; e += 3) { t.push({ x: this.self.x + e * this.pathfinder.res, y: this.goal.pos.y }) } } else if (this.goal.type == "pos" || this.goal.type == "wander") { t = { x: this.goal.pos.x, y: this.goal.pos.y } } else if (this.goal.type == "player") { if (this.goal.entity === -1) { t = []; for (let e of n) { if (e.visible && e.sid != this.self.sid) { t.push(e) } } if (!t.length) { t = null } } else { for (let e of n) { if (e.visible && e.sid != this.self.sid && (e.sid == this.goal.entity || e.name == this.goal.entity)) { t = e; break } } } } else if (this.goal.type == "team") { t = []; for (let e of n) { if (e.team == this.self.team && e.sid != this.self.sid) { t.push(e) } } if (!t.length || !this.self.team) { t = null } } if (t && !jt) { if (this.reachedGoal()) { if (this.goal.type == "wander") { this.goal.pos.x = Math.random() * 14400; this.goal.pos.y = Math.random() * 14400 } else { this.goal.pathing = false } this.pathfinder.clearPath(); T.send("a", undefined, "pathfinder") } else { let e = await ri.pathTo(t); if (e) { T.send("a", e.ang, "pathfinder") } else { T.send("a", undefined, "pathfinder") } } } this.finalGoal = t } } async updateAnimals(n) { if (this.goal.type == "animal" && this.goal.pathing) { let t; if (this.goal.entity === -1) { t = []; for (let e of n) { if (e.visible && e.sid != this.self.sid) { t.push(e) } } if (!t.length) { t = null } } else { for (let e of n) { if (e.visible && (e.sid == this.goal.entity || e.name == this.goal.entity)) { t = e; break } } } if (this.reachedGoal()) { this.pathfinder.clearPath(); this.goal.pathing = false; T.send("a", undefined, "client") } else if (t) { let e = await this.pathfinder.pathTo(t); if (e) { T.send("a", e.ang, "pathfinder") } else { T.send("a", undefined, "pathfinder") } } this.finalGoal = t } } async addBuilding(n) { await new Promise(e => { let t = setInterval(() => { if (!this.pathfinder.resolve) { e(); clearInterval(t) } }) }); let e = this.pathfinder.getPath(); let i = e?.dist + this.pathfinder.estimatedSpeed / this.pathfinder.res + 3; i = Math.min(this.pathfinder.prevPath.length - 1, Math.trunc(i)); if (i && !jt) { for (let t = i; t >= 0; t--) { let e = this.pathfinder.prevPath[t]; if (Math.hypot(e.x - n.x, e.y - n.y) < n.pathScale) { this.pathfinder.prevPath = this.pathfinder.prevPath.slice(t); let e = await this.pathfinder.pathTo(this.finalGoal, true); e && T.send("a", e.ang, "pathfinder"); break } } } } } si = new Jy(ri); function qy(e, t, n) { let i, s, o; if (t === 0) { i = s = o = n } else { const r = function r(e, t, n) { if (n < 0) n += 1; if (n > 1) n -= 1; if (n < 1 / 6) return e + (t - e) * 6 * n; if (n < 1 / 2) return t; if (n < 2 / 3) return e + (t - e) * (2 / 3 - n) * 6; return e }; const a = n < .5 ? n * (1 + t) : n + t - n * t; const l = 2 * n - a; i = r(l, a, e + 1 / 3); s = r(l, a, e); o = r(l, a, e - 1 / 3) } return [H(i * 255), H(s * 255), H(o * 255)] } async function $y() { if (wn) { I(6, 11); await A4(); await A4(); await A4(); wn = false } } function Zy() { if (ro.checked && !Ut) { const e = (e, t) => (e => e > W ? ae - e : e)(S(e - t) % ae); const s = (e, t) => D(((t.x2 ?? t.x) - (e.x2 ?? e.x)) ** 2 + ((t.y2 ?? t.y) - (e.y2 ?? e.y)) ** 2); const n = ie.filter(e => s(z, e) <= s3 + 80 && !((xn || m.q) && s(z, e) < 900 && e.sr === 1 && lo.checked) && !e.inTrap && (e.millCount === 299 || e.upgraded >= 7)); const i = n.reduce((e, t) => { const n = x4(t); return e + n }, 0) / n.length; let t = !isNaN(ae * n.length * i / s3) ? ae * n.length * i / s3 : 0; o3 += i3; const o = Array.from({ length: n.length }, (e, t) => o3 + ae * t / n.length); const r = o.map(e => ({ x: z.x2 + s3 * U(e), y: z.y2 + s3 * V(e) })); n.forEach((e, t) => { e.emit("a", B(e, r[t])); e.emit("D", B(z, e)); e.bh(1) }); const a = ae / n.length; ie.forEach((e, t) => { let n = s(z, e), i = B(e, z); if (n > s3 + 80 && !e.inTrap && (e.millCount === 299 || e.upgraded >= 7)) { e.bh(); e.emit("a", i); e.emit("D", i); e.emit("d", 1, i); e.emit("d", 0, i) } }) } } function e3() { if (!ie.length || !Ut) { Ut = null; Vt = null; return } Vt = kh.filter(e => { const t = Ut.r ? se(Ut, e) >= Ut.value : se(Ut, e) <= Ut.value; if (t && (Ut.types != "all" && (e.group?.name === "spikes" || e.name === "pit trap" || e?.name == "turret" && Zs.checked || e?.name == "teleporter" && Zs.checked) || Ut.types == "all" || e?.name == Ut.types || e?.group?.name == Ut.types) && (e.type === null || e.type === undefined)) { if ((Ut.IDS == "team" || Ut.IDS == "clan") && te(e?.owner?.sid)) { e.opacity = .15; return true } if ((Ut.IDS == "enemy" || Ut.IDS == "enemies" || Ut.IDS == "hostile" || Ut.IDS == "nEnemy") && !te(e?.owner?.sid)) { e.opacity = .15; return true } if (typeof Ut.IDS === "number" && e?.owner?.sid === Ut.IDS) { e.opacity = .15; return true } if (Ut.IDS == "all" || Ut.IDS == "every" || Ut.IDS == "everything") { e.opacity = .15; return true } if (!Ut.IDS && e?.owner?.sid === z.sid) { e.opacity = .15; return true } } return false }); if (!Vt?.length) { Ut = null; Vt = null; U1.showText(z.x2, z.y2, 25, .35, 1500, "cleared buildings", "#fff") } } function t3(e, t) { if (!Ms.checked) return; t = x.weapons[ee]?.spdMult >= x.weapons[A]?.spdMult || A == null ? t = ee : t = A; if (e && z.buildIndex != -1) return t; if (p || Mt || hn || y || gt || z.pr != 1 || z.sr != 1 || z.hitting || At || Ct || z.buildIndex != -1) return; if (z.weaponIndex != t) T.send("G", t, true); if (e) return t } function n3() { return l4(z, 0, { buildIndex: -1, weaponIndex: z.weaponIndex, skinIndex: z.skinIndex, tailIndex: z.tailIndex, y2: z.y2, zIndex: null }) } Si = x.weapons; var i3 = .07; var s3 = 650; let o3 = 0; const r3 = re(.993, 111); const a3 = .5; function l3(e, t) { if (isNaN(e) || e == Infinity) return null; let n = e; while (n >= .5) { n = n * re(.993, 111); e += n } return e } function c3(e, t, n, i) { return { buildIndex: !i ? -1 : i, weaponIndex: e, skinIndex: t, tailIndex: n, y: z.y2, zIndex: null } } const d3 = 1e3; const u3 = Math.PI; const f3 = 2 * Math.PI / d3; function h3(t) { function n(e, t) { return typeof e === "number" && (e > t || t === undefined) } const i = new Map; Ci.forEach(e => { if (e.sid) { const t = i.get(e.sid); if (!t || n(e.expire, t.expire)) { i.set(e.sid, { ...e }) } } }); Ci = Array.from(i.values()); Ci.forEach(t => { if (t.deathAnim === true) { let e = P3(t.x, t.y, t.originDir, t.dstSpd); t.t1 = void 0 === t.t2 ? Date.now() : t.t2; t.t2 = Date.now(); t.distance -= t.dstSpd; t.dt = 0; t.d1 = t.d2; t.spinSpd ? t.d2 += t.spinSpd : t.d2 = z.d2; t.x1 = t.x; t.y1 = t.y; t.x2 = e.x; t.y2 = e.y; if (t.tick === v + 1 && t.dstSpd === 0) { U1.showText(z.x2, z.y2, 50, .1, 500, H((se({ x: t.positions.accel.x, y: t.positions.accel.y }, z) - 0) * 100) / 100, "#fff", true) } } else if (!isNaN(t.expire)) { t.t1 = void 0 === t.t2 ? Date.now() : t.t2; t.t2 = Date.now(); t.distance -= t.dstSpd; t.dt = 0; t.d1 = t.d2; t.expire -= 1; t.x1 = t.x; t.y1 = t.y; t.x2 = t.NEWX; t.y2 = t.NEWY } }); for (let e = 0; e < Ci.length; e++) { t = Ci[e]; if (!t.deathAnim) continue; if (t.distance <= 0 || t.tick < v + 1 && t.dstSpd === 0 || t.vals === 0) Ci.splice(e, 1) } Ci = Ci.filter(e => e.expire >= 0 || e.expire === undefined) } var p3 = 0; function m3(e, t, n) { if (!Ks || Date.now() - p3 < 730) return; var i = { ...e }; i.vals = .5; i.expire = 3; i.decay = 0; i.distance = t; i.fake = true; i.dstSpd = t; i.orginDir = n; Ci.push(i); p3 = Date.now() } function g3(e, t, n, i, s, o, r, a) { var l = { ...e }; l.skinIndex = i; l.tailIndex = s; l.vals = .8; l.deathAnim = true; l.spinSpd = n || 0; l.decay = o || 0; l.distance = 3e3; l.fake = true; l.dstSpd = t; l.tick = v + r + 1; l.positions = a; l.originDir = e.sid === z.sid ? Math.random() * 1e3 : B(z, e); Ci.push(l) } function y3(e, t, n, i, s, o) { var r = { ...e }; r.x1 = t; r.y1 = n; r.x2 = t; r.y2 = n; r.showSID = true; r.skinIndex = i || 0; r.tailIndex = s || 0; r.weaponIndex = o || 0; console.log(r); return r } function x3(e, t, n, i) { var s = { ...e }; s.purpose = t; s.moving = n; s.spinning = i; Ci.push(s) } async function w3() { if (!G["do"] || !ie.length || !ie[G?.val]) return; let n = ie[G.val]; let e = Hg(n.sid); if (Date.now() - n.spawnTime < 300) return; const t = (t, e) => e.some(e => e.sid === t.sid); const i = (t, e) => e.some(e => e.visible && t.visible && e.sid === t.sid && e.sid != n.sid || t.sid == n.sid && e.sid === n.sid && e.visible); const s = n.builds.filter(e => !t(e, Xt)); const o = n.players.filter(e => !i(e, J)); ts = { players: o, bot: e?.visible ? e : n.findPlayer(n.sid), builds: s } } async function b3() { if ($i == z.sid) { Hn && fs.checked && Ki.send(le({ msg: "spectateData", sender: z?.sid, player: z, players: J, builds: kh, time: tn, server: location.href })) } if (!es.isDoing) { es.rPlayer = null; es.players = []; es.builds = [] } else { es.rBuilds = es?.builds.filter(e => !as(e, Xt)); es.rPlayer = es?.player; es.rPlayers = es?.players } } function v3(o, r, a, e, l, c, d, u, f) { let t = { x: Infinity, y: Infinity, fake: true }; c = Q.filter(e => e?.group?.name == "spikes" && (o.sid != z.sid ? te(e?.owner?.sid) || o?.team === null && e?.owner?.sid != o.sid : !te(e?.owner?.sid)) || e?.type == 1 && e.y >= 12e3); if (!c) return false; if (e) { d = o.np.real.x; u = o.np.real.y } else { d = o.x2; u = o.y2 } for (let s in c) { let t = c[s]; f = t.type === 1 ? f = t.scale * .55 + 35 : t.scale + 35; let n = se(o, t); let e = P3(d, u, r, n); let i = se(e, t); if (i < f && n - f < a && (l && t.dmg >= 35 || t.type === 1 || !l)) { let e = P3(d, u, r, n - f); return { x: e.x, y: e.y, obj: t } } } return false } function k3(o, r, a, e, t, l, c, d, u) { let n = { x: Infinity, y: Infinity, fake: true }; l = Q.filter(e => e.name == "pit trap" && (o.sid != z.sid ? te(e?.owner?.sid) || o?.team === null && e?.owner?.sid != o.sid : !te(e?.owner?.sid))); if (!l) return false; if (e) { c = o.np.real.x; d = o.np.real.y } else { c = o.x2; d = o.y2 } for (let s in l) { let t = l[s]; u = t.scale + 35; let n = se(o, t); let e = P3(c, d, r, n); let i = se(e, t); if (i < u && n - u < a) { let e = P3(c, d, r, n - u); return { x: e.x, y: e.y, obj: t } } } return false } let A3 = 0; let I3 = { time: Date.now(), type: null }; var S3 = 0; function E3(c, d, u, f, h, p) { if (!en) return; h = Q.filter(e => e?.group?.name == "spikes" && !te(e?.owner?.sid) || e?.type == 1 && e.y >= 12e3 || e.name == "teleporter").sort((e, t) => Ne(c.x2 - e.x, c.y2 - e.y) - Ne(c.x2 - t.x, c.y2 - e.y)); if (!h.length) return false; for (let a = 0, l; a < h.length; a++) { p = (l = h[a]).type === 1 ? l.scale * .6 + 35 : l.teleport ? l.scale * .75 + 35 : l.scale + 35; let e = [l3(u.vel), l3(c.movSpd)]; let t = [P3(c.x2, c.y2, d, e[0]), P3(c.x2, c.y2, d, e[1])]; let n = se(t[0], l) <= p || se(t[1], l) <= p; isNaN(f) === true && (f = 0); let i = A === 10 ? 75 : x.weapons[ee].range; let s = [se(c, l, "object") <= i, se(c.np.decel, l, "object") <= i]; let o = Ps.checked && (s[0] || s[1]) && n && l.type !== 1; let r = n || (s[0] || s[1]) && n && l.type !== 1; if (r) { let e; if (o) { e = vg(l, A === 10 ? 75 : x.weapons[ee].range, h) } if (!m.ShiftLeft) { T.send("a", undefined); if (Date.now() - I3.time >= 250 && I3.type == "static" || I3.type != "static") U1.showText(c.x2, c.y2, 30, .1, 500, "stop", "#fff", true), I3 = { time: Date.now(), type: "static" }; if (o && (A === 10 && c.sr === 1 || c.pr === 1 && A != 10 && ee != 8)) { y = A === 10 ? 10 : ee; Ot = true; S3 = v; g[0] = e; Bg(e, A === 10 ? A : ee, A === 10 ? z.secondaryVar : z.primaryVar, Nn.includes(40) && !z.dmgpot.soldier ? 40 : 6, 1); ct = true; if ($t != 40) I(z.dmgpot.soldier ? 6 : 40, 11); nn = z.dmgpot.soldier ? 6 : 40 } } else if (Date.now() - I3.time >= 250 && I3.type == "override" || I3.type != "override") U1.showText(c.x2, c.y2, 20, .22, 500, "override", "#fff"), I3 = { time: Date.now(), type: "override" }; return l } } return false } function T3(e, t, n, i) { const s = t[0] - e[0]; const o = t[1] - e[1]; const r = s * s + o * o; if (r === 0) { const d = (e[0] - n[0]) ** 2 + (e[1] - n[1]) ** 2; return d <= i ** 2 } const a = oe(0, j(1, ((n[0] - e[0]) * s + (n[1] - e[1]) * o) / r)); const l = e[0] + a * s; const c = e[1] + a * o; const d = (l - n[0]) ** 2 + (c - n[1]) ** 2; return d <= i ** 2 } function C3(a, l, c, d) { if (a.inTrap || !yo.checked) return; c = a.builds.filter(e => (e?.group?.name == "spikes" && !a.teamer(e?.owner?.sid)) || e.name == "teleporter" || e.name == "boost pad" // Added boost pads ).sort((e, t) => Ne(a.x2 - e.x, a.y2 - e.y) - Ne(a.x2 - t.x, a.y2 - e.y)); a.np = l4(a, l, a, 1); if (!c.length) return false; for (let r = 0; r < c.length; r++) { let e = c[r]; d = e.type === 1 ? e.scale * .6 : e.teleport ? e.scale * .8 : e.name == "boost pad" ? e.scale * .7 : // Adjusted scale for boost pads e.scale; d += 35; let t = l3(a.np.vel); let n = P3(a.x2, a.y2, l, j(d, t)); let i = se(n, e) <= d; let s = a.weapons[1] === 10 ? x.weapons[10].range : x.weapons[a.weapons[0]].range; let o = xo.checked && (i || a.tick - a.stopHit <= 3 && (se(a, e, "object") <= s || se(a.np.decel, e, "object") <= s) && e.type !== 1 && a.skinIndex === 40) ? true : false; if (o) { a.emit("a", null); a["break"](e); a.stopHit = a.tick; } if (i) return { obj: e, "break": o }; } return false; } function B3(t, n, i) { let s = function(t) { for (let e = 0; e < C0.length; e++) if (t == C0[e].id) { return C0[e].spdMult } }($t) || 1; let e = function(t) { for (let e = 0; e < B0.length; e++) if (t == B0[e].id) { return B0[e].spdMult } }(Zt) || 1; let o = x.weapons[z.weapons[z.weaponIndex] || z.weapons[0]].spdMult || 1; Ry = My * o * s * e * (z.y2 < K.snowBiomeTop && $t != 15 ? K.snowSpeed : 1); if (Dn !== undefined) { n = { x2: z.x2 + Ry * U(Dn) + (z.x2 - z.x1) / 100, y2: z.y2 + Ry * V(Dn) + (z.y2 - z.y1) / 100 }; for (let e = 0; e < Q.length; e++) { i = Q[e]; if (se(x, i) > Ry + 100) { break } if (i?.group?.name == "spikes" && !te(i.owner.sid) || i.type === 1 && i.y >= 12e3) { let e = Dy(i, n); if (Dy(i, n) < i.scale + 40) { t = null; T.send("a", t); return true; break } } } } if (Dn === undefined) { n = { x2: z.x2 + Ry * U(Dn) + (z.x2 - z.x1) / 90, y2: z.y2 + Ry * V(Dn) + (z.y2 - z.y1) / 90 }; for (let e = 0; e < Q.length; e++) { i = Q[e]; if (se(x, i) > Ry + 100) { break } if (i?.group?.name == "spikes" && !te(i.owner.sid) || i.type === 1 && i.y >= 12e3) { let e = Dy(i, n); if (Dy(i, n) < i.scale + 40) { if (Dy(Y, z) > x.weapons[z.weapons[z.weapons[1] == 10 ? 1 : 0]].range + 200 && z.skins[40]) { let e = Ry * .3 / s; n = { x2: z.x2 + e * U(Dn) + (z.x2 - z.x1) / 90, y2: z.y2 + e * V(Dn) + (z.y2 - z.y1) / 90 }; if (Dy(i, n) > i.scale + 60) {} else { t = null; T.send("a", t); return true } } else { t = null; T.send("a", t); return true } break } } } } return false } function D3(s, o, r, a, t) { let l = { x: Infinity, y: Infinity, fake: true }; t = Xt.concat(J, bh); for (let e in t) { let i = t[e]; if (!i.ignoreCollision) { let t = ky(s, o, i.x, i.y); let e = P3(s, o, r, t); let n = ky(e.x, e.y, i.x, i.y); if (n < i.scale && t - i.scale < a) { let e = P3(s, o, r, t - i.scale); if (ky(l.x, l.y, z.x, z.y) > ky(e.x, e.y, z.x, z.y)) { l = e } } } } if (l.fake) { return false } else { return l } } function P3(e, t, n, i) { if (n == undefined) { return { x: z.x, y: z.y } } else { e = e + i * U(n); t = t + i * V(n); return { x: e, y: t } } } function R3(t, n, i, e) { let s = e(z, { x: t, y: n }); let o = P3(t, n, i, e); let r = e(z, o); if (r < 35 && s - 35 < e) { let e = P3(t, n, i, s - 35); return true } else { return false } } function M3(e, t, n) { return t <= e + n / 2 && t >= e - n / 2 || (e >= 0 ? e + n / 2 > 3.14 && t <= -3.14 + (e + n / 2 - 3.14) : e - n / 2 < -3.14 && t >= 3.14 + (e - n / 2 + 3.14)) } function N3(e, t) { return Math.atan2(t.y - e.y, t.x - e.x) } class O3 { constructor(e, t) { this.dir = e; this.building = t; this.building.players = []; let n = this; new Promise(function(e, t) { n.resolve = e; setTimeout(function() { t() }, 111) }).then(function(e) { n.building.health -= e; n.remove() })["catch"](function() { n.remove() }) } remove() { for (let e = 0; e < ft.length; e++) { if (ft[e] == this) { ft.splice(e, 1); break } } } attemptResolve(s, o, r, e, t) { if (e && this.building.sid == e.building.sid && r === this.building.tick) { this.resolve(this.building.projDmg ? e.dmg : 0) } else if (t && !e && r === this.building.tick) { this.resolve(200); if (ws.checked) U1.showText(this.building.x, this.building.y, 20, .085, 350, 200, "#00aaff") } else if (!e && this.building.owner != null && this.building.name != "mine" && this.building.name != "sapling") { let e = P(this.building.y - s.y2, this.building.x - s.x2); let t = B(s, this.building); let n = Math.hypot(s.x2 - this.building.x, s.y2 - this.building.y); let i = { x: s.x2 + Math.cos(s.d2) * 35 * (n > this.building.scale), y: s.y2 + Math.sin(s.d2) * 35 * (n > this.building.scale) }; if ((H(e * 10) / 10 == this.dir || Ay(H(e * 10) / 10, this.dir) <= .1005) && r == this.building.tick && se(s, this.building, "object") <= x.weapons[s.weaponIndex].range && X.getAngleDist(t, s.d2) <= h && !this.building.players.includes(s.sid)) { this.resolve(En[s.weaponVariant] * (o == 40 ? 3.3 : 1) * x.weapons[s.weaponIndex].dmg * (s.weaponIndex == 10 ? 7.5 : 1)); this.building.players.push(s.sid); if (!Ei.includes(s.sid) && ws.checked) U1.showText(this.building.x, this.building.y, 20, .085, 350, H(En[s.weaponVariant] * (o == 40 ? 3.3 : 1) * x.weapons[s.weaponIndex].dmg * (s.weaponIndex == 10 ? 7.5 : 1)), "#00aaff") } } } } function L3(e, t) { let n = S((e.x2 || e.x) - (t.x2 || t.x)); let i = S((e.y2 || e.y) - (t.y2 || t.y)); if (n <= K.maxScreenWidth / 2 * 1.3 && i <= K.maxScreenHeight / 2 * 1.3) { return true } return false } const F3 = "(" + (() => { const { sqrt: u, abs: f, floor: h } = Math; const { MAX_VALUE: p } = Number; const r = u(2); const m = 900; const g = 12; const y = g / 2; const t = JSON.stringify(new Array(Math.round(m / g)).fill([])); const x = JSON.parse(t).length; const w = [0, -1, 0, 1, -1, 0, 1, 0, 1, 1, 1, -1, -1, 1, -1, -1]; const b = w.length; const e = ["boost pad", "teleporter"]; function v(e, t, n, i) { return u((e - n) ** 2 + (t - i) ** 2) } function k(e, t, n, i) { const s = f(e - n); const o = f(t - i); return ((s === 0) + (o === 0)) * g + (s !== 0 && o !== 0) * g * r } function A(s, o, r, a, l) { let e = JSON.parse(t), c = 0, d = 0; for (let i = 0; i < x; i++) { let t = e[i]; for (let e = 0; e < x; e++) { let n = t[e] = { x: i * g - m / 2 + s, y: e * g - m / 2 + o, obstacle: false, available: 1, n: i * x + e }; if (n.x < 0 || n.x > 14400 || n.y < 0 || n.y > 14400) { n.obstacle = 1; continue } for (let e = r.length, t; e--, t = r[e];) { if (n.obstacle = f(t.x - n.x) <= t.scale2 + 20 && f(t.y - n.y) <= t.scale2 + 20 && u((t.x - n.x) ** 2 + (t.y - n.y) ** 2) - t.scale2 - 20 <= 0) break } n.target = f(n.x - a) <= y && f(n.y - l) <= y; c = n.target * n.n + !n.target * c; n.start = f(n.x - s) <= y && f(n.y - o) <= y; d = n.start * n.n + !n.start * d; n.fCost = n.start * -p; n.gCost = !n.start * p; if (n.target + n.start > 0) continue } } return { map: e, targetNode: c, startNode: d } } onmessage = function(e) { let { player: t, target: s, buildings: n, clan: i } = e.data; if (v(t.x2, t.y2, s.x, s.y) <= 0) return postMessage("reached target"); let { map: o, startNode: r, targetNode: a } = A(t.x2, t.y2, n.filter(e => { e.scale2 = (e.owner == null || e.name == "sapling") && e.type === 0 ? e.scale * .7 : e.dmg && !i.includes(e?.owner?.sid) && e?.owner?.sid != t.sid ? e.scale + 40 : e.type === 1 && e.y < 12e3 && (e.teleport || e.boostSpeed) ? e.scale + 35 : e["do"] ? e.scale : e.scale - 10; return (e.ignoreCollision ? e.name === "pit trap" ? e?.owner?.sid != t.sid && !i.includes(e.owner?.sid) : e.name === "boost pad" || e.name === "teleporter" : true) && v(e.x, e.y, t.x2, t.y2) < m }), s.x, s.y); let l = [], c = [], d, u = 1e5; l.push(r); while (l.length * u--) { let n = Infinity, i; for (let e = l.length, t; e--;) { t = o[h(l[e] / x)][l[e] % x]; if (t.fCost < n) { d = t; n = t.fCost; i = e } } l.splice(i, 1); c.push(d.n); if (d.target) break; for (let t = 0, n; t < b; t++) { n = o[h(d.n / x) + w[t]]?.[d.n % x + w[t + 1]]; if (!n || c.includes(n.n)) continue; let e = d.gCost + k(w[t], w[t + 1], 0, 0); if (!n.obstacle && n.available === 1) { if (!l.includes(n.n)) { n.parent = d.n; n.gCost = e; n.hCost = v(n.x, n.y, s.x, s.y); n.fCost = e + n.hCost; l.push(n.n) } else if (e < n.gCost) { n.parent = d.n; n.gCost = e; n.fCost = e + n.hCost } } } } if (u === 0) return postMessage("reached max iterations"); if (!l.length) return postMessage("couldn't reach target"); l = []; while (!d.start) { l.push(d.y, d.x); d = o[h(d.parent / x)][d.parent % x] } postMessage(l.reverse()) } }).toString() + ")();"; var _3 = []; var V3 = []; function U3(o) { return new Promise((n, t) => { o = JSON.parse(le(o)); let i = -1; for (let e = 0; e < V3.length; e++) { if (V3[e]) { i = e; V3[e] = false; _3[e].postMessage(o); break } } if (i === -1) { j3(); i = _3.length - 1; V3.push(false); _3[i].postMessage(o) } function e(e) { let t = false; if (typeof e.data === "string") { Y3 = []; t = false } else { Y3 = e.data; t = e.data.length > 0 } H3(_3[i]); n(t) } function s(e) { t(e) } _3[i].onmessage = e; _3[i].onerror = s }) } function j3() { let e = new Blob([F3]); let t = URL.createObjectURL(e); e = new Worker(t); _3.push(e); V3.push(true) } function H3(t) { for (let e = _3.length; e--;) { if (_3[e] === t) { V3[e] = true; return } } } var W3, Q3; var Y3 = []; var z3; var G3 = Infinity; var K3; var X3 = 0; var J3 = 0; var q3, ie = []; var $3 = [], Z3 = [], ex = { x: 0, y: 0 }, tx = []; const nx = document.createElement("style"); nx.innerHTML = ` #customMenu { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 600px; height: 600px; background-color: white; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); display: flex; flex-direction: column; align-items: center; justify-content: flex-start; border-radius: 10px; display: none; padding: 20px; box-sizing: border-box; overflow-y: auto; /* Vertical scroll bar */ } #botPanelText { margin-bottom: 10px; font-size: 1.5em; font-weight: bold; } #botCount { margin-bottom: 20px; font-size: 1.2em; color: #4CAF50; /* Green color */ font-weight: bold; } .tabContainer { display: flex; flex-direction: column; /* Display tabs vertically */ align-items: center; /* Center-align tabs */ width: 100%; } .menuTab { margin: 5px; padding: 15px 30px; background-color: #007BFF; color: white; text-align: center; border-radius: 5px; cursor: pointer; text-decoration: none; font-size: 1.2em; position: relative; /* Positioning for relative elements */ } #backBtn { margin-top: 20px; /* Add margin to separate from tabs */ padding: 15px 30px; background-color: #FF5733; color: white; text-align: center; border-radius: 5px; cursor: pointer; text-decoration: none; display: none; font-size: 1.2em; } .pageContent { display: none; text-align: center; width: 100%; height: 100%; overflow: auto; position: relative; /* Positioning for relative elements */ } .pageContent h1 { margin-top: 0; } .disconnectBtn { position: absolute; bottom: 10px; left: 50%; transform: translateX(-50%); background-color: #FF5733; color: white; border: none; padding: 8px 16px; border-radius: 5px; cursor: pointer; font-size: 1em; } .navBtn { position: absolute; bottom: 10px; font-size: 1em; padding: 8px 16px; border-radius: 5px; cursor: pointer; } .prevBtn { left: 20px; background-color: #FFA500; /* Orange color */ color: white; } .nextBtn { right: 20px; background-color: #FFA500; /* Orange color */ color: white; } `; document.head.appendChild(nx); const ix = document.createElement("div"); ix.id = "customMenu"; const sx = document.createElement("div"); sx.id = "botPanelText"; sx.innerText = "x18k Bot Panel"; ix.appendChild(sx); const ox = document.createElement("div"); ox.id = "botCount"; ox.innerText = "Bot Count: 0"; ix.appendChild(ox); const rx = document.createElement("div"); rx.className = "tabContainer"; ix.appendChild(rx); const ax = document.createElement("a"); ax.id = "backBtn"; ax.innerText = "Back to Menu"; ax.href = "#"; ax.onclick = function(e) { e.preventDefault(); gx() }; ix.appendChild(ax); document.body.appendChild(ix); let lx = 0; document.addEventListener("keydown", function(e) { if (e.key === "`") { if (ix.style.display === "none" || ix.style.display === "") { ix.style.display = "flex"; gx() } else { ix.style.display = "none" } } }); let cx; let dx; let ux; function fx(t) { const e = document.createElement("a"); e.className = "menuTab"; e.innerText = `Bot ${t}`; e.href = `#page${t}`; e.id = `tab${t}`; e.onclick = function(e) { e.preventDefault(); mx(t) }; ix.appendChild(e); const n = document.createElement("div"); n.className = "pageContent"; n.id = `page${t}`; cx = document.createElement("p"); cx.id = `age${t}`; cx.innerText = `Age: 0`; n.appendChild(cx); dx = document.createElement("p"); dx.id = `windmillCount${t}`; dx.innerText = `Windmill Count: 0`; n.appendChild(dx); ux = document.createElement("p"); ux.id = `gold${t}`; ux.innerText = `Gold: 0`; n.appendChild(ux); const i = document.createElement("p"); i.innerText = `You are Viewing: Bot ${t}`; n.appendChild(i); const s = document.createElement("button"); s.className = "disconnectBtn"; s.innerText = "Disconnect"; s.onclick = function() { hx(t); Xp(`!dc ${t}`) }; n.appendChild(s); const o = document.createElement("button"); o.className = "navBtn prevBtn"; o.innerText = "Prev"; o.onclick = function() { if (t > 1) { mx(t - 1) } }; n.appendChild(o); const r = document.createElement("button"); r.className = "navBtn nextBtn"; r.innerText = "Next"; r.onclick = function() { const e = document.querySelectorAll(".menuTab").length; if (t < e) { mx(t + 1) } }; n.appendChild(r); ix.appendChild(n) } function hx(e) { const t = document.getElementById(`tab${e}`); if (t) { t.remove(); const n = document.getElementById(`page${e}`); if (n) { n.remove() } } } function px() { rx.innerHTML = ""; const e = document.querySelectorAll(".pageContent"); e.forEach(e => e.remove()) } function mx(e) { const t = document.querySelectorAll(".menuTab"); t.forEach(e => e.style.display = "none"); ax.style.display = "block"; const n = document.querySelectorAll(".pageContent"); n.forEach(e => e.style.display = "none"); const i = document.getElementById(`page${e}`); if (i) { i.style.display = "block" } lx = e } function gx() { const e = document.querySelectorAll(".menuTab"); e.forEach(e => e.style.display = "block"); ax.style.display = "none"; const t = document.querySelectorAll(".pageContent"); t.forEach(e => e.style.display = "none") } const yx = document.getElementById("botCount"); let xx; const wx = async t => new Promise(e => setTimeout(e, t)); const bx = (e, t) => { console.log(V0); const n = q3.url.split("token=")[0] + "token=" + encodeURIComponent("alt:" + V0); console.log(n); let c = new WebSocket(n); c.binaryType = "arraybuffer"; c.botType = t; c.healTimeout = Date.now(); c.builds = []; c.primary = null; c.secondary = null; c.invisTime = 1e3; c.players = []; c.oldCoords = {}; c.millCount = 0; c.spawnTime = Date.now(); c.HERE = true; c.enemies = []; c.pingTime = -1; c.holdItem = 0; c.aimAt = 0; c.nEnemy = null; c.kys = false; c.alive = false; c.deaths = 0; c.clanMates = []; c.samRS = 1; c.samRP = 1; c.breaker = false; c.stopHit = false; c.upgraded = 0; c.moveDir = 0; c.moveDirection = 0; c.health = 100; c.gold = 100; c.doMills = true; c.fS = false; c.x2 = 0; c.sid = null; c.y2 = 0; c.buyer = [ [11], 40, 1, 53, 6, 7, 56, 12, 15, 31, [21], 22, 26, 11, 20, [18], [19], [13] ]; c.x = 0; c.y = 0; c.getCrossBow = true; c.ping = 0; c.pingavg = 0; c.pingarr = []; c.weaponIndex = 0; c.packets = 0; c.autoHit = false; c.hitPacket = 0; c.player = []; c.skins = [0]; c.tails = []; c.pr = 1; c.sr = 1; c.tr = 1; c.updater = []; c.moveRan = { angle: vx(), x: 0, y: 0, lastChange: 0 }; c.justShot = Date.now(); c.emit = (e, t, n, i) => { if (e == "G") e = "z"; if (e == "d") e = "F"; if (e == "a") e = "9"; if (!c.fS) { c.fS = true; setTimeout(() => { c.fS = false; c.packets = 0 }, 1e3) } c.packets++; if (c.packets >= 85) return; if (e == "9") c.moveDir = t; if (e === "K") { c.hitPacket++ } c.send(window.msgpack.encode([e, [t, n, i]])) }; c.findPlayer = function(t) { for (let e = 0; e < c.players.length; e++) { if (c.players[e].sid == t) return c.players[e] } return null }; c.findBuilding = function(t) { for (let e = 0; e < c.builds.length; e++) { if (c.builds[e].sid == t) return c.builds[e] } return null }; c.spawn = function(e) { c.wood = 100; c.stone = 100; c.food = 100; c.points = 100; c.upgraded = 0; c.alive = true; c.kys = false; c.sr = 1; c.pr = 1; c.weapons = [0]; c.primary = 0; c.secondary = null; c.items = [0, 3, 6, 10]; e = H(Math.random() * 11); c.emit("M", { name: _e, moofoll: 1, skin: 0 }); c.health = 100 }; c.storeEquip = function(e, t) { c.emit("c", 0, e, t) }; c.checkMove = function(s, o, r, e, t, a, l, c) { let n = { x: Infinity, y: Infinity, fake: true }; if (e) { a = s.np.real.x; l = s.np.real.y } else { a = s.x2; l = s.y2 } for (let e in t) { let i = t[e]; c = i.real.scale + 35 + 30; if (Y.team == null) { let t = se(s, i); let e = P3(a, l, o, t); let n = se(e, i); if (n < c && t - c < r + c) { let e = P3(a, l, o, t - c); return { x: e.x, y: e.y, obj: i } } } } return false }; c.storeBuy = function(e, t) { c.emit("c", 1, e, t) }; c.wait = async function(e) { await wx(e) }; c.buyEquip = function(t, e) { if (e == 0) { if (c.skins.includes(t)) { if (c.skinIndex != t) { c.storeEquip(t, 0) } } else { let e = C0.find(e => e.id == t)?.price; if (c.gold >= e) { c.storeBuy(t, 0) } } } else if (e == 1) { if (c.tails.includes(t)) { if (c.tailIndex != t) { c.storeEquip(t, 1) } } else { if (t == 11) { B0.find(e => c.gold >= e?.price); if (c.gold >= 2e3) { c.storeBuy(t, 1) } else { if (c.tailIndex != 0) { c.storeEquip(0, 1) } } } } } }; c.Hg = function(e, t) { if (c.kys) e = 7; if (e) c.buyEquip(e, 0); if (t) c.buyEquip(m.ShiftLeft ? c.skins.includes(19) ? 19 : 0 : t, 1) }; c.bh = function(e) { let t = c.nEnemy && c.nEnemy.distance < 300 || c.health <= 80 || c.moveDirection === null || c.moveDirection === undefined ? true : false; if (c.y < 2400) { c.Hg(t ? 6 : 15, m.ShiftLeft ? 0 : 11) } else if (c.y >= K.mapScale / 2 - K.riverWidth / 2 && c.y <= K.mapScale / 2 + K.riverWidth / 2) { c.Hg(31, 11) } else { c.Hg(t ? 6 : 12, m.ShiftLeft ? 0 : 11) } }; c.checkPlace = function(e, t, n, i) { i = x.list[e]; n = i.scale + 35 + (i.placeOffset || 0); var s = c.x2 + n * U(t); var o = c.y2 + n * V(t); if (C.checkItemLocationBot(s, o, i.scale, .6, i.id, false, c.builds)) { c.emit("G", e); c.emit("d", 1, t); c.emit("G", c.weaponIndex, 1) } }; function i() { c.emit("G", c.items[0]); c.emit("G", 1); c.emit("G", c.weaponIndex, true) } c.autobuy = function() { if (c.skins.length + c.tails.length >= 66) return; if (c.buyer.length) { if (!Array.isArray(c.buyer[0]) && c.gold >= C0.find(e => e.id == c.buyer[0]).price) c.storeBuy(c.buyer[0], 0); if (Array.isArray(c.buyer[0]) && c.gold >= B0.find(e => e.id == c.buyer[0][0]).price) c.storeBuy(c.buyer[0][0], 1) } if (c.buyer.length == 0 && c.skins.length != C0.length - 1) { let e = C0.find(e => e.id != 45 && !c.skins.includes(e.id) && c.gold >= e.price); if (e) c.storeBuy(e.id, 0); let t = B0.find(e => !c.tails.includes(e.id) && c.gold >= e.price); if (t) c.storeBuy(t.id, 1) } }; function s(e) { return e * (W / 180) } c.upgrade = function(e) { c.emit("H", e) }; c.mill = { x: 0, y: 0 }; c.old = { x: 0, y: 0 }; c.miller = function() { if ((c.old.x != c.x || c.old.y != c.y) && !(c.y >= K.mapScale / 2 - K.riverWidth / 2 && c.y <= K.mapScale / 2 + K.riverWidth / 2)) { if (Math.hypot(c.mill.y - c.y, c.mill.x - c.x) > 94) { c.place(c.items[3], c.moveDirection - s(94 / 1.25) + W); c.place(c.items[3], c.moveDirection + s(94 / 1.25) + W); c.place(c.items[3], c.moveDirection + W); c.emit("G", c.primary, true); c.mill.x = c.x; c.mill.y = c.y } c.old.x = c.x; c.old.y = c.y } }; c.weapons = [0]; c.items = [0, 3, 6, 10]; c.autoaiming = false; c.tick = 0; c.time = Date.now(); c.teamer = function(e) { if (e == c.sid) return true; return c.clanMates.includes(e) }; c.mapping = Date.now(); c.mapFix = function() { c.oldCoords = { x: c.x, y: c.y } }; c.doProjectileSync = (e, t) => { let n = Hg(xi ? xi : Y.sid); if (xi && (!n || !n.visible)) n = Y; let i = n.sid === Y.sid ? Y.positions : n; let s = n ? _g(c, i, x.weapons[c.weapons[1]].projSpd, n) : null; let o; let r = []; let a = { ...n }; a.sid = 1e5; if (s === null) return false; if (uo.checked) { if (s.norm.dist > 700 || c.secondary === 12) { a.x2 = s.marks.pos.x; a.x2 = s.marks.pos.y; if (Dg(c, N5, t)) { o = s.marks.dir; r = [1, 11] } } if (!r.length && s.norm.dist <= 700) { a.x2 = s.norm.pos.x; a.x2 = s.norm.pos.y; if (Dg(c, N5, t)) { o = s.norm.dir; r = [53, 11] } } } else { o = B(c, Y); r = [53, 11] } c.Hg(r[0], r[1]); c.emit("G", c.weapons[1], true); c.emit("D", o); if (c.items[5] == 18) { c.place(c.items[5], o, c.weapons[1]); c.place(c.items[5], o + Z(180), c.weapons[1]); c.place(c.items[5], o - Z(90), c.weapons[1]); c.place(c.items[5], o + Z(90), c.weapons[1]) } c.emit("d", 1, o); c.emit("d", 0, o) }; c.place = function(e, t, n) { !n && (n = c.weaponIndex); c.emit("G", e, null); c.emit("d", 1, t); n && c.emit("G", n, true) }; c.pingSocketResponse = function() { c.pingTime = Date.now() }; c.health = 100; c.onopen = async () => { c.HERE = true; await wx(111); c.spawn(); c.pingSocketResponse() }; c["break"] = function(e) { let t = B(c, e); c.emit("D", t); c.emit("d", 1, t); c.emit("d", 0, t); c.Hg(40, 11) }; c.onclose = () => { c.HERE = false; c.ISHERE && ie.length && (ie = ie.filter(e => e.HERE)); if (c.ISHERE) b(`Bot count is ${ie.length}, -1`, "", Hy(), false, true); yx.innerText = `Bot Count: ${ie.length}`; $3[c.botType] = []; Z3[c.botType] = []; hx(c.sid) }; c.heal = function(e, t = [20, 40, 30]) { for (var n = e; n < 100; n += t[c.items[0]]) c.place(c.items[0], null) }; c.reloadConfig = function(e, t, n, i, s, o) { if (!i) return c.updater.push({ id: c.reloadConfig, data: [e, n, t, true] }); o = c.findPlayer(e); if (c.sid == e) { t > 9 ? c.sr = 0 : c.pr = 0; c.invisTime = 1e3; c.skinIndex == 20 && t > 9 ? c.samRS = .78 : c.samRS = 1; c.skinIndex == 20 && t < 9 ? c.samRP = .78 : c.samRP = 1 } t > 9 ? o.sr = 0 : o.pr = 0; o.skinIndex == 20 && t > 9 ? o.samRS = .78 : o.samRS = 1; o.skinIndex == 20 && t < 9 ? o.samRP = .78 : o.samRP = 1 }; c.projDetect = function(t, n, i, e, s, o, r, a) { if (!r) c.updater.push({ id: c.projDetect, data: [t, n, i, e, s, o, true] }); let l = null; if (s == 1.5 && o == 1) { if (c.skinIndex == 53 && se({ x: t, y: n }, c) <= 2) { l = c } } if (!(s == 1.5 && o == 1)) { if (c?.weaponIndex == c?.secondary && c.dir === i && x.weapons[c.weaponIndex].projectile == o) { let e = P3(t, n, i + W, 70); if (S4(e, c) <= 20) l = c } } if (!l) return; if (l) { if (s == 1.5 && o == 1) { if (c.sid == l.sid) c.tr = 0; l.tr = 0 } else { if (l.sid === c.sid) { c.sr = 0; c.samRS = c.skinIndex === 20 ? .78 : 1 } l.sr = 0; l.samRS = l.skinIndex === 20 ? .78 : 1 } } }; c.reloadWeapon = function(e, t) { if (!t) { if (e.buildIndex == -1) { if (e.weaponIndex <= 8) { e.pr = j(1, e.pr + 111 / (x.weapons[e.primary].speed * e.samRP)) } else if (e.weaponIndex > 8) { e.sr = j(1, e.sr + 111 / (x.weapons[e.secondary].speed * e.samRS)) } } e.tr = j(1, e.tr + 111 / 2400) } else { if (c.buildIndex == -1) { if (c.weaponIndex <= 8) { c.pr = j(1, c.pr + 111 / (x.weapons[c.primary].speed * c.samRP)) } else if (c.weaponIndex > 8) { c.sr = j(1, c.sr + 111 / (x.weapons[c.secondary].speed * c.samRS)) } } c.tr = j(1, c.tr + 111 / 2400) } }; c.doAll = function(e, t) { if (!t && e.length) { $3[c.botType] = e; c.sid = e[0]; c.speed = Ne(c.x - e[1], c.y - e[2]); c.speed != 0 && (c.invisTime = 1e3); c.speed == 0 && (c.invisTime -= z.delta); c.xVel = e[1] - c.x; c.yVel = e[2] - c.y; c.sid = e[0]; c.x2 = e[1]; c.y2 = e[2]; c.x = e[1]; c.y = e[2]; c.dir = e[3]; c.dt = 0; c.buildIndex = e[4]; c.weaponIndex = e[5]; c.team = e[7]; c.isLeader = e[8]; c.skinIndex = e[9]; c.tailIndex = e[10]; c.isSkull = e[11]; c.visb = true; c.enemies.length && (c.enemies = c.enemies.map(e => ({ enemy: e, distance: S4(e, c) })).sort((e, t) => e.distance - t.distance)); c.nEnemy = c.enemies[0]; c.doMills = window.location.hostname != "sandbox.moomoo.io" || c.upgraded >= 7 && (c.buyer.length <= 8 || c.millCount >= 230 || ai == "Summon" || ai == "Static" || ro.checked || ao.value == "Cursor" && ai == "Summon") || c.millCount === 299 ? false : true } c.reloadWeapon(c, 1); c.updater.forEach(e => e.id(...e.data)); c.updater = []; if (c.tick % 7 === 0 && !(G["do"] && G.play && ts?.bot?.sid === c.sid)) {} if (c.doMills && Date.now() - c.moveRan.lastChange >= 1e4 || D(re(c.moveRan.y - c.y, 2) + re(c.moveRan.x - c.x, 2)) > 3300 || c.speed === 0) { c.moveRan.angle = vx(c.moveRan.angle); c.moveRan.y = c.y; c.moveRan.x = c.x; c.moveRan.lastChange = Date.now() } c.autobuy(); c.ownerDist = ao.value == "Cursor" && ai == "Summon" ? Ne(om.x2 - c.x, om.y2 - c.y) : Ne(z.x2 - c.x, z.y2 - c.y); if (G["do"] && ts?.bot?.sid === c.sid) { xi.player = c.players.find(e => e.sid === xi.ID && e.visible); if (xi.player) { xi.player.positions = a4(xi.player, 6) } else if (c.nEnemy) { xi.player = c.nEnemy.enemy; xi.player.positions = a4(xi.player, 6) } } if (G["do"] && G.play && ts?.bot?.sid === c.sid) { c.moveDirection = Dm } else if (c.doMills && window.location.hostname == "sandbox.moomoo.io" || ai === "Wander") { c.moveDirection = c.moveRan.angle } else if (ai === "Static") { c.moveDirection = null } else if (ai === "Summon") { if (ao.value == "Cursor") { c.moveDirection = B(c, om) } else if (ao.value == "Towards") { c.moveDirection = B(c, z.np.real) } else { if (c.ownerDist <= ki) { if (ao.value == "Copy") { c.moveDirection = Dn } else c.moveDirection = null } else c.moveDirection = B(c, z.np.real) } } c.inTrap = c.builds.find(e => e.name === "pit trap" && e.owner?.sid != c.sid && !c.teamer(e.owner?.sid) && Ne(e.x - c.x, e.y - c.y) <= 50); ie.forEach((e, t) => { if (e.sid == c.sid) { c.botType = t; ie[t] = c } }); c.doingAll = c.upgraded >= 7 || window.location.hostname != "sandbox.moomoo.io"; if (c.alive) { let e; if (!(ai === "Summon" && ro.checked && c.doingAll) && !(Vt?.length && c.doingAll)) { e = C3(c, c.moveDirection); !e && c.emit("a", c.moveDirection) }!e && !c.inTrap && c.emit("D", c.moveDirection); if (m.z && x.list[c?.items[4]]?.name === "pit trap") { c.place(c.items[4], c.moveDirection); c.place(c.items[4], c.moveDirection + Z(180)); c.place(c.items[4], c.moveDirection - Z(90)); c.place(c.items[4], c.moveDirection + Z(90)); c.emit("G", c.weaponIndex, true) } if (c.inTrap && go.checked) { c.autohit = true; let e = B(c, c.inTrap); c.emit("G", c.weapons[0], true); c.emit("D", e); c.emit("d", 1, e); c.emit("d", 0, e); if (c.pr === 1) { c.Hg(40, 11) } else c.Hg(6, 11) } else if (e) {} else if (c.secondary && (G["do"] ? true : c.ownerDist < 900) && (m.q || xn) && c.sr === 1 && xi.player && lo.checked) { let e = xi.player.positions; let t = _g(c, e, x.weapons[c.weapons[1]].projSpd, xi.player); let n; let i = []; if (uo.checked && t) { if (t.norm.dist > 700 || c.weapons[1] === 12) { n = t.marks.dir; i = [1, 11] } if (!i.length && t.norm.dist <= 700) { n = t.norm.dir; i = [53, 11] } } else { n = B(c, Y); i = [53, 11] } c.Hg(i[0], i[1]); if (c.items[5] == 18) { c.place(c.items[5], n); c.place(c.items[5], n + Z(180)); c.place(c.items[5], n - Z(90)); c.place(c.items[5], n + Z(90)) } c.emit("G", c.weapons[1], true); c.emit("d", 1, n); c.emit("d", 0, n); c.emit("D", n) } else if (Vt?.length && c.doingAll) { c.weaponIndex != c.primary && c.emit("G", c.primary, true); const n = Vt?.reduce((e, t) => { const n = Ne(c.x - t.x, c.y - t.y); if (e === null || n < e.distance) { return { building: t, distance: n } } else { return e } }, null).building; let e = B(c, n); let t = n.name === "pit trap" && !c.teamer(n.owner.sid) ? 0 : x.weapons[c.weapons[0]].range; if (se(c, n, "object") <= t) { c.emit("a", null); if (c.pr === 1) { c.emit("D", e); c.emit("d", 1, e); c.emit("d", 0, e); c.Hg(40, 11) } } else { c.emit("a", e); c.bh(); c.emit("d", 1, e); c.emit("d", 0, e); c.emit("D", e) } } else if (Nt && se(c, Nt, "object") <= x.weapons[c.weapons[0]].range) { if (c.pr === 1) { c["break"](Nt) } else { c.Hg(6, 11) } } else { let e = c.sr != 1 ? c.secondary : c.primary; (c.weaponIndex != e || c.buildIndex != -1) && c.emit("G", e, true); if (c.doMills) { c.miller() } if (e != c.secondary && c.invisTime <= 0 && mo.checked && c.health === 100 && (c.ownerDist <= ki || ai == "Static" && !c.doMills)) { c.Hg(56, 0) } else { if (e != c.secondary && c.weaponIndex != c.secondary && ai !== "Static" && !(ai == "Summon" && c.ownerDist <= ki) || ao.value == "Cursor" && ai == "Summon" && c.weaponIndex != c.secondary) { c.emit("d", 1, c.moveDirection); c.emit("d", 0, c.moveDirection) } c.bh() } } if (c.skinIndex != 45 && c.alive && c.health != 100 && !c.kys) { if (c.health >= 64.5) { setTimeout(() => { c.heal(c.health) }, 85) } else { c.heal(c.health) } } } if (c.sid === lx) { document.getElementById(`age${c.sid}`).innerText = `Age: ${c.upgraded}`; document.getElementById(`windmillCount${c.sid}`).innerText = `Windmills: ${c.millCount}`; document.getElementById(`gold${c.sid}`).innerText = `Gold: ${c.gold}` } }; c.onmessage = e => { let t = window.msgpack.decode(new Uint8Array(e.data)); let s; if (t.length > 1) { s = [t[0], ...t[1]]; if (s[1] instanceof Array) { s = s } } else { s = t } if (!s) return; if (s[0] == "O") { c.findPlayer(s[1]).health = s[2]; if (s[1] == c.sid) c.health = s[2] } if (s[0] == "A") { c.team = s[1].teams } if (s[0] == "4") { c.alliancePlayers = s[1]; c.clanMates = s[1] } if (s[0] == "0") { c.ping = Date.now() - c.pingTime; setTimeout(() => {}, 350) } if (s[0] == "K") { c.reloadConfig(s[1], s[2], s[3]); if (s[1] == c.sid) { c.invisTime = 1e3 } if (G.val === c.botType) v2(s[1], s[2], s[3], c) } if (s[0] == "X") { c.projDetect(s[1], s[2], s[3], s[4], s[5], s[6]); if (L3(z, { x: s[1], y: s[2] })) return; Z2(s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8], c) } if (s[0] == "L") { if (G.val == c.botType) { (q = c.findBuilding(s[2])) && (q.xWiggle += K.gatherWiggle * U(s[1]), q.yWiggle += K.gatherWiggle * V(s[1])) } } if (s[0] == "3") { if (s[1] == undefined && s[2] == undefined || s[1] == null && s[2] == false) c.clanMates = [] } if (s[0] == "P") { c.health = 100; c.alive = false; c.deaths++; setTimeout(() => { c.spawn() }, 111) } if (s[0] == "C") { c.sid = s[1]; !c.ISHERE && ie.push(c) && b(`Bot count is ${ie.length}`, "", Hy(), false, true); c.ISHERE = true; yx.innerText = `Bot Count: ${ie.length}`; fx(c.sid) } if (s[0] == "V") { if (s[1]) { if (s[2]) { c.weapons = s[1]; c.primary = s[1][0]; c.secondary = s[1][1] } else c.items = s[1] } } if (s[0] == "S") { if (s[1] == 3) { c.millCount = s[2] } } if (s[0] == "I") {} if (s[0] === "H") { for (var n = 0; n < s[1].length;) { let e = s[1]; C.add(e[n], e[n + 1], e[n + 2], e[n + 3], e[n + 4], e[n + 5], x.list[e[n + 6]], !0, e[n + 7] >= 0 ? { sid: e[n + 7] } : null, c); n += 8 } } if (s[0] == "D") { dg(s[1], s[2], c) } if (s[0] == "R") { c.players = c.players.filter(e => e.sid != s[1]); c.builds = c.builds.filter(e => e?.owner?.sid != s[1]) } if (s[0] == "6") { let e = c.findPlayer(s[1]); e.chatMessage = s[2]; e.chatCountdown = 3500 } if (s[0] == "N") { if (s[1] == "wood") c.wood = s[2]; if (s[1] == "food") c.food = s[2]; if (s[1] == "stone") c.stone = s[2]; if (s[1] == "points") c.gold = s[2] } if (s[0] == "U") { if (s[1] > 0) { if (c.upgraded == 0) { c.upgrade(3) } else if (c.upgraded == 1) { c.upgrade(17) } else if (c.upgraded == 2) { c.upgrade(31) } else if (c.upgraded == 3) { c.upgrade(23) } else if (c.upgraded == 4) { c.upgrade(9) } else if (c.upgraded == 5) { c.upgrade(34) } else if (c.upgraded == 6) { c.upgrade(12) } else if (c.upgraded == 7) { c.upgrade(c.getCrossBow ? 25 : 15) } c.upgraded++ } } if (s[0] == "5") { if (s[3]) { if (!s[1]) { c.tails.push(s[2]) } else c.tailIndex = s[2] } else { if (!s[1]) { c.skins.push(s[2]) } else c.skinIndex = s[2] } if (c.buyer.length && (s[3] == 0 || s[3] == 1)) { for (let e = 0; e < c.buyer.length; e++) { if (s[3] == 0 && !Array.isArray(c.buyer[e]) && c.buyer[e] == s[2]) { c.buyer.splice(e, 1) } if (s[3] == 1 && Array.isArray(c.buyer[e]) && c.buyer[e][0] == s[2]) { c.buyer.splice(e, 1) } } } } if (s[0] == "Q") { c.builds = c.builds.filter(e => e.sid != s[1]) } if (s[0] == "a") { c.tick++; c.time = Date.now(); c.players.forEach(e => { e.forcePos = false, e.visible = !1 }); let i = []; xx = null; for (let n = 0; n < s[1].length / 13; n++) { let e = s[1].slice(13 * n, 13 * n + 13); c.enemies = []; let t = c.findPlayer(e[0]); t.t1 = void 0 === t.t2 ? Date.now() : t.t2; t.t2 = Date.now(); if (t != null) { if (G["do"] && c.botType != G.val || !G["do"]) { t.x = e[1]; t.y = e[2] } t.x1 = t.x; t.y1 = t.y; t.speed = Ne(t.x2 - e[1], t.y2 - e[2]); t.xVel = e[1] - t.x2; t.yVel = e[2] - t.y2; t.x2 = e[1]; t.y2 = e[2]; t.d1 = void 0 === t.d2 ? e[3] : t.d2; t.d2 = e[3]; t.dt = 0; t.buildIndex = e[4]; t.weaponIndex = e[5]; t.weaponIndex >= 9 ? t.secondary = t.weaponIndex : t.primary = t.weaponIndex; t.weaponVariant = e[6]; t.team = e[7]; t.isLeader = e[8]; t.skinIndex = e[9]; t.tailIndex = e[10]; t.isSkull = e[11]; t.visible = true; !Ei.includes(t.sid) && !c.teamer(t.sid) && c.enemies.push(t); if (!(e[0] == c.sid || e[7] && e[7] == c.clan)) { Z3[c.botType] = e } } if (e[0] === c.sid) { i = e } c.reloadWeapon(t) } c.doAll(i, c.skinIndex == 56 && !i ? true : false); if (c.autohit) { if (c.hitPacket % 2 == 0 && c.alive) {} } else { if (c.hitPacket % 2 == 1) {} } if (G["do"] && ts?.bot?.sid === c.sid) {} if (z.team && c.team != z.team) { if (c.team && c.team != z.team) { c.emit("Q", undefined) } else { if (c.team != z.team) { c.emit("b", z.team); ip(c.sid) } } } } } }; function vx(e, t) { t = Math.random() * ae; if (e && Ay(e, t) <= 2) { return vx(e) } return t } function kx(t) { if (Y3.length && (Ht == false && jt) && t.name != "pit trap") { for (let e = 0; e < Y3.length; e += 2) { if (se({ x: Y3[e], y: Y3[e + 1] }, t) <= t.scale - 7.5) { return true } } } return false } function Ax(e, i, s) { if (Y3 && Y3.length && (m.z || Ht == false && jt)) { let t = 0, n = 0; if (jt && Y3.length * 7 >= i) return; while (n < Y3.length) { const o = Y3[n]; const r = Y3[n + 1]; const a = D((z.x2 - o) ** 2 + (z.y2 - r) ** 2); let e = s ? 10 : 35; if (a <= e) { t += 2 } else { if (!jt) break } if (jt && a > i) { return false } n += 2 } if (t + 2 < Y3.length) { const l = { x: Y3[t], y: Y3[t + 1] }; T.send("a", B(z, l), "pathfinder"); Y3.splice(0, t) } } return true } function Ix(e) { e = H(Math.random() * z.items.length - 1); if (e == 0) return Ix(); return e } function Sx(t, n, i = []) { for (let e = 0; e < t.length; e += 13) { i.push(t[e]); for (let e = 0; e < n.length; e += 13) { if (i.includes(n[e])) n.splice(e, 13) } } return t.concat(n) } $n = x.list; function Ex(e, t, l, c, n, d = [], u = [], i, f = x.weapons[ee].range, h = x.projectiles[1].range + 35) { const s = { buildIndex: -1, weaponIndex: 0, skinIndex: [e, 53, 7][c] || 0, tailIndex: 0, y: z.y2, zIndex: null, sid: z.sid }; c == 2 ? i = 2 : i = 3; Array.from({ length: i }, (e, t) => { d[t] = { ...s, ...c === 0 || c === 1 ? { weaponIndex: [A, ee, ee][t], buildIndex: t === 2 ? 3 : -1 } : {}, ...c === 2 ? { tailIndex: t === 0 ? 19 : 0, weaponIndex: ee } : {} } }); const o = (n, e, i, s, o, r, t = []) => { !s && (s = z); for (let t = 0; t < l.length; t++) { const a = l4(s, 111, l[t], { ...d[n] }); console.log(c, s, l[t], { ...d[n] }); o = i ? a.decel : a.accel; const e = c === 2 ? se(o, Y.np.real, "player") : se(o, Y.np.real); console.log(l[t]); r = { pos: a, move: i ? undefined : l[t], ...d[n], distance: e, x2: o.x, y2: o.y, sid: z.sid, xVel: a.xVel, yVel: a.yVel, type: i ? "decel" : "accel" }; r.t1 = c == 0 ? r : s.t1 ? s.t1 : 0; r.t2 = c == 1 ? r : s.t2 ? s.t2 : 0; if (c == 2) r.t3 = r; (!c || c === 1) && e >= h && u.push(r); c === 2 && e <= f && u.push(r) } }; e: for (const a of Kt) { if (a == 11 && c === 2) continue e; for (let t = 0; t < i; t++) { d[t].tailIndex = a; n ? n.forEach(e => o(t, a, false, e)) : o(t, a) } } console.log(u); console.log("move", u.move); if (!c) return u; if (c === 1) return Mx(7, f, l, 2, u); let r = h + f; u.length ? u = u.reduce((e, t) => { const n = t.t2.distance + t.t3.distance; const i = e.t2.distance + e.t3.distance; const s = Math.abs(i - r); const o = Math.abs(n - r); if (o < s) { return t } else { return e } }) : u = null; return u } function Tx(e, t, n = 53) { return { buildIndex: t, weaponIndex: e, skinIndex: n, tailIndex: 0, y: z.y2, zIndex: null } } function Cx(e, t, n, i) { const s = { ...i, tailIndex: n }; e = JSON.parse(JSON.stringify(e)); console.log(e); const o = l4(e, 111, t, s); return { ...s, x2: o.accel.x, y2: o.accel.y, dist: se(o.accel, e), xVel: e.xVel, yVel: e.yVel, sid: z.sid } } function Bx(e, t, n, i = [], s = [], o) { i[0] = Tx(ee, -1, e); i[1] = Tx(A, -1, e); i[2] = Tx(z.primary, 3, e); o = Y.np.real; for (let e = 0; e < 3; e++) { s[e] = { pos: l4(z, 111, B(z, Y), i[e]), move: n, loadout: i[e] }; s[e].dist = se(s[e].pos.accel, o); s[e].x2 = s[e].pos.accel.x; s[e].y2 = s[e].pos.accel.y } if (Kt.includes(11)) { for (let e = 0; e < 3; e++) { i[e].tailIndex = 11; s[e + 3] = { pos: l4(z, 111, B(z, Y), i[e]), move: n, loadout: i[e] }; s[e + 3].dist = se(s[e + 3].pos.accel, o); s[e + 3].x2 = s[e + 3].pos.accel.x; s[e + 3].y2 = s[e + 3].pos.accel.y } } if (Kt.includes(19)) { for (let e = 0; e < 3; e++) { i[e].tailIndex = 19; s[e + 6] = { pos: l4(z, 111, B(z, Y), i[e]), move: n, loadout: i[e] }; s[e + 6].dist = se(s[e + 6].pos.accel, o); s[e + 6].x2 = s[e + 6].pos.accel.x; s[e + 6].y2 = s[e + 6].pos.accel.y } } s = s.filter(e => e.dist >= t); console.log(`Loadouts ${s}`); return s } function Dx(e, t, n = [], i = []) { for (let e = 0; e < 3; e++) { i[e] = Tx(e === 0 ? A : ee, e === 2 ? 3 : -1) } const s = { pos: z, move: undefined }; console.log(i); s.dist = se(s.pos, i); s.x2 = s.pos.x; s.y2 = s.pos.y; e.push(s); for (const t of e) { for (let e = 0; e < 3; e++) { n.push(Cx(t.pos, t.move, 0, i[e])); n.push(Cx(t.pos, t.move, 11, i[e])) } if (Kt.includes(19)) { for (let e = 0; e < 3; e++) { n.push(Cx(t.pos, t.move, 19, i[e])) } } } return n } function Px(e, t, n = [], i = []) { for (let e = 0; e < 2; e++) { i[e] = Tx(ee, -1, 53); i[e].tailIndex = e === 0 ? 19 : 0 } const s = { pos: z, move: undefined }; s.dist = se(s.pos, i); s.x2 = s.pos.x; s.y2 = s.pos.y; e.push(s); console.log(s); for (const t of e) { for (let e = 0; e < 3; e++) { n.push(Cx(t.pos, t.move, 0, i[e])); n.push(Cx(t.pos, t.move, 11, i[e])) } if (Kt.includes(19)) { for (let e = 0; e < 3; e++) { n.push(Cx(t.pos, t.move, 19, i[e])) } } } return n } function Rx(e, t, n) { let i = []; let s = Bx(e, t, n); console.log(s); s = Dx(s, null, i); s = Px(s, null, i); return s } function Mx(e, t, n, l, i, c = []) { const s = { buildIndex: -1, weaponIndex: 0, skinIndex: [e, 53, 7][l] || 0, tailIndex: 0, y: z.y2, zIndex: null, sid: z.sid }; const o = l === 2 ? 2 : 3; const d = Array.from({ length: o }, (e, t) => ({ ...s, ...l === 0 || l === 1 ? { weaponIndex: [A, ee, ee][t], buildIndex: t === 2 ? 3 : -1 } : {}, ...l === 2 ? { tailIndex: t === 0 ? 19 : 0, weaponIndex: ee } : {} })); const r = (i, e, s, t) => { console.log(t); const o = !t ? z : { t1: t.t1 || 0, t2: t.t2 || 0, t3: l === 2 ? t : 0 }; console.log(o, o); for (const r of n) { const a = l4(z, r, { ...d[i] }); let e = s ? a.decel : a.accel; (!l || l === 1) && console.log(se(e, Y.np.real)); const t = l === 2 ? se(e, Y.np.real, "player") : se(e, Y.np.real); let n = { pos: a, move: s ? undefined : r, ...d[i], distance: t, x2: a.x, y2: a.y, sid: z.sid, xVel: a.xVel, yVel: a.yVel, type: s ? "decel" : "accel", ...o }; console.log(`distance: ${t}`); (!l || l === 1) && t >= x.projectiles[1].speed * 111 + 35 && c.push(n); l === 2 && t <= x.weapons[ee].range && c.push(n) } }; for (const u of Kt) { if (u == 11 && l === 2) continue; for (let t = 0; t < o; t++) { d[t].tailIndex = u; i ? i.forEach(e => r(t, u, false, e)) : r(t, u) } } if (!l) return c; if (l === 1) return Mx(7, x.weapons[ee].range, n, 2, c); const a = x.projectiles[1].speed * 111 + 35 + x.weapons[ee].range; c.length && (c = c.reduce((e, t) => { const n = t.t2.distance + t.t3.distance; const i = e.t2.distance + e.t3.distance; const s = Math.abs(i - a); const o = Math.abs(n - a); return o < s ? t : e })); return c || null } async function Nx(t, e, n, i, s, o, r) { if (!Y || ee != 5 || p || !fn) { hn = false; return } t = x.projectiles[1].speed * 111 + 35; e = se(z, Y); n = [B(z, Y), B(Y, z), undefined]; s = Gt.map(e => Mx(e, t, n, 0)); console.log(s); o = Mx(53, t, n, 1, s); hn = true; if (o.move && z.tr === 1 && z.pr === 1) { fn = false; console.log(o); r = o.t1; I(r.skinIndex, r.tailIndex); T.send("G", r.weaponIndex, true); T.send("a", r.move, "pathfinder"); await A4(); r = o.t2; ct = true; g[0] = B(z, Y); y = ee; U1.showText(z.x2, z.y2, 50, .3, 1e3, se(o.t2, z), "#fff"); T.send("G", r.weaponIndex, true); I(53, r.tailIndex); T.send("a", r.move, "pathfinder"); await A4(); r = o; hn = false; p = true; ct = true; y = ee; U1.showText(z.x2, z.y2, 50, .3, 1e3, se(o.t2, z), "#fff"); T.send("G", r.weaponIndex, true); g[0] = B(z, Y); T.send("D", B(z, Y)); T.send("a", r.move, "pathfinder"); I(7, r.tailIndex); await A4(); p = false; y = null; T.send("a", null); U1.showText(z.x2, z.y2, 50, .3, 1e3, se(o, z), "#fff") } else if (e < t) { Dn != n[1] && T.send("a", n[1], "pathfinder") } else if (e > t) { Dn != n[0] && T.send("a", n[0], "pathfinder") } } function Ox(e, t, l, c, n, d = []) { const i = { buildIndex: -1, weaponIndex: 0, skinIndex: [e, 53, 7][c] || 0, tailIndex: 0, y: z.y2, zIndex: null, sid: z.sid }; const s = c === 2 ? 2 : 3; const u = Array.from({ length: s }, (e, t) => ({ ...i, ...c === 0 || c === 1 ? { weaponIndex: [A, ee, ee][t], buildIndex: t === 2 ? 3 : -1 } : {}, ...c === 2 ? { tailIndex: t === 0 ? 19 : 0, weaponIndex: ee } : {} })); const o = (n, e, i, s, o, r, t = []) => { !s && (s = z); for (let t = 0; t < l.length; t++) { const a = l4(s, 111, l[t], { ...u[n] }); console.log(c, s, l[t], { ...u[n] }); o = i ? a.decel : a.accel; const e = c === 2 ? se(o, Y.np.real, "player") : se(o, Y.np.real); console.log("dist", e); console.log("type", c); r = { pos: a, move: i ? undefined : l[t], ...u[n], distance: e, x2: o.x, y2: o.y, sid: z.sid, xVel: a.xVel, yVel: a.yVel, type: i ? "decel" : "accel" }; r.tick1 = c == 0 ? r : s.tick1 ? s.tick1 : 0; r.tick2 = c == 1 ? r : s.tick2 ? s.tick2 : 0; if (c == 2) r.tick3 = r; (!c || c === 1) && e >= x.projectiles[1].range + 35 && d.push(r); c === 2 && e <= x.projectiles[1].range + 35 && d.push(r) } }; for (const a of Kt) { if (a == 11 && c === 2) continue; for (let t = 0; t < s; t++) { u[t].tailIndex = a; n ? n.forEach(e => o(t, a, false, e)) : o(t, a) } } if (!c) return d; if (c === 1) return Mx(7, x.weapons[ee].range, l, 2, d); const r = x.projectiles[1].range + x.weapons[ee].range; d.length && (d = d.reduce((e, t) => { const n = t.t2.distance + t.t3.distance; const i = e.t2.distance + e.t3.distance; const s = Math.abs(i - r); const o = Math.abs(n - r); return o < s ? t : e })); return d || null } function Lx(e, t, l, c, n, d = []) { const i = { buildIndex: -1, weaponIndex: 0, skinIndex: [e, 53, 7][c] || 0, tailIndex: 0, y: z.y2, zIndex: null, sid: z.sid }; const s = c === 2 ? 2 : 3; const u = Array.from({ length: s }, (e, t) => ({ ...i, ...c === 0 || c === 1 ? { weaponIndex: [A, ee, ee][t], buildIndex: t === 2 ? 3 : -1 } : {}, ...c === 2 ? { tailIndex: t === 0 ? 19 : 0, weaponIndex: ee } : {} })); const o = (t, e, n, i) => { for (const s of l) { const o = l4(z, 111, s, { ...u[t] }); const r = n ? o.decel : o.accel; const e = c === 2 ? se(r, Y.np.real, "player") : se(r, Y.np.real); console.log("next", o, "dist", e, "dir", s); console.log(n ? "decel" : "accel"); const a = { pos: o, move: n ? undefined : s, ...u[t], distance: e, x2: r.x, y2: r.y, sid: z.sid, xVel: o.xVel, yVel: o.yVel, type: n ? "decel" : "accel" }; a.tick1 = c == 0 ? a : z.tick1 ? z.tick1 : 0; a.tick2 = c == 1 ? a : z.tick2 ? z.tick2 : 0; if (c == 2) a.tick3 = a; (!c || c === 1) && e >= x.projectiles[1].range + 35 && d.push(a); c === 2 && e <= x.weapons[ee].range && d.push(a); console.log("v", d) } }; for (const a of Kt) { if (a == 11 && c === 2) continue; for (let t = 0; t < s; t++) { u[t].tailIndex = a; n ? n.forEach(e => o(t, a, false, e)) : o(t, a) } } if (!c) return d; if (c === 1) return Mx(7, x.weapons[ee].range, l, 2, d); const r = x.projectiles[1].range + x.weapons[ee].range; d.length && (d = d.reduce((e, t) => { const n = t.tick2.distance + t.tick3.distance; const i = e.tick2.distance + e.tick3.distance; const s = S(i - r); const o = S(n - r); return o < s ? t : e })); return d || null } function Fx(i = [], s = 0, e, t) { if (!Y) return; const o = { buildIndex: -1, weaponIndex: z.weaponIndex, skinIndex: z.skinIndex, tailIndex: z.tailIndex, y: z.y2, zIndex: null, sid: z.sid }; const r = a4(Y, 3, Y.movDir); const a = s === 0 ? Gt.concat([19], [0]) : s === 1 ? [53] : [7]; const l = [B(z, Y), B(Y, z), B(z, r[2].real), B(r[2].real, z), undefined]; const c = [ee, A, [ay]]; let d; const u = function(e, t, n) { console.log(e, t, n); e.tick = v + s; e.skinIndex = n.skinIndex; e.tailIndex = n.tailIndex; e.weaponIndex = n.weaponIndex; e.buildIndex = n.buildIndex; e.xVel = e.xVel; e.yVel = e.yVel; e.x2 = e.real.x; e.y2 = e.real.y; e.moveAngle = t; e.distance = s === 2 ? se(e, r[2], "player") : se(e, r[s]); console.log(s, se(e, r[2], "player"), se(e, r[s])) }; for (let n = 0; n < a.length; n++) { for (let t = 0; t < l.length; t++) { for (let e = 0; e < c.length; e++) { const f = { ...o }; if (!Array.isArray(a[n])) { f.skinIndex = a[n]; f.weaponIndex = s === 2 ? ee : c[e]; f.buildIndex = !Array.isArray(c[e]) || s === 2 ? -1 : ay; d = l4(z, l[t], f) } else { f.tailIndex = a[n][0]; f.weaponIndex = !Array.isArray(c[e]) ? c[e] : z.weaponIndex; f.buildIndex = Array.isArray(c[e]) ? ay : -1; d = l4(z, l[t], f) } if (s === 1 && se(d.real, r[1].real) > x.projectiles[1] * 111 - 35 || s === 2 && se(d.real, r[2].real, "player") <= x.weapons[ee].range || s === 0) { i.push(d); u(d, l[t], f) } } } } } function _x(e, t, n = 0, i = 4, o = { hat: null, tail: null, weapon: null }, s = []) { const r = { buildIndex: -1, weaponIndex: null, skinIndex: null, tailIndex: null, y: z.y2, zIndex: null, sid: z.sid }; const a = Gt.concat([19], [0]); if (n < i) { const d = a4(t, n, t.movDir); const u = [B(z, t), B(Y, z), B(z, d[n - 1].real), B(d[n - 1].real, z), undefined]; function l(e, t, n, i, s = 111) { a.forEach(n => { u.forEach(e => { const t = { ...o, skinIndex: n, tailIndex: n } }) }) } if (n === i) { console.log("Final positions:", s) } function c(e, t, n, i, s, o, r) { let a = { ...e }; e.x2 = i; e.y2 = s; e.xVel = o; e.yVel = r; e.skinIndex = t; e.tailIndex = n; return e } } } function Vx(e, t, n, i, s) { i = Ux(e, t, n); i && (s = true); i = Ux(e, t + Z(15), n); i && (s = true); i = Ux(e, t - Z(15), n); i && (s = true); i = Ux(e, t + Z(30), n); i && (s = true); i = Ux(e, t - Z(30), n); i && (s = true); i = Ux(e, t + Z(45), n); i && (s = true); i = Ux(e, t - Z(45), n); i && (s = true); if (s) return true; return false } function Ux(e, t, n, i) { i = 35 + e.scale + (e.placeOffset || 0); let s = Y.x2 - (z.x2 + U(t) * i), o = Y.y2 - (z.y2 + V(t) * i), r = 35 + e.scale, a = C.checkItemLocation3(z.x2 + U(t) * i, z.y2 + V(t) * i, e.scale, .6, e.id, false); if (n && a) { if ((S(s) <= r || S(o) <= r) && se(Y, z) <= 35 + n.scale) { c4(e.id, t); return true } } return false } function jx(t, n, i, s) { if (!Y || z.pr != 1 || p || !ko.checked || hn) return; if (ee == 3 || ee == 4 || ee == 5) { for (let e = kn.length - 1; e >= 0; e--) { t = kn[e]; if (!L3(z, t)) { kn.splice(e, 1); continue } n = C.checkItemLocation2(t.x, t.y, x.list[ly].scale, .6, t.id, false); if (!n) { kn.splice(e, 1); continue } console.log(t); if (n && !p && se(z, t) <= 126 && se(Y, t) <= t.scale + 35 && se(z, Y, "player") <= x.weapons[ee].range) { i = Wx(x.list[ly], B(z, t), t); console.log("n", i); if (!i) { kn.splice(e, 1); continue } kn.splice(e, 1); b(`Spike tick on ${Y.name}[${Y.sid}]`, "", "#5c0620", false, true); c4(z.items[2], B(z, t)); p = true; s = B(z, Y); g[0] = s; T.send("D", s, "client"); ct = true; I(7, 18); y = ee; T.send("G", ee, true); setTimeout(() => { p = false; ct = false; y = null }, 1) } } kn = [] } } function Hx(e, t, n, i, s) { s = 35 + e.scale + (e.placeOffset || 0); let o = Y.x2 - (z.x2 + U(t) * s), r = Y.y2 - (z.y2 + V(t) * s), a = 35 + e.scale, l = C.checkItemLocation4(z.x2 + U(t) * s, z.y2 + V(t) * s, e.scale, .6, n.id, false, n); if (n && l) { if ((S(o) <= a || S(r) <= a) && se(Y, n) <= n.scale + 35) { return true } } return false } function Wx(e, t, n, i, s) { i = Hx(e, t, n); i && (s = true); i = Hx(e, t + Z(15), n); i && (s = true); i = Hx(e, t - Z(15), n); i && (s = true); i = Hx(e, t + Z(30), n); i && (s = true); i = Hx(e, t - Z(30), n); i && (s = true); if (s) return true; return false } async function Qx(t, n, i, s, o) { if (!fo.checked || !Y || A != 10 || !Y?.inTrap || gt || p || hn || jt || z.sr != 1 || z.pr != 1) return; if (ee == 3 || ee == 4 || ee == 5) { let e; n = Y.inTrap; t = B(z, n); i = 75 * En[z.secondaryVar] * (Nn.includes(40) ? 3.3 : 1) >= n.health; s = x.weapons; o = [se(z, n, "object"), se(z, Y, "player")]; if (o[0] <= s[A].range && o[1] <= s[ee].range && Wx(x.list[ly], t, n) && o4(z, Y) && i && (ee == 5 && z?.primaryVar == 1 || ee == 4 && z?.primaryVar > 1 ? Y.weaponR == 1 && Y.weaponIndex <= 10 : true) && z.tailIndex != 11) { gt = true; if (z?.dmgpot?.soldier && Y.pr == 1 && z?.dmgpot?.shouldHeal && [4, 5].includes(Y?.primary)) { b(`Cancelled TA due to spike sync threat`, "", "#5c0620", false, true); I(6, 0) } else { I(40, 0) } g[0] = t; T.send("D", t); ct = true; y = A; z.hitting = true; T.send("G", A, true); Mt = true; b(`TA on ${Y.name}[${Y.sid}]`, "", "#5c0620", false, true); await A4(); b(`${Y.health}`, "", "#5c0620", false, true); gt = false; p = true; y = ee; if (z?.dmgpot?.soldier && Y.pr == 1 && z?.dmgpot?.shouldHeal && [4, 5].includes(Y?.primary)) { b(`Cancelled TA due to spike sync threat`, "", "#5c0620", false, true); I(6) } else { I(7) } T.send("G", ee, true); t = B(z, n); z.hitting = true; g[0] = t; T.send("D", B(z, Y)); c4(ly, t + Z(15), ee); c4(ly, t - Z(15), ee); c4(ly, B(z, Y), ee); T.send("D", B(z, Y)); T.send("G", ee, true); await A4(); ct = false; y = null; Mt = false; g[0] = null; p = false } } } async function Yx(e, t, n, i, s, o) { if (ee != 5 || z.primaryVar < 2 || !fo.checked || !Y || A != 10 || !Y?.inTrap || gt || p || hn || jt || z.sr != 1 || z.pr != 1) return; let r; t = Y.inTrap; e = B(z, t); n = 75 * En[z.secondaryVar] * (Nn.includes(40) ? 3.3 : 1) >= t.health; i = 75 * En[z.secondaryVar] * (Nn.includes(40) ? 3.3 : 1) + (Y.secondary == 10 ? 75 : x.weapons[Y.primary].dmg) * En[z.secondary == 10 ? Y.secondaryVar : Y.primaryVar] * 3.3 >= t.health; s = x.weapons; o = [se(z, t, "object"), se(z, Y, "player")]; if (o[0] <= s[A].range && o[1] <= s[ee].range && Wx(x.list[ly], e, t) && o4(z, Y) && z.tailIndex != 11) { if (n) { gt = true; I(40, 0); g[0] = e; T.send("D", e, "client"); ct = true; y = A; z.hitting = true; T.send("G", A, true); Mt = true; b(`PA on ${Y.name}[${Y.sid}]`, "", "#5c0620", false, true); Bg(e, A, z.secondaryVar, 40, 1); await A4(); p = true; y = ee; I(7, 18); T.send("G", ee, true); e = B(z, t); z.hitting = true; g[0] = e; T.send("D", B(z, Y), "client"); c4(ly, e + Z(15), ee); c4(ly, e - Z(15), ee); c4(ly, B(z, Y), ee); c4(ly, e, ee); T.send("D", B(z, Y), "client"); T.send("G", ee, true); await A4(); ct = false; gt = false; y = null; Mt = false; g[0] = null; p = false } } } function zx() { if (!Y || !z.pr || !z.sr || !(z.primaryVar === 3 || z.secondaryVar === 3) || A != 10 || ee != 5) return } function Gx() { if (z && en && ii) { return oe(o5(z, Y, 1, 1.5, B(z, Y)), o5(ii, Y, 1, 1.5, B(ii, Y))) } } function Kx() { if (Sn.length > 0 && en && Y) { return oe(...Sn.map(e => o5(e, Y, 1, 1.5, B(e, Y)))) } } let Xx = []; let Jx = []; let qx = null; function $x(e) { Xx = e; if (gy("music")?.checked) { if (qx !== null) { qx.pause() } if (Jx.length === Xx.length) { Jx = [] } let e; do { e = f(Math.random() * Xx.length) } while (Jx.includes(e)); const t = Xx[e]; qx = new Audio; qx.src = t; qx.preload = "auto"; qx.play(); qx.addEventListener("ended", Zx) } else { if (qx !== null) { qx.pause() } } } function Zx() { if (qx !== null) { qx.removeEventListener("ended", Zx); Jx.push(Xx.indexOf(qx.src)); qx = null } } function e5() { if (qx === null) { $x(Xx) } } const t5 = ["https://example.com/song1.mp3", "https://example.com/song2.mp3", "https://example.com/song3.mp3"]; function n5(e, t) { if (z.sr !== 1 || z.tr !== 1 || !Y || !ii || se(z, Y) > 700 || se(ii, Y) > 700 || ii.sr !== 1 || ii.tr !== 1) return; if (z && en && Y && ii) { var n; var i = o5(z, Y, 1, 1.5, B(z, Y)); var s = Gx(); var o; if (x.list[hy].name == "platform") c4(hy, B(z, Y)); if (A == 15 && o5(z, Y, 1, 1.5, B(z, Y)) == o5(z, Y, 5, 3.6, B(z, Y))) { o = o5(z, Y, 5, 3.6, B(z, Y)) } else if (A == 15 && o5(z, Y, 1, 1.5, B(z, Y)) !== o5(z, Y, 5, 3.6, B(z, Y))) { o = o5(z, Y, 5, 4.68, B(z, Y)) } if (A == 9) { o = o5(z, Y, 0, 1.6, B(z, Y)) } if (A == 13) { o = o5(z, Y, 3, 2, B(z, Y)) } if (A == 12) { o = o5(z, Y, 2, 2.5, B(z, Y)) } e = s * 111 - o * 111; t = s * 111 - i * 111 } setTimeout(() => { p = true; g[0] = B(z, Y); ct = true; T.send("D", B(z, Y), "client"); I(53, 0) }, t); setTimeout(() => { if (o5(z, Y, 1, 1.5, B(z, Y)) !== o5(z, Y, 5, 3.6, B(z, Y))) { I(1, 0) } p = true; g[0] = B(z, Y); ct = true; T.send("D", B(z, Y), "client"); T.send("G", A, true); y = A }, e); setTimeout(() => { p = false }, 666) } async function i5(e) { if (!m.R || z.sr !== 1 || z.tr !== 1 || !Y) return; if (z && en && Y) { var t; var n = o5(z, Y, 1, 1.5, B(z, Y)); var i; if (A == 15 && o5(z, Y, 1, 1.5, B(z, Y)) == o5(z, Y, 5, 3.6, B(z, Y))) { i = o5(z, Y, 5, 3.6, B(z, Y)) } else if (A == 15 && o5(z, Y, 1, 1.5, B(z, Y)) !== o5(z, Y, 5, 3.6, B(z, Y))) { i = o5(z, Y, 5, 4.68, B(z, Y)) } if (A == 9) { i = o5(z, Y, 0, 1.6, B(z, Y)) } if (A == 13) { i = o5(z, Y, 3, 2, B(z, Y)) } if (A == 12) { i = o5(z, Y, 2, 2.5, B(z, Y)) } e = n * 111 - i * 111; console.log(e) } p = true; g[0] = B(z, Y); ct = true; T.send("D", B(z, Y)); I(53, 0); await s5(e); if (o5(z, Y, 1, 1.5, B(z, Y)) !== o5(z, Y, 5, 3.6, B(z, Y))) { I(1, 0) } p = true; g[0] = B(z, Y); ct = true; T.send("D", B(z, Y)); T.send("G", A, true); y = A; await s5(222); p = false } function s5(t) { return new Promise(e => setTimeout(e, t)) } function o5(e, t, n, i, s) { var o = i * U(s); var r = i * V(s); var a = se(e, t); var l; if (n !== 1) { l = oe((a - 105) / D(o * o + r * r), 0) } else { l = oe((a - 35) / D(o * o + r * r), 0) } var c; c = f(l / 111); return c } function r5(e, t, n, i, s) { var o = i * U(s); var r = i * V(s); var a = se(z, t); var l = (a - 35) / (i * 111); l = l < 1 ? 0 : c(l); return l } function a5(e, t, n) { n = P3(z.x2, z.y2, B(z, Y), e == 1 ? 0 : 70); return (se(n, Y) - 35) / t } async function l5(e, t, n, i, s, o) { let r; o = Hg(e); if (o.health <= 0 && o.vis2 && !o.visible && !o.didDeath) g3(o, 55, .28, 48, 13, .00215, 0), o.deaths++, o.didDeath = true; if (!z.healths) z.healths = []; if (o.sid == z.sid) { if (z.healths.length >= 8) z.healths.pop(); if (o.sid == z.sid) z.healths.push({ hp: o.health, tick: v }) } if (t == -5 * (o.skinIndex == 6 ? .75 : 1) && o.poison) { o.lastBull = v - 1 } if (o.health <= 0) o.Alive = false, o.Alive2 = false; if (t < 0) { if (o.sid != z.sid && o.dmgs == "XD") { o.dmgs = 0 } if (o.sid != z.sid) { o.dmgs += S(t) } if (o == z) z.lastDamage3 = i } o.dmgsNow.unshift(H(t * 100) / 100); if (t > 0) { if (o.skinIndex == 13) { if (o.tailIndex == 13) { t == 6 && (o.lastBull = v - 1); z == o && (et = 0); return } else { t == 3 && (o.lastBull = v - 1); z == o && (et = 0); return } } if (!isNaN(o.shameCount) && o.lastDamage) { if (i - o.lastDamage <= 120) { o.healTime = i - o.lastDamage2; o.shameCount >= 8 && o.assumeAge >= 7 && S(tn - i) <= 2 && t <= 10 && o.loadout.utility == undefined && (o.loadout.utility = z.list[2]); r = o.assumeAge >= 7 && o.loadout?.utility?.name == "cheese" && S(tn - i) <= 2 && t <= 10 ? true : false; if (!r) { o.noAntiList = o.noAntiList.map(e => e * .95); !o.shameUp && (o.shameUp = []); o.shameUp.length >= 5 && o.shameUp.shift(); o.shameUp.push(o.healTime); o.gainSpeed = o.shameUp.reduce((e, t) => e + t, 0) / o.shameUp.length; o.prevShameUp = o.shameCount; if (o.lowHealth <= 40) { o.noAntiList[o.shameCount]-- } o.shameCount = j(8, o.shameCount + 1) } } else { r = o.assumeAge >= 7 && o.loadout?.utility?.name == "cheese" && S(tn - i) <= 2 && t <= 10 ? true : false; if (!r) { o.healTime = i - o.lastDamage2; !o.shameDown && (o.shameDown = []); o.shameDown.length >= 5 && o.shameDown.shift(); o.shameDown.push(o.healTime); o.leakSpeed = o.shameDown.reduce((e, t) => e + t, 0) / o.shameDown.length; o.prevShameDown = o.shameCount; if (o.lowHealth <= 60) { o.noAntiList[o.shameCount]++; let t = o.noAntiList.reduce((e, t) => e + (t > 0 ? t : 0), 0); if (t >= 3) { let e = o.noAntiList.indexOf(Math.max(...o.noAntiList)); if (o.noAntiList[e] * 2 > t) { o.noAnti = e } } } o.shameCount = oe(0, o.shameCount - 2) } } o.lastDamage = 0; o.lastDamage2 = 0; o.thisHealth = undefined } } else { o.lowHealth = n; o.lastDamage = i; o.lastDamage2 = i; o.dmgDate = i; o.thisHealth = o.health; if (!te(o.sid) && Y?.inTrap) { let e = Xt.filter(e => se(Y.inTrap, e) <= 50 + e.scale + 35 && (te(e?.owner?.sid) && e?.group?.name == "spikes" || Y && !Y.team && e?.group?.name == "spikes" && e?.owner?.sid != Y.sid || e?.type == 1 && e.y >= 12e3)); if (e.length && t == -(e[0]?.type != 1 ? e[0]?.dmg : 35) * (o.skinIndex == 6 ? .75 : 1)) o.hitSpike = true } if (o.sid === z.sid) { let e = Xt.filter(e => se(z, e) <= e.scale + 35 && (!te(e?.owner?.sid) && e?.group?.name == "spikes" || e?.type == 1 && e.y >= 12e3)); if (e.length && t == -(e[0]?.type != 1 ? e[0]?.dmg : 35) * (o.skinIndex == 6 ? .75 : 1)) { o.hitSpike = e[0] } } if (o.skinIndex == 7) { if (o.tailIndex == 13) { if (t == -2) { o.lastBull = v - 1; o.lastBull2 = Date.now(); o.bTT = 1e3; return } } else { if (t == -5) { if (o == z) { et = 0 } if (z.sid === o.sid) console.log(v - o.lastBull - 1, Date.now() - o.lastBull2); o.lastBull2 = Date.now(); o.bTT = 1e3; o.lastBull = v - 1; return } } } } } function c5(e) { if (e == "reverse") { let e = [{ hit: true, weapon: A, hat: 53, tail: "none", aim: "closest enemy" }, { hit: true, weapon: ee, hat: 7, tail: "none", aim: "closest enemy" }]; return e } if (e == "apple") { let e = [{ hit: true, weapon: ee, hat: "none", tail: "none", restrict: { hat: [53, 7], tail: "none" }, aim: "closest enemy" }, { hit: true, weapon: A, hat: 7, tail: "none", aim: "closest enemy" }] } if (e == "no bull") { let e = [{ hit: true, weapon: ee, hat: "none", tail: "none", restrict: { hat: [7, 53], tail: [11] }, aim: "closest enemy" }, { hit: true, weapon: A, hat: 53, tail: "none", aim: "closest enemy" }]; return e } if (e == "rubyPH") { let e = [{ hit: true, weapon: ee, hat: 7, tail: "none", aim: "closest enemy" }, { hit: true, weapon: A, hat: 7, tail: "none", aim: "closest enemy" }]; return e } if (e == "applePH") { let e = [{ hit: true, weapon: ee, hat: 53, tail: "none", aim: "closest enemy" }, { hit: true, weapon: A, hat: 7, tail: "none", aim: "closest enemy" }]; return e } if (e == "regular") { let e = [{ hit: true, weapon: ee, hat: 7, tail: "none", aim: "closest enemy" }, { hit: true, weapon: A, hat: 53, tail: "none", aim: "closest enemy" }]; return e } if (e == "age 1") { let e = [{ hit: true, weapon: ee, hat: 7, tail: "none", aim: "closest enemy" }, { hit: true, weapoon: ee, hat: 7, tail: "none", aim: "closest enemy" }, { hit: true, weapon: A, hat: 53, tail: "none", aim: "closest enemy" }, { hit: true, weapon: A, hat: "none", tail: "none", aim: "closest enemy" }, { hit: true, weapon: ee, hat: 7, tail: "none", aim: "closest enemy" }]; return e } if (e == "bow insta") {} } function d5() { if (!en || on.status == false || !z.canBuild(x.list[cy])) return on.status = false; if (S4(z, on) > 100) { if (on.status) { c4(cy, Dn + Z(180)); c4(cy, Dn + Z(180) - Z(69)); c4(cy, Dn + Z(180) + Z(69)) } on.x = z.x2, on.y = z.y2 } } function u5(e, t, n, i, s, o, r, a, l, c, d, u, f) { r = x.list[e]; r?.name == "blocker" ? d = 300 : d = 0; if (!r) return; a = 35 + r.scale + (r.placeOffset || 0); l = z.x2 + U(t) * a; c = z.y2 + V(t) * a; if (o == "outplace") { f = C.checkItemLocation3(l, c, r?.scale, .6, r?.id, false, true) } else { f = C.checkItemLocation(l, c, r?.scale, .6, r?.id, false, i) } if (n || f && !n) ct = true; if (r && (f || n)) { c4(e, t); if (s) { C.add(v, s.x, s.y, s.angle, s.scale, null, x.list[s.item.id], !0, { sid: z.sid }, false, false, true, true) } } let h = x.list[e]; if (f) {} if (n && !f) {} } function f5(t, n, i, s, e, o, r) { for (var a = 0; a < Xt.length; ++a) { let e = Xt[a]; var l = e.blocker ? e.blocker : e.getScale(s, e.isItem); if (se({ x: t, y: n }, e) < i + l) return !1 } return !(!o && 18 != e && n >= K.mapScale / 2 - K.riverWidth / 2 && n <= K.mapScale / 2 + K.riverWidth / 2) } function h5(e) {} function p5(n) { if (!en) return; let i = { hp: 0, primary: 0, secondary: 0, maxOT: 0, turretGear: 0, add: 0, inrange: 0, spikes: 0, soldier: 0, forceSoldier: 0, shouldHeal: false }; for (let e = vn.length, t; e--;) { n = (t = vn[e]).dmgpot.range + t.movSpd + z.movSpd + 50; if (se(z, t, "player") <= n) { if (i.hp == null || i.hp == undefined) i.hp = t.dmgpot.min + z.hitProjs; t.dmgpot.min > i.hp && (i.hp = t.dmgpot.min); i.primary += t.dmgpot.primary; i.secondary += t?.dmgpot.secondary; i.add += i.primary + i.secondary; i.turretGear += t?.dmgpot.turretGear; i.inrange += 1; i.spikes += i.spikes; !i.soldier && (t.dmgpot.soldier || i.primary >= 100 || z.hitProjs >= 100) && (i.soldier = true); !i.forceSoldier && t.dmgpot.forceSoldier && (i.forceSoldier = true) } } i.shouldHeal = i.hp >= z.health; return i } function m5(n) { let i = { primary: 0, secondary: 0, turretGear: 0, soldier: false, forceSoldier: false, min: 0, m1: 0, spikes: 0, m2: 0 }; let t = !n.secondary ? 15 : n.secondary; let s = !isNaN(n.primary) && n.primary != null ? n.primary : 5; let o = x.weapons.filter(e => e.age > n.assumeAge && e.id > 8 && (null == e?.pre || e.uF.includes(t) && !e.uF.includes(s))); o.length ? o = o.reduce((e, t) => e.dmg > t.dmg ? e : t) : o = 0; let e = x.weapons.filter(e => e.age > n.assumeAge && e.id <= 8 && (null == e?.pre || e.uF.includes(s) && e.uF.includes(t) && e.uF.includes(o?.id))); e.length ? e = e.reduce((e, t) => e.dmg > t.dmg ? e : t) : e = 0; let r = e !== 0 && (s && n.pr == 1 && x.weapons[s].dmg < e.dmg || !n.pr && s) ? e.dmg * (n.tailIndex === 11 ? 1 : 1.5) : s && n.pr == 1 ? x.weapons[s]?.dmg * En[n?.primaryVar] * 1.5 : 0; let a = o !== 0 && (t && n.sr == 1 && x.weapons[t].dmg < o.dmg || !n.sr && t) ? o.dmg * (o.projectile == undefined ? 1.5 : 1) : t && n.sr == 1 ? x.weapons[t].dmg * (x.weapons[t].projectile == undefined ? En[n?.secondaryVar] * (n.tailIndex === 11 ? 1 : 1.5) : 1) : 0; if (r && n.primaryVar == 3 && z.bleed === 0 || z.poison > 0 && z.bleed === 0) r += 5; if (a && (n.secondary == 10 || n.secondary == 14) && z.bleed === 0 || z.poison > 0 && z.bleed === 0) a += 5; let l = v3(z, B(n.np.real, z.np.real), se(z, n.kbpot.fpriTKB), true, 0); let c = v3(z, B(n.np.real, z.np.real), se(z, n.kbpot.priKB), true, 0); let d = Q.filter(e => Nt && e?.group?.name === "spikes" && (!e.manualBreak || !e.assumeBreak) && (se(z, n) <= 130 && Ay(B(n, e), B(n, z)) <= 3) && !te(e.owner.sid) && se(z, e, "object") <= (A === 10 ? 75 : x.weapons[ee]?.range)).sort((e, t) => se(z, e, "object") - se(z, t, "object")); let u = 0, f = 0; let h = Q.filter(e => (e.name == "pit trap" || e.group?.name == "spikes" || e.type === 1 && e.y >= 12e3) && e.distance <= 450); i.range = e?.range != undefined && e?.range > x.weapons[s].range ? e?.range : x.weapons[s].range; i.primary += r; if ((n.secondary === 10 || n.secondary == 14) && se(z, n, "player") <= x.weapons[t].range || !isNaN(x.weapons[t]?.projectile) && se(z, n) - 105 <= x.projectiles[x?.weapons[t]?.projectile]?.range * 111 + 40) { i.secondary += a } if (n.placePot.onPlayer.length && h.length) { let e = U5(n.placePot.onPlayer, h, z); if (e.building && (e.bounce || e.building.name != "pit trap")) { u = e.building.dmg; m3(e.newPos) } } if (d.length > 0) for (let t = d.length; t--;) { let e = d[t]; if (se(z, n, "player") <= x.weapons[s].range && (se(z, e) <= 35 + e.realScale || z.spdMult > 0 && se(z.np.decel, e) <= 35 + e.realScale + 3.5)) { f += e.dmg; if (n.pr == 1 && (s == 3 || s == 4 || s == 5) && f + i.primary >= z.health) i.forceSoldier = true; if (i.forceSoldier) { U1.showText(z.x2, z.y2, 20, .18, 800, "anti melee sync test", "#fff") } } } i.spikes = 0; i.spikes = n.placePot.onPlayer.length ? n.loadout.spike.dmg + u : l && !Nt ? l.obj.dmg : 0; if (n.tr === 1 && y5(z, n, 1.5 * 111 + 60, 0, 1)) { i.turretGear += 25 } i.m1 = i.primary; i.m2 = i.secondary + i.turretGear; i.min = i.m1 >= i.m2 ? i.m1 + i.spikes : i.m2 + i.spikes; i.soldier = n.placePot.onPlayer.length ? true : c && n.pr === 1 && !Nt ? true : false; return i } function g5(e) { if (Dn != e) { T.send("a", e, "client") } } function y5(e, t, n, i = undefined, s) { if (s && se(e.np.real, t.np.real, i) <= n) { return true } if (se(e, t, i) <= n) { return true } return false } async function x5(e, t = Hg(e.sid)) { if (e.shameTimer <= 0 || e.skinIndex != 45 || t == null || t == undefined) return; t.shameCount = 0; t.clowned = true; t.shameTimer -= e.delta / 1e3; await A4(); x5(t) } function w5(e, t, n, i) { let s = .3 + (x.weapons[e?.primary]?.knock || 0); let o = .3 + (x.weapons[e?.secondary]?.knock || 0); !n && (n = B(e, t)); let r = Math.cos(n), a = Math.sin(n); i = { xP: s * r * 111, yP: s * a * 111, xS: o * r * 111, yS: o * a * 111 }; let l = { priKB: { x: t.x2 + (t.xVel + i.xP), y: t.y2 + (t.yVel + i.yP) }, secKB: { x: t.x2 + (t.xVel + i.xS), y: t.y2 + (t.yVel + i.yS) }, turKB: { x: t.x2 + (t.xVel + .3 * r * 111), y: t.y2 + (t.yVel + .3 * a * 111) }, priTKB: { x: t.x2 + (t.xVel + i.xP + .3), y: t.y2 + (t.yVel + i.xP + .3) }, secTKB: { x: t.x2 + (t.xVel + i.xS + .3), y: t.y2 + (t.yVel + i.xS + .3) }, fpriKB: { x: t.np.real.x + (t.np.xVel + i.xP), y: t.np.real.y + (t.np.yVel + i.yP) }, fsecKB: { x: t.np.real.x + (t.np.xVel + i.xS), y: t.np.real.y + (t.np.yVel + i.yS) }, fturKB: { x: t.np.real.x + (t.np.xVel + .3 * r * 111), y: t.np.real.y + (t.np.yVel + .3 * a * 111) }, fpriTKB: { x: t.np.real.x + (t.np.xVel + i.xP + .3), y: t.np.real.y + (t.np.yVel + i.xP + .3) }, fsecTKB: { x: t.np.real.x + (t.np.xVel + i.xS + .3), y: t.np.real.y + (t.np.yVel + i.xS + .3) } }; return l } function b5(e) { if (z.y2 <= K.snowBiomeTop) { if (e) return { skinIndex: 15, tailIndex: 11 }; I(15, 11) } else if (z.inWater) { if (e) return { skinIndex: 31, tailIndex: 11 }; I(31, 11) } else { if (e) return { skinIndex: 12, tailIndex: 11 }; I(12, 11) } } function v5() { if (!en) return } if (window.location.href.startsWith("https://sandbox")) _n = true; pt = x.list; let k5 = [0, 0]; function A5(e = x.weapons) { if (Nt || p || g[0] !== null || z.pr === 1 && z.sr === 1 && k5[0] || y || !en || m.lc || m.rc || m.mc || hn || Oi) return; if (z.sr != 1) { if (z.weaponIndex != A || z.buildIndex != -1) T.send("G", A, true); y = A; k5[1] = true } if (z.pr != 1 && (z.sr == 1 || A === null)) { if (z.weaponIndex != ee || z.buildIndex != -1) T.send("G", ee, true); y = ee; k5[1] = true } } var I5 = []; var S5 = false; var E5; function T5() { try { Ki = new WebSocket("wss://scarce-materialistic-bottle.glitch.me"); let c; Ki.onmessage = function(e) { var t = new FileReader; if (e.data instanceof Blob) { t.onload = function(e) { var t = e.target.result; try { var n = E(t); c = n; if (c?.msg == "status" && document.getElementById("melee sync").checked && c?.server === location.href) { let e = c; let t = Hg(e.team.sid); let n = x.weapons; if (e.team.sid != z.sid && t != null && Y && e.team.pr == 1 && !e.busy && !p && z.pr == 1 && o4(z, Y) && o4(e.team, Y) && Vy(e.team, Y, n[e.team.primary].range, true) && Vy(z, Y, n[ee].range, true)) { p = true; y = ee; g[0] = B(z, Y); T.send("K", 1); T.send("G", ee, true); I(7, 18); T.send("G", ee, true); ct = true; T.send("D", B(z, Y), "client"); setTimeout(() => { p = false }, 111) } } if (c?.chatting) { if (c.chatting.val == z.sid) T.send("6", c.msg) } if (c?.chat) { let e = Hg(c.id.sid); if (c.server == location.href) { if ((e == null || e?.sid != z.sid) && c.pm) { Zn = { message: `PM: ${c.chat}`, id: c.id.sid, time: 3e3 } } if (e == null || !e?.visible || c.chatter) { let e = c.chatter ? " (PM)" : ""; b(`${c.id.name}[${c.id.sid}]${e}: `, c.chat, c.color, c.pm) } } else { const s = /server=(.+)/.exec(c.server); const e = c.server.includes("sandbox") ? `s-${s&&s[1]}` : s && s[1]; b(`${c.id.name}[${c.id.sid}] ${e}: `, c.chat, c.color) } } if (c?.melee) { if (c.melee.sid == z.sid) { p = true; y = ee; g[0] = B(z, Y); T.send("K", 1); T.send("G", ee, true); I(7, 18); T.send("XX", c.melee, true); ct = true; T.send("D", B(z, Y), "client"); setTimeout(() => { p = false }, 111) } } if (c?.message != undefined && (!Hg(c.id)?.visible || Hg(c.id) == null)) { Zn = c } if (c?.msg == "pinger" && c?.server === location.href) { Gn = 1e4 } if (c?.msg == "removeBuild" && c?.server === location.href) { if (c?.sender != z.sid) { es.builds = es.builds.filter(e => { return e.sid !== c.removeSid }) } } if (c?.msg == "sendBuildData") { if (c?.sender != z.sid && !((c?.sendX - z?.x) ** 2 + (c?.sendY - z?.y) ** 2 <= 1500 ** 2)) { let { sid: e, x: t, y: n, dir: i, scale: s, resource: o, item: r, active: a, owner: l } = c?.data; C.add(e, t, n, i, s, o, r, a, l >= 0 ? { sid: l } : null, false, true, false, false, false) } } if (c?.msg == "sendWiggleData") { if (c?.sender != z.sid && !((c?.sendX - z?.x) ** 2 + (c?.sendY - z?.y) ** 2 <= 1500 ** 2)) { let e = zg(c?.build); e && (e.xWiggle += K.gatherWiggle * U(c?.wiggleDir), e.yWiggle += K.gatherWiggle * V(c?.wiggleDir)) } } if (c?.msg == "spectate") { if (c?.sender != z?.sid) { if (c?.playerToSpec == z?.sid) { $i = c.playerToSpec; b(`You are being spectated by ${Hg(c?.sender)?.name} [${c?.sender}]`, "", "#2b0640", false, true) } else if (c?.playerToSpec === undefined) { b(`You are no longer being spectated`, "", "#2b0640", false, true); $i = undefined } } } if (c?.msg == "spectateData" && c?.sender != z.sid && c?.server === location.href) { es.player = c?.player; es.testPlayers = c?.players; const o = c?.builds.filter(t => !kh.some(e => e.sid === t.sid)); for (let e = 0; e < o.length; e++) { let t = o[e]; if (!es?.builds.some(e => e.sid === t.sid)) { C.add(t.sid, t.x, t.y, t.dir, t.scale, t.type, x.list[t.id], t.active, t?.owner?.sid >= 0 ? { sid: t?.owner?.sid } : null, false, true, false, false, false) } } const r = c?.players.filter(t => !J.some(e => e.sid === t.sid)); for (let e = 0; e < r.length; e++) { let n = r[e]; let t = [n.id, n.sid, n.name, n.x, n.y, n.dir, n.health, 100, 35, 0]; const a = es?.players.find(e => e.sid === n.sid); if (!a) { const e = new mc(es.id, es.sid, K, X, Ih, C, c?.players, bh, x, C0, B0); es.players.push(e); console.log("XDD", e); console.log("spec", es.players); e.spawn(false ? dh : null); e.visible = false; e.x2 = undefined; e.y2 = undefined; e.setData(t, e, false, true) } else { console.log(es.players.length); for (let t = 0; t < es.players.length; t++) { let e = es.players[t]; if (e.sid == n.sid) { e = { ...n }; console.log("player updated", e.sid) } else if (c?.player.sid == n.sid) { c.player = { ...n } } } } } } if (c?.msg == "ping" && c?.server === location.href) { c.player.timing = c?.time; if (c.player.sid == z.sid) return; let e = zn.find(e => e.sid == c.player.sid); if (!e) { zn.push(c.player) } else { zn.forEach((e, t, n) => { if (e.sid == c.player.sid) { n[t] = c.player } }) } } if (c?.msg == "pz" && !p && z.sr == 1 && co.checked && c?.server === location.href) { let e = c; let t = Hg(e.enemy.sid); let n = Hg(e.team.sid); if (t == null || !t.visible) { t = e.enemy } n5() } } catch (i) {} } } t.readAsText(e.data) }; Ki.onopen = function() { Hn = true; console.log("connected"); Ki.send(le({ AMOWNER: true })) }; Ki.onclose = function(e) { Hn = false; console.log("disconnected", e); T5(); S5 = false }; Ki.onerror = function(e) {} } catch (e) { console.log("error", e) } } T5(); function C5(e, i, s, o, r) { if (!fn) { Oi = false; hn = false; return } if (!Y || p || !fn || Nt || !A || !en) { hn = false; return } if (se(z, Y) <= 700 && z.pr === 1 && z.sr === 1 && z.tr === 1) { Oi = true; hn = true; const a = 395; const l = B(Y, z); let e = { x: Y.x2 + U(l) * a, y: Y.y2 + V(l) * a }; let t = se(z, Y); let n = se(z, e); if (n <= 25) { I(40, 0) } else if (n <= 60) { I(22, 0) } else if (n <= 110) { I(22, 11) } else { b5() } if (o5(z, Y, 3, 2, B(z, Y)) >= 1 && z.movSpd <= 0 && Y.movSpd <= 0 && o5(z, Y, 1, 1.5, B(z, Y)) !== o5(z, Y, 3, 2, B(z, Y)) && se(z, Y) <= 412 && se(z, Y) >= 378) { let e = B(z, Y); y = A; T.send("G", A, true); c4(uy, e + Z(40)); c4(uy, e - Z(40)); Oi = true; I(53, 0); i = (o5(z, Y, 1, 1.5, B(z, Y)) - o5(z, Y, 3, 2, B(z, Y))) * 111; s = o5(z, Y, 1, 1.5, B(z, Y)) * 111; o = i + 80; r = i + z.delta; T.send("D", e, "client"); ct = true; setTimeout(() => { b5(); hn = false; p = true; g[0] = e; y = A; T.send("D", e, "client"); T.send("D", e, "client"); T.send("G", A, true); T.send("d", 1, e); T.send("d", 0, e); T.send("a", e, "client") }, i); setTimeout(() => { y = ee; I(7, 19); ct = true; g[0] = e; T.send("D", e); T.send("G", ee, true); T.send("G", ee, true); T.send("G", ee, true); T.send("d", 1, e); T.send("d", 0, e) }, o); setTimeout(() => { y = ee; I(7, 19); ct = true; g[0] = e; T.send("D", e, "client"); T.send("G", ee, true); T.send("G", ee, true); T.send("G", ee, true); T.send("d", 1, e); T.send("d", 0, e) }, r); setTimeout(() => { T.send("a", e, "client"); y = ee; I(7, 19); ct = true; g[0] = e; T.send("D", e, "client"); T.send("G", ee, true); T.send("G", ee, true); T.send("G", ee, true); T.send("d", 1, e); T.send("d", 0, e) }, s); setTimeout(() => { fn = false; p = false; hn = false; Oi = false; ct = false }, 450) } else if (!(se(z, Y) >= 378 && se(z, Y) <= 412)) { T.send("a", B(z, e), "client") } else { T.send("a", null, "client") } } } async function B5() { if (!Y || p || !fn || z.tr !== 1 || z.pr !== 1 || z.sr !== 1 || Nt || !A || A === 10 || A === 14 || !en) { hn = false; return } if (Y.bleed === undefined) { U1.showText(z.x2, z.y2, 25, .35, 1500, "poison the Nigga", "#fff"); fn = false; return } if (se(z, Y) <= 600) { Oi = true; hn = true; const i = ci; const s = B(Y, z); let e = { x: Y.x2 + U(s) * i, y: Y.y2 + V(s) * i }; let t = se(z, Y); let n = se(z, e); if (n <= 15) { if (z.buildIndex != 1) T.send("G", ry); I(40, 0); y = ry } else if (n <= 50) { I(22, 0); y = A; T.send("G", A, true) } else if (n <= 120) { I(6, 0); y = ee; T.send("G", ee, true) } else { Au(); y = ee; T.send("G", ee, true) } if (t >= ci && t <= di && z.movSpd <= 5 && Y.movSpd <= 5 && Y.bleed === 8) { let e = B(z, Y); I(53, 11); T.send("D", e, "client"); ct = true; hn = false; Oi = true; p = true; g[0] = e; y = A; T.send("G", A, true); if (x.list[hy].name == "platform") { c4(hy, e + Z(90)); c4(hy, e + Z(180)); c4(hy, e - Z(90)) } T.send("a", e, "client"); c4(uy, e); await A4(); e = B(z, Y); T.send("a", e, "client"); y = ee; I(7, 19); ct = true; g[0] = e; T.send("D", e, "client"); T.send("G", ee, true); await A4(); fn = false; p = false; hn = false; Oi = false; ct = false } else if (!(t >= ci && t <= di)) { T.send("a", B(z, e), "client") } else { T.send("a", null, "client") } } } async function D5(e, t) { if (z.sr !== 1 || !Y || !ii || ii.sr !== 1 || maxTime3() > 0 || Y.skinIndex == 6) return; if (z.sr === 1 && ii.sr === 1 && !p && Y && Y.skinIndex !== 6) { I(1, 0); p = true; g[0] = B(z, Y); ct = true; T.send("D", B(z, Y), "client"); T.send("G", A, true); y = A; await A4(); await A4(); p = false } } async function P5(e) { if (!e || fn && ee == 5) return; if (!Y) return; if (z.secondary != 13 && ((ee == 4 || ee == 5) && A == 10) && Y.skinIndex != 6 && Y && !p && (se(z.np.accel, Y.np.real, "player") <= x.weapons[A].range || se(z, Y, "player") <= x.weapons[A].range) && z.pr == 1 && z.sr == 1 && en && o4(z, Y)) { un = false; p = true; I(53, 21); g[0] = B(z, Y); ct = true; T.send("D", B(z, Y), "client"); T.send("G", A, true); y = A; await A4(); if (Y) { y = ee; T.send("G", ee, true); g[0] = B(z, Y); T.send("D", B(z, Y), "client"); I(7, 18) } else { p = false; return } await A4(); p = false } if (z.secondary != 13 && !((ee == 4 || ee == 5) && A == 10) && Y && !p && (se(z.np.accel, Y.np.real, "player") <= x.weapons[ee].range || se(z, Y, "player") <= x.weapons[ee].range) && z.pr == 1 && z.sr == 1 && en && o4(z, Y)) { un = false; console.log(se(z.np.accel, Y.np.real, "player")); p = true; I(7, 18); g[0] = B(z, Y); ct = true; T.send("D", B(z, Y), "client"); T.send("G", ee, true); y = ee; await A4(); if (Y) { y = A; T.send("G", A, true); g[0] = B(z, Y); T.send("D", B(z, Y), "client"); I(53, 21) } else { p = false; return } await A4(); p = false } if (z.secondary == 13 && Y && !p && (se(z.np.accel, Y.np.real, "player") <= x.weapons[ee].range || se(z, Y, "player") <= x.weapons[ee].range) && z.pr == 1 && z.sr == 1 && en && o4(z, Y)) { un = false; p = true; y = A; T.send("G", A, true); g[0] = B(z, Y); T.send("D", B(z, Y), "client"); I(53, 21); await A4(); if (Y) { I(7, 18); g[0] = B(z, Y); ct = true; T.send("D", B(z, Y), "client"); T.send("G", ee, true); y = ee } else { p = false; return } await A4(); p = false } } let R5 = false; x.a = x.list.concat(x.weapons); S0.style.display = "none"; var M5 = []; var N5 = { x: null, y: null }; function O5(t, e, n, i = W / 50) { const s = i; const o = { onPlayer: [], possible: [], placeRange: null }; const r = x.list[e]; const a = 35 + r.scale + (r.placeOffset || 0); for (let e = n; e <= n + ae; e += s) { const l = e; const c = a; const d = U(l); const u = V(l); const f = t.x2 + c * d; const h = t.y2 + c * u; const p = { x: f, y: h, scale: r.scale, angle: l, placeRange: c, overlap: [], preplacer: [], sids: [] }; const m = C.checkItemLocation3(f, h, r.scale, .6, r.id, false, true, p); if (se({ x: f, y: h }, z) <= r.scale + 35) { if (m) { o.onPlayer.unshift(p) } } if (m) { o.possible.unshift(p) } } return o } function L5(l, e, t, n = W / 75) { if (!l) return []; const i = n; const c = []; let d = t ? z.np.real.x : z.x2; let u = t ? z.np.real.y : z.y2; for (let a = e; a <= e + ae; a += i) { const f = a; let e = Tn.findIndex(e => Ay(f, e.angle) <= .45); let t = x.list[l]; let n = 35 + t.scale + (t.placeOffset || 0); let i = d + n * U(f); let s = u + n * V(f); let o = { x: i, y: s, id: t.id, scale: t.scale, angle: f, offset: n, item: t, collide: [], points: 0, origin: [], name: t.name, overlap: [], preplacer: [], sids: [], intercepts: [], knockback: [], used: e }; let r = He <= 90 ? C.checkItemLocation3(i, s, t.scale, .6, t.id, false, true, o) : C.checkItemLocation(i, s, t.scale, .6, t.id, false, true); if (e !== -1) { if (!r) Tn.splice(e, 1) } if (r) c.push(o) } return c } function F5(l, e, t, n = W / 75) { if (!l) return []; const i = n; const c = []; let d = t ? z.np.real.x : z.x2; let u = t ? z.np.real.y : z.y2; for (let a = e; a <= e + ae; a += i) { const f = a; let e = Tn.findIndex(e => Ay(f, e.angle) <= .45); let t = x.list[l]; let n = 35 + t.scale + (t.placeOffset || 0); let i = d + n * U(f); let s = u + n * V(f); let o = { x: i, y: s, id: t.id, scale: t.scale, angle: f, offset: n, item: t, collide: [], points: 0, origin: [], name: t.name, overlap: [], preplacer: [], sids: [], intercepts: [], knockback: [], used: e }; let r = C.checkItemLocation3(i, s, t.scale, .6, t.id, false, true, o); if (r) c.push(o) } return c } function _5(l, e, t, n = W / 75) { if (l == undefined || l == null || !l) return []; const i = n; const c = []; let d = t ? z.np.real.x : z.x2; let u = t ? z.np.real.y : z.y2; for (let a = e; a <= e + ae; a += i) { const f = a; let e = Tn.findIndex(e => Ay(f, e.angle) <= .45); let t = x.list[l]; let n = 35 + t.scale + (t.placeOffset || 0); let i = d + n * U(f); let s = u + n * V(f); let o = { x: i, y: s, id: t.id, scale: t.scale, angle: f, offset: n, item: t, collide: [], points: 0, origin: [], name: t.name, overlap: [], preplacer: [], sids: [], intercepts: [], knockback: [], used: e }; let r = He <= 90 ? C.checkItemLocation3(i, s, t.scale, .6, t.id, false, true, o) : C.checkItemLocation(i, s, t.scale, .6, t.id, false, true); if (e !== -1) { if (!r) Tn.splice(e, 1) } if (r) c.push(o) } return c } var V5 = []; function U5(s, o, r) { let a = { building: null, closest: Infinity, bounce: false, dmg: 0, spikeCount: 0, trapCount: 0, total: 0, newPos: { ...r } }; o = o.filter(e => !te(e.owner?.sid) || e.y >= 12e3 && e.type === 1); for (let e = 0; e < s.length; e++) { let i = Math.atan2(r.y2 - s[e].y, r.x2 - s[e].x); for (let n = 0; n < o.length; n++) { let e = Ne(r.np.real.x - o[n].x, r.np.real.y - o[n].y); let t = P3(r.np.real.x, r.np.real.y, i, j(e, 170)); a.newPos.affected = r.sid; a.newPos.NEWX = t.x; a.newPos.NEWY = t.y; a.originDir = i; a.newPos.dstSpd = e; a.newPos["static"] = true; a.newPos.expire = 3; if (Ne(t.x - o[n].x, t.y - o[n].y) <= (o[n].name == "pit trap" ? 45.5 : o[n].realScale + 35) && e < a.closest) { a.closest = e; a.building = o[n]; if (e <= 150 && e >= 50 && (o[n].group?.name == "spikes" || o[n].type === 1) && Ay(i, P(o[n].y - s.y, o[n].x - s.x)) <= .17) { a.bounce = true } else { a.bounce = false } return a } } } return a } function j5(i, s, o) { let r = { building: null, closest: Infinity, bounce: false, dmg: 0, spikeCount: 0, trapCount: 0, total: 0, newPos: { ...o } }; let a = B(i, o); s = s.filter(e => te(e.owner?.sid) || !o.team && e?.owner?.sid != o.sid || e.y >= 12e3 && e.type === 1); for (let n = 0; n < s.length; n++) { let e = Ne(o.np.real.x - s[n].x, o.np.real.y - s[n].y); let t = P3(o.np.real.x, o.np.real.y, a, j(e, 170)); r.newPos.affected = o.sid; r.newPos.NEWX = t.x; r.newPos.NEWY = t.y; r.originDir = a; r.newPos.dstSpd = e; r.newPos["static"] = true; r.newPos.expire = 3; if (Ne(t.x - s[n].x, t.y - s[n].y) <= (s[n].name == "pit trap" ? 47.5 : s[n].realScale + 35) && e < r.closest) { r.closest = e; r.building = s[n]; if (e <= 150 && e >= 50 && (s[n].group?.name == "spikes" || s[n].type === 1) && Ay(a, B(i, s[n])) <= .17) { r.bounce = true } else { r.bounce = false } } } return r } function H5(e, t) { let o = []; let r = e[1].x - e[0].x; let a = e[1].y - e[0].y; let l = D(r * r + a * a); let c = e[0].x * e[1].y - e[1].x * e[0].y; let d = t.scale * t.scale * l * l - c * c; if (d >= 0) { let e = a < 0 ? -1 : 1; let t = (c * a + e * r * D(d)) / (l * l); let n = (c * a - e * r * D(d)) / (l * l); let i = (-c * r + S(a) * D(d)) / (l * l); let s = (-c * r - S(a) * D(d)) / (l * l); o.push({ x: t, y: i }, { x: n, y: s }) } return o } function W5(n, e) { let t = H5(n, e); let i = []; t.forEach(e => { let t = (e.x - n[0].x) / (n[1].x - n[0].x); if (t >= 0 && t <= 1) { i.push({ x: e.x, y: e.y }) } }); return i } function Q5(e) { let u = []; e.forEach(e => { let { x: a, y: l, scale: c } = e; let t = ae * c; let d = Math.floor(t / (2 * c)); for (let r = 0; r < d; r++) { let e = r / d * ae; let t = (r + 1) / d * ae; let n = a + c * U(e); let i = l + c * V(e); let s = a + c * U(t); let o = l + c * V(t); u.push([{ x: n, y: i }, { x: s, y: o }]) } }); return u } function Y5(n, e) { let t = Q5(e); return t.every(e => { let t = W5(e, n); return t.length === 0 }) } let z5 = 350, G5 = 50, K5 = 50; function X5(e, t) { return D(e * e + t * t) } function J5(r, a, e, t) { let l, c; let d = Q.filter(e => (e.name == "pit trap" || e.group?.name == "spikes" || e.type === 1 && e.y >= 12e3) && e.distance <= 450); let u = {}; let f = x.list[ly].scale - 50; for (let o = 0; o < e.length; o++) { let s = e[o]; for (let i = 0; i < a.length; i++) { let n = true; for (let t = 0; t < s.placePot.possible.length; t++) { let e = s.placePot.possible[t]; u[a[i].angle + s.name + s.sid + e.angle] = S4(a[i], e); if (u[a[i].angle + s.name + s.sid + e.angle] <= a[i].scale + e.scale) { a[i].placePriority = true; n = false; break } } if (a[i].preplacer.includes(true) && a[i].placePriority) { a[i].preplace = true; a[i].points += 1 } if (!a[i].preplace && a[i].used !== -1) { a.splice(i, 1); continue } let e = S4(a[i], s); if (e <= 235 && !s.inTrap || m.c) a[i].points += 1; if (e <= 20.4) { a[o].points += 1 } if (e <= 47) { a[i].retrap = true; a[i].collide.push(s.sid); a[i].points += 1; if (a[i].preplace && s.inTrap) { let e = d.filter(e => (e?.group?.name === "spikes" && (te(e.owner.sid) || !s.team && e?.owner?.sid != s.sid) || e.y >= 12e3 && e.type === 1) && Ne(e.x - a[i].x, e.y - a[i].y) <= 50 + (e.type == 1 ? e.scale * .55 : e.scale) + 24 && !a[i].sids.includes(e.sid)); if (e.length) { a[i].points += e.length + 1 } else { let e = P(s.inTrap.y - s.y2, s.inTrap.x - s.x2); let t = X.getAngleDist(B(s, e), s.d2) <= h && X.getAngleDist(B(z, s), B(s, e)) <= h; if (!t) { a[i].points += 2 } else { a[i].points += 1 } } } } let t = d.filter(e => (e?.group?.name === "spikes" && (te(e.owner.sid) || !s.team && e?.owner?.sid != s.sid) || e.y >= 12e3 && e.type === 1) && Ne(e.x - a[i].x, e.y - a[i].y) <= 50 + (e.type == 1 ? e.scale * .55 : e.scale) + 24 && !a[i].sids.includes(e.sid)); if (t.length) { a[i].points += 1 + t.length; a[i].canPush = true } if (e <= s.placePot.placeRange) { if (n) { a[i].points += 1 } else { a[i].points += .5 } } if (!c || c.points <= a[i].points) c = a[i] } for (let i = 0; i < r.length; i++) { r[i].bounce = false; if (kx(r[i])) continue; let e = S4(r[i], s); let n = true; for (let t = 0; t < s.placePot.possible.length; t++) { let e = s.placePot.possible[t]; if (u[r[i].angle + s.name + s.sid + e.angle] + f <= r[i].scale + e.scale) { r[i].placePriority = true; n = false; break } } if (r[i].preplacer.includes(true) && r[i].placePriority) { r[i].preplace = true; r[i].points += 1 } if (!r[i].preplace && r[i].used !== -1) { r.splice(i, 1); continue } let t = s.inTrap ? S4(r[i], s.inTrap) : Infinity; if (e <= 35 + r[i].scale) { r[i].collide.push(s.sid); if (!s.inTrap || r[i].preplace) { let e = j5(r[i], d, s); if (e.building) { r[i].into = e; if (e.building.name == "pit trap" && !(r[i].preplace && s.inTrap && r[i].sids.includes(s.inTrap.sid))) { r[i].points += 2.5 } else if (e.bounce) { r[i].bounce = true; r[i].points += 5 } else if (e.building.name !== "pit trap") { r[i].points += 3 } else { r[i].into = false } } } if (s.inTrap && !r[i].sids.includes(s.inTrap.sid)) { r[i].points += 2; r[i].spikeTrap = true; r[i].canPush = true } } if (s.inTrap && !r[i].sids.includes(s.inTrap.sid) && t <= 50 + r[i].scale + 21) { r[i].canPush = true; r[i].points += 1 } if (s.inTrap && e <= 250 && (Ay(r[i].angle, s.inTrap.angToMe) >= 1.5 || Dn === null || Dn === undefined)) { r[i].points += 2 } if (n && e <= s.placePot.placeRange) { r[i].points += 1 } if (!l || l.points <= r[i].points) l = r[i] } u = {} } return { spikes: r, traps: a, bestSpike: l, bestTrap: c } } function q5(e) { e = e.filter(e => e.points >= 1).sort((e, t) => t.points - e.points); const s = []; function o(e) { return e.reduce((e, { points: t }) => e + t, 0) } function r(e, n, i) { if (e.length > 0 && e.length <= 4) { const t = { points: o(e), buildings: [...e] }; s.push(t); if (s.length >= 3e3) return s } for (let t = i; t < n.length; t++) { if (!e.some(e => S4(e, n[t]) <= e.scale + n[t].scale)) { e.push(n[t]); r(e, n.slice(t + 1), t + 1); e.pop() } } } r([], e, 0); return s } function $5(e, t, n, i, s) { // Generate angles at 20-degree intervals (full circle: 0° to 340°) const additionalAngles = []; for (let a = 0; a < 360; a += 20) { additionalAngles.push((e.angle + a) % 360); // Keep angles within 0-359° } if (e.preplace && e.placePriority && n < 2 && He <= 60) { c4(e.item.id, e.angle); // Execute immediately (no delay) os.push(e); // Instantly place at all angles additionalAngles.forEach(angle => { C.add(v, e.x, e.y, angle, e.scale, null, x.list[e.item.id], !0, { sid: z.sid }, 0, 0, 1, 1, 1, 0); }); return true; } else if (e.placePriority && n < 3 && He <= 60) { Z5(e.item.id, e.angle); os.push(e); // Instantly place at all angles additionalAngles.forEach(angle => { C.add(v, e.x, e.y, angle, e.scale, null, x.list[e.item.id], !0, { sid: z.sid }, 0, 0, 1, 1, 0, 0); }); return true; } // Check if the item can be placed at the specified location s = C.checkItemLocation(e.x, e.y, e.scale, .6, e.item.id, false, t); if (s) { Z5(e.item.id, e.angle); // Instantly place at all angles additionalAngles.forEach(angle => { C.add(v, e.x, e.y, angle, e.scale, null, x.list[e.item.id], !0, { sid: z.sid }, 0, 0, 1, 1, 0, 1); }); return true; } return false; } function Z5(e, t) { T.send("G", e, null); T.send("d", 1, t); T.send("G", y ? y : z.weaponIndex, true) } function e4(e, t) { if (!cs.checked || !Y || !en || x.list[z.items[4]]?.name != "pit trap" || !z.items[4] || gt) return; let s = Date.now(); let o = 0; let n = L5(ly, 0, 0, W / ls.value); let i = L5(uy, 0, 0, W / ls.value); let r = J5(n, i, ss, s); Tn = Tn.filter(e => v - e.tick <= 6 && se(z, e) <= e.offset + 20); e = r.bestTrap; t = r.bestSpike; r.spikes.sort((e, t) => t.points - e.points); r.traps.sort((e, t) => t.points - e.points); if (!r.spikes.length && !r.traps.length) return; function a(n, i = r.spikes.concat(r.traps)) { i.filter(e => e.points > 0); if (He >= 85) return; if (!t && !e && !m.c) return; i = i.sort((e, t) => { if (t.points === e.points && e.name !== t.name) { return e.name === "pit trap" ? -1 : 1 } return t.points - e.points }); for (let t = 0; t < i.length; t++) { if (!n.some(e => S4(e, i[t]) <= e.scale + i[t].scale)) { n.push(i[t]) } if (n.length === 4) break } for (let e = 0; e < n.length; e++) { if (!n[e].did) { if (n[e].preplace && n[e].placePriority && He <= 60) o++; $5(n[e], He <= 60 ? n[e].placePriority : 0, o, s); Tn.push({ ...n[e], tick: v }) } } } let l = []; if (t && t.points > 0 && (!e?.canPush || (!e?.retrap || !t.into))) { if (t.into) { m3(t.into.newPos) } if (t.placePriority) { if (t.preplace) { o++; setTimeout(() => { c4(ly, t.angle); Tn.push({ ...t, tick: v }); os.push(t) }, Mi - xt) } else { Z5(ly, t.angle); Tn.push({ ...t, tick: v }); os.push(t) } t.did = true; l.push(t); C.add(v, t.x, t.y, t.angle, t.scale, null, x.list[ly], !0, { sid: z.sid }, false, true, true, t.preplace) } else { $5(t, 0); Tn.push({ ...t, tick: v }); t.did = true; l.push(t) } } if (e && e.points > 0 && !(t && t.points > 0 && se(e, t) <= e.scale + t.scale && !kx(t)) || (e?.canPush || e?.retrap && !t.into)) { if (e.placePriority) { if (e.preplace) { o++; setTimeout(() => { c4(uy, e.angle); Tn.push({ ...e, tick: v }); os.push(e) }, Mi - xt) } else { Z5(uy, e.angle); Tn.push({ ...e, tick: v }); os.push(e) } e.did = true; l.push(e); C.add(v, e.x, e.y, e.angle, e.scale, null, x.list[uy], !0, { sid: z.sid }, false, true, true, e.preplace) } else { $5(e, 0); Tn.push({ ...e, tick: v }); e.did = true; l.push(e) } } a(l); if (kt.length >= 6) kt.pop(); kt.unshift(Date.now() - tn) } let t4 = []; const n4 = 5e3; function i4(t) { const e = t4.find(e => e.message === t); if (e) { e.count++ } else { t4.push({ message: t, count: 1 }) } t4.forEach(e => { b(`${e.message} (${e.count})`, "", "#5c0620", false, true) }); setTimeout(() => { t4 = t4.filter(e => e.count > 1) }, n4) } async function s4(e, t) { if (p || !en) return; e = bh.filter(e => e.health < x.weapons[ee].dmg * (Nn.includes(7) ? 1.5 : 1) * En[z.primaryVar] && e.visible); e = e.sort((e, t) => t.killScore - e.killScore)[0]; if (e && se(z, e) - 1.8 * e.scale <= x.weapons[ee].range && z.pr == 1) { console.log(e); p = true; T.send("K", 1); g[0] = B(z, e); T.send("G", ee, true); I(7, 18); T.send("D", B(z, e), "client"); await A4(); p = false } } function o4(e, t, n) { if (t.weaponIndex != 11) return true; n = B(e, t); return X.getAngleDist(n + W, t.dir) > W / 3 } async function r4() { Y3 = []; if (!(Cy >= 670 && Cy <= 700)) { T.send("a", B(z, nt), "client") } else { T.send("a", null, "client") } if (z.age < 9) U1.showText(z.x2, z.y2, 20, .18, 300, "age up first", "#fff"); if (Cy >= 670 && Cy <= 700 && z.movSpd <= 5 && Y.movSpd <= 5 && hy != undefined && z.age >= 9) { console.log(Cy, "bow insta distance"); if (x.list[hy].name == "platform") c4(hy, B(z, Y)); await A4(); I(53, 0); y = A; p = true; At = false; T.send("G", A, true); g[0] = B(z, Y); T.send("D", B(z, Y), "client"); console.log(Cy); await A4(); I(38, 0); y = A; g[0] = B(z, Y); T.send("H", 12); await A4(); y = A; g[0] = B(z, Y); T.send("H", 15); await A4(); y = null; p = false; At = false; ct = false } } function a4(e, t, n, i, s = [], o, r, a) { r = { ...e }; if (e.sid == z.sid && n !== 0 && !n) { n = Dn } else if (Nt && e.sid == z.sid) { n = undefined } else if (!n && n !== 0) { n = e.movDir } a = l4(r, n); r.xVel = a.xVel; r.yVel = a.yVel; r.x2 = a.real.x; r.y2 = a.real.y; s.push(a); if (t - 1 <= 0) { return s } else { return a4(r, t - 1, n, r, s) } } function l4(e, t, n, i, s = 111) { if (!i) { if (e.sid == z.sid && t !== 0 && !t) { t = Dn } else if (Nt && e.sid == z.sid) { t = undefined } else if (!t && t !== 0) { t = e.movDir } } let o = U(t); let r = V(t); let a = D(o * o + r * r); a != 0 && (o /= a, r /= a); if (!n) n = e; let l = x4(n); e.speedXD = 0; e.speedYD = 0; e.predY = 0; e.predX = 0; o && (e.speedXD += o * .0016 * l * s); r && (e.speedYD += r * .0016 * l * s); var c = X.getDistance(0, 0, e.speedXD * s, e.speedYD * s), d = j(4, oe(1, H(c / 40))), u = 1 / d; e.speedXD && (e.predX += e.speedXD * s); e.speedYD && (e.predY += e.speedYD * s); let f = e.xVel * re(.993, s), h = e.yVel * re(.993, s), p = f + e.predX, m = h + e.predY, g = { x: e.x2 + p, y: e.y2 + m, type: "accel" }, y = { x: e.x2 + f, y: e.y2 + h, type: "decel" }, x = T(p, m, { x: e.x2 + p, y: e.y2 + m }), w = { x: e.x2, y: e.y2, type: "current" }, b = { x: p, y: m, type: "nextVel" }, v = g, k = H(D(p * p + m * m)), A = l, I, S; I = s * 1.5 * U(t); S = s * 1.5 * V(t); let E = { x: e.x2 + I, y: e.y2 + S }; if (Xe[e.sid]?.np != undefined && e.sid != z.sid) v = se(e, Xe[e.sid]?.np?.accel) > se(e, Xe[e.sid]?.np?.decel) && Ay(e.movDir, e.pmovDir) <= .3 ? y : g; if (e.sid == z.sid) { if (Dn == undefined || Dn == null) { v = y } else { v = g } } function T(e, t, n, i, s) { if (isNaN(e) || isNaN(t)) return; try { i = e * r3; s = t * r3; if (e != i) { e = i; n.x += e } if (t != s) { t = s; n.y += t } if (e == i && t == s) { return { x: n.x, y: n.y, type: "full decel" } } else { return T(e, t, n) } } catch (e) {} } let C = { accel: g, decel: y, boostCoords: E, boostVel: { x: I, y: S }, nextVel: b, real: v, current: w, fullDecel: x, xVel: p, spd: l, yVel: m, vel: k }; return C } function c4(e, t, n) { if (e == null || e == undefined || e == ry && z.food < x.list[ry].req[1] && !_n || !z.canBuild(x.list[e]) && e != ry || !en || e == ry && z.skinIndex == 45) return; !n && y ? n = y : n = z.weaponIndex; T.send("G", e, null); T.send("d", 1, t); T.send("G", n, n == n || n == A ? true : null) } function d4(e, t, n) { if (e == null || e == undefined || e == ry && z.food < x.list[ry].req[1] && !_n || !z.canBuild(x.list[e]) && e != ry || !en || e == ry && z.skinIndex == 45) return; !n && y ? n = y : n = z.weaponIndex; T.send("G", e); T.send("d", 1); T.send("G", n, n == n || n == A ? true : null) } function u4(e = z.health, t = [20, 40, 30]) { for (var n = e; n < 100; n += t[z.items[0]]) d4(z.items[0], true) } function f4(e, t) { let n = x.list[e]; let i = 35 + n.scale + (n.placeOffset || 0); let s = z.x2 + U(t) * i; let o = z.y2 + V(t) * i; console.log("PLS"); C.add(v, s, o, X.fixTo(P(o - z.y2, s - z.x2) || 0, 2), n.scale, null, x.list[n.id], !0, { sid: z.sid }, false, false, true, true) } function h4(e, t) { if (e == null || e == undefined || e == ry && z.food < x.list[ry].req[1] && !_n || !z.canBuild(x.list[e]) && e != ry || !en || e == ry && z.skinIndex == 45) return; !t && y ? t = y : t = z.weaponIndex; T.send("G", e); T.send("d", 1); T.send("G", t, t == t || t == A ? true : null) } function p4(e = 100 - z?.dmgpot?.hp, t = [20, 40, 30]) { for (var n = e; n < 100; n += t[z.items[0]]) h4(z.items[0], true) } function m4(e) { const t = ["th", "st", "nd", "rd"]; const n = e % 10; const i = t[e % 100 > 10 && e % 100 < 20 ? 0 : n < 1 || n > 3 ? 0 : n]; return e + i } function g4(e) { let t = 0; let n = e.loadout; if (n?.spawnpad || x.weapons[e?.secondary]?.age == 9 || n?.spike?.age == 9) return 9; n.utility && (t = 7); t < x.weapons[e?.secondary]?.age && (t = x.weapons[e?.secondary]?.age); t < x.weapons[e?.primary]?.age && (t = x.weapons[e?.primary]?.age); t < n?.spike?.age && (t = n.spike.age); t < n?.food?.age && (t = n.food.age); t < n?.windmill?.age && (t = n.windmill.age); t < n?.wall?.age && (t = n.wall.age); e?.weaponIndex == 0 && (t = 1); if (e?.primary == 0 && t > 1) e.primary = undefined; return t } const y4 = ce / 2; function x4(t) { var e = ((t.buildIndex < 0) + 1) / 2 * (x.weapons[t.weaponIndex]?.spdMult || 1) * (t.skinIndex && C0.find(e => e.id == t.skinIndex)?.spdMult || 1) * (t.tailIndex && B0.find(e => e.id == t.tailIndex)?.spdMult || 1) * (t.y2 <= K.snowBiomeTop ? t.skinIndex && C0.find(e => e.id == t.skinIndex)?.coldM ? 1 : .75 : 1) * 1; !t.zIndex && t.y2 >= K.mapScale / 2 - K.riverWidth / 2 && t.y2 <= K.mapScale / 2 + K.riverWidth / 2 && (t.skinIndex && C0.find(e => e.id == t.skinIndex).watrImm ? e *= .75 : e *= .33); return e } function w4(t, e) { t = { buildIndex: t?.buildIndex ?? e?.buildIndex ?? -1, weaponIndex: t?.weaponIndex ?? e?.weaponIndex ?? null, skinIndex: t?.skinIndex ?? e?.skinIndex ?? null, tailIndex: t?.tailIndex ?? e?.tailIndex ?? null, y2: t?.y2 ?? e?.y2 ?? 0, zIndex: t?.zIndex ?? e?.zIndex ?? false }; let n = ((t.buildIndex < 0) + 1) / 2 * (x.weapons[t.weaponIndex]?.spdMult || 1) * (t.skinIndex && C0.find(e => e.id == t.skinIndex)?.spdMult || 1) * (t.tailIndex && B0.find(e => e.id == t.tailIndex)?.spdMult || 1) * (t.y2 <= K.snowBiomeTop ? t.skinIndex && C0.find(e => e.id == t.skinIndex)?.coldM ? 1 : .75 : 1) * 1; if (!t.zIndex && t.y2 >= K.mapScale / 2 - K.riverWidth / 2 && t.y2 <= K.mapScale / 2 + K.riverWidth / 2) { const i = t.skinIndex && C0.find(e => e.id == t.skinIndex)?.watrImm ? .75 : .33; n *= i } return y4 * n } function b4(e, t) { let n = 0; let i = x.list[t]; if (i.group.name == "mill") { e.windmill = i } if (i.group.name == "spikes") { e.spike = i } if (i.name == "boost pad") { e.trap = false } if (i.age == 7) { e.utility = i } if (i.group.name == "walls") { e.wall = i } if (i.group.name == "food") { e.food = i } if (i.name == "spawn pad") { e.spawnpad = true } } function v4(t, n) { let e = kh.find(e => e.name == "turret" && e.x == t && e.y == n); if (e) { e.time = 2200; e.NOW = false; e.shot = Date.now(); return e } return false } function k4() { for (let t = 0; t < kh.length; t++) { let e = kh[t]; if (e.name == "turret" && e?.time) e.time -= z.delta; if (e.name == "turret" && e?.time <= 0) e.time = 2200 } } function A4() { return new Promise(e => { Ve[Ve.length] = e }) } function I4() { if (document.activeElement.id === "") return true; return false } function S4(e, t) { return X.getDistance(e.x2 || e.x, e.y2 || e.y, t.x2 || t.x, t.y2 || t.y) } function se(e, t, n) { const i = n === "player" ? -1.8 * 35 : n === "object" ? -t?.scale : 0; return X.getDistance(e.x2 || e.x, e.y2 || e.y, t.x2 || t.x, t.y2 || t.y) + i } // Define player and autoBuy let player = {}; let autoBuy = { hat: function () { console.log("Hat auto-purchased."); }, acc: function () { console.log("Accessory auto-purchased."); } };