gonzalezwerner

Untitled

Aug 20th, 2017
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /** @type {Array} */
  2. var _0x5d82 = [":", "length", "splice", "setserver", "mode", "attr", "option:selected", "find", "#gamemode", "setSmooth", "setHideChat", "hide", "#input_box2", "show", "setBubble", "setMap", "setDest", "block", "push", "unblock", "showPlayerMenu", "#player", "text", "#playerName", "indexOf", "Unblock", "#btnBlock", "Block", "blur", "click", "", "/mute ", " ", "val", "#txtMute", "#btnMute", "#playerAdmin", "setMouse", "createTouch", "src", "./images/bubble.png?v=1", "images/party.png?v=3.17", "images/kinghfw.png?v=3.17",
  3. "images/queenhfw.png?v=3.17", "images/devilhfw.png?v=3.17", "images/piratehfw.png?v=3.17", "./images/split.png?v=15", "./images/eject.png?v=15", "PI", "cos", "sin", "yoba", "simp donuts", "spinner red", "spinner green", "spinner rainbow", "small donuts", "blue planet", "yellow planet", "planet of hearts", "paper flower", "orange agrio", "apple agrio", "apple pen", "Mouse", "Massfence", "SPLIT", "SPECTATE_SWITCH", "FEED", "QUIT", "BOT_FEED", "BOT_SPLIT", "FREEZE", "BOT_MOD", "SPLIT_X2", "SPLIT_X3",
  4. "SPLIT_X4", "CHAT", "HD", "Full", "Medium", "Low", "hi", "canvasScale", "selected", "presets", "auto", "fps", "minFps", "lowerFpsCounter", "keys", "refresh", "maxFps", "higherFpsCounter", "innerWidth", "innerHeight", "width", "canvas", "getElementById", "floor", "height", "scale", "2d", "getContext", "scrollTo", "random", "beginPath", "moveTo", "lineTo", "closePath", "lineWidth", "strokeStyle", "stroke", "fillStyle", "fill", "enabled", "setUint8", "activemode", "ontouchstart", "userAgent", "test",
  5. "onfocus", "onblur", "display", "css", "#Happy", "none", "#popupsOverlay", "https:", "protocol", "location", "focus", "chat", "onmousemove", "clientX", "clientY", "touchstart", "addEventListener", "touchmove", "touchend", "onmouseup", "DOMMouseScroll", "onmousewheel", "input_box2", "self", "top", "happyfor.win", "toLowerCase", "referrer", "href", "http://happyfor.win", "onkeydown", "keyCode", "down", "onkeyup", "cshcmd", "CH", "up", "lang", "en", "value", " :", "isSpectating", "chv2_active", "addClass",
  6. "#chitherUIV2 .feedCmd", "removeClass", "#chitherUIV2 .splitCmd", "botmodes", "html", "#chitherUIV2 .botmod", "splitx2", "splitx3", "splitx4", "onresize", "requestAnimationFrame", "nick", "#playBtn", "changedTouches", "identifier", "reset", "copyFrom", "touches", "preventDefault", "minusEq", "x", "y", "wheelDelta", "detail", "pow", "fadeOut", "#adsBottom", "fadeIn", ".chat", "slice", ".skinList li", "#loginform", "#connectingFail", "#connecting", "wss://", "onopen", "onmessage", "onclose", "close",
  7. "ws://", "countdown", "binaryType", "arraybuffer", "onerror", "socket error", "log", "buffer", "send", "setUint32", "background", "background-color", "rgba(0, 0, 0, 0.5)", "Happy.ovh report: socket open", "disabled", "prop", "readyState", "Happy.ovh report: socket close: ", "code", "reason", "No slots", "Server Full! :(", "Waiting ", " seconds!", "#waitingHappy", "#showHappyRefresh", "data", "fromCharCode", "getUint16", "getUint8", "getFloat32", "cameraX", "minx", "cameraY", "miny", "getUint32",
  8. "getFloat64", "mapWidth", "mapHeight", "0", "#", "now", "time", "color", "white", "#chatlog", "rgba(255, 255, 255, 0.2) none repeat scroll 0 0", "rgba(0, 0, 0, 0.2) none repeat scroll 0 0", "name", ")", "substr", "wrong password", '<span class="verified"></span>', "chatenter", ' style="display:none;" ', "true", "false", "message", "***playerenter***", "br", " enters the game. ", "es", "<div ", " class='chatenter'>", "<small><strong title='", "' style='color:", "'>", ": </strong>", "</small></div>",
  9. "brschat", "engchat", "eschat", "style='color:white;background-color:green;padding:0px 5px;'", "style='color:white;background-color:#FACC2E;padding:0px 5px;'", "style='color:white;background-color:red;padding:0px 5px;'", "style='display:none;'", " class='", "' ", ">", "<strong onclick='doo(", ");' title='", "</div>", "append", "#chatlog div", "remove", "eq", "chatlog", "scrollHeight", "scrollTop", "scrollchat", "destroy", "ox", "oy", "oSize", "size", "nx", "ny", "nSize", "updateTime", "id", "getInt32",
  10. "getInt16", "getUInt32", "hasOwnProperty", "updatePos", "ka", "la", "isVirus", "isAgitated", "updateCode", "flag", "skin", "setName", "style", "Happy", "POST", "sxl.php", "eD0=", "received this response: ", "the value of myVar was: ", "ajax", "abs", "setFloat64", "charCodeAt", "setUint16", "OPEN", "max", "min", "countFPS", "getMilliseconds", "green", "font", "900 15px Montserrat", "orange", "red", "clearRect", "globalAlpha", "#111111", "fillRect", "#F2FBFF", "sort", "save", "translate", "drawOneCell",
  11. "restore", "drawImage", " : ", "#848484", "700 25px Montserrat", "Time Left:", "measureText", "fillText", "#FFFFFF", "Score: ", "setValue", "render", "#000000", "Mass: ", "rgba(0,0,0, ", "rgba(0,0,0,.25)", "rect", "rgba(0,0,0,.45)", "rgba(255, 255, 255, .9)", "FPS: ", "X: ", ", ", "Y: ", " 0", "h ", "m ", "s", "Restart: ", "900 18px Montserrat", "textAlign", "center", "#ccff00", "rgba(255,255,255,.2)", "bold ", "px Montserrat", "strokestyle", "black", "arc", "round", "split", "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
  12. "textBaseline", "middle", "#424242", "#D8D8D8", "#2E2E2E", "strokeRect", "ceil", "#151515", "#300000", "#800000", "clip", "setTransform", "#fcfcfc", "createElement", "『传奇』", "shadowBlur", "600 15px Montserrat", "An unnamed cell", "#FFAAAA", ". ", "points", "pointsAcc", "_size", "_color", "_stroke", "_strokeColor", "#333333", "#FF3333", "#33FF33", "#3333FF", "setLoaded", "setSkin", "None", "#selectedSkin", "padding-left", "px", "#nick", "_skin", "fast", "#selector", ".skinList > li", "setNick",
  13. "_nom", "<", "setSkins", "setNames", "setDarkTheme", "setColors", "setShowMass", "setWhiteTheme", "setNoWorldBorder", "spectate", "setGameMode", "setAcid", "#chat-rows", "prototype", "_canvas'blob", "destroyed", "nameCache", "getNameSize", "setSize", "shouldRender", "_", "_cachedFood", "_cloop", "undefined", "sp", "_ratio", "%", "substring", "_overlay", "mau5head", "#CB0000", "ellipse", "drawTime", "isFood", "shadowColor", "shadowOffsetX", "shadowOffsetY", "lineCap", "[", "]", "#268BE3", "noskin",
  14. ":teams", "http://happyfor.win/skins/", ".png?v=", "complete", "transp", "chrot", "atan2", "rotate", "sticker", "kazaf", "hat king", "hat queen", "hat devil", "hat pirate", "setScale", "sizeCache", "_dirty", "_scale", "_value", "_canvas", "_ctx", "700 ", "strokeText", "getTime", "w", "h", "depth", "items", "nodes", "maxChildren", "maxDepth", "exists", "findOverlappingNodes", "retrieve", "insert", "findInsertNode", "devide", "clear", "minX", "minY", "maxX", "maxY", "root", "onload"];
  15. (function(i, done) {
  16.   /**
  17.    * @param {Array} value
  18.    * @param {?} deepDataAndEvents
  19.    * @return {undefined}
  20.    */
  21.   function isUndefinedOrNull(value, deepDataAndEvents) {
  22.     var section = value[_0x5d82[1]];
  23.     for (;section--;) {
  24.       if (value[section] === deepDataAndEvents) {
  25.         value[_0x5d82[2]](section, 1);
  26.       }
  27.     }
  28.   }
  29.   /**
  30.    * @param {Array} array
  31.    * @param {number} event
  32.    * @param {number} i
  33.    * @param {number} b
  34.    * @param {?} formatString
  35.    * @param {number} mask
  36.    * @param {?} value
  37.    * @return {undefined}
  38.    */
  39.   function format(array, event, i, b, formatString, mask, value) {
  40.     /** @type {number} */
  41.     var x = Math[_0x5d82[105]]() * Math[_0x5d82[48]];
  42.     /** @type {number} */
  43.     var originalEvent = event;
  44.     /** @type {number} */
  45.     var j = i;
  46.     /** @type {number} */
  47.     var chunk = Math[_0x5d82[48]] / b;
  48.     array[_0x5d82[106]]();
  49.     array[_0x5d82[107]](event + Math[_0x5d82[49]](x) * formatString, i + Math[_0x5d82[50]](x) * formatString);
  50.     /** @type {number} */
  51.     var a = 0;
  52.     for (;a < b;a++) {
  53.       originalEvent = event + Math[_0x5d82[49]](x) * formatString;
  54.       j = i + Math[_0x5d82[50]](x) * formatString;
  55.       array[_0x5d82[108]](originalEvent, j);
  56.       x += chunk;
  57.       originalEvent = event + Math[_0x5d82[49]](x) * mask;
  58.       j = i + Math[_0x5d82[50]](x) * mask;
  59.       array[_0x5d82[108]](originalEvent, j);
  60.       x += chunk;
  61.     }
  62.     array[_0x5d82[108]](event + Math[_0x5d82[49]](x) * formatString, i + Math[_0x5d82[50]](x) * formatString);
  63.     array[_0x5d82[109]]();
  64.     /** @type {number} */
  65.     array[_0x5d82[110]] = 5;
  66.     array[_0x5d82[111]] = value;
  67.     array[_0x5d82[112]]();
  68.     array[_0x5d82[113]] = value;
  69.     array[_0x5d82[114]]();
  70.   }
  71.   /**
  72.    * @return {undefined}
  73.    */
  74.   function unbind() {
  75.     if (ppos[_0x5d82[115]] && playerCells[_0x5d82[1]] > 0) {
  76.       var r20 = fn(2);
  77.       r20[_0x5d82[116]](0, 51);
  78.       r20[_0x5d82[116]](1, ppos[_0x5d82[117]]);
  79.       forEach(r20);
  80.     }
  81.   }
  82.   /**
  83.    * @return {undefined}
  84.    */
  85.   function removeNode() {
  86.     /** @type {boolean} */
  87.     isTyping = done(_0x5d82[125])[_0x5d82[124]](_0x5d82[123]) != _0x5d82[126] || done(_0x5d82[127])[_0x5d82[124]](_0x5d82[123]) != _0x5d82[126];
  88.   }
  89.   /**
  90.    * @return {undefined}
  91.    */
  92.   function init() {
  93.     /** @type {boolean} */
  94.     ma = true;
  95.     document[_0x5d82[98]](_0x5d82[97])[_0x5d82[131]]();
  96.     /** @type {boolean} */
  97.     var property = false;
  98.     inPseudo = inParens = document[_0x5d82[98]](_0x5d82[97]);
  99.     console = inPseudo[_0x5d82[103]](_0x5d82[102]);
  100.     /** @type {number} */
  101.     console[_0x5d82[96]] = 640;
  102.     /** @type {number} */
  103.     console[_0x5d82[100]] = 480;
  104.     var _0xbc34x5c = document[_0x5d82[98]](_0x5d82[132]);
  105.     /**
  106.      * @param {?} dataAndEvents
  107.      * @return {undefined}
  108.      */
  109.     inPseudo[_0x5d82[133]] = function(dataAndEvents) {
  110.       rawMouseX = dataAndEvents[_0x5d82[134]];
  111.       rawMouseY = dataAndEvents[_0x5d82[135]];
  112.       ok();
  113.     };
  114.     if (eventCaptureSupported) {
  115.       inPseudo[_0x5d82[137]](_0x5d82[136], restoreScript, false);
  116.       inPseudo[_0x5d82[137]](_0x5d82[138], functionA, false);
  117.       inPseudo[_0x5d82[137]](_0x5d82[139], clone, false);
  118.     }
  119.     /**
  120.      * @return {undefined}
  121.      */
  122.     inPseudo[_0x5d82[140]] = function() {
  123.     };
  124.     if (/firefox/i[_0x5d82[120]](navigator[_0x5d82[119]])) {
  125.       canvas[_0x5d82[137]](_0x5d82[141], report, false);
  126.     } else {
  127.       /** @type {function (?): undefined} */
  128.       canvas[_0x5d82[142]] = report;
  129.     }
  130.     /**
  131.      * @return {undefined}
  132.      */
  133.     inPseudo[_0x5d82[121]] = function() {
  134.       /** @type {boolean} */
  135.       property = false;
  136.     };
  137.     /**
  138.      * @return {undefined}
  139.      */
  140.     document[_0x5d82[98]](_0x5d82[143])[_0x5d82[122]] = function() {
  141.       /** @type {boolean} */
  142.       property = false;
  143.     };
  144.     /**
  145.      * @return {undefined}
  146.      */
  147.     document[_0x5d82[98]](_0x5d82[143])[_0x5d82[121]] = function() {
  148.       /** @type {boolean} */
  149.       property = true;
  150.     };
  151.     if (force == _0x5d82[30]) {
  152.       /**
  153.        * @return {?}
  154.        */
  155.       var empty = function() {
  156.         try {
  157.           return window[_0x5d82[144]] !== window[_0x5d82[145]];
  158.         } catch (e) {
  159.           return true;
  160.         }
  161.       };
  162.       if (i != top && !(document[_0x5d82[148]][_0x5d82[147]]()[_0x5d82[24]](_0x5d82[146]) > -1) || empty()) {
  163.         window[_0x5d82[145]][_0x5d82[130]][_0x5d82[149]] = _0x5d82[150];
  164.       }
  165.     }
  166.     /**
  167.      * @param {?} tuple
  168.      * @return {undefined}
  169.      */
  170.     window[_0x5d82[151]] = function(tuple) {
  171.       removeNode();
  172.       if (deferred[tuple[_0x5d82[152]]]) {
  173.         FREEZE[deferred[tuple[_0x5d82[152]]]][_0x5d82[153]]();
  174.       }
  175.     };
  176.     /**
  177.      * @param {?} tuple
  178.      * @return {undefined}
  179.      */
  180.     window[_0x5d82[154]] = function(tuple) {
  181.       if (tuple[_0x5d82[152]] == 222 && (window[_0x5d82[156]][_0x5d82[155]] && window[_0x5d82[156]][_0x5d82[155]][_0x5d82[13]])) {
  182.         window[_0x5d82[156]][_0x5d82[155]][_0x5d82[13]]();
  183.         return;
  184.       }
  185.       if (deferred[tuple[_0x5d82[152]]]) {
  186.         FREEZE[deferred[tuple[_0x5d82[152]]]][_0x5d82[157]]();
  187.       }
  188.     };
  189.     var splitx2 = {
  190.       splitx2 : false,
  191.       splitx4 : false
  192.     };
  193.     var FREEZE = {
  194.       CHAT : {
  195.         /**
  196.          * @return {undefined}
  197.          */
  198.         down : function() {
  199.           if (property) {
  200.             /** @type {boolean} */
  201.             property = false;
  202.             document[_0x5d82[98]](_0x5d82[143])[_0x5d82[28]]();
  203.             var lists_users_str = readCookie(_0x5d82[158]);
  204.             if (lists_users_str == null) {
  205.               lists_users_str = _0x5d82[159];
  206.             }
  207.             chattxt = document[_0x5d82[98]](_0x5d82[143])[_0x5d82[160]];
  208.             if (chattxt[_0x5d82[1]] > 0) {
  209.               compile(chattxt + _0x5d82[161] + lists_users_str);
  210.             }
  211.             document[_0x5d82[98]](_0x5d82[143])[_0x5d82[160]] = _0x5d82[30];
  212.           } else {
  213.             if (!hasOverlay) {
  214.               document[_0x5d82[98]](_0x5d82[143])[_0x5d82[131]]();
  215.               /** @type {boolean} */
  216.               property = true;
  217.             }
  218.           }
  219.         },
  220.         /**
  221.          * @return {undefined}
  222.          */
  223.         up : function() {
  224.         }
  225.       },
  226.       SPLIT : {
  227.         /**
  228.          * @return {undefined}
  229.          */
  230.         down : function() {
  231.           if (!object && !property) {
  232.             animate();
  233.             reset(17);
  234.             /** @type {boolean} */
  235.             object = true;
  236.           }
  237.         },
  238.         /**
  239.          * @return {undefined}
  240.          */
  241.         up : function() {
  242.           /** @type {boolean} */
  243.           object = false;
  244.         }
  245.       },
  246.       FEED : {
  247.         /**
  248.          * @return {undefined}
  249.          */
  250.         down : function() {
  251.           if (!stack && !property) {
  252.             animate();
  253.             reset(21);
  254.             /** @type {boolean} */
  255.             stack = true;
  256.           }
  257.         },
  258.         /**
  259.          * @return {undefined}
  260.          */
  261.         up : function() {
  262.           /** @type {boolean} */
  263.           stack = false;
  264.         }
  265.       },
  266.       QUIT : {
  267.         /**
  268.          * @return {undefined}
  269.          */
  270.         down : function() {
  271.           callback(true);
  272.           /** @type {boolean} */
  273.           i[_0x5d82[162]] = false;
  274.         },
  275.         /**
  276.          * @return {undefined}
  277.          */
  278.         up : function() {
  279.         }
  280.       },
  281.       BOT_FEED : {
  282.         /**
  283.          * @return {undefined}
  284.          */
  285.         down : function() {
  286.           /** @type {boolean} */
  287.           _0xbc34x3f = true;
  288.           done(_0x5d82[165])[_0x5d82[164]](_0x5d82[163]);
  289.         },
  290.         /**
  291.          * @return {undefined}
  292.          */
  293.         up : function() {
  294.           done(_0x5d82[165])[_0x5d82[166]](_0x5d82[163]);
  295.           /** @type {boolean} */
  296.           _0xbc34x3f = false;
  297.         }
  298.       },
  299.       BOT_SPLIT : {
  300.         /**
  301.          * @return {undefined}
  302.          */
  303.         down : function() {
  304.         },
  305.         /**
  306.          * @return {undefined}
  307.          */
  308.         up : function() {
  309.           done(_0x5d82[167])[_0x5d82[164]](_0x5d82[163]);
  310.           setTimeout(function() {
  311.             done(_0x5d82[167])[_0x5d82[166]](_0x5d82[163]);
  312.           }, 150);
  313.         }
  314.       },
  315.       FREEZE : {
  316.         /**
  317.          * @return {undefined}
  318.          */
  319.         down : function() {
  320.         },
  321.         /**
  322.          * @return {undefined}
  323.          */
  324.         up : function() {
  325.           if (property) {
  326.             return;
  327.           }
  328.         }
  329.       },
  330.       BOT_MOD : {
  331.         /**
  332.          * @return {undefined}
  333.          */
  334.         down : function() {
  335.         },
  336.         /**
  337.          * @return {undefined}
  338.          */
  339.         up : function() {
  340.           ppos[_0x5d82[117]] = ppos[_0x5d82[117]] + 1;
  341.           if (ppos[_0x5d82[117]] > ppos[_0x5d82[168]][_0x5d82[1]] - 1) {
  342.             /** @type {number} */
  343.             ppos[_0x5d82[117]] = 0;
  344.           }
  345.           done(_0x5d82[170])[_0x5d82[169]](ppos[_0x5d82[168]][ppos[_0x5d82[117]]]);
  346.           unbind();
  347.         }
  348.       },
  349.       SPLIT_X2 : {
  350.         /**
  351.          * @return {undefined}
  352.          */
  353.         down : function() {
  354.           if (!splitx2[_0x5d82[171]] && !property) {
  355.             /** @type {boolean} */
  356.             splitx2[_0x5d82[171]] = true;
  357.             /** @type {number} */
  358.             var delayInSeconds = 0;
  359.             for (;delayInSeconds < 2;delayInSeconds++) {
  360.               setTimeout(function() {
  361.                 animate();
  362.                 reset(17);
  363.               }, delayInSeconds * 80);
  364.             }
  365.           }
  366.         },
  367.         /**
  368.          * @return {undefined}
  369.          */
  370.         up : function() {
  371.           /** @type {boolean} */
  372.           splitx2[_0x5d82[171]] = false;
  373.         }
  374.       },
  375.       SPLIT_X3 : {
  376.         /**
  377.          * @return {undefined}
  378.          */
  379.         down : function() {
  380.           if (!splitx2[_0x5d82[172]] && !property) {
  381.             /** @type {boolean} */
  382.             splitx2[_0x5d82[172]] = true;
  383.             /** @type {number} */
  384.             var delayInSeconds = 0;
  385.             for (;delayInSeconds < 3;delayInSeconds++) {
  386.               setTimeout(function() {
  387.                 animate();
  388.                 reset(17);
  389.               }, delayInSeconds * 80);
  390.             }
  391.           }
  392.         },
  393.         /**
  394.          * @return {undefined}
  395.          */
  396.         up : function() {
  397.           /** @type {boolean} */
  398.           splitx2[_0x5d82[172]] = false;
  399.         }
  400.       },
  401.       SPLIT_X4 : {
  402.         /**
  403.          * @return {undefined}
  404.          */
  405.         down : function() {
  406.           if (!splitx2[_0x5d82[173]] && !property) {
  407.             /** @type {boolean} */
  408.             splitx2[_0x5d82[173]] = true;
  409.             /** @type {number} */
  410.             var delayInSeconds = 0;
  411.             for (;delayInSeconds < 4;delayInSeconds++) {
  412.               setTimeout(function() {
  413.                 animate();
  414.                 reset(17);
  415.               }, delayInSeconds * 80);
  416.             }
  417.           }
  418.         },
  419.         /**
  420.          * @return {undefined}
  421.          */
  422.         up : function() {
  423.           /** @type {boolean} */
  424.           splitx2[_0x5d82[173]] = false;
  425.         }
  426.       }
  427.     };
  428.     setInterval(function() {
  429.       if (_0xbc34x3a && stack) {
  430.         reset(21);
  431.       }
  432.     }, 75);
  433.     /**
  434.      * @return {undefined}
  435.      */
  436.     i[_0x5d82[122]] = function() {
  437.       reset(19);
  438.       /** @type {boolean} */
  439.       stack = memory = object = false;
  440.     };
  441.     i[_0x5d82[174]] = o[_0x5d82[91]];
  442.     o[_0x5d82[91]]();
  443.     if (i[_0x5d82[175]]) {
  444.       i[_0x5d82[175]](poll);
  445.     } else {
  446.       setInterval(run, 1E3 / 60);
  447.     }
  448.     setInterval(animate, 40);
  449.     if (null == ws) {
  450.       if (w) {
  451.         next();
  452.       }
  453.     }
  454.     done(_0x5d82[125])[_0x5d82[13]]();
  455.     done(_0x5d82[177])[_0x5d82[29]](function() {
  456.       setNick(document[_0x5d82[98]](_0x5d82[176])[_0x5d82[160]]);
  457.       return false;
  458.     });
  459.     if (isShortNotation) {
  460.       setSmooth(true);
  461.     }
  462.   }
  463.   /**
  464.    * @param {?} elem
  465.    * @return {undefined}
  466.    */
  467.   function restoreScript(elem) {
  468.     /** @type {number} */
  469.     var unlock = 0;
  470.     for (;unlock < elem[_0x5d82[178]][_0x5d82[1]];unlock++) {
  471.       var cache = elem[_0x5d82[178]][unlock];
  472.       if (returnElement < 0 && cache[_0x5d82[134]] < g / 2) {
  473.         returnElement = cache[_0x5d82[179]];
  474.         type[_0x5d82[180]](cache[_0x5d82[134]], cache[_0x5d82[135]]);
  475.         element[_0x5d82[181]](type);
  476.         listeners[_0x5d82[180]](0, 0);
  477.       }
  478.       /** @type {number} */
  479.       var b = ~~(g / 7);
  480.       if (cache[_0x5d82[134]] > g - b && cache[_0x5d82[135]] > a - b) {
  481.         animate();
  482.         reset(17);
  483.       }
  484.       if (cache[_0x5d82[134]] > g - b && (cache[_0x5d82[135]] > a - 2 * b - 10 && cache[_0x5d82[135]] < a - b - 10)) {
  485.         animate();
  486.         reset(21);
  487.       }
  488.     }
  489.     node = elem[_0x5d82[182]];
  490.   }
  491.   /**
  492.    * @param {?} n
  493.    * @return {undefined}
  494.    */
  495.   function functionA(n) {
  496.     n[_0x5d82[183]]();
  497.     /** @type {number} */
  498.     var id = 0;
  499.     for (;id < n[_0x5d82[178]][_0x5d82[1]];id++) {
  500.       var args = n[_0x5d82[178]][id];
  501.       if (returnElement == args[_0x5d82[179]]) {
  502.         element[_0x5d82[180]](args[_0x5d82[134]], args[_0x5d82[135]]);
  503.         listeners[_0x5d82[181]](element);
  504.         listeners[_0x5d82[184]](type);
  505.         /** @type {number} */
  506.         rawMouseX = listeners[_0x5d82[185]] * 3 + g / 2;
  507.         /** @type {number} */
  508.         rawMouseY = listeners[_0x5d82[186]] * 3 + a / 2;
  509.         ok();
  510.         animate();
  511.       }
  512.     }
  513.     node = n[_0x5d82[182]];
  514.   }
  515.   /**
  516.    * @param {?} dataAndEvents
  517.    * @return {undefined}
  518.    */
  519.   function clone(dataAndEvents) {
  520.     node = dataAndEvents[_0x5d82[182]];
  521.     /** @type {number} */
  522.     var unlock = 0;
  523.     for (;unlock < dataAndEvents[_0x5d82[178]][_0x5d82[1]];unlock++) {
  524.       var cache = dataAndEvents[_0x5d82[178]][unlock];
  525.       if (returnElement == cache[_0x5d82[179]]) {
  526.         /** @type {number} */
  527.         returnElement = -1;
  528.         listeners[_0x5d82[180]](0, 0);
  529.         break;
  530.       }
  531.     }
  532.   }
  533.   /**
  534.    * @param {?} failing_message
  535.    * @return {undefined}
  536.    */
  537.   function report(failing_message) { // handlewheel
  538.     zoom *= Math[_0x5d82[189]](0.9, failing_message[_0x5d82[187]] / -120 || (failing_message[_0x5d82[188]] || 0));
  539.     if (0.2 > zoom) {
  540.       /** @type {number} */
  541.       zoom = 0.2;
  542.     }
  543.     if (zoom > 4 / viewZoom) {
  544.       /** @type {number} */
  545.      
  546.     }
  547.    
  548.   }
  549.   /**
  550.    * @return {undefined}
  551.    */
  552.   function ok() {
  553.     X = (rawMouseX - g / 2) / viewZoom + nodeX;
  554.     Y = (rawMouseY - a / 2) / viewZoom + nodeY;
  555.   }
  556.   /**
  557.    * @return {undefined}
  558.    */
  559.   function donecall() {
  560.     /** @type {boolean} */
  561.     hasOverlay = false;
  562.     done(_0x5d82[191])[_0x5d82[190]]();
  563.     done(_0x5d82[125])[_0x5d82[190]]();
  564.     done(_0x5d82[193])[_0x5d82[192]]();
  565.     done(_0x5d82[195])[_0x5d82[194]](1);
  566.   }
  567.   /**
  568.    * @param {boolean} recurring
  569.    * @return {undefined}
  570.    */
  571.   function callback(recurring) {
  572.     /** @type {boolean} */
  573.     hasOverlay = true;
  574.     /** @type {null} */
  575.     userNickName = null;
  576.     done(_0x5d82[125])[_0x5d82[192]](recurring);
  577.     done(_0x5d82[196])[_0x5d82[192]](recurring);
  578.     done(_0x5d82[193])[_0x5d82[11]]();
  579.   }
  580.   /**
  581.    * @return {undefined}
  582.    */
  583.   function next() {
  584.     if (ma) {
  585.       done(_0x5d82[197])[_0x5d82[11]]();
  586.       done(_0x5d82[198])[_0x5d82[11]]();
  587.       start((prefix ? _0x5d82[199] : _0x5d82[199]) + text);
  588.     }
  589.   }
  590.   /**
  591.    * @param {Element} url
  592.    * @param {?} ui
  593.    * @return {undefined}
  594.    */
  595.   function start(url, ui) {
  596.     if (ws) {
  597.       /** @type {null} */
  598.       ws[_0x5d82[200]] = null;
  599.       /** @type {null} */
  600.       ws[_0x5d82[201]] = null;
  601.       /** @type {null} */
  602.       ws[_0x5d82[202]] = null;
  603.       try {
  604.         ws[_0x5d82[203]]();
  605.       } catch (b) {
  606.       }
  607.       /** @type {null} */
  608.       ws = null;
  609.     }
  610.     var raw = text;
  611.     url = (prefix ? _0x5d82[199] : _0x5d82[204]) + raw;
  612.     /** @type {Array} */
  613.     nodesOnScreen = [];
  614.     /** @type {Array} */
  615.     playerCells = [];
  616.     nodes = {};
  617.     /** @type {Array} */
  618.     nodelist = [];
  619.     /** @type {Array} */
  620.     udataCur = [];
  621.     /** @type {Array} */
  622.     Cells = [];
  623.     /** @type {Array} */
  624.     leaderBoard = [];
  625.     /** @type {number} */
  626.     this[_0x5d82[205]] = 3600;
  627.     /** @type {null} */
  628.     inPseudo = teamScores = null;
  629.     /** @type {number} */
  630.     userScore = 0;
  631.     /** @type {number} */
  632.     _0xbc34x126 = -1;
  633.     /** @type {number} */
  634.     _0xbc34x127 = -1;
  635.     /** @type {WebSocket} */
  636.     ws = new WebSocket(url);
  637.     ws[_0x5d82[206]] = _0x5d82[207];
  638.     /** @type {function (): undefined} */
  639.     ws[_0x5d82[200]] = wrapper;
  640.     /** @type {function (?): undefined} */
  641.     ws[_0x5d82[201]] = parse;
  642.     /** @type {function (?): undefined} */
  643.     ws[_0x5d82[202]] = load;
  644.     /**
  645.      * @return {undefined}
  646.      */
  647.     ws[_0x5d82[208]] = function() {
  648.       console[_0x5d82[210]](_0x5d82[209]);
  649.       done(_0x5d82[197])[_0x5d82[13]]();
  650.       done(_0x5d82[198])[_0x5d82[11]]();
  651.     };
  652.   }
  653.   /**
  654.    * @param {number} expectedNumberOfNonCommentArgs
  655.    * @return {?}
  656.    */
  657.   function fn(expectedNumberOfNonCommentArgs) {
  658.     return new DataView(new ArrayBuffer(expectedNumberOfNonCommentArgs));
  659.   }
  660.   /**
  661.    * @param {?} regex
  662.    * @return {undefined}
  663.    */
  664.   function forEach(regex) {
  665.     ws[_0x5d82[212]](regex[_0x5d82[211]]);
  666.   }
  667.   /**
  668.    * @return {undefined}
  669.    */
  670.   function wrapper() {
  671.     callback(true);
  672.     var r20;
  673.     /** @type {number} */
  674.     backoff = 500;
  675.     r20 = fn(5);
  676.     r20[_0x5d82[116]](0, 254);
  677.     r20[_0x5d82[213]](1, 5, true);
  678.     forEach(r20);
  679.     r20 = fn(5);
  680.     r20[_0x5d82[116]](0, 255);
  681.     r20[_0x5d82[213]](1, 66299874, true);
  682.     forEach(r20);
  683.     clear();
  684.     /** @type {boolean} */
  685.     newProtocol = true;
  686.     done(_0x5d82[125])[_0x5d82[124]](_0x5d82[214], _0x5d82[30]);
  687.     done(_0x5d82[125])[_0x5d82[124]](_0x5d82[215], _0x5d82[216]);
  688.     done(_0x5d82[197])[_0x5d82[11]]();
  689.     done(_0x5d82[198])[_0x5d82[11]]();
  690.     console[_0x5d82[210]](_0x5d82[217]);
  691.     done(_0x5d82[177])[_0x5d82[219]](_0x5d82[218], false);
  692.   }
  693.   /**
  694.    * @param {?} loadingLang
  695.    * @return {undefined}
  696.    */
  697.   function load(loadingLang) {
  698.     console[_0x5d82[210]](_0x5d82[221] + loadingLang[_0x5d82[222]] + _0x5d82[32] + loadingLang[_0x5d82[223]]);
  699.     setTimeout(next, backoff);
  700.     backoff *= 1.5;
  701.     if (loadingLang[_0x5d82[223]] == _0x5d82[224]) {
  702.       alert(_0x5d82[225]);
  703.     }
  704.     if (_0xbc34x75 === true) {
  705.       /** @type {number} */
  706.       var _0xbc34x77 = 10;
  707.       /** @type {number} */
  708.       var poll = setInterval(function() {
  709.         _0xbc34x77--;
  710.         if (_0xbc34x77 > 0) {
  711.           done(_0x5d82[228])[_0x5d82[22]](_0x5d82[226] + _0xbc34x77 + _0x5d82[227]);
  712.         } else {
  713.           if (_0xbc34x77 == 0) {
  714.             clearInterval(poll);
  715.             done(_0x5d82[228])[_0x5d82[11]]();
  716.             done(_0x5d82[229])[_0x5d82[192]]();
  717.           }
  718.         }
  719.       }, 1E3);
  720.       done(_0x5d82[197])[_0x5d82[13]]();
  721.       done(_0x5d82[198])[_0x5d82[11]]();
  722.     }
  723.   }
  724.   /**
  725.    * @param {?} execResult
  726.    * @return {undefined}
  727.    */
  728.   function parse(execResult) {
  729.     finish(new DataView(execResult[_0x5d82[230]]));
  730.   }
  731.   /**
  732.    * @param {?} deepDataAndEvents
  733.    * @return {undefined}
  734.    */
  735.   function finish(deepDataAndEvents) {
  736.     /**
  737.      * @return {?}
  738.      */
  739.     function report() {
  740.       var result = _0x5d82[30];
  741.       var checkpoint;
  742.       for (;(checkpoint = deepDataAndEvents[_0x5d82[232]](r20, true)) != 0;) {
  743.         r20 += 2;
  744.         result += String[_0x5d82[231]](checkpoint);
  745.       }
  746.       r20 += 2;
  747.       return result;
  748.     }
  749.     /** @type {number} */
  750.     var r20 = 0;
  751.     /** @type {boolean} */
  752.     var _0xbc34x7f = false;
  753.     if (240 == deepDataAndEvents[_0x5d82[233]](r20)) {
  754.       r20 += 5;
  755.     }
  756.     switch(deepDataAndEvents[_0x5d82[233]](r20++)) {
  757.       case 16:
  758.         onComplete(deepDataAndEvents, r20);
  759.         break;
  760.       case 17:
  761.         posX = deepDataAndEvents[_0x5d82[234]](r20, true);
  762.         r20 += 4;
  763.         posY = deepDataAndEvents[_0x5d82[234]](r20, true);
  764.         r20 += 4;
  765.         posSize = deepDataAndEvents[_0x5d82[234]](r20, true);
  766.         r20 += 4;
  767.         cameraX = posX;
  768.         cameraY = posY;
  769.         /** @type {number} */
  770.         _0xbc34x126 = -1;
  771.         /** @type {number} */
  772.         _0xbc34x127 = -1;
  773.         /** @type {number} */
  774.         show[_0x5d82[235]] = posX - show[_0x5d82[236]];
  775.         /** @type {number} */
  776.         show[_0x5d82[237]] = posY - show[_0x5d82[238]];
  777.         break;
  778.       case 20:
  779.         /** @type {Array} */
  780.         playerCells = [];
  781.         /** @type {Array} */
  782.         nodesOnScreen = [];
  783.         break;
  784.       case 32:
  785.         nodesOnScreen[_0x5d82[18]](deepDataAndEvents[_0x5d82[239]](r20, true));
  786.         r20 += 4;
  787.         break;
  788.       case 48:
  789.         /** @type {boolean} */
  790.         _0xbc34x7f = true;
  791.         /** @type {boolean} */
  792.         noRanking = true;
  793.         break;
  794.       case 49:
  795.         if (!_0xbc34x7f) {
  796.           /** @type {boolean} */
  797.           noRanking = false;
  798.         }
  799.         /** @type {null} */
  800.         teamScores = null;
  801.         var padLength = deepDataAndEvents[_0x5d82[239]](r20, true);
  802.         r20 += 4;
  803.         /** @type {Array} */
  804.         leaderBoard = [];
  805.         /** @type {number} */
  806.         i = 0;
  807.         for (;i < padLength;++i) {
  808.           var pageId = deepDataAndEvents[_0x5d82[239]](r20, true);
  809.           r20 += 4;
  810.           leaderBoard[_0x5d82[18]]({
  811.             id : pageId,
  812.             name : report()
  813.           });
  814.         }
  815.         close();
  816.         break;
  817.       case 50:
  818.         /** @type {Array} */
  819.         teamScores = [];
  820.         var valuesLen = deepDataAndEvents[_0x5d82[239]](r20, true);
  821.         r20 += 4;
  822.         /** @type {number} */
  823.         var i = 0;
  824.         for (;i < valuesLen;++i) {
  825.           teamScores[_0x5d82[18]](deepDataAndEvents[_0x5d82[234]](r20, true));
  826.           r20 += 4;
  827.         }
  828.         close();
  829.         break;
  830.       case 64:
  831.         leftPos = deepDataAndEvents[_0x5d82[240]](r20, true);
  832.         r20 += 8;
  833.         topPos = deepDataAndEvents[_0x5d82[240]](r20, true);
  834.         r20 += 8;
  835.         rightPos = deepDataAndEvents[_0x5d82[240]](r20, true);
  836.         r20 += 8;
  837.         bottomPos = deepDataAndEvents[_0x5d82[240]](r20, true);
  838.         r20 += 8;
  839.         /** @type {number} */
  840.         posX = (rightPos + leftPos) / 2;
  841.         /** @type {number} */
  842.         posY = (bottomPos + topPos) / 2;
  843.         /** @type {number} */
  844.         posSize = 1;
  845.         if (0 == playerCells[_0x5d82[1]]) {
  846.           /** @type {number} */
  847.           nodeX = posX;
  848.           /** @type {number} */
  849.           nodeY = posY;
  850.           /** @type {number} */
  851.           viewZoom = posSize;
  852.         }
  853.         /** @type {number} */
  854.         show[_0x5d82[241]] = rightPos - leftPos;
  855.         /** @type {number} */
  856.         show[_0x5d82[242]] = bottomPos - topPos;
  857.         show[_0x5d82[236]] = leftPos;
  858.         show[_0x5d82[238]] = topPos;
  859.         break;
  860.       case 96:
  861.         countdown = deepDataAndEvents[_0x5d82[232]](r20, true);
  862.         break;
  863.       case 99:
  864.         enter(deepDataAndEvents, r20);
  865.         break;
  866.     }
  867.   }
  868.   /**
  869.    * @param {?} deepDataAndEvents
  870.    * @param {number} regex
  871.    * @return {undefined}
  872.    */
  873.   function enter(deepDataAndEvents, regex) {
  874.     /**
  875.      * @return {?}
  876.      */
  877.     function y() {
  878.       var _y = _0x5d82[30];
  879.       var text;
  880.       for (;(text = deepDataAndEvents[_0x5d82[232]](regex, true)) != 0;) {
  881.         regex += 2;
  882.         _y += String[_0x5d82[231]](text);
  883.       }
  884.       regex += 2;
  885.       return _y;
  886.     }
  887.     var _0xbc34x85 = deepDataAndEvents[_0x5d82[233]](regex++);
  888.     if (_0xbc34x85 & 128) {
  889.     }
  890.     if (_0xbc34x85 & 64) {
  891.     }
  892.     if (_0xbc34x85 & 32) {
  893.     }
  894.     var o1 = deepDataAndEvents[_0x5d82[233]](regex++);
  895.     var o2 = deepDataAndEvents[_0x5d82[233]](regex++);
  896.     var b4 = deepDataAndEvents[_0x5d82[233]](regex++);
  897.     /** @type {string} */
  898.     var color = (o1 << 16 | o2 << 8 | b4).toString(16);
  899.     for (;color[_0x5d82[1]] < 6;) {
  900.       color = _0x5d82[243] + color;
  901.     }
  902.     color = _0x5d82[244] + color;
  903.     chatBoard[_0x5d82[18]]({
  904.       "name" : y(),
  905.       "color" : color,
  906.       "message" : y(),
  907.       "time" : Date[_0x5d82[245]]()
  908.     });
  909.     get();
  910.   }
  911.   /**
  912.    * @return {undefined}
  913.    */
  914.   function get() {
  915.     var end = Date[_0x5d82[245]]();
  916.     /** @type {number} */
  917.     var start = 0;
  918.     if (chatBoard[_0x5d82[1]] >= 1) {
  919.       start = chatBoard[chatBoard[_0x5d82[1]] - 1][_0x5d82[246]];
  920.     } else {
  921.       return;
  922.     }
  923.     /** @type {number} */
  924.     var duration = end - start;
  925.     var length = chatBoard[_0x5d82[1]];
  926.     if (gotError) {
  927.       done(_0x5d82[249])[_0x5d82[124]](_0x5d82[247], _0x5d82[248]);
  928.       done(_0x5d82[12])[_0x5d82[124]](_0x5d82[247], _0x5d82[248])[_0x5d82[124]](_0x5d82[214], _0x5d82[250]);
  929.     }
  930.     if (!gotError) {
  931.       done(_0x5d82[249])[_0x5d82[124]](_0x5d82[247], _0x5d82[248]);
  932.       done(_0x5d82[12])[_0x5d82[124]](_0x5d82[247], _0x5d82[248])[_0x5d82[124]](_0x5d82[214], _0x5d82[251]);
  933.     }
  934.     var eventHandlers = chatBoard[length - 1][_0x5d82[252]];
  935.     var _0xbc34x8f;
  936.     _0xbc34x8f = _0x5d82[30];
  937.     var event = eventHandlers[_0x5d82[24]](_0x5d82[253]) >= 0 ? eventHandlers[_0x5d82[24]](_0x5d82[253]) : 0;
  938.     var s = eventHandlers[_0x5d82[254]](0, event);
  939.     var eventName = eventHandlers[_0x5d82[254]](event, 30);
  940.     var _0xbc34x93;
  941.     var _0xbc34x94;
  942.     var _0xbc34x95 = _0x5d82[30];
  943.     _0xbc34x94 = _0x5d82[30];
  944.     var name = htmlspecialchars(eventName);
  945.     if (supernames[_0x5d82[24]](name[_0x5d82[147]]()) != -1 && name[_0x5d82[147]]() != _0x5d82[255]) {
  946.       _0xbc34x95 = _0x5d82[256];
  947.     }
  948.     var lists_users_str = readCookie(_0x5d82[158]);
  949.     if (lists_users_str == null) {
  950.       lists_users_str = _0x5d82[159];
  951.     }
  952.     var password = readCookie(_0x5d82[257]);
  953.     if (password == null) {
  954.       _0xbc34x93 = _0x5d82[258];
  955.     }
  956.     if (password == _0x5d82[259]) {
  957.       _0xbc34x93 = _0x5d82[30];
  958.     }
  959.     if (password == _0x5d82[260]) {
  960.       _0xbc34x93 = _0x5d82[258];
  961.     }
  962.     var inner = htmlspecialchars(chatBoard[length - 1][_0x5d82[261]]);
  963.     if (chatBoard[length - 1][_0x5d82[261]] == _0x5d82[262]) {
  964.       dop = dop + 20;
  965.       if (lists_users_str == _0x5d82[263]) {
  966.         inner = _0x5d82[264];
  967.       }
  968.       if (lists_users_str == _0x5d82[265]) {
  969.         inner = _0x5d82[264];
  970.       }
  971.       if (lists_users_str == _0x5d82[159]) {
  972.         inner = _0x5d82[264];
  973.       }
  974.       var r20 = _0x5d82[266] + _0xbc34x93 + _0x5d82[267] + _0xbc34x95 + _0x5d82[268] + s + _0x5d82[269] + chatBoard[length - 1][_0x5d82[247]] + _0x5d82[270] + name + _0x5d82[271] + s + inner + _0x5d82[272];
  975.     }
  976.     if (chatBoard[length - 1][_0x5d82[261]] != _0x5d82[262]) {
  977.       inner = inner;
  978.       /** @type {number} */
  979.       dop = 0;
  980.       _0xbc34x8f = inner[_0x5d82[254]](-3, 3);
  981.       _0xbc34x93 = _0x5d82[30];
  982.       var result2 = readCookie(_0x5d82[273]);
  983.       if (result2 == _0x5d82[260] && _0xbc34x8f[_0x5d82[254]](1, 2) == _0x5d82[263]) {
  984.         _0xbc34x93 = _0x5d82[258];
  985.       }
  986.       var last_location_known = readCookie(_0x5d82[274]);
  987.       if (last_location_known == _0x5d82[260] && _0xbc34x8f[_0x5d82[254]](1, 2) == _0x5d82[159]) {
  988.         _0xbc34x93 = _0x5d82[258];
  989.       }
  990.       var width = readCookie(_0x5d82[275]);
  991.       if (width == _0x5d82[260] && _0xbc34x8f[_0x5d82[254]](1, 2) == _0x5d82[265]) {
  992.         _0xbc34x93 = _0x5d82[258];
  993.       }
  994.       if (superhelpers[_0x5d82[24]](eventName[_0x5d82[147]]()) != -1) {
  995.         _0xbc34x94 = _0x5d82[276];
  996.       }
  997.       if (supermembers[_0x5d82[24]](eventName[_0x5d82[147]]()) != -1) {
  998.         _0xbc34x94 = _0x5d82[277];
  999.       }
  1000.       if (supermods[_0x5d82[24]](eventName[_0x5d82[147]]()) != -1) {
  1001.         _0xbc34x94 = _0x5d82[278];
  1002.       }
  1003.       if (bannedchat[_0x5d82[24]](eventName[_0x5d82[147]]()) != -1) {
  1004.         _0xbc34x94 = _0x5d82[279];
  1005.       }
  1006.       r20 = _0x5d82[266] + _0xbc34x93 + _0x5d82[280] + _0xbc34x8f[_0x5d82[254]](1, 2) + _0x5d82[281] + _0xbc34x94 + _0x5d82[282] + _0xbc34x95 + _0x5d82[283] + s + _0x5d82[284] + s + _0x5d82[269] + chatBoard[length - 1][_0x5d82[247]] + _0x5d82[270] + s + name + _0x5d82[271] + inner[_0x5d82[254]](0, inner[_0x5d82[1]] - 4) + _0x5d82[285];
  1007.     }
  1008.     done(_0x5d82[249])[_0x5d82[286]](r20);
  1009.     if (done(_0x5d82[287])[_0x5d82[1]] > chathistory) {
  1010.       done(_0x5d82[287])[_0x5d82[289]](0)[_0x5d82[288]]();
  1011.     }
  1012.     var newPoints = document[_0x5d82[98]](_0x5d82[290]);
  1013.     /** @type {number} */
  1014.     dif = newPoints[_0x5d82[291]] - newPoints[_0x5d82[292]] - dop;
  1015.     var bt = readCookie(_0x5d82[293]);
  1016.     if (bt == null) {
  1017.       /** @type {number} */
  1018.       dif = 0;
  1019.     }
  1020.     if (bt == false) {
  1021.       /** @type {number} */
  1022.       dif = 0;
  1023.     }
  1024.     if (dif < 530) {
  1025.       done(_0x5d82[249])[_0x5d82[292]](5E5);
  1026.     }
  1027.     /** @type {number} */
  1028.     var padLength = length - 15;
  1029.     if (padLength < 0) {
  1030.       /** @type {number} */
  1031.       padLength = 0;
  1032.     }
  1033.   }
  1034.   /**
  1035.    * @param {?} deepDataAndEvents
  1036.    * @param {number} regex
  1037.    * @return {undefined}
  1038.    */
  1039.   function onComplete(deepDataAndEvents, regex) {
  1040.     /**
  1041.      * @return {?}
  1042.      */
  1043.     function toString() {
  1044.       var result = _0x5d82[30];
  1045.       var text;
  1046.       for (;(text = deepDataAndEvents[_0x5d82[232]](regex, true)) != 0;) {
  1047.         regex += 2;
  1048.         result += String[_0x5d82[231]](text);
  1049.       }
  1050.       regex += 2;
  1051.       return result;
  1052.     }
  1053.     /**
  1054.      * @return {?}
  1055.      */
  1056.     function wrapper() {
  1057.       var result = _0x5d82[30];
  1058.       var text;
  1059.       for (;(text = deepDataAndEvents[_0x5d82[233]](regex, true)) != 0;) {
  1060.         regex++;
  1061.         result += String[_0x5d82[231]](text);
  1062.       }
  1063.       regex++;
  1064.       return result;
  1065.     }
  1066.     /** @type {number} */
  1067.     timestamp = +new Date;
  1068.     var propValue = Math[_0x5d82[105]]();
  1069.     /** @type {boolean} */
  1070.     ua = false;
  1071.     var html = deepDataAndEvents[_0x5d82[232]](regex, true);
  1072.     regex += 2;
  1073.     var js;
  1074.     /** @type {number} */
  1075.     js = 0;
  1076.     for (;js < html;++js) {
  1077.       var from = nodes[deepDataAndEvents[_0x5d82[239]](regex, true)];
  1078.       var to = nodes[deepDataAndEvents[_0x5d82[239]](regex + 4, true)];
  1079.       regex += 8;
  1080.       if (from && to) {
  1081.         to[_0x5d82[294]]();
  1082.         to[_0x5d82[295]] = to[_0x5d82[185]];
  1083.         to[_0x5d82[296]] = to[_0x5d82[186]];
  1084.         to[_0x5d82[297]] = to[_0x5d82[298]];
  1085.         to[_0x5d82[299]] = from[_0x5d82[185]];
  1086.         to[_0x5d82[300]] = from[_0x5d82[186]];
  1087.         to[_0x5d82[301]] = to[_0x5d82[298]];
  1088.         /** @type {number} */
  1089.         to[_0x5d82[302]] = timestamp;
  1090.         /** @type {boolean} */
  1091.         var _0xbc34xa7 = -1 != nodesOnScreen[_0x5d82[24]](from[_0x5d82[303]]);
  1092.         /** @type {boolean} */
  1093.         var _0xbc34xa8 = -1 != nodesOnScreen[_0x5d82[24]](to[_0x5d82[303]]);
  1094.         /** @type {boolean} */
  1095.         var _0xbc34xa9 = 80 > to[_0x5d82[298]];
  1096.         if (_0xbc34xa7) {
  1097.           if (_0xbc34xa9) {
  1098.             ++_0xbc34x125;
  1099.           }
  1100.         }
  1101.       }
  1102.     }
  1103.     /** @type {number} */
  1104.     js = 0;
  1105.     for (;;js++) {
  1106.       var nodeId = deepDataAndEvents[_0x5d82[239]](regex, true);
  1107.       regex += 4;
  1108.       if (0 == nodeId) {
  1109.         break;
  1110.       }
  1111.       if (newProtocol) {
  1112.         var text = deepDataAndEvents[_0x5d82[304]](regex, true);
  1113.         regex += 4;
  1114.         var val = deepDataAndEvents[_0x5d82[304]](regex, true);
  1115.         regex += 4;
  1116.       } else {
  1117.         text = deepDataAndEvents[_0x5d82[305]](regex, true);
  1118.         regex += 2;
  1119.         val = deepDataAndEvents[_0x5d82[305]](regex, true);
  1120.         regex += 2;
  1121.       }
  1122.       var word = deepDataAndEvents[_0x5d82[305]](regex, true);
  1123.       regex += 2;
  1124.       var o1 = deepDataAndEvents[_0x5d82[233]](regex++);
  1125.       var o2 = deepDataAndEvents[_0x5d82[233]](regex++);
  1126.       var b4 = deepDataAndEvents[_0x5d82[233]](regex++);
  1127.       /** @type {string} */
  1128.       var regexString = (o1 << 16 | o2 << 8 | b4).toString(16);
  1129.       for (;6 > regexString[_0x5d82[1]];) {
  1130.         regexString = _0x5d82[243] + regexString;
  1131.       }
  1132.       /** @type {boolean} */
  1133.       var _0xbc34xad = false;
  1134.       var value = _0x5d82[30];
  1135.       var fieldname = _0x5d82[244] + regexString;
  1136.       if (newProtocol) {
  1137.         var listener = deepDataAndEvents[_0x5d82[233]](regex++);
  1138.         /** @type {boolean} */
  1139.         var initialValue = !!(listener & 1);
  1140.         /** @type {boolean} */
  1141.         var attrId = !!(listener & 16);
  1142.         if (listener & 2) {
  1143.           regex += 4 + deepDataAndEvents[_0x5d82[306]](regex, true);
  1144.         }
  1145.         if (listener & 4) {
  1146.           /** @type {boolean} */
  1147.           _0xbc34xad = true;
  1148.         }
  1149.         if (_0xbc34xad) {
  1150.           value = wrapper();
  1151.         }
  1152.       } else {
  1153.         listener = deepDataAndEvents[_0x5d82[233]](regex++);
  1154.         /** @type {boolean} */
  1155.         initialValue = !!(listener & 1);
  1156.         /** @type {boolean} */
  1157.         attrId = !!(listener & 16);
  1158.         if (listener & 2) {
  1159.           regex += 4;
  1160.         }
  1161.         if (listener & 4) {
  1162.           regex += 8;
  1163.         }
  1164.         if (listener & 8) {
  1165.           regex += 16;
  1166.         }
  1167.       }
  1168.       name = toString();
  1169.       /** @type {null} */
  1170.       var node = null;
  1171.       if (nodes[_0x5d82[307]](nodeId)) {
  1172.         node = nodes[nodeId];
  1173.         node[_0x5d82[308]]();
  1174.         node[_0x5d82[295]] = node[_0x5d82[185]];
  1175.         node[_0x5d82[296]] = node[_0x5d82[186]];
  1176.         node[_0x5d82[297]] = node[_0x5d82[298]];
  1177.         node[_0x5d82[247]] = fieldname;
  1178.       } else {
  1179.         node = new responses(nodeId, text, val, word, fieldname, name, value);
  1180.         nodelist[_0x5d82[18]](node);
  1181.         nodes[nodeId] = node;
  1182.         node[_0x5d82[309]] = text;
  1183.         node[_0x5d82[310]] = val;
  1184.       }
  1185.       /** @type {boolean} */
  1186.       node[_0x5d82[311]] = initialValue;
  1187.       /** @type {boolean} */
  1188.       node[_0x5d82[312]] = attrId;
  1189.       node[_0x5d82[299]] = text;
  1190.       node[_0x5d82[300]] = val;
  1191.       node[_0x5d82[301]] = word;
  1192.       node[_0x5d82[313]] = propValue;
  1193.       /** @type {number} */
  1194.       node[_0x5d82[302]] = timestamp;
  1195.       node[_0x5d82[314]] = listener;
  1196.       if (_0xbc34xad) {
  1197.         node[_0x5d82[315]] = value;
  1198.       }
  1199.       if (name) {
  1200.         node[_0x5d82[316]](name);
  1201.       }
  1202.       if (-1 != nodesOnScreen[_0x5d82[24]](nodeId) && -1 == playerCells[_0x5d82[24]](node)) {
  1203.         document[_0x5d82[98]](_0x5d82[318])[_0x5d82[317]][_0x5d82[123]] = _0x5d82[126];
  1204.         playerCells[_0x5d82[18]](node);
  1205.         if (1 == playerCells[_0x5d82[1]]) {
  1206.           nodeX = node[_0x5d82[185]];
  1207.           nodeY = node[_0x5d82[186]];
  1208.         }
  1209.       }
  1210.     }
  1211.     html = deepDataAndEvents[_0x5d82[239]](regex, true);
  1212.     regex += 4;
  1213.     /** @type {number} */
  1214.     js = 0;
  1215.     for (;js < html;js++) {
  1216.       var index = deepDataAndEvents[_0x5d82[239]](regex, true);
  1217.       regex += 4;
  1218.       node = nodes[index];
  1219.       if (null != node) {
  1220.         node[_0x5d82[294]]();
  1221.       }
  1222.     }
  1223.     if (ua) {
  1224.       if (0 == playerCells[_0x5d82[1]]) {
  1225.         callback(false);
  1226.         success();
  1227.       }
  1228.     }
  1229.   }
  1230.   /**
  1231.    * @return {undefined}
  1232.    */
  1233.   function success() {
  1234.     done[_0x5d82[324]]({
  1235.       type : _0x5d82[319],
  1236.       url : _0x5d82[320],
  1237.       data : _0x5d82[321] + ~~(userScore / 100),
  1238.       /**
  1239.        * @param {?} message
  1240.        * @return {undefined}
  1241.        */
  1242.       success : function(message) {
  1243.         console[_0x5d82[210]](_0x5d82[322] + message);
  1244.         console[_0x5d82[210]](_0x5d82[323] + userScore / 100);
  1245.       }
  1246.     });
  1247.   }
  1248.   /**
  1249.    * @return {undefined}
  1250.    */
  1251.   function animate() {
  1252.     var z0;
  1253.     if (children()) {
  1254.       /** @type {number} */
  1255.       z0 = rawMouseX - g / 2;
  1256.       /** @type {number} */
  1257.       var z1 = rawMouseY - a / 2;
  1258.       if (64 <= z0 * z0 + z1 * z1 && !(0.01 > Math[_0x5d82[325]](strMatchedValue - X) && 0.01 > Math[_0x5d82[325]](h - Y))) {
  1259.         strMatchedValue = X;
  1260.         h = Y;
  1261.         z0 = fn(21);
  1262.         z0[_0x5d82[116]](0, 16);
  1263.         z0[_0x5d82[326]](1, X, true);
  1264.         z0[_0x5d82[326]](9, Y, true);
  1265.         z0[_0x5d82[213]](17, 0, true);
  1266.         forEach(z0);
  1267.       }
  1268.     }
  1269.   }
  1270.   /**
  1271.    * @return {undefined}
  1272.    */
  1273.   function clear() {
  1274.     if (children() && null != userNickName) {
  1275.       var r20 = fn(1 + 2 * userNickName[_0x5d82[1]]);
  1276.       r20[_0x5d82[116]](0, 0);
  1277.       /** @type {number} */
  1278.       var restoreScript = 0;
  1279.       for (;restoreScript < userNickName[_0x5d82[1]];++restoreScript) {
  1280.         r20[_0x5d82[328]](1 + 2 * restoreScript, userNickName[_0x5d82[327]](restoreScript), true);
  1281.       }
  1282.       forEach(r20);
  1283.     }
  1284.   }
  1285.   /**
  1286.    * @param {?} tElement
  1287.    * @return {undefined}
  1288.    */
  1289.   function compile(tElement) {
  1290.     if (children() && (tElement[_0x5d82[1]] < 200 && tElement[_0x5d82[1]] > 0)) {
  1291.       var r20 = fn(2 + 2 * tElement[_0x5d82[1]]);
  1292.       /** @type {number} */
  1293.       var rreturn = 0;
  1294.       r20[_0x5d82[116]](rreturn++, 99);
  1295.       r20[_0x5d82[116]](rreturn++, 0);
  1296.       /** @type {number} */
  1297.       var restoreScript = 0;
  1298.       for (;restoreScript < tElement[_0x5d82[1]];++restoreScript) {
  1299.         r20[_0x5d82[328]](rreturn, tElement[_0x5d82[327]](restoreScript), true);
  1300.         rreturn += 2;
  1301.       }
  1302.       forEach(r20);
  1303.     }
  1304.   }
  1305.   /**
  1306.    * @return {?}
  1307.    */
  1308.   function children() {
  1309.     return null != ws && ws[_0x5d82[220]] == ws[_0x5d82[329]];
  1310.   }
  1311.   /**
  1312.    * @param {number} expectedNumberOfNonCommentArgs
  1313.    * @return {undefined}
  1314.    */
  1315.   function reset(expectedNumberOfNonCommentArgs) {
  1316.     if (children()) {
  1317.       var r20 = fn(1);
  1318.       r20[_0x5d82[116]](0, expectedNumberOfNonCommentArgs);
  1319.       forEach(r20);
  1320.     }
  1321.   }
  1322.   /**
  1323.    * @return {undefined}
  1324.    */
  1325.   function poll() {
  1326.     run();
  1327.     window[_0x5d82[175]](poll);
  1328.   }
  1329.   /**
  1330.    * @return {?}
  1331.    */
  1332.   function synchronize() {
  1333.     var c;
  1334.     c = Math[_0x5d82[330]](a / 1080, g / 1920);
  1335.     return c * zoom;
  1336.   }
  1337.   /**
  1338.    * @return {undefined}
  1339.    */
  1340.   function queue() {
  1341.     if (0 != playerCells[_0x5d82[1]]) {
  1342.       /** @type {number} */
  1343.       var lowestDeltaXY = 0;
  1344.       /** @type {number} */
  1345.       var unlock = 0;
  1346.       for (;unlock < playerCells[_0x5d82[1]];unlock++) {
  1347.         lowestDeltaXY += playerCells[unlock][_0x5d82[298]];
  1348.       }
  1349.       /** @type {number} */
  1350.       lowestDeltaXY = Math[_0x5d82[189]](Math[_0x5d82[331]](64 / lowestDeltaXY, 1), 0.4) * synchronize();
  1351.       /** @type {number} */
  1352.       viewZoom = (9 * viewZoom + lowestDeltaXY) / 10;
  1353.     }
  1354.   }
  1355.   /**
  1356.    * @param {number} x
  1357.    * @param {number} y
  1358.    * @param {number} a
  1359.    * @return {?}
  1360.    */
  1361.   function newCoord(x, y, a) {
  1362.     return x * (1 - a) + y * a;
  1363.   }
  1364.   /**
  1365.    * @return {?}
  1366.    */
  1367.   function value() {
  1368.     var Text = _0x5d82[30];
  1369.     if (this[_0x5d82[205]] <= 3600 && this[_0x5d82[205]] > 1800) {
  1370.       console[_0x5d82[113]] = _0x5d82[334];
  1371.       console[_0x5d82[335]] = _0x5d82[336];
  1372.     } else {
  1373.       if (this[_0x5d82[205]] <= 1800 && this[_0x5d82[205]] > 900) {
  1374.         console[_0x5d82[113]] = _0x5d82[337];
  1375.         console[_0x5d82[335]] = _0x5d82[336];
  1376.       } else {
  1377.         if (this[_0x5d82[205]] <= 900 && this[_0x5d82[205]] > 0) {
  1378.           console[_0x5d82[113]] = _0x5d82[338];
  1379.           console[_0x5d82[335]] = _0x5d82[336];
  1380.         }
  1381.       }
  1382.     }
  1383.     return{
  1384.       Text : Text
  1385.     };
  1386.   }
  1387.   /**
  1388.    * @return {undefined}
  1389.    */
  1390.   function run() {
  1391.     _0xbc34xc1 = countFPS();
  1392.     var x;
  1393.     var t = Date[_0x5d82[245]]();
  1394.     ++cb;
  1395.     timestamp = t;
  1396.     if (0 < playerCells[_0x5d82[1]]) {
  1397.       queue();
  1398.       /** @type {number} */
  1399.       var params = x = 0;
  1400.       /** @type {number} */
  1401.       var i = 0;
  1402.       for (;i < playerCells[_0x5d82[1]];i++) {
  1403.         playerCells[i][_0x5d82[308]]();
  1404.         x += playerCells[i][_0x5d82[185]] / playerCells[_0x5d82[1]];
  1405.         params += playerCells[i][_0x5d82[186]] / playerCells[_0x5d82[1]];
  1406.       }
  1407.       /** @type {number} */
  1408.       posX = x;
  1409.       /** @type {number} */
  1410.       posY = params;
  1411.       posSize = viewZoom;
  1412.       /** @type {number} */
  1413.       nodeX = (nodeX + x) / 2;
  1414.       /** @type {number} */
  1415.       nodeY = (nodeY + params) / 2;
  1416.     } else {
  1417.       /** @type {number} */
  1418.       nodeX = (29 * nodeX + posX) / 30;
  1419.       /** @type {number} */
  1420.       nodeY = (29 * nodeY + posY) / 30;
  1421.       /** @type {number} */
  1422.       viewZoom = (9 * viewZoom + posSize * synchronize()) / 10;
  1423.     }
  1424.     ok();
  1425.     console[_0x5d82[339]](0, 0, g, a);
  1426.     if (xa) {
  1427.       /** @type {number} */
  1428.       console[_0x5d82[340]] = 0.05;
  1429.       if (gotError) {
  1430.         console[_0x5d82[113]] = _0x5d82[341];
  1431.         console[_0x5d82[342]](0, 0, g, a);
  1432.       } else {
  1433.         console[_0x5d82[113]] = _0x5d82[343];
  1434.         console[_0x5d82[342]](0, 0, g, a);
  1435.       }
  1436.       /** @type {number} */
  1437.       console[_0x5d82[340]] = 1;
  1438.     } else {
  1439.       console[_0x5d82[339]](0, 0, g, a);
  1440.       __globalConstructor__();
  1441.     }
  1442.     nodelist[_0x5d82[344]](function(mat0, mat1) {
  1443.       return mat0[_0x5d82[298]] == mat1[_0x5d82[298]] ? mat0[_0x5d82[303]] - mat1[_0x5d82[303]] : mat0[_0x5d82[298]] - mat1[_0x5d82[298]];
  1444.     });
  1445.     console[_0x5d82[345]]();
  1446.     console[_0x5d82[346]](g / 2, a / 2);
  1447.     console[_0x5d82[101]](viewZoom, viewZoom);
  1448.     console[_0x5d82[346]](-nodeX, -nodeY);
  1449.     forceRefresh();
  1450.     /** @type {number} */
  1451.     i = 0;
  1452.     for (;i < Cells[_0x5d82[1]];i++) {
  1453.       Cells[i][_0x5d82[347]](console);
  1454.     }
  1455.     /** @type {number} */
  1456.     i = 0;
  1457.     for (;i < nodelist[_0x5d82[1]];i++) {
  1458.       nodelist[i][_0x5d82[347]](console);
  1459.     }
  1460.     console[_0x5d82[348]]();
  1461.     if (m) {
  1462.       if (m[_0x5d82[96]]) {
  1463.         console[_0x5d82[349]](m, g - m[_0x5d82[96]] - 10, 10);
  1464.       }
  1465.     }
  1466.     if (this[_0x5d82[205]] < 3600) {
  1467.       var buf = _0x5d82[30];
  1468.       var code = Math[_0x5d82[99]](this[_0x5d82[205]] / 60);
  1469.       if (code < 10) {
  1470.         buf += _0x5d82[243];
  1471.       }
  1472.       buf += code + _0x5d82[350];
  1473.       /** @type {number} */
  1474.       var c = this[_0x5d82[205]] % 60;
  1475.       if (c < 10) {
  1476.         buf += _0x5d82[243];
  1477.       }
  1478.       buf += c;
  1479.       console[_0x5d82[113]] = _0x5d82[351];
  1480.       console[_0x5d82[335]] = _0x5d82[352];
  1481.       var logMsg = _0x5d82[353];
  1482.       /** @type {number} */
  1483.       var ext = (g - console[_0x5d82[354]](logMsg)[_0x5d82[96]]) * 0.5;
  1484.       /** @type {number} */
  1485.       var r20 = 30;
  1486.       /** @type {number} */
  1487.       var restoreScript = (g - console[_0x5d82[354]](buf)[_0x5d82[96]]) * 0.5;
  1488.       /** @type {number} */
  1489.       var rreturn = 50;
  1490.       console[_0x5d82[355]](buf, restoreScript, rreturn);
  1491.       console[_0x5d82[355]](logMsg, ext, r20);
  1492.     }
  1493.     var oldconfig = extend();
  1494.     userScore = Math[_0x5d82[330]](userScore, oldconfig);
  1495.     if (0 != userScore) {
  1496.       if (null == _0xbc34x124) {
  1497.         _0xbc34x124 = new cache(24, _0x5d82[356]);
  1498.       }
  1499.       /** @type {number} */
  1500.       var noop = 0.3;
  1501.       _0xbc34x124[_0x5d82[358]](_0x5d82[357] + ~~(userScore / 100));
  1502.       params = _0xbc34x124[_0x5d82[359]]();
  1503.       w = params[_0x5d82[96]];
  1504.       /** @type {number} */
  1505.       console[_0x5d82[340]] = noop;
  1506.       console[_0x5d82[113]] = _0x5d82[360];
  1507.       console[_0x5d82[342]](10, 10, w + 10, 38);
  1508.       /** @type {number} */
  1509.       console[_0x5d82[340]] = 1;
  1510.       console[_0x5d82[349]](params, 15, 14);
  1511.       _0xbc34x124[_0x5d82[358]](_0x5d82[361] + ~~(oldconfig / 100));
  1512.       params = _0xbc34x124[_0x5d82[359]]();
  1513.       w = params[_0x5d82[96]];
  1514.       console[_0x5d82[113]] = _0x5d82[362] + noop;
  1515.       console[_0x5d82[342]](10, 50, w + 10, 38);
  1516.       console[_0x5d82[349]](params, 15, 54);
  1517.     }
  1518.     /** @type {number} */
  1519.     var k = Date[_0x5d82[245]]() - t;
  1520.     if (k > 1E3 / 60) {
  1521.       _0xbc34x123 -= 0.01;
  1522.     } else {
  1523.       if (k < 1E3 / 65) {
  1524.         _0xbc34x123 += 0.01;
  1525.       }
  1526.     }
  1527.     if (0.4 > _0xbc34x123) {
  1528.       /** @type {number} */
  1529.       _0xbc34x123 = 0.4;
  1530.     }
  1531.     if (1 < _0xbc34x123) {
  1532.       /** @type {number} */
  1533.       _0xbc34x123 = 1;
  1534.     }
  1535.   }
  1536.   /**
  1537.    * @return {undefined}
  1538.    */
  1539.   function add() {
  1540.     if (!(m && m[_0x5d82[96]]) || (!connected || hasOverlay)) {
  1541.       return;
  1542.     }
  1543.     console[_0x5d82[345]]();
  1544.     console[_0x5d82[106]]();
  1545.     console[_0x5d82[113]] = _0x5d82[363];
  1546.     /** @type {number} */
  1547.     var b = isShortNotation ? 150 : 200;
  1548.     /** @type {number} */
  1549.     console[_0x5d82[110]] = 1.5;
  1550.     /** @type {number} */
  1551.     var e = g - b - 10;
  1552.     /** @type {number} */
  1553.     var later = a - b - 10;
  1554.     /** @type {number} */
  1555.     var englishyPredicate = g - b / 2 - 10;
  1556.     /** @type {number} */
  1557.     var millis = a - b / 2 - 10;
  1558.     console[_0x5d82[364]](e, later, b, b);
  1559.     console[_0x5d82[114]]();
  1560.     console[_0x5d82[335]] = _0x5d82[336];
  1561.     console[_0x5d82[113]] = gotError ? _0x5d82[365] : _0x5d82[366];
  1562.     var x = _0x5d82[367];
  1563.     console[_0x5d82[355]](x, e, later - 5);
  1564.     console[_0x5d82[113]] = _0xbc34xc1 >= 40 ? _0x5d82[334] : _0xbc34xc1 >= 20 ? _0x5d82[337] : _0x5d82[338];
  1565.     console[_0x5d82[355]](~~_0xbc34xc1, e + console[_0x5d82[354]](x)[_0x5d82[96]], later - 5);
  1566.     var sign = console[_0x5d82[354]](x + ~~_0xbc34xc1)[_0x5d82[96]];
  1567.     console[_0x5d82[113]] = gotError ? _0x5d82[365] : _0x5d82[366];
  1568.     var message = _0x5d82[368] + ~~nodeX + _0x5d82[369];
  1569.     console[_0x5d82[355]](message, e + sign + 5, later - 5);
  1570.     console[_0x5d82[355]](_0x5d82[370] + ~~nodeY, e + sign + 5 + console[_0x5d82[354]](message)[_0x5d82[96]], later - 5);
  1571.     var seconds = this[_0x5d82[205]];
  1572.     /** @type {number} */
  1573.     var minutes = parseInt(seconds / 3600);
  1574.     /** @type {number} */
  1575.     var hours = parseInt((seconds - minutes * 3600) / 60);
  1576.     var frames = Math[_0x5d82[99]](seconds - (minutes * 3600 + hours * 60));
  1577.     var logMsg = (minutes < 10 ? _0x5d82[371] + minutes : minutes) + _0x5d82[372] + (hours < 10 ? _0x5d82[243] + hours : hours) + _0x5d82[373] + (frames < 10 ? _0x5d82[243] + frames : frames) + _0x5d82[374];
  1578.     console[_0x5d82[335]] = _0x5d82[336];
  1579.     console[_0x5d82[113]] = gotError ? _0x5d82[365] : _0x5d82[366];
  1580.     var formattedMessage = _0x5d82[375];
  1581.     console[_0x5d82[355]](formattedMessage, e, later - 25);
  1582.     value();
  1583.     console[_0x5d82[355]](logMsg, e + -28 + console[_0x5d82[354]](logMsg)[_0x5d82[96]], later - 25);
  1584.     console[_0x5d82[109]]();
  1585.     console[_0x5d82[106]]();
  1586.     /** @type {number} */
  1587.     console[_0x5d82[110]] = 1.25;
  1588.     /** @type {number} */
  1589.     var _0xbc34xe4 = (Math[_0x5d82[325]](rightPos) + Math[_0x5d82[325]](leftPos)) / 2;
  1590.     /** @type {number} */
  1591.     var c = (Math[_0x5d82[325]](topPos) + Math[_0x5d82[325]](bottomPos)) / 2;
  1592.     /** @type {number} */
  1593.     var udataCur = nodeX / _0xbc34xe4 * b / 2 + englishyPredicate;
  1594.     /** @type {number} */
  1595.     var newMillis = nodeY / c * b / 2 + millis;
  1596.     /** @type {number} */
  1597.     var error = bh = b;
  1598.     /** @type {number} */
  1599.     var msg = -1;
  1600.     /** @type {number} */
  1601.     var testEnvironmentArg = -1;
  1602.     /** @type {number} */
  1603.     message = 0;
  1604.     for (;message <= error;message += 40) {
  1605.       if (message != error) {
  1606.         /** @type {number} */
  1607.         var actual = 0.5 + message + e;
  1608.         /** @type {number} */
  1609.         var expected = later;
  1610.         if (equals(actual, expected, actual + 40, expected + bh, udataCur, newMillis)) {
  1611.           /** @type {number} */
  1612.           msg = actual;
  1613.         }
  1614.         if (message == 0) {
  1615.           continue;
  1616.         }
  1617.         console[_0x5d82[107]](0.5 + message + e, later);
  1618.         console[_0x5d82[108]](0.5 + message + e, bh + later);
  1619.       }
  1620.       console[_0x5d82[113]] = _0x5d82[248];
  1621.       console[_0x5d82[335]] = _0x5d82[376];
  1622.       console[_0x5d82[377]] = _0x5d82[378];
  1623.       console[_0x5d82[111]] = _0x5d82[248];
  1624.       /** @type {number} */
  1625.       console[_0x5d82[110]] = 1;
  1626.       /** @type {number} */
  1627.       console[_0x5d82[340]] = 0.35;
  1628.       /** @type {number} */
  1629.       var unlock = 0;
  1630.       for (;unlock < 5;unlock++) {
  1631.         console[_0x5d82[355]](String[_0x5d82[231]](unlock + 65) + message / 40, 0.5 + message + e - 20, later + 25.5 + unlock * 40);
  1632.       }
  1633.     }
  1634.     /** @type {number} */
  1635.     var c1 = 0;
  1636.     for (;c1 <= bh;c1 += 40) {
  1637.       if (c1 != bh) {
  1638.         /** @type {number} */
  1639.         actual = e;
  1640.         /** @type {number} */
  1641.         expected = 0.5 + c1 + later;
  1642.         if (equals(actual, expected, actual + error, expected + 40, udataCur, newMillis)) {
  1643.           /** @type {number} */
  1644.           testEnvironmentArg = expected;
  1645.         }
  1646.         if (c1 == 0) {
  1647.           continue;
  1648.         }
  1649.         console[_0x5d82[107]](e, 0.5 + c1 + later);
  1650.         console[_0x5d82[108]](error + e, 0.5 + c1 + later);
  1651.       }
  1652.     }
  1653.     if (playerCells[_0x5d82[1]] > 0 && (msg > -1 && testEnvironmentArg > -1)) {
  1654.       console[_0x5d82[113]] = _0x5d82[379];
  1655.       /** @type {number} */
  1656.       console[_0x5d82[340]] = 0.3;
  1657.       console[_0x5d82[342]](msg, testEnvironmentArg, 40, 40);
  1658.     }
  1659.     /** @type {number} */
  1660.     console[_0x5d82[340]] = 1;
  1661.     console[_0x5d82[111]] = _0x5d82[380];
  1662.     console[_0x5d82[112]]();
  1663.     console[_0x5d82[109]]();
  1664.     /** @type {number} */
  1665.     unlock = 0;
  1666.     for (;unlock < playerCells[_0x5d82[1]];unlock++) {
  1667.       var cache = playerCells[unlock];
  1668.       /** @type {number} */
  1669.       _0xbc34xe4 = (Math[_0x5d82[325]](rightPos) + Math[_0x5d82[325]](leftPos)) / 2;
  1670.       /** @type {number} */
  1671.       c = (Math[_0x5d82[325]](topPos) + Math[_0x5d82[325]](bottomPos)) / 2;
  1672.       /** @type {number} */
  1673.       message = cache[_0x5d82[295]] / _0xbc34xe4;
  1674.       /** @type {number} */
  1675.       c1 = cache[_0x5d82[296]] / c;
  1676.       /** @type {number} */
  1677.       message = message * b / 2 + englishyPredicate;
  1678.       /** @type {number} */
  1679.       c1 = c1 * b / 2 + millis;
  1680.       var r20 = Math[_0x5d82[330]](2, cache[_0x5d82[298]] / (b / 2));
  1681.       console[_0x5d82[113]] = cache[_0x5d82[247]];
  1682.       if (unlock == 0) {
  1683.         console[_0x5d82[335]] = _0x5d82[381] + (14 + r20) + _0x5d82[382];
  1684.         var _0xbc34xec = console[_0x5d82[354]](cache[_0x5d82[252]]);
  1685.         console[_0x5d82[383]] = _0x5d82[384];
  1686.       }
  1687.       console[_0x5d82[106]]();
  1688.       console[_0x5d82[111]] = _0x5d82[384];
  1689.       /** @type {number} */
  1690.       console[_0x5d82[110]] = 1;
  1691.       /** @type {number} */
  1692.       console[_0x5d82[340]] = 1;
  1693.       console[_0x5d82[385]](message, c1, r20, 0, 2 * Math[_0x5d82[48]]);
  1694.       console[_0x5d82[112]]();
  1695.       console[_0x5d82[114]]();
  1696.       console[_0x5d82[109]]();
  1697.     }
  1698.     console[_0x5d82[348]]();
  1699.   }
  1700.   /**
  1701.    * @param {number} actual
  1702.    * @param {number} a
  1703.    * @param {number} other
  1704.    * @param {number} z
  1705.    * @param {number} value
  1706.    * @param {number} c
  1707.    * @return {?}
  1708.    */
  1709.   function equals(actual, a, other, z, value, c) {
  1710.     if (actual <= value && (value <= other && (a <= c && c <= z))) {
  1711.       return true;
  1712.     }
  1713.     return false;
  1714.   }
  1715.   /**
  1716.    * @return {undefined}
  1717.    */
  1718.   function forceRefresh() {
  1719.     var tag = Math[_0x5d82[386]](leftPos) + 40;
  1720.     var x = Math[_0x5d82[386]](topPos) + 40;
  1721.     var prevSources = _0x5d82[388][_0x5d82[387]](_0x5d82[30]);
  1722.     /** @type {number} */
  1723.     var a0 = (Math[_0x5d82[386]](rightPos) - 40 - tag) / 5;
  1724.     /** @type {number} */
  1725.     var barWidth = (Math[_0x5d82[386]](bottomPos) - 40 - x) / 5;
  1726.     console[_0x5d82[345]]();
  1727.     console[_0x5d82[106]]();
  1728.     /** @type {number} */
  1729.     console[_0x5d82[340]] = 0.2;
  1730.     console[_0x5d82[377]] = _0x5d82[378];
  1731.     console[_0x5d82[389]] = _0x5d82[390];
  1732.     console[_0x5d82[335]] = 0.47 * a0 + _0x5d82[382];
  1733.     console[_0x5d82[113]] = _0x5d82[391];
  1734.     /** @type {number} */
  1735.     var i = 0;
  1736.     for (;5 > i;i++) {
  1737.       /** @type {number} */
  1738.       var b5 = 0;
  1739.       for (;5 > b5;b5++) {
  1740.         console[_0x5d82[355]](prevSources[i] + (b5 + 1), tag + a0 * b5 + a0 / 2, x + barWidth * i + barWidth / 2);
  1741.       }
  1742.     }
  1743.     /** @type {number} */
  1744.     console[_0x5d82[340]] = 1;
  1745.     /** @type {number} */
  1746.     console[_0x5d82[110]] = 100;
  1747.     console[_0x5d82[111]] = gotError ? _0x5d82[392] : _0x5d82[393];
  1748.     /** @type {number} */
  1749.     i = 0;
  1750.     for (;5 > i;i++) {
  1751.       /** @type {number} */
  1752.       b5 = 0;
  1753.       for (;5 > b5;b5++) {
  1754.         console[_0x5d82[394]](tag + a0 * b5, x + barWidth * i, a0, barWidth);
  1755.       }
  1756.     }
  1757.     console[_0x5d82[112]]();
  1758.     console[_0x5d82[348]]();
  1759.   }
  1760.   /**
  1761.    * @param {number} a
  1762.    * @param {number} arg
  1763.    * @param {?} x
  1764.    * @param {number} libraryName
  1765.    * @return {?}
  1766.    */
  1767.   function require(a, arg, x, libraryName) {
  1768.     /** @type {number} */
  1769.     var rad = libraryName * Math[_0x5d82[48]] / 180;
  1770.     var moveX = Math[_0x5d82[395]](a + x * Math[_0x5d82[49]](rad));
  1771.     var moveY = Math[_0x5d82[395]](arg + x * Math[_0x5d82[50]](rad));
  1772.     return{
  1773.       "x" : moveX,
  1774.       "y" : moveY
  1775.     };
  1776.   }
  1777.   /**
  1778.    * @return {undefined}
  1779.    */
  1780.   function __globalConstructor__() {
  1781.     if (!skipSeen) {
  1782.       console[_0x5d82[113]] = gotError ? _0x5d82[396] : _0x5d82[397];
  1783.       console[_0x5d82[342]](0, 0, g, a);
  1784.       console[_0x5d82[345]]();
  1785.       console[_0x5d82[346]](g / 2, a / 2);
  1786.       console[_0x5d82[101]](viewZoom, viewZoom);
  1787.       console[_0x5d82[346]](-nodeX, -nodeY);
  1788.       console[_0x5d82[111]] = _0x5d82[398];
  1789.       /** @type {number} */
  1790.       console[_0x5d82[110]] = 20;
  1791.       console[_0x5d82[106]]();
  1792.       console[_0x5d82[107]](leftPos - 10, topPos - 10);
  1793.       console[_0x5d82[108]](rightPos + 10, topPos - 10);
  1794.       console[_0x5d82[108]](rightPos + 10, bottomPos + 10);
  1795.       console[_0x5d82[108]](leftPos - 10, bottomPos + 10);
  1796.       console[_0x5d82[108]](leftPos - 10, topPos - 10);
  1797.       console[_0x5d82[112]]();
  1798.       console[_0x5d82[399]]();
  1799.       console[_0x5d82[400]](1, 0, 0, 1, 0, 0);
  1800.       console[_0x5d82[101]](viewZoom, viewZoom);
  1801.       /** @type {number} */
  1802.       var normG = g / viewZoom;
  1803.       /** @type {number} */
  1804.       var pre = a / viewZoom;
  1805.       /** @type {number} */
  1806.       var x = ~~(-0.5 + (-(nodeX + show[_0x5d82[241]]) + normG / 2) % 153);
  1807.       /** @type {number} */
  1808.       var result = ~~(-0.5 + (-(nodeY + show[_0x5d82[242]]) + pre / 2) % 207);
  1809.       console[_0x5d82[113]] = gotError ? _0x5d82[401] : _0x5d82[396];
  1810.       console[_0x5d82[342]](x, result, normG + Math[_0x5d82[325]](x), pre + Math[_0x5d82[325]](result));
  1811.       console[_0x5d82[348]]();
  1812.     } else {
  1813.       console[_0x5d82[113]] = gotError ? _0x5d82[401] : _0x5d82[396];
  1814.       console[_0x5d82[342]](0, 0, g, a);
  1815.     }
  1816.   }
  1817.   /**
  1818.    * @return {?}
  1819.    */
  1820.   function extend() {
  1821.     /** @type {number} */
  1822.     var obj = 0;
  1823.     /** @type {number} */
  1824.     var unlock = 0;
  1825.     for (;unlock < playerCells[_0x5d82[1]];unlock++) {
  1826.       obj += playerCells[unlock][_0x5d82[301]] * playerCells[unlock][_0x5d82[301]];
  1827.     }
  1828.     return obj;
  1829.   }
  1830.   /**
  1831.    * @return {undefined}
  1832.    */
  1833.   function close() {
  1834.     /** @type {null} */
  1835.     m = null;
  1836.     if (null != teamScores || 0 != leaderBoard[_0x5d82[1]]) {
  1837.       if (null != teamScores || showName) {
  1838.         m = document[_0x5d82[402]](_0x5d82[97]);
  1839.         var cache = m[_0x5d82[103]](_0x5d82[102]);
  1840.         /** @type {number} */
  1841.         var m32 = 60;
  1842.         /** @type {number} */
  1843.         m32 = null == teamScores ? m32 + 24 * leaderBoard[_0x5d82[1]] : m32 + 180;
  1844.         /** @type {number} */
  1845.         var r20 = Math[_0x5d82[331]](200, 0.3 * g) / 200;
  1846.         /** @type {number} */
  1847.         m[_0x5d82[96]] = 200 * r20;
  1848.         /** @type {number} */
  1849.         m[_0x5d82[100]] = m32 * r20;
  1850.         cache[_0x5d82[101]](r20, r20);
  1851.         /** @type {number} */
  1852.         cache[_0x5d82[340]] = gotError ? 0.5 : 0.3;
  1853.         cache[_0x5d82[113]] = _0x5d82[360];
  1854.         cache[_0x5d82[342]](0, 0, 200, m32);
  1855.         /** @type {number} */
  1856.         cache[_0x5d82[340]] = 1;
  1857.         cache[_0x5d82[113]] = _0x5d82[356];
  1858.         var data = _0x5d82[403];
  1859.         cache[_0x5d82[335]] = _0x5d82[352];
  1860.         cache[_0x5d82[355]](data, 100 - cache[_0x5d82[354]](data)[_0x5d82[96]] / 2, 40);
  1861.         /** @type {number} */
  1862.         cache[_0x5d82[404]] = 0;
  1863.         var $data;
  1864.         if (null == teamScores) {
  1865.           cache[_0x5d82[335]] = _0x5d82[405];
  1866.           /** @type {number} */
  1867.           $data = 0;
  1868.           for (;$data < leaderBoard[_0x5d82[1]];++$data) {
  1869.             data = leaderBoard[$data][_0x5d82[252]] || _0x5d82[406];
  1870.             if (!showName) {
  1871.               data = _0x5d82[406];
  1872.             }
  1873.             if (-1 != nodesOnScreen[_0x5d82[24]](leaderBoard[$data][_0x5d82[303]])) {
  1874.               if (playerCells[0][_0x5d82[252]]) {
  1875.                 data = playerCells[0][_0x5d82[252]];
  1876.               }
  1877.               cache[_0x5d82[113]] = _0x5d82[407];
  1878.               if (!noRanking) {
  1879.                 data = +($data + 1) + _0x5d82[408] + data;
  1880.               }
  1881.               cache[_0x5d82[355]](data, 100 - cache[_0x5d82[354]](data)[_0x5d82[96]] / 2, 70 + 24 * $data);
  1882.             } else {
  1883.               cache[_0x5d82[113]] = set_Team_color(data);
  1884.               if (!noRanking) {
  1885.                 data = $data + 1 + _0x5d82[408] + data;
  1886.               }
  1887.               cache[_0x5d82[355]](data, 100 - cache[_0x5d82[354]](data)[_0x5d82[96]] / 2, 70 + 24 * $data);
  1888.             }
  1889.           }
  1890.         } else {
  1891.           /** @type {number} */
  1892.           $data = data = 0;
  1893.           for (;$data < teamScores[_0x5d82[1]];++$data) {
  1894.             /** @type {number} */
  1895.             var transformed = data + teamScores[$data] * Math[_0x5d82[48]] * 2;
  1896.             cache[_0x5d82[113]] = teamColor[$data + 1];
  1897.             cache[_0x5d82[106]]();
  1898.             cache[_0x5d82[107]](100, 140);
  1899.             cache[_0x5d82[385]](100, 140, 80, data, transformed, false);
  1900.             cache[_0x5d82[114]]();
  1901.             /** @type {number} */
  1902.             data = transformed;
  1903.           }
  1904.         }
  1905.       }
  1906.     }
  1907.   }
  1908.   /**
  1909.    * @param {?} vars
  1910.    * @param {?} videoid
  1911.    * @param {?} dataAndEvents
  1912.    * @param {?} output
  1913.    * @param {?} cb
  1914.    * @param {?} deepDataAndEvents
  1915.    * @param {?} ignoreMethodDoesntExist
  1916.    * @return {undefined}
  1917.    */
  1918.   function responses(vars, videoid, dataAndEvents, output, cb, deepDataAndEvents, ignoreMethodDoesntExist) {
  1919.     this[_0x5d82[303]] = vars;
  1920.     this[_0x5d82[295]] = this[_0x5d82[185]] = videoid;
  1921.     this[_0x5d82[296]] = this[_0x5d82[186]] = dataAndEvents;
  1922.     this[_0x5d82[297]] = this[_0x5d82[298]] = output;
  1923.     this[_0x5d82[247]] = cb;
  1924.     /** @type {Array} */
  1925.     this[_0x5d82[409]] = [];
  1926.     /** @type {Array} */
  1927.     this[_0x5d82[410]] = [];
  1928.     this[_0x5d82[316]](deepDataAndEvents);
  1929.     this[_0x5d82[315]] = ignoreMethodDoesntExist;
  1930.   }
  1931.   /**
  1932.    * @param {?} aValue
  1933.    * @param {?} toImage
  1934.    * @param {?} o
  1935.    * @param {?} mid
  1936.    * @return {undefined}
  1937.    */
  1938.   function cache(aValue, toImage, o, mid) {
  1939.     if (aValue) {
  1940.       this[_0x5d82[411]] = aValue;
  1941.     }
  1942.     if (toImage) {
  1943.       this[_0x5d82[412]] = toImage;
  1944.     }
  1945.     /** @type {boolean} */
  1946.     this[_0x5d82[413]] = !!o;
  1947.     if (mid) {
  1948.       this[_0x5d82[414]] = mid;
  1949.     }
  1950.   }
  1951.   /**
  1952.    * @return {undefined}
  1953.    */
  1954.   function hidden() {
  1955.     done(_0x5d82[443])[_0x5d82[124]](_0x5d82[247], gotError ? _0x5d82[248] : _0x5d82[384]);
  1956.   }
  1957.   /** @type {number} */
  1958.   var author = 746;
  1959.   var text = _0x5d82[0] + author;
  1960.   /**
  1961.    * @param {?} textAlt
  1962.    * @return {undefined}
  1963.    */
  1964.   i[_0x5d82[3]] = function(textAlt) {
  1965.     if (textAlt != gameMode) {
  1966.       text = textAlt;
  1967.       gameMode = done(_0x5d82[8])[_0x5d82[7]](_0x5d82[6])[_0x5d82[5]](_0x5d82[4]);
  1968.       next();
  1969.     }
  1970.   };
  1971.   /**
  1972.    * @param {?} dataAndEvents
  1973.    * @return {undefined}
  1974.    */
  1975.   i[_0x5d82[9]] = function(dataAndEvents) {
  1976.     /** @type {boolean} */
  1977.     grid = !dataAndEvents;
  1978.   };
  1979.   /**
  1980.    * @param {?} dataAndEvents
  1981.    * @return {undefined}
  1982.    */
  1983.   i[_0x5d82[10]] = function(dataAndEvents) {
  1984.     hideChat = dataAndEvents;
  1985.     if (dataAndEvents) {
  1986.       done(_0x5d82[12])[_0x5d82[11]]();
  1987.     } else {
  1988.       done(_0x5d82[12])[_0x5d82[13]]();
  1989.     }
  1990.   };
  1991.   /**
  1992.    * @param {?} err
  1993.    * @return {undefined}
  1994.    */
  1995.   i[_0x5d82[14]] = function(err) {
  1996.     error = err;
  1997.   };
  1998.   /**
  1999.    * @param {?} err
  2000.    * @return {undefined}
  2001.    */
  2002.   i[_0x5d82[15]] = function(err) {
  2003.     /** @type {boolean} */
  2004.     connected = !err;
  2005.   };
  2006.   /**
  2007.    * @param {?} _$timeout_
  2008.    * @return {undefined}
  2009.    */
  2010.   i[_0x5d82[16]] = function(_$timeout_) {
  2011.     $timeout = _$timeout_;
  2012.   };
  2013.   /**
  2014.    * @param {?} deepDataAndEvents
  2015.    * @return {undefined}
  2016.    */
  2017.   i[_0x5d82[17]] = function(deepDataAndEvents) {
  2018.     udataCur[_0x5d82[18]](deepDataAndEvents);
  2019.   };
  2020.   /**
  2021.    * @param {?} deepDataAndEvents
  2022.    * @return {undefined}
  2023.    */
  2024.   i[_0x5d82[19]] = function(deepDataAndEvents) {
  2025.     isUndefinedOrNull(udataCur, deepDataAndEvents);
  2026.   };
  2027.   /**
  2028.    * @param {?} v
  2029.    * @param {?} deepDataAndEvents
  2030.    * @return {undefined}
  2031.    */
  2032.   i[_0x5d82[20]] = function(v, deepDataAndEvents) {
  2033.     done(_0x5d82[21])[_0x5d82[13]]();
  2034.     done(_0x5d82[23])[_0x5d82[22]](deepDataAndEvents);
  2035.     if (udataCur[_0x5d82[24]](v) > -1) {
  2036.       done(_0x5d82[26])[_0x5d82[22]](_0x5d82[25]);
  2037.     } else {
  2038.       done(_0x5d82[26])[_0x5d82[22]](_0x5d82[27]);
  2039.     }
  2040.     done(_0x5d82[26])[_0x5d82[29]](function() {
  2041.       if (udataCur[_0x5d82[24]](v) > -1) {
  2042.         unblock(v);
  2043.       } else {
  2044.         block(v);
  2045.       }
  2046.       if (udataCur[_0x5d82[24]](v) > -1) {
  2047.         done(_0x5d82[26])[_0x5d82[22]](_0x5d82[25]);
  2048.       } else {
  2049.         done(_0x5d82[26])[_0x5d82[22]](_0x5d82[27]);
  2050.       }
  2051.       done(_0x5d82[26])[_0x5d82[28]]();
  2052.     });
  2053.     if (admin != _0x5d82[30]) {
  2054.       done(_0x5d82[35])[_0x5d82[29]](function() {
  2055.         compile(_0x5d82[31] + v + _0x5d82[32] + parseInt(done(_0x5d82[34])[_0x5d82[33]]()));
  2056.       });
  2057.       done(_0x5d82[36])[_0x5d82[13]]();
  2058.     } else {
  2059.       done(_0x5d82[36])[_0x5d82[11]]();
  2060.     }
  2061.   };
  2062.   /**
  2063.    * @param {?} vec
  2064.    * @return {undefined}
  2065.    */
  2066.   i[_0x5d82[37]] = function(vec) {
  2067.     dest = vec;
  2068.   };
  2069.   var _0xbc34xd;
  2070.   var _0xbc34xe;
  2071.   /** @type {boolean} */
  2072.   var eventCaptureSupported = _0x5d82[38] in document;
  2073.   /** @type {Array} */
  2074.   var node = [];
  2075.   /** @type {number} */
  2076.   var returnElement = -1;
  2077.   var element = new Vector2(0, 0);
  2078.   var type = new Vector2(0, 0);
  2079.   var listeners = new Vector2(0, 0);
  2080.   /** @type {Image} */
  2081.   var profile_img = new Image;
  2082.   profile_img[_0x5d82[39]] = _0x5d82[40];
  2083.   /** @type {Image} */
  2084.   var im = new Image;
  2085.   im[_0x5d82[39]] = _0x5d82[41];
  2086.   /** @type {Image} */
  2087.   var imgObj = new Image;
  2088.   imgObj[_0x5d82[39]] = _0x5d82[42];
  2089.   /** @type {Image} */
  2090.   var hitStarImageObject = new Image;
  2091.   hitStarImageObject[_0x5d82[39]] = _0x5d82[43];
  2092.   /** @type {Image} */
  2093.   var returnedImage = new Image;
  2094.   returnedImage[_0x5d82[39]] = _0x5d82[44];
  2095.   /** @type {Image} */
  2096.   var bee = new Image;
  2097.   bee[_0x5d82[39]] = _0x5d82[45];
  2098.   /** @type {Image} */
  2099.   var new_img = new Image;
  2100.   new_img[_0x5d82[39]] = _0x5d82[46];
  2101.   /** @type {Image} */
  2102.   var altImgObj = new Image;
  2103.   altImgObj[_0x5d82[39]] = _0x5d82[47];
  2104.   /** @type {Array} */
  2105.   var _0xbc34x1d = [];
  2106.   /** @type {boolean} */
  2107.   var error = false;
  2108.   /** @type {boolean} */
  2109.   var dest = false;
  2110.   /** @type {boolean} */
  2111.   var _0xbc34x20 = true;
  2112.   /** @type {boolean} */
  2113.   var _0xbc34x21 = true;
  2114.   /** @type {boolean} */
  2115.   var stack = false;
  2116.   /** @type {boolean} */
  2117.   var _0xbc34x23 = false;
  2118.   var $timeout = _0x5d82[30];
  2119.   var _0xbc34x25 = _0x5d82[30];
  2120.   /** @type {boolean} */
  2121.   var _0xbc34x26 = false;
  2122.   /** @type {boolean} */
  2123.   var _0xbc34x27 = true;
  2124.   /** @type {boolean} */
  2125.   var connected = true;
  2126.   /** @type {Array} */
  2127.   var udataCur = [];
  2128.   var _0xbc34x2a = _0x5d82[30];
  2129.   /** @type {boolean} */
  2130.   var _0xbc34x2b = false;
  2131.   /** @type {boolean} */
  2132.   var _0xbc34x2c = true;
  2133.   /** @type {boolean} */
  2134.   var _0xbc34x2d = false;
  2135.   /** @type {boolean} */
  2136.   var _0xbc34x2e = false;
  2137.   /** @type {boolean} */
  2138.   var _0xbc34x2f = true;
  2139.   /** @type {boolean} */
  2140.   var _0xbc34x30 = true;
  2141.   /** @type {boolean} */
  2142.   var _0xbc34x31 = false;
  2143.   /** @type {number} */
  2144.   var _0xbc34x32 = 0;
  2145.   /** @type {Array} */
  2146.   var mat = [];
  2147.   /** @type {number} */
  2148.   var row = 0;
  2149.   for (;row < 720;row += 2) {
  2150.     /** @type {number} */
  2151.     mat[row] = Math[_0x5d82[49]](row * Math[_0x5d82[48]] / 180) * 10;
  2152.     /** @type {number} */
  2153.     mat[row + 1] = Math[_0x5d82[50]](row * Math[_0x5d82[48]] / 180) * 10;
  2154.   }
  2155.   /** @type {Array} */
  2156.   var calc_y = [_0x5d82[51], _0x5d82[52], _0x5d82[53], _0x5d82[54], _0x5d82[55]];
  2157.   /** @type {Array} */
  2158.   var calc_x = [_0x5d82[30]];
  2159.   /** @type {Array} */
  2160.   var rs = [_0x5d82[56], _0x5d82[57], _0x5d82[58], _0x5d82[59], _0x5d82[52], _0x5d82[60], _0x5d82[61], _0x5d82[62], _0x5d82[63]];
  2161.   /** @type {boolean} */
  2162.   var gotError = false;
  2163.   /** @type {boolean} */
  2164.   var skipSeen = true;
  2165.   /** @type {boolean} */
  2166.   var _0xbc34x3a = false;
  2167.   var show = {
  2168.     mapWidth : 0,
  2169.     mapHeight : 0,
  2170.     minx : 0,
  2171.     miny : 0,
  2172.     cameraX : 0,
  2173.     cameraY : 0,
  2174.     ldeathX : null,
  2175.     ldeathY : null,
  2176.     show : true
  2177.   };
  2178.   var packet = {
  2179.     last : 0,
  2180.     data : {}
  2181.   };
  2182.   /** @type {boolean} */
  2183.   var object = false;
  2184.   /** @type {boolean} */
  2185.   var memory = false;
  2186.   /** @type {boolean} */
  2187.   stack = false;
  2188.   /** @type {boolean} */
  2189.   var _0xbc34x3f = false;
  2190.   var ppos = {
  2191.     enabled : false,
  2192.     botmodes : [_0x5d82[64], _0x5d82[65]],
  2193.     activemode : 0
  2194.   };
  2195.   /** @type {Array} */
  2196.   var _0xbc34x41 = [];
  2197.   var deferred = {
  2198.     32 : _0x5d82[66],
  2199.     81 : _0x5d82[67],
  2200.     87 : _0x5d82[68],
  2201.     27 : _0x5d82[69],
  2202.     67 : _0x5d82[70],
  2203.     88 : _0x5d82[71],
  2204.     86 : _0x5d82[72],
  2205.     90 : _0x5d82[73],
  2206.     68 : _0x5d82[74],
  2207.     65 : _0x5d82[75],
  2208.     9 : _0x5d82[76],
  2209.     13 : _0x5d82[77]
  2210.   };
  2211.   var o = {
  2212.     presets : {
  2213.       hd : {
  2214.         canvasScale : 1,
  2215.         minFps : 25,
  2216.         maxFps : 45,
  2217.         name : _0x5d82[78]
  2218.       },
  2219.       hi : {
  2220.         canvasScale : 1,
  2221.         minFps : 25,
  2222.         maxFps : 45,
  2223.         name : _0x5d82[79]
  2224.       },
  2225.       med : {
  2226.         canvasScale : 0.8,
  2227.         minFps : 25,
  2228.         maxFps : 45,
  2229.         name : _0x5d82[80]
  2230.       },
  2231.       low : {
  2232.         canvasScale : 0.6,
  2233.         minFps : 30,
  2234.         maxFps : 45,
  2235.         name : _0x5d82[81]
  2236.       }
  2237.     },
  2238.     selected : _0x5d82[82],
  2239.     default : _0x5d82[82],
  2240.     auto : true,
  2241.     /**
  2242.      * @return {undefined}
  2243.      */
  2244.     refresh : function() {
  2245.       ready(o[_0x5d82[85]][o[_0x5d82[84]]][_0x5d82[83]]);
  2246.     },
  2247.     lowerFpsCounter : 0,
  2248.     higherFpsCounter : 0,
  2249.     /**
  2250.      * @return {?}
  2251.      */
  2252.     fpsAutoAdaptation : function() {
  2253.       if (!o[_0x5d82[86]]) {
  2254.         return false;
  2255.       }
  2256.       var current = o[_0x5d82[85]][o[_0x5d82[84]]];
  2257.       if (o[_0x5d82[87]] < current[_0x5d82[88]] && o[_0x5d82[87]] > 0) {
  2258.         if (o[_0x5d82[89]] > 5) {
  2259.           /** @type {number} */
  2260.           o[_0x5d82[89]] = 0;
  2261.           var m = Object[_0x5d82[90]](o[_0x5d82[85]]);
  2262.           var i = m[_0x5d82[24]](o[_0x5d82[84]]) + 1;
  2263.           if (m[i]) {
  2264.             o[_0x5d82[84]] = m[i];
  2265.             o[_0x5d82[91]]();
  2266.           }
  2267.         } else {
  2268.           o[_0x5d82[89]]++;
  2269.         }
  2270.         return true;
  2271.       } else {
  2272.         /** @type {number} */
  2273.         o[_0x5d82[89]] = 0;
  2274.       }
  2275.       if (o[_0x5d82[87]] > current[_0x5d82[92]]) {
  2276.         if (o[_0x5d82[93]] > 5) {
  2277.           /** @type {number} */
  2278.           o[_0x5d82[93]] = 0;
  2279.           m = Object[_0x5d82[90]](o[_0x5d82[85]]);
  2280.           /** @type {number} */
  2281.           i = m[_0x5d82[24]](o[_0x5d82[84]]) - 1;
  2282.           if (m[i]) {
  2283.             o[_0x5d82[84]] = m[i];
  2284.             o[_0x5d82[91]]();
  2285.           }
  2286.         } else {
  2287.           o[_0x5d82[93]]++;
  2288.         }
  2289.       } else {
  2290.         /** @type {number} */
  2291.         o[_0x5d82[93]] = 0;
  2292.       }
  2293.     },
  2294.     fps : 0
  2295.   };
  2296.   /**
  2297.    * @param {?} wait
  2298.    * @return {undefined}
  2299.    */
  2300.   var ready = function(wait) {
  2301.     g = i[_0x5d82[94]];
  2302.     a = i[_0x5d82[95]];
  2303.     document[_0x5d82[98]](_0x5d82[97])[_0x5d82[96]] = Math[_0x5d82[99]](i[_0x5d82[94]] * wait);
  2304.     document[_0x5d82[98]](_0x5d82[97])[_0x5d82[100]] = Math[_0x5d82[99]](i[_0x5d82[95]] * wait);
  2305.     document[_0x5d82[98]](_0x5d82[97])[_0x5d82[103]](_0x5d82[102])[_0x5d82[101]](wait, wait);
  2306.     window[_0x5d82[104]](0, 0);
  2307.     run();
  2308.   };
  2309.   var isShortNotation = _0x5d82[118] in i && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i[_0x5d82[120]](navigator[_0x5d82[119]]);
  2310.   /**
  2311.    * @return {undefined}
  2312.    */
  2313.   window[_0x5d82[121]] = function() {
  2314.     /** @type {boolean} */
  2315.     _0xbc34x21 = true;
  2316.   };
  2317.   /**
  2318.    * @return {undefined}
  2319.    */
  2320.   window[_0x5d82[122]] = function() {
  2321.     /** @type {boolean} */
  2322.     _0xbc34x21 = false;
  2323.   };
  2324.   /** @type {boolean} */
  2325.   var prefix = _0x5d82[128] == i[_0x5d82[130]][_0x5d82[129]];
  2326.   /** @type {boolean} */
  2327.   var _0xbc34x75 = true;
  2328.   done(i)[_0x5d82[131]](function() {
  2329.     /** @type {boolean} */
  2330.     _0xbc34x75 = true;
  2331.   });
  2332.   done(i)[_0x5d82[28]](function() {
  2333.     /** @type {boolean} */
  2334.     _0xbc34x75 = false;
  2335.     if (ws != null && ws[_0x5d82[220]] == 1) {
  2336.     }
  2337.   });
  2338.   /** @type {number} */
  2339.   var _0xbc34xc1 = 60;
  2340.   window[_0x5d82[332]] = function() {
  2341.     var delay = (new Date)[_0x5d82[333]]();
  2342.     /** @type {number} */
  2343.     var fn = 1;
  2344.     /** @type {number} */
  2345.     var bulk = 0;
  2346.     return function() {
  2347.       var maxDelay = (new Date)[_0x5d82[333]]();
  2348.       if (delay > maxDelay) {
  2349.         bulk = fn;
  2350.         /** @type {number} */
  2351.         fn = 1;
  2352.       } else {
  2353.         fn += 1;
  2354.       }
  2355.       delay = maxDelay;
  2356.       return bulk;
  2357.     };
  2358.   }();
  2359.   var arrayClass = i[_0x5d82[130]][_0x5d82[129]];
  2360.   /** @type {boolean} */
  2361.   var isArr = _0x5d82[128] == arrayClass;
  2362.   var inParens;
  2363.   var _0xbc34x111;
  2364.   var console;
  2365.   var inPseudo;
  2366.   var m;
  2367.   var _0xbc34x114;
  2368.   var g;
  2369.   var a;
  2370.   /** @type {null} */
  2371.   var _0xbc34x117 = null;
  2372.   /** @type {null} */
  2373.   var ws = null;
  2374.   var _0xbc34x119;
  2375.   /** @type {boolean} */
  2376.   var result = false;
  2377.   /** @type {number} */
  2378.   nodeX = 0;
  2379.   /** @type {number} */
  2380.   nodeY = 0;
  2381.   /** @type {boolean} */
  2382.   debug = false;
  2383.   /** @type {Array} */
  2384.   nodesOnScreen = [];
  2385.   /** @type {Array} */
  2386.   playerCells = [];
  2387.   /** @type {number} */
  2388.   _0xbc34x126 = -1;
  2389.   /** @type {number} */
  2390.   _0xbc34x127 = -1;
  2391.   /** @type {number} */
  2392.   cameraX = 0;
  2393.   /** @type {number} */
  2394.   cameraY = 0;
  2395.   nodes = {};
  2396.   /** @type {Array} */
  2397.   nodelist = [];
  2398.   /** @type {Array} */
  2399.   Cells = [];
  2400.   /** @type {Array} */
  2401.   leaderBoard = [];
  2402.   /** @type {number} */
  2403.   countdown = 3600;
  2404.   /** @type {Array} */
  2405.   chatBoard = [];
  2406.   /** @type {number} */
  2407.   rawMouseX = 0;
  2408.   /** @type {number} */
  2409.   rawMouseY = 0;
  2410.   /** @type {number} */
  2411.   X = -1;
  2412.   /** @type {number} */
  2413.   Y = -1;
  2414.   /** @type {number} */
  2415.   cb = 0;
  2416.   /** @type {number} */
  2417.   timestamp = 0;
  2418.   /** @type {null} */
  2419.   userNickName = null;
  2420.   /** @type {number} */
  2421.   leftPos = 0;
  2422.   /** @type {number} */
  2423.   topPos = 0;
  2424.   /** @type {number} */
  2425.   rightPos = 1E4;
  2426.   /** @type {number} */
  2427.   bottomPos = 1E4;
  2428.   /** @type {number} */
  2429.   viewZoom = 1;
  2430.   /** @type {null} */
  2431.   w = null;
  2432.   /** @type {boolean} */
  2433.   showSkin = true;
  2434.   /** @type {boolean} */
  2435.   showName = true;
  2436.   /** @type {boolean} */
  2437.   showColor = false;
  2438.   /** @type {boolean} */
  2439.   ua = false;
  2440.   /** @type {number} */
  2441.   userScore = 0;
  2442.   /** @type {boolean} */
  2443.   showMass = false;
  2444.   /** @type {number} */
  2445.   posX = nodeX = ~~((leftPos + rightPos) / 2);
  2446.   /** @type {number} */
  2447.   posY = nodeY = ~~((topPos + bottomPos) / 2);
  2448.   /** @type {number} */
  2449.   posSize = 1;
  2450.   gameMode = _0x5d82[30];
  2451.   /** @type {null} */
  2452.   teamScores = null;
  2453.   /** @type {boolean} */
  2454.   ma = false;
  2455.   /** @type {boolean} */
  2456.   hasOverlay = true;
  2457.   /** @type {boolean} */
  2458.   drawLine = false;
  2459.   /** @type {number} */
  2460.   _0xbc34x125 = 0;
  2461.   _0xbc34x128 = Date[_0x5d82[245]]();
  2462.   /** @type {null} */
  2463.   _0xbc34x129 = null;
  2464.   /** @type {number} */
  2465.   _0xbc34x12a = 0;
  2466.   /** @type {number} */
  2467.   _0xbc34x12b = 0;
  2468.   /** @type {number} */
  2469.   lineX = 0;
  2470.   /** @type {number} */
  2471.   lineY = 0;
  2472.   /** @type {number} */
  2473.   drawLineX = 0;
  2474.   /** @type {number} */
  2475.   drawLineY = 0;
  2476.   /** @type {number} */
  2477.   Ra = 0;
  2478.   /** @type {Array} */
  2479.   teamColor = [_0x5d82[415], _0x5d82[416], _0x5d82[417], _0x5d82[418]];
  2480.   /** @type {boolean} */
  2481.   xa = false;
  2482.   /** @type {number} */
  2483.   zoom = 1;
  2484.   /** @type {null} */
  2485.   sendSkin = null;
  2486.   isTouchStart = _0x5d82[118] in i && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i[_0x5d82[120]](navigator[_0x5d82[119]]);
  2487.   /** @type {boolean} */
  2488.   noRanking = false;
  2489.   var _0xbc34x11b = document[_0x5d82[402]](_0x5d82[97]);
  2490.   /** @type {boolean} */
  2491.   i[_0x5d82[162]] = false;
  2492.   /**
  2493.    * @param {boolean} subKey
  2494.    * @return {undefined}
  2495.    */
  2496.   i[_0x5d82[419]] = function(subKey) {
  2497.     /** @type {boolean} */
  2498.     result = subKey;
  2499.   };
  2500.   /**
  2501.    * @param {?} v
  2502.    * @return {undefined}
  2503.    */
  2504.   i[_0x5d82[420]] = function(v) {
  2505.     if (v != _0x5d82[421]) {
  2506.       done(_0x5d82[422])[_0x5d82[22]](v);
  2507.       done(_0x5d82[425])[_0x5d82[124]](_0x5d82[423], done(_0x5d82[422])[_0x5d82[96]]() + 11 + _0x5d82[424]);
  2508.       sendSkin = v;
  2509.     } else {
  2510.       done(_0x5d82[422])[_0x5d82[22]](_0x5d82[30]);
  2511.       done(_0x5d82[425])[_0x5d82[124]](_0x5d82[423], 11 + _0x5d82[424]);
  2512.       sendSkin = _0x5d82[30];
  2513.     }
  2514.     createCookie(_0x5d82[426], v, 7);
  2515.     done(_0x5d82[428])[_0x5d82[190]](_0x5d82[427]);
  2516.     done(_0x5d82[429])[_0x5d82[11]]();
  2517.   };
  2518.   /**
  2519.    * @param {Function} v
  2520.    * @return {undefined}
  2521.    */
  2522.   i[_0x5d82[430]] = function(v) {
  2523.     /** @type {Function} */
  2524.     userNickName = v;
  2525.     createCookie(_0x5d82[431], v, 7);
  2526.     if (sendSkin != null) {
  2527.       userNickName = _0x5d82[432] + sendSkin + _0x5d82[282] + userNickName;
  2528.     }
  2529.     clear();
  2530.     donecall();
  2531.     /** @type {number} */
  2532.     _0xbc34x126 = -1;
  2533.     /** @type {number} */
  2534.     _0xbc34x127 = -1;
  2535.     /** @type {number} */
  2536.     userScore = 0;
  2537.     /** @type {number} */
  2538.     _0xbc34x125 = 0;
  2539.     _0xbc34x128 = Date[_0x5d82[245]]();
  2540.     /** @type {null} */
  2541.     _0xbc34x129 = null;
  2542.     /** @type {number} */
  2543.     _0xbc34x12a = 0;
  2544.     /** @type {number} */
  2545.     _0xbc34x12b = 0;
  2546.   };
  2547.   /**
  2548.    * @param {boolean} dataAndEvents
  2549.    * @return {undefined}
  2550.    */
  2551.   i[_0x5d82[433]] = function(dataAndEvents) {
  2552.     /** @type {boolean} */
  2553.     showSkin = dataAndEvents;
  2554.   };
  2555.   /**
  2556.    * @param {boolean} dataAndEvents
  2557.    * @return {undefined}
  2558.    */
  2559.   i[_0x5d82[434]] = function(dataAndEvents) {
  2560.     /** @type {boolean} */
  2561.     showName = dataAndEvents;
  2562.   };
  2563.   /**
  2564.    * @param {?} dataAndEvents
  2565.    * @return {undefined}
  2566.    */
  2567.   i[_0x5d82[435]] = function(dataAndEvents) {
  2568.     showDarkTheme = dataAndEvents;
  2569.     hidden();
  2570.   };
  2571.   /**
  2572.    * @param {boolean} dataAndEvents
  2573.    * @return {undefined}
  2574.    */
  2575.   i[_0x5d82[436]] = function(dataAndEvents) {
  2576.     /** @type {boolean} */
  2577.     showColor = dataAndEvents;
  2578.   };
  2579.   /**
  2580.    * @param {boolean} dataAndEvents
  2581.    * @return {undefined}
  2582.    */
  2583.   i[_0x5d82[437]] = function(dataAndEvents) {
  2584.     /** @type {boolean} */
  2585.     showMass = dataAndEvents;
  2586.   };
  2587.   /**
  2588.    * @param {boolean} code
  2589.    * @return {undefined}
  2590.    */
  2591.   i[_0x5d82[438]] = function(code) {
  2592.     /** @type {boolean} */
  2593.     gotError = code == true;
  2594.     close();
  2595.   };
  2596.   /**
  2597.    * @param {boolean} enumFlag
  2598.    * @return {undefined}
  2599.    */
  2600.   i[_0x5d82[439]] = function(enumFlag) {
  2601.     /** @type {boolean} */
  2602.     skipSeen = enumFlag == true;
  2603.   };
  2604.   /**
  2605.    * @return {undefined}
  2606.    */
  2607.   i[_0x5d82[440]] = function() {
  2608.     /** @type {null} */
  2609.     userNickName = null;
  2610.     /** @type {boolean} */
  2611.     i[_0x5d82[162]] = true;
  2612.     reset(1);
  2613.     donecall();
  2614.   };
  2615.   /**
  2616.    * @param {?} dataAndEvents
  2617.    * @return {undefined}
  2618.    */
  2619.   i[_0x5d82[441]] = function(dataAndEvents) {
  2620.     if (dataAndEvents != gameMode) {
  2621.       gameMode = dataAndEvents;
  2622.       done(_0x5d82[177])[_0x5d82[219]](_0x5d82[218], true);
  2623.     }
  2624.   };
  2625.   /**
  2626.    * @param {boolean} x2
  2627.    * @return {undefined}
  2628.    */
  2629.   i[_0x5d82[442]] = function(x2) {
  2630.     /** @type {boolean} */
  2631.     xa = x2;
  2632.   };
  2633.   /**
  2634.    * @return {?}
  2635.    */
  2636.   Array[_0x5d82[444]][_0x5d82[147]] = function() {
  2637.     var unlock = this[_0x5d82[1]];
  2638.     var _0xbc34x11e;
  2639.     for (;unlock;) {
  2640.       _0xbc34x11e = this[--unlock] || _0x5d82[30];
  2641.       if (_0xbc34x11e[_0x5d82[147]]) {
  2642.         this[unlock] = _0xbc34x11e[_0x5d82[147]]();
  2643.       }
  2644.     }
  2645.     return this;
  2646.   };
  2647.   /** @type {number} */
  2648.   var _0xbc34xfc = 0;
  2649.   /** @type {number} */
  2650.   var backoff = 500;
  2651.   /** @type {number} */
  2652.   var strMatchedValue = -1;
  2653.   /** @type {number} */
  2654.   var h = -1;
  2655.   /** @type {null} */
  2656.   var _0xbc34x122 = null;
  2657.   /** @type {number} */
  2658.   var _0xbc34x123 = 1;
  2659.   /** @type {null} */
  2660.   var _0xbc34x124 = null;
  2661.   /** @type {number} */
  2662.   var _0xbc34x125 = 0;
  2663.   /** @type {number} */
  2664.   var _0xbc34x126 = -1;
  2665.   /** @type {number} */
  2666.   var _0xbc34x127 = -1;
  2667.   var _0xbc34x128 = Date[_0x5d82[245]]();
  2668.   /** @type {null} */
  2669.   var _0xbc34x129 = null;
  2670.   /** @type {number} */
  2671.   var _0xbc34x12a = 0;
  2672.   /** @type {number} */
  2673.   var _0xbc34x12b = 0;
  2674.   var model = avatars[_0x5d82[147]]();
  2675.   /** @type {Array} */
  2676.   var _0xbc34x12d = [_0x5d82[30]];
  2677.   /** @type {Array} */
  2678.   var generators = [_0x5d82[445]];
  2679.   responses[_0x5d82[444]] = {
  2680.     id : 0,
  2681.     points : null,
  2682.     pointsAcc : null,
  2683.     name : null,
  2684.     nameCache : null,
  2685.     sizeCache : null,
  2686.     x : 0,
  2687.     y : 0,
  2688.     size : 0,
  2689.     ox : 0,
  2690.     oy : 0,
  2691.     oSize : 0,
  2692.     nx : 0,
  2693.     ny : 0,
  2694.     nSize : 0,
  2695.     flag : 0,
  2696.     updateTime : 0,
  2697.     updateCode : 0,
  2698.     drawTime : 0,
  2699.     destroyed : false,
  2700.     isVirus : false,
  2701.     isFood : false,
  2702.     isAgitated : false,
  2703.     wasSimpleDrawing : true,
  2704.     /**
  2705.      * @return {undefined}
  2706.      */
  2707.     destroy : function() {
  2708.       var i;
  2709.       /** @type {number} */
  2710.       i = 0;
  2711.       for (;i < nodelist[_0x5d82[1]];i++) {
  2712.         if (nodelist[i] == this) {
  2713.           nodelist[_0x5d82[2]](i, 1);
  2714.           break;
  2715.         }
  2716.       }
  2717.       delete nodes[this[_0x5d82[303]]];
  2718.       i = playerCells[_0x5d82[24]](this);
  2719.       if (-1 != i) {
  2720.         /** @type {boolean} */
  2721.         ua = true;
  2722.         playerCells[_0x5d82[2]](i, 1);
  2723.       }
  2724.       i = nodesOnScreen[_0x5d82[24]](this[_0x5d82[303]]);
  2725.       if (-1 != i) {
  2726.         nodesOnScreen[_0x5d82[2]](i, 1);
  2727.       }
  2728.       /** @type {boolean} */
  2729.       this[_0x5d82[446]] = true;
  2730.       if (o[_0x5d82[87]] > 0) {
  2731.         Cells[_0x5d82[18]](this);
  2732.       } else {
  2733.         /** @type {Array} */
  2734.         Cells = [];
  2735.       }
  2736.     },
  2737.     /**
  2738.      * @return {?}
  2739.      */
  2740.     getNameSize : function() {
  2741.       return Math[_0x5d82[330]](~~(0.3 * this[_0x5d82[298]]), 24);
  2742.     },
  2743.     /**
  2744.      * @param {?} name
  2745.      * @return {undefined}
  2746.      */
  2747.     setName : function(name) {
  2748.       if (this[_0x5d82[252]] = name) {
  2749.         if (null == this[_0x5d82[447]]) {
  2750.           this[_0x5d82[447]] = new cache(this[_0x5d82[448]](), _0x5d82[356], true, _0x5d82[360]);
  2751.           this[_0x5d82[447]][_0x5d82[358]](this[_0x5d82[252]]);
  2752.         } else {
  2753.           this[_0x5d82[447]][_0x5d82[449]](this[_0x5d82[448]]());
  2754.           this[_0x5d82[447]][_0x5d82[358]](this[_0x5d82[252]]);
  2755.         }
  2756.       }
  2757.     },
  2758.     /**
  2759.      * @return {?}
  2760.      */
  2761.     updatePos : function() {
  2762.       if (0 == this[_0x5d82[303]]) {
  2763.         return 1;
  2764.       }
  2765.       var a;
  2766.       /** @type {number} */
  2767.       a = (timestamp - this[_0x5d82[302]]) / 120;
  2768.       /** @type {number} */
  2769.       a = 0 > a ? 0 : 1 < a ? 1 : a;
  2770.       /** @type {number} */
  2771.       var self = 0 > a ? 0 : 1 < a ? 1 : a;
  2772.       this[_0x5d82[448]]();
  2773.       if (this[_0x5d82[446]] && 1 <= self) {
  2774.         var r20 = Cells[_0x5d82[24]](this);
  2775.         if (-1 != r20) {
  2776.           Cells[_0x5d82[2]](r20, 1);
  2777.         }
  2778.       }
  2779.       this[_0x5d82[185]] = a * (this[_0x5d82[299]] - this[_0x5d82[295]]) + this[_0x5d82[295]];
  2780.       this[_0x5d82[186]] = a * (this[_0x5d82[300]] - this[_0x5d82[296]]) + this[_0x5d82[296]];
  2781.       this[_0x5d82[298]] = self * (this[_0x5d82[301]] - this[_0x5d82[297]]) + this[_0x5d82[297]];
  2782.       return self;
  2783.     },
  2784.     /**
  2785.      * @return {?}
  2786.      */
  2787.     shouldRender : function() {
  2788.       if (0 == this[_0x5d82[303]]) {
  2789.         return true;
  2790.       } else {
  2791.         return!(this[_0x5d82[185]] + this[_0x5d82[298]] + 40 < nodeX - g / 2 / viewZoom || (this[_0x5d82[186]] + this[_0x5d82[298]] + 40 < nodeY - a / 2 / viewZoom || (this[_0x5d82[185]] - this[_0x5d82[298]] - 40 > nodeX + g / 2 / viewZoom || this[_0x5d82[186]] - this[_0x5d82[298]] - 40 > nodeY + a / 2 / viewZoom)));
  2792.       }
  2793.     },
  2794.     _cachedDifference : Math[_0x5d82[210]](1.01),
  2795.     _cachedFood : {},
  2796.     /**
  2797.      * @param {Array} listeners
  2798.      * @return {undefined}
  2799.      */
  2800.     drawOneCell : function(listeners) {
  2801.       /** @type {boolean} */
  2802.       var isAlias = false;
  2803.       var _0xbc34x52 = this[_0x5d82[185]];
  2804.       var sign = this[_0x5d82[186]];
  2805.       if (this[_0x5d82[450]]()) {
  2806.         /** @type {null} */
  2807.         var i = null;
  2808.         /** @type {null} */
  2809.         var startIndex = null;
  2810.         /** @type {boolean} */
  2811.         var _0xbc34x133 = false;
  2812.         var pdataOld = this[_0x5d82[247]];
  2813.         /** @type {boolean} */
  2814.         var _0xbc34x134 = false;
  2815.         if (this[_0x5d82[252]] === _0x5d82[30] && (!this[_0x5d82[446]] && !this[_0x5d82[311]])) {
  2816.           var key = this[_0x5d82[247]] + _0x5d82[451] + this[_0x5d82[298]];
  2817.           if (this[_0x5d82[452]][key]) {
  2818.             if (typeof this[_0x5d82[453]] == _0x5d82[454]) {
  2819.               /** @type {number} */
  2820.               this[_0x5d82[455]] = Math[_0x5d82[105]]() > 0.5 ? 1 : 2;
  2821.               /** @type {number} */
  2822.               this[_0x5d82[456]] = (1 + Math[_0x5d82[105]]()) * (Math[_0x5d82[105]]() * 2 > 1 ? 1 : -1);
  2823.               this[_0x5d82[453]] = Math[_0x5d82[99]](Math[_0x5d82[105]]() * 360);
  2824.             }
  2825.             /** @type {number} */
  2826.             this[_0x5d82[453]] = (this[_0x5d82[453]] + this[_0x5d82[455]]) % 360;
  2827.             listeners[_0x5d82[349]](this[_0x5d82[452]][key], this[_0x5d82[185]] - this[_0x5d82[298]] * 3 + mat[this[_0x5d82[453]] * 2] * this[_0x5d82[456]], this[_0x5d82[186]] - this[_0x5d82[298]] * 3 + mat[this[_0x5d82[453]] * 2 + 1] * Math[_0x5d82[325]](this._ratio));
  2828.             return;
  2829.           } else {
  2830.             var val = document[_0x5d82[402]](_0x5d82[97]);
  2831.             /** @type {Array} */
  2832.             var fns = listeners;
  2833.             /** @type {number} */
  2834.             val[_0x5d82[96]] = val[_0x5d82[100]] = this[_0x5d82[298]] * 6;
  2835.             listeners = val[_0x5d82[103]](_0x5d82[102]);
  2836.             /** @type {boolean} */
  2837.             isAlias = true;
  2838.             _0xbc34x52 = this[_0x5d82[298]];
  2839.             sign = this[_0x5d82[298]];
  2840.             this[_0x5d82[452]][key] = val;
  2841.           }
  2842.         }
  2843.         if (this[_0x5d82[315]][_0x5d82[24]](this[_0x5d82[252]][_0x5d82[147]]()) != -1) {
  2844.           i = this[_0x5d82[252]][_0x5d82[147]]();
  2845.           /** @type {boolean} */
  2846.           _0xbc34x133 = true;
  2847.         } else {
  2848.           if (typeof this[_0x5d82[315]] != _0x5d82[454] && this[_0x5d82[315]] != _0x5d82[30]) {
  2849.             if (this[_0x5d82[315]][0] == _0x5d82[457] || this[_0x5d82[315]][0] == _0x5d82[244]) {
  2850.               i = this[_0x5d82[315]][_0x5d82[458]](1);
  2851.               if (this[_0x5d82[315]][0] == _0x5d82[244]) {
  2852.                 startIndex = i + _0x5d82[459];
  2853.                 /** @type {boolean} */
  2854.                 _0xbc34x134 = true;
  2855.               }
  2856.             }
  2857.           }
  2858.         }
  2859.         listeners[_0x5d82[345]]();
  2860.         if (i == _0x5d82[460]) {
  2861.           listeners[_0x5d82[106]]();
  2862.           listeners[_0x5d82[113]] = _0x5d82[461];
  2863.           /** @type {number} */
  2864.           var r20 = ~~(this[_0x5d82[298]] * 0.6);
  2865.           /** @type {number} */
  2866.           var restoreScript = ~~(this[_0x5d82[298]] * 0.6 * 1.05);
  2867.           /** @type {number} */
  2868.           listeners[_0x5d82[340]] = 0.4;
  2869.           listeners[_0x5d82[462]](this[_0x5d82[185]] - this[_0x5d82[298]] * 0.9, this[_0x5d82[186]] - this[_0x5d82[298]], r20, restoreScript, 150 * Math[_0x5d82[48]] / 180, 0, 2 * Math[_0x5d82[48]]);
  2870.           listeners[_0x5d82[462]](this[_0x5d82[185]] + this[_0x5d82[298]] * 0.9, this[_0x5d82[186]] - this[_0x5d82[298]], r20, restoreScript, 30 * Math[_0x5d82[48]] / 180, 0, 2 * Math[_0x5d82[48]]);
  2871.           listeners[_0x5d82[114]]();
  2872.           /** @type {number} */
  2873.           listeners[_0x5d82[340]] = 1;
  2874.         }
  2875.         this[_0x5d82[463]] = timestamp;
  2876.         c = this[_0x5d82[308]]();
  2877.         if (this[_0x5d82[446]]) {
  2878.           listeners[_0x5d82[340]] *= 1 - c;
  2879.         }
  2880.         listeners[_0x5d82[113]] = this[_0x5d82[247]];
  2881.         var _0xbc34x88 = _0xbc34x2f && !this[_0x5d82[311]] || this[_0x5d82[303]] && !this[_0x5d82[312]];
  2882.         if (!this[_0x5d82[311]] && (!this[_0x5d82[312]] && this[_0x5d82[252]] == _0x5d82[30])) {
  2883.           /** @type {boolean} */
  2884.           this[_0x5d82[464]] = true;
  2885.         }
  2886.         if (this[_0x5d82[464]]) {
  2887.           /** @type {boolean} */
  2888.           _0xbc34x88 = true;
  2889.         }
  2890.         if (_0xbc34x88) {
  2891.           listeners[_0x5d82[106]]();
  2892.           if (_0xbc34x31) {
  2893.             listeners[_0x5d82[385]](isAlias ? _0xbc34x52 * 3 : this[_0x5d82[185]], isAlias ? sign * 3 : this[_0x5d82[186]], this[_0x5d82[298]], 0, 2 * Math[_0x5d82[48]], false);
  2894.           } else {
  2895.             if (isAlias) {
  2896.               format(listeners, isAlias ? _0xbc34x52 * 3 : this[_0x5d82[185]], isAlias ? sign * 3 : this[_0x5d82[186]], 5, this[_0x5d82[298]], this[_0x5d82[298]] * 0.5, pdataOld);
  2897.             } else {
  2898.               listeners[_0x5d82[385]](isAlias ? _0xbc34x52 * 3 : this[_0x5d82[185]], isAlias ? sign * 3 : this[_0x5d82[186]], this[_0x5d82[298]], 0, 2 * Math[_0x5d82[48]], false);
  2899.             }
  2900.           }
  2901.           if (isAlias) {
  2902.             listeners[_0x5d82[465]] = this[_0x5d82[247]];
  2903.             /** @type {number} */
  2904.             listeners[_0x5d82[404]] = this[_0x5d82[298]] / 1.4;
  2905.             /** @type {number} */
  2906.             listeners[_0x5d82[466]] = 0;
  2907.             /** @type {number} */
  2908.             listeners[_0x5d82[467]] = 0;
  2909.           }
  2910.         }
  2911.         if (!this[_0x5d82[311]]) {
  2912.           listeners[_0x5d82[385]](this[_0x5d82[185]], this[_0x5d82[186]], this[_0x5d82[298]], 0, 2 * Math[_0x5d82[48]], false);
  2913.         } else {
  2914.           /** @type {number} */
  2915.           var _len = 90;
  2916.           listeners[_0x5d82[468]] = _0x5d82[386];
  2917.           listeners[_0x5d82[111]] = this[_0x5d82[247]];
  2918.           /** @type {number} */
  2919.           var _i = 0;
  2920.           for (;_i < _len;_i++) {
  2921.             var Block = require(this[_0x5d82[185]], this[_0x5d82[186]], this[_0x5d82[298]] + (_i % 2 == 0 ? 20 : 0), 360 / _len * _i);
  2922.             if (_i == 0) {
  2923.               listeners[_0x5d82[107]](Block[_0x5d82[185]], Block[_0x5d82[186]]);
  2924.             } else {
  2925.               listeners[_0x5d82[108]](Block[_0x5d82[185]], Block[_0x5d82[186]]);
  2926.             }
  2927.           }
  2928.         }
  2929.         listeners[_0x5d82[109]]();
  2930.         i = this[_0x5d82[252]][_0x5d82[147]]();
  2931.         if (this[_0x5d82[315]] != _0x5d82[30]) {
  2932.           i = this[_0x5d82[315]][_0x5d82[254]](1)[_0x5d82[147]]();
  2933.         } else {
  2934.           if (!newProtocol) {
  2935.             if (i[_0x5d82[24]](_0x5d82[469]) != -1) {
  2936.               var f = i[_0x5d82[24]](_0x5d82[469]);
  2937.               var lidx = i[_0x5d82[24]](_0x5d82[470]);
  2938.               i = i[_0x5d82[194]](f + 1, lidx);
  2939.             }
  2940.             for (key in replacements) {
  2941.               if (replacements[_0x5d82[307]](key)) {
  2942.                 if (i[_0x5d82[147]]()[_0x5d82[24]](key[_0x5d82[147]]()) > -1) {
  2943.                   i = replacements[key];
  2944.                 }
  2945.               }
  2946.             }
  2947.           }
  2948.         }
  2949.         if (this[_0x5d82[312]]) {
  2950.           listeners[_0x5d82[113]] = _0x5d82[341];
  2951.           listeners[_0x5d82[111]] = _0x5d82[471];
  2952.           i = _0x5d82[472];
  2953.         }
  2954.         /** @type {null} */
  2955.         var featureId = null;
  2956.         if (showSkin && _0x5d82[473] != gameMode) {
  2957.           if (model[_0x5d82[24]](i) > -1) {
  2958.             if (!skins[_0x5d82[307]](i)) {
  2959.               /** @type {Image} */
  2960.               skins[i] = new Image;
  2961.               skins[i][_0x5d82[39]] = _0x5d82[474] + i + _0x5d82[475] + version;
  2962.             }
  2963.             if (0 != skins[i][_0x5d82[96]] && skins[i][_0x5d82[476]]) {
  2964.               c = skins[i];
  2965.             } else {
  2966.               /** @type {null} */
  2967.               c = null;
  2968.             }
  2969.           } else {
  2970.             /** @type {null} */
  2971.             c = null;
  2972.           }
  2973.         } else {
  2974.           /** @type {null} */
  2975.           c = null;
  2976.         }
  2977.         if (featureId) {
  2978.           /** @type {number} */
  2979.           listeners[_0x5d82[340]] = 0.1;
  2980.           /** @type {number} */
  2981.           var _0xbc34x13f = ~~(this[_0x5d82[298]] * 4.390625);
  2982.           listeners[_0x5d82[349]](featureId, this[_0x5d82[185]] - _0xbc34x13f, this[_0x5d82[186]] - _0xbc34x13f, 2 * _0xbc34x13f, 2 * _0xbc34x13f);
  2983.         }
  2984.         /** @type {number} */
  2985.         listeners[_0x5d82[340]] = 1;
  2986.         /** @type {boolean} */
  2987.         var _0xbc34x140 = -1 != generators[_0x5d82[24]](i);
  2988.         /** @type {boolean} */
  2989.         c = (e = c) ? -1 != generators[_0x5d82[24]](i) : false;
  2990.         if (!_0xbc34x88) {
  2991.           listeners[_0x5d82[112]]();
  2992.         }
  2993.         /** @type {number} */
  2994.         this[_0x5d82[477]] = 0;
  2995.         if (rs[_0x5d82[24]](i) != -1) {
  2996.           /** @type {number} */
  2997.           this[_0x5d82[477]] = 1;
  2998.         }
  2999.         if (this[_0x5d82[477]] == 1 && _0xbc34x2b) {
  3000.           listeners[_0x5d82[112]]();
  3001.         }
  3002.         if (this[_0x5d82[477]] == 0) {
  3003.           listeners[_0x5d82[114]]();
  3004.         }
  3005.         if (this[_0x5d82[477]] == 1) {
  3006.           if (_0xbc34x2c) {
  3007.             if (showSkin) {
  3008.             }
  3009.             if (!showSkin) {
  3010.               listeners[_0x5d82[114]]();
  3011.             }
  3012.           }
  3013.           if (!_0xbc34x2c) {
  3014.             listeners[_0x5d82[114]]();
  3015.           }
  3016.         }
  3017.         if (!(null == e)) {
  3018.           if (!_0xbc34x140) {
  3019.             listeners[_0x5d82[345]]();
  3020.             listeners[_0x5d82[399]]();
  3021.             if (_0xbc34x2e || _0x5d82[473] == gameMode) {
  3022.             }
  3023.             if (-1 == calc_x[_0x5d82[24]](i)) {
  3024.               if (_0xbc34x2d) {
  3025.                 listeners[_0x5d82[349]](e, this[_0x5d82[185]] - this[_0x5d82[298]], this[_0x5d82[186]] - this[_0x5d82[298]], 2 * this[_0x5d82[298]], 2 * this[_0x5d82[298]]);
  3026.               }
  3027.               if (!_0xbc34x2d) {
  3028.                 if (-1 != calc_y[_0x5d82[24]](i)) {
  3029.                   if (!this[_0x5d82[307]](_0x5d82[478])) {
  3030.                     /** @type {number} */
  3031.                     this[_0x5d82[478]] = 0;
  3032.                   }
  3033.                   /** @type {number} */
  3034.                   var _0xbc34x141 = (Math[_0x5d82[479]](this[_0x5d82[300]] - this[_0x5d82[296]], this[_0x5d82[299]] - this[_0x5d82[295]]) + 2 * Math[_0x5d82[48]]) % (2 * Math[_0x5d82[48]]);
  3035.                   /** @type {number} */
  3036.                   this[_0x5d82[478]] = (this[_0x5d82[478]] + (_0xbc34x141 - this[_0x5d82[478]] > Math[_0x5d82[48]] ? _0xbc34x141 + -(this[_0x5d82[478]] + 2 * Math[_0x5d82[48]]) : this[_0x5d82[478]] - _0xbc34x141 > Math[_0x5d82[48]] ? _0xbc34x141 + 2 * Math[_0x5d82[48]] - this[_0x5d82[478]] : _0xbc34x141 - this[_0x5d82[478]]) * 0.1 + 2 * Math[_0x5d82[48]]) % (2 * Math[_0x5d82[48]]);
  3037.                   listeners[_0x5d82[345]]();
  3038.                   listeners[_0x5d82[346]](this[_0x5d82[185]], this[_0x5d82[186]]);
  3039.                   listeners[_0x5d82[480]](this[_0x5d82[478]]);
  3040.                   listeners[_0x5d82[349]](e, -this[_0x5d82[298]], -this[_0x5d82[298]], 2 * this[_0x5d82[298]], 2 * this[_0x5d82[298]]);
  3041.                   listeners[_0x5d82[348]]();
  3042.                 }
  3043.                 if (-1 == calc_y[_0x5d82[24]](i)) {
  3044.                   listeners[_0x5d82[349]](e, this[_0x5d82[185]] - this[_0x5d82[298]], this[_0x5d82[186]] - this[_0x5d82[298]], 2 * this[_0x5d82[298]], 2 * this[_0x5d82[298]]);
  3045.                 }
  3046.               }
  3047.             }
  3048.             if (-1 != calc_x[_0x5d82[24]](i)) {
  3049.               if (this[_0x5d82[481]] > 0) {
  3050.                 listeners[_0x5d82[349]](e, this[_0x5d82[185]] - this[_0x5d82[298]], this[_0x5d82[186]] - this[_0x5d82[298]], 2 * this[_0x5d82[298]], 2 * this[_0x5d82[298]]);
  3051.               }
  3052.               if (this[_0x5d82[481]] == 0) {
  3053.                 if (curframe[i] == undefined) {
  3054.                   /** @type {number} */
  3055.                   curframe[i] = 0;
  3056.                 }
  3057.                 mmu = Math[_0x5d82[99]](curframe[i] / framespeed[i]);
  3058.                 if (_0xbc34x2d) {
  3059.                   listeners[_0x5d82[349]](e, mmu * 200, 0, 200, 200, this[_0x5d82[185]] - this[_0x5d82[298]], this[_0x5d82[186]] - this[_0x5d82[298]], 2 * this[_0x5d82[298]], 2 * this[_0x5d82[298]]);
  3060.                 }
  3061.                 if (!_0xbc34x2d) {
  3062.                   if (-1 != calc_y[_0x5d82[24]](i)) {
  3063.                     if (!this[_0x5d82[307]](_0x5d82[478])) {
  3064.                       /** @type {number} */
  3065.                       this[_0x5d82[478]] = 0;
  3066.                     }
  3067.                     /** @type {number} */
  3068.                     _0xbc34x141 = (Math[_0x5d82[479]](this[_0x5d82[300]] - this[_0x5d82[296]], this[_0x5d82[299]] - this[_0x5d82[295]]) + 2 * Math[_0x5d82[48]]) % (2 * Math[_0x5d82[48]]);
  3069.                     /** @type {number} */
  3070.                     this[_0x5d82[478]] = (this[_0x5d82[478]] + (_0xbc34x141 - this[_0x5d82[478]] > Math[_0x5d82[48]] ? _0xbc34x141 + -(this[_0x5d82[478]] + 2 * Math[_0x5d82[48]]) : this[_0x5d82[478]] - _0xbc34x141 > Math[_0x5d82[48]] ? _0xbc34x141 + 2 * Math[_0x5d82[48]] - this[_0x5d82[478]] : _0xbc34x141 - this[_0x5d82[478]]) * 0.1 + 2 * Math[_0x5d82[48]]) % (2 * Math[_0x5d82[48]]);
  3071.                     listeners[_0x5d82[345]]();
  3072.                     listeners[_0x5d82[346]](this[_0x5d82[185]], this[_0x5d82[186]]);
  3073.                     listeners[_0x5d82[480]](this[_0x5d82[478]]);
  3074.                     listeners[_0x5d82[349]](e, mmu * 200, 0, 200, 200, -this[_0x5d82[298]], -this[_0x5d82[298]], 2 * this[_0x5d82[298]], 2 * this[_0x5d82[298]]);
  3075.                     listeners[_0x5d82[348]]();
  3076.                   }
  3077.                   if (-1 == calc_y[_0x5d82[24]](i)) {
  3078.                     listeners[_0x5d82[349]](e, mmu * 200, 0, 200, 200, this[_0x5d82[185]] - this[_0x5d82[298]], this[_0x5d82[186]] - this[_0x5d82[298]], 2 * this[_0x5d82[298]], 2 * this[_0x5d82[298]]);
  3079.                   }
  3080.                 }
  3081.                 curframe[i]++;
  3082.                 if (mmu > maxframe[i] - 2) {
  3083.                   /** @type {number} */
  3084.                   curframe[i] = 0;
  3085.                 }
  3086.               }
  3087.             }
  3088.             listeners[_0x5d82[348]]();
  3089.           }
  3090.         }
  3091.         if (i == _0x5d82[482]) {
  3092.           listeners[_0x5d82[345]]();
  3093.           /** @type {number} */
  3094.           listeners[_0x5d82[340]] = 1;
  3095.           if (!this[_0x5d82[311]] && (!this[_0x5d82[312]] && !this[_0x5d82[464]])) {
  3096.             listeners[_0x5d82[349]](im, this[_0x5d82[185]] - this[_0x5d82[298]], this[_0x5d82[186]] - this[_0x5d82[298]] - this[_0x5d82[298]] * 1.65, 2 * this[_0x5d82[298]], 2 * this[_0x5d82[298]]);
  3097.           }
  3098.           listeners[_0x5d82[348]]();
  3099.         }
  3100.         if (i == _0x5d82[483]) {
  3101.           listeners[_0x5d82[345]]();
  3102.           /** @type {number} */
  3103.           listeners[_0x5d82[340]] = 1;
  3104.           if (!this[_0x5d82[311]] && (!this[_0x5d82[312]] && !this[_0x5d82[464]])) {
  3105.             listeners[_0x5d82[349]](imgObj, this[_0x5d82[185]] - this[_0x5d82[298]], this[_0x5d82[186]] - this[_0x5d82[298]] - this[_0x5d82[298]] * 1.65, 2 * this[_0x5d82[298]], 2 * this[_0x5d82[298]]);
  3106.           }
  3107.           listeners[_0x5d82[348]]();
  3108.         }
  3109.         if (i == _0x5d82[484]) {
  3110.           listeners[_0x5d82[345]]();
  3111.           /** @type {number} */
  3112.           listeners[_0x5d82[340]] = 1;
  3113.           if (!this[_0x5d82[311]] && (!this[_0x5d82[312]] && !this[_0x5d82[464]])) {
  3114.             listeners[_0x5d82[349]](hitStarImageObject, this[_0x5d82[185]] - this[_0x5d82[298]], this[_0x5d82[186]] - this[_0x5d82[298]] - this[_0x5d82[298]] * 1.65, 2 * this[_0x5d82[298]], 2 * this[_0x5d82[298]]);
  3115.           }
  3116.           listeners[_0x5d82[348]]();
  3117.         }
  3118.         if (i == _0x5d82[485]) {
  3119.           listeners[_0x5d82[345]]();
  3120.           /** @type {number} */
  3121.           listeners[_0x5d82[340]] = 1;
  3122.           if (!this[_0x5d82[311]] && (!this[_0x5d82[312]] && !this[_0x5d82[464]])) {
  3123.             listeners[_0x5d82[349]](returnedImage, this[_0x5d82[185]] - this[_0x5d82[298]], this[_0x5d82[186]] - this[_0x5d82[298]] - this[_0x5d82[298]] * 1.65, 2 * this[_0x5d82[298]], 2 * this[_0x5d82[298]]);
  3124.           }
  3125.           listeners[_0x5d82[348]]();
  3126.         }
  3127.         if (i == _0x5d82[486]) {
  3128.           listeners[_0x5d82[345]]();
  3129.           /** @type {number} */
  3130.           listeners[_0x5d82[340]] = 1;
  3131.           if (!this[_0x5d82[311]] && (!this[_0x5d82[312]] && !this[_0x5d82[464]])) {
  3132.             listeners[_0x5d82[349]](bee, this[_0x5d82[185]] - this[_0x5d82[298]], this[_0x5d82[186]] - this[_0x5d82[298]] - this[_0x5d82[298]] * 1.65, 2 * this[_0x5d82[298]], 2 * this[_0x5d82[298]]);
  3133.           }
  3134.           listeners[_0x5d82[348]]();
  3135.         }
  3136.         /** @type {number} */
  3137.         listeners[_0x5d82[340]] = 1;
  3138.         /** @type {boolean} */
  3139.         c = -1 != playerCells[_0x5d82[24]](this);
  3140.         var left;
  3141.         if (0 != this[_0x5d82[303]]) {
  3142.           /** @type {number} */
  3143.           _0xbc34x88 = ~~this[_0x5d82[186]];
  3144.           /** @type {number} */
  3145.           var right = Math[_0x5d82[395]](10 * viewZoom) * 0.1;
  3146.           /** @type {number} */
  3147.           var a = 1 / right;
  3148.           if (showName && (this[_0x5d82[252]] && (this[_0x5d82[447]] && !_0xbc34x133))) {
  3149.             left = this[_0x5d82[447]];
  3150.             left[_0x5d82[358]](this[_0x5d82[252]]);
  3151.             left[_0x5d82[449]](this[_0x5d82[448]]());
  3152.             left[_0x5d82[487]](right);
  3153.             var iEvent = left[_0x5d82[359]]();
  3154.             /** @type {number} */
  3155.             var rreturn = ~~(iEvent[_0x5d82[96]] * a);
  3156.             /** @type {number} */
  3157.             var udataCur = ~~(iEvent[_0x5d82[100]] * a);
  3158.             listeners[_0x5d82[349]](iEvent, ~~this[_0x5d82[185]] - ~~(rreturn * 0.5), _0xbc34x88 - ~~(udataCur * 0.5), rreturn, udataCur);
  3159.             _0xbc34x88 += iEvent[_0x5d82[100]] * 0.5 * a + 4;
  3160.           }
  3161.           if (showMass && (c || 0 == playerCells[_0x5d82[1]] && ((!this[_0x5d82[311]] || this[_0x5d82[312]]) && 20 < this[_0x5d82[298]]))) {
  3162.             if (null == this[_0x5d82[488]]) {
  3163.               this[_0x5d82[488]] = new cache(this[_0x5d82[448]]() * 0.5, _0x5d82[356], true, _0x5d82[360]);
  3164.             }
  3165.             c = this[_0x5d82[488]];
  3166.             c[_0x5d82[449]](this[_0x5d82[448]]() * 0.5);
  3167.             c[_0x5d82[358]](~~(this[_0x5d82[298]] * this[_0x5d82[298]] * 0.01));
  3168.             c[_0x5d82[487]](right);
  3169.             e = c[_0x5d82[359]]();
  3170.             /** @type {number} */
  3171.             rreturn = ~~(e[_0x5d82[96]] * a);
  3172.             /** @type {number} */
  3173.             udataCur = ~~(e[_0x5d82[100]] * a);
  3174.             listeners[_0x5d82[349]](e, ~~this[_0x5d82[185]] - ~~(rreturn * 0.5), _0xbc34x88 - ~~(udataCur * 0.5), rreturn, udataCur);
  3175.           }
  3176.         }
  3177.         listeners[_0x5d82[348]]();
  3178.       }
  3179.     }
  3180.   };
  3181.   cache[_0x5d82[444]] = {
  3182.     _value : _0x5d82[30],
  3183.     _color : _0x5d82[360],
  3184.     _stroke : false,
  3185.     _strokeColor : _0x5d82[360],
  3186.     _size : 16,
  3187.     _canvas : null,
  3188.     _ctx : null,
  3189.     _dirty : false,
  3190.     _scale : 1,
  3191.     /**
  3192.      * @param {?} width
  3193.      * @return {undefined}
  3194.      */
  3195.     setSize : function(width) {
  3196.       if (this[_0x5d82[411]] != width) {
  3197.         this[_0x5d82[411]] = width;
  3198.         /** @type {boolean} */
  3199.         this[_0x5d82[489]] = true;
  3200.       }
  3201.     },
  3202.     /**
  3203.      * @param {?} scale
  3204.      * @return {undefined}
  3205.      */
  3206.     setScale : function(scale) {
  3207.       if (this[_0x5d82[490]] != scale) {
  3208.         this[_0x5d82[490]] = scale;
  3209.         /** @type {boolean} */
  3210.         this[_0x5d82[489]] = true;
  3211.       }
  3212.     },
  3213.     /**
  3214.      * @param {?} b
  3215.      * @return {undefined}
  3216.      */
  3217.     setStrokeColor : function(b) {
  3218.       if (this[_0x5d82[414]] != b) {
  3219.         this[_0x5d82[414]] = b;
  3220.         /** @type {boolean} */
  3221.         this[_0x5d82[489]] = true;
  3222.       }
  3223.     },
  3224.     /**
  3225.      * @param {?} newValue
  3226.      * @return {undefined}
  3227.      */
  3228.     setValue : function(newValue) {
  3229.       if (newValue != this[_0x5d82[491]]) {
  3230.         this[_0x5d82[491]] = newValue;
  3231.         /** @type {boolean} */
  3232.         this[_0x5d82[489]] = true;
  3233.       }
  3234.     },
  3235.     /**
  3236.      * @return {?}
  3237.      */
  3238.     render : function() {
  3239.       if (null == this[_0x5d82[492]]) {
  3240.         this[_0x5d82[492]] = document[_0x5d82[402]](_0x5d82[97]);
  3241.         this[_0x5d82[493]] = this[_0x5d82[492]][_0x5d82[103]](_0x5d82[102]);
  3242.       }
  3243.       if (this[_0x5d82[489]]) {
  3244.         /** @type {boolean} */
  3245.         this[_0x5d82[489]] = false;
  3246.         var out = this[_0x5d82[492]];
  3247.         var target = this[_0x5d82[493]];
  3248.         var percent = this[_0x5d82[491]];
  3249.         var data = this[_0x5d82[490]];
  3250.         var j = this[_0x5d82[411]];
  3251.         var s = _0x5d82[494] + j + _0x5d82[382];
  3252.         target[_0x5d82[335]] = s;
  3253.         /** @type {number} */
  3254.         var column = ~~(0.2 * j);
  3255.         /** @type {number} */
  3256.         var copy = j * 0.075;
  3257.         /** @type {number} */
  3258.         var i = column * 0.5;
  3259.         /** @type {number} */
  3260.         out[_0x5d82[96]] = (target[_0x5d82[354]](percent)[_0x5d82[96]] + 4) * data + 3;
  3261.         /** @type {number} */
  3262.         out[_0x5d82[100]] = (j + column + 4) * data;
  3263.         target[_0x5d82[335]] = s;
  3264.         /** @type {number} */
  3265.         target[_0x5d82[340]] = 1;
  3266.         /** @type {number} */
  3267.         target[_0x5d82[110]] = copy;
  3268.         target[_0x5d82[111]] = this[_0x5d82[414]];
  3269.         target[_0x5d82[113]] = this[_0x5d82[412]];
  3270.         target[_0x5d82[101]](data, data);
  3271.         if (this[_0x5d82[413]]) {
  3272.           target[_0x5d82[495]](percent, 3, j + 2 - i);
  3273.         }
  3274.         target[_0x5d82[355]](percent, 3, j + 2 - i);
  3275.       }
  3276.       return this[_0x5d82[492]];
  3277.     },
  3278.     /**
  3279.      * @return {?}
  3280.      */
  3281.     getWidth : function() {
  3282.       return console[_0x5d82[354]](this._value)[_0x5d82[96]] + 6;
  3283.     }
  3284.   };
  3285.   if (!Date[_0x5d82[245]]) {
  3286.     /**
  3287.      * @return {?}
  3288.      */
  3289.     Date[_0x5d82[245]] = function() {
  3290.       return(new Date)[_0x5d82[496]]();
  3291.     };
  3292.   }
  3293.   var methods = {
  3294.     /**
  3295.      * @param {?} position
  3296.      * @return {?}
  3297.      */
  3298.     init : function(position) {
  3299.       /**
  3300.        * @param {?} property
  3301.        * @param {?} object
  3302.        * @param {?} chain
  3303.        * @param {?} a3
  3304.        * @param {?} more
  3305.        * @return {undefined}
  3306.        */
  3307.       function result(property, object, chain, a3, more) {
  3308.         this[_0x5d82[185]] = property;
  3309.         this[_0x5d82[186]] = object;
  3310.         this[_0x5d82[497]] = chain;
  3311.         this[_0x5d82[498]] = a3;
  3312.         this[_0x5d82[499]] = more;
  3313.         /** @type {Array} */
  3314.         this[_0x5d82[500]] = [];
  3315.         /** @type {Array} */
  3316.         this[_0x5d82[501]] = [];
  3317.       }
  3318.       var start1 = position[_0x5d82[502]] || 2;
  3319.       var end1 = position[_0x5d82[503]] || 4;
  3320.       result[_0x5d82[444]] = {
  3321.         x : 0,
  3322.         y : 0,
  3323.         w : 0,
  3324.         h : 0,
  3325.         depth : 0,
  3326.         items : null,
  3327.         nodes : null,
  3328.         /**
  3329.          * @param {?} tokens
  3330.          * @return {?}
  3331.          */
  3332.         exists : function(tokens) {
  3333.           /** @type {number} */
  3334.           var unlock = 0;
  3335.           for (;unlock < this[_0x5d82[500]][_0x5d82[1]];++unlock) {
  3336.             var cache = this[_0x5d82[500]][unlock];
  3337.             if (cache[_0x5d82[185]] >= tokens[_0x5d82[185]] && (cache[_0x5d82[186]] >= tokens[_0x5d82[186]] && (cache[_0x5d82[185]] < tokens[_0x5d82[185]] + tokens[_0x5d82[497]] && cache[_0x5d82[186]] < tokens[_0x5d82[186]] + tokens[_0x5d82[498]]))) {
  3338.               return true;
  3339.             }
  3340.           }
  3341.           if (0 != this[_0x5d82[501]][_0x5d82[1]]) {
  3342.             var codeSegments = this;
  3343.             return this[_0x5d82[505]](tokens, function(j) {
  3344.               return codeSegments[_0x5d82[501]][j][_0x5d82[504]](tokens);
  3345.             });
  3346.           }
  3347.           return false;
  3348.         },
  3349.         /**
  3350.          * @param {?} inverse
  3351.          * @param {?} error
  3352.          * @return {undefined}
  3353.          */
  3354.         retrieve : function(inverse, error) {
  3355.           /** @type {number} */
  3356.           var unlock = 0;
  3357.           for (;unlock < this[_0x5d82[500]][_0x5d82[1]];++unlock) {
  3358.             error(this[_0x5d82[500]][unlock]);
  3359.           }
  3360.           if (0 != this[_0x5d82[501]][_0x5d82[1]]) {
  3361.             var codeSegments = this;
  3362.             this[_0x5d82[505]](inverse, function(j) {
  3363.               codeSegments[_0x5d82[501]][j][_0x5d82[506]](inverse, error);
  3364.             });
  3365.           }
  3366.         },
  3367.         /**
  3368.          * @param {?} arr
  3369.          * @return {undefined}
  3370.          */
  3371.         insert : function(arr) {
  3372.           if (0 != this[_0x5d82[501]][_0x5d82[1]]) {
  3373.             this[_0x5d82[501]][this[_0x5d82[508]](arr)][_0x5d82[507]](arr);
  3374.           } else {
  3375.             if (this[_0x5d82[500]][_0x5d82[1]] >= start1 && this[_0x5d82[499]] < end1) {
  3376.               this[_0x5d82[509]]();
  3377.               this[_0x5d82[501]][this[_0x5d82[508]](arr)][_0x5d82[507]](arr);
  3378.             } else {
  3379.               this[_0x5d82[500]][_0x5d82[18]](arr);
  3380.             }
  3381.           }
  3382.         },
  3383.         /**
  3384.          * @param {?} dataAndEvents
  3385.          * @return {?}
  3386.          */
  3387.         findInsertNode : function(dataAndEvents) {
  3388.           return dataAndEvents[_0x5d82[185]] < this[_0x5d82[185]] + this[_0x5d82[497]] / 2 ? dataAndEvents[_0x5d82[186]] < this[_0x5d82[186]] + this[_0x5d82[498]] / 2 ? 0 : 2 : dataAndEvents[_0x5d82[186]] < this[_0x5d82[186]] + this[_0x5d82[498]] / 2 ? 1 : 3;
  3389.         },
  3390.         /**
  3391.          * @param {?} inNode
  3392.          * @param {?} $sanitize
  3393.          * @return {?}
  3394.          */
  3395.         findOverlappingNodes : function(inNode, $sanitize) {
  3396.           return inNode[_0x5d82[185]] < this[_0x5d82[185]] + this[_0x5d82[497]] / 2 && (inNode[_0x5d82[186]] < this[_0x5d82[186]] + this[_0x5d82[498]] / 2 && $sanitize(0) || inNode[_0x5d82[186]] >= this[_0x5d82[186]] + this[_0x5d82[498]] / 2 && $sanitize(2)) || inNode[_0x5d82[185]] >= this[_0x5d82[185]] + this[_0x5d82[497]] / 2 && (inNode[_0x5d82[186]] < this[_0x5d82[186]] + this[_0x5d82[498]] / 2 && $sanitize(1) || inNode[_0x5d82[186]] >= this[_0x5d82[186]] + this[_0x5d82[498]] / 2 && $sanitize(3)) ?
  3397.           true : false;
  3398.         },
  3399.         /**
  3400.          * @return {undefined}
  3401.          */
  3402.         devide : function() {
  3403.           var map = this[_0x5d82[499]] + 1;
  3404.           /** @type {number} */
  3405.           var objUid = this[_0x5d82[497]] / 2;
  3406.           /** @type {number} */
  3407.           var _0xbc34xa = this[_0x5d82[498]] / 2;
  3408.           this[_0x5d82[501]][_0x5d82[18]](new result(this[_0x5d82[185]], this[_0x5d82[186]], objUid, _0xbc34xa, map));
  3409.           this[_0x5d82[501]][_0x5d82[18]](new result(this[_0x5d82[185]] + objUid, this[_0x5d82[186]], objUid, _0xbc34xa, map));
  3410.           this[_0x5d82[501]][_0x5d82[18]](new result(this[_0x5d82[185]], this[_0x5d82[186]] + _0xbc34xa, objUid, _0xbc34xa, map));
  3411.           this[_0x5d82[501]][_0x5d82[18]](new result(this[_0x5d82[185]] + objUid, this[_0x5d82[186]] + _0xbc34xa, objUid, _0xbc34xa, map));
  3412.           map = this[_0x5d82[500]];
  3413.           /** @type {Array} */
  3414.           this[_0x5d82[500]] = [];
  3415.           /** @type {number} */
  3416.           objUid = 0;
  3417.           for (;objUid < map[_0x5d82[1]];objUid++) {
  3418.             this[_0x5d82[507]](map[objUid]);
  3419.           }
  3420.         },
  3421.         /**
  3422.          * @return {undefined}
  3423.          */
  3424.         clear : function() {
  3425.           /** @type {number} */
  3426.           var unlock = 0;
  3427.           for (;unlock < this[_0x5d82[501]][_0x5d82[1]];unlock++) {
  3428.             this[_0x5d82[501]][unlock][_0x5d82[510]]();
  3429.           }
  3430.           /** @type {number} */
  3431.           this[_0x5d82[500]][_0x5d82[1]] = 0;
  3432.           /** @type {number} */
  3433.           this[_0x5d82[501]][_0x5d82[1]] = 0;
  3434.         }
  3435.       };
  3436.       var out = {
  3437.         x : 0,
  3438.         y : 0,
  3439.         w : 0,
  3440.         h : 0
  3441.       };
  3442.       return{
  3443.         root : new result(position[_0x5d82[511]], position[_0x5d82[512]], position[_0x5d82[513]] - position[_0x5d82[511]], position[_0x5d82[514]] - position[_0x5d82[512]], 0),
  3444.         /**
  3445.          * @param {?} arr
  3446.          * @return {undefined}
  3447.          */
  3448.         insert : function(arr) {
  3449.           this[_0x5d82[515]][_0x5d82[507]](arr);
  3450.         },
  3451.         /**
  3452.          * @param {?} inverse
  3453.          * @param {?} dflt
  3454.          * @return {undefined}
  3455.          */
  3456.         retrieve : function(inverse, dflt) {
  3457.           this[_0x5d82[515]][_0x5d82[506]](inverse, dflt);
  3458.         },
  3459.         /**
  3460.          * @param {?} a22
  3461.          * @param {?} a12
  3462.          * @param {?} v
  3463.          * @param {?} count
  3464.          * @param {?} deepDataAndEvents
  3465.          * @return {undefined}
  3466.          */
  3467.         retrieve2 : function(a22, a12, v, count, deepDataAndEvents) {
  3468.           out[_0x5d82[185]] = a22;
  3469.           out[_0x5d82[186]] = a12;
  3470.           out[_0x5d82[497]] = v;
  3471.           out[_0x5d82[498]] = count;
  3472.           this[_0x5d82[515]][_0x5d82[506]](out, deepDataAndEvents);
  3473.         },
  3474.         /**
  3475.          * @param {?} err
  3476.          * @return {?}
  3477.          */
  3478.         exists : function(err) {
  3479.           return this[_0x5d82[515]][_0x5d82[504]](err);
  3480.         },
  3481.         /**
  3482.          * @return {undefined}
  3483.          */
  3484.         clear : function() {
  3485.           this[_0x5d82[515]][_0x5d82[510]]();
  3486.         }
  3487.       };
  3488.     }
  3489.   };
  3490.   /** @type {function (): undefined} */
  3491.   i[_0x5d82[516]] = init;
  3492. })(window, window.$);
Add Comment
Please, Sign In to add comment