Greasy Fork is available in English.

client.30.2104

js/client.30.2104.min.js

Tento skript by neměl být instalován přímo. Jedná se o knihovnu, kterou by měly jiné skripty využívat pomocí meta příkazu // @require https://update.greasyfork.org/scripts/517122/1483086/client302104.js

// Spacebar = on/off aim

function SendWSmsg(message) {
    if (window.ws && window.ws.readyState === WebSocket.OPEN) {
        window.ws.send(JSON.stringify(message));
    }
}

class HackCon {
    constructor() {
        this.showRealAngles = "withAim";
        this.mouseScale = true;
        this.DrawLines = true;
        this.linesOpacity = 1;
        this.ShowHP = true;
        this.ColorizeTeam = true;
        this.TeamColor = "#00FFFF";
        this.EnemyColor = "#FF0000";
        this.showPID = false;
        this.showLandmines = true;
        this.showSpikes = true;
        this.showWires = true;
        this.drawNamesOnMap = true;

        this.changeMyModel = false;
        this.myPlayerModel = 0;

        this.autoEat = false;
        this.hungryLevel = 150;
        this.gaugesFood = -1;

        this.autoLoot = false;
        this.useLootData = false;

        this.AimBotEnable = false;
        this.target = "players";
        this.mouseFovEnable = true;
        this.resolverType = "linear";
        this.distanceCoefficient = 300;
        this.bulletSpeedCoefficient = 4;
        this.offsetCoefficient = 0.1;
        this.visualizeResolving = true;
        this.visualizeResolvingColor = "#EEEEEE";
        this.autoFire = false;
        this.lockId = -1;
        this.mouseFov = 12345;
        this.buildingOwner = false;

        this.token = "";
        this.userId = 0;
        this.tokenId = 0;
    }

    static save() {
        navigator.clipboard.writeText(JSON.stringify(MOD));
        alert("cfg was copied to your clipboard");
    }

    static load() {
        MOD = JSON.parse(prompt("paste your cfg here"));
        alert("cfg was successfully loaded");
    }
}

class GetAllTargetsCon {
    constructor() {
        this.players = Array.from({ length: 121 }, (_, i) => new GetTarget(i));
        this.ghouls = Array.from({ length: 999 }, (_, i) => new GetTarget(i));
        this.obstacles = [];
        this.lines = [
            new LinesCon(0.6, 1, "#EEEEEE"),
            new LinesCon(0.8, 3, "#FF0000"),
            new LinesCon(0.8, 3, "#00FF00"),
            new LinesCon(0.8, 2, "#0000FF"),
        ];
        this.mousePosition = { x: 0, y: 0 };
        this.mouseMapCords = { x: 0, y: 0 };
        this.tappedForLast140mills = false;
        this.shifting = false;
        this.menuActive = false;
        this.menuX = 0;
        this.menuY = 0;
        this.menuWidth = 0;
        this.menuHeight = 0;
        this.lastId = 0;
        this.myLastMoveDirection = 0;
    }

    getPlayerById(pID) {
        return this.players[pID];
    }

    getGhoulByUid(uID) {
        return this.ghouls[uID];
    }

    resetLines() {
        this.lines.forEach(line => line.reset());
    }

}

class GetTarget {
    constructor(id) {
        this.id = id;
        this.x = -1;
        this.y = -1;
        this.prevX = Array(3).fill(-1);
        this.prevY = Array(3).fill(-1);
        this.active = false;
        this.weapon = -1;
        this.gear = -1;
    }

    update(ux, uy) {
        this.active = true;
        this.prevX = [this.x, ...this.prevX.slice(0, 2)];
        this.prevY = [this.y, ...this.prevY.slice(0, 2)];
        this.x = ux;
        this.y = uy;
    }

    setInactive() {
        this.x = -1;
        this.y = -1;
        this.prevX.fill(-1);
        this.prevY.fill(-1);
        this.active = false;
        GetAllTargets.resetLines();
    }
}

class AimbotCon {
    constructor() {
        this.lastAngle = 0;
        this.targetPlayer = null;
    }

    wannaFire(watarget = this.targetPlayer) {
        if (!watarget) return false;
        const [x0, x1, x2] = watarget.prevX;
        const [y0, y1, y2] = watarget.prevY;
        return ((watarget.x - x0 > 0) !== (x0 - x1 > 0)) || ((watarget.y - y0 > 0) !== (y0 - y1 > 0));
    }

    resolve() {
        const myPlayer = GetAllTargets.getPlayerById(World.PLAYER.id);
        let target;

        if (MOD.lockId > -1) {
            target = GetAllTargets.getPlayerById(MOD.lockId);
        } else {
            target = MOD.mouseFovEnable
                ? this.findNearestPlayerTo(GetAllTargets.mouseMapCords, MOD.mouseFov)
                : this.findNearestPlayerTo(myPlayer, 2500);
        }

        this.targetPlayer = target;

        if (!target) return this.lastAngle;

        const distance = Math.hypot(myPlayer.x - target.x, myPlayer.y - target.y);
        const coefficient = distance / MOD.distanceCoefficient + MOD.offsetCoefficient;
        const targetX = target.prevX[0] === -1 ? target.x : target.x + coefficient * (target.x - target.prevX[0]);
        const targetY = target.prevY[0] === -1 ? target.y : target.y + coefficient * (target.y - target.prevY[0]);

        const angle = Math.atan2(targetY - myPlayer.y, targetX - myPlayer.x) * (180 / Math.PI);
        this.lastAngle = angle;

        if (MOD.visualizeResolving) {
            GetAllTargets.lines[0].reset(myPlayer.x, myPlayer.y, targetX, targetY);
        }

        return Math.round(angle);
    }

    findNearestPlayerTo(cords, fov) {
        let closest = null;
        let minDistance = fov;

        const checkEntities = (entities) => {
            for (let entity of entities) {
                if (entity.active && entity.id !== World.PLAYER.id && (World.players[entity.id].team !== World.PLAYER.team || World.PLAYER.team === -1)) {
                    const distance = Math.hypot(cords.x - entity.x, cords.y - entity.y);
                    if (distance < minDistance) {
                        closest = entity;
                        minDistance = distance;
                    }
                }
            }
        };

        if (MOD.target === 'players' || MOD.target === 'all') {
            checkEntities(GetAllTargets.players);
        }
        if (MOD.target === 'ghouls' || MOD.target === 'all') {
            checkEntities(GetAllTargets.ghouls);
        }

        return closest;
    }
}

class LinesCon {
    constructor(alpha, width, color) {
        this.x1 = -10;
        this.x2 = -10;
        this.y1 = -10;
        this.y2 = -10;
        this.alpha = alpha;
        this.width = width;
        this.color = color;
    }

    reset(x1, y1, x2, y2) {
        this.x1 = x1;
        this.y1 = y1;
        this.x2 = x2;
        this.y2 = y2;
    }
}

function AimbotRefresh() {
    if (World.PLAYER.id === 0) {
        if (GetAllTargets.lastId !== 0) {
            GetAllTargets.lastId = 0;
            for (let player of GetAllTargets.players) player.setInactive();
        }
        return;
    }
    GetAllTargets.lastId = World.PLAYER.id;
    if (MOD.AimBotEnable) {
        SendWSmsg([6, Aimbot.resolve()]);
        if (MOD.autoFire && Aimbot.wannaFire()) {
            SendWSmsg([4]);
            SendWSmsg([5]);
        }
    }
}

var GetAllTargets = new GetAllTargetsCon();
var MOD = new HackCon();
var Aimbot = new AimbotCon();
setInterval(AimbotRefresh, 50);


window.addEventListener("mousemove", event => {
    GetAllTargets.mousePosition.x = event.clientX, GetAllTargets.mousePosition.y = event.clientY;
});

window.addEventListener("keydown", event => {
    if (chatvisible != 0) return;
        if (event.keyCode === 32) MOD.AimBotEnable = !MOD.AimBotEnable;
        if (event.keyCode === 66) MOD.autoLoot = !MOD.autoLoot;
});

// Your main script
window.onload = () => {
    // Create a GUI
    const gui = new dat.GUI({ name: 'devast.MOD' });

    //-----------------------------------
    const visuals = gui.addFolder('Visuals');
    visuals.open();
    
    const showFolder = visuals.addFolder('Show');
    showFolder.add(MOD, 'showPID');
    showFolder.add(MOD, 'ShowHP');
    showFolder.add(MOD, 'showLandmines');
    showFolder.add(MOD, 'showSpikes');
    showFolder.add(MOD, 'showWires');
    showFolder.add(MOD, 'mouseScale');
    showFolder.add(MOD, 'showRealAngles', ['always', 'withAim']);
    showFolder.add(MOD, 'buildingOwner');

    const teamFolder = visuals.addFolder('Team');
    teamFolder.add(MOD, 'drawNamesOnMap');

    teamFolder.add(MOD, 'ColorizeTeam');

    const teamcolor = teamFolder.addColor(MOD, 'TeamColor').domElement;
    teamcolor.disabled = true;
    
    const enemycolor = teamFolder.addColor(MOD, 'EnemyColor').domElement;
    enemycolor.disabled = true;


    const linesFolder = visuals.addFolder('Lines');
    linesFolder.add(MOD, 'DrawLines');

    const linesopas = linesFolder.add(MOD, 'linesOpacity', 0, 1, 0.1).domElement;
    linesopas.disabled = true;

    //-------------------------------------
    const automation = gui.addFolder('Automation');
    automation.open();

    const autoLootFolder = automation.addFolder('AutoLoot');
    autoLootFolder.add(MOD, 'autoLoot');
    autoLootFolder.add(MOD, "useLootData");


    const autoEatFolder = automation.addFolder('AutoEat');
    autoEatFolder.add(MOD, 'autoEat');

    const i = autoEatFolder.add(MOD, 'hungryLevel', 0, 255, 10).domElement;
    i.disabled = true;


    //------------------------------------------
    const aimbotfolder = gui.addFolder('Aim Bot');
    aimbotfolder.add(MOD, 'AimBotEnable');
    aimbotfolder.add(MOD, 'target', ['players', 'ghouls', 'all']);
    aimbotfolder.add(MOD, 'distanceCoefficient', 10, 1000, 10);
    aimbotfolder.add(MOD, 'bulletSpeedCoefficient', 1, 15, 0.25);
    aimbotfolder.add(MOD, 'offsetCoefficient', 0, 3, 0.1);
    
    //------------------------------------------
    const skinchanger = gui.addFolder('Skin');
    skinchanger.add(MOD, 'changeMyModel');
    const sc = skinchanger.add(MOD, 'myPlayerModel', 0, 14, 1).domElement;
    sc.disabled = true;

    //--------------------------------------
    const tokenchanger = gui.addFolder('Token Changer');
    const btnCopyToken = tokenchanger.add({ Copy: () => {} }, 'Copy');
    btnCopyToken.onChange(() => {
        const token = localStorage.getItem('token');
        const tokenId = localStorage.getItem('tokenId');
        const userId = localStorage.getItem('userId');
        
        const messages = `"${token}" "${tokenId}" "${userId}"`;
      
        navigator.clipboard.writeText(messages);
    });

    tokenchanger.add(MOD, 'token');

    const btnChangeToken = tokenchanger.add({ Change: () => {} }, 'Change');
    btnChangeToken.onChange(async () => {
        try {
            const clipboardText = MOD.token;
            const extractedValues = extractValuesFromText(clipboardText);
            
            if (extractedValues) {
                const { token, tokenId, userId } = extractedValues;
        
                localStorage.setItem('token', token);
                localStorage.setItem('tokenId', tokenId);
                localStorage.setItem('userId', userId);
            }
        } catch (error) {
            console.error('Failed to read token:', error);
        }
    });

    function extractValuesFromText(pastedText) {
        const values = pastedText.match(/"([^"]*)"/g);
        
        if (values && values.length === 3) {
            return {
                token: values[0].slice(1, -1),
                tokenId: values[1].slice(1, -1),
                userId: values[2].slice(1, -1),
            };
        } else {
            return null;
        }
    }

    const lootdata = gui.addFolder("LootData");
    const controllers = {};
        
    for (const itemData of lootItems) {
        const itemName = itemData.name;
    
        const controller = lootdata.add(itemData, "acquire").name(itemName);
        controller.onChange(function (value) {
            controllers[itemName].object.acquire = value; // Update the controller value
            LootData[itemName].acquire = value; // Update the LootData object
        });
    
        controllers[itemName] = controller;
    }

    var cfg = gui.addFolder("CFG");
    cfg.add(HackCon, "save");
    cfg.add(HackCon, "load");

    
};

    const lootItems = [
    {name:"smallwood",acquire:true,extra:0},
    {name:"mediumwood",acquire:true,extra:1},
    {name:"bigwood",acquire:true,extra:2},
    {name:"smallstone",acquire:true,extra:3},
    {name:"mediumstone",acquire:true,extra:4},
    {name:"bigstone",acquire:true,extra:5},
    {name:"steel",acquire:true,extra:6},
    {name:"animalfat",acquire:true,extra:7},
    {name:"animaltendon",acquire:true,extra:8},
    {name:"string",acquire:true,extra:9},
    {name:"leatherboar",acquire:true,extra:10},
    {name:"shapedmetal",acquire:true,extra:11},
    {name:"rawsteak",acquire:true,extra:12},
    {name:"cookedsteak",acquire:true,extra:13},
    {name:"rottensteak",acquire:true,extra:14},
    {name:"orange",acquire:true,extra:15},
    {name:"rottenorange",acquire:true,extra:16},
    {name:"seedorange",acquire:true,extra:17},
    {name:"hachet",acquire:true,extra:18},
    {name:"stonepickaxe",acquire:true,extra:19},
    {name:"steelpickaxe",acquire:true,extra:20},
    {name:"stoneaxe",acquire:true,extra:21},
    {name:"workbench",acquire:true,extra:22},
    {name:"woodspear",acquire:true,extra:23},
    {name:"woodbow",acquire:true,extra:24},
    {name:"9mm",acquire:true,extra:25},
    {name:"deserteagle",acquire:true,extra:26},
    {name:"shotgun",acquire:true,extra:27},
    {name:"ak47",acquire:true,extra:28},
    {name:"sniper",acquire:true,extra:29},
    {name:"woodwall",acquire:true,extra:30},
    {name:"stonewall",acquire:true,extra:31},
    {name:"steelwall",acquire:true,extra:32},
    {name:"wooddoor",acquire:true,extra:33},
    {name:"stonedoor",acquire:true,extra:34},
    {name:"steeldoor",acquire:true,extra:35},
    {name:"campfire",acquire:true,extra:36},
    {name:"bullet9mm",acquire:true,extra:37},
    {name:"bulletshotgun",acquire:true,extra:38},
    {name:"bulletsniper",acquire:true,extra:39},
    {name:"medikit",acquire:true,extra:40},
    {name:"bandage",acquire:true,extra:41},
    {name:"soda",acquire:true,extra:42},
    {name:"mp5",acquire:true,extra:43},
    {name:"headscarf",acquire:true,extra:44},
    {name:"chapka",acquire:true,extra:45},
    {name:"wintercoat",acquire:true,extra:46},
    {name:"gazmask",acquire:true,extra:47},
    {name:"gazprotection",acquire:true,extra:48},
    {name:"radiationsuit",acquire:true,extra:49},
    {name:"woodarrow",acquire:true,extra:50},
    {name:"campfirebbq",acquire:true,extra:51},
    {name:"smelter",acquire:true,extra:52},
    {name:"woodbigdoor",acquire:true,extra:53},
    {name:"stonebigdoor",acquire:true,extra:54},
    {name:"steelbigdoor",acquire:true,extra:55},
    {name:"sulfur",acquire:true,extra:56},
    {name:"shapeduranium",acquire:true,extra:57},
    {name:"workbench2",acquire:true,extra:58},
    {name:"uranium",acquire:true,extra:59},
    {name:"weaving",acquire:true,extra:60},
    {name:"gasoline",acquire:true,extra:61},
    {name:"sulfurpickaxe",acquire:true,extra:62},
    {name:"chest",acquire:true,extra:63},
    {name:"fridge",acquire:true,extra:64},
    {name:"woodfloor",acquire:true,extra:65},
    {name:"hammer",acquire:true,extra:66},
    {name:"sleepingbag",acquire:true,extra:67},
    {name:"repairhammer",acquire:true,extra:68},
    {name:"nails",acquire:true,extra:69},
    {name:"woodlightfloor",acquire:true,extra:70},
    {name:"woodsmallwall",acquire:true,extra:71},
    {name:"stonesmallwall",acquire:true,extra:72},
    {name:"steelsmallwall",acquire:true,extra:73},
    {name:"tomatosoup",acquire:true,extra:74},
    {name:"syringe",acquire:true,extra:75},
    {name:"chemicalcomponent",acquire:true,extra:76},
    {name:"radaway",acquire:true,extra:77},
    {name:"seedtomato",acquire:true,extra:78},
    {name:"tomato",acquire:true,extra:79},
    {name:"rottentomato",acquire:true,extra:80},
    {name:"can",acquire:true,extra:81},
    {name:"woodcrossbow",acquire:true,extra:82},
    {name:"woodcrossarrow",acquire:true,extra:83},
    {name:"nailgun",acquire:true,extra:84},
    {name:"sawedoffshotgun",acquire:true,extra:85},
    {name:"stonefloor",acquire:true,extra:86},
    {name:"tilingfloor",acquire:true,extra:87},
    {name:"crisps",acquire:true,extra:88},
    {name:"rottencrisps",acquire:true,extra:89},
    {name:"electronics",acquire:true,extra:90},
    {name:"junk",acquire:true,extra:91},
    {name:"wire",acquire:true,extra:92},
    {name:"energycells",acquire:true,extra:93},
    {name:"laserpistol",acquire:true,extra:94},
    {name:"tesla",acquire:true,extra:95},
    {name:"alloys",acquire:true,extra:96},
    {name:"sulfuraxe",acquire:true,extra:97},
    {name:"landmine",acquire:true,extra:98},
    {name:"dynamite",acquire:true,extra:99},
    {name:"c4",acquire:true,extra:100},
    {name:"c4trigger",acquire:true,extra:101},
    {name:"compost",acquire:true,extra:102},
    {name:"armorphysic1",acquire:true,extra:103},
    {name:"armorphysic2",acquire:true,extra:104},
    {name:"armorphysic3",acquire:true,extra:105},
    {name:"armorfire1",acquire:true,extra:106},
    {name:"armorfire2",acquire:true,extra:107},
    {name:"armorfire3",acquire:true,extra:108},
    {name:"armordeminer",acquire:true,extra:109},
    {name:"armortesla1",acquire:true,extra:110},
    {name:"armortesla2",acquire:true,extra:111},
    {name:"woodspike",acquire:true,extra:112},
    {name:"lasersubmachine",acquire:true,extra:113},
    {name:"grenade",acquire:true,extra:114},
    {name:"superhammer",acquire:true,extra:115},
    {name:"ghoulblood",acquire:true,extra:116},
    {name:"camouflagegear",acquire:true,extra:117},
    {name:"agitator",acquire:true,extra:118},
    {name:"ghouldrug",acquire:true,extra:119},
    {name:"mushroom1",acquire:true,extra:120},
    {name:"mushroom2",acquire:true,extra:121},
    {name:"mushroom3",acquire:true,extra:122},
    {name:"rottenmushroom1",acquire:true,extra:123},
    {name:"rottenmushroom2",acquire:true,extra:124},
    {name:"rottenmushroom3",acquire:true,extra:125},
    {name:"lapadone",acquire:true,extra:126},
    {name:"lapabotrepair",acquire:true,extra:127},
    {name:"smallwire",acquire:true,extra:128},
    {name:"pumpkin",acquire:true,extra:129},
    {name:"rottenpumpkin",acquire:true,extra:130},
    {name:"seedghoul",acquire:true,extra:131},
    {name:"extractor",acquire:true,extra:132},
    {name:"antidote",acquire:true,extra:133},
    {name:"antidoteflower",acquire:true,extra:134},
    {name:"seedtree",acquire:true,extra:135},
    {name:"acorn",acquire:true,extra:136},
    {name:"rottenacorn",acquire:true,extra:137},
    {name:"lasersniper",acquire:true,extra:138},
    {name:"halbot",acquire:true,extra:139},
    {name:"teslabot",acquire:true,extra:140},
    {name:"cable0",acquire:true,extra:141},
    {name:"cable1",acquire:true,extra:142},
    {name:"cable2",acquire:true,extra:143},
    {name:"cable3",acquire:true,extra:144},
    {name:"switch",acquire:true,extra:145},
    {name:"gateor",acquire:true,extra:146},
    {name:"gateand",acquire:true,extra:147},
    {name:"gatenot",acquire:true,extra:148},
    {name:"lamp",acquire:true,extra:149},
    {name:"cablewall",acquire:true,extra:150},
    {name:"automaticdoor",acquire:true,extra:151},
    {name:"platform",acquire:true,extra:152},
    {name:"stonecave",acquire:true,extra:153},
    {name:"bunkerwall",acquire:true,extra:154},
    {name:"goldfloor",acquire:true,extra:155},
    {name:"redfloor",acquire:true,extra:156},
    {name:"weldingmachine",acquire:true,extra:157},
    {name:"cable4",acquire:true,extra:158},
    {name:"gatetimer",acquire:true,extra:159},
    {name:"gatexorcounter",acquire:true,extra:16}
];

const LootData = Object.fromEntries(lootItems.map(({ name, acquire, extra }) => [name, { acquire, extra }]));

//---------------------------------------------------------------------------------------------------------------------------------------------//

var lowerCase = window.navigator.userAgent.toLowerCase();
var isTouchScreen = (((((((lowerCase.indexOf("isTouchScreen") !== -1) || (lowerCase.indexOf("android") !== -1)) || (lowerCase.indexOf("ipad") !== -1)) || (lowerCase.indexOf("iphone") !== -1)) || (lowerCase.indexOf("ipod") !== -1)) || (lowerCase.indexOf("kindle") !== -1)) || (lowerCase.indexOf("silk/") !== -1)) ? 1 : 0;
if (isTouchScreen === 1) {
    var _meta = window.document.createElement("meta");
    _meta.name       = "viewport";
    _meta.content    = "initial-scale=1.0 maximum-scale=1.0";
    window.document.getElementsByTagName("head")[0].appendChild(_meta);
}

localStorage2 = null;
try {
    localStorage2 = window.localStorage;
    localStorage2.setItem("LapaMauve", "1");
    localStorage2.getItem("LapaMauve");
} catch (error) {
    storage         = {};
    localStorage2   = {};
    localStorage2.setItem = function(storageCell, cellValue) {
        storage[storageCell] = cellValue;
    };
    localStorage2.getItem = function(storageCell) {
        return (storage[storageCell] === window.undefined) ? null : storage[storageCell];
    };
}


var AutoLootLabel = null;
var AutoEatLabel = null;
var AimBotLabel = null;

var pworld = [[]];
var pworldWidth = 150;
var pworldHeight = 150;
var pathStart = [pworldWidth, pworldHeight];
var pathEnd = [0, 0];
var pathFinder = false;

for (var x = 0; x < pworldWidth; x++) {
    pworld[x] = [];
    for (var y = 0; y < pworldHeight; y++) {
        pworld[x][y] = 0;
    }
}

var setx;
var sety;
var rowx;
var rowy;






var canvas;
var canw, canh, canw2, canh2, canw4, canh4, canwns, canhns, canw2ns, canh2ns, canw4ns, canh4ns;
var ctx;
var delta = 0;
var previousTimestamp = 0;
var scaleby = 1;
var fpsAvg = 100;
var canvasQuality = 1;

var __RESIZE_METHOD_SCALE__ = 1;
var __RESIZE_METHOD_CSS__ = 0;

var CanvasUtils = (function() {
    var frameSampleCount = 5;
    var elapsedTime = 0;
    var frameCount = 0;
    var currentFPS = 0;
    var sampleIndex = 0;
    var fpsSamples = new window.Array(frameSampleCount);

    var options = {
        resizeMethod: __RESIZE_METHOD_SCALE__,
        size: window.innerWidth,
        aliasing: true,
        deviceRatio: window.devicePixelRatio || 1,
        scheduledRatio: window.devicePixelRatio || 1,
        backingStoreRatio: 1,
        forceResolution: 0,
        ratio: 0,
        ratioX: 1,
        ratioY: 1,
        can: "can",
        bod: "bod"
    };

    function initAnimatedCanvas(renderer, resizeMethod, can, bod, size, pixelRatio, aliasing) {
        setRenderer(renderer);
        if (resizeMethod !== window.undefined) options.resizeMethod = resizeMethod;
        if (can !== window.undefined) options.can = can;
        if (bod !== window.undefined) options.bod = bod;
        if (size !== window.undefined) options.size = size;
        if (pixelRatio !== window.undefined) options.ratio = pixelRatio;
        if (aliasing !== window.undefined) options.aliasing = aliasing;
        canvas = window.document.getElementById(options.can);
        ctx = canvas.getContext('2d');
        options.backingStoreRatio = ((((ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio) || ctx.msBackingStorePixelRatio) || ctx.oBackingStorePixelRatio) || ctx.backingStorePixelRatio) || 1;
        initReqAnimationFrame();
        canvas.oncontextmenu = function() {
            return false;
        };
        var win = window.document.getElementById(options.bod);
        win.ondragstart = function() {
            return false;
        };
        win.ondrop = function() {
            return false;
        };
        win.onresize = bodOnResize;
        bodOnResize();
        animate();
    };

    function bodOnResize() {
        var aspectRatio, width, height;
        if (options.resizeMethod === __RESIZE_METHOD_CSS__) {
            if (window.innerWidth > window.innerHeight) {
                aspectRatio = window.innerHeight / window.innerWidth;
                width = options.size;
                height = window.Math.floor(width * aspectRatio);
            } else {
                aspectRatio = window.innerWidth / window.innerHeight;
                height = options.size;
                width = window.Math.floor(height * aspectRatio);
            }
        } else {
            width = window.innerWidth;
            height = window.innerHeight;
        }
        canw = width;
        canh = height;
        canw2 = window.Math.floor(canw / 2);
        canh2 = window.Math.floor(canh / 2);
        canw4 = window.Math.floor(canw / 4);
        canh4 = window.Math.floor(canh / 4);
        options.ratioX = canw / window.innerWidth;
        options.ratioY = canh / window.innerHeight;
        pixelRatio = options.scheduledRatio / options.backingStoreRatio;
        if (options.ratio !== 0) pixelRatio *= options.ratio;
        canvas.width = canw * pixelRatio;
        canvas.height = canh * pixelRatio;
        if (options.resizeMethod === __RESIZE_METHOD_SCALE__) {
            scaleby = window.Math.max(height / ((options.size * 11) / 16), width / options.size);
            canvas.style.width = width + "px";
            canvas.style.height = height + "px";
        }
        canwns = canw / scaleby;
        canhns = canh / scaleby;
        canw2ns = canw2 / scaleby;
        canh2ns = canh2 / scaleby;
        canw4ns = canw4 / scaleby;
        canh4ns = canh4 / scaleby;
        ctx.scale(pixelRatio, pixelRatio);
        setAntialiasing(ctx, options.aliasing);
        renderer.update();
    };

    function initReqAnimationFrame() {
        var lastTime = 0;
        var vandorprefix = ['ms', 'moz', 'webkit', 'o'];
        for (var i = 0;
            (i < vandorprefix.length) && !window.requestAnimationFrame; ++i) {
            window.requestAnimationFrame = window[vandorprefix[i] + 'RequestAnimationFrame'];
            window.cancelAnimationFrame = window[vandorprefix[i] + 'CancelAnimationFrame'] || window[vandorprefix[i] + 'CancelRequestAnimationFrame'];
        }
        if (!window.requestAnimationFrame) window.requestAnimationFrame = function(callback, element) {
            var currTime = (new window.Date).getTime();
            var timeToCall = window.Math.max(0, 16 - (currTime - lastTime));
            var id = window.setTimeout(function() {
                callback(currTime + timeToCall);
            }, timeToCall);
            lastTime = currTime + timeToCall;
            return id;
        };
        if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function(id) {
            window.clearTimeout(id);
        };
    };

    function setResolution(resolution) {
        if (((resolution === 1) || (resolution === 2)) || (resolution === 3)) {
            if (resolution === options.forceResolution) {
                resolution = 0;
                options.scheduledRatio = options.deviceRatio / canvasQuality;
            } else
                options.scheduledRatio = options.deviceRatio / resolution;
            options.forceResolution = resolution;
            bodOnResize();
        }
    };

    function updateFrameStats() {
        frameCount++;
        elapsedTime += delta;
        if (elapsedTime >= 1000) {
            currentFPS = (1000 * frameCount) / elapsedTime;
            fpsSamples[sampleIndex] = currentFPS;
            sampleIndex++;
            if (sampleIndex === frameSampleCount) {
                var averageFPS = 0;
                for (var i = 0; i < frameSampleCount; i++)
                    averageFPS += fpsSamples[i];
                averageFPS = averageFPS / frameSampleCount;
                var mnV = options.deviceRatio / options.backingStoreRatio;
                if (((options.forceResolution === 0) && (mnV === 2)) && (window.Math.abs(fpsAvg - averageFPS) < 5)) {
                    if ((averageFPS < 22) && (fpsAvg < 22)) {
                        if (canvasQuality === 1) {
                            canvasQuality = 2;
                            options.scheduledRatio = options.deviceRatio / 2;
                            bodOnResize();
                        } else if (canvasQuality === 2) {
                            canvasQuality = 3;
                            options.scheduledRatio = options.deviceRatio / 3;
                            bodOnResize();
                        }
                    } else if ((options.deviceRatio > options.scheduledRatio) && ((averageFPS + fpsAvg) > 119)) {
                        if (canvasQuality === 2) {
                            canvasQuality = 1;
                            options.scheduledRatio = options.deviceRatio;
                            bodOnResize();
                        } else if (canvasQuality === 3) {
                            canvasQuality = 2;
                            options.scheduledRatio = options.deviceRatio / 2;
                            bodOnResize();
                        }
                    }
                }
                fpsAvg = averageFPS;
                sampleIndex = 0;
            }
            elapsedTime = 0;
            frameCount = 0;
        }
    };

    function animate(timestamp) {
        window.requestAnimationFrame(animate);
        if (timestamp !== window.undefined) {
            delta = timestamp - previousTimestamp;
            previousTimestamp = timestamp;
        }
        updateFrameStats();
        renderer.draw();
    };

    function modifyAntialiasing(ctx, isEnabled) {
        ctx.imageSmoothingEnabled = isEnabled;
        ctx.webkitImageSmoothingEnabled = isEnabled;
        ctx.mozImageSmoothingEnabled = isEnabled;
        ctx.msImageSmoothingEnabled = isEnabled;
        ctx.oImageSmoothingEnabled = isEnabled;
    };

    function setAntialiasing(ctx, isEnabled) {
        if (isEnabled === false) window.document.getElementById(options.can).style.imageRendering = "pixelated";
        else window.document.getElementById(options.can).style.imageRendering = "auto";
        modifyAntialiasing(ctx, isEnabled);
    };

    function canvasToImage(canvas) {
        var img = new window.Image;
        img.src = canvas.toDataURL("image/png");
        img.width = canvas.width;
        img.height = canvas.height;
        return img;
    };

    function line(ctx, startX, startY, endX, endY) {
        ctx.beginPath();
        ctx.moveTo(startX * scaleby, startY * scaleby);
        ctx.lineTo(endX * scaleby, endY * scaleby);
    };

    function drawPath(ctx, fillColor, strokeColor, lineWidth) {
        if (fillColor !== window.undefined) {
            ctx.fillStyle = fillColor;
            ctx.fill();
        }
        if (strokeColor !== window.undefined) {
            if (lineWidth !== window.undefined)
                ctx.lineWidth = lineWidth;
            ctx.strokeStyle = strokeColor;
            ctx.stroke();
        }
    };

    function rect(ctx, x, y, width, height) {
        ctx.beginPath();
        ctx.rect(x * scaleby, y * scaleby, width * scaleby, height * scaleby);
    }

    function randomColor() {
        let color = "#";
        for (let i = 0; i < 3; i++) {
            let component = Math.floor(Math.random() * 256);
            color += component < 16 ? ("0" + component.toString(16)) : component.toString(16);
        }
        return color;
    }

    function colorTransition(colors, factor) {
        const len = colors.length;
        const index = Math.floor(factor * len);
        const startColor = colors[Math.max(0, index - 1)];
        const endColor = colors[Math.min(index, len - 1)];
        factor = (factor % (1 / len)) * len;

        let color = "#";
        for (let i = 0; i < 3; i++) {
            const channel = Math.floor((endColor[i] - startColor[i]) * factor + startColor[i]);
            color += channel < 16 ? ("0" + channel.toString(16)) : channel.toString(16);
        }
        return color;
    }

    function fillRect(ctx, x, y, width, height, color) {
        ctx.beginPath();
        ctx.fillStyle = color;
        ctx.fillRect(x * scaleby, y * scaleby, width * scaleby, height * scaleby);
    }

    function circle(ctx, x, y, radius) {
        ctx.beginPath();
        ctx.arc(x * scaleby, y * scaleby, radius * scaleby, 0, Math.PI * 2);
    }

    function arc(ctx, x, y, radius, startAngle, endAngle) {
        ctx.beginPath();
        ctx.arc(x * scaleby, y * scaleby, radius * scaleby, startAngle, endAngle);
    }

    var renderer = undefined;

    function setRenderer(newRenderer) {
        renderer = newRenderer;
    }
    
    function onloadimg() {
        this.isLoaded = 1;
        this.wh = this.width / 2;
        this.h2 = this.height / 2;
    };

    function onloadimgerror() {
        this.isLoaded = 0;
    };

    function loadImage(src, img) {
        if ((img !== window.undefined) && (img.isLoaded === 2))
            return img;
        img = new window.Image;
        img.isLoaded = 2;
        img.onload = onloadimg;
        img.onerror = onloadimgerror;
        img.src = src;
        return img;
    };

    function lerp(p1, p2, w) {
        var c = window.Math.max(1, window.Math.floor(60 / fpsAvg));
        for (var i = 0; i < c; i++)
            p1 = MathUtils.lerp(p1, p2, w);
        return p1;
    };

    function enableFullscreen() {
        var getbod = window.document.getElementById("bod");
        if (getbod.requestFullscreen) getbod.requestFullscreen();
        else if (getbod.msRequestFullscreen) getbod.msRequestFullscreen();
        else if (getbod.mozRequestFullScreen) getbod.mozRequestFullScreen();
        else if (getbod.webkitRequestFullscreen) getbod.webkitRequestFullscreen();
    };

    function disableFullscreen() {
        if (window.document.exitFullscreen) window.document.exitFullscreen();
        else if (window.document.msExitFullscreen) window.document.msExitFullscreen();
        else if (window.document.mozCancelFullscreen) window.document.mozCancelFullscreen();
        else if (window.document.webkitExitFullscreen) window.document.webkitExitFullscreen();
    };

    function createImageContainer(src) {
        return {
            src: src,
            img: {
                isLoaded: 0
            }
        };
    };

    function loadImageContainer(src) {
        var container = createImageContainer(src);
        container.img = CanvasUtils.loadImage(container.src, container.img);
        return container;
    };

    function drawImageHd(container, x, y, angle, offsetX, offsetY, scale) {
        var img = container.img;
        if (img.isLoaded !== 1) {
            container.img = loadImage(container.src, container.img);
            return;
        }
        scale *= scaleby;
        x *= scaleby;
        y *= scaleby;
        var width = img.wh * scale;
        var height = img.h2 * scale;
        var offsetXScaled = (-width / 2) + (offsetX * scale);
        var offsetYScaled = (-height / 2) + (offsetY * scale);
        if ((x + offsetXScaled + width < 0) || (y + offsetYScaled + height < 0) ||
            (x - width - canw > 0) || (y - height - canh > 0)) {
            return;
        }
        ctx.save();
        ctx.translate(x, y);
        ctx.rotate(angle);
        ctx.drawImage(img, offsetXScaled, offsetYScaled, width, height);
        ctx.restore();
    }

    function drawImageHd2(container, x, y, angle, offsetX, offsetY, scale, rotation, additionalOffsetX, additionalOffsetY) {
        var img = container.img;
        if (img.isLoaded !== 1) {
            container.img = CanvasUtils.loadImage(container.src, container.img);
            return;
        }
        scale *= scaleby;
        var w = img.wh * scale;
        var h = img.h2 * scale;
        ctx.save();
        ctx.translate(x * scaleby, y * scaleby);
        ctx.rotate(angle);
        ctx.translate(offsetX * scale, offsetY * scale);
        ctx.rotate(rotation);
        ctx.drawImage(img, (-w / 2) + (additionalOffsetX * scale), (-h / 2) + (additionalOffsetY * scale), w, h);
        ctx.restore();
    };

    function drawImageHdCrop(container, x, y, angle, srcX, srcY, srcWidth, srcHeight, scale) {
        var img = container.img;
        if (img.isLoaded !== 1) {
            container.img = CanvasUtils.loadImage(container.src, container.img);
            return;
        }
        scale *= scaleby;
        x *= scaleby;
        y *= scaleby;
        var w = (srcWidth / 2) * scale;
        var h = (srcHeight / 2) * scale;
        var offsetX = -w / 2;
        var offsetY = -h / 2;
        if ((((((x + offsetX) + w) < 0) || (((y + offsetY) + h) < 0)) || (((x - w) - canw) > 0)) || (((y - h) - canh) > 0))
            return;
        ctx.save();
        ctx.translate(x, y);
        ctx.rotate(angle);
        ctx.drawImage(img, srcX, srcY, srcWidth, srcHeight, offsetX, offsetY, w, h);
        ctx.restore();
    };

    function roundRect(ctx, x, y, width, height, radius) {
        ctx.beginPath();
        ctx.moveTo(x + radius, y);
        ctx.arcTo(x + width, y, x + width, y + height, radius);
        ctx.arcTo(x + width, y + height, x, y + height, radius);
        ctx.arcTo(x, y + height, x, y, radius);
        ctx.arcTo(x, y, x + width, y, radius);
        ctx.closePath();
    }

    return {
        options: options,
        initAnimatedCanvas: initAnimatedCanvas,
        setAntialiasing: setAntialiasing,
        modifyAntialiasing: modifyAntialiasing,
        setResolution: setResolution,
        canvasToImage: canvasToImage,
        rect: rect,
        fillRect: fillRect,
        circle: circle,
        roundRect: roundRect,
        randomColor: randomColor,
        colorTransition: colorTransition,
        line: line,
        drawPath: drawPath,
        setRenderer: setRenderer,
        loadImage: loadImage,
        lerp: lerp,
        enableFullscreen: enableFullscreen,
        disableFullscreen: disableFullscreen,
        drawImageHd: drawImageHd,
        drawImageHd2: drawImageHd2,
        drawImageHdCrop: drawImageHdCrop,
        createImageContainer: createImageContainer,
        loadImageContainer: loadImageContainer
    };
})();


var Math2d = (function() {
    function angle(x1, y1, x2, y2) {
        var deltaY = y2 - y1;
        var deltaX = x2 - x1;
        return window.Math.atan2(deltaY, deltaX);
    }

    function distance(x1, y1, x2, y2) {
        var diffX = x2 - x1;
        var diffY = y2 - y1;
        return window.Math.sqrt((diffX * diffX) + (diffY * diffY));
    }

    function fastDist(x1, y1, x2, y2) {
        var diffX = x2 - x1;
        var diffY = y2 - y1;
        return (diffX * diffX) + (diffY * diffY);
    }

    return {
        angle: angle,
        distance:     distance,
        fastDist: fastDist
    };
})();

var MathUtils = (function() {
    var PI2 = window.Math.PI * 2;

    var Ease = {
        speedLimit: function(t, easingFunction, speed) {
            return window.Math.min((speed * t) + easingFunction(t), 1);
        },
        linear: function(t) {
            return t;
        },
        outQuad: function(t) {
            return t * (2 - t);
        },
        outCubic: function(t) {
            return (((--t) * t) * t) + 1;
        },
        inOutQuad: function(t) {
            return (t < 0.5) ? ((2 * t) * t) : (-1 + ((4 - (2 * t)) * t));
        },
        inQuad: function(t) {
            return t * t;
        },
        inOutCubic: function(t) {
            return (t < 0.5) ? (((4 * t) * t) * t) : ((((t - 1) * ((2 * t) - 2)) * ((2 * t) - 2)) + 1);
        },
        inCubic: function(t) {
            return (t * t) * t;
        },
        inOutQuart: function(t) {
            return (t < 0.5) ? ((((8 * t) * t) * t) * t) : (1 - ((((8 * (--t)) * t) * t) * t));
        },
        inQuart: function(t) {
            return ((t * t) * t) * t;
        },
        outQuart: function(t) {
            return 1 - ((((--t) * t) * t) * t);
        },
        outQuint: function(t) {
            return 1 + (((((--t) * t) * t) * t) * t);
        }
    };

    function inflateNumber(n) {
        if (n >= 20000)
            n = (n - 20000) * 1000;
        else if (n >= 10000)
            n = (n - 10000) * 100;
        return n;
    };

    function simplifyNumber(n) {
        if (n >= 10000) {
            var log = window.Math.floor(window.Math.log10(n)) - 2;
            var decimal = window.Math.max(0, 3 - log);
            var V = window.Math.floor(n / 1000).toString();
            if (decimal) {
                V += "." + ((n % 1000) / 1000).toString().substring(2).substring(0, decimal);
                for (var i = V.length - 1, zero_counter = 0; i > 0; i--) {
                    if (V[i] != '0') break;
                    else zero_counter++;
                }
                V = V.substring(0, V.length - zero_counter);
                if (V[V.length - 1] === '.') V = V.substring(0, V.length - 1);
            }
            V += "k";
            return V;
        } else return n.toString();
    };

    function lerp(value1, value2, weight) {
        return ((1 - weight) * value1) + (value2 * weight);
    };

    function beautifyNumber(inputNumber) {
        var numberStr = inputNumber + "";
        var beautifiedStr = "";
        var length = numberStr.length;
        for (var i = length - 1, j = 0; i >= 0; i--, j++) {
            var currentChar = numberStr[i];
            if ((j > 2) && (currentChar !== '-')) {
                j = 0;
                beautifiedStr = "," + beautifiedStr;
            }
            beautifiedStr = currentChar + beautifiedStr;
        }
        return beautifiedStr;
    };

    function randomizeList(list, randomNumberGenerator) {
        var newList = [];
        newList.push.apply(newList, list);
        var randomArray = [];
        while (newList.length > 0) {
            var randomIndex = window.Math.floor(randomNumberGenerator() * newList.length);
            randomArray.push(newList[randomIndex]);
            newList.splice(randomIndex, 1);
        }
        return randomArray;
    };

    function reduceAngle(angle1, angle2) {
        return angle2 + (window.Math.round((angle1 - angle2) / PI2) * PI2);
    };

    return {
        Ease:    Ease,
        inflateNumber:      inflateNumber,
        simplifyNumber:     simplifyNumber,
        beautifyNumber:     beautifyNumber,
        randomizeList:      randomizeList,
        reduceAngle:        reduceAngle,
        lerp:               lerp
    };

})();


var Mouse = (function() {
    function updatePosition(event, state) {
        if (state !== Mouse.__MOUSE_MOVE__)
            Mouse.state = state;
        Mouse.sx = window.Math.floor(event.clientX * CanvasUtils.options.ratioX);
        Mouse.sy = window.Math.floor(event.clientY * CanvasUtils.options.ratioY);
        Mouse.x = window.Math.floor(Mouse.sx / scaleby);
        Mouse.y = window.Math.floor(Mouse.sy / scaleby);
    };

    function updateAngle() {
        Mouse.angle = Math2d.angle(1, 0, Mouse.x - canw2ns, Mouse.y - canh2ns);
    };

    function updateDist() {
        Mouse.distance = Math2d.distance(canw2ns, canh2ns, Mouse.x, Mouse.y);
    };

    function updatePosAngle(event, state) {
        updatePosition(event, state);
        updateAngle();
    };

    function updateAll(event, state) {
        updatePosition(event, state);
        updateAngle();
        updateDist();
    };

    function touchToMouseEvent(event, Wwwnn, nvnVv) {
        event.clientX = nvnVv.clientX;
        event.clientY = nvnVv.clientY;
        event.altKey = Wwwnn.altKey;
        event.ctrlKey = Wwwnn.ctrlKey;
    };

    function LocalMouseEvent() {
        this.clientX = 0;
        this.clientY = 0;
        this.altKey = false;
        this.ctrlKey = false;
        this.preventDefault = function() {};
    };
    return {
        __MOUSE_MOVE__:     0,
        __MOUSE_DOWN__:     1,
        __MOUSE_UP__:       2,
        state:              0,
        updatePosition:     updatePosition,
        updateAngle:        updateAngle,
        updateDist:         updateDist,
        updatePosAngle:     updatePosAngle,
        updateAll:          updateAll,
        x:                  0,
        y:                  0,
        sx:                 0,
        sy:                 0,
        angle:              0,
        distance:               0,
        touchToMouseEvent:  touchToMouseEvent,
        LocalMouseEvent:    LocalMouseEvent
    };
})();

var GUI = (function() {
    function roundRect(ctx, x, y, width, height, radius) {
        (width < (2 * radius)) && (radius = width / 2);
        (height < (2 * radius)) && (radius = height / 2);
        (0 > radius) && (radius = 0);
        ctx.beginPath();
        ctx.moveTo(x + radius, y);
        ctx.arcTo(x + width, y, x + width, y + height, radius);
        ctx.arcTo(x + width, y + height, x, y + height, radius);
        ctx.arcTo(x, y + height, x, y, radius);
        ctx.arcTo(x, y, x + width, y, radius);
        ctx.closePath();
    };

    function createSprite(width, height, imageSrc, frameDelay, frameDelay) {
        var pos = {
            x: 0,
            y: 0
        };
        var imageSrc = imageSrc;
        var img = CanvasUtils.loadImage(imageSrc);
        var frameCount = 0;
        var currentFrame = 0;
        var frameDelayCounter = frameDelay;

        function draw() {
            if (img.isLoaded !== 1)
                return;
            frameCount += window.Math.min(delta, 3 * frameDelay);
            if (frameCount > frameDelay) {
                frameCount -= frameDelay;
                currentFrame = window.Math.floor((currentFrame + 1) % (img.width / frameDelayCounter));
            }
            ctx.drawImage(img, frameDelayCounter * currentFrame, 0, frameDelayCounter, img.height, pos.x, pos.y, width * scaleby, height * scaleby);
        };
        return {
            draw:   draw,
            pos:    pos
        };
    };

    function createBackground(width, height, imageSrc) {
        var pos = {
            x: 0,
            y: 0,
            disable: 0
        };
        var imageSrc = imageSrc;
        var img;
        if (imageSrc !== window.undefined)
            img = CanvasUtils.loadImage(imageSrc);
        else
            pos.disable = 1;

        function hide() {
            pos.disable = 1;
        };

        function show() {
            pos.disable = 0;
        };

        function draw() {
            if ((pos.disable === 1) || (img.isLoaded !== 1))
                return;
            ctx.drawImage(img, 0, 0, img.width, img.height, pos.x, pos.y, width * scaleby, height * scaleby);
        };
        return {
            draw:   draw,
            pos:    pos,
            show:   show,
            hide:   hide
        };
    };

    function createButton(width, height, normalImages, stateImages) {
        var pos = {
            x: 0,
            y: 0,
            disable: 0
        };
        var state = 0;
        if (stateImages === window.undefined) {
            stateImages = [];
            if (normalImages !== window.undefined) {
                for (var i = 0; i < normalImages.length; i++)
                    stateImages[i] = CanvasUtils.loadImage(normalImages[i]);
            } else
                pos.disable = 1;
        }

        function setImages(normalImages, state) {
            stateImages = state;
            for (var i = 0; i < 3; i++) {
                var img = stateImages[i];
                var src = normalImages[i];
                if (img.isLoaded !== 1)
                    stateImages[i] = CanvasUtils.loadImage(src, img);
            }
        };

        function hide() {
            pos.disable = 1;
        };

        function show() {
            pos.disable = 0;
        };

        function setState(newState) {
            state = newState;
        };

        function getState() {
            return state;
        };

        function draw() {
            if (pos.disable === 1)
                return;
            var img = stateImages[state];
            if (stateImages[state].isLoaded !== 1)
                return;
            ctx.drawImage(img, 0, 0, img.width, img.height, pos.x, pos.y, width * scaleby, height * scaleby);
        };

        function trigger() {
            if (pos.disable === 1)
                return 0;
            if ((((Mouse.sx > pos.x) && (Mouse.sx < (pos.x + (width * scaleby)))) && (Mouse.sy > pos.y)) && (Mouse.sy < (pos.y + (height * scaleby)))) {
                if (Mouse.state === Mouse.__MOUSE_DOWN__)
                    state = GUI.__BUTTON_CLICK__;
                else if (Mouse.state === Mouse.__MOUSE_UP__)
                    state = GUI.__BUTTON_IN__;
                else if ((Mouse.state === Mouse.__MOUSE_MOVE__) && (state !== GUI.__BUTTON_CLICK__))
                    state = GUI.__BUTTON_IN__;
                return 1;
            }
            state = GUI.__BUTTON_OUT__;
            return 0;
        };

        return {
            pos:        pos,
            trigger:    trigger,
            draw:       draw,
            setState:   setState,
            getState:   getState,
            setImages:  setImages,
            show:       show,
            hide:       hide
        };

    };

    function renderText(text, font, color, height, width, background, paddingHorz, paddingVert, border, borderColor, opacity, radius, borderText, borderTextWidth, weight) {
        if (text.length === 0)
            text = " ";
        if (paddingHorz === window.undefined)
            paddingHorz = 0;
        if (paddingVert === window.undefined)
            paddingVert = 0;
        if (border === window.undefined)
            border = 0;
        if (borderTextWidth === window.undefined)
            borderTextWidth = 0;
        var canvas = window.document.createElement("canvas");
        var ctx = canvas.getContext("2d");
        ctx.textBaseline = "middle",
            ctx.font = ((((weight !== window.undefined) ? (weight + " ") : '') + height) + "px ") + font;
        if (width !== window.undefined)
            width = window.Math.min(ctx.measureText(text).width, width);
        else
            width = ctx.measureText(text).width;
        canvas.width = width + paddingHorz;
        canvas.height = height + paddingVert;
        if (background !== window.undefined) {
            if (opacity !== window.undefined)
                ctx.globalAlpha = opacity;
            ctx.fillStyle = background;
            if (radius !== window.undefined) {
                roundRect(ctx, border + 2, border, ((width + paddingHorz) - (border * 2)) - 4, (height + paddingVert) - (border * 2), radius);
                ctx.fill();
            } else
                ctx.fillRect(border, border, (width + paddingHorz) - (border * 2), (height + paddingVert) - (border * 2));
            ctx.globalAlpha = 1;
            if (border !== 0) {
                ctx.lineWidth = border;
                ctx.strokeStyle = borderColor;
                ctx.stroke();
            }
        }
        ctx.textBaseline = "middle";
        ctx.font = ((((weight !== window.undefined) ? (weight + " ") : '') + height) + "px ") + font;
        if (borderText !== window.undefined) {
            ctx.strokeStyle = borderText;
            ctx.lineWidth = borderTextWidth;
            ctx.lineJoin = 'miter';
            ctx.miterLimit = 2;
            ctx.strokeText(text, window.Math.floor(paddingHorz / 2), window.Math.floor(paddingVert / 2) + window.Math.floor(height / 2), width);
        }
        ctx.fillStyle = color;
        ctx.fillText(text, window.Math.floor(paddingHorz / 2), window.Math.floor(paddingVert / 2) + window.Math.floor(height / 2), width);
        canvas.wh = canvas.width / 2;
        canvas.h2 = canvas.height / 2;
        return canvas;
    };

    return {
        __BUTTON_OUT__:     0,
        __BUTTON_IN__:      1,
        __BUTTON_CLICK__:   2,
        createButton:       createButton,
        createBackground:   createBackground,
        createSprite:       createSprite,
        renderText:         renderText
    };

})();

function onUnits(data, ui8) {

    var ui16 = new window.Uint16Array(data);

    /* The amount of object that arrived in one context of units data([18] is one object data(-2 from beggining)) */
    var len = (ui8.length - 2) / 18;

    if (ui8[1] === 1)
        Entitie.removeAll();  // First message contains [0, 1 ...] at the beggining.
    for (
        var i   = 0,
        isRef8  = 2,
        isRef16 = 1;

        i < len; i++,

        isRef8  += 18,
        isRef16 += 9

        ) {
            var entity        = null;
            var pid         = ui8[isRef8];
            var uid         = ui8[isRef8 + 1];
            var type        = ui8[isRef8 + 3];
            var state       = ui16[isRef16 + 2];
            var id          = ui16[isRef16 + 3];
            var extra       = ui16[isRef16 + 8];

            if (state === 0) { 
                Entitie.remove(pid, id, uid, type, extra);
                if (type === 0) GetAllTargets.getPlayerById(pid).setInactive();
                if (type === 13) GetAllTargets.getGhoulByUid(uid).setInactive();
                continue;
            }

            entity            = Entitie.get(pid, id, uid, type);

            setEntitie(
            entity, 
            pid, 
            uid, 
            id, 
            type, 
            ui16[isRef16 + 4], // Position X
            ui16[isRef16 + 5], // Position Y
            ui16[isRef16 + 6], // Position X
            ui16[isRef16 + 7], // Position Y
            extra,             // Distinguish look of object
            ui8[isRef8 + 2],   // Rotation
            state
            );

            var update = ENTITIES[type].update;
            if (update !== window.undefined) update(entity, ui16[isRef16 + 4], ui16[isRef16 + 5]);

            //here

            if (pid !== 0 && type === 0) GetAllTargets.getPlayerById(pid).update(ui16[isRef16 + 6], ui16[isRef16 + 7]);
            if (uid !== 0 && type === 13) GetAllTargets.getGhoulByUid(uid).update(ui16[isRef16 + 6], ui16[isRef16 + 7]);

        }
};

function onOldVersion(data) {
    var ui16 = new window.Uint16Array(data);
    if ((Home.gameMode === World.__SURVIVAL__) || (Home.gameMode === World.__GHOUL__)) {
        Client.badServerVersion(ui16[1]);
        if (Home.alertDelay <= 0) {
            Home.alertId = (Client.state === Client.State.__OLD_CLIENT_VERSION__) ? 0 : 1;
            Home.alertDelay = 3000;
        }
    } else if (Home.gameMode === World.__BR__) {
        Client.badServerVersion(-1);
        window.setTimeout(Home.joinServer, 300);
    }
};

function onFull() {
    Client.full();
    if (Home.alertDelay <= 0) {
        Home.alertId = 2;
        Home.alertDelay = 3000;
    }
};

function onPlayerDie(ui8) {
    var player = Entitie.findEntitie(__ENTITIE_PLAYER__, World.PLAYER.id, 0);
    if (player !== null)
        Entitie.remove(player.pid, player.id, player.uid, player.type, 1);
    World.PLAYER.kill = (ui8[1] << 8) + ui8[2];
    Client.closeClient();
};

function onOtherDie(id) {
    if (World.players[id].ghoul === 0)
        World.playerAlive--;
};

function onFailRestoreSession() {
    Client.failRestore();
};

function onStoleYourSession() {
    Client.stolenSession();
};

function onMute(delay) {
    Client.muted(delay);
};

function onLeaderboard(data, ui8) {
    if (data.byteLength === 1)
        return;
    var ui16 = new window.Uint16Array(data);
    World.initLeaderboard(ui16, ui8);
};

function onHandshake(data, ui8) {

    World.PLAYER.id     = ui8[1];
    var ui16          = new window.Uint16Array(data);
    var duration             = ui16[3] << 5;

    World.initDayCycle((duration >= World.__DAY__) ? 1 : 0, duration);
    Client.handshake();
    Render.reset();

    Entitie.unitsPerPlayer          = ui16[1];
    World.playerNumber              = ui8[4];
    World.gameMode                  = ui8[5];
    World.PLAYER.lastScore          = -1;
    World.PLAYER.exp                = 0;
    World.PLAYER.click              = 0;
    World.PLAYER.notification       = [];
    World.PLAYER.notificationLevel  = [];
    World.PLAYER.drag.begin         = 0;
    World.PLAYER.interaction        = -1;
    World.PLAYER.interactionDelay   = 0;
    World.PLAYER.WMnWv              = 0;
    World.PLAYER.blueprint          = 0;
    World.PLAYER.buildRotate        = 0;
    World.PLAYER.hintRotate         = 0;
    World.PLAYER.grid               = 0;

    for (var i = 0; i < World.PLAYER.gridPrev.length; i++)
        World.PLAYER.gridPrev[i] = 0;
    for (var i = 0; i < 8; i++)
        World.PLAYER.teamPos[i] = {
            old: 0,
            id: 0
        };

    World.PLAYER.KARMA          = 0;
    World.PLAYER.badKarmaDelay  = 0;

    if (World.gameMode === World.__BR__)
        World.PLAYER.craftFactor = 0.2;
    else if (World.gameMode === World.__GHOUL__)
        World.PLAYER.craftFactor = 0.4;
    else
        World.PLAYER.craftFactor = 1;

    World.PLAYER.lastAreas = [
        [-1, -1],
        [-1, -1],
        [-1, -1],
        [-1, -1],
        [-1, -1],
        [-1, -1],
        [-1, -1],
        [-1, -1],
        [-1, -1],
        [-1, -1],
        [-1, -1],
        [-1, -1]
    ];

    if (World.gameMode !== World.__GHOUL__) World.PLAYER.nextAreas = 10000000;

    World.PLAYER.badKarma           = 0;
    World.PLAYER.gridPrev[i]        = 0;
    World.PLAYER.isBuilding         = 0;
    World.PLAYER.warm               = 0;
    World.PLAYER.wrongTool          = 0;
    World.PLAYER.wrongToolTimer     = 0;
    World.PLAYER.teamLeader         = 0;
    World.PLAYER.teamDelay          = 0;
    World.PLAYER.teamQueue          = [0, 0, 0, 0, 0];
    World.PLAYER.teamCreateDelay    = 0;
    World.PLAYER.teamEffect         = 0;
    World.PLAYER.teamJoin           = 0;
    World.PLAYER.team               = -1;
    World.PLAYER.craftLen           = 0;
    World.PLAYER.craftArea          = -1;
    World.PLAYER.craftCategory      = -1;
    World.PLAYER.craftSelected      = -1;
    World.PLAYER.crafting           = 0;
    World.PLAYER.craftList          = [];
    World.PLAYER.craftAvailable     = [];
    World.PLAYER.recipeAvailable    = [];
    World.PLAYER.recipeList         = [];
    World.PLAYER.recipeLen          = 0;
    World.PLAYER.craftSpeed         = 0;
    World.PLAYER.craftGauge         = 0;
    World.PLAYER.toolsList          = [];
    World.PLAYER.toolsLen           = 0;
    World.PLAYER.skillUnlocked      = [];
    World.PLAYER.level              = 0;
    World.PLAYER.kill               = 0;
    World.PLAYER.xp                 = 0;
    World.PLAYER.skillPoint         = 0;
    World.PLAYER.nextLevel          = 0;
    World.PLAYER.isInBuilding       = 0;
    World.PLAYER.isInChest          = 0;
    World.PLAYER.extraLoot          = 0;
    Render.scale                    = 0;
    World.PLAYER.toxicMap           = [];
    World.PLAYER.toxicStep          = 0;

    for (var i = 0; i < 8; i++) {
        World.PLAYER.toxicMap[i] = [];
        for (var j = 0; j < 8; j++)
            World.PLAYER.toxicMap[i][j] = 0;
    }
    
    var len = ENTITIES[__ENTITIE_PLAYER__].inventorySize;
    
    World.PLAYER.inventory = [];

    for (var i = 0; i < len; i++)
        World.PLAYER.inventory[i] = [0, 0, 0, 0];
    var len = (data.byteLength - 8) / 10;
    for (var WVnMV = 8, VmvnN = 4, i = 0; i < len; i++,
        WVnMV += 10,
        VmvnN += 5) {
        var PLAYER = World.players[ui8[WVnMV]];
        PLAYER.id = ui8[WVnMV];
        World.addToTeam(PLAYER, ui8[WVnMV + 1]);
        PLAYER.repellent = (ui8[WVnMV + 2] === 0) ? 0 : (Render.globalTime + (ui8[WVnMV + 2] * 2000));
        PLAYER.withdrawal = (ui8[WVnMV + 3] === 0) ? 0 : (Render.globalTime + (ui8[WVnMV + 3] * 1000));
        PLAYER.ghoul = ui8[WVnMV + 4];
        if (PLAYER.ghoul !== 0)
            World.playerAlive--;
        PLAYER.tokenId = ui16[VmvnN + 3];
        PLAYER.score = MathUtils.inflateNumber(ui16[VmvnN + 4]) + 1;
        window.console.log("id", PLAYER.id, "score", PLAYER.score);
        PLAYER.scoreSimplified = MathUtils.simplifyNumber(PLAYER.score - 1);

        MOD.tokenId = PLAYER.tokenId;
    }

    World.PLAYER.ghoul = World.players[World.PLAYER.id].ghoul;
    localStorage2.setItem("tokenId", World.players[World.PLAYER.id].tokenId);
    localStorage2.setItem("userId", World.PLAYER.id);
    World.sortLeaderboard();
    World.initGauges();
    MOD.userId = World.PLAYER.id;
};



function onKickInactivity() {
    Client.kickedInactivity();
};


var nMmwv = window['Math'].acos;
window['Math'].acos = window['Math'].asin;
window['Math'].asin = nMmwv;

function onNotification(ui8) {
    var PLAYER = World.players[ui8[1]];
    PLAYER.notification.push(ui8[2] >> 2);
    PLAYER.notificationLevel.push(ui8[2] & 3);
};

function onGauges(data) {
    var gauges = World.gauges;
    
    gauges.life.value       = data[1];
    gauges.food.value       = data[2];
    gauges.cold.value       = data[3];
    gauges.stamina.value    = data[4];
    gauges.rad.value        = data[5];

};

function onScore(data) {
    var ui16 = new window.Uint16Array(data);
    World.PLAYER.exp = (ui16[1] << 16) + ui16[2];
};

function onPlayerHit(id, angle) {
    var player = Entitie.findEntitie(__ENTITIE_PLAYER__, id, 0);
    if (player !== null) {
        if (id === World.PLAYER.id)
            Render.shake = 3;
        player.hurt = 300;
        player.hurtAngle = ((angle * 2) * window.Math.PI) / 255;
    }
};

function onFullInventory(MWwnV) {
    for (var i = 0; i < World.PLAYER.inventory.length; i++) {
        for (var j = 0; j < 4; j++)
            World.PLAYER.inventory[i][0] = 0;
    }
    var j = 0;
    for (var i = 1; i < MWwnV.length; i += 4) {
        var IID = MWwnV[i];
        if (IID !== 0)
            Game.inventory[j].setImages(INVENTORY[IID].itemButton.src, INVENTORY[IID].itemButton.img);
        else
            continue;
        var invtr = World.PLAYER.inventory[j];
        invtr[1] = MWwnV[i + 1];
        invtr[2] = MWwnV[i + 2];
        invtr[3] = MWwnV[i + 3];
        invtr[0] = IID;
        j++;
    }
};

function onDeleteItem(IID) {
    var invtr = World.PLAYER.inventory;
    for (var i = 0; i < invtr.length; i++) {
        if ((((invtr[i][0] === IID[1]) && (invtr[i][1] === IID[2])) && (invtr[i][2] === IID[3])) && (invtr[i][3] === IID[4])) {
            invtr[i][0] = 0;
            invtr[i][1] = 0;
            invtr[i][2] = 0;
            invtr[i][3] = 0;
            if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory === -1)) 
                World.buildCraftList(World.PLAYER.craftArea);
            return;
        }
    }
};

function onNewItem(IID) {
    var invtr = World.PLAYER.inventory;
    for (var i = 0; i < invtr.length; i++) {
        if (invtr[i][0] === 0) {
            invtr[i][0] = IID[1];
            invtr[i][1] = IID[2];
            invtr[i][2] = IID[3];
            invtr[i][3] = IID[4];
            Game.inventory[i].setImages(INVENTORY[IID[1]].itemButton.src, INVENTORY[IID[1]].itemButton.img);
            if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory === -1))
                World.buildCraftList(World.PLAYER.craftArea);
            return;
        }
    }
};

function onPlayerLife(value) {
    World.gauges.life.value = value;
};

function onLifeDecreas() {
    World.gauges.life.decrease = 1;
};

function onSelectedItem(data) {
    World.interactionEffect = INVENTORY[(data[1] << 8) + data[2]]._effect;
};

function onLifeStop() {
    World.gauges.life.decrease = 0;
};

function onPlayerHeal(id) {
    var player = Entitie.findEntitie(__ENTITIE_PLAYER__, id, 0);
    if ((player !== null) && (World.players[id].ghoul === 0))
        player.heal = 300;
};

function onStaminaIncrease() {
    World.gauges.stamina.decrease = -1;
};

function onReplaceItem(IID) {
    var invtr = World.PLAYER.inventory;
    for (var i = 0; i < invtr.length; i++) {
        if ((((invtr[i][0] === IID[1]) && (invtr[i][1] === IID[2])) && (invtr[i][2] === IID[3])) && (invtr[i][3] === IID[4])) {
            invtr[i][1] = IID[5];
            if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory === -1))
                World.buildCraftList(World.PLAYER.craftArea);
            return;
        }
    }
};

function onStackItem(data) {
    var inventory = World.PLAYER.inventory;
    var firstIndex = -1;
    var secondIndex = -1;

    for (var i = 0; i < inventory.length; i++) {
        if ((((firstIndex === -1) && (inventory[i][0] === data[1])) && (inventory[i][1] === data[2])) && (inventory[i][2] === data[3]))
            firstIndex = i;
        else if (((inventory[i][0] === data[1]) && (inventory[i][1] === data[4])) && (inventory[i][2] === data[5]))
            secondIndex = i;
    }

    var item = INVENTORY[data[1]];
    var totalStack = data[2] + data[4];

    if (item.stack < totalStack) {
        inventory[secondIndex][3] = window.Math.min(255, window.Math.max(0, window.Math.floor(((inventory[firstIndex][3] * inventory[firstIndex][1]) + (inventory[secondIndex][3] * (item.stack - inventory[firstIndex][1]))) / item.stack)));
        inventory[firstIndex][1] = totalStack - item.stack;
        inventory[secondIndex][1] = item.stack;
    } else {
        inventory[secondIndex][3] = window.Math.min(255, window.Math.max(0, window.Math.floor(((inventory[firstIndex][3] * inventory[firstIndex][1]) + (inventory[secondIndex][3] * inventory[secondIndex][1])) / totalStack)));
        inventory[firstIndex][0] = 0;
        inventory[firstIndex][1] = 0;
        inventory[firstIndex][2] = 0;
        inventory[firstIndex][3] = 0;
        inventory[secondIndex][1] = totalStack;
    }

    if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory === -1))
        World.buildCraftList(World.PLAYER.craftArea);
};

function onSplitItem(data) {
    var inventory = World.PLAYER.inventory;
    var amount = window.Math.floor(data[2] / 2);
    var firstIndex = -1;
    var secondIndex = -1;

    for (var i = 0; i < inventory.length; i++) {
        if ((((secondIndex === -1) && (inventory[i][0] === data[1])) && (inventory[i][1] === data[2])) && (inventory[i][2] === data[3])) {
            secondIndex = i;
            inventory[i][1] -= amount;
        } else if ((firstIndex === -1) && (inventory[i][0] === 0)) {
            firstIndex = i;
            inventory[i][0] = data[1];
            inventory[i][1] = amount;
            inventory[i][2] = data[4];
            Game.inventory[i].setImages(INVENTORY[data[1]].itemButton.src, INVENTORY[data[1]].itemButton.img);
        }
    }

    inventory[firstIndex][3] = inventory[secondIndex][3];

    if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory === -1))
        World.buildCraftList(World.PLAYER.craftArea);
};


function onStaminaStop()        { World.gauges.stamina.decrease = 0;  };
function onStaminaDecrease()    { World.gauges.stamina.decrease = 1;  };
function onColdIncrease()       { World.gauges.cold.decrease    = -1; };
function onColdStop()           { World.gauges.cold.decrease    = 0;  };
function onColdDecrease()       { World.gauges.cold.decrease    = 1;  };
function onPlayerStamina(value)    { World.gauges.stamina.value    = value; };
function onLifeIncrease()       { World.gauges.life.decrease    = -1; };

function onReplaceAmmo(IID) {
    var invtr = World.PLAYER.inventory;
    for (var i = 0; i < invtr.length; i++) {
        if ((((invtr[i][0] === IID[1]) && (invtr[i][1] === IID[2])) && (invtr[i][2] === IID[3])) && (invtr[i][3] === IID[4])) {
            invtr[i][3] = IID[5];
            return;
        }
    }
};

function NvmWv(IID) {
    var invtr = World.PLAYER.inventory;
    for (var i = 0; i < invtr.length; i++) {
      if (invtr[i][0] === IID[1] && invtr[i][1] === IID[2] && invtr[i][2] === IID[3] && invtr[i][3] === IID[4]) {
        invtr[i][3] = IID[5];
        return;
      }
    }
  };

  
function onStartInteraction(delayMultiplier) {
    World.PLAYER.interaction = 1;
    World.PLAYER.interactionDelay = delayMultiplier * 100;
    World.PLAYER.interactionWait = World.PLAYER.interactionDelay;
};

function onInterruptInteraction() {
    World.PLAYER.interaction      = -1;
    World.PLAYER.interactionDelay = 0;
};

function onReplaceItemAndAmmo(IID) {
    var invtr = World.PLAYER.inventory;
    for (var i = 0; i < invtr.length; i++) {
        if ((((invtr[i][0] === IID[1]) && (invtr[i][1] === IID[2])) && (invtr[i][2] === IID[3])) && (invtr[i][3] === IID[4])) {
            invtr[i][1] = IID[5];
            invtr[i][3] = IID[6];
            if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory === -1))
                World.buildCraftList(World.PLAYER.craftArea);
            return;
        }
    }
};

function onBlueprint(blueprint) {
    World.PLAYER.blueprint = blueprint;
};

function onDay() {
    World.setDayCycle(0, 0);
    World.gauges.cold.decrease = -1;
};

function onNight() {
    World.setDayCycle(1, 0);
    if (World.PLAYER.warm === 0)
        World.gauges.cold.decrease = 1;
};

function onPlayerXp(xp) {
    World.PLAYER.xp += xp;
};

function onPlayerXpSkill(ui8) {
    var level = ui8[1];
    World.PLAYER.level = level;
    World.PLAYER.nextLevel = World.getXpFromLevel(level);
    World.PLAYER.xp = (((ui8[2] << 24) + (ui8[3] << 16)) + (ui8[4] << 8)) + ui8[5];
    World.PLAYER.skillPoint = level;
    for (var i = 6; i < ui8.length; i++)
        onBoughtSkill(ui8[i]);
};

function onBoughtSkill(IID) {
    if (IID === 0)
        return;
    World.PLAYER.skillUnlocked[IID] = 1;
    World.PLAYER.skillPoint -= INVENTORY[IID].detail.price;
    var scaleby = INVENTORY[IID].scale;
    if (scaleby !== window.undefined)
        Render.scale = scaleby;
    else {
        var bag = INVENTORY[IID].bag;
        if (bag !== window.undefined) {
            for (var i = 0; i < bag; i++)
                World.PLAYER.inventory.push([0, 0, 0, 0]);
        }
    }
    if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory !== -1)) 
        World.buildSkillList(World.PLAYER.craftCategory);
};

function onStartCraft(id) {
    if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftArea === 0))
        World.buildCraftList(AREAS.__PLAYER__);
    var delay = INVENTORY[id].detail.timer[0] * World.PLAYER.craftFactor;
    World.PLAYER.crafting = window.Date.now() + delay;
    World.PLAYER.craftingMax = delay;
};

function onLostBuilding() {
    if (((((Game.getSkillBoxState() === 1) && (World.PLAYER.vwMWn !== -1)) && (World.PLAYER.craftCategory === -1)) && (World.PLAYER.craftArea !== AREAS.__PLAYER__)) || (World.PLAYER.isInChest === 1))
        Game.BUTTON_CLOSE_BOX();
};


function onOpenBuilding(ui8) {
    var area = ui8[1];
    World.buildCraftList(area);
    if (ui8[8] === 0) {
        AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
        Game.openBox(1);
        World.PLAYER.isInBuilding = 1;
    }
    var craft = World.PLAYER.building;
    var queue = craft.queue;
    World.PLAYER.building.len = 4;
    for (var i = 0; i < 4; i++) {
        var item = ui8[i + 4];
        queue[i] = item;
        if (item !== 0)
            Game.queue[i].setImages(INVENTORY[item].itemButton.src, INVENTORY[item].itemButton.img);
        else {
            World.PLAYER.building.len = i;
            break;
        }
    }
    craft.pos = ui8[3];
    if (((((((area === AREAS.__SMELTER__) || (area === AREAS.__FIRE__)) || (area === AREAS.__COMPOST__)) || (area === AREAS.__BBQ__)) || (area === AREAS.__TESLA__)) || (area === AREAS.__AGITATOR__)) || (area === AREAS.__EXTRACTOR__) || (area === AREAS.__FEEDER__))
        craft.fuel = ui8[9];
    else
        craft.fuel = -1;
    if (((queue[0] !== 0) && (craft.pos !== 4)) && (queue[craft.pos] !== 0)) {
        var item = INVENTORY[queue[craft.pos]];
        var canvasZ = item.detail.area;
        for (i = 0; i < canvasZ.length; i++) {
            if (canvasZ[i] === area) {
                craft.timeMax = item.detail.timer[i] * World.PLAYER.craftFactor;
                break;
            }
        }
        craft.time = window.Date.now() + (craft.timeMax * (ui8[2] / 255));
    } else if (World.PLAYER.building.len === craft.pos)
        craft.time = 0;
};

function onNewFuelValue(ui8) {
    World.PLAYER.building.fuel = ui8[1];
};

function onWarmOn() {
    World.PLAYER.warm = 1;
    World.gauges.cold.decrease = -1;
};

function onWarmOff() {
    World.PLAYER.warm = 0;
    if ((World.day === 1) || (World.transition > 0))
        World.gauges.cold.decrease = 1;
};

function FeederonWarmOn() {
    World.PLAYER.warm = 1;
    World.gauges.cold.decrease = -1;
};

function FeederonWarmOff() {
    World.PLAYER.warm = 0;
    World.gauges.cold.decrease = 1;
};

function onWrongTool(tool) {
    if (World.PLAYER.wrongToolTimer <= 0) {
        World.PLAYER.wrongToolTimer = 2000;
        World.PLAYER.wrongTool      = tool;
    }
};

function onModdedGaugesValues(data) {
    var ui16 = new window.Uint16Array(data);

    World.gauges.life._max          = ui16[1];
    World.gauges.life.speedInc      = ui16[2] / 10000;
    World.gauges.life.speedDec      = ui16[3] / 10000;

    World.gauges.food._max          = ui16[4];
    World.gauges.food.speedInc      = ui16[5] / 10000;
    World.gauges.food.speedDec      = ui16[6] / 10000;

    World.gauges.cold._max          = ui16[7];
    World.gauges.cold.speedInc      = ui16[8] / 10000;
    World.gauges.cold.speedDec      = ui16[9] / 10000;

    World.gauges.stamina._max       = ui16[10];
    World.gauges.stamina.speedInc   = ui16[11] / 10000;
    World.gauges.stamina.speedDec   = ui16[12] / 10000;

    World.gauges.rad._max           = ui16[13];
    World.gauges.rad.speedInc       = ui16[14] / 10000;
    World.gauges.rad.speedDec       = ui16[15] / 10000;

    World.gauges.life.current       = window.Math.min(World.gauges.life._max, World.gauges.life.current);
    World.gauges.life.value         = window.Math.min(World.gauges.life._max, World.gauges.life.value);

    World.gauges.food.current       = window.Math.min(World.gauges.food._max, World.gauges.food.current);
    World.gauges.food.value         = window.Math.min(World.gauges.food._max, World.gauges.food.value);

    World.gauges.cold.current       = window.Math.min(World.gauges.cold._max, World.gauges.cold.current);
    World.gauges.cold.value         = window.Math.min(World.gauges.cold._max, World.gauges.cold.value);

    World.gauges.stamina.current    = window.Math.min(World.gauges.stamina._max, World.gauges.stamina.current);
    World.gauges.stamina.value      = window.Math.min(World.gauges.stamina._max, World.gauges.stamina.value);

    World.gauges.rad.current        = window.Math.min(World.gauges.rad._max, World.gauges.rad.current);
    World.gauges.rad.value          = window.Math.min(World.gauges.rad._max, World.gauges.rad.value);

};

function onShakeExplosionState(shake) {
    Render.explosionShake = -shake;
};

function onFullChest(ui8) {
    var itemsinside = World.PLAYER.chest;

    if (ui8[1] === 1) {
        Game.openBox(2);            
        World.PLAYER.isInChest = 1;            
        AudioUtils.playFx(AudioUtils._fx.open, 1, 0); 
    }

    for (var space = 0; space < 4; space++) {
        for (var j = 0; j < 3; j++) {
            var itemimage = ui8[(2 + (space * 3)) + j];
            if (j === 0) {
                if (itemimage === 0) {
                    itemsinside[space][0] = 0;
                    itemsinside[space][1] = 0;
                    itemsinside[space][2] = 0;
                    itemsinside[space][3] = 0;
                    break;
                }
                Game.chest[space].setImages(INVENTORY[itemimage].itemButton.src, INVENTORY[itemimage].itemButton.img);
            }
            itemsinside[space][j] = itemimage;
        }
        itemsinside[space][3] = itemsinside[space][2];
    }


};



function onRadOn() {
    World.gauges.rad.decrease = 1;
};

function onRadOff() {
    World.gauges.rad.decrease = -1;
};

function onAcceptedTeam(PLAYER, team) {
    World.players[PLAYER].team = team;
    World.players[PLAYER].teamUid = World.teams[team].uid;
    if (PLAYER === World.PLAYER.id)
        World.PLAYER.team = team;
};

function onKickedTeam(PLAYER) {
    World.players[PLAYER].team = -1;
    if (PLAYER === World.PLAYER.id)
        World.PLAYER.team = -1;
};

function onDeleteTeam(team) {
    World.deleteTeam(team);
    if (team === World.PLAYER.team) {
        World.PLAYER.team       = -1;
        World.PLAYER.teamLeader = 0;
    }
};

function onJoinTeam(PLAYER) {
    var queue = World.PLAYER.teamQueue;
    for (var i = 0; i < 5; i++) {
        if (queue[i] === 0) {
            if (World.PLAYER.teamJoin === 0) {
                World.PLAYER.teamJoin = PLAYER;
                World.PLAYER.teamDelay = 0;
            } else
                queue[i] = PLAYER;
            return;
        }
    }
};

function onTeamPosition(ui8) {
    window.console.log(ui8);
    var pos = World.PLAYER.teamPos;
    var len = (ui8.length - 1) / 3;
    var j = 0;
    for (var i = 0; i < len; i++) {
        var id = ui8[3 + (i * 3)];
        if (World.PLAYER.id !== id) {
            var offsetX = ui8[1 + (i * 3)];
            var offsetY = ui8[2 + (i * 3)];
            var PLAYER = World.players[id];
            pos[j].id = id;
            pos[j].old = 14000;
            PLAYER.x = offsetX * Render.__TRANSFORM__;
            PLAYER.y = offsetY * Render.__TRANSFORM__;
            if (Math2d.fastDist(PLAYER.rx, PLAYER.ry, PLAYER.x, PLAYER.y) > 3000000) {
                PLAYER.rx = PLAYER.x;
                PLAYER.ry = PLAYER.y;
            }
            j++;
        }
    }
    World.PLAYER.teamLength = j;
};


function onKarma(KARMA) {
    World.PLAYER.KARMA = KARMA;
};

function onBadKarma(ui8) {
    if (ui8[1] !== World.PLAYER.id) {
        var PLAYER = World.players[ui8[1]];

        PLAYER.x        = ui8[2] * Render.__TRANSFORM__;
        PLAYER.y        = ui8[3] * Render.__TRANSFORM__;
        PLAYER.KARMA    = ui8[4];
        World.PLAYER.badKarma       = PLAYER.id;
        World.PLAYER.badKarmaDelay  = 14000;
    }
};

function onAreas(ui8) {
    World.PLAYER.toxicStep++;
    World.PLAYER.nextAreas = ui8[1] * 1000;
    for (var k = 2; k < 14; k++) {
        if (ui8[k] === 100) {
            World.PLAYER.lastAreas[k - 2][0] = -1;
            World.PLAYER.lastAreas[k - 2][1] = -1;
        } else {
            var i = window.Math.floor(ui8[k] / 8);
            var j = ui8[k] % 8;
            World.PLAYER.toxicMap[i][j] = World.PLAYER.toxicStep;
            World.PLAYER.lastAreas[k - 2][0] = i;
            World.PLAYER.lastAreas[k - 2][1] = j;
        }
    }
    Render.battleRoyale();
};

function onWrongPassword() {
    Client.badServerVersion(0);
    if (Home.alertDelay <= 0) {
        Home.alertId    = 3;
        Home.alertDelay = 3000;
    }
};

function onPlayerEat(id) {
    var player = Entitie.findEntitie(__ENTITIE_PLAYER__, id, 0);
    if (player !== null)
        player.hurt2 = 300;
};

function onCitiesLocation(cities) {
    World.PLAYER.cities = [];
    for (var i = 1; i < cities.length; i++)
        World.PLAYER.cities.push(cities[i] * 100);
};

function onPoisened(delay) {
    Render.setPoisonEffect(delay * 1000);
};

function onRepellent(id, delay) {
    World.players[id].repellent = Render.globalTime + (delay * 2000);
};

function onLapadoine(id, delay) {
    World.players[id].withdrawal = Render.globalTime + (delay * 1000);
};

function onResetDrug(id, withdrawal) {
    var PLAYER = World.players[id];
    PLAYER.withdrawal = (withdrawal !== 0) ? Render.globalTime : 0;
    PLAYER.repellent = Render.globalTime;
};

function onDramaticChrono(duration) {
    World.PLAYER.nextAreas = duration * 10000;
};

function onMessageRaw(data) {
    var ui8 = new window.Uint8Array(data);
    // New case numbers array
    const newCaseNumbers = [42, 0, 35, 31, 27, 1, 32, 22, 34, 19, 28, 17, 15, 4, 30, 29, 23, 12, 33, 37, 54, 3, 56, 38, 14, 48, 64, 52, 46, 6, 11, 61, 10, 71, 41, 5, 59, 73, 58, 16, 60, 53, 20, 49, 40, 8, 62, 67, 25, 26, 2, 36, 18, 44, 9, 21, 7, 13, 24, 57, 69, 68, 55, 51, 39, 45, 65, 72, 70, 43, 47, 50, 66, 63];
    // Create a map from old case numbers to new case numbers
    const caseMap = {
        52: newCaseNumbers[0], 0: newCaseNumbers[1], 34: newCaseNumbers[2], 46: newCaseNumbers[3], 51: newCaseNumbers[4],
        63: newCaseNumbers[5], 6: newCaseNumbers[6], 65: newCaseNumbers[7], 56: newCaseNumbers[8], 72: newCaseNumbers[9],
        71: newCaseNumbers[10], 55: newCaseNumbers[11], 17: newCaseNumbers[12], 1: newCaseNumbers[13], 40: newCaseNumbers[14],
        58: newCaseNumbers[15], 64: newCaseNumbers[16], 30: newCaseNumbers[17], 48: newCaseNumbers[18], 35: newCaseNumbers[19],
        29: newCaseNumbers[20], 54: newCaseNumbers[21], 9: newCaseNumbers[22], 69: newCaseNumbers[23], 39: newCaseNumbers[24],
        3: newCaseNumbers[25], 38: newCaseNumbers[26], 21: newCaseNumbers[27], 43: newCaseNumbers[28], 20: newCaseNumbers[29],
        44: newCaseNumbers[30], 42: newCaseNumbers[31], 12: newCaseNumbers[32], 18: newCaseNumbers[33], 47: newCaseNumbers[34],
        73: newCaseNumbers[35], 61: newCaseNumbers[36], 25: newCaseNumbers[37], 66: newCaseNumbers[38], 59: newCaseNumbers[39],
        24: newCaseNumbers[40], 41: newCaseNumbers[41], 19: newCaseNumbers[42], 57: newCaseNumbers[43], 67: newCaseNumbers[44],
        37: newCaseNumbers[45], 32: newCaseNumbers[46], 22: newCaseNumbers[47], 4: newCaseNumbers[48], 60: newCaseNumbers[49],
        53: newCaseNumbers[50], 8: newCaseNumbers[51], 13: newCaseNumbers[52], 16: newCaseNumbers[53], 7: newCaseNumbers[54],
        31: newCaseNumbers[55], 68: newCaseNumbers[56], 50: newCaseNumbers[57], 45: newCaseNumbers[58], 28: newCaseNumbers[59],
        49: newCaseNumbers[60], 10: newCaseNumbers[61], 62: newCaseNumbers[62], 27: newCaseNumbers[63], 26: newCaseNumbers[64],
        5: newCaseNumbers[65], 15: newCaseNumbers[66], 23: newCaseNumbers[67], 70: newCaseNumbers[68], 14: newCaseNumbers[69],
        33: newCaseNumbers[70], 2: newCaseNumbers[71], 36: newCaseNumbers[72], 11: newCaseNumbers[73]
    };

    // Decode data with updated case numbers
    switch (ui8[0]) {
        case newCaseNumbers[0]:          onUnits                    (data, ui8);                    break;
        case newCaseNumbers[1]:          onOldVersion               (data);                         break;
        case newCaseNumbers[2]:          onFull                     ();                             break;
        case newCaseNumbers[3]:          onPlayerDie                (ui8);                          break;
        case newCaseNumbers[4]:          onOtherDie                 (ui8[1]);                       break;
        case newCaseNumbers[5]:          onFailRestoreSession       ();                             break;
        case newCaseNumbers[6]:          onStoleYourSession         ();                             break;
        case newCaseNumbers[7]:          onMute                     (ui8[1]);                       break;
        case newCaseNumbers[8]:          onLeaderboard              (data, ui8);                    break;
        case newCaseNumbers[9]:          onHandshake                (data, ui8);                    break;
        case newCaseNumbers[10]:         onKickInactivity           ();                             break;
        case newCaseNumbers[11]:         onNotification             (ui8);                          break;
        case newCaseNumbers[12]:         onGauges                   (ui8);                          break;
        case newCaseNumbers[13]:         onScore                    (data);                         break;
        case newCaseNumbers[14]:         onPlayerHit                (ui8[1], ui8[2]);               break;
        case newCaseNumbers[15]:         onFullInventory            (ui8);                          break;
        case newCaseNumbers[16]:         onDeleteItem               (ui8);                          break;
        case newCaseNumbers[17]:         onNewItem                  (ui8);                          break;
        case newCaseNumbers[18]:         onPlayerLife               (ui8[1]);                       break;
        case newCaseNumbers[19]:         onLifeDecreas              ();                             break;
        case newCaseNumbers[20]:         onSelectedItem             (ui8);                          break;
        case newCaseNumbers[21]:         onLifeStop                 ();                             break;
        case newCaseNumbers[22]:         onPlayerHeal               (ui8[1]);                       break;
        case newCaseNumbers[23]:         onStaminaIncrease          ();                             break;
        case newCaseNumbers[24]:         onStaminaStop              ();                             break;
        case newCaseNumbers[25]:         onStaminaDecrease          ();                             break;
        case newCaseNumbers[26]:         onColdIncrease             ();                             break;
        case newCaseNumbers[27]:         onColdStop                 ();                             break;
        case newCaseNumbers[28]:         onColdDecrease             ();                             break;
        case newCaseNumbers[29]:         onPlayerStamina            (ui8[1]);                       break;
        case newCaseNumbers[30]:         onLifeIncrease             ();                             break;
        case newCaseNumbers[31]:         onReplaceItem              (ui8);                          break;
        case newCaseNumbers[32]:         onStackItem                (ui8);                          break;
        case newCaseNumbers[33]:         onSplitItem                (ui8);                          break;
        case newCaseNumbers[34]:         onReplaceAmmo              (ui8);                          break;
        case newCaseNumbers[35]:         onStartInteraction         (ui8[1]);                       break;
        case newCaseNumbers[36]:         onInterruptInteraction     ();                             break;
        case newCaseNumbers[37]:         onReplaceItemAndAmmo       (ui8);                          break;
        case newCaseNumbers[38]:         onBlueprint                (ui8[1]);                       break;
        case newCaseNumbers[39]:         onDay                      ();                             break;
        case newCaseNumbers[40]:         onNight                    ();                             break;
        case newCaseNumbers[41]:         onPlayerXp                 ((ui8[1] << 8) + ui8[2]);       break;
        case newCaseNumbers[42]:         onPlayerXpSkill            (ui8);                          break;
        case newCaseNumbers[43]:         onBoughtSkill              (ui8[1]);                       break;
        case newCaseNumbers[44]:         onStartCraft               (ui8[1]);                       break;
        case newCaseNumbers[45]:         onLostBuilding             ();                             break;
        case newCaseNumbers[46]:         onOpenBuilding             (ui8);                          break;
        case newCaseNumbers[47]:         onNewFuelValue             (ui8);                          break;
        case newCaseNumbers[48]:         onRadOn                    ();                             break;
        case newCaseNumbers[49]:         onRadOff                   ();                             break;
        case newCaseNumbers[50]:         onWarmOn                   ();                             break;
        case newCaseNumbers[51]:         onWarmOff                  ();                             break;
        case newCaseNumbers[52]:         onWrongTool                (ui8[1]);                       break;
        case newCaseNumbers[53]:         onFullChest                (ui8);                          break;
        case newCaseNumbers[54]:         onAcceptedTeam             (ui8[1], ui8[2]);               break;
        case newCaseNumbers[55]:         onKickedTeam               (ui8[1]);                       break;
        case newCaseNumbers[56]:         onDeleteTeam               (ui8[1]);                       break;
        case newCaseNumbers[57]:         onJoinTeam                 (ui8[1]);                       break;
        case newCaseNumbers[58]:         onTeamPosition             (ui8);                          break;
        case newCaseNumbers[59]:         onKarma                    (ui8[1]);                       break;
        case newCaseNumbers[60]:         onBadKarma                 (ui8);                          break;
        case newCaseNumbers[61]:         onAreas                    (ui8);                          break;
        case newCaseNumbers[62]:         onWrongPassword            ();                             break;
        case newCaseNumbers[63]:         onModdedGaugesValues       (data);                         break;
        case newCaseNumbers[64]:         onShakeExplosionState      (ui8[1]);                       break;
        case newCaseNumbers[65]:         onPlayerEat                (ui8[1]);                       break;
        case newCaseNumbers[66]:         onCitiesLocation           (ui8);                          break;
        case newCaseNumbers[67]:         onPoisened                 (ui8[1]);                       break;
        case newCaseNumbers[68]:         onRepellent                (ui8[1], ui8[2]);               break;
        case newCaseNumbers[69]:         onLapadoine                (ui8[1], ui8[2]);               break;
        case newCaseNumbers[70]:         onResetDrug                (ui8[1], ui8[2]);               break;
        case newCaseNumbers[71]:         onDramaticChrono           (ui8[1]);                       break;
        case newCaseNumbers[72]:         FeederonWarmOn             ();                             break;
        case newCaseNumbers[73]:         FeederonWarmOff            ();                             break;
    }
};

function onChat(data) {
    World.players[data[1]].text.push(data[2]);
};

function onNewPlayer(data) {
    var PLAYER = World.players[data[1]];

    PLAYER.tokenId          = data[2];
    PLAYER.score            = 0;
    PLAYER.old              = __ENTITIE_PLAYER__;
    PLAYER.nickname         = ((data[3] + "#") + data[1]);
    PLAYER.skin             = data[4];
    PLAYER.ghoul            = data[5];
    PLAYER.team             = -1;
    PLAYER.breath           = 0;
    PLAYER.move             = 0;
    PLAYER.orientation      = 1;
    PLAYER.punch            = 1;
    PLAYER.withdrawal       = 0;
    PLAYER.repellent        = 0;
    PLAYER.notification     = [];
    PLAYER.notificationLevel = [];
    PLAYER.notificationDelay = 0;
    PLAYER.textEase         = 0;
    PLAYER.text             = [];
    PLAYER.textEffect       = [];
    PLAYER.textMove         = [];
    PLAYER.label            = [];
    PLAYER.locatePlayer     = -1;
    PLAYER.frameId          = -1;
    PLAYER.nicknameLabel    = null;
    PLAYER.playerIdLabel    = null;
    PLAYER.storeLabel       = null;
    PLAYER.leaderboardLabel = null;
    if (PLAYER.ghoul === 0)
        World.playerAlive++;
};

function onNicknamesToken(data) {
    var len = data.length - 1;
    World.playerNumber = len;
    localStorage2.setItem("token", data[len]);
    data[0] = "";
    World.allocatePlayers(data);
    MOD.token = data[len];
};

function onAlert() {};

function onNewTeam(data) {
    var team = World.teams[data[1]];
    team.leader = data[2];
    team.name = data[3];
    var PLAYER = World.players[team.leader];
    PLAYER.teamUid = team.uid;
    PLAYER.teamLeader = 1;
    PLAYER.team = team.id;
    if (team.leader === World.PLAYER.id) {
        World.PLAYER.teamLeader = 1;
        World.PLAYER.team = team.id;
    }
    if (Game.teamName === team.name)
        Game.teamNameValid = 0;
};

function onTeamName(data) {
    World.allocateTeam(data);
};

function onMessageJSON(data) {
    switch (data[0]) {
        case 0:     onChat          (data);      break;
        case 1:     onNewPlayer     (data);      break;
        case 2:     onNicknamesToken(data);      break;
        case 3:     onAlert         (data[1]);   break;
        case 4:     onNewTeam       (data);      break;
        case 5:     onTeamName      (data);      break;
    }
};

function onFirstMessage(dat) {
    var token   = localStorage2.getItem("token");
    var tokenId = localStorage2.getItem("tokenId");
    var userid  = -1;

    try {
        userid = window.Number(localStorage2.getItem("userId"));
        if (userid === window.NaN)
            userid = -1;
    } catch (error) {};

    var nickname    = localStorage2.getItem("nickname");
    var state       = ((Client.state & Client.State.__CONNECTION_LOST__) > 0) ? 1 : 0;
    var skin        = window.Number(localStorage2.getItem("skin"));
    var password    = 0;

    if (window.document.getElementById("passwordInput") !== null) {
        password = window.document.getElementById("passwordInput").value;
        if (password.length > 0)
            localStorage2.setItem("password", password);
        if (Loader.getURLData("admin") !== null) {
            Home.adblocker = 0;
            Home.ads = -1;
        }
    }
    Home.adblocker = 0 // make sure we do indeed get the items
    return [dat, token, tokenId, userid, state, nickname, skin, Home.adblocker, password];
};

var Client = (function() {

    State = {
        __CONNECTED__:               1,
        __PENDING__:                 2,
        __ATTEMPTS_LIMIT_EXCEEDED__: 4,
        __OLD_CLIENT_VERSION__:      8,
        __OLD_SERVER_VERSION__:      16,
        __FULL__:                    32,
        __CONNECTION_LOST__:         64,
        __CLOSED__:                  128,
        __FAIL_RESTORE__:            256,
        __KICKED_INACTIVITY__:       512,
        __STOLEN_SESSION__:          1024
    };

    var hostname = 1;
    var port = 2;
    var CONNECTION_TIMEOUT = 3000;
    var RECONNECTION_TIMEOUT = 1500;
    var string0 = window.JSON.stringify([0]);
    var MOUSE_ROTATION_TIMEOUT = 150;
    var FAST_MOUSE_ROTATION_TIMEOUT = 60;
    var LEFT = 0;
    var RIGHT = 1;
    var socket = window.undefined;
    var connectionAttempts = 0;
    var isconnected = 0;
    var delay = 0;
    var previousDelay = CONNECTION_TIMEOUT;
    var lastActivityTimestamp = 0;
    var reconnectionDelay = 0;
    var lastMoveState = 0;
    var lastShiftState = 0;
    var getServList = "";
    var dat = 0;
    var connectionAttemptsLimit = 0;
    var timeoutnb = 0;
    var reconnectionAttempts = 0;
    var lastChatTimestamp = 0;
    var chatMessageDelay = 0;
    var lastMouseDirection = 0;
    var MouseAngle = Mouse.angle;
    var lastMouseAngleUpdate = 0;
    var onMessageJSON = window.undefined;
    var onMessageRaw = window.undefined;
    var startMessage = window.undefined;

    function init(version, rejoin, joinServerDelay, joinServerAttempts, pingServerDelay, inactivityTimeoutt, RawMessage, JsonMessage, FirstMessage) {
        //getServList = (wwwWN !== window.undefined) ? wwwWN : "json/servers.json";
        dat = (version !== window.undefined) ? version : 0;
        connectionAttemptsLimit = (rejoin !== window.undefined) ? rejoin : 15000;
        reconnectionAttempts = (joinServerAttempts !== window.undefined) ? joinServerAttempts : 3;
        reconnectionDelay = (pingServerDelay !== window.undefined) ? pingServerDelay : 20000;
        windowFocusDelay = (inactivityTimeoutt !== window.undefined) ? inactivityTimeoutt : 10000;
        onMessageRaw = (RawMessage !== window.undefined) ? RawMessage : (function() {});
        onMessageJSON = (JsonMessage !== window.undefined) ? JsonMessage : (function() {});
        startMessage = (FirstMessage !== window.undefined) ? FirstMessage : (function() {});
        timeoutnb = (joinServerDelay !== window.undefined) ? joinServerDelay : 2000;
        lastMouseAngleUpdate = previousTimestamp;
        var serverversion = localStorage2.getItem("serverVersion");
        if ((localStorage2.getItem("token") === null) || (serverversion !== ("" + dat)))
            localStorage2.setItem("token", chngtoken());
        localStorage2.setItem("serverVersion", dat);
    };

    function handleDisconnection() {
        if (((Client.state & State.__CONNECTED__) === 0) || ((Client.state & State.__CONNECTION_LOST__) > 0))
            return;
        Client.state = State.__CONNECTION_LOST__;
        socket.close();
        checkConnection();
    };

    function attemptReconnection() {
        if (delta > windowFocusDelay)
            delay = previousTimestamp;
        if ((previousTimestamp - delay) > connectionAttemptsLimit) {
            delay = previousTimestamp;
            handleDisconnection();
        }
    };

    function onOtherDie() {
        window.clearTimeout(cannotJoinServerHandler);
    };

    function checkConnection(rivetToken) {
        isconnected = 0;
        Client.state = State.__PENDING__ + (Client.state & (State.__CONNECTION_LOST__ | State.__FULL__));
        completeConnection(rivetToken);
    };

    function startConnection(nickname, skin, rivetToken) {
        if (((Client.state & State.__PENDING__) === 0) && ((Client.state & State.__CONNECTED__) === 0)) {
            localStorage2.setItem("nickname", nickname);
            localStorage2.setItem("skin", skin);
            checkConnection(rivetToken);
        }
    };

    function handleReconnectionAttempts() {
        isconnected++;
        socket.close();
        if (isconnected >= reconnectionAttempts) {
            Client.state = State.__ATTEMPTS_LIMIT_EXCEEDED__ + (Client.state & State.__CONNECTION_LOST__);
            if ((Client.state & State.__CONNECTION_LOST__) > 0)
                onError();
        } else
            completeConnection();
    };

    function sendPacket(NwnNM) {
        lastActivityTimestamp = previousTimestamp;
        socket.send(NwnNM);
    };

    function sendKeepAlive() {
        if ((previousTimestamp - lastActivityTimestamp) > reconnectionDelay) {
            socket.send(string0);
            lastActivityTimestamp = previousTimestamp;
        }
    };

    function sendChatMessage(message) {
        if ((previousTimestamp - lastChatTimestamp) > chatMessageDelay) {
            lastActivityTimestamp = previousTimestamp;
            socket.send(window.JSON.stringify([1, message]));
            return 0;
        }
        return chatMessageDelay - (previousTimestamp - lastChatTimestamp);
    };

    function sendWSmsg(ss) {
        socket.send(ss);

    };

    function sendAfk() {
            var i = 1;

            function myLoop() {
                setTimeout(function() {
                    socket.send(0);
                    i++;
                    if (i < 99999999999999999999) {
                        myLoop();
                    }
                }, 20000)
            }
            myLoop();
    };

    function newToken() {
        localStorage2.setItem("tokenId", 0);
        localStorage2.setItem("userId", 1);
        completeConnection();
    };


    function sendMouseAngle() {
            if ((previousTimestamp - lastMouseAngleUpdate) > MOUSE_ROTATION_TIMEOUT) {
                var rotation = (((((Mouse.angle - MouseAngle) * 180) / window.Math.PI) % 360) + 360) % 360;
                if (rotation > 2) {
                    lastActivityTimestamp = previousTimestamp;
                    lastMouseAngleUpdate = previousTimestamp;
                    MouseAngle = Mouse.angle;
                    rotation = window.Math.floor(((((Mouse.angle * 180) / window.Math.PI) % 360) + 360) % 360);
                    if (!MOD.AimBotEnable) socket.send(window.JSON.stringify([6, rotation]));
                }
            }
    };

    function sendFastMouseAngle() {
            if ((previousTimestamp - lastMouseAngleUpdate) > FAST_MOUSE_ROTATION_TIMEOUT) {
                var rotation = (((((Mouse.angle - MouseAngle) * 180) / window.Math.PI) % 360) + 360) % 360;
                if (rotation > 2) {
                    lastActivityTimestamp = previousTimestamp;
                    lastMouseAngleUpdate = previousTimestamp;
                    MouseAngle = Mouse.angle;
                    rotation = window.Math.floor(((((Mouse.angle * 180) / window.Math.PI) % 360) + 360) % 360);
                    if (!MOD.AimBotEnable) socket.send(window.JSON.stringify([6, rotation]));
                }
            }
    };

    function sendShift() {
        var shift = Keyboard.isShift();
        if (shift !== lastShiftState) {
            lastActivityTimestamp = previousTimestamp;
            window.console.log("sendShift", shift);
            lastShiftState = shift;
            socket.send(window.JSON.stringify([7, shift]));
        }
    };

    function sendMouseRightLeft() {
        if (Mouse.x >= canw2ns) {
            if (lastMouseDirection !== RIGHT) {
                lastActivityTimestamp = previousTimestamp;
                lastMouseDirection = RIGHT;
                socket.send(window.JSON.stringify([3, RIGHT]));
            }
        } else {
            if (lastMouseDirection !== LEFT) {
                lastActivityTimestamp = previousTimestamp;
                lastMouseDirection = LEFT;
                socket.send(window.JSON.stringify([3, LEFT]));
            }
        }
    };

    function sendMouseDown() {
        lastActivityTimestamp = previousTimestamp;
        socket.send(window.JSON.stringify([4]));
    };

    function sendMouseUp() {
        lastActivityTimestamp = previousTimestamp;
        socket.send(window.JSON.stringify([5]));
    };

    function sendMove() {
        var move = 0;
        if (Keyboard.isLeft()   === 1)      move |= 1;  
        if (Keyboard.isRight()  === 1)      move |= 2;
        if (Keyboard.isBottom() === 1)      move |= 4;
        if (Keyboard.isTop()    === 1)      move |= 8;
        if (lastMoveState !== move) {
            lastActivityTimestamp = previousTimestamp;
            lastMoveState = move;
            socket.send(window.JSON.stringify([2, move]));
        }
    };

    function completeConnection(rivetToken) {
        var ip = Client.connectedLobby['ports']['default']['hostname'];
        var port = Client.connectedLobby['ports']['default']['port'];
        var isTLS = Client.connectedLobby['ports']['default']['is_tls'] ? 1 : 0;
        socket = new window.WebSocket("ws" + (isTLS === 1 ? "s" : "") + "://" + ip + ":" + port + '/?token=' + rivetToken);
        window.ws = socket;
        connectionAttempts++;
        socket.currentId = connectionAttempts;
        var currentId = connectionAttempts;


        socket.binaryType = "arraybuffer";
        socket.onerror = function() {
            if (this.currentId !== connectionAttempts)
                return;
            handleDisconnection();
        };
        socket.onclose = function(event) {
            if (this.currentId !== connectionAttempts)
                return;
            handleDisconnection();
        };
        socket.onmessage = function(event) {
            if (this.currentId !== connectionAttempts)
                return;

            delay = previousTimestamp;
            if (typeof event.data === 'string')
                onMessageJSON(window.JSON.parse(event.data));
            else {
                onMessageRaw(event.data);
                }
        };
        
        socket.onopen = function(event) {
            lastMouseDirection = -1;
            lastActivityTimestamp = previousTimestamp;
            onOtherDie();
            socket.send(window.JSON.stringify(onFirstMessage(dat)));
            cannotJoinServerHandler = window.setTimeout(function() {
                if (currentId !== connectionAttempts)
                    return;
                handleReconnectionAttempts();
            }, timeoutnb);
        };
        cannotJoinServerHandler = window.setTimeout(function() {
            if (currentId !== connectionAttempts)
                return;
            handleReconnectionAttempts();
        }, timeoutnb);
    };

    function full() {
        Client.state |= Client.State.__FULL__;
    };

    function muted(delay) {
        lastChatTimestamp = previousTimestamp;
        chatMessageDelay = delay * 60000;
    };

    function stolenSession() {
        Client.state = State.__STOLEN_SESSION__;
        onError();
    };

    function kickedInactivity() {
        Client.state = State.__KICKED_INACTIVITY__;
        onError();
    };

    function closeClient() {
        Client.state = State.__CLOSED__;
        onError();
    };

    function failRestore() {
        onOtherDie();
        Client.state = State.__FAIL_RESTORE__;
        onError();
    };

    function handshake() {
        onOtherDie();
        Client.state = Client.State.__CONNECTED__;
        if (Client.onOpen !== null)
            Client.onOpen();
    };

    function badServerVersion(serverversion) {
        if (serverversion > dat)
            Client.state = State.__OLD_CLIENT_VERSION__;
        else if (serverversion < dat)
            Client.state = State.__OLD_SERVER_VERSION__;
        onOtherDie();
    };

    function getServerList(_srv) {

        var lobbyList = 'https://api.eg.rivet.gg/matchmaker/lobbies/list';
    
        let header = {'Accept': 'application/json'};
    
        window.RIVET_TOKEN && (header['Authorization'] = 'Bearer' + window.RIVET_TOKEN),
    
        fetch(lobbyList, { 
            headers: header 
        })
        .then(_list=>{
            if (_list['ok'])
                return _list.json();
            else
                throw 'Failed to list lobbies: ' + _list['status'];
        })
        .then(_lobb=>{
            Client.serverList = _lobb['lobbies']['map'](_reg=>{
                let _nam = _lobb.regions.find(id=>id['region_id'] == _reg['region_id'])
                  , nam = _nam ? _nam['region_display_name'] : '?';
                return [_reg['lobby_id'], '', '', 1, nam, _reg['total_player_count'], _reg['game_mode_id']];
            }
            ),
            _srv();
        }
        );
    }

    function chngtoken() {
        var token = "";
        for (var i = 0; i < 20; i++) {
            token += window.String.fromCharCode(48 + window.Math.floor(window.Math.random() * 74));
        }
        return token;
    };

    function update() {
        if (Client.state === Client.State.__CONNECTED__) {
            attemptReconnection();
            sendKeepAlive();
        }
    };

    function onError() {
        if (Client.onError !== null) {
            var StWSstate = Client.state;
            Client.state = 0;
            Client.onError(StWSstate);
        }
    };
    
    return {
        state:              0,
        State:              State,
        serverList:         window.undefined,
        selectedServer:     0,
        init:               init,
        startConnection:    startConnection,
        getServerList:      getServerList,
        full:               full,
        handshake:          handshake,
        badServerVersion:   badServerVersion,
        failRestore:        failRestore,
        kickedInactivity:   kickedInactivity,
        stolenSession:      stolenSession,
        muted:              muted,
        closeClient:        closeClient,
        sendChatMessage:    sendChatMessage,

        // not official \/
        sendWSmsg:        sendWSmsg,
        sendAfk:          sendAfk,
        newToken:         newToken,
        // not official /\

        sendPacket:         sendPacket,
        sendMove:           sendMove,
        sendMouseAngle:     sendMouseAngle,
        sendFastMouseAngle: sendFastMouseAngle,
        sendMouseRightLeft: sendMouseRightLeft,
        sendMouseDown:      sendMouseDown,
        sendMouseUp:        sendMouseUp,
        sendShift:          sendShift,
        update:             update,
        onError:            null,
        onOpen:             null
    };

})();

var World = (function() {
    var worldWidth = 0;
    var worldHeight = 0;
    var worldX = 0;
    var worldY = 0;
    var NNMVV = 18;
    var NmmnM = 9;
    var Mnnnn = 50;

    function setSizeWorld(worldWidth, worldHeight) {
        worldWidth = worldWidth;
        worldHeight = worldHeight;
        worldX = worldWidth - 1;
        worldY = worldHeight - 1;
    };

    function allocatePlayers(mNWnw) {
        World.playerAlive = -1;
        for (var i = 0; i < World.playerNumber; i++) {
            if (mNWnw[i] !== 0)
                World.playerAlive++;
            World.players[i] = new player(i, mNWnw[i]);
        }
    };

    function player(id, nickname) {

        this.id                 = id;
        this.nickname           = ((nickname + "#") + id);
        this.tokenId            = 0;
        this.skin               = 0;
        this.ghoul              = 0;
        this.score              = 0;
        this.scoreSimplified    = 0;
        this.team               = -1;
        this.teamUid            = 0;
        this.teamLeader         = 0;
        this.repellent          = 0;
        this.withdrawal         = 0;
        this.notification       = [];
        this.notificationLevel  = [];
        this.notificationDelay  = 0;
        this.textEase           = 0;
        this.text               = [];
        this.textEffect         = [];
        this.textMove           = [];
        this.label              = [];
        this.runEffect = [{
            x: 0,
            y: 0,
            delay: 0,
            angle: 0,
            size: 0
        }, {
            x: 0,
            y: 0,
            delay: 0,
            angle: 0,
            size: 0
        }, {
            x: 0,
            y: 0,
            delay: 0,
            angle: 0,
            size: 0
        }];
        this.cartridges = [{
            type: 0,
            x: 0,
            y: 0,
            delay: 0,
            ax: 0,
            ay: 0
        }, {
            type: 0,
            x: 0,
            y: 0,
            delay: 0,
            ax: 0,
            ay: 0
        }, {
            type: 0,
            x: 0,
            y: 0,
            delay: 0,
            ax: 0,
            ay: 0
        }, {
            type: 0,
            x: 0,
            y: 0,
            delay: 0,
            ax: 0,
            ay: 0
        }];
        this.breath             = 0;
        this.move               = 0;
        this.orientation        = 1;
        this.punch              = 1;
        this.consumable         = -1;
        this.consumableLast     = 0;
        this.leaderboardLabel   = null;
        this.nicknameLabel      = null;
        this.playerIdLabel      = null;
        this.scoreLabel         = null;
        this.locatePlayer       = -1;
        this.frameId            = -1;
        this.x                  = 0;
        this.y                  = 0;
        this.rx                 = 0;
        this.ry                 = 0;
        this.KARMA              = 0;
    };

    function allocateTeam(teams) {
        for (var i = 0; i < NNMVV; i++)
            World.teams[i] = new MmvWv(i, teams[i + 1]);
    };

    function addToTeam(WwnMv, id) {
        if (id === Mnnnn) {
            WwnMv.team = -1;
            return;
        } else if (id > Mnnnn) {
            id -= Mnnnn + 1;
            World.teams[id].leader = WwnMv.id;
            WwnMv.teamLeader = 1;
            if (World.PLAYER.id === WwnMv.id)
                World.PLAYER.teamLeader = 1;
        } else
            WwnMv.teamLeader = 0;
        if (World.PLAYER.id === WwnMv.id)
            World.PLAYER.team = id;
        WwnMv.team = id;
        WwnMv.teamUid = World.teams[id].uid;
    };

    function nextInvitation() {
        PLAYER.teamJoin = 0;
        for (var i = 0; i < PLAYER.teamQueue.length; i++) {
            if (PLAYER.teamQueue[i] !== 0) {
                PLAYER.teamJoin = PLAYER.teamQueue[i];
                PLAYER.teamQueue[i] = 0;
                return;
            }
        }
        PLAYER.teamEffect = 0;
    };

    function deleteTeam(id) {
        var team = World.teams[id];
        team.label          = null;
        team.labelNickname  = null;
        team.uid            = teamUid++;
        team.leader         = 0;
        team.name           = "";
    };
    var teamUid = 0;

    function MmvWv(id, _name) {
        this.id             = id;
        this.name           = _name;
        this.label          = null;
        this.labelNickname  = null;
        this.leader         = 0;
        this.uid            = teamUid++;
    };

    function updatePosition() {
        var len = ENTITIES.length;
        for (var i = 0; i <= len; i++) {
            if ((len !== i) && (ENTITIES[i].move === 0))
                continue;
            var units = Entitie.units[i];
            var border = Entitie.border[i];
            var n = border.border;
            for (var j = 0; j < n; j++)
                moveEntitie(units[border.cycle[j]]);
        }
        if (World.PLAYER.team !== -1) {
            for (var i = 0; i < PLAYER.teamLength; i++) {
                var nmmvN = PLAYER.teamPos[i];
                if (nmmvN.old < 0)
                    continue;
                var wmW = World.players[nmmvN.id];
                wmW.rx = CanvasUtils.lerp(wmW.rx, wmW.x, 0.03);
                wmW.ry = CanvasUtils.lerp(wmW.ry, wmW.y, 0.03);
                nmmvN.old -= delta;
            }
        }
        if (World.PLAYER.badKarmaDelay > 0) {
            var wmW = World.players[World.PLAYER.badKarma];
            wmW.rx = CanvasUtils.lerp(wmW.rx, wmW.x, 0.03);
            wmW.ry = CanvasUtils.lerp(wmW.ry, wmW.y, 0.03);
            World.PLAYER.badKarmaDelay -= delta;
        }
    };

    function moveEntitie(entity) {
        offsetX = entity.rx + ((delta * entity.speed) * entity.angleX);
        offsetY = entity.ry + ((delta * entity.speed) * entity.angleY);
        if (Math2d.fastDist(entity.rx, entity.ry, entity.nx, entity.ny) < Math2d.fastDist(offsetX, offsetY, entity.rx, entity.ry)) {
            entity.rx = entity.nx;
            entity.ry = entity.ny;
        } else {
            entity.rx = offsetX;
            entity.ry = offsetY;
        }
        entity.x = MathUtils.lerp(entity.x, entity.rx, entity.lerp);
        entity.y = MathUtils.lerp(entity.y, entity.ry, entity.lerp);
        entity.i = window.Math.max(0, window.Math.min(worldY, window.Math.floor(entity.y / Render.__TILE_SIZE__)));
        entity.j = window.Math.max(0, window.Math.min(worldX, window.Math.floor(entity.x / Render.__TILE_SIZE__)));
        if ((World.PLAYER.id === entity.pid) && (entity.id === 0)) {
            if (MOD.showRealAngles === "always") entity.angle = MathUtils.lerp(entity.angle, entity.nangle, entity.lerp * 2);
            else if ((MOD.showRealAngles === "withAim") && (MOD.AimBotEnable)) entity.angle = MathUtils.lerp(entity.angle, entity.nangle, entity.lerp * 2);
            else entity.angle = Mouse.angle;
        } else {
            if (entity.pid === 0)
                entity.angle = MathUtils.lerp(entity.angle, entity.nangle, entity.lerp / 2);
            else
                entity.angle = MathUtils.lerp(entity.angle, entity.nangle, entity.lerp * 2);
        }
    };

    function VVnvw(a, M) {
        if ((World.players[a].nickname === 0) && (World.players[M].nickname === 0))
            return 0;
        else if (World.players[a].nickname === 0)
            return World.players[M].score - 1;
        else if (World.players[M].nickname === 0)
            return -1 - World.players[a].score;
        else
            return World.players[M].score - World.players[a].score;
    };

    function sortLeaderboard() {
        window.console.log(World.playerNumber);
        for (var i = 0; i < World.playerNumber; i++)
            World.leaderboard[i] = i;
        World.leaderboard = World.leaderboard.sort(VVnvw).slice(0, 10);
        for (var i = 0; i < World.playerNumber; i++)
            World.newLeaderboard = 1;
    };

    function initLeaderboard(ui16, ui8) {
        for (var i = 0; i < 10; i++) {
            var id = ui8[2 + (i * 4)];
            var score = ui16[2 + (i * 2)];
            var PLAYER = World.players[id];
            PLAYER.score = MathUtils.inflateNumber(score);
            PLAYER.KARMA = ui8[3 + (i * 4)];
            var scoreSimplified = MathUtils.simplifyNumber(PLAYER.score);
            if (scoreSimplified !== PLAYER.scoreSimplified)
                PLAYER.scoreLabel = null;
            PLAYER.scoreSimplified = scoreSimplified;
            World.leaderboard[i] = id;
        }
        World.newLeaderboard = 1;
    };

    function Gauge() {
        this.current    = 0;
        this.value      = 0;
        this._max       = 0;
        this.speed      = 0;
        this.time       = 0;
        this.maxTime    = 1;
        this.bonus      = 0;
    };

    function initGauge(gauge, value, speedInc, speedDec, decrease) {
        gauge.current     = value;
        gauge.value       = value;
        gauge._max        = value;
        gauge.speedInc    = speedInc;
        gauge.speedDec    = speedDec;
        gauge.decrease    = decrease;
        gauge.bonus       = 0;
    };

    function initGauges() {
        var playerGauges = ENTITIES[__ENTITIE_PLAYER__].gauges;
        initGauge(gauges.life, playerGauges.life._max, playerGauges.life.speedInc, playerGauges.life.speedDec, 0);
        if (PLAYER.ghoul === 0) {
            initGauge(gauges.food, playerGauges.food._max, playerGauges.food.speedInc, playerGauges.food.speedDec, 1);
            initGauge(gauges.cold, playerGauges.cold._max, playerGauges.cold.speedInc, playerGauges.cold.speedDec, 0);
            initGauge(gauges.stamina, playerGauges.stamina._max, playerGauges.stamina.speedInc, playerGauges.stamina.speedDec, -1);
            initGauge(gauges.rad, playerGauges.rad._max, playerGauges.rad.speedInc, playerGauges.rad.speedDec, 0);
        } else {
            initGauge(gauges.food, playerGauges.food._max, playerGauges.food.speedInc, 0, 1);
            initGauge(gauges.cold, playerGauges.cold._max, playerGauges.cold.speedInc, 0, 0);
            initGauge(gauges.stamina, playerGauges.stamina._max, playerGauges.stamina.speedInc * 2, playerGauges.stamina.speedDec / 2, -1);
            initGauge(gauges.rad, playerGauges.rad._max, playerGauges.rad.speedInc, 0, 0);
        }
        initGauge(gauges.xp, 255, 0, 0, 0);
        gauges.xp.value = 0;
        gauges.xp.current = 0;
        PLAYER.nextLevel = __XP_START__;
        if (day === DAY_NIGHT_CYCLE)
            gauges.cold.decrease = 1;
    };

    function updateGauge(gauge) {
        if (gauge.decrease === 1)
            gauge.value = window.Math.min(gauge._max, window.Math.max(gauge.value - (delta * (gauge.speedDec - gauge.bonus)), 0));
        else if (gauge.decrease === -1)
            gauge.value = window.Math.min(gauge.value + (delta * (gauge.speedInc + gauge.bonus)), gauge._max);
        gauge.current = MathUtils.lerp(gauge.current, gauge.value, 0.1);
    };

    function updateGauges() {
        updateGauge(gauges.life);
        updateGauge(gauges.food);
        updateGauge(gauges.cold);
        updateGauge(gauges.rad);
        updateGauge(gauges.stamina);
        updateGauge(gauges.xp);
        World.PLAYER.VWMmM += delta;
        if (gauges.rad.current > 254)
            AudioManager.geiger = 0;
        else
            AudioManager.geiger = window.Math.min(1, window.Math.max(0, 1 - (gauges.rad.current / 255)));
        updatePlayerXP();
    };
    var gauges = {
        life: new Gauge,
        food: new Gauge,
        cold: new Gauge,
        rad: new Gauge,
        stamina: new Gauge,
        xp: new Gauge
    };
    var DAY_NIGHT_CYCLE = 1;
    var __DAY__ = 0;
    var day = __DAY__;
    var elapsedTime = 0;

    function changeDayCycle() {
        var temp;
        temp = INVENTORY2;
        INVENTORY2 = INVENTORY;
        INVENTORY = temp;
        temp = PARTICLES2;
        PARTICLES2 = PARTICLES;
        PARTICLES = temp;
        temp = LOOT2;
        LOOT2 = LOOT;
        LOOT = temp;
        temp = RESOURCES2;
        RESOURCES2 = RESOURCES;
        RESOURCES = temp;
        temp = ENTITIES2;
        ENTITIES2 = ENTITIES;
        ENTITIES = temp;
        temp = LIGHTFIRE2;
        LIGHTFIRE2 = LIGHTFIRE;
        LIGHTFIRE = temp;
        temp = GROUND2;
        GROUND2 = GROUND;
        GROUND = temp;
        temp = AI2;
        AI2 = AI;
        AI = temp;
        day = (day + 1) % 2;
        World.day = day;
        if (day === 0) {
            window.document.getElementById("bod").style.backgroundColor = "#3D5942";
            canvas.style.backgroundColor = "#3D5942";
        } else {
            window.document.getElementById("bod").style.backgroundColor = "#0B2129";
            canvas.style.backgroundColor = "#0B2129";
        }
        elapsedTime = 0;
    };

    function setDayCycle(cycle, newElapsedTime) {
        if (cycle !== day)
            World.transition = 1000;
        World.day = day;
        elapsedTime = newElapsedTime;
    };

    function initDayCycle(cycle, newElapsedTime) {
        if (cycle !== day)
            changeDayCycle();
        World.day = day;
        elapsedTime = newElapsedTime;
    };

    function updateHour() {
        elapsedTime += delta;
        return (elapsedTime % World.__DAY__) + (day * 10000000);
    };

    function selectRecipe(id) {
        var len = 0;
        var item = INVENTORY[id];
        Game.preview.setImages(item.itemButton.src, item.itemButton.img);
        var recipeDetails = item.detail.recipe;
        var canvasZ = item.detail.area;
        var recipe = Game.recipe;
        var tools = Game.tools;
        var recipeList = PLAYER.recipeList;
        PLAYER.craftSelected = id;
        if (canvasZ !== window.undefined) {
            for (var i = 0; i < canvasZ.length; i++) {
                var tool = AREASTOITEM[canvasZ[i]];
                if (tool !== window.undefined) {
                    item = INVENTORY[tool];
                    tools[len].setImages(item.itemButton.src, item.itemButton.img);
                    len++;
                }
            }
        }
        PLAYER.toolsLen = len;
        len = 0;
        if (recipeDetails !== window.undefined) {
            for (i = 0; i < recipeDetails.length; i++) {
                item = INVENTORY[recipeDetails[i][0]];
                recipe[len].setImages(item.itemButton.src, item.itemButton.img);
                recipeList[len] = item.id;
                len++;
            }
        }
        PLAYER.recipeLen = len;
        updateRecipeAvailability(recipeDetails);
    };

    function _CheckSkillState(id, detail) {
        if ((PLAYER.skillUnlocked[id] === 1) || (detail.level === -1))
            return 2;
        else if (((detail.level > PLAYER.level) || (PLAYER.skillPoint < detail.price)) || ((detail.previous !== -1) && (PLAYER.skillUnlocked[detail.previous] === window.undefined)))
            return 0;
        return 1;
    };

    function updateRecipeAvailability(recipe) {
        var availableRecip = PLAYER.recipeAvailable;
        var invtr = PLAYER.inventory;
        var canCraft = 1;
        if (recipe === window.undefined)
            return canCraft;
        for (var i = 0; i < recipe.length; i++) {
            var recipeItem = recipe[i];
            for (var j = 0; j < invtr.length; j++) {
                var IID = invtr[j];
                if (IID[0] === recipeItem[0]) {
                    if (IID[1] >= recipeItem[1]) {
                        availableRecip[i] = recipeItem[1];
                        break;
                    } else
                        availableRecip[i] = -recipeItem[1];
                }
            }
            if (j === invtr.length) {
                availableRecip[i] = -recipeItem[1];
                canCraft = 0;
            }
        }
        return canCraft;
    };

    function releaseBuilding() {
        if ((World.PLAYER.isInBuilding === 1) || (World.PLAYER.isInChest === 1)) {
            World.PLAYER.isInBuilding = 0;
            World.PLAYER.isInChest = 0;
            Client.sendPacket("[17]");
        }
    };

    function buildSkillList(category) {
        World.releaseBuilding();
        var receipe = 0;
        var selected = 0;
        var len = 0;
        var craft = PLAYER.craftList;
        var craftList = Game.craft;
        var craftAvailable = PLAYER.craftAvailable;
        for (var i = 1; i < INVENTORY.length; i++) {
            var item = INVENTORY[i];
            if (item.detail.category === category) {
                if (receipe === 0) {
                    receipe = i;
                    selected = len;
                }
                craftList[len].setImages(item.itemButton.src, item.itemButton.img);
                craft[len] = i;
                craftAvailable[len] = _CheckSkillState(i, item.detail);
                len++;
            }
        }
        PLAYER.craftLen = len;
        PLAYER.craftArea = -1;
        PLAYER.craftCategory = category;
        PLAYER.craftIdSelected = selected;
        selectRecipe(receipe);
    };

    function buildCraftList(area) {
        if (area === AREAS.__PLAYER__) {
            World.releaseBuilding();
            PLAYER.building.fuel = -1;
        }
        var receipe = 0;
        var selected = 0;
        var previous = World.PLAYER.craftSelected;
        var len = 0;
        var craft = PLAYER.craftList;
        var craftAvailable = PLAYER.craftAvailable;
        var craftList = Game.craft;
        for (var i = 1; i < INVENTORY.length; i++) {
            var item = INVENTORY[i];
            var detail = item.detail;
            if (((detail.area !== window.undefined) && (detail.area.indexOf(area) !== -1)) && ((detail.level === -1) || (PLAYER.skillUnlocked[item.id] === 1))) {
                if ((receipe === 0) || (previous === i)) {
                    receipe = i;
                    selected = len;
                }
                craftList[len].setImages(item.itemButton.src, item.itemButton.img);
                craft[len] = i;
                craftAvailable[len] = updateRecipeAvailability(detail.recipe);
                len++;
            }
        }
        PLAYER.craftLen = len;
        PLAYER.craftArea = area;
        PLAYER.craftCategory = -1;
        PLAYER.craftIdSelected = selected;
        if (receipe > 0)
            selectRecipe(receipe);
    };
    __XP_START__ = 900;
    __XP_SPEED__ = 1.105;

    function getXpFromLevel(level) {
        var xp = __XP_START__;
        for (var i = 0; i < level; i++)
            xp = window.Math.floor(xp * __XP_SPEED__);
        return xp;
    };

    function updatePlayerXP() {
        if ((PLAYER.xp > 0) && (window.Math.abs(gauges.xp.current - gauges.xp.value) < 0.6)) {
            if (gauges.xp.value === 255) {
                gauges.xp.current = 0;
                gauges.xp.value = 0;
                PLAYER.level++;
                PLAYER.skillPoint++;
                if ((Game.getSkillBoxState() === 1) && (PLAYER.craftCategory !== -1))
                    buildSkillList(PLAYER.craftCategory);
                AudioUtils.playFx(AudioUtils._fx.levelup, 1, 0);
                return;
            }
            if (PLAYER.xp >= PLAYER.nextLevel) {
                gauges.xp.value     = 255;
                PLAYER.xp           -= PLAYER.nextLevel;
                PLAYER.nextLevel    = window.Math.floor(PLAYER.nextLevel * __XP_SPEED__);
            } else
                gauges.xp.value = window.Math.floor((255 * PLAYER.xp) / PLAYER.nextLevel);
        }
    };

    var PLAYER = {
        id:                 0,
        x:                  0,
        y:                  0,
        _i:                 0,
        _j:                 0,
        score:              0,
        lastScore:          -1,
        inLeaderboard:      0,
        scoreLabel:         null,
        click:              0,
        inventory:          [],
        recipeLen:          0,
        toolsLen:           0,
        toolsList:          0,
        craftLen:           0,
        isInBuilding:       0,
        isInChest:          0,
        craftArea:          -1,
        craftCategory:      -1,
        craftSelected:      -1,
        craftIdSelected:    -1,
        skillUnlocked:      [],
        level:              0,
        kill:               0,
        xp:                 0,
        nextLevel:          0,
        skillPoint:         0,
        recipeList:         [],
        craftList:          [],
        craftAvailable:     [],
        recipeAvailable:    [],
        crafting:           0,
        craftingMax:        0,
        drag: {
            begin: 0,
            x: 0,
            y: 0,
            id: 0
        },
        eInteract:          null,
        interaction:        -1,
        interactionDelay:   0,
        interactionWait:    0,
        loot:               -1,
        lootId:             -1,
        extraLoot:          0,
        packetId:           -1,
        buildingArea:       -1,
        buildingId:         -1,
        buildingPid:        -1,
        chest: [
            [0, 0, 0, 0],
            [0, 0, 0, 0],
            [0, 0, 0, 0],
            [0, 0, 0, 0]
        ],
        chestLen: 0,
        building: {
            queue: [0, 0, 0, 0],
            pos:        0,
            time:       0,
            timeMax:    0,
            len:        0,
            fuel:       0
        },
        blueprint:      0,
        furniture:      0,
        buildRotate:    0,
        hintRotate:     0,
        grid:           0,
        gridPrev:   [0, 0, 0],
        iGrid:          0,
        jGrid:          0,
        iGridPrev:  [0, 0, 0],
        jGridPrev:  [0, 0, 0],
        isBuilding:     0,
        iBuild:         0,
        jBuild:         0,
        canBuild:       0,
        warm:           0,
        wrongTool:      0,
        wrongToolTimer: 0,
        teamEffect:     0,
        teamLeader:     0,
        teamLocked:     0,
        teamDelay:      0,
        teamNameValid:  0,
        teamCreateDelay: 0,
        teamQueue:      [0, 0, 0, 0, 0],
        teamJoin:       0,
        teamDelay:      0,
        team:           -1,
        teamPos:        [],
        teamLength:     0,
        KARMA:          0,
        badKarma:       0,
        badKarmaDelay:  0,
        lastAreas:      null,
        nextAreas:      0,
        craftFactor:    1,
        timePlayed:     0,
        toxicMap:       0,
        toxicStep:      0,
        admin:          0,
        ghoul:          0,
        cities:         []
    };

    return {
        __SURVIVAL__:       0,
        __BR__:             1,
        __GHOUL__:          2,
        gameMode:           0,
        leaderboard:        [],
        sortLeaderboard:    sortLeaderboard,
        initLeaderboard:    initLeaderboard,
        setSizeWorld:       setSizeWorld,
        newLeaderboard:     0,
        playerNumber:       0,
        playerAlive:        0,
        allocateTeam:       allocateTeam,
        teams:              [],
        addToTeam:          addToTeam,
        deleteTeam:         deleteTeam,
        nextInvitation:     nextInvitation,
        allocatePlayers:    allocatePlayers,
        players:            [],
        PLAYER:             PLAYER,
        moveEntitie:        moveEntitie,
        updatePosition:     updatePosition,
        gauges:             gauges,
        initGauges:         initGauges,
        updateGauges:       updateGauges,
        changeDayCycle:     changeDayCycle,
        setDayCycle:        setDayCycle,
        initDayCycle:       initDayCycle,
        updateHour:         updateHour,
        __DAY__:            (8 * 60) * 1000,
        day:                0,
        transition:         0,
        buildCraftList:     buildCraftList,
        buildSkillList:     buildSkillList,
        selectRecipe:       selectRecipe,
        releaseBuilding:    releaseBuilding,
        getXpFromLevel:     getXpFromLevel
    };

})();

var Entitie = (function() {
    var maxUnitsPerType = 0;
    var units = [];
    var border = [];
    var entityCache = [];
    var localUnitsCount = 0;

    function init(unitCountPerType, maxUnitsMaster, localUnits) {
        Entitie.maxUnitsMaster = (maxUnitsMaster === window.undefined) ? 0 : maxUnitsMaster;
        Entitie.localUnits = (localUnits === window.undefined) ? 0 : localUnits;
        localUnitsCount = Entitie.localUnits + Entitie.maxUnitsMaster;
        maxUnitsPerType = ENTITIES.length;
        var len = ENTITIES.length + 1;
        for (var i = 0; i < len; i++) {
            border[i] = new Border.Border(unitCountPerType);
            units[i] = [];
            for (var j = 0; j < unitCountPerType; j++)
                units[i][j] = Entitie.create(i);
        }
    };

    function create(type) {
        return new EntitieClass(type);
    };

    function removeAll() {
        for (var i = 0; i < ENTITIES.length; i++)
            border[i].border = 0;
        entityCache = [];
    };

    function remove(pid, id, uid, type, keepInCache) {
        var i = 0;
        var entityIndex = (((pid === 0) ? 0 : localUnitsCount) + (pid * Entitie.unitsPerPlayer)) + id;
        var entity = entityCache[entityIndex];
        if (((entity !== window.undefined) && (entity.type === type)) && (entity.uid === uid))
            entityCache[entityIndex] = window.undefined;
        var entityBorder = border[type];
        var entityUnits = units[type];
        var len = entityBorder.border;
        for (i = 0; i < len; i++) {
            var entity = entityUnits[entityBorder.cycle[i]];
            if (((entity.uid === uid) && (entity.pid === pid)) && (entity.id === id)) {
                Border.fastKillIdentifier(entityBorder, i);
                if ((ENTITIES[entity.type].remove > 0) && (keepInCache === 1)) {
                    var newEntity = units[maxUnitsPerType][Border.forceNewIdentifier(border[maxUnitsPerType])];
                    for (var j in entity)
                        newEntity[j] = entity[j];
                    newEntity.removed = 1;
                }
                return;
            }
        }
    };

    function get(pid, id, uid, type) {
        var entityIndex = (((pid === 0) ? 0 : localUnitsCount) + (pid * Entitie.unitsPerPlayer)) + id;
        var entity = entityCache[entityIndex];
        if ((entity === window.undefined) || (entity.uid !== uid)) {
            var newEntityIndex = Border.forceNewIdentifier(border[type]);
            entity = units[type][newEntityIndex];
            if (entity === window.undefined) {
                window.console.log("Memory Warn: new entitie created");
                units[type][newEntityIndex] = Entitie.create(type);
                entity = units[type][newEntityIndex];
            }
            entityCache[entityIndex] = entity;
            entity.update = 0;
            entity.removed = 0;
        }
        return entity;
    };

    function cleanRemoved() {
        var entityBorder = border[maxUnitsPerType];
        var entityUnits = units[maxUnitsPerType];
        var len = entityBorder.border;
        for (i = 0; i < len; i++) {
            var entity = entityUnits[entityBorder.cycle[i]];
            if (entity.removed !== 1) {
                Border.fastKillIdentifier(entityBorder, i);
                len--;
                i--;
            }
        }
    };

    function findEntitie(type, pid, id) {
        var entityUnits = units[type];
        var entityBorder = border[type];
        var len = entityBorder.border;
        for (var i = 0; i < len; i++) {
            var player = entityUnits[entityBorder.cycle[i]];
            if ((player.id === id) && (player.pid === pid))
                return player;
        }
        return null;
    };

    return {
        init:           init,
        create:         create,
        get:            get,
        findEntitie:    findEntitie,
        remove:         remove,
        removeAll:      removeAll,
        units:          units,
        border:         border,
        cleanRemoved:   cleanRemoved,
        unitsPerPlayer: 0,
        maxUnitsMaster: 0,
        localUnits:     0
    };

})();
var ENTITIES = [{

    gauges: {
        life: {
            _max:       255,
            speedDec:   0.005,
            speedInc:   0.005
        },
        food: {
            _max:       255,
            speedDec:   0.0012,
            speedInc:   0.0012
        },
        cold: {
            _max:       255,
            speedDec:   0.0035,
            speedInc:   0.005
        },
        rad: {
            _max:       255,
            speedDec:   0.024,
            speedInc:   0.003
        },
        stamina: {
            _max:       255,
            speedDec:   0.03,
            speedInc:   0.015
        }
    },

    skins: [{
        head: {
            src: "img/day-skin0.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm0.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm0.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-skin1.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm0.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm0.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-skin2.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm2.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm2.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-skin3.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm2.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm2.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-skin4.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm4.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm4.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-skin5.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm4.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm4.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-ghoul.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            angle: 0,
            x: 28,
            y: -50,
            src: "img/day-ghoul-left-arm.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-ghoul-right-arm.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-ghoul3.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-ghoul3-left-arm.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-ghoul3-right-arm.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-ghoul4.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-ghoul4-left-arm.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-ghoul4-right-arm.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-ghoul2.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-ghoul2-left-arm.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-ghoul2-right-arm.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-ghoul1.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-ghoul1-left-arm.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-ghoul1-right-arm.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-ghoul5.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-ghoul5-left-arm.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-ghoul5-right-arm.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-lapabot.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-lapabot-left-arm.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-lapabot-right-arm.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-hal-bot.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-hal-bot-left-arm.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-hal-bot-right-arm.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-tesla-bot.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-tesla-bot-left-arm.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-tesla-bot-right-arm.png",
            img: {
                isLoaded: 0
            }
        }
    }],
    clothes: [{}, {
        head: {
            src: "img/day-headscarf.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-chapka.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-chapka.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-chapka.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-coat.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-coat.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-coat.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-gaz-mask.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-gaz-protection.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-gaz-protection.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-gaz-protection.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-radiation-suit.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-radiation-suit.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-radiation-suit.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-metal-helmet.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-welding-helmet.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-welding-helmet.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-welding-helmet.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-gladiator-helmet.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-gladiator-armor.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-gladiator-armor.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-leather-jacket.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-leather-jacket.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-leather-jacket.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-kevlar-suit.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-kevlar-suit.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-kevlar-suit.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-SWAT-suit.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-SWAT-suit.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-SWAT-suit.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-protective-suit.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-protective-suit.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-protective-suit.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-tesla-0.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-tesla-0.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-tesla-0.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-tesla-armor.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-tesla-armor.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-tesla-armor.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-camouflage-gear.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-camouflage-gear.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-camouflage-gear.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-christmas-hat.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-deer-hat.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-snowman-hat.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-snowman-hat.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-snowman-hat.png",
            img: {
                isLoaded: 0
            }
        }
    }, {
        head: {
            src: "img/day-elf-hat.png",
            img: {
                isLoaded: 0
            }
        },
        leftArm: {
            src: "img/day-left-arm-elf-hat.png",
            img: {
                isLoaded: 0
            }
        },
        rightArm: {
            src: "img/day-right-arm-elf-hat.png",
            img: {
                isLoaded: 0
            }
        }
    }],
    runEffect: {
        src: "img/day-run-effect.png",
        img: {
            isLoaded: 0
        }
    },
    death: {
        src: "img/day-dead-player.png",
        img: {
            isLoaded: 0
        }
    },
    hurt: {
        src: "img/hurt-player.png",
        img: {
            isLoaded: 0
        }
    },
    heal: {
        src: "img/heal-player.png",
        img: {
            isLoaded: 0
        }
    },
    food: {
        src: "img/food-player.png",
        img: {
            isLoaded: 0
        }
    },
    cartridges: [{
        src: "img/day-shotgun-cartridge.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-9mm-cartridge.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-AK47-cartridge.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-crossbow-cartridge.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-nails-cartridge.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-cells-cartridge.png",
        img: {
            isLoaded: 0
        }
    }],
    bullets: [
        [{
            src: "img/day-bullet1.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-bullet2.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-bullet2l.png",
            img: {
                isLoaded: 0
            }
        }],
        [{
            src: "img/day-bullet3.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-bullet4.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-bullet4l.png",
            img: {
                isLoaded: 0
            }
        }],
        [{
            src: "img/day-bullet5.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-bullet6.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-bullet6l.png",
            img: {
                isLoaded: 0
            }
        }],
        [{
            src: "img/day-wood-arrow.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-wood-arrow1.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-wood-arrowl.png",
            img: {
                isLoaded: 0
            }
        }],
        [{
            src: "img/day-wood-spear0.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-wood-spear1.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-wood-spearl.png",
            img: {
                isLoaded: 0
            }
        }],
        [{
            src: "img/day-wood-crossarrow.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-wood-crossarrow1.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-wood-crossarrowl.png",
            img: {
                isLoaded: 0
            }
        }],
        [{
            src: "img/day-nail1.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-nail2.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-nail2l.png",
            img: {
                isLoaded: 0
            }
        }],
        [{
            src: "img/day-laser0.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-laser1.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-laser1l.png",
            img: {
                isLoaded: 0
            }
        }],
        [{
            src: "img/day-grenade0.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-grenade1.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-grenadel.png",
            img: {
                isLoaded: 0
            }
        }]
    ],
    gunEffect: [
        [{
            src: "img/day-gun-effect0.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-gun-effect1.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-gun-effect2.png",
            img: {
                isLoaded: 0
            }
        }],
        [{
            src: "img/day-laser-effect0.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-laser-effect1.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-laser-effect2.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-laser-effect3.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-laser-effect4.png",
            img: {
                isLoaded: 0
            }
        }]
    ],
    weapons: [{
        type: 0,
        id: 0,
        shot: 0,
        rightArm: {
            angle: 0,
            x: 22,
            y: 39
        },
        leftArm: {
            angle: 0,
            x: 22,
            y: -39
        },
        soundDelay: 0,
        soundVolume: 0.5,
        soundLen: 3,
        sound: ["audio/hand-swing0.mp3", "audio/hand-swing2.mp3", "audio/hand-swing3.mp3"],
        breath: 0.05,
        move: 3,
        delay: 300,
        impact: 301,
        impactClient: 150,
        damage: 20,
        damageCac: 3,
        knockback: 10,
        stamina: 2,
        radius: 30,
        malusSpeed: 0,
        distance: 47,
        consumable: 0,
        trigger: 0
    }, {
        type: 1,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 0.8,
        soundLen: 1,
        sound: ["audio/pickaxe-swing.mp3"],
        weapon: {
            src: "img/day-stone-pickaxe.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 30,
            y: 0,
            rotation: 4,
            x2: 20,
            y2: 10
        },
        rightArm: {
            angle: 0,
            x: 33,
            y: 28,
            distance: 8,
            rotation: 1.8
        },
        leftArm: {
            angle: 0,
            x: 30,
            y: -28,
            distance: -14,
            rotation: 1
        },
        breath: 0.02,
        move: 2,
        delay: 800,
        delayClient: 800,
        impact: 801,
        impactClient: 650,
        damage: 45,
        damageCac: 16,
        knockback: 15,
        stamina: 5,
        radius: 50,
        distance: 56,
        consumable: 0,
        trigger: 0
    }, {
        type: 1,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 0.8,
        soundLen: 1,
        sound: ["audio/pickaxe-swing.mp3"],
        weapon: {
            src: "img/day-steel-pickaxe.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 30,
            y: 0,
            rotation: 4,
            x2: 20,
            y2: 10
        },
        rightArm: {
            angle: 0,
            x: 33,
            y: 28,
            distance: 8,
            rotation: 1.8
        },
        leftArm: {
            angle: 0,
            x: 30,
            y: -28,
            distance: -14,
            rotation: 1
        },
        breath: 0.02,
        move: 2,
        delay: 800,
        delayClient: 800,
        impact: 801,
        impactClient: 650,
        damage: 55,
        damageCac: 22,
        knockback: 15,
        stamina: 5,
        radius: 50,
        distance: 56,
        consumable: 0,
        trigger: 0
    }, {
        type: 1,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 0.8,
        soundLen: 1,
        sound: ["audio/hatchet-swing.mp3"],
        weapon: {
            src: "img/day-hachet.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 30,
            y: 0,
            rotation: 4,
            x2: 20,
            y2: 10
        },
        rightArm: {
            angle: 0,
            x: 33,
            y: 28,
            distance: 8,
            rotation: 1.8
        },
        leftArm: {
            angle: 0,
            x: 30,
            y: -28,
            distance: -14,
            rotation: 1
        },
        breath: 0.02,
        move: 2,
        delay: 500,
        delayClient: 500,
        impact: 501,
        impactClient: 350,
        damage: 30,
        damageCac: 7,
        knockback: 10,
        stamina: 4,
        radius: 40,
        distance: 59,
        consumable: 0,
        trigger: 0
    }, {
        type: 1,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 0.8,
        soundLen: 1,
        sound: ["audio/axe-swing.mp3"],
        weapon: {
            src: "img/day-stone-axe.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 30,
            y: 0,
            rotation: 4,
            x2: 20,
            y2: 10
        },
        rightArm: {
            angle: 0,
            x: 33,
            y: 28,
            distance: 8,
            rotation: 1.8
        },
        leftArm: {
            angle: 0,
            x: 30,
            y: -28,
            distance: -14,
            rotation: 1
        },
        breath: 0.05,
        move: 3,
        delay: 650,
        impact: 651,
        impactClient: 550,
        damage: 50,
        damageCac: 26,
        knockback: 20,
        stamina: 4,
        radius: 46,
        distance: 72,
        consumable: 0,
        trigger: 0
    }, {
        type: 3,
        id: 0,
        shot: 1,
        soundDelay: 0.75,
        soundVolume: 1,
        soundLen: 1,
        sound: ["audio/spear-shot.mp3"],
        weapon: {
            src: "img/day-wood-spear.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 25,
            y: 40
        },
        rightArm: {
            angle: 0,
            x: 10,
            y: 44
        },
        leftArm: {
            angle: 0,
            x: 22,
            y: -39
        },
        bulletNumber: [0],
        bulletId: 4,
        bulletSpeed: 0.5,
        damageType: 1,
        path: 600,
        damage: 80,
        knockback: 30,
        breath: 0.05,
        breathWeapon: 2,
        move: 3,
        delay: 850,
        impact: 100,
        impactClient: 100,
        stamina: 15,
        x: -40,
        distance: 47,
        distance: 60,
        consumable: 0,
        trigger: 0
    }, {
        type: 4,
        id: 0,
        shot: 1,
        WnVmv: {
            src: "img/day-wood-arrow1.png",
            img: {
                isLoaded: 0
            },
            x: 50,
            y: 0
        },
        soundDelay: 1.08,
        soundVolume: 1.4,
        soundLen: 1,
        sound: ["audio/bow-shot.mp3"],
        weapon: {
            src: "img/day-wood-bow.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 44,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 10,
            y: 44
        },
        leftArm: {
            angle: 0,
            x: 40,
            y: -30
        },
        damage: 40,
        knockback: 10,
        bulletNumber: [0],
        bulletId: 3,
        bulletSpeed: 0.75,
        damageType: 1,
        path: 800,
        breath: 0.5,
        breathWeapon: 1,
        move: 1,
        delay: 1200,
        impact: 120,
        impactClient: 100,
        stamina: 8,
        x: -1,
        distance: 47,
        distance: -8,
        consumable: 0,
        trigger: 0
    }, {
        type: 2,
        id: 0,
        shot: 1,
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 43,
            y: -13
        },
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 1,
        sound: ["audio/shotgun-shot.mp3"],
        weapon: {
            src: "img/day-shotgun.png",
            img: {
                isLoaded: 0
            },
            x: 60,
            y: 0
        },
        damage: 21,
        knockback: 20,
        gunEffect: 0,
        cartridge: 0,
        cartridgeDelay: 500,
        recoil: 3,
        recoilHead: 4,
        recoilGun: 3,
        noEffect: 0,
        firingRate: 0,
        spread: 0,
        bulletNumber: [0, 0.1, -0.1, 0.2, -0.2],
        bulletId: 2,
        bulletSpeed: 1.1,
        damageType: 1,
        magazine: 8,
        reload: 10,
        oneperone: 1,
        distance: 58,
        breath: 1,
        move: 2,
        delay: 900,
        impact: 901,
        stamina: 0,
        x: 0,
        path: 600,
        distance: 47,
        consumable: 0,
        trigger: 0
    }, {
        type: 2,
        id: 0,
        shot: 1,
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 1,
        sound: ["audio/9mm-shot.mp3"],
        weapon: {
            src: "img/day-9mm.png",
            img: {
                isLoaded: 0
            },
            x: 50,
            y: 0
        },
        damage: 28,
        knockback: 10,
        gunEffect: 0,
        cartridge: 1,
        cartridgeDelay: 400,
        recoil: 2,
        recoilHead: 1,
        recoilGun: 2,
        noEffect: 0,
        firingRate: 0,
        spread: 0,
        bulletNumber: [0],
        bulletId: 0,
        bulletSpeed: 1.2,
        damageType: 1,
        magazine: 20,
        reload: 22,
        oneperone: 0,
        distance: 40,
        breath: 1,
        move: 2,
        delay: 400,
        impact: 401,
        stamina: 0,
        x: 0,
        path: 800,
        distance: 47,
        consumable: 0,
        trigger: 0
    }, {
        type: 2,
        id: 0,
        shot: 1,
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        soundDelay: 0,
        soundVolume: 1.3,
        soundLen: 1,
        sound: ["audio/desert-eagle-shot.mp3"],
        weapon: {
            src: "img/day-desert-eagle.png",
            img: {
                isLoaded: 0
            },
            x: 50,
            y: 0
        },
        damage: 40,
        knockback: 25,
        gunEffect: 0,
        cartridge: 1,
        cartridgeDelay: 400,
        recoil: 2,
        recoilHead: 1,
        recoilGun: 2,
        noEffect: 0,
        firingRate: 0,
        spread: 0,
        bulletNumber: [0],
        bulletId: 0,
        bulletSpeed: 1.4,
        damageType: 1,
        magazine: 7,
        reload: 22,
        oneperone: 0,
        distance: 40,
        breath: 1,
        move: 2,
        delay: 400,
        impact: 401,
        stamina: 0,
        x: 0,
        path: 900,
        distance: 47,
        consumable: 0,
        trigger: 0
    }, {
        type: 2,
        id: 0,
        shot: 1,
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 43,
            y: -13
        },
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 1,
        sound: ["audio/ak47-shot.mp3"],
        weapon: {
            src: "img/day-AK47.png",
            img: {
                isLoaded: 0
            },
            x: 60,
            y: 0
        },
        damage: 30,
        knockback: 25,
        gunEffect: 0,
        cartridge: 2,
        cartridgeDelay: 500,
        recoil: 3,
        recoilHead: 2,
        recoilGun: 4,
        noEffect: 0,
        firingRate: 0,
        spread: 0,
        bulletNumber: [0],
        bulletId: 1,
        bulletSpeed: 1.4,
        damageType: 1,
        magazine: 30,
        reload: 25,
        oneperone: 0,
        distance: 58,
        breath: 1,
        move: 2,
        delay: 120,
        impact: 121,
        stamina: 0,
        x: 0,
        path: 900,
        distance: 47,
        consumable: 0,
        trigger: 0
    }, {
        type: 2,
        id: 0,
        shot: 1,
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 43,
            y: -13
        },
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 1,
        sound: ["audio/sniper-shot.mp3"],
        weapon: {
            src: "img/day-sniper.png",
            img: {
                isLoaded: 0
            },
            x: 60,
            y: 0
        },
        damage: 90,
        knockback: 30,
        gunEffect: 0,
        cartridge: 2,
        cartridgeDelay: 500,
        recoil: 3,
        recoilHead: 1,
        recoilGun: 4,
        noEffect: 0,
        firingRate: 0,
        spread: 0,
        bulletNumber: [0],
        bulletId: 1,
        bulletSpeed: 1.5,
        damageType: 1,
        magazine: 10,
        reload: 20,
        oneperone: 0,
        distance: 70,
        breath: 1,
        move: 2,
        delay: 1250,
        impact: 1251,
        stamina: 0,
        x: 0,
        path: 1100,
        distance: 47,
        consumable: 0,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-raw-steak.png",
            img: {
                isLoaded: 0
            },
            angle: 1,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 20,
        food: 30,
        radiation: 0,
        energy: 20,
        heal: -10,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-cooked-steak.png",
            img: {
                isLoaded: 0
            },
            angle: 1,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 4,
        breath: 0.4,
        move: 0.8,
        stamina: 0,
        consumableDelay: 200,
        wait: 20,
        food: 127,
        radiation: 0,
        energy: 80,
        heal: 0,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-rotten-steak.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 20,
        food: 15,
        radiation: 0,
        energy: 0,
        heal: -40,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-orange.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 40,
        radiation: 0,
        energy: 10,
        heal: 0,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-rotten-orange.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 5,
        radiation: 0,
        energy: 0,
        heal: -40,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-hand-medikit.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 55,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 32
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -32
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 25,
        food: 0,
        radiation: 0,
        energy: 0,
        heal: 200,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-hand-bandage.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 0,
        radiation: 0,
        energy: 0,
        heal: 60,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-hand-soda.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 30,
        radiation: 0,
        energy: 155,
        heal: 0,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 2,
        id: 0,
        shot: 1,
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 43,
            y: -13
        },
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 1,
        sound: ["audio/mp5-shot.mp3"],
        weapon: {
            src: "img/day-MP5.png",
            img: {
                isLoaded: 0
            },
            x: 60,
            y: 0
        },
        damage: 18,
        knockback: 15,
        gunEffect: 0,
        cartridge: 1,
        cartridgeDelay: 500,
        recoil: 3,
        recoilHead: 2,
        recoilGun: 4,
        noEffect: 0,
        firingRate: 0,
        spread: 0,
        bulletNumber: [0],
        bulletId: 0,
        bulletSpeed: 1.2,
        damageType: 1,
        magazine: 30,
        reload: 26,
        oneperone: 0,
        distance: 52,
        breath: 1,
        move: 2,
        delay: 100,
        impact: 101,
        stamina: 0,
        x: 0,
        path: 900,
        distance: 47,
        trigger: 0
    }, {
        type: 6,
        id: 0,
        shot: 0,
        rightArm: {
            angle: 0,
            x: 22,
            y: 39
        },
        leftArm: {
            angle: 0,
            x: 22,
            y: -39
        },
        breath: 0.05,
        move: 3,
        malusSpeed: 0,
        blueprint: {
            src: "img/day-hand-craft.png",
            img: {
                isLoaded: 0
            }
        },
        pencil: {
            src: "img/day-hand-craftpencil.png",
            img: {
                isLoaded: 0
            }
        },
        consumable: 0,
        trigger: 0
    }, {
        type: 1,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 0.8,
        soundLen: 1,
        sound: ["audio/pickaxe-swing.mp3"],
        weapon: {
            src: "img/day-sulfur-pickaxe.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 20,
            y: 0,
            rotation: 4,
            x2: 20,
            y2: 10
        },
        rightArm: {
            angle: 0,
            x: 33,
            y: 28,
            distance: 8,
            rotation: 1.8
        },
        leftArm: {
            angle: 0,
            x: 30,
            y: -28,
            distance: -14,
            rotation: 1
        },
        breath: 0.02,
        move: 2,
        delay: 800,
        delayClient: 800,
        impact: 801,
        impactClient: 650,
        damage: 65,
        damageCac: 30,
        knockback: 15,
        stamina: 5,
        radius: 50,
        distance: 56,
        consumable: 0,
        trigger: 0
    }, {
        type: 1,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 0.8,
        soundLen: 1,
        sound: ["audio/hammer-swing.mp3"],
        weapon: {
            src: "img/day-hammer.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 25,
            y: 0,
            rotation: 4,
            x2: 20,
            y2: 10
        },
        rightArm: {
            angle: 0,
            x: 33,
            y: 28,
            distance: 8,
            rotation: 1.8
        },
        leftArm: {
            angle: 0,
            x: 30,
            y: -28,
            distance: -14,
            rotation: 1
        },
        breath: 0.02,
        move: 2,
        delay: 1100,
        delayClient: 1100,
        impact: 1101,
        impactClient: 950,
        damage: 120,
        damageCac: 30,
        knockback: 30,
        stamina: 15,
        radius: 40,
        distance: 56,
        consumable: 0,
        trigger: 0
    }, {
        type: 1,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-repair-hammer.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 20,
            y: 0,
            rotation: 4,
            x2: 20,
            y2: 10
        },
        rightArm: {
            angle: 0,
            x: 33,
            y: 28,
            distance: 8,
            rotation: 1.8
        },
        leftArm: {
            angle: 0,
            x: 30,
            y: -28,
            distance: -14,
            rotation: 1
        },
        breath: 0.02,
        move: 2,
        delay: 700,
        delayClient: 700,
        impact: 701,
        impactClient: 550,
        damage: 40,
        damageCac: 15,
        knockback: 10,
        stamina: 6,
        radius: 40,
        distance: 59,
        consumable: 0,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-tomato-soup.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 30,
        food: 160,
        radiation: 0,
        energy: 40,
        heal: 0,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-hand-radaway.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 25
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -25
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 30,
        food: 0,
        radiation: 255,
        energy: 30,
        heal: 0,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-tomato.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 50,
        radiation: 0,
        energy: 10,
        heal: 0,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-rotten-tomato.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 5,
        radiation: 0,
        energy: 0,
        heal: -40,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 2,
        id: 0,
        shot: 1,
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 1,
        sound: ["audio/crossbow-shot.mp3"],
        weapon: {
            src: "img/day-wood-crossbow.png",
            img: {
                isLoaded: 0
            },
            x: 50,
            y: 0
        },
        damage: 50,
        knockback: 15,
        gunEffect: 0,
        cartridge: 3,
        cartridgeDelay: 400,
        recoil: 2,
        recoilHead: 1,
        recoilGun: 2,
        noEffect: 1,
        firingRate: 0,
        spread: 0,
        bulletNumber: [0],
        bulletId: 5,
        bulletSpeed: 0.95,
        damageType: 1,
        magazine: 1,
        reload: 8,
        oneperone: 0,
        distance: 40,
        breath: 1,
        move: 2,
        delay: 400,
        impact: 401,
        stamina: 12,
        x: 0,
        path: 800,
        distance: 47,
        consumable: 0,
        trigger: 0
    }, {
        type: 2,
        id: 0,
        shot: 1,
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 1,
        sound: ["audio/nail-gun-shot.mp3"],
        weapon: {
            src: "img/day-nail-gun.png",
            img: {
                isLoaded: 0
            },
            x: 50,
            y: 0
        },
        damage: 6,
        knockback: 10,
        gunEffect: 0,
        cartridge: 4,
        cartridgeDelay: 400,
        recoil: 2,
        recoilHead: 1,
        recoilGun: 2,
        noEffect: 0,
        firingRate: 0,
        spread: 0,
        bulletNumber: [0],
        bulletId: 6,
        bulletSpeed: 1,
        damageType: 1,
        magazine: 80,
        reload: 30,
        oneperone: 0,
        distance: 52,
        breath: 1,
        move: 2,
        delay: 300,
        impact: 301,
        stamina: 0,
        x: 0,
        path: 500,
        distance: 47,
        consumable: 0,
        trigger: 0
    }, {
        type: 2,
        id: 0,
        shot: 1,
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 43,
            y: -13
        },
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 1,
        sound: ["audio/shotgun-shot.mp3"],
        weapon: {
            src: "img/day-sawed-off-shotgun.png",
            img: {
                isLoaded: 0
            },
            x: 50,
            y: 0
        },
        damage: 28,
        knockback: 30,
        gunEffect: 0,
        cartridge: 0,
        cartridgeDelay: 500,
        recoil: 3,
        recoilHead: 4,
        recoilGun: 3,
        noEffect: 0,
        firingRate: 0,
        spread: 0,
        bulletNumber: [0, 0.12, -0.12, 0.24, -0.24],
        bulletId: 2,
        bulletSpeed: 1.11,
        damageType: 1,
        magazine: 8,
        reload: 10,
        oneperone: 1,
        distance: 53,
        breath: 1,
        move: 2,
        delay: 900,
        impact: 901,
        stamina: 0,
        x: 0,
        path: 400,
        distance: 47,
        consumable: 0,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-chips.png",
            img: {
                isLoaded: 0
            },
            angle: 1,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 4,
        breath: 0.4,
        move: 0.8,
        stamina: 0,
        consumableDelay: 200,
        wait: 20,
        food: 90,
        radiation: 0,
        energy: 50,
        heal: 0,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-rotten-chips.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 5,
        radiation: 0,
        energy: 0,
        heal: -40,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 2,
        id: 0,
        shot: 1,
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 1,
        sound: ["audio/laser-pistol-shot.mp3"],
        weapon: {
            src: "img/day-laser-pistol.png",
            img: {
                isLoaded: 0
            },
            x: 50,
            y: 0
        },
        damage: 55,
        knockback: 0,
        gunEffect: 1,
        cartridge: 5,
        cartridgeDelay: 400,
        recoil: 2,
        recoilHead: 1,
        recoilGun: 2,
        noEffect: 0,
        firingRate: 0,
        spread: 0,
        bulletNumber: [0],
        bulletId: 7,
        bulletSpeed: 1.45,
        damageType: 2,
        magazine: 12,
        reload: 22,
        oneperone: 0,
        distance: 50,
        breath: 1,
        move: 2,
        delay: 400,
        impact: 401,
        stamina: 0,
        x: 0,
        path: 900,
        distance: 47,
        consumable: 0,
        trigger: 0
    }, {
        type: 1,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 0.8,
        soundLen: 1,
        sound: ["audio/axe-swing.mp3"],
        weapon: {
            src: "img/day-sulfur-axe.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 30,
            y: 0,
            rotation: 4,
            x2: 20,
            y2: 10
        },
        rightArm: {
            angle: 0,
            x: 33,
            y: 28,
            distance: 8,
            rotation: 1.8
        },
        leftArm: {
            angle: 0,
            x: 30,
            y: -28,
            distance: -14,
            rotation: 1
        },
        breath: 0.05,
        move: 3,
        delay: 650,
        impact: 651,
        impactClient: 550,
        damage: 50,
        damageCac: 30,
        knockback: 20,
        stamina: 4,
        radius: 46,
        distance: 72,
        consumable: 0,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-hand-joystick.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 2,
        food: 0,
        radiation: 0,
        energy: 0,
        heal: 0,
        poison: 0,
        consumable: 0,
        trigger: 1
    }, {
        type: 2,
        id: 0,
        shot: 1,
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 1,
        sound: ["audio/laser-submachine-shot.mp3"],
        weapon: {
            src: "img/day-laser-submachine.png",
            img: {
                isLoaded: 0
            },
            x: 50,
            y: 0
        },
        damage: 45,
        knockback: 0,
        gunEffect: 1,
        cartridge: 5,
        cartridgeDelay: 500,
        recoil: 3,
        recoilHead: 2,
        recoilGun: 4,
        noEffect: 0,
        firingRate: 0,
        spread: 0,
        bulletNumber: [0],
        bulletId: 7,
        bulletSpeed: 1.45,
        damageType: 2,
        magazine: 30,
        reload: 25,
        oneperone: 0,
        distance: 54,
        breath: 1,
        move: 2,
        delay: 160,
        impact: 161,
        stamina: 0,
        x: 0,
        path: 900,
        distance: 47,
        consumable: 0,
        trigger: 0
    }, {
        type: 3,
        id: 0,
        shot: 1,
        weapon: {
            src: "img/day-hand-grenade.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 25,
            y: 50
        },
        rightArm: {
            angle: 0,
            x: 10,
            y: 44
        },
        leftArm: {
            angle: 0,
            x: 22,
            y: -39
        },
        bulletNumber: [0],
        bulletId: 8,
        bulletSpeed: 0.4,
        damageType: 1,
        path: 380,
        damage: 15,
        knockback: 5,
        breath: 0.05,
        breathWeapon: 2,
        move: 3,
        delay: 850,
        impact: 100,
        impactClient: 100,
        stamina: 15,
        x: -50,
        distance: 47,
        distance: 25,
        consumable: 0,
        trigger: 0
    }, {
        type: 1,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-super-hammer.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 25,
            y: 5,
            rotation: 4,
            x2: 20,
            y2: 10
        },
        rightArm: {
            angle: 0,
            x: 33,
            y: 28,
            distance: 8,
            rotation: 1.8
        },
        leftArm: {
            angle: 0,
            x: 30,
            y: -28,
            distance: -14,
            rotation: 1
        },
        breath: 0.02,
        move: 2,
        delay: 1100,
        delayClient: 1100,
        impact: 1101,
        impactClient: 950,
        damage: 1000,
        damageCac: 255,
        knockback: 30,
        stamina: 15,
        radius: 40,
        distance: 56,
        consumable: 0,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-hand-ghoul-drug.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 13
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 30,
        food: 0,
        radiation: 0,
        energy: 0,
        heal: -10,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-mushroom1.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 0,
        radiation: 0,
        energy: 10,
        heal: -20,
        poison: 12,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-mushroom2.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 40,
        radiation: 0,
        energy: 10,
        heal: 0,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-mushroom3.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 40,
        radiation: 0,
        energy: 10,
        heal: 0,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-rotten-mushroom1.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 0,
        radiation: 0,
        energy: 0,
        heal: -40,
        poison: 8,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-rotten-mushroom2.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 5,
        radiation: 0,
        energy: 0,
        heal: -40,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-rotten-mushroom3.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 5,
        radiation: 0,
        energy: 0,
        heal: -40,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-hand-lapadoine.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 13
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 30,
        food: 0,
        radiation: 0,
        energy: 0,
        heal: -10,
        poison: 2,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-pumpkin.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 25
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -25
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 20,
        food: 90,
        radiation: 0,
        energy: 20,
        heal: 0,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-rotten-pumpkin.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 25
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -25
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 30,
        radiation: 0,
        energy: 0,
        heal: -40,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-hand-antidote.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 13
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -13
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 30,
        food: 0,
        radiation: 0,
        energy: 0,
        heal: 50,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-acorn.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 10
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -10
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 15,
        radiation: 0,
        energy: 0,
        heal: 0,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 3,
        sound: 1,
        weapon: {
            src: "img/day-hand-rotten-acorn.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 10
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -10
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 2,
        radiation: 0,
        energy: 0,
        heal: -20,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 2,
        id: 0,
        shot: 1,
        rightArm: {
            angle: 0,
            x: 32,
            y: 15
        },
        leftArm: {
            angle: 0,
            x: 43,
            y: -13
        },
        soundDelay: 0,
        soundVolume: 1,
        soundLen: 1,
        sound: ["audio/laser-sniper-shot.mp3"],
        weapon: {
            src: "img/day-laser-sniper.png",
            img: {
                isLoaded: 0
            },
            x: 55,
            y: 0
        },
        damage: 100,
        knockback: 0,
        gunEffect: 1,
        cartridge: 5,
        cartridgeDelay: 500,
        recoil: 3,
        recoilHead: 1,
        recoilGun: 4,
        noEffect: 0,
        firingRate: 0,
        spread: 0,
        bulletNumber: [0],
        bulletId: 7,
        bulletSpeed: 1.5,
        damageType: 2,
        magazine: 10,
        reload: 20,
        oneperone: 0,
        distance: 70,
        breath: 1,
        move: 2,
        delay: 1250,
        impact: 1251,
        stamina: 0,
        x: 0,
        path: 1100,
        distance: 47,
        consumable: 0,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-hand-christmas-cake.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 10
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -10
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 127,
        radiation: 0,
        energy: 30,
        heal: 0,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-hand-rotten-christmas-cake.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 10
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -10
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 10,
        radiation: 0,
        energy: 0,
        heal: -20,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-hand-gingerbread-man.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 10
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -10
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 20,
        radiation: 0,
        energy: 20,
        heal: 40,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-hand-rotten-gingerbread-man.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 10
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -10
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 10,
        radiation: 0,
        energy: 0,
        heal: -20,
        poison: 0,
        consumable: 1,
        trigger: 0
    }, {
        type: 1,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-sugar-can.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 30,
            y: 0,
            rotation: 4,
            x2: 20,
            y2: 10
        },
        rightArm: {
            angle: 0,
            x: 33,
            y: 28,
            distance: 8,
            rotation: 1.8
        },
        leftArm: {
            angle: 0,
            x: 30,
            y: -28,
            distance: -14,
            rotation: 1
        },
        breath: 0.02,
        move: 2,
        delayClient: 650,
        delay: 650,
        impact: 651,
        impactClient: 550,
        damage: 60,
        damageCac: 38,
        knockback: 20,
        stamina: 16,
        radius: 50,
        distance: 56,
        consumable: 0,
        trigger: 0
    }, {
        type: 5,
        id: 0,
        shot: 0,
        weapon: {
            src: "img/day-hand-sugar-can-bow.png",
            img: {
                isLoaded: 0
            },
            angle: 0,
            x: 50,
            y: 0
        },
        rightArm: {
            angle: 0,
            x: 32,
            y: 10
        },
        leftArm: {
            angle: 0,
            x: 32,
            y: -10
        },
        recoil: 3,
        breath: 0.02,
        move: 2,
        stamina: 0,
        consumableDelay: 200,
        wait: 10,
        food: 30,
        radiation: 0,
        energy: 50,
        heal: 0,
        poison: 0,
        consumable: 1,
        trigger: 0
    }],
    AABB: {
        w: 24,
        h: 24
    },
    radius: 38,
    hitRadius: 40,
    _left: 36,
    _right: 36,
    _bottom: 36,
    _top: 36,
    speed: 0.23,
    speedRun: 0.35,
    speedMalusBusy: 0.08,
    speedMalusLapadone: 0.08,
    speedBonusLapadone: 0.08,
    speedKnockback: 0.05,
    collisionType: 0,
    remove: 1000,
    z: 0,
    life: 0,
    inventorySize: 8,
    lerp: 0.15,
    timelife: -1
}, {
    AABB: {
        w: 0,
        h: 0
    },
    radius: 50,
    _left: 0,
    _right: 0,
    _bottom: 0,
    _top: 0,
    speed: 0.2,
    collisionType: 2,
    remove: 1000,
    z: 0,
    life: 0,
    lerp: 0.1,
    timelife: 20000
}, {
    AABB: {
        w: 0,
        h: 0
    },
    radius: 4,
    _left: 0,
    _right: 0,
    _bottom: 0,
    _top: 0,
    speed: 1,
    collisionType: 2,
    remove: 1000,
    z: 0,
    life: 0,
    lerp: 0.2,
    timelife: -1
}, {
    AABB: {
        w: 0,
        h: 0
    },
    _left: 0,
    _right: 0,
    _bottom: 0,
    _top: 0,
    speed: 0,
    life: 0,
    remove: 1000,
    z: 0,
    lerp: 0.2,
    collisionType: 1,
    timelife: -1
}, {
    AABB: {
        w: 0,
        h: 0
    },
    _left: 0,
    _right: 0,
    _bottom: 0,
    _top: 0,
    speed: 0,
    life: 0,
    remove: 1000,
    z: 0,
    lerp: 0.2,
    collisionType: 1,
    timelife: -1
}, {
    AABB: {
        w: 0,
        h: 0
    },
    _left: 0,
    _right: 0,
    _bottom: 0,
    _top: 0,
    speed: 0,
    life: 0,
    remove: 1000,
    z: 0,
    lerp: 0.2,
    collisionType: 1,
    timelife: -1
}, {
    AABB: {
        w: 0,
        h: 0
    },
    _left: 0,
    _right: 0,
    _bottom: 0,
    _top: 0,
    speed: 0,
    life: 0,
    remove: 1000,
    z: 0,
    lerp: 0.2,
    collisionType: 1,
    timelife: -1
}, {
    speed: 0.7,
    life: 0,
    z: 0,
    lerp: 0.2
}, {
    AABB: {
        w: 24,
        h: 24
    },
    radius: 38,
    hitRadius: 40,
    _left: 36,
    _right: 36,
    _bottom: 36,
    _top: 36,
    speed: 0,
    collisionType: 0,
    remove: 1000,
    z: 1,
    life: 0,
    lerp: 0.15,
    timelife: 1800000
}, {
    AABB: {
        w: 24,
        h: 24
    },
    radius: 38,
    hitRadius: 40,
    _left: 36,
    _right: 36,
    _bottom: 36,
    _top: 36,
    speed: 0,
    collisionType: 0,
    remove: 1000,
    z: 1,
    life: 0,
    lerp: 0.15,
    timelife: 1800000
}, {
    AABB: {
        w: 24,
        h: 24
    },
    radius: 38,
    hitRadius: 40,
    _left: 36,
    _right: 36,
    _bottom: 36,
    _top: 36,
    speed: 0,
    collisionType: 0,
    remove: 1000,
    z: 1,
    life: 0,
    lerp: 0.15,
    timelife: 1800000
}, {
    AABB: {
        w: 24,
        h: 24
    },
    radius: 38,
    hitRadius: 40,
    _left: 36,
    _right: 36,
    _bottom: 36,
    _top: 36,
    speed: 0,
    collisionType: 0,
    remove: 1000,
    z: 1,
    life: 0,
    lerp: 0.15,
    timelife: 1800000
}, {
    AABB: {
        w: 24,
        h: 24
    },
    explosions: [{
        src: "img/day-explosion0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-explosion1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-explosion2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-explosion3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-explosion4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-explosion5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-explosion6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-explosion7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-explosion8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-explosion9.png",
        img: {
            isLoaded: 0
        }
    }],
    radius: 38,
    hitRadius: 40,
    _left: 36,
    _right: 36,
    _bottom: 36,
    _top: 36,
    speed: 0,
    collisionType: 2,
    remove: 0,
    z: 1,
    life: 64000,
    lerp: 0.15,
    timelife: 1500
}, {
    AABB: {
        w: 24,
        h: 24
    },
    radius: 38,
    hitRadius: 40,
    _left: 36,
    _right: 36,
    _bottom: 36,
    _top: 36,
    speed: 0.23,
    speedRun: 0.35,
    speedMalusBusy: 0.08,
    speedKnockback: 0.05,
    collisionType: 0,
    remove: 1000,
    z: 0,
    life: 0,
    inventorySize: 8,
    lerp: 0.15,
    timelife: -1
}];

function EntitieClass(type) {

    this.uid        = 0;
    this.pid        = 0;
    this.id         = 0;
    this.type       = type;
    this.subtype    = 0;
    this.angle      = 0;
    this.nangle     = 0;
    this.angleX     = 0;
    this.angleY     = 0;
    this.state      = 0;
    this.extra      = 0;
    this.broke      = 0;
    this.x          = 0;
    this.y          = 0;
    this.rx         = 0;
    this.ry         = 0;
    this.nx         = -1;
    this.ny         = 0;
    this.px         = 0;
    this.py         = 0;
    this.i          = 0;
    this.j          = 0;
    this.speed      = 0;
    this.update     = 0;
    this.removed    = 0;
    this.hit        = 0;
    this.hitMax     = 0;
    this.hurt       = 0;
    this.hurtAngle  = 0;
    this.heal       = 0;
    this.death      = 0;
    this.born       = 0;
    this.breath     = 0;
    this.breath2    = 0;
    this.particles = [];
    this.draw       = null;
    this.lerp       = 0.1;

    for (var i = 0; i < 10; i++)
        this.particles.push({
            c: 0,
            V: 0,
            l: 0,
            m: 0,
            t: 0,
            r: 0
        });
};

function setEntitie(entity, pid, uid, id, type, offsetX, offsetY, nx, ny, extra, angle, state) {

    entity.pid      = pid;
    entity.uid      = uid;
    entity.id       = id;
    entity.nangle   = MathUtils.reduceAngle(entity.angle, ((angle * 2) * window.Math.PI) / 255);
    entity.state    = state;
    entity.nx       = nx;
    entity.ny       = ny;
    entity.extra    = extra;

    if (entity.update === 0) {

        var playerGauges         = ENTITIES[type];
        entity.speed        = playerGauges.speed;
        entity.angle        = entity.nangle;
        entity.x            = offsetX;
        entity.y            = offsetY;
        entity.z            = playerGauges.z;
        entity.lerp         = playerGauges.lerp;
        entity.rx           = offsetX;
        entity.ry           = offsetY;
        entity.i            = window.Math.floor(offsetY / Render.__TILE_SIZE__);
        entity.j            = window.Math.floor(offsetX / Render.__TILE_SIZE__);
        entity.hit          = 0;
        entity.hitMax       = 0;
        entity.hurt         = 0;
        entity.hurt2        = 0;
        entity.hurtAngle    = 0;
        entity.heal         = 0;
        entity.death        = 0;
        entity.breath       = 0;
        entity.breath2      = 0;
        entity.born         = 0;
        entity.broke        = 0;
        entity.subtype      = 0;
        entity.draw         = null;

        var init = playerGauges.init;

        if (init !== window.undefined)
            init(entity);

    }
    var angle = Math2d.angle(entity.rx, entity.ry, nx, ny);
    entity.angleX = window.Math.cos(angle);
    entity.angleY = window.Math.sin(angle);
    entity.update = 1;
};
var Border = (function() {
    function forceNewIdentifier(M) {
        if (M.border === M.size) {
            M.cycle[M.size] = M.size;
            M.locator[M.size] = M.size;
            M.size++;
        }
        return M.cycle[M.border++];
    };

    function getNewIdentifier(M) {
        if (M.border < M.size)
            return M.cycle[M.border++];
        return -1;
    };

    function fastKillIdentifier(M, index) {
        M.border--;
        var lastValue = M.cycle[M.border];
        M.cycle[M.border] = M.cycle[index];
        M.cycle[index] = lastValue;
    };

    function killIdentifier(M, valueIndex) {
        M.border--;
        var lastValue = M.cycle[M.border];
        var valueLocator = M.locator[valueIndex];
        M.cycle[M.border] = valueIndex;
        M.cycle[valueLocator] = lastValue;
        M.locator[lastValue] = valueLocator;
        M.locator[valueIndex] = M.border;
    };

    function Border(size) {
        this.size = size;
        this.border = 0;
        this.cycle = [];
        this.locator = [];
        for (var i = 0; i < size; i++) {
            this.cycle[i] = i;
            this.locator[i] = i;
        }
    };

    function ImperfectBorder(size) {
        var border = new Border(size);
        var cycle = border.cycle;
        var dataStore = new window.Array(size);
        this.length = 0;
        this.reset = function vision() {
            border.border = 0;
            this.length = 0;
        };
        this.add = function vmMVw(data) {
            dataStore[forceNewIdentifier(border)] = data;
            this.length++;
        };
        this.remove = function remove(data) {
            for (var i = 0; i < this.length; i++) {
                if (dataStore[cycle[i]] === data) {
                    fastKillIdentifier(border, i);
                    this.length--;
                    return;
                }
            }
        };
        this.get = function get(i) {
            return dataStore[cycle[i]];
        };
    };

    function PerfectBorder(size) {
        var border = new Border(size);
        var cycle = border.cycle;
        var dataStore = new window.Array(size);
        var i = 0;
        var valueLocator = [];
        for (i = 0; i < size; i++)
            valueLocator[i] = -1;
        this.length = 0;
        this.reset = function vision() {
            border.border = 0;
            this.length = 0;
        };
        this.add = function vmMVw(data) {
            var pos = forceNewIdentifier(border);
            dataStore[pos] = data;
            valueLocator[data] = border.border - 1;
            this.length++;
        };
        this.remove = function remove(data) {
            var pos = valueLocator[data];
            if (pos === -1)
                return;
            valueLocator[data] = -1;
            fastKillIdentifier(border, pos);
            this.length--;
            if (this.length > 0)
                valueLocator[dataStore[cycle[pos]]] = pos;
        };
        this.get = function get(i) {
            return dataStore[cycle[i]];
        };
    };

    return {
        Border:             Border,
        PerfectBorder:      PerfectBorder,
        ImperfectBorder:    ImperfectBorder,
        getNewIdentifier:   getNewIdentifier,
        forceNewIdentifier: forceNewIdentifier,
        killIdentifier:     killIdentifier,
        fastKillIdentifier: fastKillIdentifier
    };

})();

var RNG = (function() {
    function Random(seed) {
        var m = 2147483648;
        var a = 1103515245;
        var c = 12345;
        var state = seed ? seed : window.Math.floor(window.Math.random() * (m - 1));
        this.init = function(seed) {
            state = seed ? seed : window.Math.floor(window.Math.random() * (m - 1));
        };
        this.get = function() {
            state = ((a * state) + c) % m;
            return state / m;
        };
    };
    return {
        Random: Random
    };
})();

var TextManager = (function() {
    var __COUNTER__ = 0;
    var languages = {
        eng: [__COUNTER__++, "en"],
        rus: [__COUNTER__++, "ru"],
        spa: [__COUNTER__++, "sp"],
        fra: [__COUNTER__++, "fr"],
        deu: [__COUNTER__++, "de"],
        ita: [__COUNTER__++, "it"],
        pol: [__COUNTER__++, "pl"],
        pt: [__COUNTER__++, "pt"]
    };
    var defaultLanguage = languages.eng;
    var currentLanguage = defaultLanguage[0];
    var currentLanguageIndex = [];
    for (var i = 0; i < __COUNTER__; i++)
        currentLanguageIndex[i] = [];
    var languageStrings = languages.eng;

    function setCurrentLanguage(language) {
        defaultLanguage = language;
        TextManager.defaultLanguage = defaultLanguage;
        currentLanguage = defaultLanguage[0];
        localStorage2.setItem("defaultLanguage", window.JSON.stringify(defaultLanguage));
    };

    function get(id) {
        if ((currentLanguageIndex[currentLanguage] === window.undefined) || (currentLanguageIndex[currentLanguage][id] === window.undefined))
            return currentLanguageIndex[languageStrings[0]][id];
        else
            return currentLanguageIndex[currentLanguage][id];
    };

    function getFormatted(id) {
        var code;
        if ((currentLanguageIndex[currentLanguage] === window.undefined) || (currentLanguageIndex[currentLanguage][id] === window.undefined))
            formattedString = currentLanguageIndex[languageStrings][id];
        else
            formattedString = currentLanguageIndex[currentLanguage][id];
        for (var i = 1; i < arguments.length; i++)
            formattedString[0] = formattedString[0].replace("%d", arguments[i]);
        return formattedString;
    };

    function setLanguageStrings(strings) {
        for (var i = 0; i < strings.length; i++)
            currentLanguageIndex[currentLanguage][i] = [strings[i]];
    };

    function loadLanguage(language, callback) {
        setCurrentLanguage(language);
        if (currentLanguageIndex[language[0]].length !== 0) {
            if (callback !== window.undefined)
                callback();
            return;
        }
        var xObj = new window.XMLHttpRequest;
        xObj.open("GET", ("json/defaultLanguage" + language[1]) + ".json", true);
        xObj.onreadystatechange = function() {
            if ((xObj.readyState === 4) && (this.status === 200)) {
                setLanguageStrings(window.JSON.parse(this.responseText));
                if (callback !== window.undefined)
                    callback();
            }
        };
        xObj.send();
    };

    function init(strings, fallback, callback) {
        if (fallback !== window.undefined)
            languageStrings = fallback;
        if (strings !== window.undefined) {
            var temp = currentLanguage;
            currentLanguage = languageStrings[0];
            setLanguageStrings(strings);
            currentLanguage = temp;
        }
        var storedLanguage = localStorage2.getItem("defaultLanguage");
        if (storedLanguage === null) {
            var userLanguage = window.navigator.language || window.navigator.userLanguage;
            switch (userLanguage) {
                case "ru":
                    defaultLanguage = languages.rus;
                    break;
                case "en":
                    defaultLanguage = languages.eng;
                    break;
                case "es":
                    defaultLanguage = languages.spa;
                    break;
                case "fr":
                    defaultLanguage = languages.fra;
                    break;
                case "it":
                    defaultLanguage = languages.ita;
                    break;
                case "pl":
                    defaultLanguage = languages.pol;
                    break;
                case "de":
                    defaultLanguage = languages.deu;
                    break;
                case "pt":
                    defaultLanguage = languages.pt;
                    break;
            }
        } else
            defaultLanguage = window.JSON.parse(storedLanguage);
        loadLanguage(defaultLanguage, callback);
    };

    return {
        languages:      languages,
        defaultLanguage:defaultLanguage,
        get:            get,
        getFormatted:   getFormatted,
        init:           init,
        loadLanguage:   loadLanguage
    };

})();
var Keyboard = (function() {

    var qwerty = "0";
    var azerty = "1";
    var UP      = 0;
    var t_DOWN  = 1;
    var LEFT  = 65;
    var RIGHT = 68;
    var TOP   = 87;
    var DOWN  = 83;
    var ARROW_LEFT   = 37;
    var ARROW_RIGHT  = 39;
    var ARROW_TOP    = 38;
    var ARROW_BOTTOM = 40;
    var SHIFT = 16;
    var keys = (new Array(255)).fill(UP);
    var mapping = null;

    function isAzerty() {
        if (mapping === azerty) return 1;
        else return 0;
    };

    function isQwerty() {
        if (mapping === qwerty) return 1;
        else return 0;
    };

    function setAzerty() {
        LEFT  = 81;
        RIGHT = 68;
        TOP   = 90;
        DOWN  = 83;
        localStorage2.setItem("keyboardMap", azerty);
        mapping = azerty;
    };

    function setQwert() {
        LEFT   = 65;
        RIGHT  = 68;
        TOP    = 87;
        DOWN   = 83;
        localStorage2.setItem("keyboardMap", qwerty);
        mapping = qwerty;
    };

    function keyup(event) {
        var k = window.Math.min(event.charCode || event.keyCode, 255);
        keys[k] = UP;
    };

    function keydown(event) {
        var k = Math.min(event.charCode || event.keyCode, 255);

        if      ((k === LEFT)  || (k === ARROW_LEFT))    press_left();
        else if ((k === TOP)   || (k === ARROW_TOP))     press_top();
        else if ((k === DOWN)  || (k === ARROW_BOTTOM))  press_bottom();
        else if ((k === RIGHT) || (k === ARROW_RIGHT))   press_right();

        keys[k] = t_DOWN;
        return k;
    };

    function press_left() {
        keys[RIGHT]         = UP;
        keys[ARROW_RIGHT]   = UP;
    };

    function press_right() {
        keys[LEFT]          = UP;
        keys[ARROW_LEFT]    = UP;
    };

    function press_bottom() {
        keys[TOP]           = UP;
        keys[ARROW_TOP]     = UP;
    };

    function press_top() {
        keys[DOWN]          = UP;
        keys[ARROW_BOTTOM]  = UP;
    };

    function isLeft ()      { return keys[LEFT]  || keys[ARROW_LEFT]   };
    function isRight ()     { return keys[RIGHT] || keys[ARROW_RIGHT]  };
    function isBottom ()    { return keys[DOWN]  || keys[ARROW_BOTTOM] };
    function isTop ()       { return keys[TOP]   || keys[ARROW_TOP]    };
    function isShift ()     { return keys[SHIFT]                       };
    function isKey (WmVNW)  { return keys[WmVNW]                       };

    function clearDirectionnal() {
        keys[RIGHT]        = UP;
        keys[ARROW_RIGHT]  = UP;
        keys[LEFT]         = UP;
        keys[ARROW_LEFT]   = UP;
        keys[TOP]          = UP;
        keys[ARROW_TOP]    = UP;
        keys[DOWN]         = UP;
        keys[ARROW_BOTTOM] = UP;
    };

    function LocalKeyboardEvent() {
        this.keyCode    = 0;
        this.charCode   = 0;
        this.altKey     = false;
        this.ctrlKey    = false;
        this.preventDefault = function() {};
    };

    mapping = localStorage2.getItem("keyboardMap");

    if (mapping === null) {
        var navLang = window.navigator.language || window.navigator.userLanguage;
        if ((navLang === "fr") || (navLang === "fr-FR"))  setAzerty();
        else                                              setQwert();
        }
        else if (mapping === azerty)                      setAzerty();
        else                                              setQwert();

    return {

        setAzerty:          setAzerty,
        setQwert:           setQwert,
        keyup:              keyup,
        keydown:            keydown,
        clearDirectionnal:  clearDirectionnal,
        isLeft:             isLeft,
        isRight:            isRight,
        isBottom:           isBottom,
        isTop:              isTop,
        isAzerty:           isAzerty,
        isQwerty:           isQwerty,
        isShift:            isShift,
        isKey:              isKey,
        LocalKeyboardEvent: LocalKeyboardEvent
    };

})();

var AudioUtils = (function() {
    var MAX_FADE_INTERVAL = 30000;
    var DISTANCE_THRESHOLD = 300;

    window.AudioContext = window.AudioContext || window.webkitAudioContext;
    var audioContext = new window.AudioContext;

    if (!audioContext.createGain)
        audioContext.createGain = audioContext.createGainNode;

    stream = null;
    mediaRecorder = null;
    chunks = [];
    record = null;
    blob = null;

    function getLastRecord() {
        return record;
    };

    function initStream() {
        stream = audioContext.createMediaStreamDestination();
        mediaRecorder = new window.MediaRecorder(stream.stream);
        mediaRecorder.ondataavailable = function(event) {
            chunks.push(event.data);
        };
        mediaRecorder.onstop = function(event) {
            var mimeOptions = window.JSON.parse('{ "type" : "audio/ogg; codecs=opus" }');
            blob = new window.Blob(chunks, mimeOptions);
            record = window.URL.createObjectURL(blob);
        };
    };

    function startRecordStream() {
        blob = null;
        record = null;
        chunks = [];
        mediaRecorder.start();
    };

    function stopRecordStream() {
        mediaRecorder.stop();
    };
    var options = {
        isFx: 1,
        isAudio: 1
    };
    try {
        var value = localStorage2.getItem("isFx");
        if (value !== null)
            options.isFx = window.Number(value);
        else if (isTouchScreen === 1)
            options.isFx = 0;
        value = localStorage2.getItem("isAudio");
        if (value !== null)
            options.isAudio = window.Number(value);
        else if (isTouchScreen === 1)
            options.isAudio = 0;
    } catch (error) {
        if (isTouchScreen === 1) {
            options.isFx = 0;
            options.isAudio = 0;
        }
    }

    function setAudio(value) {
        if ((value === 0) && (options.isAudio !== value)) {
            for (var soundKey in AudioUtils.audio) {
                var audio = AudioUtils.audio[soundKey];
                stopSound(audio);
            }
        }
        options.isAudio = value;
        localStorage2.setItem("isAudio", "" + value);
    };

    function setFx(value) {
        if ((value === 0) && (options.isFx !== value)) {
            for (var fxKey in AudioUtils._fx) {
                var _fx = AudioUtils._fx[fxKey];
                stopSound(_fx);
            }
        }
        options.isFx = value;
        localStorage2.setItem("isFx", "" + value);
    };

    function playFx(_fx, volume, distance, timestamp) {
        if (distance > DISTANCE_THRESHOLD)
            return;
        volume = (1 - (distance / DISTANCE_THRESHOLD)) * volume;
        _fx.volume = volume;
        playSound(_fx, 0, timestamp);
        _fx.run = 0;
    };

    function Sound(url, volume, loop, _fx) {
        this.url = url;
        this.buffer = null;
        this.source = null;
        this.isLoaded = 0;
        this.run = 0;
        this.gainNode = null;
        this.loop = loop;
        this.volume = 1;
        this.volume0 = -1;
        if (volume !== window.undefined)
            this.volume = volume;
        this.fadingVolume = -1;
        this._fx = 0;
        if (_fx === 1)
            this._fx = 1;
        this.fade = 0;
        this.fadeMax = 0;
        this.fadeEffect = 0;
        this.start = 0;
        this.durationMs = 0;
    };

    function changeVolume(sound, value) {
        sound.gainNode.gain.value = value;
        sound.volume = value;
    };

    function stopSound(sound) {
        if (sound.run === 1) {
            sound.run = 0;
            sound.volume0 = -1;
            sound.source.stop();
            window.console.log("Stop", sound.url);
        }
    };

    function fadeSound(sound, duration, effect) {
        if (sound.fadingVolume !== -1)
            sound.volume = sound.fadingVolume;
        sound.fade = 0;
        sound.fadeMax = duration;
        sound.fadeEffect = effect;
        window.console.log("FADE", sound.url);
    };

    function playSound(sound, duration, timestamp) {
        if (sound._fx === 0) {
            if (options.isAudio === 0)
                return;
        } else if (options.isFx === 0)
            return;
        if (sound.run === 1) {
            if (((sound.volume0 !== -1) && (sound.fadeMax === 0)) && ((previousTimestamp - sound.volume0) > MAX_FADE_INTERVAL)) {
                stopSound(sound);
                return;
            }
            if (sound.fadeMax > 0) {
                sound.fade = window.Math.min(sound.fade + delta, sound.fadeMax);
                var volume = window.Math.max(0, window.Math.min(1, sound.volume + (window.Math.cos(((1 - (sound.fade / sound.fadeMax)) * 0.5) * window.Math.PI) * sound.fadeEffect)));
                sound.gainNode.gain.value = volume;
                sound.fadingVolume = volume;
                if (sound.fade === sound.fadeMax) {
                    sound.volume = volume;
                    sound.fadingVolume = -1;
                    sound.fadeMax = 0;
                    sound.fade = 0;
                    if (sound.volume === 0)
                        sound.volume0 = previousTimestamp;
                    else
                        sound.volume0 = -1;
                }
            }
            return;
        }
        if (((sound.fadeMax === 0) && (sound.fade === 0)) && (sound.volume === 0))
            return;
        if (sound.isLoaded !== 1) {
            loadSound(sound);
            return;
        }
        var source = audioContext.createBufferSource();
        var gainNode = audioContext.createGain();
        sound.source = source;
        sound.gainNode = gainNode;
        changeVolume(sound, sound.volume);
        source.buffer = sound.buffer;
        source.connect(gainNode);
        if (stream !== null)
            source.connect(stream);
        gainNode.connect(audioContext.destination);
        if (sound.loop === true)
            source.loop = sound.loop;
        if (!source.stop)
            source.stop = source.noteOff;
        if (!source.start)
            source.start = source.noteOn;
        sound.source.start(((timestamp === window.undefined) ? 0 : timestamp) + audioContext.currentTime, (duration === window.undefined) ? 0 : duration);
        sound.run = 1;
        sound.start = previousTimestamp;
        window.console.log("Start", sound.url, sound.fade, sound.fadeMax, duration);
    };

    function loadSound(sound) {
        if (sound.isLoaded === 2)
            return;
        window.console.log("LOAD", sound);
        var xhr = new window.XMLHttpRequest;
        xhr.open('GET', sound.url, true);
        xhr.responseType = 'arraybuffer';
        xhr.onload = function() {
            audioContext.decodeAudioData(xhr.response, function(WNNNm) {
                sound.buffer = WNNNm;
                sound.isLoaded = 1;
                sound.durationMs = WNNNm.duration * 1000;
            });
        };
        sound.isLoaded = 2;
        xhr.send();
        return;
    };
    return {
        Sound:              Sound,
        loadSound:          loadSound,
        playSound:          playSound,
        playFx:             playFx,
        stopSound:          stopSound,
        fadeSound:          fadeSound,
        changeVolume:       changeVolume,
        options:            options,
        setAudio:           setAudio,
        setFx:              setFx,
        initStream:         initStream,
        startRecordStream:  startRecordStream,
        stopRecordStream:   stopRecordStream,
        getLastRecord:      getLastRecord,
        audio:              {},
        _fx:                {}
    };
})();

var Loader = (function() {
    var loadingScreen;

    function init() {
        loadingScreen = GUI.createBackground(423, 276, "img/loading1.png");
    };
    var transitionSpeed;
    var mouseX = new Mouse.LocalMouseEvent;
    var keyboard = new Keyboard.LocalKeyboardEvent;
    var transitionDuration = 800;
    var transitionState = 0;
    var transitionFunction = function(t) {
        return MathUtils.Ease.speedLimit(t, MathUtils.Ease.inQuart, 0.05);
    };
    var reverseTransitionDuration = 800;
    var reverseTransitionState = 0;
    var reverseTransitionFunction = function(t) {
        return MathUtils.Ease.speedLimit(t, MathUtils.Ease.outQuart, 0.05);
    };
    var reverseTransition = 0;
    var transitionDuration = 0;
    var isWaiting = window.undefined;

    function run() {reverseTransitionState
        CanvasUtils.setRenderer(Loader);
        transitionDuration = reverseTransitionDuration;
        reverseTransition = reverseTransitionDuration;
        isWaiting = reverseTransitionFunction;
        reverseTransitionState = 1;
        update();
    };

    function quit(callback) {
        transitionSpeed = callback;
        transitionDuration = transitionDuration;
        reverseTransition = transitionDuration;
        isWaiting = transitionFunction;
        transitionState = 1;
    };

    function update() {
        var transitionX = 0;
        var transitionY = 0;
        if (transitionDuration > 0) {
            transitionY = canh;
            var transition = isWaiting(1 - (transitionDuration / reverseTransition));
            if (transition === 1)
                transitionDuration = 0;
            if (transitionState === 1)
                transition *= -1;
            else
                transition = 1 - window.Math.abs(transition);
            transitionX *= transition;
            transitionY *= transition;
        }
        loadingScreen.pos.x = (canw2 - window.Math.floor(211 * scaleby)) + transitionX;
        loadingScreen.pos.y = window.Math.max(0, canh2 - window.Math.floor(138 * scaleby)) + transitionY;
    };

    function draw() {
        if (transitionManager() === 0)
            return;
        ctx.clearRect(0, 0, canw, canh);
        loadingScreen.draw();
    };

    function transitionManager() {
        if (transitionState === 1) {
            update();
            if (transitionDuration < 0) {
                transitionState = 0;
                transitionSpeed.run();
                return 0;
            }
            transitionDuration -= delta;
        } else if (reverseTransitionState === 1) {
            update();
            if (transitionDuration < 0) {
                reverseTransitionState = 0;
                Loader.getURLData = function(_name) {
                    _url = window.location.href;
                    _name = _name.replace(/[\[]/, "\[").replace(/[\]]/, "\]");
                    var regexS = ("[\?&]" + _name) + "=([^&#]*)";
                    var _regex = new window.RegExp(regexS);
                    var results = _regex.exec(_url);
                    return (results === null) ? null : results[1];
                };

                function setupServers() {

                    var serverList = Client.serverList;

                    Home.regions = [];
                    Home.privateServer = [];
                    Home.ghoulServer = [];

                    var regions = [];
                    var regionPlayers = [];
                    var totalPlayers = 0;
                    var serverDropdownHTML = '<select id="servers"><option value="auto">Auto Select Server</option>';

                    for (var i = 0; i < serverList.length; i++) {
                        var regionName = serverList[i][4];
                        var playerNumber = serverList[i][5];
                        var ghl = serverList[i][6];
                        totalPlayers += playerNumber;

                        if (ghl === 'ghoul') {
                            Home.ghoulServer.push(i);
                            continue;
                        }

                        if (ghl === ["br"]) {
                            regionName = regionName.replace("BR", "");
                            if (Home.regions[regionName] === window.undefined)
                                Home.regions[regionName] = [];
                            Home.regions[regionName].push(i);
                            continue;
                        }

                        for (var j = 0; j < regions.length; j++) {
                            if (regions[j] === regionName) {
                                regionPlayers[j] += playerNumber;
                                j = -1;
                                break;
                            }
                        }

                        if (j !== -1) {
                            regions.push(regionName);
                            regionPlayers.push(playerNumber);
                        }

                    }
                    var serverIndex = 1;
                    var selectedIndex = 0;

                    for (i = 0; i < regions.length; i++) {
                        regionName = regions[i];
                        serverDropdownHTML += ((("<option disabled>" + regions[i]) + "  - ") + regionPlayers[i]) + "  players</option>";
                        serverIndex++;
                        var id = 1;
                        for (j = 0; j < serverList.length; j++) {
                            if (serverList[j][4] === regionName && serverList[j][6] === 'survival') {
                                serverDropdownHTML += ((((((('<option value="' + serverList[j][0]) + '">') + regions[i]) + " ") + (id++)) + "  - ") + serverList[j][5]) + "  players</option>";
                                if (Client.selectedServer === j)
                                    selectedIndex = serverIndex;
                                serverIndex++;
                            }
                        }
                    }
                    
                    Home.htmlBattleRoyale = '<select id="servers"><option value="auto">Auto Select Server</option>';
                    for (var i in Home.regions) {
                        var serverIndex = 0;
                        for (var k = 0; k < Home.regions[i].length; k++)
                            serverIndex += serverList[Home.regions[i][k]][5];
                        //Home.htmlBattleRoyale += ((((('<option value="' + i) + '">') + i) + "  - ") + serverIndex) + "  players</option>";
                    }
                    Home.privateServer = Home.privateServer.sort(function(a, M) {
                        return window.Number(serverList[M][5]) - window.Number(serverList[a][5]);
                    });
                    Home.htmlPrivateServer = '<select id="servers"><option value="auto">Auto Select Server</option>';
                    for (var i in Home.privateServer) {
                        Home.htmlPrivateServer += ((((('<option value="' + i) + '">') + serverList[Home.privateServer[i]][4].replace("PRIV", "")) + "  - ") + serverList[Home.privateServer[i]][5]) + "  players</option>";
                    }
                    Home.htmlGhoulServer = '<select id="servers"><option value="auto">Auto Select Server</option>';
                    for (var i in Home.ghoulServer) {
                        Home.htmlGhoulServer += ('<option value="' + serverList[Home.ghoulServer[i]][0] + '">' + serverList[Home.ghoulServer[i]][4].replace("ghoul", "") + "  - " + serverList[Home.ghoulServer[i]][5]) + "  players</option>";
                    }
                    serverDropdownHTML += ("<option disabled>All servers  - " + totalPlayers) + "  players</option></select>";
                    Home.htmlBattleRoyale += ("<option disabled>All servers  - " + totalPlayers) + "  players</option></select>";
                    Home.htmlPrivateServer += ("<option disabled>All servers  - " + totalPlayers) + "  players</option></select>";
                    Home.htmlGhoulServer += ("<option disabled>All servers  - " + totalPlayers) + "  players</option></select>";

                    window.document.getElementById("serverList").innerHTML = serverDropdownHTML;
                    window.document.getElementById("servers").selectedIndex = selectedIndex;
                    
                    World.PLAYER.admin = 1; //added just taked from beloved if, whatever xD

                    if (((Loader.getURLData("admin") !== null) || (Loader.getURLData("member") !== null)) || (Loader.getURLData("moderator") !== null)) {
                        if ((Loader.getURLData("admin") !== null) || (Loader.getURLData("moderator") !== null)) {
                            World.PLAYER.admin = 1;
                            window.document.getElementById("chatInput").maxLength = 1000000;
                        }
                        window.document.getElementById("nickname").innerHTML += '<input id="passwordInput" type="password" placeholder="Password" maxLength="16">';
                        var password = localStorage2.getItem("password");
                        if (password !== null) window.document.getElementById("passwordInput").value = password;
                    }

                    var port = Loader.getURLData("port");
                    var ip = Loader.getURLData("ips");
                    if (ip !== null) {
                        ip = ip.replace(/\./g, '-');
                        var selectedServer = window.Number(window.document.getElementById("servers").value);
                        Client.serverList[selectedServer][0] = ip;
                        Client.serverList[selectedServer][1] = ip + ".devast.io";
                        Client.serverList[selectedServer][2] = (port === null) ? "443" : port;
                        Client.serverList[selectedServer][3] = 1;
                    }
                    ip = Loader.getURLData("ip");
                    if (ip !== null) {
                        ip = ip.replace(/\./g, '-');
                        var selectedServer = window.Number(window.document.getElementById("servers").value);
                        Client.serverList[selectedServer][0] = ip;
                        Client.serverList[selectedServer][1] = ip;
                        Client.serverList[selectedServer][2] = (port === null) ? "8080" : port;
                        Client.serverList[selectedServer][3] = 0;
                    }
                };
                Client.types = ["BR", "PRIV", "HIDDEN", "GHOUL"];
                Client.getServerList(function() {
                    setupServers();
                    Loader.quit(Home);
                });
                var entityExplosions = ENTITIES[__ENTITIE_EXPLOSION__].explosions;
                var entityExplosions2 = ENTITIES2[__ENTITIE_EXPLOSION__].explosions;
                for (var i = 0; i < entityExplosions.length; i++) {
                    entityExplosions[i].img = CanvasUtils.loadImage(entityExplosions[i].src, entityExplosions[i].img);
                    entityExplosions2[i].img = CanvasUtils.loadImage(entityExplosions2[i].src, entityExplosions2[i].img);
                }
            }
            transitionDuration -= delta;
        }
        return 1;
    };
    return {
        quit:   quit,
        init:   init,
        run:    run,
        update: update,
        draw:   draw
    };
})();

var Home = (function() {

    async function joinServer() {
        checkAdBlocker();
    
        if (shouldShowAds()) {
            if (Home.waitAds === 1) return;
            if (Home.ads === 1) {
                await showAds();
                return;
            }
        }
    
        const gameMode = getGameMode();
        const serverId = document.getElementById('servers').value;
        const [lobFind, lobID] = getLobbyDetails(gameMode, serverId);
    
        try {
            const lobby = await findOrJoinLobby(lobFind, lobID);
            connectToLobby(lobby);
        } catch (error) {
            console.error(error);
        }
    }
    
    function checkAdBlocker() {
        try {
            document.getElementsByClassName("ympb_target")[0].id;
            document.getElementById("trevda").id;
            document.getElementById("preroll").id;
        } catch (error) {
            Home.adblocker = 1;
        }
    }
    
    function shouldShowAds() {
        return (
            World.PLAYER.admin !== 1 &&
            typeof window["YMPB"] !== 'undefined' &&
            typeof window["YMPB"]["preroll"] !== 'undefined'
        );
    }
    
    function showAds() {
        return new Promise((resolve) => {
            AudioManager.cutTitleMusic();
            document.getElementById("preroll").style.display = "block";
            window["YMPB"]["preroll"]('preroll', () => {
                Home.waitAds = 0;
                Home.ads = -1;
                Home.joinServer();
                resolve();
            });
            Home.waitAds = 1;
        });
    }
    
    function getGameMode() {
        switch (Home.gameMode) {
            case World['__SURVIVAL__']:
                return 'survival';
            case World['__GHOUL__']:
                return 'ghoul';
            case World['__BR__']:
                return 'br';
            default:
                throw new Error('Unknown game mode', Home.gameMode);
        }
    }
    
    function getLobbyDetails(gameMode, serverId) {
        if (serverId === 'auto') {
            return ['https://api.eg.rivet.gg/matchmaker/lobbies/find', { 'game_modes': [gameMode] }];
        } else {
            return ['https://api.eg.rivet.gg/matchmaker/lobbies/join', { 'lobby_id': serverId }];
        }
    }
    
    async function findOrJoinLobby(url, body) {
        const headers = {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        };
        if (window.RIVET_TOKEN) {
            headers['Authorization'] = 'Bearer ' + window.RIVET_TOKEN;
        }
    
        const response = await fetch(url, {
            method: 'POST',
            headers: headers,
            body: JSON.stringify(body),
        });
    
        if (!response.ok) {
            throw new Error('Failed to find lobby: ' + response.status);
        }
    
        return response.json();
    }
    
    function connectToLobby(lobby) {
        Client.selectedServer = Client.serverList.findIndex(server => server[0] === lobby.lobby_id);
        Client.connectedLobby = lobby;
        Client.startConnection(document.getElementById('nicknameInput').value, 0, lobby.player.token);
    }
    

    function onError(state) {};

    function quitGame() {
        quit(Game);
    };

    function onOpen() {
        quitGame();
    };
    var vmV = 0;

    function nnn(type, offsetX, offsetY, angle, MMWWm, Mmwvn) {
        var entity = Entitie.get(0, vmV, vmV, type);
        setEntitie(entity, 0, vmV, vmV, type, offsetX, offsetY, offsetX, offsetY, (MMWWm << 5) + (Mmwvn << 10), angle, 1);
        vmV++;
    };

    function Vnvmv(type, offsetX, offsetY, rotation, state, subtype) {
        var entity = Entitie.get(0, vmV, vmV, type);
        setEntitie(entity, 0, vmV, vmV, type, offsetX, offsetY, offsetX, offsetY, (subtype << 7) + (rotation << 5), 0, state);
        vmV++;
    };
    var NNN = 0;
    var mNMWw = {
        _en: [{
            _name: 'Yuukun',
            button: ["img/yuukun0out.png", "img/yuukun0in.png", "img/yuukun0click.png"],
            _url: "https://energy.youtube.com/watch?v=TyI_8Il64d8"
        }, {
            _name: 'eXistenZ',
            button: ["img/existenz5out.png", "img/existenz5in.png", "img/existenz5click.png"],
            _url: "https://energy.youtube.com/watch?v=Seq6QGBTvNQ"
        }, {
            _name: 'Bubble Gum',
            button: ["img/bubblegum2out.png", "img/bubblegum2in.png", "img/bubblegum2click.png"],
            _url: "https://youtu.be/fD7lx9zAQGU"
        }],
        _fr: [{
            _name: 'Devaster',
            button: ["img/devaster0out.png", "img/devaster0in.png", "img/devaster0click.png"],
            _url: "https://energy.youtube.com/watch?v=Jpgx-d3qHzs"
        }]
    };
    var WVwwn = mNMWw._en;
    var userLanguage = window.navigator.language || window.navigator.userLanguage;
    if (userLanguage.toLowerCase().indexOf("fr") !== -1) WVwwn = mNMWw._fr;
    var WWNWM = WVwwn[window.Math.floor(WVwwn.length * window.Math.random())];
    var mnMMV = [GUI.renderText(WWNWM._name, "'Viga', sans-serif", "#FFFFFF", 30, 150), GUI.renderText(WWNWM._name, "'Viga', sans-serif", "#C5B03C", 30, 150), GUI.renderText(WWNWM._name, "'Viga', sans-serif", "#9B800D", 30, 150)];
    mnMMV[0].isLoaded = 1;
    mnMMV[1].isLoaded = 1;
    mnMMV[2].isLoaded = 1;
    var wMMNm = GUI.createButton(mnMMV[0].wh, mnMMV[0].h2, window.undefined, mnMMV);
    var wvmwM = GUI.createButton(120, 67, WWNWM.button);
    var WnwMN = {
        img: null
    };
    var VmV;
    var mVwVw;
    var nickname;
    var vWmNN;
    var VWvmM;
    var playbutt;
    var NnnVw;
    var Wvwwv;
    var VMmWW;
    var serverList;
    var vnmmN;
    var wwMMw;
    var mwvwV;
    var NNnwN;
    var VNVnM;
    var nmnWW;
    var mmvWv;
    var mwnnv;
    var wnwvW;
    var MMNMM;
    var WWNNV;
    var twitter;
    var facebook;
    var youtube;
    var reddit;
    var discord;
    var NvW;
    var VmwMm;
    var vvWWW;
    var wnm;
    var VMm;
    var WMmmM;
    var nvWwv;
    var WwWvv;
    var wvmmM;
    var mNVWV;
    var VMmWN;
    var vnvmm;
    var wWWwm;
    var privateServer;
    var vvmMm;
    var wMNWw;
    var trevdaStyle;
    var vWNNw;
    var VvVMm;
    var VwWMv;
    var vmWmN;

    function init() {
        Home.joinServer = joinServer;
        Home.ads = 1;
        Home.waitAds = 0;
        /*var WvMwn = new window.XMLHttpRequest;
        WvMwn.onreadystatechange = function() {
            if ((this.readyState === 4) && (this.status === 0)) {
                Home.adblocker = 1;
                window.document.getElementById("trevda").innerHTML = '<img src="./img/disable-to-get-bonus.png"></img>';
            }
        };
        WvMwn.open("GET", "https://api.adinplay.com/libs/aiptag/assets/adsbygoogle.js", true);
        WvMwn.send();
        */
        if (window.String(window.document.createElement).indexOf("createElement") === -1) Home.adblocker = 1;
        Home.gameMode = 0;
        Home.publicMode = 1;
        Home.alertId = 0;
        Home.alertDelay = 0;
        window.document.getElementById("nicknameInput").value = localStorage2.getItem("nickname", nickname);
        AudioUtils.fadeSound(AudioUtils.audio.title, 1000, AudioManager.musicVolume);
        Entitie.removeAll();
        Render.reset(1);
        vmV = 0;

        nnn(__ENTITIE_RESOURCES_DOWN__, 200, 0, 127, RESID.STONE, 3);
        nnn(__ENTITIE_RESOURCES_TOP__, 400, 100, 127, RESID.ORANGETREE, 2);
        nnn(__ENTITIE_RESOURCES_STOP__, 100, 100, 127, RESID.LEAFTREE, 0);
        Vnvmv(__ENTITIE_BUILD_GROUND__, 900, 500, 0, 33, IID.__SMELTER__);
        Vnvmv(__ENTITIE_BUILD_DOWN__, 800, 400, 1, 1, IID.__WORKBENCH__);
        nnn(__ENTITIE_RESOURCES_STOP__, 1100, 300, 10, RESID.LEAFTREE, 1);
        nnn(__ENTITIE_RESOURCES_STOP__, 800, 200, 127, RESID.LEAFTREE, 2);
        nnn(__ENTITIE_RESOURCES_STOP__, 700, 100, 127, RESID.LEAFTREE, 3);
        nnn(__ENTITIE_RESOURCES_STOP__, 1200, 0, 127, RESID.LEAFTREE, 0);
        nnn(__ENTITIE_RESOURCES_STOP__, 1300, 100, 127, RESID.LEAFTREE, 4);
        nnn(__ENTITIE_RESOURCES_STOP__, 1300, 300, 127, RESID.LEAFTREE, 2);
        nnn(__ENTITIE_RESOURCES_STOP__, 800, 500, 127, RESID.LEAFTREE, 4);
        nnn(__ENTITIE_RESOURCES_TOP__, 1000, 200, 127, RESID.ORANGETREE, 0);
        nnn(__ENTITIE_RESOURCES_STOP__, 700, 600, 127, RESID.LEAFTREE, 0);
        nnn(__ENTITIE_RESOURCES_STOP__, 500, 400, 127, RESID.LEAFTREE, 2);
        nnn(__ENTITIE_RESOURCES_DOWN__, 500, 700, 127, RESID.STONE, 3);
        nnn(__ENTITIE_RESOURCES_DOWN__, 1000, 300, 127, RESID.STONE, 4);
        nnn(__ENTITIE_RESOURCES_STOP__, 1300, 500, 100, RESID.LEAFTREE, 2);
        nnn(__ENTITIE_RESOURCES_STOP__, 1200, 700, 127, RESID.LEAFTREE, 4);
        nnn(__ENTITIE_RESOURCES_STOP__, 1300, 700, 127, RESID.LEAFTREE, 0);
        nnn(__ENTITIE_RESOURCES_DOWN__, 800, 600, 127, RESID.STONE, 5);
        nnn(__ENTITIE_RESOURCES_STOP__, 500, 600, 127, RESID.LEAFTREE, 4);
        nnn(__ENTITIE_RESOURCES_DOWN__, 200, 400, 127, RESID.URANIUM, 0);
        nnn(__ENTITIE_RESOURCES_DOWN__, 400, 500, 50, RESID.WOOD, 3);
        nnn(__ENTITIE_RESOURCES_STOP__, 100, 400, 190, RESID.LEAFTREE, 2);
        nnn(__ENTITIE_RESOURCES_STOP__, 100, 500, 190, RESID.LEAFTREE, 3);
        nnn(__ENTITIE_RESOURCES_STOP__, 100, 600, 127, RESID.LEAFTREE, 4);
        nnn(__ENTITIE_RESOURCES_STOP__, 0, 500, 127, RESID.LEAFTREE, 1);
        nnn(__ENTITIE_RESOURCES_STOP__, 200, 300, 50, RESID.LEAFTREE, 4);
        nnn(__ENTITIE_RESOURCES_STOP__, 400, 200, 10, RESID.LEAFTREE, 2);
        nnn(__ENTITIE_RESOURCES_STOP__, 500, 200, 10, RESID.LEAFTREE, 1);
        nnn(__ENTITIE_RESOURCES_STOP__, 100, 800, 10, RESID.LEAFTREE, 0);
        nnn(__ENTITIE_RESOURCES_STOP__, 400, 800, 10, RESID.LEAFTREE, 1);
        nnn(__ENTITIE_RESOURCES_STOP__, 700, 800, 10, RESID.LEAFTREE, 2);
        nnn(__ENTITIE_RESOURCES_DOWN__, 900, 700, 50, RESID.WOOD, 4);


        if (isTouchScreen === 1) VmV = GUI.createBackground(650, 312, "img/logo-homepage-mobile2.png");
        else VmV = GUI.createBackground(650, 312, "img/logo-homepage4.png");
        if (isTouchScreen === 1) mVwVw = GUI.createButton(0, 0);
        else mVwVw = GUI.createButton(94, 40, ["img/more-io-games-out.png", "img/more-io-games-in.png", "img/more-io-games-click.png"]);
        nickname = window.document.getElementById("nickname");
        vWmNN = nickname.style;
        VWvmM = {
            x: 0,
            y: 0
        };
        nickname.addEventListener("keyup", function(event) {
            if ((transitionState | reverseTransitionState) === 1) return;
            if (event.keyCode === 13) joinServer();
        }, false);

        playbutt = GUI.createButton(136, 57, ["img/play-button-out.png", "img/play-button-in.png", "img/play-button-click.png"]);

        NnnVw = window.document.getElementById("terms");
        Wvwwv = NnnVw.style;
        VMmWW = {
            x: 0,
            y: 0
        };
        serverList = window.document.getElementById("serverList");
        vnmmN = serverList.style;
        wwMMw = {
            x: 0,
            y: 0
        };
        serverList.addEventListener("mouseover", function(event) {
            if ((transitionState | reverseTransitionState) === 1) return;
        }, false);
        serverList.addEventListener("mousedown", function(event) {
            if ((transitionState | reverseTransitionState) === 1) return;
        }, false);
        serverList.addEventListener("mouseup", function(event) {
            if ((transitionState | reverseTransitionState) === 1) return;
        }, false);
        if (isTouchScreen === 1) mwvwV = GUI.createBackground(0, 0);
        else mwvwV = GUI.createBackground(230, 235, "img/changelogBox.png");
        NNnwN = window.document.getElementById("changelog");
        VNVnM = NNnwN.style;
        nmnWW = {
            x: 0,
            y: 0
        };
        if (isTouchScreen === 1) mmvWv = GUI.createBackground(0, 0);
        else mmvWv = GUI.createBackground(230, 355, "img/commandsBox.png");
        mwnnv = window.document.getElementById("howtoplay");
        wnwvW = mwnnv.style;
        MMNMM = {
            x: 0,
            y: 0
        };
        if (isTouchScreen === 1) WWNNV = GUI.createBackground(0, 0);
        else WWNNV = GUI.createBackground(123, 55, "img/gameMade.png");
        if (isTouchScreen === 1) twitter = GUI.createButton(0, 0);
        else twitter = GUI.createButton(40, 38, ["img/twitter-button-out.png", "img/twitter-button-in.png", "img/twitter-button-click.png"]);
        if (isTouchScreen === 1) facebook = GUI.createButton(0, 0);
        else facebook = GUI.createButton(40, 38, ["img/facebook-button-out.png", "img/facebook-button-in.png", "img/facebook-button-click.png"]);
        if (isTouchScreen === 1) youtube = GUI.createButton(0, 0);
        else youtube = GUI.createButton(40, 38, ["img/youtube-button-out.png", "img/youtube-button-in.png", "img/youtube-button-click.png"]);
        if (isTouchScreen === 1) reddit = GUI.createButton(0, 0);
        else reddit = GUI.createButton(54, 54, ["img/home-reddit-button-out.png", "img/home-reddit-button-in.png", "img/home-reddit-button-click.png"]);
        if (isTouchScreen === 1) discord = GUI.createButton(0, 0);
        else discord = GUI.createButton(54, 54, ["img/home-discord-button-out.png", "img/home-discord-button-in.png", "img/home-discord-button-click.png"]);
        NvW = GUI.createButton(93, 51, ["img/survivalmode-button-out.png", "img/survivalmode-button-in.png", "img/survivalmode-button-click.png"]);
        VmwMm = GUI.createButton(93, 51, ["img/battle-royale-button-out.png", "img/battle-royale-button-in.png", "img/battle-royale-button-click.png"]);
        vvWWW = GUI.createButton(93, 51, ["img/ghoul-mode-button-out.png", "img/ghoul-mode-button-in.png", "img/ghoul-mode-button-click.png"]);
        wnm = GUI.createButton(68, 34, ["img/private-server-button-out.png", "img/private-server-button-in.png", "img/private-server-button-click.png"]);
        VMm = GUI.createButton(68, 34, ["img/public-server-button-out.png", "img/public-server-button-in.png", "img/public-server-button-click.png"]);
        if (isTouchScreen === 1) WMmmM = GUI.createBackground(0, 0);
        else WMmmM = GUI.createBackground(171, 432, "img/featured.png");
        if (isTouchScreen === 1) nvWwv = GUI.createButton(0, 0);
        else nvWwv = GUI.createButton(60, 60, ["img/home-limaxio-out.png", "img/home-limaxio-in.png", "img/home-limaxio-click.png"]);
        if (isTouchScreen === 1) WwWvv = GUI.createButton(0, 0);
        else WwWvv = GUI.createButton(60, 60, ["img/home-oibio-out.png", "img/home-oibio-in.png", "img/home-oibio-click.png"]);
        if (isTouchScreen === 1) wvmmM = GUI.createButton(0, 0);
        else wvmmM = GUI.createButton(60, 60, ["img/home-starveio-out.png", "img/home-starveio-in.png", "img/home-starveio-click.png"]);
        if (isTouchScreen === 1) mNVWV = GUI.createButton(0, 0);
        else mNVWV = GUI.createButton(60, 60, ["img/home-nendio-out.png", "img/home-nendio-in.png", "img/home-nendio-click.png"]);
        VMmWN = window.document.getElementById("featuredVideo");
        vnvmm = VMmWN.style;
        wWWwm = {
            x: 0,
            y: 0
        };
        if (isTouchScreen === 1) privateServer = GUI.createButton(0, 0);
        else privateServer = GUI.createButton(86, 48, ["img/privateserver-button-out.png", "img/privateserver-button-in.png", "img/privateserver-button-click.png"]);
        if (isTouchScreen === 1) vvmMm = GUI.createButton(0, 0);
        else vvmMm = GUI.createButton(52, 42, ["img/map-editor-button-out.png", "img/map-editor-button-in.png", "img/map-editor-button-click.png"]);
        wMNWw = window.document.getElementById("trevda");
        trevdaStyle = wMNWw.style;
        vWNNw = {
            x: 0,
            y: 0
        };
        VvVMm = window.document.getElementById("preroll");
        VwWMv = VvVMm.style;
        vmWmN = {
            x: 0,
            y: 0
        };
    };
    var transitionSpeed;
    var mouseX = new Mouse.LocalMouseEvent;
    var keyboard = new Keyboard.LocalKeyboardEvent;
    var transitionDuration = 800;
    var transitionState = 0;
    var transitionFunction = function(t) {
        return MathUtils.Ease.speedLimit(t, MathUtils.Ease.inQuart, 0.05);
    };
    var reverseTransitionDuration = 2000;
    var reverseTransitionState = 0;
    var reverseTransitionFunction = function(t) {
        return MathUtils.Ease.speedLimit(t, MathUtils.Ease.outQuart, 0.05);
    };
    var reverseTransition = 0;
    var transitionDuration = 0;
    var isWaiting = window.undefined;

    function run() {
        Client.onError = onError;
        Client.onOpen = onOpen;
        World.PLAYER.isBuilding = 0;
        World.PLAYER.id = 0;
        Render.setDetection(0);
        Render.stopPoisonEffect();
        if (Home.gameMode === 1) {
            VMm.hide();
            wnm.hide();
        }
        Home.trevdaStyle = trevdaStyle;
        if (isTouchScreen === 1) {
            wMMNm.hide();
            wvmwM.hide();
            vvmMm.hide();
        }
        CanvasUtils.setRenderer(Home);
        transitionDuration = reverseTransitionDuration;
        reverseTransition = reverseTransitionDuration;
        isWaiting = reverseTransitionFunction;
        reverseTransitionState = 1;
        update();
        vWmNN.display = "inline-block";
        if (isTouchScreen === 0) Wvwwv.display = "inline-block";
        vnmmN.display = "inline-block";
        if (isTouchScreen === 0) VNVnM.display = "inline-block";
        if (isTouchScreen === 0) wnwvW.display = "inline-block";
        if (isTouchScreen === 0) vnvmm.display = "inline-block";
    };

    function quit(callback) {
        transitionSpeed = callback;
        VVwMW();
        transitionDuration = transitionDuration;
        reverseTransition = transitionDuration;
        isWaiting = transitionFunction;
        transitionState = 1;
    };

    function update() {
        var transitionX = 0;
        var transitionY = 0;
        if (transitionDuration > 0) {
            transitionY = canh;
            var transition = isWaiting(1 - (transitionDuration / reverseTransition));
            if (transition === 1) transitionDuration = 0;
            if (reverseTransitionState === 1) transition = 1 - window.Math.abs(transition);
            transitionX *= transition;
            transitionY *= transition;
        }
        VmV.pos.x = ((canw2 - window.Math.floor(325 * scaleby)) + window.Math.floor(((isTouchScreen === 0) ? -30 : -70) * scaleby)) - transitionX;
        VmV.pos.y = window.Math.max(0, (canh2 - window.Math.floor(156 * scaleby)) + window.Math.floor(((isTouchScreen === 0) ? -150 : -150) * scaleby)) - transitionY;
        mVwVw.pos.x = window.Math.floor(5 * scaleby) + transitionX;
        mVwVw.pos.y = ((canh - window.Math.floor(40 * scaleby)) + window.Math.floor(-5 * scaleby)) + transitionY;
        VWvmM.x = ((canw2 - window.Math.floor(91 * scaleby)) + window.Math.floor(((isTouchScreen === 0) ? -6.8 : -47.5) * scaleby)) - transitionX;
        vWmNN.left = VWvmM.x + "px";
        VWvmM.y = VmV.pos.y + window.Math.floor(143 * scaleby);
        vWmNN.top = VWvmM.y + "px";
        playbutt.pos.x = VmV.pos.x + window.Math.floor(290 * scaleby);
        playbutt.pos.y = VmV.pos.y + window.Math.floor(235 * scaleby);
        VMmWW.x = (canw - 85) + transitionX;
        Wvwwv.left = VMmWW.x + "px";
        VMmWW.y = ((canh - 17) + window.Math.floor(-10 * scaleby)) + transitionY;
        Wvwwv.top = VMmWW.y + "px";
        wwMMw.x = ((canw2 - window.Math.floor(100 * scaleby)) + window.Math.floor(((isTouchScreen === 0) ? 12.8 : -26.5) * scaleby)) - transitionX;
        vnmmN.left = wwMMw.x + "px";
        wwMMw.y = VWvmM.y + window.Math.floor(45 * scaleby);
        vnmmN.top = wwMMw.y + "px";
        mwvwV.pos.x = ((canw - window.Math.floor(230 * scaleby)) + window.Math.floor(7 * scaleby)) - transitionX;
        mwvwV.pos.y = -transitionY;
        nmnWW.x = ((canw - 200) + window.Math.floor(-10 * scaleby)) - transitionX;
        VNVnM.left = nmnWW.x + "px";
        nmnWW.y = window.Math.floor(20 * scaleby) - transitionY;
        VNVnM.top = nmnWW.y + "px";
        mmvWv.pos.x = mwvwV.pos.x;
        mmvWv.pos.y = mwvwV.pos.y + window.Math.floor(230 * scaleby);
        MMNMM.x = ((canw - 200) + window.Math.floor(-10 * scaleby)) - transitionX;
        wnwvW.left = MMNMM.x + "px";
        MMNMM.y = nmnWW.y + window.Math.floor(215 * scaleby);
        wnwvW.top = MMNMM.y + "px";
        WWNNV.pos.x = window.Math.floor(15 * scaleby) - transitionX;
        WWNNV.pos.y = window.Math.floor(5 * scaleby) - transitionY;
        twitter.pos.x = WWNNV.pos.x + window.Math.floor(-5 * scaleby);
        twitter.pos.y = WWNNV.pos.y + window.Math.floor(55 * scaleby);
        facebook.pos.x = twitter.pos.x + window.Math.floor(45 * scaleby);
        facebook.pos.y = twitter.pos.y;
        youtube.pos.x = facebook.pos.x + window.Math.floor(45 * scaleby);
        youtube.pos.y = twitter.pos.y;
        reddit.pos.x = VmV.pos.x + window.Math.floor(26 * scaleby);
        reddit.pos.y = VmV.pos.y + window.Math.floor(36 * scaleby);
        discord.pos.x = reddit.pos.x + window.Math.floor(83.5 * scaleby);
        discord.pos.y = reddit.pos.y;
        NvW.pos.x = playbutt.pos.x + window.Math.floor(213 * scaleby);
        NvW.pos.y = playbutt.pos.y + window.Math.floor(-98 * scaleby);
        VmwMm.pos.x = NvW.pos.x;
        VmwMm.pos.y = NvW.pos.y + window.Math.floor(60 * scaleby);
        vvWWW.pos.x = NvW.pos.x;
        vvWWW.pos.y = NvW.pos.y + window.Math.floor(60 * scaleby);
        wnm.pos.x = playbutt.pos.x + window.Math.floor(-126 * scaleby);
        wnm.pos.y = playbutt.pos.y + window.Math.floor(-58 * scaleby);
        VMm.pos.x = wnm.pos.x;
        VMm.pos.y = wnm.pos.y + window.Math.floor(-37 * scaleby);
        WMmmM.pos.x = twitter.pos.x;
        WMmmM.pos.y = twitter.pos.y + window.Math.floor(50 * scaleby);
        nvWwv.pos.x = twitter.pos.x + window.Math.floor(21.5 * scaleby);
        nvWwv.pos.y = twitter.pos.y + window.Math.floor(72 * scaleby);
        WwWvv.pos.x = nvWwv.pos.x;
        WwWvv.pos.y = nvWwv.pos.y + window.Math.floor(70 * scaleby);
        wvmmM.pos.x = WwWvv.pos.x;
        wvmmM.pos.y = WwWvv.pos.y + window.Math.floor(69 * scaleby);
        mNVWV.pos.x = wvmmM.pos.x;
        mNVWV.pos.y = wvmmM.pos.y + window.Math.floor(69 * scaleby);
        wWWwm.x = mNVWV.pos.x + window.Math.floor(15 * scaleby);
        vnvmm.left = wWWwm.x + "px";
        wWWwm.y = mNVWV.pos.y + window.Math.floor(83 * scaleby);
        vnvmm.top = wWWwm.y + "px";
        privateServer.pos.x = VMm.pos.x + window.Math.floor(-120 * scaleby);
        privateServer.pos.y = VMm.pos.y + window.Math.floor(41 * scaleby);
        vvmMm.pos.x = privateServer.pos.x + window.Math.floor(-8.5 * scaleby);
        vvmMm.pos.y = privateServer.pos.y + window.Math.floor(-53 * scaleby);
        vWNNw.x = canw2 - window.Math.floor(150 * scaleby);
        trevdaStyle.left = vWNNw.x + "px";
        vWNNw.y = VWvmM.y + window.Math.floor(130 * scaleby);
        trevdaStyle.top = vWNNw.y + "px";
        var mVvwv = window.Math.min(scaleby, 1);
        var pos = (VWvmM.y + transitionY) + (170 * scaleby);
        window.document.getElementById("trevda").style.left = window.Math.floor(canw2 - (325 * mVvwv)) + "px";
        window.document.getElementById("trevda").style.top = window.Math.floor(pos + (((mVvwv * 250) - 250) / 2)) + "px";
        window.document.getElementById("trevda").style.transform = ("scale(" + mVvwv) + ")";
        var mwNww = window.document.getElementById("nicknameInput").style;
        var width = window.Math.floor(220 * scaleby);
        var height = window.Math.floor(35 * scaleby);
        height = height + "px";
        width = width + "px";
        vWmNN.width = width;
        vWmNN.height = height;
        mwNww["borderWidth"] = window.Math.floor(3 * scaleby) + "px";
        mwNww.width = width;
        mwNww.height = height;
        mwNww.fontSize = window.Math.floor(18 * scaleby) + "px";
        if ((Loader.getURLData("ips") !== null) || (Loader.getURLData("ip") !== null)) {
            vnmmN.display = "none";
            NvW.pos.y = -500;
            VmwMm.pos.y = -500;
            vvWWW.pos.y = -500;
            wnm.pos.y = -500;
            VMm.pos.y = -500;
            if (Loader.getURLData("admin") !== null) wMNWw.display = "none";
        }
        if (window.document.getElementById("passwordInput") !== null) {
            var VNNvn = window.document.getElementById("passwordInput").style;
            var width = window.Math.floor(220 * scaleby);
            var height = window.Math.floor(35 * scaleby);
            var MMM = window.Math.floor(canw2 - (width / 2)) + "px";
            height = height + "px";
            width = width + "px";
            VNNvn.width = width;
            VNNvn.height = height;
            VNNvn.left = MMM;
            VNNvn["borderWidth"] = window.Math.floor(3 * scaleby) + "px";
            VNNvn.width = width;
            VNNvn.height = height;
            VNNvn.fontSize = window.Math.floor(18 * scaleby) + "px";
            VNNvn["marginTop"] = window.Math.floor(4 * scaleby) + "px";
        };
        width = window.Math.floor(200 * scaleby);
        height = window.Math.floor(28 * scaleby);
        height = height + "px";
        width = width + "px";
        vnmmN.width = width;
        vnmmN.height = height;
        vnmmN["backgroundSize"] = window.Math.floor(17 * scaleby) + "px";
        var nVvNv = window.document.getElementById("servers").style;
        width = window.Math.floor(230 * scaleby) + "px";
        height = window.Math.floor(28 * scaleby) + "px";
        nVvNv.width = width;
        nVvNv.height = height;
        nVvNv.fontSize = window.Math.floor(13 * scaleby) + "px";
        width = window.Math.floor(185 * scaleby);
        height = window.Math.floor(17 * scaleby);
        MMM = window.Math.floor(canw - width) + "px";
        height = height + "px";
        width = width + "px";
        _top = (window.Math.floor(canh - (18 * scaleby)) + transitionY) + "px";
        Wvwwv.width = width;
        Wvwwv.height = height;
        Wvwwv.left = MMM;
        Wvwwv.top = _top;
        Wvwwv.fontSize = window.Math.floor(11 * scaleby) + "px";
        width = window.Math.floor(197 * scaleby);
        height = window.Math.floor(250 * scaleby);
        MMM = window.Math.floor(canw - (205 * scaleby)) + "px";
        height = height + "px";
        width = width + "px";
        VNVnM.width = width;
        VNVnM.height = height;
        VNVnM.left = MMM;
        VNVnM.fontSize = window.Math.floor(11 * scaleby) + "px";
        VNVnM["borderRadius"] = window.Math.floor(5 * scaleby) + "px";
        VNVnM["paddingTop"] = window.Math.floor(18 * scaleby) + "px";
        var NNVVn = window.document.getElementById("changelogTitle").style;
        width = window.Math.floor(197 * scaleby) + "px";
        height = window.Math.floor(23 * scaleby) + "px";
        NNVVn.width = width;
        NNVVn.height = height;
        NNVVn.fontSize = window.Math.floor(16 * scaleby) + "px";
        NNVVn["paddingTop"] = window.Math.floor(8 * scaleby) + "px";
        NNVVn["paddingBottom"] = window.Math.floor(0 * scaleby) + "px";
        NNVVn["marginBottom"] = window.Math.floor(-2 * scaleby) + "px";
        NNVVn["marginTop"] = window.Math.floor(-22 * scaleby) + "px";
        NNVVn["borderRadius"] = ((((((window.Math.floor(5 * scaleby) + "px ") + window.Math.floor(5 * scaleby)) + "px ") + window.Math.floor(0 * scaleby)) + "px ") + window.Math.floor(0 * scaleby)) + "px";
        var NMvMW = window.document.getElementById("changelogImg").style;
        width = window.Math.floor(175 * scaleby) + "px";
        height = window.Math.floor(80 * scaleby) + "px";
        NMvMW.width = width;
        NMvMW.height = height;
        NMvMW.wnwNW = window.Math.floor(10 * scaleby) + "px";
        var nMWvW = window.document.getElementById("changelogText").style;
        nMWvW.fontSize = window.Math.floor(10 * scaleby) + "px";
        nMWvW["padding"] = window.Math.floor(15 * scaleby) + "px";
        nMWvW["paddingTop"] = window.Math.floor(5 * scaleby) + "px";
        width = window.Math.floor(197 * scaleby);
        height = window.Math.floor(347 * scaleby);
        MMM = window.Math.floor(canw - (205 * scaleby)) + "px";
        MVvmn = window.Math.floor(canh - (105 * scaleby)) + "px";
        height = height + "px";
        width = width + "px";
        wnwvW.width = width;
        wnwvW.height = height;
        wnwvW.left = MMM;
        wnwvW.bottom = MVvmn;
        wnwvW.fontSize = window.Math.floor(13 * scaleby) + "px";
        wnwvW["marginTop"] = window.Math.floor(0 * scaleby) + "px";
        wnwvW["paddingTop"] = window.Math.floor(18 * scaleby) + "px";
        window.document.getElementById("featuredVideo").style.fontSize = window.Math.floor(13 * scaleby) + "px";
        window.document.getElementById("mainCommands").style["marginTop"] = window.Math.floor(55 * scaleby) + "px";
        window.document.getElementById("secondCommands").style["marginTop"] = window.Math.floor(55 * scaleby) + "px";
        window.document.getElementById("moveCommand").style["paddingLeft"] = window.Math.floor(20 * scaleby) + "px";
        window.document.getElementById("moveCommand").style["paddingRight"] = window.Math.floor(20 * scaleby) + "px";
        window.document.getElementById("hitCommands").style["paddingLeft"] = window.Math.floor(10 * scaleby) + "px";
        window.document.getElementById("hitCommands").style["paddingRight"] = window.Math.floor(10 * scaleby) + "px";
        window.document.getElementById("runCommands").style["paddingLeft"] = window.Math.floor(0 * scaleby) + "px";
        window.document.getElementById("runCommands").style["paddingRight"] = window.Math.floor(20 * scaleby) + "px";
        window.document.getElementById("interactCommands").style["paddingLeft"] = window.Math.floor(7 * scaleby) + "px";
        window.document.getElementById("interactCommands").style["paddingRight"] = window.Math.floor(0 * scaleby) + "px";
        window.document.getElementById("craftCommands").style["paddingLeft"] = window.Math.floor(5 * scaleby) + "px";
        window.document.getElementById("craftCommands").style["paddingRight"] = window.Math.floor(18 * scaleby) + "px";
        window.document.getElementById("mapCommands").style["paddingLeft"] = window.Math.floor(6 * scaleby) + "px";
        window.document.getElementById("mapCommands").style["paddingRight"] = window.Math.floor(12 * scaleby) + "px";
        var NwvWV = window.document.getElementById("howtoplayTitle").style;
        width = window.Math.floor(197 * scaleby) + "px";
        height = window.Math.floor(23 * scaleby) + "px";
        NwvWV.width = width;
        NwvWV.height = height;
        NwvWV.fontSize = window.Math.floor(16 * scaleby) + "px";
        NwvWV["paddingTop"] = window.Math.floor(0 * scaleby) + "px";
        NwvWV["paddingBottom"] = window.Math.floor(13 * scaleby) + "px";
        NwvWV["marginBottom"] = window.Math.floor(6 * scaleby) + "px";
        NwvWV["marginTop"] = window.Math.floor(0 * scaleby) + "px";
        NwvWV["borderRadius"] = ((((((window.Math.floor(5 * scaleby) + "px ") + window.Math.floor(5 * scaleby)) + "px ") + window.Math.floor(0 * scaleby)) + "px ") + window.Math.floor(0 * scaleby)) + "px";
        var vNvVn = window.document.getElementById("howtoplayText").style;
        vNvVn.fontSize = window.Math.floor(11 * scaleby) + "px";
        vNvVn.MNmmV = window.Math.floor(6 * scaleby) + "px";
        vNvVn.height = window.Math.floor(52 * scaleby) + "px";
        var NWmNv = window.document.getElementById("howtoplayCommands").style;
        width = window.Math.floor(197 * scaleby) + "px";
        height = window.Math.floor(23 * scaleby) + "px";
        NWmNv.width = width;
        NWmNv.height = height;
        NWmNv.fontSize = window.Math.floor(16 * scaleby) + "px";
        NWmNv["paddingTop"] = window.Math.floor(13 * scaleby) + "px";
        NWmNv["paddingBottom"] = window.Math.floor(13 * scaleby) + "px";
        NWmNv["marginBottom"] = window.Math.floor(6 * scaleby) + "px";
        NWmNv["marginTop"] = window.Math.floor(11 * scaleby) + "px";
    };

    function draw() {
        if (transitionManager() === 0) return;
        ctx.clearRect(0, 0, canw, canh);
        Render.world();
        if (transitionDuration > 0) {
            NNN = isWaiting(1 - (transitionDuration / reverseTransition));
            if (reverseTransitionState === 1) NNN = 1 - window.Math.abs(NNN);
            NNN = 1 - NNN;
        }
        ctx.globalAlpha = 0.3 * NNN;
        ctx.fillStyle = "#000000";
        ctx.fillRect(0, 0, canw, canh);
        ctx.globalAlpha = 1;
        if (Home.gameMode === World.__SURVIVAL__) NvW.setState(GUI.__BUTTON_CLICK__);
        else if (Home.gameMode === World.__BR__) VmwMm.setState(GUI.__BUTTON_CLICK__);
        else if (Home.gameMode === World.__GHOUL__) vvWWW.setState(GUI.__BUTTON_CLICK__);
        if (Home.publicMode === 0) wnm.setState(GUI.__BUTTON_CLICK__);
        else if (Home.publicMode === 1) VMm.setState(GUI.__BUTTON_CLICK__);
        VmV.draw();
        mVwVw.draw();
        playbutt.draw();
        mwvwV.draw();
        mmvWv.draw();
        WWNNV.draw();
        twitter.draw();
        facebook.draw();
        youtube.draw();
        reddit.draw();
        discord.draw();
        NvW.draw();
        vvWWW.draw();
        wnm.draw();
        VMm.draw();
        WMmmM.draw();
        nvWwv.draw();
        WwWvv.draw();
        wvmmM.draw();
        mNVWV.draw();
        privateServer.draw();
        vvmMm.draw();
        if (WnwMN.img === null) {
            WnwMN.img = GUI.renderText((('0.' + versionInf[0]) + '.') + versionInf[1], "'Viga', sans-serif", "#d6ddde", 24, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#2b3c3e", 8);
            WnwMN.img.isLoaded = 1;
        }
        CanvasUtils.drawImageHd(WnwMN, (VmV.pos.x / scaleby) + 484.5, (VmV.pos.y / scaleby) + 124, 0, 0, 0, 1);
        wvmwM.pos.x = WMmmM.pos.x + (27 * scaleby);
        wvmwM.pos.y = WMmmM.pos.y + (329 * scaleby);
        wvmwM.draw();
        wMMNm.pos.x = WMmmM.pos.x + (34 * scaleby);
        wMMNm.pos.y = WMmmM.pos.y + (399 * scaleby);
        wMMNm.draw();
        Render.alertServer();
        AudioManager.scheduler();
    };

    function transitionManager() {
        if (transitionState === 1) {
            update();
            if (transitionDuration < 0) {
                transitionState = 0;
                mVwVw.setState(GUI.__BUTTON_OUT__);
                vWmNN.display = "none";
                playbutt.setState(GUI.__BUTTON_OUT__);
                Wvwwv.display = "none";
                vnmmN.display = "none";
                VNVnM.display = "none";
                wnwvW.display = "none";
                twitter.setState(GUI.__BUTTON_OUT__);
                facebook.setState(GUI.__BUTTON_OUT__);
                youtube.setState(GUI.__BUTTON_OUT__);
                reddit.setState(GUI.__BUTTON_OUT__);
                discord.setState(GUI.__BUTTON_OUT__);
                NvW.setState(GUI.__BUTTON_OUT__);
                VmwMm.setState(GUI.__BUTTON_OUT__);
                vvWWW.setState(GUI.__BUTTON_OUT__);
                wnm.setState(GUI.__BUTTON_OUT__);
                VMm.setState(GUI.__BUTTON_OUT__);
                nvWwv.setState(GUI.__BUTTON_OUT__);
                WwWvv.setState(GUI.__BUTTON_OUT__);
                wvmmM.setState(GUI.__BUTTON_OUT__);
                mNVWV.setState(GUI.__BUTTON_OUT__);
                vnvmm.display = "none";
                privateServer.setState(GUI.__BUTTON_OUT__);
                vvmMm.setState(GUI.__BUTTON_OUT__);
                trevdaStyle.display = "none";
                VwWMv.display = "none";
                transitionSpeed.run();
                return 0;
            }
            transitionDuration -= delta;
        } else if (reverseTransitionState === 1) {
            update();
            if (transitionDuration < 0) {
                reverseTransitionState = 0;
                if (World.PLAYER.admin !== 1) trevdaStyle.display = "inline-block";
                window.document.getElementById("bod").style.backgroundColor = "#46664d";
                MmNNN();
            }
            transitionDuration -= delta;
        }
        return 1;
    };

    function mouseDown(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_DOWN__);
        var vnm = 0;
        if (mVwVw.trigger() === 1) {
            vnm = 1;
        }
        if (playbutt.trigger() === 1) {
            vnm = 1;
        }
        if (twitter.trigger() === 1) {
            vnm = 1;
        }
        if (facebook.trigger() === 1) {
            vnm = 1;
        }
        if (youtube.trigger() === 1) {
            vnm = 1;
        }
        if (reddit.trigger() === 1) {
            vnm = 1;
        }
        if (discord.trigger() === 1) {
            vnm = 1;
        }
        if (NvW.trigger() === 1) {
            vnm = 1;
        }
        if (VmwMm.trigger() === 1) {
            vnm = 1;
        }
        if (vvWWW.trigger() === 1) {
            vnm = 1;
        }
        if (wnm.trigger() === 1) {
            vnm = 1;
        }
        if (VMm.trigger() === 1) {
            vnm = 1;
        }
        if (nvWwv.trigger() === 1) {
            vnm = 1;
        }
        if (WwWvv.trigger() === 1) {
            vnm = 1;
        }
        if (wvmmM.trigger() === 1) {
            vnm = 1;
        }
        if (mNVWV.trigger() === 1) {
            vnm = 1;
        }
        if (privateServer.trigger() === 1) {
            vnm = 1;
        }
        if (vvmMm.trigger() === 1) {
            vnm = 1;
        }
        wvmwM.trigger();
        wMMNm.trigger();
    };

    function mouseUp(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_UP__);
        var vnm = 0;
        if (mVwVw.trigger() === 1) {
            vnm = 1;
            var OPEN = window.open("https://iogames.space", "_blank");
        }
        if (playbutt.trigger() === 1) {
            vnm = 1;
            joinServer();
            AudioUtils.playFx(AudioUtils._fx.play, 1, 0);

        }
        if (twitter.trigger() === 1) {
            vnm = 1;
            var OPEN = window.open("https://twitter.com/lapamauve", "_blank");
        }
        if (facebook.trigger() === 1) {
            vnm = 1;
            var OPEN = window.open(" https://energy.facebook.com/limaxio-571818073000979", "_blank");
        }
        if (youtube.trigger() === 1) {
            vnm = 1;
            var OPEN = window.open("https://youtube.com/c/LapaMauve", "_blank");
        }
        if (reddit.trigger() === 1) {
            vnm = 1;
            var OPEN = window.open("https://energy.reddit.com/r/devastio/", "_blank");
        }
        if (discord.trigger() === 1) {
            vnm = 1;
            var OPEN = window.open("https://discord.gg/V4KXEwr", "_blank");
        }
        if (NvW.trigger() === 1) {
            vnm = 1;
            if (Home.gameMode !== 0) {
                if (((Client.state & State.__PENDING__) === 0) && ((Client.state & State.__CONNECTED__) === 0)) {
                    Home.gameMode = 0;
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    VMm.show();
                    wnm.show();
                    window.document.getElementById("serverList").innerHTML = Home.survivalHtml;
                    window.document.getElementById("servers").selectedIndex = Home.survivalIndex;
                    update();
                }
            }
        }
        if (VmwMm.trigger() === 1) {
            vnm = 1;
            if ((0 && (Home.gameMode !== 1)) && (Home.publicMode === 1)) {
                if (((Client.state & State.__PENDING__) === 0) && ((Client.state & State.__CONNECTED__) === 0)) {
                    Home.serverTest = 0;
                    Home.gameMode = World.__BR__;
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    VMm.hide();
                    wnm.hide();
                    Home.survivalHtml = window.document.getElementById("serverList").innerHTML;
                    Home.survivalIndex = window.document.getElementById("servers").selectedIndex;
                    window.document.getElementById("serverList").innerHTML = Home.htmlBattleRoyale;
                    var j = 0;
                    var vvvNm = 0;
                    for (var i in Home.regions) {
                        if (i === Client.serverList[Home.survivalIndex][4]) {
                            Home.serverTest = window.Math.floor(window.Math.random() * Home.regions[i].length);
                            vvvNm = j;
                            break;
                        }
                        j++;
                    };
                    window.document.getElementById("servers").selectedIndex = vvvNm;
                    update();
                }
            }
        }
        if (vvWWW.trigger() === 1) {
            vnm = 1;
            if ((Home.gameMode !== 1) && (Home.publicMode === 1)) {
                if (((Client.state & State.__PENDING__) === 0) && ((Client.state & State.__CONNECTED__) === 0)) {
                    Home.serverTest = 0;
                    Home.gameMode = World.__GHOUL__;
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    VMm.hide();
                    wnm.hide();
                    Home.survivalHtml = window.document.getElementById("serverList").innerHTML;
                    Home.survivalIndex = window.document.getElementById("servers").selectedIndex;
                    window.document.getElementById("serverList").innerHTML = Home.htmlGhoulServer;
                    var vvvNm = window.Math.floor(window.Math.random() * 1);
                    window.document.getElementById("servers").selectedIndex = vvvNm;
                    update();
                }
            }
        }
        if (wnm.trigger() === 1) {
            vnm = 1;
            if ((Home.publicMode !== 0) && (Home.gameMode === 0)) {
                if (((Client.state & State.__PENDING__) === 0) && ((Client.state & State.__CONNECTED__) === 0)) {
                    Home.serverTest = 0;
                    Home.publicMode = 0;
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    NvW.hide();
                    VmwMm.hide();
                    vvWWW.hide();
                    Home.survivalHtml = window.document.getElementById("serverList").innerHTML;
                    Home.survivalIndex = window.document.getElementById("servers").selectedIndex;
                    window.document.getElementById("serverList").innerHTML = Home.htmlPrivateServer;
                    Home.serverTest = 0;
                    window.document.getElementById("servers").selectedIndex = 0;
                    update();
                }
            }
        }
        if (VMm.trigger() === 1) {
            vnm = 1;
            if ((Home.publicMode !== 1) && (Home.gameMode === 0)) {
                if (((Client.state & State.__PENDING__) === 0) && ((Client.state & State.__CONNECTED__) === 0)) {
                    Home.publicMode = 1;
                    Home.gameMode = 0;
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    NvW.show();
                    vvWWW.show();
                    window.document.getElementById("serverList").innerHTML = Home.survivalHtml;
                    window.document.getElementById("servers").selectedIndex = Home.survivalIndex;
                    update();
                }
            }
        }
        if (nvWwv.trigger() === 1) {
            vnm = 1;
            var OPEN = window.open("http://limax.io", "_blank");
        }
        if (WwWvv.trigger() === 1) {
            vnm = 1;
            var OPEN = window.open("http://oib.io", "_blank");
        }
        if (wvmmM.trigger() === 1) {
            vnm = 1;
            var OPEN = window.open("http://starve.io", "_blank");
        }
        if (mNVWV.trigger() === 1) {
            vnm = 1;
            var OPEN = window.open("https://nend.io", "_blank");
        }
        if (privateServer.trigger() === 1) {
            vnm = 1;
            var OPEN = window.open("https://devast.io/private-server", "_blank");
        }
        if (vvmMm.trigger() === 1) {
            vnm = 1;
            Home.quit(Editor);
            AudioUtils.playFx(AudioUtils._fx.play, 1, 0);
        }
        if ((wvmwM.trigger() === 1) || (wMMNm.trigger() === 1)) {
            var OPEN = window.open(WWNWM._url, "_blank");
        };
    };

    function mouseMove(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_MOVE__);
        var vnm = 0;
        if (mVwVw.trigger() === 1) {
            vnm = 1;
        }
        if (playbutt.trigger() === 1) {
            vnm = 1;
        }
        if (twitter.trigger() === 1) {
            vnm = 1;
        }
        if (facebook.trigger() === 1) {
            vnm = 1;
        }
        if (youtube.trigger() === 1) {
            vnm = 1;
        }
        if (reddit.trigger() === 1) {
            vnm = 1;
        }
        if (discord.trigger() === 1) {
            vnm = 1;
        }
        if (NvW.trigger() === 1) {
            vnm = 1;
        }
        if (VmwMm.trigger() === 1) {
            vnm = 1;
        }
        if (vvWWW.trigger() === 1) {
            vnm = 1;
        }
        if (wnm.trigger() === 1) {
            vnm = 1;
        }
        if (VMm.trigger() === 1) {
            vnm = 1;
        }
        if (nvWwv.trigger() === 1) {
            vnm = 1;
        }
        if (WwWvv.trigger() === 1) {
            vnm = 1;
        }
        if (wvmmM.trigger() === 1) {
            vnm = 1;
        }
        if (mNVWV.trigger() === 1) {
            vnm = 1;
        }
        if (privateServer.trigger() === 1) {
            vnm = 1;
        }
        if (vvmMm.trigger() === 1) {
            vnm = 1;
        }
        wvmwM.trigger();
        wMMNm.trigger();
    };

    function touchStart(event) {
        if (event.touches.length > 0) {
            Mouse.touchToMouseEvent(mouseX, event, event.touches[0]);
            mouseDown(mouseX);
        }
    };

    function touchEnd(event) {
        mouseUp(mouseX);
    };

    function touchCancel(event) {
        if (event.touches.length > 0) {
            Mouse.touchToMouseEvent(mouseX, event, event.touches[0]);
            mouseUp(mouseX);
        }
    };

    function touchMove(event) {
        if (event.touches.length > 0) {
            Mouse.touchToMouseEvent(mouseX, event, event.touches[0]);
            mouseMove(mouseX);
        }
    };

    function getClickPos(e)
    {
        setx = rowx;
        sety = rowy;
        console.log('set: ' + rowx + ', ' + rowy)
    };

    function MmNNN() {
        if (isTouchScreen === 0) window.addEventListener('contextmenu', function(ev) {
            ev.preventDefault();
            getClickPos();
            return false;
            }, false);
        if (isTouchScreen === 0) window.addEventListener('mousedown', mouseDown, false);
        if (isTouchScreen === 0) window.addEventListener('mouseup', mouseUp, false);
        if (isTouchScreen === 0) window.addEventListener('mousemove', mouseMove, false);
        if (isTouchScreen === 1) window.addEventListener('touchstart', touchStart, false);
        if (isTouchScreen === 1) window.addEventListener('touchend', touchEnd, false);
        if (isTouchScreen === 1) window.addEventListener('touchcancel', touchCancel, false);
        if (isTouchScreen === 1) window.addEventListener('touchmove', touchMove, false);
    };

    function VVwMW() {
        if (isTouchScreen === 0) window.removeEventListener('mousedown', mouseDown, false);
        if (isTouchScreen === 0) window.removeEventListener('mouseup', mouseUp, false);
        if (isTouchScreen === 0) window.removeEventListener('mousemove', mouseMove, false);
        if (isTouchScreen === 1) window.removeEventListener('touchstart', touchStart, false);
        if (isTouchScreen === 1) window.removeEventListener('touchend', touchEnd, false);
        if (isTouchScreen === 1) window.removeEventListener('touchcancel', touchCancel, false);
        if (isTouchScreen === 1) window.removeEventListener('touchmove', touchMove, false);
    };
    return {
        quit: quit,
        init: init,
        run: run,
        update: update,
        draw: draw
    };
})();
var chatvisible     = 0;
var Game = (function() {
    function onError(state) {
        window.console.log("onError", state);
        if (World.gameMode === 1) quit(Rank);
        else quit(Score);
    };

    function onOpen() {};

    function getBoxState() {
        return NmW;
    };

    function getSkillBoxState() {
        return NmW & isCraftOpen;
    };

    var NmW = 0;
    var isMapOpen       = 0;
    var isSettingsOpen  = 0;
    var isCraftOpen     = 0;
    var isChestOpen     = 0;
    var isTeamOpen      = 0;
    var MNnnv = 0;

    function _OpenBox(box) {
        _CloseBox();
        NmW = 1;
        if (box === 1) isCraftOpen = 1;
        else if (box === 2) isChestOpen = 1; 
    };

    function _CloseBox() {
        NmW = 0;
        BUTTON_CLOSE_BOX.setState(GUI.__BUTTON_OUT__);
        isMapOpen       = 0;
        isSettingsOpen  = 0;
        isCraftOpen     = 0;
        isChestOpen     = 0;
        isTeamOpen      = 0;
        World.releaseBuilding();
    };

    var BUTTON_ADDTEAM      = GUI.createButton(63, 28, ["img/addteam-button-out.png", "img/addteam-button-in.png", "img/addteam-button-click.png"]);
    var BUTTON_LEAVE        = GUI.createButton(44, 33, ["img/leave-button-out.png", "img/leave-button-in.png", "img/leave-button-click.png"]);
    var BUTTON_LOCK_TEAM    = GUI.createButton(44, 33, ["img/lockteam-button-out.png", "img/lockteam-button-in.png", "img/lockteam-button-click.png"]);
    var BUTTON_UNLOCK_TEAM  = GUI.createButton(44, 33, ["img/unlockteam-button-out.png", "img/unlockteam-button-in.png", "img/unlockteam-button-click.png"]);
    var BUTTON_DELETE       = GUI.createButton(44, 33, ["img/delete-button-out.png", "img/delete-button-in.png", "img/delete-button-click.png"]);
    var BUTTON_DELETE2      = GUI.createButton(44, 33, ["img/delete-button-out.png", "img/delete-button-in.png", "img/delete-button-click.png"]);
    var BUTTON_JOIN         = GUI.createButton(44, 33, ["img/join-button-out.png", "img/join-button-in.png", "img/join-button-click.png"]);
    var BUTTON_CRAFT        = GUI.createButton(71, 46, ["img/craft-button-out.png", "img/craft-button-in.png", "img/craft-button-click.png"]);
    var BUTTON_CANCEL       = GUI.createButton(71, 46, ["img/cancel-craft-button-out.png", "img/cancel-craft-button-in.png", "img/cancel-craft-button-click.png"]);
    var BUTTON_UNLOCK       = GUI.createButton(71, 46, ["img/unlock-button-out.png", "img/unlock-button-in.png", "img/unlock-button-click.png"]);
    var BUTTON_BAG          = GUI.createButton(64, 63, ["img/bag-button-out.png", "img/bag-button-in.png", "img/bag-button-click.png"]);
    BUTTON_BAG.open = 0;

    var skillList = [];
    var craftList = [];
    var nmMMm = 0;
    
    var BUTTON_CLOSE_BOX = GUI.createButton(43, 43, ["img/close-box-out.png", "img/close-box-in.png", "img/close-box-click.png"]);
    var highpartout = [CanvasUtils.loadImage("img/high-particules-out.png"), CanvasUtils.loadImage("img/high-particules-in.png"), CanvasUtils.loadImage("img/high-particules-click.png")];
    var joinbuttout = [CanvasUtils.loadImage("img/join-button-out.png"), CanvasUtils.loadImage("img/join-button-in.png"), CanvasUtils.loadImage("img/join-button-click.png")];
    var removebuttout = [CanvasUtils.loadImage("img/remove-button-out.png"), CanvasUtils.loadImage("img/remove-button-in.png"), CanvasUtils.loadImage("img/remove-button-click.png")];
    var wVwnm = GUI.createButton(54, 42, null, highpartout);
    var vWmmV = [CanvasUtils.loadImage("img/low-particules-out.png"), CanvasUtils.loadImage("img/low-particules-in.png"), CanvasUtils.loadImage("img/low-particules-click.png")];
    var VnWMV = GUI.createButton(54, 42, null, vWmmV);
    var vVvNM = [CanvasUtils.loadImage("img/no-particules-out.png"), CanvasUtils.loadImage("img/no-particules-in.png"), CanvasUtils.loadImage("img/no-particules-click.png")];
    var wwMwv = GUI.createButton(54, 42, null, vVvNM);

    var IMG_BUTTON_FUEL         = [CanvasUtils.loadImage("img/fuel-button-out.png"), CanvasUtils.loadImage("img/fuel-button-in.png"), CanvasUtils.loadImage("img/fuel-button-click.png")];
    var BUTTON_FUEL             = GUI.createButton(46, 46, null, IMG_BUTTON_FUEL);
    var IMG_BUTTON_FUEL1        = [CanvasUtils.loadImage("img/fuel1-button-out.png"), CanvasUtils.loadImage("img/fuel1-button-in.png"), CanvasUtils.loadImage("img/fuel1-button-click.png")];
    var BUTTON_FUEL1            = GUI.createButton(46, 46, null, IMG_BUTTON_FUEL1);
    var IMG_BUTTON_CELLS        = [CanvasUtils.loadImage("img/energy-cells-button-out.png"), CanvasUtils.loadImage("img/energy-cells-button-in.png"), CanvasUtils.loadImage("img/energy-cells-button-click.png")];
    var BUTTON_CELLS            = GUI.createButton(46, 46, null, IMG_BUTTON_CELLS);

    var VVVMw = [CanvasUtils.loadImage("img/high-resolution-out.png"), CanvasUtils.loadImage("img/high-resolution-in.png"), CanvasUtils.loadImage("img/high-resolution-click.png")];
    var wWNnw = GUI.createButton(54, 42, null, VVVMw);
    var wmnmv = [CanvasUtils.loadImage("img/medium-resolution-out.png"), CanvasUtils.loadImage("img/medium-resolution-in.png"), CanvasUtils.loadImage("img/medium-resolution-click.png")];
    var nvwMN = GUI.createButton(54, 42, null, wmnmv);
    var vmVnn = [CanvasUtils.loadImage("img/low-resolution-out.png"), CanvasUtils.loadImage("img/low-resolution-in.png"), CanvasUtils.loadImage("img/low-resolution-click.png")];
    var MNVVn = GUI.createButton(54, 42, null, vmVnn);
    var NwVwn = [CanvasUtils.loadImage("img/azerty-button-out.png"), CanvasUtils.loadImage("img/azerty-button-in.png"), CanvasUtils.loadImage("img/azerty-button-click.png")];
    var VmvmN = GUI.createButton(81, 33, null, NwVwn);
    var NMnMN = [CanvasUtils.loadImage("img/qwerty-button-out.png"), CanvasUtils.loadImage("img/qwerty-button-in.png"), CanvasUtils.loadImage("img/qwerty-button-click.png")];
    var WMVVn = GUI.createButton(87, 33, null, NMnMN);
    var soundonbutt = [CanvasUtils.loadImage("img/sound-on-out.png"), CanvasUtils.loadImage("img/sound-on-in.png"), CanvasUtils.loadImage("img/sound-on-click.png")];
    var soundoffbutt = [CanvasUtils.loadImage("img/sound-off-out.png"), CanvasUtils.loadImage("img/sound-off-in.png"), CanvasUtils.loadImage("img/sound-off-click.png")];
    var wvNNV = GUI.createButton(51, 36, null, soundonbutt);
    var WVnnn = GUI.createButton(51, 36, null, soundoffbutt);
    var NmVWV = GUI.createButton(51, 36, null, soundonbutt);
    var vVMWm = GUI.createButton(51, 36, null, soundoffbutt);
    var MNWwn = [];
    var MmV = -1;
    var NWmNn = -1;
    var inventoryEmpty = CanvasUtils.loadImage("img/inv-empty.png");
    var inventoryEmpty2 = [inventoryEmpty, inventoryEmpty, inventoryEmpty];
    var inventory = [];
    var craft = [];
    var recipe = [];
    var queue = [];
    var tools = [];
    var join = [];
    var kick = [];
    var chest = [];
    var autoloot = [];
    var preview = GUI.createButton(58, 58, null, inventoryEmpty2);
    var inventoryItemNumber = [];
    var inventoryAmmoNumber = [];
    var mWM = 0;
    var MWVNw = 0;
    var NVNwm = 0;
    var MMMvM = 0;
    var vmWNW = 0;
    var NnVMv = 0;
    var WNmmw = 0;
    var nvnNv = 0;

    function NnnNW() {
        if ((Mouse.state === Mouse.__MOUSE_DOWN__) && (World.PLAYER.click === 0)) {
            if (World.PLAYER.isBuilding === 1) {
                World.PLAYER.click = -1;
                if (World.PLAYER.canBuild === 1) Client.sendPacket(window.JSON.stringify([14, World.PLAYER.buildRotate, World.PLAYER.iBuild, World.PLAYER.jBuild]));
            } else {
                World.PLAYER.click = 1;
                World.interaction = -1;
                Client.sendMouseDown();
            }
        } else if (Mouse.state === Mouse.__MOUSE_UP__) {
            if (World.PLAYER.isBuilding === 1) {
                nmMMm = 0;
                World.PLAYER.click = 0;
            } else if (World.PLAYER.click === 1) {
                nmMMm = 0;
                World.PLAYER.click = 0;
                Client.sendMouseUp();
            } else if (nmMMm === 1) {
                World.PLAYER.click = 1;
                World.interaction = -1;
                Client.sendMouseDown();
            }
        }
    };

    function vWMVN() {
        Client.update();
        if (delta > 5000) Client.sendPacket("[20]");
        if (chatvisible === 0) {
            Client.sendMove();
            Client.sendShift();
        }
        if (Mouse.state === Mouse.__MOUSE_DOWN__) Client.sendFastMouseAngle();
        else Client.sendMouseAngle();
        NnnNW();
    };
    function markPosition() {
        if (MOD.DrawLines) {
            var Nnw = 0;
            if (Nnw > 0) {
                Nnw -= delta;
                if (Nnw > 2500) ctx.globalAlpha = MathUtils.Ease.inOutQuad((3000 - Nnw) / 500);
                else if (Nnw < 500) ctx.globalAlpha = MathUtils.Ease.inOutQuad(Nnw / 500);
                ctx.drawImage(VWWvn, editorCopy.pos.x - (85 * scaleby), editorCopy.pos.y - (40 * scaleby), VWWvn.wh * scaleby, VWWvn.h2 * scaleby);
                ctx.globalAlpha = 1;
            }
            if (NVVNW[World.PLAYER._j] === window.undefined) NVVNW[World.PLAYER._j] = [];
            if (NVVNW[World.PLAYER._j][World.PLAYER._i] === window.undefined) NVVNW[World.PLAYER._j][World.PLAYER._i] = GUI.renderText(((("(" + World.PLAYER._j) + ",") + World.PLAYER._i) + ")", "'Viga', sans-serif", "#FFFFFF", 30, 300, "#000000", 22, 22, window.undefined, window.undefined, 0.4, window.undefined, "#000000", 15.6);
            var img = NVVNW[World.PLAYER._j][World.PLAYER._i];
            ctx.drawImage(img, 5 * scaleby, fullscreenimg.pos.y, img.wh * scaleby, img.h2 * scaleby);
        }
    };

    var NVVNW = [];


    var gauges;
    var BACKGROUND_SETTBOX;
    var BACKGROUND_CHESTBOX;
    var BACKGROUND_CRAFTBOX;
    var BACKGROUND_BIGMAP;
    var minimap;
    var leaderboard;
    var teambox;
    var teammemberbox;
    var fullscreenimg;
    var craftbutton;
    var settingsimg;
    var minimapbutt;
    var teambutt;
    var leaderboardbutt;
    var leaderboardbutt2;
    var chat;
    var mnnNv;
    var NWmmW;        

    function init() {
        VWWvn = GUI.renderText("Copied to clipboard", "'Viga', sans-serif", "#FFFFFF", 40, 350, "#000000", 18, 18, window.undefined, window.undefined, 0.2);
        chatinput = window.document.getElementById("chatInput");
        var size = 68;
        var len = ENTITIES[__ENTITIE_PLAYER__].inventorySize + 8;
        for (i = 0; i < len; i++) inventory.push(GUI.createButton(size, size, null, inventoryEmpty2));
        for (i = 0; i < 4; i++) chest.push(GUI.createButton(size, size, null, inventoryEmpty2));
        size = 49;
        for (i = 0; i < 35; i++) craft.push(GUI.createButton(size, size, null, inventoryEmpty2));
        size = 40;
        for (i = 0; i < 5; i++) recipe.push(GUI.createButton(size, size, null, inventoryEmpty2));
        for (i = 0; i < 4; i++) queue.push(GUI.createButton(size, size, null, inventoryEmpty2));
        for (i = 0; i < 3; i++) tools.push(GUI.createButton(size, size, null, inventoryEmpty2));
        for (i = 0; i < 9; i++) kick.push(GUI.createButton(29, 27, null, removebuttout));
        for (i = 0; i < 18; i++) join.push(GUI.createButton(44, 33, null, joinbuttout));

        //AUTOLOOT \/\/
        size = 30;
        for (i = 0; i < 171; i++) autoloot.push(GUI.createButton(size, size, null, inventoryEmpty2));
        Game.autoloot           = autoloot;
        //AUTOLOOT /\/\

        Game.BUTTON_CLOSE_BOX   = _CloseBox;
        Game.openBox            = _OpenBox;
        Game.inventory          = inventory;
        Game.craft              = craft;
        Game.recipe             = recipe;
        Game.preview            = preview;
        Game.queue              = queue;
        Game.tools              = tools;
        Game.chest              = chest;
        Game.kick               = kick;
        Game.join               = join;
        Game.getSkillBoxState   = getSkillBoxState;
        Game.getBoxState        = getBoxState;
        Game.teamName           = "";
        Game.acceptMember       = BUTTON_JOIN;
        Game.refuseMember       = BUTTON_DELETE2;
        Game.inventoryItemNumber = inventoryItemNumber;
        Game.inventoryAmmoNumber = inventoryAmmoNumber;
        Game.xInteract          = 0;
        Game.yInteract          = 0;
        Game.widthInteract      = 0;
        Game.heightInteract     = 0;
        Game.xInteract2         = 0;
        Game.yInteract2         = 0;

        skillList[SKILLS.__BUILDING__]          = GUI.createButton(42, 42, ["img/building-button-out.png", "img/building-button-in.png", "img/building-button-click.png"]);
        skillList[SKILLS.__SKILL__]             = GUI.createButton(42, 42, ["img/skill-button-out.png", "img/skill-button-in.png", "img/skill-button-click.png"]);
        skillList[SKILLS.__CLOTHE__]            = GUI.createButton(42, 42, ["img/clothe-button-out.png", "img/clothe-button-in.png", "img/clothe-button-click.png"]);
        skillList[SKILLS.__PLANT__]             = GUI.createButton(42, 42, ["img/plant-button-out.png", "img/plant-button-in.png", "img/plant-button-click.png"]);
        skillList[SKILLS.__DRUG__]              = GUI.createButton(42, 42, ["img/medecine-button-out.png", "img/medecine-button-in.png", "img/medecine-button-click.png"]);
        skillList[SKILLS.__MINERAL__]           = GUI.createButton(42, 42, ["img/resources-button-out.png", "img/resources-button-in.png", "img/resources-button-click.png"]);
        skillList[SKILLS.__SURVIVAL__]          = GUI.createButton(42, 42, ["img/survival-button-out.png", "img/survival-button-in.png", "img/survival-button-click.png"]);
        skillList[SKILLS.__TOOL__]              = GUI.createButton(42, 42, ["img/tool-button-out.png", "img/tool-button-in.png", "img/tool-button-click.png"]);
        skillList[SKILLS.__WEAPON__]            = GUI.createButton(42, 42, ["img/weapon-button-out.png", "img/weapon-button-in.png", "img/weapon-button-click.png"]);
        skillList[SKILLS.__LOGIC__]             = GUI.createButton(42, 42, ["img/cable-button-out.png", "img/cable-button-in.png", "img/cable-button-click.png"]);

        craftList[AREAS.__PLAYER__]             = GUI.createButton(42, 42, ["img/own-button-out.png", "img/own-button-in.png", "img/own-button-click.png"]);
        craftList[AREAS.__FIRE__]               = GUI.createButton(42, 42, ["img/fire-button-out.png", "img/fire-button-in.png", "img/fire-button-click.png"]);
        craftList[AREAS.__WORKBENCH__]          = GUI.createButton(42, 42, ["img/workbench1-button-out.png", "img/workbench1-button-in.png", "img/workbench1-button-click.png"]);
        craftList[AREAS.__BBQ__]                = GUI.createButton(42, 42, ["img/bbq-button-out.png", "img/bbq-button-in.png", "img/bbq-button-click.png"]);
        craftList[AREAS.__COMPOST__]            = GUI.createButton(42, 42, ["img/composter-button-out.png", "img/composter-button-in.png", "img/composter-button-click.png"]);
        craftList[AREAS.__WEAVING__]            = GUI.createButton(42, 42, ["img/weaving-machine-button-out.png", "img/weaving-machine-button-in.png", "img/weaving-machine-button-click.png"]);
        craftList[AREAS.__WELDING_MACHINE__]    = GUI.createButton(42, 42, ["img/welding-machine-button-out.png", "img/welding-machine-button-in.png", "img/welding-machine-button-click.png"]);
        craftList[AREAS.__WORKBENCH2__]         = GUI.createButton(42, 42, ["img/workbench2-button-out.png", "img/workbench2-button-in.png", "img/workbench2-button-click.png"]);
        craftList[AREAS.__SMELTER__]            = GUI.createButton(42, 42, ["img/smelter-button-out.png", "img/smelter-button-in.png", "img/smelter-button-click.png"]);
        craftList[AREAS.__TESLA__]              = GUI.createButton(42, 42, ["img/workbench3-button-out.png", "img/workbench3-button-in.png", "img/workbench3-button-click.png"]);
        craftList[AREAS.__AGITATOR__]           = GUI.createButton(42, 42, ["img/agitator-button-out.png", "img/agitator-button-in.png", "img/agitator-button-click.png"]);
        craftList[AREAS.__EXTRACTOR__]          = GUI.createButton(42, 42, ["img/extractor-button-out.png", "img/extractor-button-in.png", "img/extractor-button-click.png"]);
        craftList[AREAS.__FEEDER__]             = GUI.createButton(42, 42, ["img/feeder-button-out.png", "img/feeder-button-in.png", "img/feeder-button-click.png"]);

        gauges = GUI.createBackground(255, 174, "img/profile-player2.png");
        BACKGROUND_SETTBOX      = GUI.createBackground(269, 267, "img/settings-box.png");
        BACKGROUND_CHESTBOX     = GUI.createBackground(162, 165, "img/chest-box4.png");
        BACKGROUND_CRAFTBOX     = GUI.createBackground(595, 405, "img/craftbox2.png");
        BACKGROUND_BIGMAP       = GUI.createBackground(412, 412, "img/borderBigMinimap2.png");
        minimap = GUI.createBackground(128, 128, "img/minimap.png");
        leaderboard = GUI.createBackground(233, 246, "img/leaderboard.png");
        teambox = GUI.createBackground(516, 275, "img/jointeam-box.png");
        teammemberbox = GUI.createBackground(513, 150, "img/memberteam-box.png");
        fullscreenimg = GUI.createButton(40, 40, ["img/full-screen-out.png", "img/full-screen-in.png", "img/full-screen-click.png"]);
        craftbutton = GUI.createButton(64, 63, ["img/craftbox-button-out.png", "img/craftbox-button-in.png", "img/craftbox-button-click.png"]);
        settingsimg = GUI.createButton(40, 40, ["img/settings-out.png", "img/settings-in.png", "img/settings-click.png"]);
        minimapbutt = GUI.createButton(40, 40, ["img/minimap-button-out.png", "img/minimap-button-in.png", "img/minimap-button-click.png"]);
        teambutt = GUI.createButton(40, 40, ["img/team-button-out.png", "img/team-button-in.png", "img/team-button-click.png"]);
        leaderboardbutt = GUI.createButton(34, 33, ["img/close-leaderboard-out.png", "img/close-leaderboard-in.png", "img/close-leaderboard-click.png"]);
        leaderboardbutt2 = GUI.createButton(34, 33, ["img/open-leaderboard-out.png", "img/open-leaderboard-in.png", "img/open-leaderboard-click.png"]);
        chat = window.document.getElementById("chat");
        mnnNv = chat.style;
        NWmmW = {
            x: 0,
            y: 0
        };
    };
    var transitionSpeed;
    var mouseX = new Mouse.LocalMouseEvent;
    var keyboard = new Keyboard.LocalKeyboardEvent;
    var transitionDuration = 2000;
    var transitionState = 0;
    var transitionFunction = MathUtils.Ease.inQuad;
    var reverseTransitionDuration = 1000;
    var reverseTransitionState = 0;
    var reverseTransitionFunction = MathUtils.Ease.outQuad;
    var reverseTransition = 0;
    var transitionDuration = 0;
    var isWaiting = window.undefined;

    function run() {
        Client.onError = onError;
        Client.onOpen = onOpen;
        if (localStorage2.getItem("showLeaderboard") === "0") {
            leaderboardbutt.hide();
            leaderboardbutt2.show();
        } else {
            leaderboardbutt2.hide();
            leaderboardbutt.show();
        }
        window.document.getElementById("bod").style.backgroundColor = "#46664D";
        nmMMm = 0;
        Home.ads++;
        Game.teamName = "";
        Game.teamNameValid = 0;
        AudioManager.startGame();
        if (World.gameMode === World.__BR__) {
            teambutt.hide();
            craftbutton.show();
        } else if (World.PLAYER.ghoul > 0) {
            window.console.log("HERE");
            teambutt.hide();
            craftbutton.hide();
        } else {
            teambutt.show();
            craftbutton.show();
        }
        CanvasUtils.setRenderer(Game);
        transitionDuration = reverseTransitionDuration;
        reverseTransition = reverseTransitionDuration;
        isWaiting = reverseTransitionFunction;
        reverseTransitionState = 1;
        update();
    };

    function quit(callback) {
        chatvisible = 0;
        _CloseBox();
        AudioManager.quitGame();
        transitionSpeed = callback;
        VVwMW();
        transitionDuration = transitionDuration;
        reverseTransition = transitionDuration;
        isWaiting = transitionFunction;
        transitionState = 1;
    };

    function update() {
        var transitionX = 0;
        var transitionY = 0;
        if (transitionDuration > 0) {
            transitionY = canh;
            var transition = isWaiting(1 - (transitionDuration / reverseTransition));
            if (transition === 1) transitionDuration = 0;
            if (reverseTransitionState === 1) transition = 1 - window.Math.abs(transition);
            transitionX *= transition;
            transitionY *= transition;
        }
        gauges.pos.x = window.Math.floor(5 * scaleby) + transitionX;
        gauges.pos.y = ((canh - window.Math.floor(174 * scaleby)) + window.Math.floor(-7 * scaleby)) + transitionY;
        BACKGROUND_SETTBOX.pos.x = (canw2 - window.Math.floor(134 * scaleby)) + transitionX;
        BACKGROUND_SETTBOX.pos.y = window.Math.max(0, canh2 - window.Math.floor(133 * scaleby)) + transitionY;
        BACKGROUND_CHESTBOX.pos.x = (canw2 - window.Math.floor(81 * scaleby)) + transitionX;
        BACKGROUND_CHESTBOX.pos.y = window.Math.max(0, canh2 - window.Math.floor(82 * scaleby)) + transitionY;
        BACKGROUND_CRAFTBOX.pos.x = (canw2 - window.Math.floor(297 * scaleby)) + transitionX;
        BACKGROUND_CRAFTBOX.pos.y = window.Math.max(0, canh2 - window.Math.floor(202 * scaleby)) + transitionY;
        BACKGROUND_BIGMAP.pos.x = (canw2 - window.Math.floor(206 * scaleby)) + transitionX;
        BACKGROUND_BIGMAP.pos.y = window.Math.max(0, canh2 - window.Math.floor(206 * scaleby)) + transitionY;
        minimap.pos.x = window.Math.floor(5 * scaleby) - transitionX;
        minimap.pos.y = window.Math.floor(5 * scaleby) - transitionY;
        leaderboard.pos.x = ((canw - window.Math.floor(233 * scaleby)) + window.Math.floor(-6 * scaleby)) - transitionX;
        leaderboard.pos.y = window.Math.floor(5 * scaleby) - transitionY;
        teambox.pos.x = (canw2 - window.Math.floor(258 * scaleby)) - transitionX;
        teambox.pos.y = window.Math.max(0, canh2 - window.Math.floor(137 * scaleby)) - transitionY;
        teammemberbox.pos.x = (canw2 - window.Math.floor(256 * scaleby)) - transitionX;
        teammemberbox.pos.y = window.Math.max(0, canh2 - window.Math.floor(75 * scaleby)) - transitionY;
        fullscreenimg.pos.x = minimap.pos.x + window.Math.floor(126 * scaleby);
        fullscreenimg.pos.y = minimap.pos.y;
        craftbutton.pos.x = fullscreenimg.pos.x + window.Math.floor(50 * scaleby);
        craftbutton.pos.y = fullscreenimg.pos.y;
        settingsimg.pos.x = fullscreenimg.pos.x;
        settingsimg.pos.y = fullscreenimg.pos.y + window.Math.floor(44.5 * scaleby);
        minimapbutt.pos.x = settingsimg.pos.x;
        minimapbutt.pos.y = settingsimg.pos.y + window.Math.floor(44.5 * scaleby);
        teambutt.pos.x = minimap.pos.x;
        teambutt.pos.y = minimap.pos.y + window.Math.floor(127 * scaleby);
        leaderboardbutt.pos.x = ((canw - window.Math.floor(34 * scaleby)) + window.Math.floor(-7 * scaleby)) - transitionX;
        leaderboardbutt.pos.y = window.Math.floor(5 * scaleby) - transitionY;
        leaderboardbutt2.pos.x = leaderboardbutt.pos.x;
        leaderboardbutt2.pos.y = leaderboardbutt.pos.y;
        NWmmW.x = (canw2 - window.Math.floor(150 * scaleby)) + transitionX;
        mnnNv.left = NWmmW.x + "px";
        NWmmW.y = (window.Math.max(0, canh2 - 12) + window.Math.floor(150 * scaleby)) + transitionY;
        mnnNv.top = NWmmW.y + "px";
        var wvnVv = window.document.getElementById("chatInput").style;
        var width = window.Math.floor(250 * scaleby);
        var height = window.Math.floor(20 * scaleby);
        var MMM = window.Math.floor(canw2 - (width / 2)) + "px";
        var _top = window.Math.floor(((canh2 - (height / 2)) + (scaleby * 85)) + transitionY) + "px";
        height = height + "px";
        width = width + "px";
        mnnNv.width = width;
        mnnNv.height = height;
        mnnNv.left = MMM;
        mnnNv.top = _top;
        wvnVv.width = width;
        wvnVv.height = height;
        wvnVv.fontSize = window.Math.floor(14 * scaleby) + "px";
    };

    function draw() {
        if (transitionManager() === 0) return;
        vWMVN();
        ctx.clearRect(0, 0, canw, canh);
        World.updatePosition();
        World.updateGauges();
        Render.world();
        Render.interaction();
        Render.gauges(gauges.pos.x, gauges.pos.y);
        Render.minimap(minimap.pos.x, minimap.pos.y);
        Render.inventory(inventoryItemNumber, inventoryAmmoNumber, MmV, BUTTON_BAG);
        gauges.draw();
        minimap.draw();
        fullscreenimg.draw();
        craftbutton.draw();
        settingsimg.draw();
        minimapbutt.draw();
        teambutt.draw();
        markPosition();
        Render.gaugesAfter(gauges.pos.x, gauges.pos.y);
        if (World.gameMode !== World.__BR__) {
            if (leaderboardbutt.pos.disable === 0) {
                leaderboard.draw();
                Render.leaderboard(leaderboard.pos.x, leaderboard.pos.y);
                leaderboardbutt.draw();
            } else leaderboardbutt2.draw();
        }

        if (NmW === 1) {

            if      (isMapOpen          === 1)      Render.bigminimap(BACKGROUND_BIGMAP, BUTTON_CLOSE_BOX);
            else if (isSettingsOpen     === 1)      Render.config(BACKGROUND_SETTBOX, wWNnw, nvwMN, MNVVn, VmvmN, WMVVn, wvNNV, WVnnn, NmVWV, vVMWm, BUTTON_CLOSE_BOX, wVwnm, VnWMV, wwMwv);
            else if (isCraftOpen        === 1)      Render.craft(BACKGROUND_CRAFTBOX, BUTTON_CLOSE_BOX, skillList, BUTTON_CRAFT, BUTTON_CANCEL, BUTTON_UNLOCK, craftList, preview, inventoryItemNumber, inventoryAmmoNumber, BUTTON_FUEL, BUTTON_FUEL1, BUTTON_CELLS, NWmNn);
            else if (isChestOpen        === 1)      Render.chest(BACKGROUND_CHESTBOX, BUTTON_CLOSE_BOX, inventoryItemNumber, inventoryAmmoNumber);
            else if (isTeamOpen         === 1)      Render.team(BUTTON_CLOSE_BOX, teambox, teammemberbox, BUTTON_LEAVE, BUTTON_ADDTEAM, BUTTON_LOCK_TEAM, BUTTON_UNLOCK_TEAM, BUTTON_DELETE);

        } else if (isTouchScreen    === 1) {
            if ((((Keyboard.isLeft() + Keyboard.isRight()) + Keyboard.isTop()) + Keyboard.isBottom()) >= 1) {
                ctx.globalAlpha = 0.3;
                var offsetX = canw2ns - (canw4ns * 1.5);
                var offsetY = canh2ns + (canw4ns / 4);
                CanvasUtils.circle(ctx, offsetX, offsetY, 60);
                CanvasUtils.drawPath(ctx, "#000000");
                CanvasUtils.circle(ctx, offsetX + ((window.Math.cos(MWVNw) * NVNwm) * scaleby), offsetY + ((window.Math.sin(MWVNw) * NVNwm) * scaleby), 30);
                CanvasUtils.drawPath(ctx, "#FFFFFF");
                ctx.globalAlpha = 1;
            }
            if (vmWNW === 1) {
                ctx.globalAlpha = 0.3;
                var offsetX = canw2ns + (canw4ns * 1.5);
                var offsetY = canh2ns + (canw4ns / 4);
                CanvasUtils.circle(ctx, offsetX, offsetY, 60);
                CanvasUtils.drawPath(ctx, "#000000");
                CanvasUtils.circle(ctx, offsetX + ((window.Math.cos(Mouse.angle) * 25) * scaleby), offsetY + ((window.Math.sin(Mouse.angle) * 25) * scaleby), 30);
                CanvasUtils.drawPath(ctx, "#FFFFFF");
                ctx.globalAlpha = 1;
            }
        }
        
        AudioManager.scheduler();
    };


    function transitionManager() {
        if (transitionState === 1) {
            update();
            if (transitionDuration < 0) {
                transitionState = 0;
                fullscreenimg.setState(GUI.__BUTTON_OUT__);
                craftbutton.setState(GUI.__BUTTON_OUT__);
                settingsimg.setState(GUI.__BUTTON_OUT__);
                minimapbutt.setState(GUI.__BUTTON_OUT__);
                teambutt.setState(GUI.__BUTTON_OUT__);
                leaderboardbutt.setState(GUI.__BUTTON_OUT__);
                leaderboardbutt2.setState(GUI.__BUTTON_OUT__);
                mnnNv.display = "none";
                transitionSpeed.run();
                return 0;
            }
            transitionDuration -= delta;
        } else if (reverseTransitionState === 1) {
            update();
            if (transitionDuration < 0) {
                reverseTransitionState = 0;
                World.PLAYER.timePlayed = window.Date.now();
                MmNNN();
            }
            transitionDuration -= delta;
        }
        return 1;
    };

    function mouseDown(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_DOWN__);
        var vnm = 0;
        if (fullscreenimg.trigger() === 1) {
            vnm = 1;
        }
        if (craftbutton.trigger() === 1) {
            vnm = 1;
        }
        if (settingsimg.trigger() === 1) {
            vnm = 1;
        }
        if (minimapbutt.trigger() === 1) {
            vnm = 1;
        }
        if (teambutt.trigger() === 1) {
            vnm = 1;
        }
        if (leaderboardbutt.trigger() === 1) {
            vnm = 1;
        }
        if (leaderboardbutt2.trigger() === 1) {
            vnm = 1;
        }
        if (World.PLAYER.teamJoin !== 0) {
            if ((BUTTON_JOIN.trigger() === 1) || (BUTTON_DELETE2.trigger() === 1)) vnm = 1;
        }
        if (NmW === 1) {
            BUTTON_CLOSE_BOX.trigger();
            if (isSettingsOpen === 1) {
                VmvmN.trigger();
                WMVVn.trigger();
                wWNnw.trigger();
                nvwMN.trigger();
                MNVVn.trigger();
                wvNNV.trigger();
                WVnnn.trigger();
                NmVWV.trigger();
                vVMWm.trigger();
                VnWMV.trigger();
                wVwnm.trigger();
                wwMwv.trigger();
            } else if (isCraftOpen === 1) {
                if (World.PLAYER.craftCategory === -1) {
                    if ((World.PLAYER.crafting === 0) || (World.PLAYER.isInBuilding === 1)) BUTTON_CRAFT.trigger();
                    else BUTTON_CANCEL.trigger();
                    if ((((World.PLAYER.craftArea === AREAS.__FIRE__) || (World.PLAYER.craftArea === AREAS.__BBQ__)) || (World.PLAYER.craftArea === AREAS.__COMPOST__)) && (World.PLAYER.building.fuel !== 255)) BUTTON_FUEL.trigger();
                    else if ((((World.PLAYER.craftArea === AREAS.__SMELTER__) || (World.PLAYER.craftArea === AREAS.__EXTRACTOR__)) || (World.PLAYER.craftArea === AREAS.__AGITATOR__)) && (World.PLAYER.building.fuel !== 255)) BUTTON_FUEL1.trigger();
                    else if (World.PLAYER.craftArea === AREAS.__FEEDER__ && World.PLAYER.building.fuel !== 255) BUTTON_CELLS.trigger();
                } else BUTTON_UNLOCK.trigger();
                for (var i = 0; i < skillList.length; i++) skillList[i].trigger();
                for (i = 0; i < craftList.length; i++) {
                    if ((World.PLAYER.buildingArea === i) || (i === 0)) craftList[i].trigger();
                }
                var len = World.PLAYER.craftLen;
                for (var i = 0; i < len; i++) craft[i].trigger();
                len = World.PLAYER.recipeLen;
                for (i = 0; i < len; i++) recipe[i].trigger();
                if (World.PLAYER.isInBuilding === 1) {
                    for (i = 0; i < World.PLAYER.building.len; i++) queue[i].trigger();
                }
                len = World.PLAYER.toolsLen;
                for (i = 0; i < len; i++) tools[i].trigger();
                preview.trigger();
            }
        }

        var invtr = World.PLAYER.inventory;
        var len = invtr.length;
        if ((len > 10) && (BUTTON_BAG.trigger() === 1)) vnm = 1;
        for (var i = 0; i < len; i++) {
            if (inventory[i].trigger() === 1) {
                vnm = 1;
                if (invtr[i][0] !== 0) {
                    var drag = World.PLAYER.drag;
                    if (drag.begin === 0) {
                        drag.begin = 1;
                        drag.x = Mouse.x;
                        drag.y = Mouse.y;
                        drag.id = i;
                    }
                }
            } else if (isChestOpen === 1) {
                var wVMVN = World.PLAYER.chest;
                for (var k = 0; k < 4; k++) {
                    if (wVMVN[k][0] !== 0) chest[k].trigger();
                }
            } else if (isTeamOpen === 1) {
                if (World.PLAYER.team === -1) {
                    BUTTON_ADDTEAM.trigger();
                    var j = 0;
                    for (var i = 0; i < join.length; i++) {
                        if (World.teams[i].leader !== 0) {
                            join[j].trigger();
                            j++;
                        }
                    }
                } else if (World.PLAYER.teamLeader === 1) {
                    BUTTON_LOCK_TEAM.trigger();
                    BUTTON_UNLOCK_TEAM.trigger();
                    BUTTON_DELETE.trigger();
                    var j = 0;
                    var team = World.teams[World.PLAYER.team];
                    for (var i = 0; i < World.players.length; i++) {
                        if (i === World.PLAYER.id) {
                            j++;
                            continue;
                        }
                        var PLAYER = World.players[i];
                        if ((PLAYER.team === team.id) && (PLAYER.teamUid === team.uid)) {
                            kick[j].trigger();
                            j++;
                        }
                    }
                } else BUTTON_LEAVE.trigger();
            }
        }
        if ((vnm === 0) && (NmW === 0)) {
            nmMMm = 1;
            if (World.PLAYER.click === -1) World.PLAYER.click = 0;
        } else {
            if (World.PLAYER.click === 0) World.PLAYER.click = -1;
        }
    };

    function mouseUp(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_UP__);
        var vnm = 0;
        if (fullscreenimg.trigger() === 1) {
            vnm = 1;
            if (MNnnv === 0) {
                MNnnv = 1;
                CanvasUtils.enableFullscreen();
                if (World.day === 0) canvas.style.backgroundColor = "#3D5942";
                else canvas.style.backgroundColor = "#0B2129";
                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
            } else {
                MNnnv = 0;
                CanvasUtils.disableFullscreen();
                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
            }
        }
        if (craftbutton.trigger() === 1) {
            vnm = 1;
            if (World.PLAYER.ghoul === 0) {
                if (isCraftOpen === 0) {
                    _CloseBox();
                    NmW = 1;
                    isCraftOpen = 1;
                    World.buildCraftList(AREAS.__PLAYER__);
                    AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                    return;
                } else {
                    _CloseBox();
                    AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                    return;
                }
            }
        }
        if (settingsimg.trigger() === 1) {
            vnm = 1;
            if (isSettingsOpen === 0) {
                _CloseBox();
                NmW = 1;
                isSettingsOpen = 1;
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                return;
            } else {
                _CloseBox();
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                return;
            }
        }
        if (minimapbutt.trigger() === 1) {
            vnm = 1;
            if (isMapOpen === 0) {
                _CloseBox();
                NmW = 1;
                isMapOpen = 1;
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                return;
            } else {
                _CloseBox();
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                return;
            }
        }
        if (teambutt.trigger() === 1) {
            vnm = 1;
            if (isTeamOpen === 0) {
                _CloseBox();
                NmW = 1;
                isTeamOpen = 1;
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                return;
            } else {
                _CloseBox();
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                return;
            }
        }        
        if (leaderboardbutt.trigger() === 1) {
            vnm = 1;
            leaderboardbutt.hide();
            leaderboardbutt2.show();
            localStorage2.setItem("showLeaderboard", "0");
            AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
            return;
        }
        if (leaderboardbutt2.trigger() === 1) {
            vnm = 1;
            leaderboardbutt2.hide();
            leaderboardbutt.show();
            localStorage2.setItem("showLeaderboard", "1");
            AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
            return;
        }
        var drag = World.PLAYER.drag;
        if (World.PLAYER.teamJoin !== 0) {
            if (BUTTON_JOIN.trigger() === 1) {
                Client.sendPacket(window.JSON.stringify([31, World.PLAYER.teamJoin]));
                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                World.nextInvitation();
                return;
            }
            if (BUTTON_DELETE2.trigger() === 1) {
                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                World.nextInvitation();
                return;
            }
        }
        if (NmW === 1) {
            if (BUTTON_CLOSE_BOX.trigger() === 1) {
                _CloseBox();
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                return;
            }
            if (isSettingsOpen === 1) {
                WMVVn.setState(GUI.__BUTTON_OUT__);
                VmvmN.setState(GUI.__BUTTON_OUT__);
                wWNnw.setState(GUI.__BUTTON_OUT__);
                nvwMN.setState(GUI.__BUTTON_OUT__);
                MNVVn.setState(GUI.__BUTTON_OUT__);
                wvNNV.setState(GUI.__BUTTON_OUT__);
                WVnnn.setState(GUI.__BUTTON_OUT__);
                NmVWV.setState(GUI.__BUTTON_OUT__);
                vVMWm.setState(GUI.__BUTTON_OUT__);
                wVwnm.setState(GUI.__BUTTON_OUT__);
                VnWMV.setState(GUI.__BUTTON_OUT__);
                wwMwv.setState(GUI.__BUTTON_OUT__);
                if (VmvmN.trigger() === 1) {
                    Keyboard.setAzerty();
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (WMVVn.trigger() === 1) {
                    Keyboard.setQwert();
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (wWNnw.trigger() === 1) {
                    CanvasUtils.setResolution(1);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (nvwMN.trigger() === 1) {
                    CanvasUtils.setResolution(2);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (MNVVn.trigger() === 1) {
                    CanvasUtils.setResolution(3);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (wvNNV.trigger() === 1) {
                    AudioUtils.setAudio(1);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (WVnnn.trigger() === 1) {
                    AudioUtils.setAudio(0);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (NmVWV.trigger() === 1) {
                    AudioUtils.setFx(1);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (vVMWm.trigger() === 1) {
                    AudioUtils.setFx(0);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (VnWMV.trigger() === 1) {
                    Render.setParticles(1);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (wVwnm.trigger() === 1) {
                    Render.setParticles(2);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (wwMwv.trigger() === 1) {
                    Render.setParticles(0);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                }
                var MMMnn = BACKGROUND_SETTBOX.pos;
                if ((((Mouse.sx < MMMnn.x) || (Mouse.sx > (MMMnn.x + (234 * scaleby)))) || (Mouse.sy < MMMnn.y)) || (Mouse.sy > (MMMnn.y + (232 * scaleby)))) {
                    _CloseBox();
                    AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                    return;
                }
            } else if (isMapOpen === 1) {
                var mNMnn = BACKGROUND_BIGMAP.pos;
                if ((((Mouse.sx < mNMnn.x) || (Mouse.sx > (mNMnn.x + (412 * scaleby)))) || (Mouse.sy < mNMnn.y)) || (Mouse.sy > (mNMnn.y + (412 * scaleby)))) {
                    _CloseBox();
                    AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                    return;
                }
            } else if (isCraftOpen === 1) {
                if (World.PLAYER.craftCategory === -1) {
                    if ((World.PLAYER.crafting === 0) || (World.PLAYER.isInBuilding === 1)) {
                        if ((World.PLAYER.craftAvailable[World.PLAYER.craftIdSelected] === 1) && (BUTTON_CRAFT.trigger() === 1)) {
                            if (World.PLAYER.isInBuilding === 1) {
                                if ((World.PLAYER.building.fuel !== 0) && (World.PLAYER.building.len < 4)) {
                                    Client.sendPacket(window.JSON.stringify([18, World.PLAYER.craftSelected]));
                                    AudioUtils.playFx(AudioUtils._fx.craft, 0.8, 0);
                                }
                            } else {
                                Client.sendPacket(window.JSON.stringify([22, World.PLAYER.craftSelected]));
                                AudioUtils.playFx(AudioUtils._fx.craft, 0.8, 0);
                            }
                            BUTTON_CRAFT.setState(GUI.__BUTTON_OUT__);
                        }
                    } else if (BUTTON_CANCEL.trigger() === 1) {
                        Client.sendPacket(window.JSON.stringify([23]));
                        World.PLAYER.crafting = 0;
                        BUTTON_CANCEL.setState(GUI.__BUTTON_OUT__);
                        AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    }
                } else {
                    if (BUTTON_UNLOCK.trigger() === 1) {
                        if (World.PLAYER.craftAvailable[World.PLAYER.craftIdSelected] === 1) {
                            Client.sendPacket(window.JSON.stringify([21, World.PLAYER.craftSelected]));
                            AudioUtils.playFx(AudioUtils._fx.skill, 1, 0);
                        }
                    }
                }
                if (skillList[SKILLS.__SKILL__].trigger() === 1) {
                    World.buildSkillList(SKILLS.__SKILL__);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (skillList[SKILLS.__BUILDING__].trigger() === 1) {
                    World.buildSkillList(SKILLS.__BUILDING__);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (skillList[SKILLS.__CLOTHE__].trigger() === 1) {
                    World.buildSkillList(SKILLS.__CLOTHE__);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (skillList[SKILLS.__PLANT__].trigger() === 1) {
                    World.buildSkillList(SKILLS.__PLANT__);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (skillList[SKILLS.__DRUG__].trigger() === 1) {
                    World.buildSkillList(SKILLS.__DRUG__);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (skillList[SKILLS.__MINERAL__].trigger() === 1) {
                    World.buildSkillList(SKILLS.__MINERAL__);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (skillList[SKILLS.__LOGIC__].trigger() === 1) {
                    World.buildSkillList(SKILLS.__LOGIC__);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (skillList[SKILLS.__SURVIVAL__].trigger() === 1) {
                    World.buildSkillList(SKILLS.__SURVIVAL__);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (skillList[SKILLS.__TOOL__].trigger() === 1) {
                    World.buildSkillList(SKILLS.__TOOL__);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (skillList[SKILLS.__WEAPON__].trigger() === 1) {
                    World.buildSkillList(SKILLS.__WEAPON__);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (craftList[AREAS.__PLAYER__].trigger() === 1) {
                    World.buildCraftList(AREAS.__PLAYER__);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (((craftList[AREAS.__FIRE__].trigger() === 1) || (craftList[AREAS.__BBQ__].trigger() === 1)) || (craftList[AREAS.__COMPOST__].trigger() === 1)) {
                    Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid]));
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (craftList[AREAS.__WORKBENCH__].trigger() === 1) {
                    Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid]));
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (craftList[AREAS.__WELDING_MACHINE__].trigger() === 1) {
                    Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid]));
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (craftList[AREAS.__WEAVING__].trigger() === 1) {
                    Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid]));
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (craftList[AREAS.__WORKBENCH2__].trigger() === 1) {
                    Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid]));
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (craftList[AREAS.__TESLA__].trigger() === 1 || craftList[AREAS.__FEEDER__].trigger() === 1) {
                    Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid]));
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else if (((craftList[AREAS.__SMELTER__].trigger() === 1) || (craftList[AREAS.__EXTRACTOR__].trigger() === 1)) || (craftList[AREAS.__AGITATOR__].trigger() === 1)) {
                    Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid]));
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                } else {
                    var len = World.PLAYER.craftLen;
                    for (var i = 0; i < len; i++) {
                        if (craft[i].trigger() === 1) {
                            World.PLAYER.craftIdSelected = i;
                            World.selectRecipe(World.PLAYER.craftList[i]);
                            AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                            return;
                        }
                    }
                    len = World.PLAYER.recipeLen;
                    for (i = 0; i < len; i++) {
                        if (recipe[i].trigger() === 1) return;
                    }
                    if (World.PLAYER.isInBuilding === 1) {
                        for (i = 0; i < World.PLAYER.building.len; i++) {
                            if (queue[i].trigger() === 1) {
                                Client.sendPacket(window.JSON.stringify([19, i]));
                                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                                return;
                            }
                        }
                        if (((World.PLAYER.craftArea === AREAS.__FIRE__) || (World.PLAYER.craftArea === AREAS.__BBQ__)) || (World.PLAYER.craftArea === AREAS.__COMPOST__)) {
                            if ((World.PLAYER.building.fuel !== 255) && (BUTTON_FUEL.trigger() === 1)) {
                                Client.sendPacket(window.JSON.stringify([24]));
                                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                                return;
                            }
                        } else if (((World.PLAYER.craftArea === AREAS.__SMELTER__) || (World.PLAYER.craftArea === AREAS.__EXTRACTOR__)) || (World.PLAYER.craftArea === AREAS.__AGITATOR__)) {
                            if ((World.PLAYER.building.fuel !== 255) && (BUTTON_FUEL1.trigger() === 1)) {
                                Client.sendPacket(window.JSON.stringify([24]));
                                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                                return;
                            }
                        } else if (World.PLAYER.craftArea === AREAS.__TESLA__ || World.PLAYER.craftArea === AREAS.__FEEDER__) {
                            if ((World.PLAYER.building.fuel !== 255) && (BUTTON_CELLS.trigger() === 1)) {
                                Client.sendPacket(window.JSON.stringify([24]));
                                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                                return;
                            }
                        }
                    }
                    var nNMwN = BACKGROUND_CRAFTBOX.pos;
                    if (((drag.begin !== 1) && !event.ctrlKey) && ((((Mouse.sx < nNMwN.x) || (Mouse.sx > (nNMwN.x + (595 * scaleby)))) || (Mouse.sy < nNMwN.y)) || (Mouse.sy > (nNMwN.y + (325 * scaleby))))) {
                        _CloseBox();
                        AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                        return;
                    }
                }
            } else if (isChestOpen === 1) {
                var wVMVN = World.PLAYER.chest;
                for (var k = 0; k < 4; k++) {
                    if ((wVMVN[k][0] !== 0) && (chest[k].trigger() === 1)) {
                        Client.sendPacket(window.JSON.stringify([27, k]));
                        AudioUtils.playFx(AudioUtils._fx.drag, 1, 0);
                        return;
                    }
                }
            } else if (isTeamOpen === 1) {
                if (World.PLAYER.team === -1) {
                    if (((BUTTON_ADDTEAM.trigger() === 1) && (World.PLAYER.teamNameValid === 1)) && ((window.Date.now() - World.PLAYER.teamCreateDelay) > 30500)) {
                        Client.sendPacket(window.JSON.stringify([28, Game.teamName]));
                        AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                        World.PLAYER.teamCreateDelay = window.Date.now();
                    }
                    if ((window.Date.now() - World.PLAYER.teamDelay) > 10500) {
                        var j = 0;
                        for (var i = 0; i < join.length; i++) {
                            if (World.teams[i].leader !== 0) {
                                if (join[j].trigger() === 1) {
                                    Client.sendPacket(window.JSON.stringify([30, i]));
                                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                                    World.PLAYER.teamDelay = window.Date.now();
                                }
                                j++;
                            }
                        }
                    }
                } else if (World.PLAYER.teamLeader === 1) {
                    if ((BUTTON_LOCK_TEAM.trigger() === 1) && (World.PLAYER.teamLocked === 0)) {
                        Client.sendPacket(window.JSON.stringify([33]));
                        World.PLAYER.teamLocked = 1;
                        AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                        return;
                    }
                    if ((BUTTON_UNLOCK_TEAM.trigger() === 1) && (World.PLAYER.teamLocked === 1)) {
                        Client.sendPacket(window.JSON.stringify([34]));
                        World.PLAYER.teamLocked = 0;
                        AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                        return;
                    }
                    if (BUTTON_DELETE.trigger() === 1) {
                        Client.sendPacket(window.JSON.stringify([29]));
                        AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                        return;
                    }
                    var j = 0;
                    var team = World.teams[World.PLAYER.team];
                    for (var i = 0; i < World.players.length; i++) {
                        if (i === World.PLAYER.id) {
                            j++;
                            continue;
                        }
                        var PLAYER = World.players[i];
                        if ((PLAYER.team === team.id) && (PLAYER.teamUid === team.uid)) {
                            if (kick[j].trigger() === 1) {
                                Client.sendPacket(window.JSON.stringify([32, PLAYER.id]));
                                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                                return;
                            }
                            j++;
                        }
                    }
                } else {
                    if (BUTTON_LEAVE.trigger() === 1) {
                        Client.sendPacket(window.JSON.stringify([35, World.PLAYER.id]));
                        AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                        return;
                    }
                }
            }
        };
        var invtr = World.PLAYER.inventory;
        var len = invtr.length;
        var mnWNv = 0;
        if ((len > 10) && (BUTTON_BAG.trigger() === 1)) {
            BUTTON_BAG.open = (BUTTON_BAG.open + 1) % 2;
            if (BUTTON_BAG.open === 1) AudioUtils.playFx(AudioUtils._fx.zipperOn, 0.08, 0);
            else AudioUtils.playFx(AudioUtils._fx.zipperOff, 0.08, 0);
        }
        for (var i = 0; i < len; i++) {
            if ((i > 9) && (BUTTON_BAG.open === 0)) break;
            if (inventory[i].trigger() === 1) {
                mnWNv = 1;
                var IID = invtr[i][0];
                var amount = invtr[i][1];
                var itemId = invtr[i][2];
                var wvmvw = invtr[i][3];
                var type = INVENTORY[IID];
                if (drag.begin === 1) {
                    if (drag.id !== i) {
                        if (invtr[i][0] === invtr[drag.id][0]) {
                            if ((type.stack > invtr[i][1]) && (type.stack > invtr[drag.id][1])) {
                                Client.sendPacket(window.JSON.stringify([10, invtr[drag.id][0], invtr[drag.id][1], invtr[drag.id][2], invtr[i][1], invtr[i][2]]));
                                World.PLAYER.drag.begin = 0;
                                AudioUtils.playFx(AudioUtils._fx.drag, 1, 0);
                                return;
                            }
                        }
                        invtr[i][0] = invtr[drag.id][0];
                        invtr[i][1] = invtr[drag.id][1];
                        invtr[i][2] = invtr[drag.id][2];
                        invtr[i][3] = invtr[drag.id][3];
                        invtr[drag.id][0] = IID;
                        invtr[drag.id][1] = amount;
                        invtr[drag.id][2] = itemId;
                        invtr[drag.id][3] = wvmvw;
                        if (IID !== 0) Game.inventory[drag.id].setImages(INVENTORY[IID].itemButton.src, INVENTORY[IID].itemButton.img);
                        Game.inventory[i].setImages(INVENTORY[invtr[i][0]].itemButton.src, INVENTORY[invtr[i][0]].itemButton.img);
                        World.PLAYER.drag.begin = 0;
                        AudioUtils.playFx(AudioUtils._fx.drag, 1, 0);
                        return;
                    }
                    World.PLAYER.drag.begin = 0;
                }
                if (IID !== 0) {
                    if ((isChestOpen === 1) && (event.which !== 3)) {
                        Client.sendPacket(window.JSON.stringify([26, IID, amount, itemId, wvmvw]));
                        AudioUtils.playFx(AudioUtils._fx.drag, 1, 0);
                    } else if (event.which === 3) {
                        Client.sendPacket(window.JSON.stringify([9, IID, amount, itemId, wvmvw]));
                        AudioUtils.playFx(AudioUtils._fx.throwLoot, 1, 0);
                    } else {
                        if (event.ctrlKey) {
                            AudioUtils.playFx(AudioUtils._fx.drag, 0.6, 0);
                            Client.sendPacket(window.JSON.stringify([11, IID, amount, itemId]));
                        } else Client.sendPacket(window.JSON.stringify([8, IID, amount, itemId, wvmvw]));
                    }
                }
            }
        }
        if ((isChestOpen === 1) && (mnWNv === 0)) {
            var NnVVw = BACKGROUND_CHESTBOX.pos;
            if ((((Mouse.sx < NnVVw.x) || (Mouse.sx > (NnVVw.x + (161 * scaleby)))) || (Mouse.sy < NnVVw.y)) || (Mouse.sy > (NnVVw.y + (165 * scaleby)))) {
                _CloseBox();
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
            }
        }
        if (drag.begin === 1) {
            var i = drag.id;
            Client.sendPacket(window.JSON.stringify([9, invtr[i][0], invtr[i][1], invtr[i][2], invtr[i][3]]));
            AudioUtils.playFx(AudioUtils._fx.throwLoot, 1, 0);
        }
        drag.begin = 0;
    };

    function mouseMove(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_MOVE__);
        var vnm = 0;
        if (fullscreenimg.trigger() === 1) {
            vnm = 1;
        }
        if (craftbutton.trigger() === 1) {
            vnm = 1;
        }
        if (settingsimg.trigger() === 1) {
            vnm = 1;
        }
        if (minimapbutt.trigger() === 1) {
            vnm = 1;
        }
        if (teambutt.trigger() === 1) {
            vnm = 1;
        }
        if (leaderboardbutt.trigger() === 1) {
            vnm = 1;
        }
        if (leaderboardbutt2.trigger() === 1) {
            vnm = 1;
        }
        if (World.PLAYER.teamJoin !== 0) {
            BUTTON_JOIN.trigger();
            BUTTON_DELETE2.trigger();
        }
        if (NmW === 1) {
            BUTTON_CLOSE_BOX.trigger();
            if (isSettingsOpen === 1) {
                VmvmN.trigger();
                WMVVn.trigger();
                wWNnw.trigger();
                nvwMN.trigger();
                MNVVn.trigger();
                wvNNV.trigger();
                WVnnn.trigger();
                NmVWV.trigger();
                vVMWm.trigger();
                VnWMV.trigger();
                wVwnm.trigger();
                wwMwv.trigger();
            } else if (isCraftOpen === 1) {
                if (World.PLAYER.craftCategory === -1) {
                    if ((World.PLAYER.crafting === 0) || (World.PLAYER.isInBuilding === 1)) BUTTON_CRAFT.trigger();
                    else BUTTON_CANCEL.trigger();
                } else BUTTON_UNLOCK.trigger();
                for (var i = 0; i < skillList.length; i++) skillList[i].trigger();
                for (i = 0; i < craftList.length; i++) {
                    if ((World.PLAYER.buildingArea === i) || (i === 0)) craftList[i].trigger();
                }
                var len = World.PLAYER.craftLen;
                for (var i = 0; i < len; i++) craft[i].trigger();
                NWmNn = -1;
                len = World.PLAYER.recipeLen;
                for (i = 0; i < len; i++) {
                    if (recipe[i].trigger() === 1) NWmNn = i;
                }
                if (World.PLAYER.isInBuilding === 1) {
                    for (i = 0; i < World.PLAYER.building.len; i++) queue[i].trigger();
                    if ((((World.PLAYER.craftArea === AREAS.__FIRE__) || (World.PLAYER.craftArea === AREAS.__BBQ__)) || (World.PLAYER.craftArea === AREAS.__COMPOST__)) && (World.PLAYER.building.fuel !== 255)) BUTTON_FUEL.trigger();
                    else if ((((World.PLAYER.craftArea === AREAS.__SMELTER__) || (World.PLAYER.craftArea === AREAS.__EXTRACTOR__)) || (World.PLAYER.craftArea === AREAS.__AGITATOR__) || (World.PLAYER.craftArea === AREAS.__FEEDER__)) && (World.PLAYER.building.fuel !== 255)) BUTTON_FUEL1.trigger();
                    else if (World.PLAYER.craftArea === AREAS.__FEEDER__ && World.PLAYER.building.fuel !== 255) {
                        BUTTON_CELLS.trigger();
                      }
                }
                len = World.PLAYER.toolsLen;
                for (i = 0; i < len; i++) tools[i].trigger();
                preview.trigger();
            } else if (isChestOpen === 1) {
                var wVMVN = World.PLAYER.chest;
                for (var k = 0; k < 4; k++) {
                    if (wVMVN[k][0] !== 0) chest[k].trigger();
                }
            } else if (isTeamOpen === 1) {
                if (World.PLAYER.team === -1) {
                    BUTTON_ADDTEAM.trigger();
                    var j = 0;
                    for (var i = 0; i < join.length; i++) {
                        if (World.teams[i].leader !== 0) {
                            join[j].trigger();
                            j++;
                        }
                    }
                } else if (World.PLAYER.teamLeader === 1) {
                    BUTTON_LOCK_TEAM.trigger();
                    BUTTON_UNLOCK_TEAM.trigger();
                    BUTTON_DELETE.trigger();
                    var j = 0;
                    var team = World.teams[World.PLAYER.team];
                    for (var i = 0; i < World.players.length; i++) {
                        if (i === World.PLAYER.id) {
                            j++;
                            continue;
                        }
                        var PLAYER = World.players[i];
                        if ((PLAYER.team === team.id) && (PLAYER.teamUid === team.uid)) {
                            kick[j].trigger();
                            j++;
                        }
                    }
                } else BUTTON_LEAVE.trigger();
            }
        }
        var invtr = World.PLAYER.inventory;
        var len = invtr.length;
        MmV = -1;
        if (len > 10) BUTTON_BAG.trigger();
        for (var i = 0; i < len; i++) {
            if ((i > 9) && (BUTTON_BAG.open === 0)) break;
            if (invtr[i][0] !== 0) {
                if (inventory[i].trigger() === 1) MmV = i;
            }
        }
    };

    function NmN(event) {
        Keyboard.keyup(event);
        if ((isTeamOpen === 1) && (World.PLAYER.team === -1)) {
            if ((event.keyCode === 8) && (Game.teamName.length > 0)) {
                Game.teamName = Game.teamName.substring(0, Game.teamName.length - 1);
                event.preventDefault();
                return;
            } else if (((event.keyCode >= 65) && (event.keyCode <= 90)) || ((event.keyCode >= 48) && (event.keyCode <= 57))) {
                if (Game.teamName.length < 5) Game.teamName += window.String.fromCharCode(event.keyCode);
            }
        } else if ((chatvisible === 1) && (event.keyCode === 27)) {
            chatvisible = 0;
            mnnNv.display = "none";
        } else if (event.keyCode === 13) {
            if (chatvisible === 1) {
                if (chatinput.value.length > 0) {
                    if ((World.PLAYER.admin === 1) && (chatinput.value[0] === '!')) {
                        if (chatinput.value === '!pos') World.players[World.PLAYER.id].text.push((window.Math.floor(World.PLAYER.x / 100) + ":") + window.Math.floor(World.PLAYER.y / 100));
                        if (chatinput.value === '!new') Client.newToken(chatinput.value);
                        if (chatinput.value === '!afk') Client.sendAfk(chatinput.value);
                        if (chatinput.value === '!path')  { if (!pathFinder)   pathFinder = true;  else pathFinder = false; }
                        else {
                            var mNvMM = chatinput.value.split('!');
                            for (var i = 1; i < mNvMM.length; i++) {
                                var nwNVn = "!" + mNvMM[i];
                                if (nwNVn.indexOf("public") === -1) nwNVn = nwNVn.split(" ").join("");
                                Client.sendChatMessage(nwNVn);
                                if (i <= 20) World.players[World.PLAYER.id].text.push(nwNVn);
                            }
                        }
                    } else if (chatinput.value[0] === '[') {
                        Client.sendWSmsg(chatinput.value)
                } else {
                        var delay = Client.sendChatMessage(chatinput.value);
                        if (delay !== 0) World.players[World.PLAYER.id].text.push(("I am muted during " + window.Math.floor(delay / 1000)) + " seconds");
                        else World.players[World.PLAYER.id].text.push(chatinput.value);
                    }
                }
                chatvisible = 0;
                chatinput.value = "";
                mnnNv.display = "none";
            } else {
                chatvisible = 1;
                mnnNv.display = "inline-block";
                chatinput.focus();
            }
        } else if (chatvisible === 0) {
            if (event.keyCode === 77) {
                if (isMapOpen === 0) {
                    _CloseBox();
                    NmW = 1;
                    isMapOpen = 1;
                    AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                } else {
                    _CloseBox();
                    AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                }
            } else if ((event.keyCode === 69) || (event.keyCode === 32)) {
                switch (World.PLAYER.interaction) {
                    case 0:
                        Client.sendPacket(window.JSON.stringify([12, World.PLAYER.lootId]));
                        break;
                    case 2:
                        Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid]));
                        break;
                }
            } else if (event.keyCode === 70) {
                if (World.PLAYER.extraLoot === 1) Client.sendPacket(window.JSON.stringify([12, World.PLAYER.lootId]));
            } else if (event.keyCode === 82) {
                if (World.PLAYER.isBuilding === 1) World.PLAYER.buildRotate = (World.PLAYER.buildRotate + 1) % 4;
                else Client.sendPacket(window.JSON.stringify([13]));
            } else if ((event.keyCode >= 49) && (event.keyCode <= 57)) {
                if (World.PLAYER.drag.begin !== 1) {
                    var i = event.keyCode - 49;
                    var invtr = World.PLAYER.inventory;
                    if (i < invtr.length) {
                        var IID = invtr[i][0];
                        var amount = invtr[i][1];
                        var itemId = invtr[i][2];
                        var wvmvw = invtr[i][3];
                        if (event.altKey) {
                            Client.sendPacket(window.JSON.stringify([9, IID, amount, itemId, wvmvw]));
                            AudioUtils.playFx(AudioUtils._fx.throwLoot, 1, 0);
                        } else {
                            if (event.ctrlKey) {
                                AudioUtils.playFx(AudioUtils._fx.drag, 0.6, 0);
                                Client.sendPacket(window.JSON.stringify([11, IID, amount, itemId]));
                            } else Client.sendPacket(window.JSON.stringify([8, IID, amount, itemId, wvmvw]));
                        }
                    }
                }
            } else if ((event.keyCode === 67) && (World.PLAYER.ghoul === 0)) {
                if (isCraftOpen === 0) {
                    _CloseBox();
                    NmW = 1;
                    isCraftOpen = 1;
                    World.buildCraftList(AREAS.__PLAYER__);
                    AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                } else {
                    AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                    _CloseBox();
                }
            } else if ((event.keyCode === 27) && (NmW === 1)) {
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                _CloseBox();
            }
        }
    };

    function vnW(event) {
        Keyboard.keydown(event);
        if ((((event.keyCode === 37) || (event.keyCode === 38)) || (event.keyCode === 39)) || (event.keyCode === 40)) {
            event.preventDefault();
            return false;
        }
    };

    function touchStart(event) {
        var NVN = 0;
        for (var wVV = 0; wVV < event.touches.length; wVV++) {
            Mouse.touchToMouseEvent(mouseX, event, event.touches[wVV]);
            if (BUTTON_BAG.open !== 0) {
                var MVvmv = Mouse.state;
                Mouse.updateAll(mouseX, Mouse.__MOUSE_DOWN__);
                Mouse.state = MVvmv;
                var invtr = World.PLAYER.inventory;
                var NwvVw = 0;
                for (var i = 10; i < invtr.length; i++) {
                    if (invtr[i][0] !== 0) {
                        if (inventory[i].trigger() === 1) {
                            NwvVw = 1;
                            break;
                        }
                    }
                }
                if (NwvVw === 1) {
                    mouseDown(mouseX);
                    continue;
                }
            }
            if ((World.PLAYER.drag.begin === 0) && (NmW === 0)) {
                var sx = window.Math.floor(mouseX.clientX * CanvasUtils.options.ratioX);
                var sy = window.Math.floor(mouseX.clientY * CanvasUtils.options.ratioY);
                switch (World.PLAYER.interaction) {
                    case 2:
                        if (((((World.PLAYER.extraLoot === 1) && (sx > Game.xInteract2)) && (sy > Game.yInteract2)) && (sx < (Game.xInteract2 + Game.widthInteract))) && (sy < (Game.yInteract2 + Game.heightInteract))) {
                            nvnNv = 1;
                            keyboard.keyCode = 70;
                            keyboard.charCode = 70;
                            NmN(keyboard);
                            continue;
                        }
                        case 0:
                            if ((((sx > Game.xInteract) && (sy > Game.yInteract)) && (sx < (Game.xInteract + Game.widthInteract))) && (sy < (Game.yInteract + Game.heightInteract))) {
                                nvnNv = 1;
                                keyboard.keyCode = 69;
                                keyboard.charCode = 69;
                                NmN(keyboard);
                                continue;
                            }
                            break;
                }
                if (sy < (canh - (70 * scaleby))) {
                    var WMm = canw4 * 1.5;
                    var nmV = canw4 / 4;
                    if (sx < canw2) {
                        var MVM = 30 * scaleby;
                        MWVNw = Math2d.angle(canw2 - WMm, canh2 + nmV, sx, sy);
                        NVNwm = window.Math.min(Math2d.distance(sx, sy, canw2 - WMm, canh2 + nmV), 25);
                        if (sx < ((canw2 - WMm) - MVM)) {
                            mWM |= 1;
                            keyboard.charCode = 37;
                            keyboard.keyCode = 37;
                            vnW(keyboard);
                        } else if (sx > ((canw2 - WMm) + MVM)) {
                            mWM |= 2;
                            keyboard.charCode = 39;
                            keyboard.keyCode = 39;
                            vnW(keyboard);
                        }
                        if (sy < ((canh2 + nmV) - MVM)) {
                            mWM |= 4;
                            keyboard.charCode = 38;
                            keyboard.keyCode = 38;
                            vnW(keyboard);
                        } else if (sy > ((canh2 + nmV) + MVM)) {
                            mWM |= 8;
                            keyboard.charCode = 40;
                            keyboard.keyCode = 40;
                            vnW(keyboard);
                        }
                    } else if ((sx < (canw - (40 * scaleby))) || (sy > (40 * scaleby))) {
                        NVN = 1;
                        mouseX.clientX -= WMm / CanvasUtils.options.ratioX;
                        mouseX.clientY -= nmV / CanvasUtils.options.ratioX;
                        if (World.PLAYER.isBuilding === 1) {
                            var vVMmn = window.Date.now();
                            if ((vVMmn - MMMvM) < 1000) {
                                vmWNW = 1;
                                NnVMv = mouseX.clientX;
                                WNmmw = mouseX.clientY;
                                mouseDown(mouseX);
                            }
                            MMMvM = vVMmn;
                        } else {
                            vmWNW = 1;
                            NnVMv = mouseX.clientX;
                            WNmmw = mouseX.clientY;
                            mouseDown(mouseX);
                        }
                    }
                    continue;
                }
            }
            if ((NVN === 0) && (mWM === 0)) {
                mouseDown(mouseX);
                NVN = 1;
            }
        }
    };

    function touchEnd(event) {
        var sx = window.Math.floor(event.changedTouches[0].clientX * CanvasUtils.options.ratioX);
        var sy = window.Math.floor(event.changedTouches[0].clientY * CanvasUtils.options.ratioY);
        if (nvnNv === 1) nvnNv = 0;
        else if (NmW === 1) mouseUp(mouseX);
        else if ((vmWNW === 1) && (sx >= canw2)) {
            vmWNW = 0;
            mouseX.clientX = NnVMv;
            mouseX.clientY = WNmmw;
            mouseUp(mouseX);
            return;
        } else if (((World.PLAYER.drag.begin === 0) && (sx < canw2)) && (sy < (canh - (70 * scaleby)))) {
            if ((sx < (240 * scaleby)) && (sy < (160 * scaleby))) mouseUp(mouseX);
        } else mouseUp(mouseX);
        if (mWM !== 0) {
            if (mWM & 1) {
                keyboard.charCode = 37;
                NmN(keyboard);
            }
            if (mWM & 2) {
                keyboard.charCode = 39;
                NmN(keyboard);
            }
            if (mWM & 4) {
                keyboard.charCode = 38;
                NmN(keyboard);
            }
            if (mWM & 8) {
                keyboard.charCode = 40;
                NmN(keyboard);
            }
            mWM = 0;
        }
    };

    function touchCancel(event) {};

    function touchMove(event) {
        var NVN = 0;
        var mWVWv = 0;
        for (var wVV = 0; wVV < event.touches.length; wVV++) {
            Mouse.touchToMouseEvent(mouseX, event, event.touches[wVV]);
            if (BUTTON_BAG.open !== 0) {
                var invtr = World.PLAYER.inventory;
                var NwvVw = 0;
                for (var i = 10; i < invtr.length; i++) {
                    if (invtr[i][0] !== 0) {
                        if (inventory[i].trigger() === 1) {
                            NwvVw = 1;
                            break;
                        }
                    }
                }
                if (NwvVw === 1) {
                    mouseMove(mouseX);
                    continue;
                }
            }
            if ((World.PLAYER.drag.begin === 0) && (NmW === 0)) {
                var sx = window.Math.floor(mouseX.clientX * CanvasUtils.options.ratioX);
                var sy = window.Math.floor(mouseX.clientY * CanvasUtils.options.ratioY);
                if (sy < (canh - (70 * scaleby))) {
                    var WMm = canw4 * 1.5;
                    var nmV = canw4 / 4;
                    if (sx < canw2) {
                        mWVWv = 1;
                        var VNM = 0;
                        var MVM = 30 * scaleby;
                        MWVNw = Math2d.angle(canw2 - WMm, canh2 + nmV, sx, sy);
                        NVNwm = window.Math.min(Math2d.distance(sx, sy, canw2 - WMm, canh2 + nmV), 25);
                        if (sx < ((canw2 - WMm) - MVM)) VNM |= 1;
                        else if (sx > ((canw2 - WMm) + MVM)) VNM |= 2;
                        if (sy < ((canh2 + nmV) + -MVM)) VNM |= 4;
                        else if (sy > ((canh2 + nmV) + MVM)) VNM |= 8;
                        if (((VNM & 1) === 1) && ((mWM & 1) !== 1)) {
                            keyboard.charCode = 37;
                            vnW(keyboard);
                        } else if (((VNM & 1) !== 1) && ((mWM & 1) === 1)) {
                            keyboard.charCode = 37;
                            NmN(keyboard);
                        }
                        if (((VNM & 2) === 2) && ((mWM & 2) !== 2)) {
                            keyboard.charCode = 39;
                            vnW(keyboard);
                        } else if (((VNM & 2) !== 2) && ((mWM & 2) === 2)) {
                            keyboard.charCode = 39;
                            NmN(keyboard);
                        }
                        if (((VNM & 4) === 4) && ((mWM & 4) !== 4)) {
                            keyboard.charCode = 38;
                            vnW(keyboard);
                        } else if (((VNM & 4) !== 4) && ((mWM & 4) === 4)) {
                            keyboard.charCode = 38;
                            NmN(keyboard);
                        }
                        if (((VNM & 8) === 8) && ((mWM & 8) !== 8)) {
                            keyboard.charCode = 40;
                            vnW(keyboard);
                        } else if (((VNM & 8) !== 8) && ((mWM & 8) === 8)) {
                            keyboard.charCode = 40;
                            NmN(keyboard);
                        }
                        mWM = VNM;
                        continue;
                    } else if ((sx < (canw - (40 * scaleby))) || (sy > (40 * scaleby))) {
                        NVN = 1;
                        mouseX.clientX -= WMm / CanvasUtils.options.ratioX;
                        mouseX.clientY -= nmV / CanvasUtils.options.ratioX;
                        NnVMv = mouseX.clientX;
                        WNmmw = mouseX.clientY;
                        mouseMove(mouseX);
                    }
                }
            }
            if ((NVN === 0) && (mWM === 0)) {
                mouseMove(mouseX);
                NVN = 1;
            }
        }
        if ((mWVWv === 0) && (mWM !== 0)) {
            if (mWM & 1) {
                keyboard.charCode = 37;
                NmN(keyboard);
            }
            if (mWM & 2) {
                keyboard.charCode = 39;
                NmN(keyboard);
            }
            if (mWM & 4) {
                keyboard.charCode = 38;
                NmN(keyboard);
            }
            if (mWM & 8) {
                keyboard.charCode = 40;
                NmN(keyboard);
            }
            mWM = 0;
        }
    };

    function MouseWheelHandler(e)
    {
        if (MOD.mouseScale) {
            var e = window.event || e;
                Render.scale += (e.wheelDelta / 5000);
            return false;
        }
    };

    function MmNNN() {
        if (isTouchScreen === 0) window.addEventListener("wheel", MouseWheelHandler, false);
        if (isTouchScreen === 0) window.addEventListener('mousedown', mouseDown, false);
        if (isTouchScreen === 0) window.addEventListener('mouseup', mouseUp, false);
        if (isTouchScreen === 0) window.addEventListener('mousemove', mouseMove, false);
        if (isTouchScreen === 0) window.addEventListener('keyup', NmN, false);
        if (isTouchScreen === 0) window.addEventListener('keydown', vnW, false);
        if (isTouchScreen === 1) window.addEventListener('touchstart', touchStart, false);
        if (isTouchScreen === 1) window.addEventListener('touchend', touchEnd, false);
        if (isTouchScreen === 1) window.addEventListener('touchcancel', touchCancel, false);
        if (isTouchScreen === 1) window.addEventListener('touchmove', touchMove, false);
    };

    function VVwMW() {
        if (isTouchScreen === 0) window.addEventListener("wheel", MouseWheelHandler, false);
        if (isTouchScreen === 0) window.removeEventListener('mousedown', mouseDown, false);
        if (isTouchScreen === 0) window.removeEventListener('mouseup', mouseUp, false);
        if (isTouchScreen === 0) window.removeEventListener('mousemove', mouseMove, false);
        if (isTouchScreen === 0) window.removeEventListener('keyup', NmN, false);
        if (isTouchScreen === 0) window.removeEventListener('keydown', vnW, false);
        if (isTouchScreen === 1) window.removeEventListener('touchstart', touchStart, false);
        if (isTouchScreen === 1) window.removeEventListener('touchend', touchEnd, false);
        if (isTouchScreen === 1) window.removeEventListener('touchcancel', touchCancel, false);
        if (isTouchScreen === 1) window.removeEventListener('touchmove', touchMove, false);
    };

    return {
        quit: quit,
        init: init,
        run: run,
        update: update,
        draw: draw
    };
})();
var Score = (function() {
    function onError(state) {};

    function quitGame() {
        quit(Game);
    };

    function onOpen() {
        quitGame();
    };
    var NNN = 0;
    var nMwNn = {
        src: "img/adblocker-msg.png",
        img: {
            isLoaded: 0
        }
    };
    var VmVNw = 0;
    var VwvVv = -1;
    var WwwvV = null;
    var WMwMN = {
        img: null
    };
    var wNnwN = null;
    var nwWMv = {
        img: null
    };
    var lastScore = -1;
    var MnvWv = {
        img: null
    };
    var scoreLabel = null;
    var vvWmM = -1;
    var VMnMw = null;
    var vMMnW = {
        img: null
    };

    function nmNnw() {
        var offsetX = mNw.pos.x;
        var offsetY = mNw.pos.y;
        var wX_Scale = offsetX / scaleby;
        var wY_Scale = offsetY / scaleby;
        if ((scoreLabel === null) || (lastScore !== World.PLAYER.exp)) {
            lastScore = World.PLAYER.exp;
            scoreLabel = GUI.renderText(lastScore + "", "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
            MnvWv.img = scoreLabel;
            MnvWv.img.isLoaded = 1;
        }
        CanvasUtils.drawImageHd(MnvWv, wX_Scale + 280, wY_Scale + 117, 0, 0, 0, 1);
        if ((WwwvV === null) || (VwvVv !== World.PLAYER.level)) {
            VwvVv = World.PLAYER.level;
            WwwvV = GUI.renderText(VwvVv + "", "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
            wNnwN = GUI.renderText(window.Math.floor(VwvVv / 2), "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
            WMwMN.img = WwwvV;
            WMwMN.img.isLoaded = 1;
            nwWMv.img = wNnwN;
            nwWMv.img.isLoaded = 1;
        }
        CanvasUtils.drawImageHd(WMwMN, wX_Scale + 108, wY_Scale + 117, 0, 0, 0, 1);
        CanvasUtils.drawImageHd(nwWMv, wX_Scale + 288, wY_Scale + 147, 0, 0, 0, 1);
        if ((VMnMw === null) || (vvWmM !== World.PLAYER.kill)) {
            vvWmM = World.PLAYER.kill;
            VMnMw = GUI.renderText(vvWmM + "", "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
            vMMnW.img = VMnMw;
            vMMnW.img.isLoaded = 1;
        }
        CanvasUtils.drawImageHd(vMMnW, wX_Scale + 453, wY_Scale + 117, 0, 0, 0, 1);
        var inventory = Game.inventory;
        var invtr = World.PLAYER.inventory;
        var len = invtr.length;
        var MVM = 50 * scaleby;
        var _y = offsetY + (182 * scaleby);
        var _x = offsetX + (80 * scaleby);
        var WnVvn = scaleby;
        scaleby = scaleby - (0.3 * scaleby);
        for (var i = 0; i < len; i++) {
            var wm = inventory[i];
            if (invtr[i][0] !== 0) Render.buttonInv(wm, invtr[i], _x, _y, Game.inventoryItemNumber, Game.inventoryAmmoNumber);
            _x += MVM;
        }
        scaleby = WnVvn;
        if (Home.adblocker === 1) {
            var breath = MathUtils.Ease.inOutQuad((VmVNw > 500) ? ((1000 - VmVNw) / 500) : (VmVNw / 500));
            ctx.globalAlpha = 0.7;
            CanvasUtils.drawImageHd(nMwNn, wX_Scale + 288, wY_Scale + 193, 0, 0, 0, 1 + (0.04 * breath));
            ctx.globalAlpha = 1;
            VmVNw = (VmVNw + delta) % 1000;
        }
    };
    var waitAds = 0;
    var mNw;
    var playagainbutt;
    var vWv;

    function init() {
        mNw = GUI.createBackground(541, 324, "img/scoreboardnew.png");
        playagainbutt = GUI.createButton(123, 35, ["img/play-again-button-out.png", "img/play-again-button-in.png", "img/play-again-button-click.png"]);
        vWv = GUI.createButton(198, 35, ["img/back-main-page-button-out.png", "img/back-main-page-button-in.png", "img/back-main-page-button-click.png"]);
    };
    var transitionSpeed;
    var mouseX = new Mouse.LocalMouseEvent;
    var keyboard = new Keyboard.LocalKeyboardEvent;
    var transitionDuration = 500;
    var transitionState = 0;
    var transitionFunction = function(t) {
        return MathUtils.Ease.speedLimit(t, MathUtils.Ease.inQuad, 0.05);
    };
    var reverseTransitionDuration = 500;
    var reverseTransitionState = 0;
    var reverseTransitionFunction = function(t) {
        return MathUtils.Ease.speedLimit(t, MathUtils.Ease.outQuad, 0.05);
    };
    var reverseTransition = 0;
    var transitionDuration = 0;
    var isWaiting = window.undefined;

    function run() {
        Client.onError = onError;
        Client.onOpen = onOpen;
        World.PLAYER.isBuilding = 0;
        World.PLAYER.id = 0;
        Render.setDetection(0);
        Render.stopPoisonEffect();
        for (var i = 0; i < World.PLAYER.inventory.length; i++) {
            for (var j = 0; j < 4; j++) World.PLAYER.inventory[i][j] = 0;
        }
        var MWMwV = KIT[window.Math.min(KIT.length - 1, World.PLAYER.level)];
        for (var i = 0; i < MWMwV.length; i++) {
            var item = MWMwV[i];
            if (item.id !== 0) Game.inventory[i].setImages(INVENTORY[item.id].itemButton.src, INVENTORY[item.id].itemButton.img);
            var invtr = World.PLAYER.inventory[i];
            invtr[1] = item.amount;
            invtr[2] = 0;
            invtr[3] = item.life;
            invtr[0] = item.id;
        }
        CanvasUtils.setRenderer(Score);
        transitionDuration = reverseTransitionDuration;
        reverseTransition = reverseTransitionDuration;
        isWaiting = reverseTransitionFunction;
        reverseTransitionState = 1;
        update();
    };

    function quit(callback) {
        Home.trevdaStyle.display = "none";
        transitionSpeed = callback;
        VVwMW();
        transitionDuration = transitionDuration;
        reverseTransition = transitionDuration;
        isWaiting = transitionFunction;
        transitionState = 1;
    };

    function update() {
        var transitionX = 0;
        var transitionY = 0;
        if (transitionDuration > 0) {
            transitionY = canh;
            var transition = isWaiting(1 - (transitionDuration / reverseTransition));
            if (transition === 1) transitionDuration = 0;
            if (reverseTransitionState === 1) transition = 1 - window.Math.abs(transition);
            transitionX *= transition;
            transitionY *= transition;
        }
        mNw.pos.x = (canw2 - window.Math.floor(270 * scaleby)) - transitionX;
        mNw.pos.y = window.Math.max(0, (canh2 - window.Math.floor(162 * scaleby)) + window.Math.floor(-135 * scaleby)) - transitionY;
        playagainbutt.pos.x = ((canw2 - window.Math.floor(61 * scaleby)) + window.Math.floor(-100 * scaleby)) - transitionX;
        playagainbutt.pos.y = window.Math.max(0, (canh2 - window.Math.floor(17 * scaleby)) + window.Math.floor(-35 * scaleby)) - transitionY;
        vWv.pos.x = ((canw2 - window.Math.floor(99 * scaleby)) + window.Math.floor(100 * scaleby)) - transitionX;
        vWv.pos.y = playagainbutt.pos.y;
        var mVvwv = window.Math.min(scaleby, 1);
        window.document.getElementById("trevda").style.top = window.Math.floor((canh2 - 125) + (140 * mVvwv)) + "px";
        window.document.getElementById("trevda").style.transform = ("scale(" + mVvwv) + ")";
        window.document.getElementById("trevda").style.left = window.Math.floor(canw2 - (325 * mVvwv)) + "px";
    };

    function draw() {
        if (transitionManager() === 0) return;
        ctx.clearRect(0, 0, canw, canh);
        Render.world();
        if (transitionDuration > 0) {
            NNN = isWaiting(1 - (transitionDuration / reverseTransition));
            if (reverseTransitionState === 1) NNN = 1 - window.Math.abs(NNN);
            NNN = 1 - NNN;
        }
        ctx.globalAlpha = 0.3 * NNN;
        ctx.fillStyle = "#000000";
        ctx.fillRect(0, 0, canw, canh);
        ctx.globalAlpha = 1;
        mNw.draw();
        vWv.draw();
        nmNnw();
        Render.alertServer();
        AudioManager.scheduler();
        if (waitAds > 0) {
            waitAds = window.Math.max(0, waitAds - delta);
            CanvasUtils.drawImageHd(WAITADS[window.Math.floor(waitAds / 1000)], (playagainbutt.pos.x / scaleby) + 61.5, (playagainbutt.pos.y / scaleby) + 17.75, 0, 0, 0, 1);
        } else playagainbutt.draw();
    };

    function transitionManager() {
        if (transitionState === 1) {
            update();
            if (transitionDuration < 0) {
                transitionState = 0;
                playagainbutt.setState(GUI.__BUTTON_OUT__);
                vWv.setState(GUI.__BUTTON_OUT__);
                transitionSpeed.run();
                return 0;
            }
            transitionDuration -= delta;
        } else if (reverseTransitionState === 1) {
            update();
            if (transitionDuration < 0) {
                reverseTransitionState = 0;
                if (World.PLAYER.admin !== 1) Home.trevdaStyle.display = "inline-block";
                window.document.getElementById("bod").style.backgroundColor = "#46664d";
                MmNNN();
            }
            transitionDuration -= delta;
        }
        return 1;
    };

    function mouseDown(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_DOWN__);
        var vnm = 0;
        if (playagainbutt.trigger() === 1) {
            vnm = 1;
        }
        if (vWv.trigger() === 1) {
            vnm = 1;
        }
    };

    function mouseUp(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_UP__);
        var vnm = 0;
        if (playagainbutt.trigger() === 1) {
            vnm = 1;
            if (waitAds <= 0) {
                Home.joinServer();
                AudioUtils.playFx(AudioUtils._fx.play, 1, 0);
            }
            return;
        }
        if (vWv.trigger() === 1) {
            vnm = 1;
            if (((Client.state & Client.State.__PENDING__) === 0) && ((Client.state & Client.State.__CONNECTED__) === 0)) {
                quit(Home);
                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                return;
            }
        }
    };

    function mouseMove(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_MOVE__);
        var vnm = 0;
        if (playagainbutt.trigger() === 1) {
            vnm = 1;
        }
        if (vWv.trigger() === 1) {
            vnm = 1;
        }
    };

    function touchStart(event) {
        if (event.touches.length > 0) {
            Mouse.touchToMouseEvent(mouseX, event, event.touches[0]);
            mouseDown(mouseX);
        }
    };

    function touchEnd(event) {
        mouseUp(mouseX);
    };

    function touchCancel(event) {
        if (event.touches.length > 0) {
            Mouse.touchToMouseEvent(mouseX, event, event.touches[0]);
            mouseUp(mouseX);
        }
    };

    function touchMove(event) {
        if (event.touches.length > 0) {
            Mouse.touchToMouseEvent(mouseX, event, event.touches[0]);
            mouseMove(mouseX);
        }
    };

    function MmNNN() {
        if (isTouchScreen === 0) window.addEventListener('mousedown', mouseDown, false);
        if (isTouchScreen === 0) window.addEventListener('mouseup', mouseUp, false);
        if (isTouchScreen === 0) window.addEventListener('mousemove', mouseMove, false);
        if (isTouchScreen === 1) window.addEventListener('touchstart', touchStart, false);
        if (isTouchScreen === 1) window.addEventListener('touchend', touchEnd, false);
        if (isTouchScreen === 1) window.addEventListener('touchcancel', touchCancel, false);
        if (isTouchScreen === 1) window.addEventListener('touchmove', touchMove, false);
    };

    function VVwMW() {
        if (isTouchScreen === 0) window.removeEventListener('mousedown', mouseDown, false);
        if (isTouchScreen === 0) window.removeEventListener('mouseup', mouseUp, false);
        if (isTouchScreen === 0) window.removeEventListener('mousemove', mouseMove, false);
        if (isTouchScreen === 1) window.removeEventListener('touchstart', touchStart, false);
        if (isTouchScreen === 1) window.removeEventListener('touchend', touchEnd, false);
        if (isTouchScreen === 1) window.removeEventListener('touchcancel', touchCancel, false);
        if (isTouchScreen === 1) window.removeEventListener('touchmove', touchMove, false);
    };
    return {
        quit: quit,
        init: init,
        run: run,
        update: update,
        draw: draw
    };
})();
var Rank = (function() {
    function onError(state) {};

    function quitGame() {
        quit(Game);
    };

    function onOpen() {
        quitGame();
    };
    var NNN = 0;
    var lastTime = -1;
    var VmvNV = null;
    var vnvvM = {
        img: null
    };
    var mvNVM = -1;
    var mmvMV = {
        img: null
    };
    var NmwnM = null;
    var vvWmM = -1;
    var VMnMw = null;
    var vMMnW = {
        img: null
    };

    function nmNnw() {
        var offsetX = mNw.pos.x;
        var offsetY = mNw.pos.y;
        var wX_Scale = offsetX / scaleby;
        var wY_Scale = offsetY / scaleby;
        if ((NmwnM === null) || (mvNVM !== World.playerAlive)) {
            mvNVM = World.playerAlive;
            NmwnM = GUI.renderText("#" + window.Math.max(mvNVM, 1), "'Viga', sans-serif", "#FFFFFF", 60, 140, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
            mmvMV.img = NmwnM;
            mmvMV.img.isLoaded = 1;
        }
        CanvasUtils.drawImageHd(mmvMV, wX_Scale + 207, wY_Scale + 93, 0, 0, 0, 1);
        if ((VmvNV === null) || (lastTime !== World.PLAYER.timePlayed)) {
            lastTime = World.PLAYER.timePlayed;
            var vMWwM = window.Math.floor((window.Date.now() - World.PLAYER.timePlayed) / 1000);
            var wWvWM = window.Math.floor(vMWwM / 60);
            var NNvMn = vMWwM % 60;
            VmvNV = GUI.renderText((((((wWvWM < 10) ? "0" : "") + wWvWM) + ":") + ((NNvMn < 10) ? "0" : "")) + NNvMn, "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
            vnvvM.img = VmvNV;
            vnvvM.img.isLoaded = 1;
        }
        CanvasUtils.drawImageHd(vnvvM, wX_Scale + 110, wY_Scale + 100, 0, 0, 0, 1);
        if ((VMnMw === null) || (vvWmM !== World.PLAYER.kill)) {
            vvWmM = World.PLAYER.kill;
            VMnMw = GUI.renderText(vvWmM + "", "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
            vMMnW.img = VMnMw;
            vMMnW.img.isLoaded = 1;
        }
        CanvasUtils.drawImageHd(vMMnW, wX_Scale + 309, wY_Scale + 100, 0, 0, 0, 1);
    };
    var waitAds = 0;
    var mNw;
    var playagainbutt;
    var vWv;

    function init() {
        mNw = GUI.createBackground(414, 207, "img/scoreboard-br.png");
        playagainbutt = GUI.createButton(123, 35, ["img/play-again-button-out.png", "img/play-again-button-in.png", "img/play-again-button-click.png"]);
        vWv = GUI.createButton(198, 35, ["img/back-main-page-button-out.png", "img/back-main-page-button-in.png", "img/back-main-page-button-click.png"]);
    };
    var transitionSpeed;
    var mouseX = new Mouse.LocalMouseEvent;
    var keyboard = new Keyboard.LocalKeyboardEvent;
    var transitionDuration = 500;
    var transitionState = 0;
    var transitionFunction = function(t) {
        return MathUtils.Ease.speedLimit(t, MathUtils.Ease.inQuad, 0.05);
    };
    var reverseTransitionDuration = 500;
    var reverseTransitionState = 0;
    var reverseTransitionFunction = function(t) {
        return MathUtils.Ease.speedLimit(t, MathUtils.Ease.outQuad, 0.05);
    };
    var reverseTransition = 0;
    var transitionDuration = 0;
    var isWaiting = window.undefined;

    function run() {
        Client.onError = onError;
        Client.onOpen = onOpen;
        World.PLAYER.isBuilding = 0;
        World.PLAYER.id = 0;
        Render.setDetection(0);
        Render.stopPoisonEffect();
        CanvasUtils.setRenderer(Rank);
        transitionDuration = reverseTransitionDuration;
        reverseTransition = reverseTransitionDuration;
        isWaiting = reverseTransitionFunction;
        reverseTransitionState = 1;
        update();
    };

    function quit(callback) {
        Home.trevdaStyle.display = "none";
        transitionSpeed = callback;
        VVwMW();
        transitionDuration = transitionDuration;
        reverseTransition = transitionDuration;
        isWaiting = transitionFunction;
        transitionState = 1;
    };

    function update() {
        var transitionX = 0;
        var transitionY = 0;
        if (transitionDuration > 0) {
            transitionY = canh;
            var transition = isWaiting(1 - (transitionDuration / reverseTransition));
            if (transition === 1) transitionDuration = 0;
            if (reverseTransitionState === 1) transition = 1 - window.Math.abs(transition);
            transitionX *= transition;
            transitionY *= transition;
        }
        mNw.pos.x = (canw2 - window.Math.floor(207 * scaleby)) - transitionX;
        mNw.pos.y = window.Math.max(0, (canh2 - window.Math.floor(103 * scaleby)) + window.Math.floor(-135 * scaleby)) - transitionY;
        playagainbutt.pos.x = ((canw2 - window.Math.floor(61 * scaleby)) + window.Math.floor(-100 * scaleby)) - transitionX;
        playagainbutt.pos.y = window.Math.max(0, (canh2 - window.Math.floor(17 * scaleby)) + window.Math.floor(-70 * scaleby)) - transitionY;
        vWv.pos.x = ((canw2 - window.Math.floor(99 * scaleby)) + window.Math.floor(70 * scaleby)) - transitionX;
        vWv.pos.y = playagainbutt.pos.y;
        var mVvwv = scaleby;
        window.document.getElementById("trevda").style.top = window.Math.floor((canh2 - 125) + (130 * mVvwv)) + "px";
        window.document.getElementById("trevda").style.transform = ("scale(" + mVvwv) + ")";
    };

    function draw() {
        if (transitionManager() === 0) return;
        ctx.clearRect(0, 0, canw, canh);
        Render.world();
        if (transitionDuration > 0) {
            NNN = isWaiting(1 - (transitionDuration / reverseTransition));
            if (reverseTransitionState === 1) NNN = 1 - window.Math.abs(NNN);
            NNN = 1 - NNN;
        }
        ctx.globalAlpha = 0.3 * NNN;
        ctx.fillStyle = "#000000";
        ctx.fillRect(0, 0, canw, canh);
        ctx.globalAlpha = 1;
        mNw.draw();
        vWv.draw();
        nmNnw();
        Render.alertServer();
        AudioManager.scheduler();
        if (waitAds > 0) {
            waitAds = window.Math.max(0, waitAds - delta);
            CanvasUtils.drawImageHd(WAITADS[window.Math.floor(waitAds / 1000)], (playagainbutt.pos.x / scaleby) + 61.5, (playagainbutt.pos.y / scaleby) + 17.75, 0, 0, 0, 1);
        } else playagainbutt.draw();
    };

    function transitionManager() {
        if (transitionState === 1) {
            update();
            if (transitionDuration < 0) {
                transitionState = 0;
                playagainbutt.setState(GUI.__BUTTON_OUT__);
                vWv.setState(GUI.__BUTTON_OUT__);
                transitionSpeed.run();
                return 0;
            }
            transitionDuration -= delta;
        } else if (reverseTransitionState === 1) {
            update();
            if (transitionDuration < 0) {
                reverseTransitionState = 0;
                Home.trevdaStyle.display = "inline-block";
                window.document.getElementById("bod").style.backgroundColor = "#46664d";
                MmNNN();
            }
            transitionDuration -= delta;
        }
        return 1;
    };

    function mouseDown(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_DOWN__);
        var vnm = 0;
        if (playagainbutt.trigger() === 1) {
            vnm = 1;
        }
        if (vWv.trigger() === 1) {
            vnm = 1;
        }
    };

    function mouseUp(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_UP__);
        var vnm = 0;
        if (playagainbutt.trigger() === 1) {
            vnm = 1;
            if (waitAds <= 0) {
                Home.joinServer();
                AudioUtils.playFx(AudioUtils._fx.play, 1, 0);
            }
            return;
        }
        if (vWv.trigger() === 1) {
            vnm = 1;
            if (((Client.state & Client.State.__PENDING__) === 0) && ((Client.state & Client.State.__CONNECTED__) === 0)) {
                quit(Home);
                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                return;
            }
        }
    };

    function mouseMove(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_MOVE__);
        var vnm = 0;
        if (playagainbutt.trigger() === 1) {
            vnm = 1;
        }
        if (vWv.trigger() === 1) {
            vnm = 1;
        }
    };

    function touchStart(event) {
        if (event.touches.length > 0) {
            Mouse.touchToMouseEvent(mouseX, event, event.touches[0]);
            mouseDown(mouseX);
        }
    };

    function touchEnd(event) {
        mouseUp(mouseX);
    };

    function touchCancel(event) {
        if (event.touches.length > 0) {
            Mouse.touchToMouseEvent(mouseX, event, event.touches[0]);
            mouseUp(mouseX);
        }
    };

    function touchMove(event) {
        if (event.touches.length > 0) {
            Mouse.touchToMouseEvent(mouseX, event, event.touches[0]);
            mouseMove(mouseX);
        }
    };

    function MmNNN() {
        if (isTouchScreen === 0) window.addEventListener('mousedown', mouseDown, false);
        if (isTouchScreen === 0) window.addEventListener('mouseup', mouseUp, false);
        if (isTouchScreen === 0) window.addEventListener('mousemove', mouseMove, false);
        if (isTouchScreen === 1) window.addEventListener('touchstart', touchStart, false);
        if (isTouchScreen === 1) window.addEventListener('touchend', touchEnd, false);
        if (isTouchScreen === 1) window.addEventListener('touchcancel', touchCancel, false);
        if (isTouchScreen === 1) window.addEventListener('touchmove', touchMove, false);
    };

    function VVwMW() {
        if (isTouchScreen === 0) window.removeEventListener('mousedown', mouseDown, false);
        if (isTouchScreen === 0) window.removeEventListener('mouseup', mouseUp, false);
        if (isTouchScreen === 0) window.removeEventListener('mousemove', mouseMove, false);
        if (isTouchScreen === 1) window.removeEventListener('touchstart', touchStart, false);
        if (isTouchScreen === 1) window.removeEventListener('touchend', touchEnd, false);
        if (isTouchScreen === 1) window.removeEventListener('touchcancel', touchCancel, false);
        if (isTouchScreen === 1) window.removeEventListener('touchmove', touchMove, false);
    };
    return {
        quit: quit,
        init: init,
        run: run,
        update: update,
        draw: draw
    };
})();

var Editor = (function() {
    
    var NmW = 0;
    var isMapOpen = 0;
    var isSettingsOpen = 0;
    var MNnnv = 0;
    var inventoryEmpty = CanvasUtils.loadImage("img/inv-empty.png");
    var inventoryEmpty2 = [inventoryEmpty, inventoryEmpty, inventoryEmpty];
    var Wnw = [];
    var NWw = 0;

    function editorSetValues() {
        World.PLAYER.id             = 1;
        World.playerNumber          = 2;
        World.gameMode              = 0;
        World.PLAYER.skillPoint     = 0;
        World.PLAYER.gridPrev[i]    = 0;
        World.PLAYER.isBuilding     = 1;
        World.PLAYER.teamJoin       = 0;
        World.PLAYER.lastAreas = [
            [-1, -1],
            [-1, -1],
            [-1, -1],
            [-1, -1],
            [-1, -1],
            [-1, -1],
            [-1, -1],
            [-1, -1],
            [-1, -1],
            [-1, -1],
            [-1, -1],
            [-1, -1]
        ];
        World.gauges.rad.value = World.gauges.rad._max;
        World.gauges.rad.decrease = -1;
        World.allocatePlayers([0, window.document.getElementById("nicknameInput").value]);
        World.initDayCycle(0, 0);
        Render.reset(window.undefined, 0, 0.07);
        Render.scale = 0;
        Entitie.removeAll();
        World.PLAYER.buildRotate = 0;
        World.PLAYER.blueprint = 0;
        vmV = 0;
        mnnMn(1, __ENTITIE_PLAYER__, 550, 550, 21 << 8, 0);
    };

    function _OpenBox(box) {
        _CloseBox();
        NmW = 1;
        if (box === 1) isCraftOpen = 1;
        else if (box === 2) isChestOpen = 1;
    };

    function _CloseBox() {
        NmW = 0;
        BUTTON_CLOSE_BOX.setState(GUI.__BUTTON_OUT__);
        isMapOpen       = 0;
        isSettingsOpen  = 0;
        isCraftOpen     = 0;
        isChestOpen     = 0;
        isTeamOpen      = 0;
        World.releaseBuilding();
    };
    var nmMMm = 0;
    var BUTTON_CLOSE_BOX = GUI.createButton(43, 43, ["img/close-box-out.png", "img/close-box-in.png", "img/close-box-click.png"]);
    var highpartout = [CanvasUtils.loadImage("img/high-particules-out.png"), CanvasUtils.loadImage("img/high-particules-in.png"), CanvasUtils.loadImage("img/high-particules-click.png")];
    var wVwnm = GUI.createButton(54, 42, null, highpartout);
    var vWmmV = [CanvasUtils.loadImage("img/low-particules-out.png"), CanvasUtils.loadImage("img/low-particules-in.png"), CanvasUtils.loadImage("img/low-particules-click.png")];
    var VnWMV = GUI.createButton(54, 42, null, vWmmV);
    var vVvNM = [CanvasUtils.loadImage("img/no-particules-out.png"), CanvasUtils.loadImage("img/no-particules-in.png"), CanvasUtils.loadImage("img/no-particules-click.png")];
    var wwMwv = GUI.createButton(54, 42, null, vVvNM);
    var VVVMw = [CanvasUtils.loadImage("img/high-resolution-out.png"), CanvasUtils.loadImage("img/high-resolution-in.png"), CanvasUtils.loadImage("img/high-resolution-click.png")];
    var wWNnw = GUI.createButton(54, 42, null, VVVMw);
    var wmnmv = [CanvasUtils.loadImage("img/medium-resolution-out.png"), CanvasUtils.loadImage("img/medium-resolution-in.png"), CanvasUtils.loadImage("img/medium-resolution-click.png")];
    var nvwMN = GUI.createButton(54, 42, null, wmnmv);
    var vmVnn = [CanvasUtils.loadImage("img/low-resolution-out.png"), CanvasUtils.loadImage("img/low-resolution-in.png"), CanvasUtils.loadImage("img/low-resolution-click.png")];
    var MNVVn = GUI.createButton(54, 42, null, vmVnn);
    var NwVwn = [CanvasUtils.loadImage("img/azerty-button-out.png"), CanvasUtils.loadImage("img/azerty-button-in.png"), CanvasUtils.loadImage("img/azerty-button-click.png")];
    var VmvmN = GUI.createButton(81, 33, null, NwVwn);
    var NMnMN = [CanvasUtils.loadImage("img/qwerty-button-out.png"), CanvasUtils.loadImage("img/qwerty-button-in.png"), CanvasUtils.loadImage("img/qwerty-button-click.png")];
    var WMVVn = GUI.createButton(87, 33, null, NMnMN);
    var soundonbutt = [CanvasUtils.loadImage("img/sound-on-out.png"), CanvasUtils.loadImage("img/sound-on-in.png"), CanvasUtils.loadImage("img/sound-on-click.png")];
    var soundoffbutt = [CanvasUtils.loadImage("img/sound-off-out.png"), CanvasUtils.loadImage("img/sound-off-in.png"), CanvasUtils.loadImage("img/sound-off-click.png")];
    var wvNNV = GUI.createButton(51, 36, null, soundonbutt);
    var WVnnn = GUI.createButton(51, 36, null, soundoffbutt);
    var NmVWV = GUI.createButton(51, 36, null, soundonbutt);
    var vVMWm = GUI.createButton(51, 36, null, soundoffbutt);
    var mWM = 0;
    var MWVNw = 0;
    var NVNwm = 0;
    var MMMvM = 0;
    var vmWNW = 0;
    var NnVMv = 0;
    var WNmmw = 0;
    var nvnNv = 0;
    var vmV = 0;

    function mnnMn(pid, type, offsetX, offsetY, extra, state) {
        var entity = Entitie.get(pid, vmV, vmV, type);
        setEntitie(entity, pid, vmV, vmV, type, offsetX, offsetY, offsetX, offsetY, extra, 0, state);
        vmV++;
    };

    function editorUseCode(code) {
        editorSetValues();
        code = code.split("!b=");
        code.shift();
        for (var i = 0; i < code.length; i++) {
            var building = code[i].split(":");
            if (building.length > 4) Vnvmv(building[0], building[1], building[3], building[2], building[4]);
            else Vnvmv(building[0], 0, building[2], building[1], building[3]);
        }
    };

    function Vnvmv(item, subtype, i, j, rotation) {
        item        = window.Number(item)    >>> 0;
        subtype     = window.Number(subtype) >>> 0;
        i           = window.Number(i)       >>> 0;
        j           = window.Number(j)       >>> 0;
        rotation         = window.Number(rotation)     >>> 0;

        if (((rotation > 3) || (i >= MapManager.height)) || (j >= MapManager.height)) return;
        var building = INVENTORY[item];
        if (((building === window.undefined) || (building.subtype === window.undefined)) || ((building.subtype > 0) && (building.building.length <= subtype))) return;
        var rotation = (building.wall === 1) ? 0 : rotation;
        var offsetX = (building.xCenter[rotation] + 50) + (100 * j);
        var offsetY = (building.yCenter[rotation] + 50) + (100 * i);
        var type = 0;
        switch ((building.subtype === 0) ? building.zid : building.subtype[subtype].zid) {
            case 0:
                type = __ENTITIE_BUILD_DOWN__;
                break;
            case 1:
                type = __ENTITIE_BUILD_TOP__;
                break;
            case 2:
                type = __ENTITIE_BUILD_GROUND2__;
                break;
            default:
                type = __ENTITIE_BUILD_GROUND__;
                break;
        }
        nWMWn(1, type, offsetX, offsetY, rotation, 1 + ((building.subtype === 0) ? 0 : (subtype << 5)), building.id);
    };

    function nWMWn(pid, type, offsetX, offsetY, rotation, state, subtype) {
        var entity = Entitie.get(pid, vmV, vmV, type);
        setEntitie(entity, pid, vmV, vmV, type, offsetX, offsetY, offsetX, offsetY, (subtype << 7) + (rotation << 5), 0, state);
        var update = ENTITIES[type].update;
        if (update !== window.undefined) update(entity, offsetX, offsetY);
        vmV++;
    };

    function editorBuildtoCode(type) {
        var code            = "";
        var buildings       = Entitie.units[type];
        var buildingsBorder = Entitie.border[type];
        var buildingsLen    = buildingsBorder.border;

        for (i = 0; i < buildingsLen; i++) {
            var player  = buildings[buildingsBorder.cycle[i]];
            var item    = INVENTORY[player.extra >> 7];

            code += ("!b=" + item.id) + ":";
            if (item.subtype !== 0) code += player.subtype + ":";
            code += (((player.j + ":") + player.i) + ":") + ((player.extra >> 5) & 3);
        }
        return code;
    };

    function editorBuildRemove(type, offsetX, offsetY) {
        var buildings       = Entitie.units[type];
        var buildingsBorder = Entitie.border[type];
        var buildingsLen    = buildingsBorder.border;
        
        for (i = 0; i < buildingsLen; i++) {
            var building = buildings[buildingsBorder.cycle[i]];
            if ((((building.x >= offsetX) && (building.x <= (offsetX + 100))) && (building.y >= offsetY)) && (building.y <= (offsetY + 100))) {
                Entitie.remove(building.pid, building.id, building.uid, type, building.extra);
                return;
            }
        }
    };
    

    function vnMVv() {
        if ((Mouse.state === Mouse.__MOUSE_DOWN__) && (World.PLAYER.click === 0)) {
            if (World.PLAYER.isBuilding === 1) {
                World.PLAYER.click = -1;
                if (World.PLAYER.canBuild === 1) {
                    if ((((World.PLAYER.jBuild !== -1) && (World.PLAYER.iBuild !== -1)) && (World.PLAYER.jBuild !== MapManager.width)) && (World.PLAYER.iBuild !== MapManager.height)) Vnvmv(World.PLAYER.blueprint, World.PLAYER.furniture, World.PLAYER.iBuild, World.PLAYER.jBuild, World.PLAYER.buildRotate);
                } else {
                    var offsetX = 100 * World.PLAYER.jBuild;
                    var offsetY = 100 * World.PLAYER.iBuild;
                    editorBuildRemove(__ENTITIE_BUILD_DOWN__, offsetX, offsetY);
                    editorBuildRemove(__ENTITIE_BUILD_TOP__, offsetX, offsetY);
                    editorBuildRemove(__ENTITIE_BUILD_GROUND2__, offsetX, offsetY);
                    editorBuildRemove(__ENTITIE_BUILD_GROUND__, offsetX, offsetY);
                }
            }
        } else if (Mouse.state === Mouse.__MOUSE_UP__) {
            if (World.PLAYER.isBuilding === 1) {
                nmMMm = 0;
                World.PLAYER.click = 0;
            }
        }
    };
    var NnMMn = window.Math.sqrt(2) / 2;

    function nNvvV() {
        var move = 0;
        if (Keyboard.isLeft()   === 1)      move |= 1;
        if (Keyboard.isRight()  === 1)      move |= 2;
        if (Keyboard.isBottom() === 1)      move |= 4;
        if (Keyboard.isTop()    === 1)      move |= 8;
        if (move > 0) {
            var pid = World.players[1].locatePlayer;
            if (pid === -1) return;
            var PLAYER = Entitie.units[__ENTITIE_PLAYER__][pid];
            WvvVn = (((move & 3) && (move & 12)) ? NnMMn : 1) * ((Keyboard.isShift() === 0) ? (delta * 1.5) : (delta * 11));
            if (move & 1) PLAYER.rx = PLAYER.x - WvvVn;
            else if (move & 2) PLAYER.rx = PLAYER.x + WvvVn;
            if (move & 8) PLAYER.ry = PLAYER.y - WvvVn;
            else if (move & 4) PLAYER.ry = PLAYER.y + WvvVn;
            PLAYER.rx = window.Math.max(0, window.Math.min(PLAYER.rx, MapManager.width * 100));
            PLAYER.ry = window.Math.max(0, window.Math.min(PLAYER.ry, MapManager.height * 100));
            PLAYER.nx = PLAYER.rx;
            PLAYER.ny = PLAYER.ry;
        }
    };

    function wWNmN() {
        var offsetX = editorBuildings.pos.x - (5 * scaleby);
        var offsetY = editorBuildings.pos.y + (74 * scaleby);
        var MVM = 45 * scaleby;
        for (var i = 0; i < NWw; i++) {
            var wm = Wnw[i];
            wm.pos.x = offsetX + ((i % 8) * MVM);
            wm.pos.y = offsetY + (window.Math.floor(i / 8) * MVM);
            wm.draw();
        }
    };

    function editorExportCode() {
        if (Nnw <= 0) Nnw = 3000;
        else if (Nnw <= 500) Nnw = 3000 - Nnw;
        else if (Nnw <= 2500) Nnw = 2500;
        var code = "";
        code += editorBuildtoCode(__ENTITIE_BUILD_DOWN__);
        code += editorBuildtoCode(__ENTITIE_BUILD_TOP__);
        code += editorBuildtoCode(__ENTITIE_BUILD_GROUND2__);
        code += editorBuildtoCode(__ENTITIE_BUILD_GROUND__);
        var vMV = window.document.createElement('textarea');
        vMV["value"] = code;
        window.document["body"]["appendChild"](vMV);
        vMV["select"]();
        window.document["execCommand"]('copy');
        window.document["body"]["removeChild"](vMV);
    };

    function markPosition() {
        if (Nnw > 0) {
            Nnw -= delta;
            if (Nnw > 2500) ctx.globalAlpha = MathUtils.Ease.inOutQuad((3000 - Nnw) / 500);
            else if (Nnw < 500) ctx.globalAlpha = MathUtils.Ease.inOutQuad(Nnw / 500);
            ctx.drawImage(VWWvn, editorCopy.pos.x - (85 * scaleby), editorCopy.pos.y - (40 * scaleby), VWWvn.wh * scaleby, VWWvn.h2 * scaleby);
            ctx.globalAlpha = 1;
        }
        if (NVVNW[World.PLAYER._j] === window.undefined) NVVNW[World.PLAYER._j] = [];
        if (NVVNW[World.PLAYER._j][World.PLAYER._i] === window.undefined) NVVNW[World.PLAYER._j][World.PLAYER._i] = GUI.renderText(((("(" + World.PLAYER._j) + ",") + World.PLAYER._i) + ")", "'Viga', sans-serif", "#FFFFFF", 52, 455, "#000000", 22, 22, window.undefined, window.undefined, 0.4, window.undefined, "#000000", 15.6);
        var img = NVVNW[World.PLAYER._j][World.PLAYER._i];
        ctx.drawImage(img, 5 * scaleby, editorZoomIn.pos.y - (42 * scaleby), img.wh * scaleby, img.h2 * scaleby);
    };

    var VWWvn = null;
    var VWWvn = null;
    var Nnw = 0;
    var NVVNW = [];
    var vVnNn = 0;

    var BACKGROUND_SETTBOX;
    var BACKGROUND_BIGMAP;
    var minimap;
    var editorScreen;
    var editorOptions;
    var editorMap;
    var editorLogic;
    var editorExplosions;
    var editorRoad;
    var editorFurniture;
    var editorBuildings;
    var editorZoomIn;
    var editorZoomOut;
    var editorDelete;
    var editorImport;
    var editorCopy;
    var editorHome;
    var editorZoomIn;
    var editorZoomOut;

    function init() {
        VWWvn = GUI.renderText("Copied to clipboard", "'Viga', sans-serif", "#FFFFFF", 40, 350, "#000000", 18, 18, window.undefined, window.undefined, 0.6);
        for (i = 0; i < 64; i++) Wnw.push(GUI.createButton(40, 40, null, inventoryEmpty2));
        
        BACKGROUND_SETTBOX = GUI.createBackground(269, 267, "img/settings-box.png");
        BACKGROUND_BIGMAP = GUI.createBackground(412, 412, "img/borderBigMinimap2.png");
        minimap = GUI.createBackground(128, 128, "img/minimap.png");

        editorScreen        = GUI.createButton(40, 40,      ["img/full-screen-out.png", "img/full-screen-in.png", "img/full-screen-click.png"]);
        editorOptions       = GUI.createButton(40, 40,      ["img/settings-out.png", "img/settings-in.png", "img/settings-click.png"]);
        editorMap           = GUI.createButton(40, 40,      ["img/minimap-button-out.png", "img/minimap-button-in.png", "img/minimap-button-click.png"]);
        editorLogic         = GUI.createButton(67, 67,      ["img/logic-button-out.png", "img/logic-button-in.png", "img/logic-button-click.png"]);
        editorExplosions    = GUI.createButton(67, 67,      ["img/map-explosive-button-out.png", "img/map-explosive-button-in.png", "img/map-explosive-button-click.png"]);
        editorRoad          = GUI.createButton(67, 67,      ["img/map-road-button-out.png", "img/map-road-button-in.png", "img/map-road-button-click.png"]);
        editorFurniture     = GUI.createButton(67, 67,      ["img/map-furniture-button-out.png", "img/map-furniture-button-in.png", "img/map-furniture-button-click.png"]);
        editorBuildings     = GUI.createButton(67, 67,      ["img/map-building-button-out.png", "img/map-building-button-in.png", "img/map-building-button-click.png"]);
        editorZoomIn        = GUI.createButton(46.5, 46.5,  ["img/zoom-button-out.png", "img/zoom-button-in.png", "img/zoom-button-click.png"]);
        editorZoomOut       = GUI.createButton(46.5, 46.5,  ["img/unzoom-button-out.png", "img/unzoom-button-in.png", "img/unzoom-button-click.png"]);
        editorDelete        = GUI.createButton(40, 40,      ["img/map-delete-button-out.png", "img/map-delete-button-in.png", "img/map-delete-button-click.png"]);
        editorImport        = GUI.createButton(46.5, 46.5,  ["img/import-button-out.png", "img/import-button-in.png", "img/import-button-click.png"]);
        editorCopy          = GUI.createButton(46.5, 46.5,  ["img/copy-paste-button-out.png", "img/copy-paste-button-in.png", "img/copy-paste-button-click.png"]);
        editorHome          = GUI.createButton(60, 60,      ["img/home-button-out.png", "img/home-button-in.png", "img/home-button-click.png"]);

    };
    var transitionSpeed;
    var mouseX = new Mouse.LocalMouseEvent;
    var keyboard = new Keyboard.LocalKeyboardEvent;
    var transitionDuration = 1000;
    var transitionState = 0;
    var transitionFunction = MathUtils.Ease.inQuad;
    var reverseTransitionDuration = 1000;
    var reverseTransitionState = 0;
    var reverseTransitionFunction = MathUtils.Ease.outQuad;
    var reverseTransition = 0;
    var transitionDuration = 0;
    var isWaiting = window.undefined;

    function run() {
        window.document.getElementById("bod").style.backgroundColor = "#46664D";
        nmMMm = 0;
        AudioManager.startGame();
        if (vVnNn === 0) {
            vVnNn = 1;
            var itemSub = INVENTORY[IID.__ROAD__].subtype;
            for (var i = 0; i < itemSub.length; i++) {
                var item = itemSub[i];
                item.itemButton = {
                    src: [item.building.src, "img/useless.png", "img/useless.png"],
                    img: [{
                        isLoaded: 0
                    }, {
                        isLoaded: 0
                    }, {
                        isLoaded: 0
                    }]
                };
            }
            var itemSub = INVENTORY[IID.__FURNITURE__].subtype;
            for (var i = 0; i < itemSub.length; i++) {
                var item = itemSub[i];
                item.itemButton = {
                    src: [item.building.src, "img/useless.png", "img/useless.png"],
                    img: [{
                        isLoaded: 0
                    }, {
                        isLoaded: 0
                    }, {
                        isLoaded: 0
                    }]
                };
            }
        }
        editorSetValues();
        CanvasUtils.setRenderer(Editor);
        transitionDuration = reverseTransitionDuration;
        reverseTransition = reverseTransitionDuration;
        isWaiting = reverseTransitionFunction;
        reverseTransitionState = 1;
        update();
    };

    function quit(callback) {
        _CloseBox();
        AudioManager.quitGame();
        transitionSpeed = callback;
        VVwMW();
        transitionDuration = transitionDuration;
        reverseTransition = transitionDuration;
        isWaiting = transitionFunction;
        transitionState = 1;
    };

    function update() {
        var transitionX = 0;
        var transitionY = 0;
        if (transitionDuration > 0) {
            transitionY = canh;
            var transition = isWaiting(1 - (transitionDuration / reverseTransition));
            if (transition === 1) transitionDuration = 0;
            if (reverseTransitionState === 1) transition = 1 - window.Math.abs(transition);
            transitionX *= transition;
            transitionY *= transition;
        }
        BACKGROUND_SETTBOX.pos.x = (canw2 - window.Math.floor(134 * scaleby)) + transitionX;
        BACKGROUND_SETTBOX.pos.y = window.Math.max(0, canh2 - window.Math.floor(133 * scaleby)) + transitionY;
        BACKGROUND_BIGMAP.pos.x = (canw2 - window.Math.floor(206 * scaleby)) + transitionX;
        BACKGROUND_BIGMAP.pos.y = window.Math.max(0, canh2 - window.Math.floor(206 * scaleby)) + transitionY;
        minimap.pos.x = window.Math.floor(5 * scaleby) - transitionX;
        minimap.pos.y = window.Math.floor(5 * scaleby) - transitionY;
        editorScreen.pos.x      = minimap.pos.x + window.Math.floor(126 * scaleby);
        editorScreen.pos.y      = minimap.pos.y;
        editorOptions.pos.x     = editorScreen.pos.x;
        editorOptions.pos.y     = editorScreen.pos.y + window.Math.floor(44.5 * scaleby);
        editorMap.pos.x         = editorOptions.pos.x;
        editorMap.pos.y         = editorOptions.pos.y + window.Math.floor(44.5 * scaleby);
        editorLogic.pos.x       = ((canw - window.Math.floor(67 * scaleby)) + window.Math.floor(-5 * scaleby)) - transitionX;
        editorLogic.pos.y       = window.Math.floor(5 * scaleby) - transitionY;
        editorExplosions.pos.x  = editorLogic.pos.x + window.Math.floor(-70 * scaleby);
        editorExplosions.pos.y  = window.Math.floor(5 * scaleby) - transitionY;
        editorRoad.pos.x        = editorExplosions.pos.x + window.Math.floor(-70 * scaleby);
        editorRoad.pos.y        = window.Math.floor(5 * scaleby) - transitionY;
        editorFurniture.pos.x   = editorRoad.pos.x + window.Math.floor(-70 * scaleby);
        editorFurniture.pos.y   = window.Math.floor(5 * scaleby) - transitionY;
        editorBuildings.pos.x   = editorFurniture.pos.x + window.Math.floor(-70 * scaleby);
        editorBuildings.pos.y   = window.Math.floor(5 * scaleby) - transitionY;
        editorZoomIn.pos.x      = window.Math.floor(5 * scaleby);
        editorZoomIn.pos.y      = (canh - window.Math.floor(46.5 * scaleby)) + window.Math.floor(-5 * scaleby);
        editorZoomOut.pos.x     = editorZoomIn.pos.x + window.Math.floor(50 * scaleby);
        editorZoomOut.pos.y     = (canh - window.Math.floor(46.5 * scaleby)) + window.Math.floor(-5 * scaleby);
        editorDelete.pos.x      = minimap.pos.x + window.Math.floor(89 * scaleby);
        editorDelete.pos.y      = minimap.pos.y + window.Math.floor(126 * scaleby);
        editorImport.pos.x      = (canw - window.Math.floor(46.5 * scaleby)) + window.Math.floor(-5 * scaleby);
        editorImport.pos.y      = (canh - window.Math.floor(46.5 * scaleby)) + window.Math.floor(-5 * scaleby);
        editorCopy.pos.x        = editorImport.pos.x + window.Math.floor(-50 * scaleby);
        editorCopy.pos.y        = (canh - window.Math.floor(46.5 * scaleby)) + window.Math.floor(-5 * scaleby);
        editorHome.pos.x        = minimap.pos.x;
        editorHome.pos.y        = minimap.pos.y + window.Math.floor(126 * scaleby);
    };

    function draw() {
        if (transitionManager() === 0) return;
        vnMVv();
        nNvvV();
        ctx.clearRect(0, 0, canw, canh);
        World.updatePosition();
        Render.world();
        Render.minimap(minimap.pos.x, minimap.pos.y);
        minimap.draw();
        editorScreen.draw();
        editorOptions.draw();
        editorMap.draw();
        editorLogic.draw();
        editorExplosions.draw();
        editorRoad.draw();
        editorFurniture.draw();
        editorBuildings.draw();
        editorZoomIn.draw();
        editorZoomOut.draw();
        editorDelete.draw();
        editorImport.draw();
        editorCopy.draw();
        editorHome.draw();
        markPosition();
        wWNmN();
        if (NmW === 1) {
            if (isMapOpen === 1) Render.bigminimap(BACKGROUND_BIGMAP, BUTTON_CLOSE_BOX);
            else if (isSettingsOpen === 1) Render.config(BACKGROUND_SETTBOX, wWNnw, nvwMN, MNVVn, VmvmN, WMVVn, wvNNV, WVnnn, NmVWV, vVMWm, BUTTON_CLOSE_BOX, wVwnm, VnWMV, wwMwv);
        } else if (isTouchScreen === 1) {
            if ((((Keyboard.isLeft() + Keyboard.isRight()) + Keyboard.isTop()) + Keyboard.isBottom()) >= 1) {
                ctx.globalAlpha = 0.3;
                var offsetX = canw2ns - (canw4ns * 1.5);
                var offsetY = canh2ns + (canw4ns / 4);
                CanvasUtils.circle(ctx, offsetX, offsetY, 60);
                CanvasUtils.drawPath(ctx, "#000000");
                CanvasUtils.circle(ctx, offsetX + ((window.Math.cos(MWVNw) * NVNwm) * scaleby), offsetY + ((window.Math.sin(MWVNw) * NVNwm) * scaleby), 30);
                CanvasUtils.drawPath(ctx, "#FFFFFF");
                ctx.globalAlpha = 1;
            }
            if (vmWNW === 1) {
                ctx.globalAlpha = 0.3;
                var offsetX = canw2ns + (canw4ns * 1.5);
                var offsetY = canh2ns + (canw4ns / 4);
                CanvasUtils.circle(ctx, offsetX, offsetY, 60);
                CanvasUtils.drawPath(ctx, "#000000");
                CanvasUtils.circle(ctx, offsetX + ((window.Math.cos(Mouse.angle) * 25) * scaleby), offsetY + ((window.Math.sin(Mouse.angle) * 25) * scaleby), 30);
                CanvasUtils.drawPath(ctx, "#FFFFFF");
                ctx.globalAlpha = 1;
            }
        }
        AudioManager.scheduler();
    };

    function transitionManager() {
        if (transitionState === 1) {
            update();
            if (transitionDuration < 0) {
                transitionState = 0;
                editorScreen.setState(GUI.__BUTTON_OUT__);
                editorOptions.setState(GUI.__BUTTON_OUT__);
                editorMap.setState(GUI.__BUTTON_OUT__);
                editorLogic.setState(GUI.__BUTTON_OUT__);
                editorExplosions.setState(GUI.__BUTTON_OUT__);
                editorRoad.setState(GUI.__BUTTON_OUT__);
                editorFurniture.setState(GUI.__BUTTON_OUT__);
                editorBuildings.setState(GUI.__BUTTON_OUT__);
                editorZoomIn.setState(GUI.__BUTTON_OUT__);
                editorZoomOut.setState(GUI.__BUTTON_OUT__);
                editorDelete.setState(GUI.__BUTTON_OUT__);
                editorImport.setState(GUI.__BUTTON_OUT__);
                editorCopy.setState(GUI.__BUTTON_OUT__);
                editorHome.setState(GUI.__BUTTON_OUT__);
                transitionSpeed.run();
                return 0;
            }
            transitionDuration -= delta;
        } else if (reverseTransitionState === 1) {
            update();
            if (transitionDuration < 0) {
                reverseTransitionState = 0;
                MmNNN();
            }
            transitionDuration -= delta;
        }
        return 1;
    };


    function mouseDown(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_DOWN__);
        var vnm = 0;

        if (editorScreen.trigger()      === 1)          { vnm = 1; }
        if (editorOptions.trigger()     === 1)          { vnm = 1; }
        if (editorMap.trigger()         === 1)          { vnm = 1; }
        if (editorLogic.trigger()       === 1)          { vnm = 1; }
        if (editorExplosions.trigger()  === 1)          { vnm = 1; }
        if (editorRoad.trigger()        === 1)          { vnm = 1; }
        if (editorFurniture.trigger()   === 1)          { vnm = 1; }
        if (editorBuildings.trigger()   === 1)          { vnm = 1; }
        if (editorZoomIn.trigger()      === 1)          { vnm = 1; }
        if (editorZoomOut.trigger()     === 1)          { vnm = 1; }
        if (editorDelete.trigger()      === 1)          { vnm = 1; }
        if (editorImport.trigger()      === 1)          { vnm = 1; }
        if (editorHome.trigger()        === 1)          { vnm = 1; }

        if (NmW === 1) {
            BUTTON_CLOSE_BOX.trigger();
            if (isSettingsOpen === 1) {
                VmvmN.trigger();
                WMVVn.trigger();
                wWNnw.trigger();
                nvwMN.trigger();
                MNVVn.trigger();
                wvNNV.trigger();
                WVnnn.trigger();
                NmVWV.trigger();
                vVMWm.trigger();
                VnWMV.trigger();
                wVwnm.trigger();
                wwMwv.trigger();
            }
        } else {
            for (var i = 0; i < NWw; i++) {
                if (Wnw[i].trigger() === 1) vnm = 1;
            }
        }
        if ((vnm === 0) && (NmW === 0)) {
            nmMMm = 1;
            if (World.PLAYER.click === -1) World.PLAYER.click = 0;
        } else {
            if (World.PLAYER.click === 0) World.PLAYER.click = -1;
        }
    };

    function mouseUp(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_UP__);
        var vnm = 0;
        if (editorScreen.trigger() === 1) {
            vnm = 1;
            if (MNnnv === 0) {
                MNnnv = 1;
                CanvasUtils.enableFullscreen();
                if (World.day === 0) canvas.style.backgroundColor = "#3D5942";
                else canvas.style.backgroundColor = "#0B2129";
                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
            } else {
                MNnnv = 0;
                CanvasUtils.disableFullscreen();
                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
            }
        }
        if (editorOptions.trigger() === 1) {
            vnm = 1;
            if (isSettingsOpen === 0) {
                _CloseBox();
                NmW = 1;
                isSettingsOpen = 1;
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                return;
            } else {
                _CloseBox();
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                return;
            }
        }
        if (editorMap.trigger() === 1) {
            vnm = 1;
            if (isMapOpen === 0) {
                _CloseBox();
                NmW = 1;
                isMapOpen = 1;
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                return;
            } else {
                _CloseBox();
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                return;
            }
        }
        if (editorLogic.trigger() === 1) {
            vnm = 1;
            NWw = 0;
            for (var i = 1; i < INVENTORY.length; i++) {
                var item = INVENTORY[i];
                if (item.behavior === BEHAVIOR.__LOGIC__) {
                    Wnw[NWw].setImages(item.itemButton.src, item.itemButton.img);
                    Wnw[NWw].itemId = item.id;
                    NWw++;
                }
            }
            AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
        }
        if (editorExplosions.trigger() === 1) {
            vnm = 1;
            NWw = 0;
            for (var i = 1; i < INVENTORY.length; i++) {
                var item = INVENTORY[i];
                if ((((item.id === IID.__LANDMINE__) || (item.id === IID.__C4__)) || (item.id === IID.__WOOD_SPIKE__)) || (item.id === IID.__DYNAMITE__)) {
                    Wnw[NWw].setImages(item.itemButton.src, item.itemButton.img);
                    Wnw[NWw].itemId = item.id;
                    NWw++;
                }
            }
            AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
        }
        if (editorRoad.trigger() === 1) {
            vnm = 1;
            NWw = 0;
            var itemSub = INVENTORY[IID.__ROAD__].subtype;
            for (var i = 0; i < itemSub.length; i++) {
                var item = itemSub[i];
                Wnw[NWw].setImages(item.itemButton.src, item.itemButton.img);
                Wnw[NWw].itemId = IID.__ROAD__;
                Wnw[NWw].itemSubId = i;
                NWw++;
            }
            AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
        }
        if (editorFurniture.trigger() === 1) {
            vnm = 1;
            NWw = 0;
            var itemSub = INVENTORY[IID.__FURNITURE__].subtype;
            for (var i = 0; i < itemSub.length; i++) {
                var item = itemSub[i];
                Wnw[NWw].setImages(item.itemButton.src, item.itemButton.img);
                Wnw[NWw].itemId = IID.__FURNITURE__;
                Wnw[NWw].itemSubId = i;
                NWw++;
            }
            AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
        }
        if (editorBuildings.trigger() === 1) {
            vnm = 1;
            NWw = 0;
            for (var i = 1; i < INVENTORY.length; i++) {
                var item = INVENTORY[i];
                if (((((item.wall === 1) || (item.lowWall === 1)) || (item.door === 1)) || (IID.__CHEST__ === 1)) || (IID.__FRIDGE__ === 1)) {
                    Wnw[NWw].setImages(item.itemButton.src, item.itemButton.img);
                    Wnw[NWw].itemId = item.id;
                    NWw++;
                }
            }
            AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
        }
    
        if (editorZoomIn.trigger() === 1) {
            vnm = 1;
            if (Render.scale < 1.5) {
                Render.scale += 0.1;
                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                editorZoomOut.show();
                if (Render.scale >= 1.5) editorZoomIn.hide();
            }
        }
        if (editorZoomOut.trigger() === 1) {
            vnm = 1;
            if (Render.scale > -0.95) {
                if (Render.scale < 0) Render.scale -= 0.05;
                else Render.scale -= 0.1;
                AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                editorZoomIn.show();
                if (Render.scale <= -0.95) editorZoomOut.hide();
            }
        }
    
    
        if (editorDelete.trigger() === 1) {
            vnm = 1;
            editorSetValues();
            AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
        }
        if (editorImport.trigger() === 1) {
            vnm = 1;
            AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
            var code = window["prompt"]("Please enter your code here", "");
            AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
            if ((code != null) && (code != "")) editorUseCode(code);
        }
        if (editorCopy.trigger() === 1) {
            vnm = 1;
            AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
            editorExportCode();
        }
        if (editorHome.trigger() === 1) {
            vnm = 1;
            Editor.quit(Home);
            AudioUtils.playFx(AudioUtils._fx.play, 1, 0);
        }
        if (NmW === 1) {
            if (BUTTON_CLOSE_BOX.trigger() === 1) {
                _CloseBox();
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                return;
            }
            if (isSettingsOpen === 1) {
                WMVVn.setState(GUI.__BUTTON_OUT__);
                VmvmN.setState(GUI.__BUTTON_OUT__);
                wWNnw.setState(GUI.__BUTTON_OUT__);
                nvwMN.setState(GUI.__BUTTON_OUT__);
                MNVVn.setState(GUI.__BUTTON_OUT__);
                wvNNV.setState(GUI.__BUTTON_OUT__);
                WVnnn.setState(GUI.__BUTTON_OUT__);
                NmVWV.setState(GUI.__BUTTON_OUT__);
                vVMWm.setState(GUI.__BUTTON_OUT__);
                wVwnm.setState(GUI.__BUTTON_OUT__);
                VnWMV.setState(GUI.__BUTTON_OUT__);
                wwMwv.setState(GUI.__BUTTON_OUT__);
                if (VmvmN.trigger() === 1) {
                    Keyboard.setAzerty();
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (WMVVn.trigger() === 1) {
                    Keyboard.setQwert();
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (wWNnw.trigger() === 1) {
                    CanvasUtils.setResolution(1);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (nvwMN.trigger() === 1) {
                    CanvasUtils.setResolution(2);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (MNVVn.trigger() === 1) {
                    CanvasUtils.setResolution(3);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (wvNNV.trigger() === 1) {
                    AudioUtils.setAudio(1);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (WVnnn.trigger() === 1) {
                    AudioUtils.setAudio(0);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (NmVWV.trigger() === 1) {
                    AudioUtils.setFx(1);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (vVMWm.trigger() === 1) {
                    AudioUtils.setFx(0);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (VnWMV.trigger() === 1) {
                    Render.setParticles(1);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (wVwnm.trigger() === 1) {
                    Render.setParticles(2);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                } else if (wwMwv.trigger() === 1) {
                    Render.setParticles(0);
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    return;
                }
                var MMMnn = BACKGROUND_SETTBOX.pos;
                if ((((Mouse.sx < MMMnn.x) || (Mouse.sx > (MMMnn.x + (234 * scaleby)))) || (Mouse.sy < MMMnn.y)) || (Mouse.sy > (MMMnn.y + (232 * scaleby)))) {
                    _CloseBox();
                    AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                    return;
                }
            } else if (isMapOpen === 1) {
                var mNMnn = BACKGROUND_BIGMAP.pos;
                if ((((Mouse.sx < mNMnn.x) || (Mouse.sx > (mNMnn.x + (412 * scaleby)))) || (Mouse.sy < mNMnn.y)) || (Mouse.sy > (mNMnn.y + (412 * scaleby)))) {
                    _CloseBox();
                    AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
                    return;
                }
            }
        } else {
            for (var i = 0; i < NWw; i++) {
                if (Wnw[i].trigger() === 1) {
                    AudioUtils.playFx(AudioUtils._fx.button, 1, 0);
                    World.PLAYER.blueprint = Wnw[i].itemId;
                    World.PLAYER.furniture = Wnw[i].itemSubId;
                    console.log(Wnw[i].itemId)
                    if (World.PLAYER.blueprint === IID.__ROAD__) World.PLAYER.buildRotate = 0;
                }
            }
        }
    };


    function mouseMove(event) {
        Mouse.updateAll(event, Mouse.__MOUSE_MOVE__);
        var vnm = 0;
        if (editorScreen.trigger() === 1) {
            vnm = 1;
        }
        if (editorOptions.trigger() === 1) {
            vnm = 1;
        }
        if (editorMap.trigger() === 1) {
            vnm = 1;
        }
        if (editorLogic.trigger() === 1) {
            vnm = 1;
        }
        if (editorExplosions.trigger() === 1) {
            vnm = 1;
        }
        if (editorRoad.trigger() === 1) {
            vnm = 1;
        }
        if (editorFurniture.trigger() === 1) {
            vnm = 1;
        }
        if (editorBuildings.trigger() === 1) {
            vnm = 1;
        }
        if (editorZoomIn.trigger() === 1) {
            vnm = 1;
        }
        if (editorZoomOut.trigger() === 1) {
            vnm = 1;
        }
        if (editorDelete.trigger() === 1) {
            vnm = 1;
        }
        if (editorImport.trigger() === 1) {
            vnm = 1;
        }
        if (editorCopy.trigger() === 1) {
            vnm = 1;
        }
        if (editorHome.trigger() === 1) {
            vnm = 1;
        }
        if (NmW === 1) {
            BUTTON_CLOSE_BOX.trigger();
            if (isSettingsOpen === 1) {
                VmvmN.trigger();
                WMVVn.trigger();
                wWNnw.trigger();
                nvwMN.trigger();
                MNVVn.trigger();
                wvNNV.trigger();
                WVnnn.trigger();
                NmVWV.trigger();
                vVMWm.trigger();
                VnWMV.trigger();
                wVwnm.trigger();
                wwMwv.trigger();
            }
        } else {
            for (var i = 0; i < NWw; i++) Wnw[i].trigger();
        }
    };

    function NmN(event) {
        Keyboard.keyup(event);
        if (event.keyCode === 77) {
            if (isMapOpen === 0) {
                _CloseBox();
                NmW = 1;
                isMapOpen = 1;
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
            } else {
                _CloseBox();
                AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
            }
        } else if ((event.keyCode === 27) && (NmW === 1)) {
            AudioUtils.playFx(AudioUtils._fx.open, 1, 0);
            _CloseBox();
        } else if (event.keyCode === 82) {
            if ((World.PLAYER.isBuilding === 1) && (World.PLAYER.blueprint !== IID.__ROAD__)) World.PLAYER.buildRotate = (World.PLAYER.buildRotate + 1) % 4;
        }
    };

    function vnW(event) {
        Keyboard.keydown(event);
        if ((((event.keyCode === 37) || (event.keyCode === 38)) || (event.keyCode === 39)) || (event.keyCode === 40)) {
            event.preventDefault();
            return false;
        }
    };

    function touchStart(event) {
        var NVN = 0;
        for (var wVV = 0; wVV < event.touches.length; wVV++) {
            Mouse.touchToMouseEvent(mouseX, event, event.touches[wVV]);
            if (NmW === 0) {
                var sx = window.Math.floor(mouseX.clientX * CanvasUtils.options.ratioX);
                var sy = window.Math.floor(mouseX.clientY * CanvasUtils.options.ratioY);
                if (sy < (canh - (70 * scaleby))) {
                    var WMm = canw4 * 1.5;
                    var nmV = canw4 / 4;
                    if (sx < canw2) {
                        var MVM = 30 * scaleby;
                        MWVNw = Math2d.angle(canw2 - WMm, canh2 + nmV, sx, sy);
                        NVNwm = window.Math.min(Math2d.distance(sx, sy, canw2 - WMm, canh2 + nmV), 25);
                        if (sx < ((canw2 - WMm) - MVM)) {
                            mWM |= 1;
                            keyboard.charCode = 37;
                            keyboard.keyCode = 37;
                            vnW(keyboard);
                        } else if (sx > ((canw2 - WMm) + MVM)) {
                            mWM |= 2;
                            keyboard.charCode = 39;
                            keyboard.keyCode = 39;
                            vnW(keyboard);
                        }
                        if (sy < ((canh2 + nmV) - MVM)) {
                            mWM |= 4;
                            keyboard.charCode = 38;
                            keyboard.keyCode = 38;
                            vnW(keyboard);
                        } else if (sy > ((canh2 + nmV) + MVM)) {
                            mWM |= 8;
                            keyboard.charCode = 40;
                            keyboard.keyCode = 40;
                            vnW(keyboard);
                        }
                    } else if ((sx < (canw - (40 * scaleby))) || (sy > (40 * scaleby))) {
                        NVN = 1;
                        mouseX.clientX -= WMm / CanvasUtils.options.ratioX;
                        mouseX.clientY -= nmV / CanvasUtils.options.ratioX;
                        if (World.PLAYER.isBuilding === 1) {
                            var vVMmn = window.Date.now();
                            if ((vVMmn - MMMvM) < 1000) {
                                vmWNW = 1;
                                NnVMv = mouseX.clientX;
                                WNmmw = mouseX.clientY;
                                mouseDown(mouseX);
                            }
                            MMMvM = vVMmn;
                        } else {
                            vmWNW = 1;
                            NnVMv = mouseX.clientX;
                            WNmmw = mouseX.clientY;
                            mouseDown(mouseX);
                        }
                    }
                    continue;
                }
            }
            if ((NVN === 0) && (mWM === 0)) {
                mouseDown(mouseX);
                NVN = 1;
            }
        }
    };

    function touchEnd(event) {};

    function touchCancel(event) {
        var sx = window.Math.floor(event.changedTouches[0].clientX * CanvasUtils.options.ratioX);
        var sy = window.Math.floor(event.changedTouches[0].clientY * CanvasUtils.options.ratioY);
        if (nvnNv === 1) nvnNv = 0;
        else if (NmW === 1) mouseUp(mouseX);
        else if ((vmWNW === 1) && (sx >= canw2)) {
            vmWNW = 0;
            mouseX.clientX = NnVMv;
            mouseX.clientY = WNmmw;
            mouseUp(mouseX);
            return;
        } else if (((World.PLAYER.drag.begin === 0) && (sx < canw2)) && (sy < (canh - (70 * scaleby)))) {
            if ((sx < (240 * scaleby)) && (sy < (160 * scaleby))) mouseUp(mouseX);
        } else mouseUp(mouseX);
        if (mWM !== 0) {
            if (mWM & 1) {
                keyboard.charCode = 37;
                NmN(keyboard);
            }
            if (mWM & 2) {
                keyboard.charCode = 39;
                NmN(keyboard);
            }
            if (mWM & 4) {
                keyboard.charCode = 38;
                NmN(keyboard);
            }
            if (mWM & 8) {
                keyboard.charCode = 40;
                NmN(keyboard);
            }
            mWM = 0;
        }
    };

    function touchMove(event) {
        var NVN = 0;
        var mWVWv = 0;
        for (var wVV = 0; wVV < event.touches.length; wVV++) {
            Mouse.touchToMouseEvent(mouseX, event, event.touches[wVV]);
            if ((World.PLAYER.drag.begin === 0) && (NmW === 0)) {
                var sx = window.Math.floor(mouseX.clientX * CanvasUtils.options.ratioX);
                var sy = window.Math.floor(mouseX.clientY * CanvasUtils.options.ratioY);
                if (sy < (canh - (70 * scaleby))) {
                    var WMm = canw4 * 1.5;
                    var nmV = canw4 / 4;
                    if (sx < canw2) {
                        mWVWv = 1;
                        var VNM = 0;
                        var MVM = 30 * scaleby;
                        MWVNw = Math2d.angle(canw2 - WMm, canh2 + nmV, sx, sy);
                        NVNwm = window.Math.min(Math2d.distance(sx, sy, canw2 - WMm, canh2 + nmV), 25);
                        if (sx < ((canw2 - WMm) - MVM)) VNM |= 1;
                        else if (sx > ((canw2 - WMm) + MVM)) VNM |= 2;
                        if (sy < ((canh2 + nmV) + -MVM)) VNM |= 4;
                        else if (sy > ((canh2 + nmV) + MVM)) VNM |= 8;
                        if (((VNM & 1) === 1) && ((mWM & 1) !== 1)) {
                            keyboard.charCode = 37;
                            vnW(keyboard);
                        } else if (((VNM & 1) !== 1) && ((mWM & 1) === 1)) {
                            keyboard.charCode = 37;
                            NmN(keyboard);
                        }
                        if (((VNM & 2) === 2) && ((mWM & 2) !== 2)) {
                            keyboard.charCode = 39;
                            vnW(keyboard);
                        } else if (((VNM & 2) !== 2) && ((mWM & 2) === 2)) {
                            keyboard.charCode = 39;
                            NmN(keyboard);
                        }
                        if (((VNM & 4) === 4) && ((mWM & 4) !== 4)) {
                            keyboard.charCode = 38;
                            vnW(keyboard);
                        } else if (((VNM & 4) !== 4) && ((mWM & 4) === 4)) {
                            keyboard.charCode = 38;
                            NmN(keyboard);
                        }
                        if (((VNM & 8) === 8) && ((mWM & 8) !== 8)) {
                            keyboard.charCode = 40;
                            vnW(keyboard);
                        } else if (((VNM & 8) !== 8) && ((mWM & 8) === 8)) {
                            keyboard.charCode = 40;
                            NmN(keyboard);
                        }
                        mWM = VNM;
                        continue;
                    } else if ((sx < (canw - (40 * scaleby))) || (sy > (40 * scaleby))) {
                        NVN = 1;
                        mouseX.clientX -= WMm / CanvasUtils.options.ratioX;
                        mouseX.clientY -= nmV / CanvasUtils.options.ratioX;
                        NnVMv = mouseX.clientX;
                        WNmmw = mouseX.clientY;
                        mouseMove(mouseX);
                    }
                }
            }
            if ((NVN === 0) && (mWM === 0)) {
                mouseMove(mouseX);
                NVN = 1;
            }
        }
        if ((mWVWv === 0) && (mWM !== 0)) {
            if (mWM & 1) {
                keyboard.charCode = 37;
                NmN(keyboard);
            }
            if (mWM & 2) {
                keyboard.charCode = 39;
                NmN(keyboard);
            }
            if (mWM & 4) {
                keyboard.charCode = 38;
                NmN(keyboard);
            }
            if (mWM & 8) {
                keyboard.charCode = 40;
                NmN(keyboard);
            }
            mWM = 0;
        }
    };

    function MmNNN() {
        if (isTouchScreen === 0) window.addEventListener('mousedown', mouseDown, false);
        if (isTouchScreen === 0) window.addEventListener('mouseup', mouseUp, false);
        if (isTouchScreen === 0) window.addEventListener('mousemove', mouseMove, false);
        if (isTouchScreen === 0) window.addEventListener('keyup', NmN, false);
        if (isTouchScreen === 0) window.addEventListener('keydown', vnW, false);
        if (isTouchScreen === 1) window.addEventListener('touchstart', touchStart, false);
        if (isTouchScreen === 1) window.addEventListener('touchend', touchEnd, false);
        if (isTouchScreen === 1) window.addEventListener('touchcancel', touchCancel, false);
        if (isTouchScreen === 1) window.addEventListener('touchmove', touchMove, false);
    };

    function VVwMW() {
        if (isTouchScreen === 0) window.removeEventListener('mousedown', mouseDown, false);
        if (isTouchScreen === 0) window.removeEventListener('mouseup', mouseUp, false);
        if (isTouchScreen === 0) window.removeEventListener('mousemove', mouseMove, false);
        if (isTouchScreen === 0) window.removeEventListener('keyup', NmN, false);
        if (isTouchScreen === 0) window.removeEventListener('keydown', vnW, false);
        if (isTouchScreen === 1) window.removeEventListener('touchstart', touchStart, false);
        if (isTouchScreen === 1) window.removeEventListener('touchend', touchEnd, false);
        if (isTouchScreen === 1) window.removeEventListener('touchcancel', touchCancel, false);
        if (isTouchScreen === 1) window.removeEventListener('touchmove', touchMove, false);
    };
    return {
        quit: quit,
        init: init,
        run: run,
        update: update,
        draw: draw
    };
})();


var __COUNTER__ = 1;
var BID = {};
BID.__ROAD_T0B0L0R1__ = __COUNTER__++;
BID.__ROAD_T0B0L1R0__ = __COUNTER__++;
BID.__ROAD_T0B0L1R1__ = __COUNTER__++;
BID.__ROAD_T0B1L0R0__ = __COUNTER__++;
BID.__ROAD_T0B1L0R1__ = __COUNTER__++;
BID.__ROAD_T0B1L1R0__ = __COUNTER__++;
BID.__ROAD_T0B1L1R1__ = __COUNTER__++;
BID.__ROAD_T1B0L0R1__ = __COUNTER__++;
BID.__ROAD_T1B0L1R0__ = __COUNTER__++;
BID.__ROAD_T1B0L1R0__ = __COUNTER__++;
BID.__ROAD_T1B0L1R1__ = __COUNTER__++;
BID.__ROAD_T1B1L0R0__ = __COUNTER__++;
BID.__ROAD_T1B1L0R1__ = __COUNTER__++;
BID.__ROAD_T1B1L1R0__ = __COUNTER__++;
BID.__ROAD_T1B1L1R1__ = __COUNTER__++;
var BUILDINGS = [{}, {
    id: BID.__ROAD_T0B0L0R1__,
    src: "img/road-T0B0L0R1.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 0,
        y: 0,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ],
    alt: [BID.__ROAD_T0B0L0R1__]
}, {
    id: BID.__ROAD_T0B0L1R0__,
    src: "img/road-T0B0L1R0.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 28,
        y: 0,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ],
    alt: [BID.__ROAD_T0B0L1R0_1__, BID.__ROAD_T0B0L1R0_2__]
}, {
    id: BID.__ROAD_T0B0L1R1__,
    src: "img/road-T0B0L1R1.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 56,
        y: 0,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ],
    alt: [BID.__ROAD_T0B0L1R1_1__, BID.__ROAD_T0B0L1R1_2__, BID.__ROAD_T0B0L1R1_3__, BID.__ROAD_T0B0L1R1_4__, BID.__ROAD_T0B0L1R1_5__, BID.__ROAD_T0B0L1R1_6__, BID.__ROAD_T0B0L1R1_7__, BID.__ROAD_T0B0L1R1_8__]
}, {
    id: BID.__ROAD_T0B1L0R0__,
    src: "img/road-T0B1L0R0.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 84,
        y: 0,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ],
    alt: [BID.__ROAD_T0B1L0R0_1__, BID.__ROAD_T0B1L0R0_2__]
}, {
    id: BID.__ROAD_T0B1L0R1__,
    src: "img/road-T0B1L0R1.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 56,
        y: 28,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ]
}, {
    id: BID.__ROAD_T0B1L1R0__,
    src: "img/road-T0B1L1R0.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 0,
        y: 56,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ]
}, {
    id: BID.__ROAD_T0B1L1R1__,
    src: "img/road-T0B1L1R1.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 112,
        y: 0,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ]
}, {
    id: BID.__ROAD_T1B0L0R1__,
    src: "img/road-T1B0L0R0.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 28,
        y: 28,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ]
}, {
    id: BID.__ROAD_T1B0L1R0__,
    src: "img/road-T1B0L0R1.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 56,
        y: 56,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ]
}, {
    id: BID.__ROAD_T1B0L1R0__,
    src: "img/road-T1B0L1R0.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 84,
        y: 56,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ]
}, {
    id: BID.__ROAD_T1B0L1R1__,
    src: "img/road-T1B0L1R1.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 84,
        y: 28,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ]
}, {
    id: BID.__ROAD_T1B1L0R0__,
    src: "img/road-T1B1L0R0.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 112,
        y: 56,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ]
}, {
    id: BID.__ROAD_T1B1L0R1__,
    src: "img/road-T1B1L0R1.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 112,
        y: 28,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ]
}, {
    id: BID.__ROAD_T1B1L1R0__,
    src: "img/road-T1B1L1R0.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 0,
        y: 28,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ]
}, {
    id: BID.__ROAD_T1B1L1R1__,
    src: "img/road-T1B1L1R1.png",
    img: {
        isLoaded: 0
    },
    minimap: {
        x: 28,
        y: 56,
        h: 28,
        w: 28
    },
    grid: [
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]
    ],
    alt: [BID.__ROAD_T1B1L1R1_1__, BID.__ROAD_T1B1L1R1_2__]
}];
try {
    if (exports !== window.undefined) {
        exports.BID = BID;
        exports.BUILDINGS = BUILDINGS;
    }
} catch (error) {}

    var Render = (function() {
        var __TILE_SIZE__   = 100;      
        var __TILE_SIZE2__  = __TILE_SIZE__ / 2; 
        var __TILE_SCALE__  = 1;
        var NVmMW = 13;
        var WnWvv = 9;
        var WwmVw = 100;
        var WMNWw = 0.025; 
        var NMmmm = 0; 
        var VmNmN = 0.01;
        var NmMvvvN = 0.008;
        var worldWidth = 0;
        var worldWidthFull = 0;
        var worldHeightFull = 0;
        var worldHeight = 0;
        var NnvWw = 3;
        var nwMnv = 0;
        var vnvWWnW = 0;
        var vvVMV = 0;
        var VnvWV = 0;
        var vvNWNnN = 450;
        var Width_410 = 410;
        var Height_410 = Width_410;
        var wVNMN = 412 / 8;
        var NnWnv = 0;
        var IMG_MAP_BORDER      = "img/borderBigMinimap2.png";
        var IMG_MAP_ARROW       = "img/arrow-minimap.png";
        var IMG_MAP_ARROW2      = "img/arrow-minimap2.png";
        var IMG_HOUSE_ICON      = "img/house-icon.png";
        var IMG_CITY_ICON       = "img/city-icon.png";
        var IMG_INV_EMPTY       = "img/inv-empty.png";
        var IMG_LOOT            = "img/loot.png";
        var IMG_LOOT_TOUCH      = "img/loot-isTouchScreen.png";
        var IMG_LOOT2           = "img/loot2.png";
        var IMG_TIMER           = "img/timer.png";
        var IMG_CRAFT_GRID      = "img/craft-grid.png";
        var IMG_TIMER_ARROW     = "img/timer-arrow.png";
        var IMG_TIMER_LIGHTS    = "img/timer-lights.png";
        var IMG_HINT_ROTATE     = "img/hint-rotate.png";
        var IMG_DAY_UNUSABLE    = "img/day-unusable.png";
        var IMG_DAY_CLOCK       = "img/day-clock.png";
        var IMG_NIGHT_CLOCK     = "img/night-clock.png";
        var IMG_CLOCK_HAND      = "img/clock-hand.png";
        var IMG_CLOCK_HAND_RAD  = "img/clock-hand-radiation.png";
        var IMG_DAY_CLOCK_HAND  = "img/day-clock-hand.png";
        var IMG_CRAFT_GAUGE     = "img/craft-gauge.png";
        var IMG_STROKE_BONUS    = "img/stroke-bonus.png";
        var IMG_WRONG_TOOL      = "img/wrong-tool.png";
        var IMG_HAND_TOOL       = "img/hand-tool.png";
        var IMG_ARROW_CRAFT     = "img/arrow-craft.png";
        var IMG_UNLOCK_SKILLS   = "img/unlock-skills.png";
        var IMG_SERVER_FULL     = "img/server-full.png";
        var IMG_SERVER_OLD      = "img/server-old.png";
        var IMG_CLIENT_OLD      = "img/client-old.png";
        var IMG_SERVER_WRONG    = "img/server-wrong.png";
        var IMG_INVITATION_BOX  = "img/invitation-box.png";
        var IMG_TIME_BOX        = "img/time-box.png";
        var IMG_RANK_BOX        = "img/rank-box.png";
        var IMG_TOXIC_ALERT     = "img/toxic-alert.png";
        var IMG_RAD_ALERT       = "img/radiation-alert.png";
        var Mvvwv = 500;
        var mVmWm = 256;
        var mMmvV = 500;
        var WWn = window.Math.floor(mVmWm / 2);
        var nWWwM = window.Math.floor(WWn / 2);
        var IMG_ALERT = "img/alert";
        var Vwwmw = 699;
        var nvnwM = 738;
        var COLOR_LIGHTGREEN    = "#70BD56";
        var COLOR_ORANGE        = "#e58833";
        var COLOR_LIGHTBLUE     = "#55B7BC";
        var COLOR_YELLOW        = "#d7c83a";
        var COLOR_WHITE         = "#FFFFFF";
        var Mvnwm = 3000;
        var mmWWw = 500;
        var WWMnN = 2500;
        var PI2 = window.Math.PI * 2;
        var PIby2 = window.Math.PI / 2;
        var mWvNn = window.Math.PI / World.__DAY__;
        var LEFT = 1;
        var RIGHT = 2;
        var TOP = 4;
        var DOWN = 8;
        var MMn = 16;
        var nNn = 32;
        var Nvn = 64;
        var nwM = 128;
        var mMwmm = 0;
        var NVW = 1;
        var mWn = 2;
        var WMN = 4;
        var wwm = 8;
        var MwnMm = 0;
        var NNvnn = 1;
        var MnVmm = 2;
        var WnmmN = 3;
        var vNw = [
            [],
            [],
            [],
            []
        ];
        vNw[MwnMm][mMwmm] = 0;
        vNw[MwnMm][NVW] = 3;
        vNw[MwnMm][mWn] = 6;
        vNw[MwnMm][WMN | wwm] = 9;
        vNw[MwnMm][WMN] = 4;
        vNw[MwnMm][wwm] = 5;
        vNw[MwnMm][NVW | WMN] = 27;
        vNw[MwnMm][NVW | wwm] = 20;
        vNw[MwnMm][mWn | WMN] = 7;
        vNw[MwnMm][mWn | wwm] = 28;
        vNw[MwnMm][(NVW | WMN) | wwm] = 24;
        vNw[MwnMm][(mWn | WMN) | wwm] = 29;
        vNw[MnVmm][mMwmm] = 0;
        vNw[MnVmm][NVW] = 3;
        vNw[MnVmm][mWn] = 6;
        vNw[MnVmm][WMN | wwm] = 9;
        vNw[MnVmm][WMN] = 4;
        vNw[MnVmm][wwm] = 5;
        vNw[MnVmm][NVW | WMN] = 27;
        vNw[MnVmm][NVW | wwm] = 20;
        vNw[MnVmm][mWn | WMN] = 7;
        vNw[MnVmm][mWn | wwm] = 28;
        vNw[MnVmm][(NVW | WMN) | wwm] = 24;
        vNw[MnVmm][(mWn | WMN) | wwm] = 29;
        vNw[NNvnn][mMwmm] = 11;
        vNw[NNvnn][NVW] = 12;
        vNw[NNvnn][mWn] = 17;
        vNw[NNvnn][WMN | wwm] = 10;
        vNw[NNvnn][WMN] = 19;
        vNw[NNvnn][wwm] = 18;
        vNw[NNvnn][NVW | WMN] = 34;
        vNw[NNvnn][NVW | wwm] = 22;
        vNw[NNvnn][mWn | WMN] = 23;
        vNw[NNvnn][mWn | wwm] = 33;
        vNw[NNvnn][(NVW | WMN) | wwm] = 35;
        vNw[NNvnn][(mWn | WMN) | wwm] = 32;
        vNw[WnmmN][mMwmm] = 11;
        vNw[WnmmN][NVW] = 15;
        vNw[WnmmN][mWn] = 14;
        vNw[WnmmN][WMN | wwm] = 10;
        vNw[WnmmN][WMN] = 19;
        vNw[WnmmN][wwm] = 18;
        vNw[WnmmN][NVW | WMN] = 37;
        vNw[WnmmN][NVW | wwm] = 16;
        vNw[WnmmN][mWn | WMN] = 23;
        vNw[WnmmN][mWn | wwm] = 38;
        vNw[WnmmN][(NVW | WMN) | wwm] = 36;
        vNw[WnmmN][(mWn | WMN) | wwm] = 39;
        var WMV = [];
        WMV[0] = 0;
        WMV[LEFT] = 3;
        WMV[RIGHT] = 4;
        WMV[TOP] = 2;
        WMV[DOWN] = 1;
        WMV[LEFT | TOP] = 17;
        WMV[LEFT | RIGHT] = 5;
        WMV[LEFT | DOWN] = 18;
        WMV[RIGHT | TOP] = 16;
        WMV[RIGHT | DOWN] = 19;
        WMV[TOP | DOWN] = 6;
        WMV[(LEFT | TOP) | DOWN] = 10;
        WMV[(LEFT | TOP) | RIGHT] = 9;
        WMV[(DOWN | TOP) | RIGHT] = 11;
        WMV[(LEFT | DOWN) | RIGHT] = 8;
        WMV[((LEFT | TOP) | RIGHT) | DOWN] = 7;
        WMV[(DOWN | RIGHT) | MMn] = 12;
        WMV[(DOWN | LEFT) | nNn] = 13;
        WMV[(TOP | LEFT) | nwM] = 14;
        WMV[(TOP | RIGHT) | Nvn] = 15;
        WMV[((TOP | DOWN) | RIGHT) | MMn] = 20;
        WMV[(((TOP | DOWN) | RIGHT) | LEFT) | MMn] = 21;
        WMV[((LEFT | DOWN) | RIGHT) | MMn] = 22;
        WMV[(((TOP | DOWN) | RIGHT) | LEFT) | Nvn] = 23;
        WMV[((LEFT | TOP) | RIGHT) | Nvn] = 24;
        WMV[((TOP | DOWN) | RIGHT) | Nvn] = 25;
        WMV[((TOP | DOWN) | LEFT) | nwM] = 26;
        WMV[(((TOP | DOWN) | RIGHT) | LEFT) | nwM] = 27;
        WMV[((TOP | RIGHT) | LEFT) | nwM] = 28;
        WMV[((DOWN | RIGHT) | LEFT) | nNn] = 29;
        WMV[(((TOP | DOWN) | RIGHT) | LEFT) | nNn] = 30;
        WMV[((TOP | DOWN) | LEFT) | nNn] = 31;
        WMV[((((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | MMn) | nwM) | Nvn] = 32;
        WMV[((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | nwM] = 33;
        WMV[((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | MMn] = 34;
        WMV[((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | Nvn] = 35;
        WMV[((((TOP | DOWN) | RIGHT) | LEFT) | MMn) | nwM] = 36;
        WMV[((((TOP | DOWN) | RIGHT) | LEFT) | Nvn) | MMn] = 37;
        WMV[((((TOP | DOWN) | RIGHT) | LEFT) | Nvn) | nwM] = 38;
        WMV[(((TOP | DOWN) | RIGHT) | Nvn) | MMn] = 39;
        WMV[(((TOP | DOWN) | LEFT) | nwM) | nNn] = 40;
        WMV[(((RIGHT | DOWN) | LEFT) | MMn) | nNn] = 41;
        WMV[(((RIGHT | TOP) | LEFT) | Nvn) | nwM] = 42;
        WMV[(((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | nwM) | Nvn] = 43;
        WMV[(((((TOP | DOWN) | RIGHT) | LEFT) | MMn) | nwM) | Nvn] = 44;
        WMV[(((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | MMn) | Nvn] = 45;
        WMV[(((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | MMn) | nwM] = 46;
        var wnNWM = 600;
        var i, j;
        var vertst = 0;
        var horist = 0;
        var NmM = 0;
        var WWV = 0;
        var NVVWM = 0;
        var WVNMV = 0;
        var vvWnv = 0;
        var Nvmmn = 0;
        var vwMWM = VmNmN;
        var WvmnV = 0;
        var oldscale = 0;
        var vMnmV = [];
        for (i = 0; i < 20; i++) vMnmV[i] = {
            isLoaded: 0
        };
        var setParticles = 2;
        var vMnnw = [];
        var matrix = [];
        var wWmnn = NVmMW;
        var VmvVW = WnWvv;
        var NmWnM = [];
        var inventorySlot = {
            isLoaded: 0
        };
        var hintRotate = {
            isLoaded: 0
        };
        var wnW = {
            move: 0,
            effect: 0,
            src: IMG_ARROW_CRAFT,
            img: {
                isLoaded: 0
            }
        };
        var wvV = {
            move: 0,
            effect: 0,
            src: IMG_UNLOCK_SKILLS,
            img: {
                isLoaded: 0
            }
        };
        var timeleft = {
            src: IMG_TIME_BOX,
            img: {
                isLoaded: 0
            }
        };
        var WvWnV = {
            src: IMG_RANK_BOX,
            img: {
                isLoaded: 0
            }
        };
        var WWmMW = {
            src: IMG_TOXIC_ALERT,
            img: {
                isLoaded: 0
            }
        };
        var shakeMagnitude = 0;
        var VmWNN = {
            src: IMG_RAD_ALERT,
            img: {
                isLoaded: 0
            }
        };
        var WNmVW = 0;
        var ICON_E_FURNITURE = {
            src: "img/e-furniture.png",
            img: {
                isLoaded: 0
            }
        };
        var IMG_TOXIC_AREA2 = CanvasUtils.loadImage("img/toxic-area2.png");
        var IMG_TOXIC_AREA3 = CanvasUtils.loadImage("img/toxic-area3.png");
        var wVVVn = [];
        var playerAlive = [];
        var wmvVw = {
            isLoaded: 0
        };
        var arv = {
            isLoaded: 0
        };
        var nMWVv = {
            isLoaded: 0
        };
        var VWvVN = {
            isLoaded: 0
        };
        var NNmMN = [0, 0, 0, 0];
        var WwmVM = NMmmm;
        var WvnvV = [];
        var pplonscr = 0;
        var useTimer = {
            isLoaded: 0
        };
        var arrow = {
            isLoaded: 0
        };
        var lights = {
            isLoaded: 0
        };
        var WMWvN = mMmvV;
        var wWNmv = {
            isLoaded: 0
        };
        var craftGauge = {
            isLoaded: 0
        };
        var STROKE_BONUS = {
            src: IMG_STROKE_BONUS,
            img: {
                isLoaded: 0
            }
        };
        var VnwNw = 0;
        var wrongTool = {
            src: IMG_WRONG_TOOL,
            img: {
                isLoaded: 0
            }
        };
        var vwnWv = {
            src: IMG_HAND_TOOL,
            img: {
                isLoaded: 0
            }
        };
        var nearestDistance = 12000;
        var distance12k = 12000;
        var wVMNN = [];
        for (i = 0; i < 10; i++) {
            wVMNN[i] = [];
            for (j = 0; j < 3; j++) wVMNN[i][j] = {
                isLoaded: 0
            };
        };
        var effect = [];
        for (i = 0; i < 8; i++) {
            effect[i] = [];
            for (j = 0; j < 2; j++) effect[i][j] = {
                isLoaded: 0
            };
        }
        var arrowiconmap2 = {
            src: IMG_MAP_ARROW,
            img: {
                isLoaded: 0
            }
        };
        var arrowiconmap = {
            src: IMG_MAP_ARROW2,
            img: {
                isLoaded: 0
            }
        };
        var minimap = {
            isLoaded: 0
        };
        var houseiconmap = {
            src: IMG_HOUSE_ICON,
            img: {
                isLoaded: 0
            }
        };
        var cityiconmap = {
            src: IMG_CITY_ICON,
            img: {
                isLoaded: 0
            }
        };
        var WmVNn = {
            src: IMG_NIGHT_CLOCK,
            img: {
                isLoaded: 0
            }
        };
        var nvvVW = {
            src: IMG_DAY_CLOCK,
            img: {
                isLoaded: 0
            }
        };
        var nMmvV = {
            src: IMG_CLOCK_HAND,
            img: {
                isLoaded: 0
            }
        };
        var VWmVV = {
            src: IMG_DAY_CLOCK_HAND,
            img: {
                isLoaded: 0
            }
        };
        var wmmvv = {
            src: IMG_CLOCK_HAND_RAD,
            img: {
                isLoaded: 0
            }
        };
        var alertFull = {
            src: IMG_SERVER_FULL,
            img: {
                isLoaded: 0
            }
        };
        var alertServerOld = {
            src: IMG_SERVER_OLD,
            img: {
                isLoaded: 0
            }
        };
        var alertClientOld = {
            src: IMG_CLIENT_OLD,
            img: {
                isLoaded: 0
            }
        };
        var alertServerWrong = {
            src: IMG_SERVER_WRONG,
            img: {
                isLoaded: 0
            }
        };
        var teambox = {
            isLoaded: 0
        };
        var wwvmV = [];
        for (i = 0; i < 20; i++) wwvmV.push({
            isLoaded: 0
        });
        var canvasZ = window.document.createElement('canvas');
        var context2dZ = canvasZ.getContext('2d');
        canvasZ.width = Width_410;
        canvasZ.height = Height_410;
        canvasZ.isLoaded = 1;
        canvasZ.wh = canvasZ.width / 2;
        canvasZ.h2 = canvasZ.height / 2;
        var MWNMV = {
            img: canvasZ
        };
        var canvasD = window.document.createElement('canvas');
        var context2dD = canvasD.getContext('2d');
        canvasD.width = Width_410;
        canvasD.height = Height_410;
        canvasD.isLoaded = 1;
        canvasD.wh = canvasZ.width / 2;
        canvasD.h2 = canvasZ.height / 2;
        var MMvWn = {
            img: canvasD
        };
        var mWWwn = 0;

        function _BattleRoyale() {
            if (World.PLAYER.toxicStep === 8) {
                context2dZ.clearRect(0, 0, Width_410, Height_410);
                context2dD.clearRect(0, 0, Width_410, Height_410);
                for (var i = 0; i < 8; i++) {
                    for (var j = 0; j < 8; j++) {
                        var wVvnN = World.PLAYER.toxicMap[i][j];
                        if (wVvnN === 7) context2dZ.drawImage(IMG_TOXIC_AREA2, 2 + (j * wVNMN), (i * wVNMN) + 1, IMG_TOXIC_AREA2.wh, IMG_TOXIC_AREA2.h2);
                        else context2dZ.drawImage(IMG_TOXIC_AREA3, 2 + (j * wVNMN), (i * wVNMN) + 1, IMG_TOXIC_AREA2.wh, IMG_TOXIC_AREA2.h2);
                    }
                }
            } else {
                context2dZ.drawImage(canvasD, 0, 0);
                context2dD.clearRect(0, 0, Width_410, Height_410);
                for (var k = 0; k < 12; k++) {
                    var area = World.PLAYER.lastAreas[k];
                    var i = area[0];
                    var j = area[1];
                    if (i === -1) continue;
                    context2dD.drawImage(IMG_TOXIC_AREA2, 2 + (j * wVNMN), (i * wVNMN) + 1, IMG_TOXIC_AREA2.wh, IMG_TOXIC_AREA2.h2);
                }
            };
        };
        var canvasF = window.document.createElement('canvas');
        var context2dF = canvasF.getContext('2d');
        canvasF.width = Vwwmw;
        canvasF.height = nvnwM;
        soundLimit = [];
        for (var i = 0; i < 9; i++) soundLimit[i] = 0;
        var frameId = 0;
        for (i = 0; i < WnWvv; i++) {
            vMnnw[i] = [];
            for (var j = 0; j < NVmMW; j++) vMnnw[i][j] = 0;
        }
        var canvasG = window.document.createElement("canvas");
        var context2dG = canvasG.getContext("2d");
        canvasG.width = 280;
        canvasG.height = 148;
        var mwwNm = -1;
        var canvasElements = [];
        var canvasContexts = [];
        var skillPoint = window.document.createElement("canvas");
        var context2H = skillPoint.getContext("2d");
        skillPoint.width = 280;
        skillPoint.height = 50;
        var wmmVm = -1;
        var canvasJ = window.document.createElement("canvas");
        var context2J = canvasJ.getContext("2d");
        canvasJ.width = 420;
        canvasJ.height = 148;
        var MMNWW = -1;

        function MmmnN() {
            this.wallFrame  = 0;
            this.floorFrame = 0;
            this.drawFloor  = 0;
            this.tile       = 0;
            this.wall       = 0;
            this.frameId    = 0;
            this.ground     = 0;
            this.pid        = 0;
            this.tilePid    = 0;
            this.category   = 0;
            this.i          = 0;
            this.b          = [];
            this.rotate     = 0;
            for (var i = 0; i < 3; i++) this.b.push({
                type: 0,
                cycle: 0
            });
        };

        function wmNMv(player, rotation) {
            if ((player.hurt > 0) || (player.removed !== 0)) return 0;
            var i = player.i;
            var j = player.j;
            var type = player.extra >> 7;
            var id = 0;
            switch (rotation) {
                case 0:
                    if ((i + 1) < worldHeight) {
                        var VMV = matrix[i + 1][j];
                        if ((VMV.wallFrame === frameId) && (VMV.wall === type)) {
                            if (VMV.rotate === 1) id += NVW;
                            else if (VMV.rotate === 3) id += mWn;
                        }
                    }
                    if ((j - 1) >= 0) {
                        var VMV = matrix[i][j - 1];
                        if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 3) || (VMV.rotate === 0))) id += WMN;
                    }
                    if ((j + 1) < worldWidth) {
                        var VMV = matrix[i][j + 1];
                        if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 1) || (VMV.rotate === 0))) id += wwm;
                    }
                    break;
                case 1:
                    if ((j - 1) >= 0) {
                        var VMV = matrix[i][j - 1];
                        if ((VMV.wallFrame === frameId) && (VMV.wall === type)) {
                            if (VMV.rotate === 0) id += mWn;
                            else if (VMV.rotate === 2) id += NVW;
                        }
                    }
                    if ((i - 1) >= 0) {
                        var VMV = matrix[i - 1][j];
                        if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 0) || (VMV.rotate === 1))) id += WMN;
                    }
                    if ((i + 1) < worldHeight) {
                        var VMV = matrix[i + 1][j];
                        if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 2) || (VMV.rotate === 1))) id += wwm;
                    }
                    break;
                case 2:
                    if ((i - 1) >= 0) {
                        var VMV = matrix[i - 1][j];
                        if ((VMV.wallFrame === frameId) && (VMV.wall === type)) {
                            if (VMV.rotate === 1) id += mWn;
                            else if (VMV.rotate === 3) id += NVW;
                        }
                    }
                    if ((j - 1) >= 0) {
                        var VMV = matrix[i][j - 1];
                        if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 3) || (VMV.rotate === 2))) id += wwm;
                    }
                    if ((j + 1) < worldWidth) {
                        var VMV = matrix[i][j + 1];
                        if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 1) || (VMV.rotate === 2))) id += WMN;
                    }
                    break;
                case 3:
                    if ((j + 1) < worldWidth) {
                        var VMV = matrix[i][j + 1];
                        if ((VMV.wallFrame === frameId) && (VMV.wall === type)) {
                            if (VMV.rotate === 0) id += NVW;
                            else if (VMV.rotate === 2) id += mWn;
                        }
                    }
                    if ((i - 1) >= 0) {
                        var VMV = matrix[i - 1][j];
                        if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 0) || (VMV.rotate === 3))) id += wwm;
                    }
                    if ((i + 1) < worldHeight) {
                        var VMV = matrix[i + 1][j];
                        if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 2) || (VMV.rotate === 3))) id += WMN;
                    }
                    break;
            }
            return vNw[rotation][id];
        };

        function Wwmwm(player) {
            if ((player.hurt > 0) || (player.removed !== 0)) return 0; 
            var i = player.i;
            var j = player.j;
            var type = player.extra >> 7;
            var id = 0;
            var N = 0,
                t = 0,
                M = 0,
                l = 0;
            if ((i - 1) >= 0) {
                var VMV = matrix[i - 1][j];
                if (VMV.floorFrame === frameId) {
                    t = 1;
                    id += TOP;
                }
            }
            if ((i + 1) < worldHeight) {
                var VMV = matrix[i + 1][j];
                if (VMV.floorFrame === frameId) {
                    id += DOWN;
                    M = 1;
                }
            }
            if ((j - 1) >= 0) {
                var VMV = matrix[i][j - 1];
                if (VMV.floorFrame === frameId) {
                    id += LEFT;
                    l = 1;
                }
            }
            if ((j + 1) < worldWidth) {
                var VMV = matrix[i][j + 1];
                if (VMV.floorFrame === frameId) {
                    id += RIGHT;
                    N = 1;
                }
            }
            if ((N + t) === 2) {
                var VMV = matrix[i - 1][j + 1];
                if (VMV.floorFrame === frameId) id += Nvn;
            }
            if ((l + t) === 2) {
                var VMV = matrix[i - 1][j - 1];
                if (VMV.floorFrame === frameId) id += nwM;
            }
            if ((M + N) === 2) {
                var VMV = matrix[i + 1][j + 1];
                if (VMV.floorFrame === frameId) id += MMn;
            }
            if ((M + l) === 2) {
                var VMV = matrix[i + 1][j - 1];
                if (VMV.floorFrame === frameId) id += nNn;
            }
            return WMV[id];
        };

        function WwmwN(player) {
            if ((player.hurt > 0) || (player.removed !== 0)) return 0;
            var i = player.i;
            var j = player.j;
            var wall = INVENTORY[player.extra >> 7];
            var type = wall.idWall;
            var id = 0;
            var N = 0,
                t = 0,
                M = 0,
                l = 0;
            if ((i - 1) >= 0) {
                var VMV = matrix[i - 1][j];
                if ((VMV.wallFrame === frameId) && (VMV.wall === type)) {
                    t = 1;
                    id += TOP;
                }
            }
            if ((i + 1) < worldHeight) {
                var VMV = matrix[i + 1][j];
                if ((VMV.wallFrame === frameId) && (VMV.wall === type)) {
                    id += DOWN;
                    M = 1;
                }
            }
            if ((j - 1) >= 0) {
                var VMV = matrix[i][j - 1];
                if ((VMV.wallFrame === frameId) && (VMV.wall === type)) {
                    id += LEFT;
                    l = 1;
                }
            }
            if ((j + 1) < worldWidth) {
                var VMV = matrix[i][j + 1];
                if ((VMV.wallFrame === frameId) && (VMV.wall === type)) {
                    id += RIGHT;
                    N = 1;
                }
            }
            if ((N + t) === 2) {
                var VMV = matrix[i - 1][j + 1];
                if ((VMV.wallFrame === frameId) && (VMV.wall === type)) id += Nvn;
            }
            if ((l + t) === 2) {
                var VMV = matrix[i - 1][j - 1];
                if ((VMV.wallFrame === frameId) && (VMV.wall === type)) id += nwM;
            }
            if ((M + N) === 2) {
                var VMV = matrix[i + 1][j + 1];
                if ((VMV.wallFrame === frameId) && (VMV.wall === type)) id += MMn;
            }
            if ((M + l) === 2) {
                var VMV = matrix[i + 1][j - 1];
                if ((VMV.wallFrame === frameId) && (VMV.wall === type)) id += nNn;
            }
            var id = WMV[id];
            matrix[i][j].drawFloor = wall.drawFloor[id];
            return id;
        };

        function _wallConnect(player) {
            var type = player.extra >> 7;
            if (((INVENTORY[type].lowWall !== 1) || (player.hurt > 0)) || (player.broke > 0)) return;
            var VMV = matrix[player.i][player.j];
            VMV.wallFrame = frameId;
            VMV.wall = type;
            VMV.rotate = (player.extra >> 5) & 3;
        };

        function _bigWallConnect(player) {
            var type = player.extra >> 7;
            if (((INVENTORY[type].wall !== 1) || (player.hurt > 0)) || (player.broke > 0)) return;
            var VMV = matrix[player.i][player.j];
            VMV.wallFrame = frameId;
            VMV.wall = INVENTORY[type].idWall;
            if (World.PLAYER._j === player.j) {
                var distance = window.Math.max(1, window.Math.abs(World.PLAYER._i - player.i));
                if (World.PLAYER._i < player.i) NNmMN[0] = WwmVM / distance;
                else NNmMN[1] = WwmVM / distance;
            } else if (World.PLAYER._i === player.i) {
                var distance = window.Math.max(1, window.Math.abs(World.PLAYER._j - player.j));
                if (World.PLAYER._j < player.j) NNmMN[2] = WwmVM / distance;
                else NNmMN[3] = WwmVM / distance;
            }
        };

        function _floorConnect(player) {
            var type = player.extra >> 7;
            if (((INVENTORY[type].wall !== 1) || (player.hurt > 0)) || (player.broke > 0)) return;
            var VMV = matrix[player.i][player.j];
            VMV.floorFrame = frameId;
        };

        function MmnMv(player, cycle) {
            var i = player.i;
            var j = player.j;
            var VMV = matrix[i][j];
            if (VMV.frameId === frameId) {
                if (VMV.i < 3) {
                    var M = VMV.b[VMV.i];
                    VMV.i += 1;
                    M.type = player.type;
                    M.cycle = cycle;
                }
            } else {
                VMV.frameId = frameId;
                var M = VMV.b[0];
                VMV.i = 1;
                M.type = player.type;
                M.cycle = cycle;
            }
        };

        function _Reset(wVNwM, MMnVM, VmNwV) {
            handleResize = window.document.getElementById("bod").onresize;
            if (World.gameMode === World.__BR__) {
                context2dZ.clearRect(0, 0, Width_410, Width_410);
                context2dD.clearRect(0, 0, Width_410, Width_410);
                shakeMagnitude = 0;
            }
            WNmVW = 0;
            Render.explosionShake = 0;
            Render.shake = 0;
            if (wVNwM !== window.undefined) WMWvN = 0;
            else WMWvN = mMmvV;
            if (VmNwV !== window.undefined) vwMWM = VmNwV;
            else vwMWM = VmNmN;
            if (MMnVM !== window.undefined) WwmVM = MMnVM;
            else WwmVM = NMmmm;
            NmM = 0;
            WWV = 0;
            World.PLAYER.x = 0;
            World.PLAYER.y = 0;
            World.PLAYER._i = 0;
            World.PLAYER._j = 0;
            wnW.effect = 0;
            wnW.move = 0;
            wvV.effect = 0;
            wvV.move = 0;
            PARTICLE.id = -1;
            PARTICLE.uid = -1;
            var value = localStorage2.getItem("particles");
            if (value !== null) setParticles = window.Number(value);
            teamName = "";
            nNmVw = null;
            MapManager.width = 150;
            MapManager.height = 150;
            Render.__TRANSFORM__ = (MapManager.width * 100) / 255;
            worldWidth = MapManager.width;
            worldHeight = MapManager.height;
            worldWidthFull = __TILE_SIZE__ * worldWidth;
            worldHeightFull = __TILE_SIZE__ * worldHeight;
            nwMnv = 824 / worldWidthFull;
            vvVMV = 824 - mVmWm;
            VnvWV = vvVMV + WWn;
            NnWnv = worldWidthFull / 8;
            World.setSizeWorld(worldWidth, worldHeight);
            for (var i = 0; i < worldHeight; i++) {
                matrix[i] = [];
                for (var j = 0; j < worldWidth; j++) matrix[i][j] = new MmmnN;
            }
            var len = Entitie.units[0].length;
            for (i = 0; i < len; i++) WvnvV[i] = null;
        };


        function _buttonInv(wm, invtr, offsetX, offsetY, inventoryItemNumber, inventoryAmmoNumber) {
            wm.pos.x = offsetX;
            wm.pos.y = offsetY;
            wm.draw();
            var item = INVENTORY[invtr[0]];
            var amount = invtr[1];
            if (amount > 1) {
                if (inventoryItemNumber[amount] === window.undefined) {
                    inventoryItemNumber[amount] = {
                        img: GUI.renderText("x" + amount, "'Black Han Sans', sans-serif", "#ffffff", 30, 250, window.undefined, 15, 12, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12)
                    };
                    inventoryItemNumber[amount].img.isLoaded = 1;
                }
                CanvasUtils.drawImageHd(inventoryItemNumber[amount], (offsetX / scaleby) + 53, (offsetY / scaleby) + 55, -0.5, 0, 0, 1);
            }
            if ((item.bullet !== window.undefined) && (item.mMVwm === window.undefined)) {
                var amount = invtr[3];
                if (inventoryAmmoNumber[amount] === window.undefined) {
                    inventoryAmmoNumber[amount] = {
                        img: GUI.renderText("x" + amount, "'Black Han Sans', sans-serif", "#FFFF00", 30, 250, window.undefined, 15, 12, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12)
                    };
                    inventoryAmmoNumber[amount].img.isLoaded = 1;
                }
                CanvasUtils.drawImageHd(inventoryAmmoNumber[amount], (offsetX / scaleby) + 53, (offsetY / scaleby) + 55, -0.5, 0, 0, 1);
            }
            if (item.perish !== window.undefined) {
                var VWNwv = window.Math.floor(invtr[3] / 12.8);
                var img = wwvmV[VWNwv];
                if (img.isLoaded !== 1) {
                    wwvmV[VWNwv] = CanvasUtils.loadImage(("img/rotten" + VWNwv) + ".png", img);
                } else ctx.drawImage(img, offsetX + (0.5 * scaleby), offsetY, (scaleby * img.width) / 2, (scaleby * img.height) / 2);
            }
        };

        function drawDarkBox(id, offsetX, offsetY) {
            if (canvasElements[id] === window.undefined) {
                canvasElements[id] = window.document.createElement("canvas");
                canvasContexts[id] = canvasElements[id].getContext("2d");
                var canvas = canvasElements[id];
                var context = canvasContexts[id];
                canvas.width = 400;
                canvas.height = 148;
                context.clearRect(0, 0, 400, 148);
                CanvasUtils.roundRect(context, 0, 0, 400, 148, 10);
                context.fillStyle = "#000000";
                context.globalAlpha = 0.5;
                context.fill();
                context.globalAlpha = 1;
                itemstatsfunc(context, id);
            }
    
            var height = scaleby * 74;
            ctx.drawImage(canvasElements[id], offsetX, offsetY, scaleby * 190, height);
        };

        function drawDarkBox2(building, offsetX, offsetY) {
            var id = building.id;
            if (canvasElements[id] === window.undefined) {
                canvasElements[id] = window.document.createElement("canvas");
                canvasContexts[id] = canvasElements[id].getContext("2d");
                var canvas = canvasElements[id];
                var context = canvasContexts[id];
                canvas.width = 400;
                canvas.height = 148;
                context.clearRect(0, 0, 400, 148);
                CanvasUtils.roundRect(context, 0, 0, 400, 148, 10);
                context.fillStyle = "#000000";
                context.globalAlpha = 0.5;
                context.fill();
                context.globalAlpha = 1;
                BuildingStats(context, building);
            }
            var height = scaleby * 74;
            ctx.drawImage(canvasElements[id], offsetX, offsetY, scaleby * 190, height);
        };

        function _Inventory(inventoryItemNumber, inventoryAmmoNumber, MmV, BUTTON_BAG) {
            //if (World.PLAYER.ghoul !== 0) return;
            var inventory = Game.inventory;
            if (inventorySlot.isLoaded !== 1) {
                inventorySlot = CanvasUtils.loadImage(IMG_INV_EMPTY, inventorySlot);
                return;
            } 
            var invtr = World.PLAYER.inventory;
            var len = invtr.length;
            var width = (inventorySlot.width * scaleby) / 2;
            var height = (inventorySlot.height * scaleby) / 2;
            var _x = window.Math.max(300 * scaleby, (canw - (width * len)) / 2);
            var _y = (canh - height) - (5 * scaleby);
            var offsetX = _x;
            var offsetY = _y;
            var MVM = (5 * scaleby) + width;
            if (len > 10) {
                BUTTON_BAG.pos.x = canw - (69 * scaleby);
                BUTTON_BAG.pos.y = canh - (68 * scaleby);
                BUTTON_BAG.draw();
                if (BUTTON_BAG.open === 0) len = 10;
            }
            for (var i = 0; i < len; i++) {
                var wm = inventory[i];
                if (invtr[i][0] === 0) {
                    wm.pos.x = offsetX;
                    wm.pos.y = offsetY;
                    ctx.drawImage(inventorySlot, offsetX, offsetY, width, height);
                } else _buttonInv(wm, invtr[i], offsetX, offsetY, inventoryItemNumber, inventoryAmmoNumber);
                if (i === 9) {
                    offsetX = BUTTON_BAG.pos.x - (5 * scaleby);
                    offsetY = BUTTON_BAG.pos.y - MVM;
                } else if (i === 12) {
                    offsetX -= MVM;
                    offsetY = BUTTON_BAG.pos.y - MVM;
                } else if (i > 9) offsetY -= MVM;
                else offsetX += MVM;
            }
            var drag = World.PLAYER.drag;
            if (((drag.begin === 1) && (Mouse.state === Mouse.__MOUSE_DOWN__)) && (Math2d.distance(drag.x, drag.y, Mouse.x, Mouse.y) > (4 * scaleby))) {
                var IID = invtr[drag.id][0];
                if (IID > 0) {
                    var img = INVENTORY[IID].itemButton.img[0];
                    if (img.isLoaded === 0) img = INVENTORY2[IID].itemButton.img[0];
                    ctx.globalAlpha = 0.7;
                    var width = 68 * scaleby;
                    ctx.drawImage(img, (Mouse.x * scaleby) - (width / 2), (Mouse.y * scaleby) - (width / 2), width, width);
                    ctx.globalAlpha = 1;
                }
            } else if ((MmV !== -1) && (invtr[MmV][0] !== 0)) {
                if (MmV < 10) drawDarkBox(invtr[MmV][0], _x + (MVM * MmV), _y - (79 * scaleby));
                else if (MmV < 13) drawDarkBox(invtr[MmV][0], BUTTON_BAG.pos.x - (200 * scaleby), BUTTON_BAG.pos.y + (MVM * (-1 + ((10 - MmV) % 3))));
                else drawDarkBox(invtr[MmV][0], (BUTTON_BAG.pos.x - (200 * scaleby)) - MVM, BUTTON_BAG.pos.y + (MVM * (-1 + ((10 - MmV) % 3))));
            }
        };

        function _GaugesAfter(offsetX, offsetY) {
            var level = World.PLAYER.level;
            if (NmWnM[level] === window.undefined) {
                NmWnM[level] = {
                    img: GUI.renderText("" + level, "'Black Han Sans', sans-serif", "#ffffff", 44, 250, window.undefined, 18, 15, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 15)
                };
                NmWnM[level].img.isLoaded = 1;
            }
            CanvasUtils.drawImageHd(NmWnM[level], (offsetX / scaleby) + 234, (offsetY / scaleby) + 79, 0, 0, 0, 1);
            var rad = World.gauges.rad;
            var value = 1 - (rad.current / rad._max);
            CanvasUtils.drawImageHd(wmmvv, 38 + (offsetX / scaleby), 37 + (offsetY / scaleby), window.Math.PI * value, 0, 0, 1);
        };

        function _Gauges(offsetX, offsetY) {
            var life = World.gauges.life;
            var value = life.current / life._max;
            CanvasUtils.fillRect(ctx, (offsetX / scaleby) + 14, (offsetY / scaleby) + 71, value * 189, 16, COLOR_LIGHTGREEN);
            //if (MOD.showHP) CanvasUtils.fillText(ctx, Math.floor(life.current), offsetX / scaleby + 100, offsetY / scaleby + 84, '#FFFFFF', '24px Black Han Sans');
            var food = World.gauges.food;
            var value = food.current / food._max;
            CanvasUtils.fillRect(ctx, (offsetX / scaleby) + 13, (offsetY / scaleby) + 162, 54, -value * 63, COLOR_ORANGE);
            var cold = World.gauges.cold;
            var value = cold.current / cold._max;
            CanvasUtils.fillRect(ctx, (offsetX / scaleby) + 81, (offsetY / scaleby) + 162, 54, -value * 63, COLOR_LIGHTBLUE);
            var stamina = World.gauges.stamina;
            var value = stamina.current / stamina._max;
            CanvasUtils.fillRect(ctx, (offsetX / scaleby) + 150, (offsetY / scaleby) + 162, 54, -value * 63, COLOR_YELLOW);
            var xp = World.gauges.xp;
            var value = xp.current / xp._max;
            CanvasUtils.fillRect(ctx, (offsetX / scaleby) + 226, (offsetY / scaleby) + 172, 16, -value * 77, COLOR_WHITE);
            var elapsedTime = World.updateHour();
            var img;
            var wnvmV;
            if (elapsedTime >= 10000000) {
                if (WmVNn.isLoaded !== 1) {
                    WmVNn = CanvasUtils.loadImage(IMG_NIGHT_CLOCK, WmVNn);
                    return;
                }
                elapsedTime -= 10000000;
                img = WmVNn;
                wnvmV = nMmvV;
            } else {
                if (nvvVW.isLoaded !== 1) {
                    nvvVW = CanvasUtils.loadImage(IMG_DAY_CLOCK, nvvVW);
                    return;
                }
                img = nvvVW;
                wnvmV = VWmVV;
            }
            var width = (scaleby * img.width) / 2;
            var height = (scaleby * img.height) / 2;
            ctx.drawImage(img, offsetX + (100 * scaleby), offsetY + (14 * scaleby), width, height);
            CanvasUtils.drawImageHd(wnvmV, 144.5 + (offsetX / scaleby), (offsetY / scaleby) + 56, elapsedTime * mWvNn, 0, 0, 1);

            var LifeNumberLabel = null;
            // Life Value Label
            if (MOD.ShowHP) {
                if (LifeNumberLabel === null) LifeNumberLabel = GUI.renderText(~~life.current, "'Viga', sans-serif", "#00FF00", 25, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 10);
                var img2 = LifeNumberLabel;
                var width = (scaleby * img2.width) / 2.1;
                var height = (scaleby * img2.height) / 2.1;
                var posx = offsetX + (100 * scaleby);
                var posy = offsetY + (14 * scaleby);
                ctx.drawImage(img2, posx, posy, width, height);
            }
        };


        function _Leaderboard(offsetX, offsetY) {
            var leaderboard = World.leaderboard;
            var players = World.players;
            var nWnWm = -1;
            if (World.newLeaderboard === 1) {
                nWnWm = 1;
                World.newLeaderboard = 0;
                context2dF.clearRect(0, 0, Vwwmw, nvnwM);
                for (var i = 0;
                    (i < leaderboard.length) && (leaderboard[i] !== 0); i++) {
                    var PLAYER = players[leaderboard[i]];
                    if (World.PLAYER.id === leaderboard[i]) nWnWm = 0;
                    if (PLAYER.nickname === 0) break;
                    if (PLAYER.leaderboardLabel === null) {
                        if (PLAYER.id === World.PLAYER.id) PLAYER.leaderboardLabel = GUI.renderText(PLAYER.nickname, "'Viga', sans-serif", "#D6C823", 40, 350, window.undefined, 0, 12);
                        else PLAYER.leaderboardLabel = GUI.renderText(PLAYER.nickname, "'Viga', sans-serif", "#ffffff", 40, 350, window.undefined, 0, 12);
                    }
                    if (PLAYER.scoreLabel === null) {
                        if (PLAYER.id === World.PLAYER.id) PLAYER.scoreLabel = GUI.renderText(PLAYER.scoreSimplified, "'Viga', sans-serif", "#D6C823", 40, 150, window.undefined, 5, 12);
                        else PLAYER.scoreLabel = GUI.renderText(PLAYER.scoreSimplified, "'Viga', sans-serif", "#ffffff", 40, 150, window.undefined, 5, 12);
                    }
                    if ((PLAYER.leaderboardLabel.width !== 0) && (PLAYER.leaderboardLabel.height !== 0)) context2dF.drawImage(PLAYER.leaderboardLabel, 90, 114 + (i * 50), PLAYER.leaderboardLabel.width, PLAYER.leaderboardLabel.height);
                    context2dF.drawImage(PLAYER.scoreLabel, 484, 114 + (i * 50), PLAYER.scoreLabel.width, PLAYER.scoreLabel.height);
                    var img = KARMA[PLAYER.KARMA].img;
                    if (img.isLoaded === 1) context2dF.drawImage(img, 612, 114 + (i * 50), img.width, img.height);
                }
                World.PLAYER.inLeaderboard = nWnWm;
                if (nWnWm === 1) {
                    var img = KARMA[World.PLAYER.KARMA].img;
                    if (img.isLoaded === 1) context2dF.drawImage(img, 375, 645, img.width * 1.5, img.height * 1.5);
                }
            }
            var score = World.PLAYER.exp;
            if ((nWnWm === 1) || ((World.PLAYER.inLeaderboard === 1) && (score !== World.PLAYER.lastScore))) {
                var PLAYER = players[World.PLAYER.id];
                context2dF.clearRect(480, 657, 112, 60);
                if (score !== World.PLAYER.lastScore) {
                    World.PLAYER.lastScore = score;
                    PLAYER.scoreLabel = GUI.renderText(MathUtils.simplifyNumber(score), "'Viga', sans-serif", "#ffffff", 40, 150, window.undefined, 5, 12);
                }
                context2dF.drawImage(PLAYER.scoreLabel, 484, 662, PLAYER.scoreLabel.width, PLAYER.scoreLabel.height);
            }
            ctx.drawImage(canvasF, offsetX, offsetY, (Vwwmw / 3) * scaleby, (nvnwM / 3) * scaleby);
        };


        function _BigMinimap(map, BUTTON_CLOSE_BOX) {   

            var width       = Width_410 * scaleby;
            var height      = Height_410 * scaleby;
            var offsetX          = canw2 - (width / 2);
            var offsetY          = window.Math.max(canh2 - (height / 2), 0);
            var wX_Scale    = offsetX / scaleby;
            var wY_Scale    = offsetY / scaleby;
            var mvMnV       = Width_410 / worldWidthFull;
            var _buttonInv  = Height_410 / worldHeightFull;
            BUTTON_CLOSE_BOX.pos.x  = window.Math.floor((offsetX + width) + (0 * scaleby));
            BUTTON_CLOSE_BOX.pos.y  = window.Math.floor(offsetY + (0 * scaleby));
            map.draw();

            var cities = World.PLAYER.cities;
            var len = cities.length / 2;
            if (len > 0) {
                _y = window.Math.floor((offsetY / scaleby) + window.Math.min(window.Math.max(10, cities[0] * _buttonInv), 400));
                _x = window.Math.floor((offsetX / scaleby) + window.Math.min(window.Math.max(10, cities[1] * mvMnV), 400));
                CanvasUtils.drawImageHd(cityiconmap, _x, _y, 0, 0, 0, 1);
                for (var i = 1; i < len; i++) {
                    _y = window.Math.floor((offsetY / scaleby) + window.Math.min(window.Math.max(10, cities[i * 2] * _buttonInv), 400));
                    _x = window.Math.floor((offsetX / scaleby) + window.Math.min(window.Math.max(10, cities[1 + (i * 2)] * mvMnV), 400));
                    CanvasUtils.drawImageHd(houseiconmap, _x, _y, 0, 0, 0, 1);
                }
            }

            if (World.gameMode === World.__BR__) {
                var wwwmm = wX_Scale + (Width_410 / 2);
                var vnvWw = wY_Scale + (Height_410 / 2);
                CanvasUtils.drawImageHd(MWNMV, wwwmm, vnvWw, 0, 0, 0, 2);
                ctx.globalAlpha = (mWWwn > 600) ? MathUtils.Ease.inOutQuad((1200 - mWWwn) / 600) : MathUtils.Ease.inOutQuad(mWWwn / 600);
                CanvasUtils.drawImageHd(MMvWn, wwwmm, vnvWw, 0, 0, 0, 2);
                ctx.globalAlpha = 1;
            }
            
            BUTTON_CLOSE_BOX.draw();

            if ((World.PLAYER.team !== -1) || (World.PLAYER.ghoul !== 0) && (World.playerAlive < 6)) {
                var players = Entitie.units[__ENTITIE_PLAYER__];
                for (var i = 0; i < World.PLAYER.teamLength; i++) {
                    var nmmvN = World.PLAYER.teamPos[i];
                    if (nmmvN.old < 0) continue;
                    var PLAYER = World.players[nmmvN.id];
                    var _x = window.Math.floor(wX_Scale + window.Math.min(window.Math.max(10, PLAYER.rx * mvMnV), 400));
                    var _y = window.Math.floor(wY_Scale + window.Math.min(window.Math.max(10, PLAYER.ry * mvMnV), 400));
                    var angle;
                    if (frameId === (PLAYER.frameId + 1)) angle = players[PLAYER.locatePlayer].angle;
                    else angle = PLAYER.x % PI2;
                    CanvasUtils.drawImageHd(arrowiconmap, _x, _y, angle, 0, 0, 1);

                    if (MOD.drawNamesOnMap && PLAYER.nicknameLabel != null)
                    ctx.drawImage(PLAYER.nicknameLabel, _x * scaleby - 3.5 * PLAYER.nickname.length, _y * scaleby - 35, 7 * PLAYER.nickname.length, 20);
                }
            }

            var _x = window.Math.floor((offsetX / scaleby) + window.Math.min(window.Math.max(10, NmM * mvMnV), 400));
            var _y = window.Math.floor((offsetY / scaleby) + window.Math.min(window.Math.max(10, WWV * _buttonInv), 400));
            CanvasUtils.drawImageHd(arrowiconmap2, _x, _y, Mouse.angle, 0, 0, 1);

            if (MOD.drawNamesOnMap) ctx.drawImage(World.players[World.PLAYER.id].nicknameLabel, _x * scaleby - 3.5 * World.players[World.PLAYER.id].nickname.length, _y * scaleby - 35, 7 * World.players[World.PLAYER.id].nickname.length, 20);

            if (World.PLAYER.badKarmaDelay > 0) {
                var PLAYER = World.players[World.PLAYER.badKarma];
                CanvasUtils.drawImageHd(KARMA[PLAYER.KARMA], window.Math.floor(wX_Scale + window.Math.min(window.Math.max(10, PLAYER.rx * mvMnV), 400)), window.Math.floor(wY_Scale + window.Math.min(window.Math.max(10, PLAYER.ry * mvMnV), 400)), 0, 0, 0, 1.25);
            }
            

        };



        function _AlertServer() {
            if (Home.alertDelay > 0) {
                if (Home.alertDelay > 2500) ctx.globalAlpha = MathUtils.Ease.inOutQuad((3000 - Home.alertDelay) / 500);
                else if (Home.alertDelay > 500) ctx.globalAlpha = 1;
                else ctx.globalAlpha = MathUtils.Ease.inOutQuad(Home.alertDelay / 500);
                if (Home.alertId === 0) CanvasUtils.drawImageHd(alertClientOld, canw2ns, alertClientOld.img.h2 / 2, 0, 0, 0, 1);
                else if (Home.alertId === 1) CanvasUtils.drawImageHd(alertServerOld, canw2ns, alertServerOld.img.h2 / 2, 0, 0, 0, 1);
                else if (Home.alertId === 2) CanvasUtils.drawImageHd(alertFull, canw2ns, alertFull.img.h2 / 2, 0, 0, 0, 1);
                else if (Home.alertId === 3) CanvasUtils.drawImageHd(alertServerWrong, canw2ns, alertServerWrong.img.h2 / 2, 0, 0, 0, 1);
                ctx.globalAlpha = 1;
                Home.alertDelay -= delta;
            }
        };

        function nmwmn(offsetX, offsetY) {
            if (teambox.isLoaded !== 1) {
                teambox = CanvasUtils.loadImage(IMG_INVITATION_BOX, teambox);
                return;
            }
            Game.acceptMember.pos.x = offsetX + (241 * scaleby);
            Game.acceptMember.pos.y = offsetY + (6 * scaleby);
            Game.refuseMember.pos.x = offsetX + (290 * scaleby);
            Game.refuseMember.pos.y = offsetY + (6 * scaleby);
            if ((World.PLAYER.teamJoin !== 0) || (World.PLAYER.teamEffect > 0)) {
                if (World.PLAYER.teamJoin !== 0) {
                    if (World.PLAYER.teamEffect < 333) {
                        ctx.globalAlpha = World.PLAYER.teamEffect / 333;
                        World.PLAYER.teamEffect += delta;
                    }
                } else {
                    ctx.globalAlpha = World.PLAYER.teamEffect / 333;
                    World.PLAYER.teamEffect = window.Math.max(0, World.PLAYER.teamEffect - delta);
                }
                var PLAYER = World.players[World.PLAYER.teamJoin];
                if (PLAYER.nicknameLabel === null) PLAYER.nicknameLabel = GUI.renderText(PLAYER.nickname, "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
                ctx.drawImage(teambox, offsetX, offsetY, scaleby * teambox.wh, scaleby * teambox.h2);
                if ((PLAYER.nicknameLabel.width !== 0) && (PLAYER.nicknameLabel.height !== 0)) ctx.drawImage(PLAYER.nicknameLabel, offsetX + (20 * scaleby), offsetY + (6 * scaleby), PLAYER.nicknameLabel.wh * scaleby, PLAYER.nicknameLabel.h2 * scaleby);
                Game.acceptMember.draw();
                Game.refuseMember.draw();
                if (World.PLAYER.teamEffect < 333) ctx.globalAlpha = 1;
            }
        };

        function _TimerGhoul(offsetX, offsetY, wNWnn) {
            World.PLAYER.nextAreas -= delta;
            var duration = window.Math.max(0, window.Math.floor(World.PLAYER.nextAreas / 1000));
            if (duration < 3000) {
                CanvasUtils.drawImageHd(timeleft, (offsetX / scaleby) + 51, (offsetY / scaleby) + 145, 0, 0, 0, 1);
                if (wVVVn[duration] === window.undefined) {
                    if ((wNWnn === 1) && (wVVVn[duration + 1] !== window.undefined)) wVVVn[duration + 1] = window.undefined;
                    var wWvWM = window.Math.floor(duration / 60);
                    var NNvMn = duration % 60;
                    wVVVn[duration] = {
                        img: GUI.renderText((((((wWvWM < 10) ? "0" : "") + wWvWM) + ":") + ((NNvMn < 10) ? "0" : "")) + NNvMn, "'Viga', sans-serif", "#FF0000", 38, 100, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12)
                    };
                    wVVVn[duration].img.isLoaded = 1;
                }
                CanvasUtils.drawImageHd(wVVVn[duration], (offsetX / scaleby) + 60, (offsetY / scaleby) + 145, 0, 0, 0, 1);
            }
        };

        function _AliveGhoul(offsetX, offsetY) {
            CanvasUtils.drawImageHd(WvWnV, ((offsetX / scaleby) + canwns) - 63, 25 + (offsetY / scaleby), 0, 0, 0, 1);
            if (playerAlive[World.playerAlive] === window.undefined) {
                playerAlive[World.playerAlive] = {
                    img: GUI.renderText("#" + World.playerAlive, "'Viga', sans-serif", "#FFFFFF", 60, 140)
                };
                playerAlive[World.playerAlive].img.isLoaded = 1;
            }
            CanvasUtils.drawImageHd(playerAlive[World.playerAlive], ((offsetX / scaleby) + canwns) - 50, 25 + (offsetY / scaleby), 0, 0, 0, 1);
        };

        function _Minimap(offsetX, offsetY) {
            nmwmn(offsetX + (250 * scaleby), offsetY);
            if (minimap.isLoaded !== 1) {
                minimap = CanvasUtils.loadImage(IMG_MAP_BORDER, minimap);
                return;
            }

            var mnmvW = nwMnv * NmM;
            var vNwWN = nwMnv * WWV;
            var sx = window.Math.min(window.Math.max(0, mnmvW - WWn), vvVMV);
            var sy = window.Math.min(window.Math.max(0, vNwWN - WWn), vvVMV);
            var width = WWn * scaleby;
            ctx.drawImage(minimap, sx, sy, mVmWm, mVmWm, offsetX, offsetY, width, width);
            
            if (World.gameMode === World.__GHOUL__) {
                if (World.PLAYER.ghoul !== 0) _AliveGhoul(-255, offsetY);
                else _TimerGhoul(offsetX + 50, offsetY, 1);
            }


            if (World.gameMode === World.__BR__) {
                var wVvnN = World.PLAYER.toxicMap[window.Math.floor(WWV / NnWnv)][window.Math.floor(NmM / NnWnv)];
                if (((wVvnN !== 0) && (wVvnN < World.PLAYER.toxicStep)) && (World.PLAYER.toxicStep !== 8)) {
                    shakeMagnitude = window.Math.min(1000, shakeMagnitude + delta);
                    ctx.globalAlpha = MathUtils.Ease.inQuad(shakeMagnitude / 500);
                    CanvasUtils.drawImageHd(WWmMW, canw2ns, 58, 0, 0, 0, 1);
                    ctx.globalAlpha = 1;
                } else if (shakeMagnitude > 0) {
                    shakeMagnitude = window.Math.max(0, shakeMagnitude - delta);
                    ctx.globalAlpha = MathUtils.Ease.inQuad(shakeMagnitude / 500);
                    CanvasUtils.drawImageHd(WWmMW, canw2ns, 58, 0, 0, 0, 1);
                    ctx.globalAlpha = 1;
                }
                ctx.drawImage(MWNMV.img, sx / 2, sy / 2, WWn, WWn, offsetX, offsetY, width, width);
                ctx.globalAlpha = (mWWwn > 600) ? MathUtils.Ease.inOutQuad((1200 - mWWwn) / 600) : MathUtils.Ease.inOutQuad(mWWwn / 600);
                mWWwn = (mWWwn + delta) % 1200;
                ctx.drawImage(MMvWn.img, sx / 2, sy / 2, WWn, WWn, offsetX, offsetY, width, width);
                ctx.globalAlpha = 1;
                _AliveGhoul(0, offsetY);
                _TimerGhoul(offsetX, offsetY, 0);
            } else if (World.PLAYER.ghoul === 0) {
                if (World.gauges.rad.decrease === 1) {
                    WNmVW = window.Math.min(1000, WNmVW + delta);
                    ctx.globalAlpha = MathUtils.Ease.inQuad(WNmVW / 500);
                    CanvasUtils.drawImageHd(VmWNN, canw2ns, 58, 0, 0, 0, 1);
                    ctx.globalAlpha = 1;
                } else if (WNmVW > 0) {
                    WNmVW = window.Math.max(0, WNmVW - delta);
                    ctx.globalAlpha = MathUtils.Ease.inQuad(WNmVW / 500);
                    CanvasUtils.drawImageHd(VmWNN, canw2ns, 58, 0, 0, 0, 1);
                    ctx.globalAlpha = 1;
                }
            }



            if (sx >= vvVMV) mnmvW = window.Math.min(((mnmvW - VnvWV) / 2) + nWWwM, WWn - 8);
            else if (mnmvW < WWn) mnmvW = window.Math.max(15, mnmvW / 2);
            else mnmvW = nWWwM;
            if (sy >= vvVMV) vNwWN = window.Math.min(((vNwWN - VnvWV) / 2) + nWWwM, WWn - 8);
            else if (vNwWN < WWn) vNwWN = window.Math.max(15, vNwWN / 2);
            else vNwWN = nWWwM;
            var wX_Scale = offsetX / scaleby;
            var wY_Scale = offsetY / scaleby;



            if ((World.PLAYER.team !== -1) || ((World.PLAYER.ghoul !== 0) && (World.playerAlive < 6))) {
                var players = Entitie.units[__ENTITIE_PLAYER__];
                for (var i = 0; i < World.PLAYER.teamLength; i++) {
                    var nmmvN = World.PLAYER.teamPos[i];
                    if (nmmvN.old < 0) continue;
                    var PLAYER = World.players[nmmvN.id];
                    var angle;
                    if (frameId === (PLAYER.frameId + 1)) {
                        var WMv = players[PLAYER.locatePlayer];
                        if (Math2d.fastDist(PLAYER.rx, PLAYER.ry, WMv.x, WMv.y) < 1000) {
                            PLAYER.rx = WMv.x;
                            PLAYER.ry = WMv.y;
                        }
                        PLAYER.x = WMv.x;
                        PLAYER.y = WMv.y;
                        angle = WMv.angle;
                    } else var angle = PLAYER.x % PI2;
                    var _x = wX_Scale + window.Math.max(15, window.Math.min(WWn - 15, (mnmvW - 3) + ((PLAYER.rx - NmM) * nwMnv)));
                    var _y = wY_Scale + window.Math.max(15, window.Math.min(WWn - 15, (vNwWN - 3) + ((PLAYER.ry - WWV) * nwMnv)));
                    CanvasUtils.drawImageHd(arrowiconmap, _x, _y, angle, 0, 0, 1);
                }
            }


            if (World.PLAYER.badKarmaDelay > 0) {
                var PLAYER = World.players[World.PLAYER.badKarma];
                if (frameId === (PLAYER.frameId + 1)) {
                    var players = Entitie.units[__ENTITIE_PLAYER__];
                    var WMv = players[PLAYER.locatePlayer];
                    if (Math2d.fastDist(PLAYER.rx, PLAYER.ry, WMv.x, WMv.y) < 1000) {
                        PLAYER.rx = WMv.x;
                        PLAYER.ry = WMv.y;
                    }
                    PLAYER.x = WMv.x;
                    PLAYER.y = WMv.y;
                }
                CanvasUtils.drawImageHd(KARMA[PLAYER.KARMA], wX_Scale + window.Math.max(15, window.Math.min(WWn - 15, (mnmvW - 3) + ((PLAYER.rx - NmM) * nwMnv))), wY_Scale + window.Math.max(15, window.Math.min(WWn - 15, (vNwWN - 3) + ((PLAYER.ry - WWV) * nwMnv))), 0, 0, 0, 1.25);
            }

            var _x = wX_Scale + (mnmvW - 3);
            var _y = wY_Scale + (vNwWN - 3);
            CanvasUtils.drawImageHd(arrowiconmap2, _x, _y, Mouse.angle, 0, 0, 1);
            if ((World.PLAYER.ghoul === 0) && ((World.PLAYER.skillPoint > 0) || (wnW.effect > 0))) {
                var move = (wnW.move + delta) % 1000;
                wnW.move = move;
                if (wnW.move < 500) offsetX += 260 + (15 * MathUtils.Ease.inOutQuad(move / 500));
                else offsetX += 260 + (15 * MathUtils.Ease.inOutQuad((1000 - move) / 500));
                ctx.globalAlpha = MathUtils.Ease.inQuad(wnW.effect);
                CanvasUtils.drawImageHd(wnW, offsetX, offsetY + 31, 0, 0, 0, 1);
                ctx.globalAlpha = 1;
                if ((World.PLAYER.skillPoint <= 0) || (Game.getSkillBoxState() === 1)) wnW.effect = window.Math.max(0, wnW.effect - (delta / 500));
                else if (wnW.effect < 1) wnW.effect = window.Math.min(1, wnW.effect + (delta / 500));
            }
        };

        
        var teamName = "";
        var nNmVw = null;

        function _Team(BUTTON_CLOSE_BOX, VWwmm, mMnVm, wwVMn, NnvmN, mvNMv, WvvvV, deleteTeam) {
            var offsetX = 0;
            var offsetY = 0;
            if (World.PLAYER.team === -1) {
                var teamNameValid = 1;
                if (Game.teamName.length === 0) teamNameValid = 0;
                else {
                    for (var i = 0; i < World.teams.length; i++) {
                        if (World.teams[i].name === Game.teamName) {
                            teamNameValid = 0;
                            break;
                        }
                    }
                }
                World.PLAYER.teamNameValid = teamNameValid;
                offsetX = VWwmm.pos.x;
                offsetY = VWwmm.pos.y;
                VWwmm.draw();
                BUTTON_CLOSE_BOX.pos.x = offsetX + (513 * scaleby);
                BUTTON_CLOSE_BOX.pos.y = offsetY + (2 * scaleby);
                if (teamName !== Game.teamName) {
                    teamName = Game.teamName;
                    nNmVw = GUI.renderText(teamName, "'Viga', sans-serif", "#FFFFFF", 30, 400);
                }
                if ((nNmVw !== null) && (teamName.length !== 0)) {
                    CanvasUtils.fillRect(ctx, (offsetX / scaleby) + 39, (offsetY / scaleby) + 14, 122, 16.5, "#000000");
                    ctx.drawImage(nNmVw, offsetX + (35 * scaleby), offsetY + (14.5 * scaleby), nNmVw.wh * scaleby, nNmVw.h2 * scaleby);
                }
                NnvmN.pos.x = offsetX + (172 * scaleby);
                NnvmN.pos.y = offsetY + (6 * scaleby);
                if ((teamNameValid === 0) || ((window.Date.now() - World.PLAYER.teamCreateDelay) < 30500)) {
                    NnvmN.setState(GUI.__BUTTON_OUT__);
                    ctx.globalAlpha = 0.5;
                    NnvmN.draw();
                    ctx.globalAlpha = 1;
                } else NnvmN.draw();
                var j = 0;
                for (var i = 0; i < 18; i++) {
                    var team = World.teams[i];
                    if (team.leader === 0) continue;
                    if (team.label === null) team.label = GUI.renderText(team.name, "'Viga', sans-serif", "#FFFFFF", 30, 400);
                    ctx.drawImage(team.label, offsetX + ((20 + ((j % 3) * 163)) * scaleby), offsetY + ((58.5 + (window.Math.floor(j / 3) * 36)) * scaleby), team.label.wh * scaleby, team.label.h2 * scaleby);
                    var wm = Game.join[j];
                    wm.pos.x = offsetX + ((84 + ((j % 3) * 163)) * scaleby);
                    wm.pos.y = offsetY + ((48 + (window.Math.floor(j / 3) * 36)) * scaleby);
                    if ((window.Date.now() - World.PLAYER.teamDelay) < 10500) {
                        wm.setState(GUI.__BUTTON_OUT__);
                        ctx.globalAlpha = 0.5;
                        wm.draw();
                        ctx.globalAlpha = 1;
                    } else wm.draw();
                    j++;
                }
            } else {
                offsetX = mMnVm.pos.x;
                offsetY = mMnVm.pos.y;
                var team = World.teams[World.PLAYER.team];
                if (team.label === null) team.label = GUI.renderText(team.name, "'Viga', sans-serif", "#FFFFFF", 30, 400);
                ctx.drawImage(team.label, offsetX + (144 * scaleby), offsetY + (13 * scaleby), team.label.wh * scaleby, team.label.h2 * scaleby);
                mMnVm.draw();
                BUTTON_CLOSE_BOX.pos.x = offsetX + (512 * scaleby);
                BUTTON_CLOSE_BOX.pos.y = offsetY + (34.5 * scaleby);
                if (World.PLAYER.teamLeader === 1) {
                    if (World.PLAYER.teamLocked === 0) {
                        mvNMv.pos.x = offsetX + (259 * scaleby);
                        mvNMv.pos.y = offsetY + (5 * scaleby);
                        mvNMv.draw();
                    } else {
                        WvvvV.pos.x = offsetX + (259 * scaleby);
                        WvvvV.pos.y = offsetY + (5 * scaleby);
                        WvvvV.draw();
                    }
                    deleteTeam.pos.x = offsetX + (311.5 * scaleby);
                    deleteTeam.pos.y = offsetY + (5 * scaleby);
                    deleteTeam.draw();
                    var j = 0;
                    for (var i = 0; i < World.players.length; i++) {
                        var PLAYER = World.players[i];
                        if ((team.uid !== PLAYER.teamUid) || (PLAYER.team !== team.id)) continue;
                        if (PLAYER.nicknameLabel === null) PLAYER.nicknameLabel = GUI.renderText(PLAYER.nickname, "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
                        if ((PLAYER.nicknameLabel.width !== 0) && (PLAYER.nicknameLabel.height !== 0)) ctx.drawImage(PLAYER.nicknameLabel, offsetX + ((26 + ((j % 3) * 166.5)) * scaleby), offsetY + ((53 + (window.Math.floor(j / 3) * 29.5)) * scaleby), (PLAYER.nicknameLabel.wh * scaleby) / 2.2, (PLAYER.nicknameLabel.h2 * scaleby) / 2.2);
                        var wm = Game.kick[j];
                        wm.pos.x = offsetX + ((132 + ((j % 3) * 166.5)) * scaleby);
                        wm.pos.y = offsetY + ((48.5 + (window.Math.floor(j / 3) * 29.5)) * scaleby);
                        if (((window.Date.now() - World.PLAYER.teamDelay) < 10500) || (PLAYER.id === World.PLAYER.id)) {
                            wm.setState(GUI.__BUTTON_OUT__);
                            ctx.globalAlpha = 0.5;
                            wm.draw();
                            ctx.globalAlpha = 1;
                        } else wm.draw();
                        j++;
                    }
                } else {
                    wwVMn.pos.x = offsetX + (311.5 * scaleby);
                    wwVMn.pos.y = offsetY + (5 * scaleby);
                    wwVMn.draw();
                    var j = 0;
                    for (var i = 0; i < World.players.length; i++) {
                        var PLAYER = World.players[i];
                        if ((team.uid !== PLAYER.teamUid) || (PLAYER.team !== team.id)) continue;
                        if (PLAYER.nicknameLabel === null) PLAYER.nicknameLabel = GUI.renderText(PLAYER.nickname, "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
                        if ((PLAYER.nicknameLabel.width !== 0) && (PLAYER.nicknameLabel.height !== 0)) ctx.drawImage(PLAYER.nicknameLabel, offsetX + ((26 + ((j % 3) * 166.5)) * scaleby), offsetY + ((53 + (window.Math.floor(j / 3) * 29.5)) * scaleby), (PLAYER.nicknameLabel.wh * scaleby) / 2.2, (PLAYER.nicknameLabel.h2 * scaleby) / 2.2);
                        j++;
                    }
                }
            }
            BUTTON_CLOSE_BOX.draw();
        };

        function _Chest(BACKGROUND_CHESTBOX, BUTTON_CLOSE_BOX, inventoryItemNumber, inventoryAmmoNumber) {
            BACKGROUND_CHESTBOX.draw();
            var offsetX = BACKGROUND_CHESTBOX.pos.x;
            var offsetY = BACKGROUND_CHESTBOX.pos.y;

            BUTTON_CLOSE_BOX.pos.x = offsetX + (161 * scaleby);
            BUTTON_CLOSE_BOX.pos.y = offsetY + (0 * scaleby);
            BUTTON_CLOSE_BOX.draw();

            var chest = World.PLAYER.chest;
            var _x;
            var _y = offsetY + (14 * scaleby);
            var wm = Game.chest;

            for (var i = 0; i < 4; i++) {
                if ((i % 2) === 0) {
                    _x = offsetX + (12.5 * scaleby);
                    if (i === 2) _y += 71 * scaleby;
                } else _x += 72 * scaleby;
                if (chest[i][0] === 0) continue;
                _buttonInv(wm[i], chest[i], _x, _y, inventoryItemNumber, inventoryAmmoNumber);
            }
        };

        function vMwNm() {
            var mmMnV = vertst;
            if (mmMnV > 0) CanvasUtils.fillRect(ctx, 0, 0, mmMnV, canhns, GROUND);
            else mmMnV = 0;
            var wvnWn = horist;
            if (wvnWn > 0) CanvasUtils.fillRect(ctx, mmMnV, 0, canwns - mmMnV, wvnWn, GROUND);
            else wvnWn = 0;
            var Mwwnn = (-vertst + canwns) - worldWidthFull;
            if (Mwwnn > 0) CanvasUtils.fillRect(ctx, canwns - Mwwnn, wvnWn, Mwwnn, canhns - wvnWn, GROUND);
            else Mwwnn = 0;
            var nNnMV = (-horist + canhns) - worldHeightFull;
            if (nNnMV > 0) CanvasUtils.fillRect(ctx, mmMnV, canhns - nNnMV, (canwns - mmMnV) - Mwwnn, nNnMV, GROUND);
        };

        function itemstatsfunc(canvasElements, id) {
            var playerGauges = INVENTORY[id];
            var detail = playerGauges.detail;
            var _name = GUI.renderText(detail.name, "'Viga', sans-serif", "#D3BB43", 30, 400);
            canvasElements.drawImage(_name, 20, 20);
            _name = GUI.renderText(detail.description, "'Viga', sans-serif", "#FFFFFF", 16, 400);
            canvasElements.drawImage(_name, 20, 68);
            if (playerGauges.idWeapon === 21) {
                if (playerGauges.damageBuilding > 0) {
                    _name = GUI.renderText((("Damage: " + playerGauges.damage) + "/") + playerGauges.damageBuilding, "'Viga', sans-serif", "#D3BB43", 24, 400);
                    canvasElements.drawImage(_name, 20, 101);
                } else {
                    _name = GUI.renderText("Life: " + playerGauges.life, "'Viga', sans-serif", "#D3BB43", 24, 400);
                    canvasElements.drawImage(_name, 20, 101);
                }
            } else if ((playerGauges.idWeapon !== window.undefined) && (playerGauges.idWeapon !== 0)) {
                var code = "";
                var weapon = ENTITIES[__ENTITIE_PLAYER__].weapons[playerGauges.idWeapon];
                if (weapon.damage !== window.undefined) {
                    code = "Damage: " + ((weapon.damageCac === window.undefined) ? weapon.damage : weapon.damageCac);
                } else {
                    if (weapon.food !== 0) code += ("Food: " + weapon.food) + " ";
                    if (weapon.heal < 0) code += ("Damage: " + weapon.heal) + " ";
                    else if (weapon.heal > 0) code += ("Heal: " + weapon.heal) + " ";
                    if (weapon.energy !== 0) code += "Energy: " + weapon.energy;
                }
                _name = GUI.renderText(code, "'Viga', sans-serif", "#D3BB43", 24, 400);
                canvasElements.drawImage(_name, 20, 101);
            } else if (playerGauges.idClothe !== window.undefined) {} else {
                _name = GUI.renderText("Cannot be equipped", "'Viga', sans-serif", "#FFFFFF", 17, 400);
                canvasElements.drawImage(_name, 20, 108);
            }
        };

        function BuildingStats(canvasElements, building) {
            var id = building.pid;
            var PLAYER = World.players[id];
            var team = World.teams[PLAYER.team];
            var ownerName = PLAYER && PLAYER.nickname !== undefined ? PLAYER.nickname : id;
            var _name = GUI.renderText(ownerName, "'Viga', sans-serif", "#D3BB43", 30, 400);
            
            canvasElements.drawImage(_name, 20, 20);

            if (team && team.uid !== undefined && team.uid === PLAYER.teamUid) {
                var _name2 = GUI.renderText("Team: " + team.name, "'Viga', sans-serif", "#FFFFFF", 25, 400);
                canvasElements.drawImage(_name2, 20, 68);
            }
        }

        function _Craft(BACKGROUND_CRAFTBOX, BUTTON_CLOSE_BOX, skillList, NwnNV, VvvwN, nvmnM, craftList, preview, inventoryItemNumber, inventoryAmmoNumber, BUTTON_FUEL, BUTTON_FUEL1, BUTTON_CELLS, NWmNn) {
            BACKGROUND_CRAFTBOX.draw();
            var offsetX = BACKGROUND_CRAFTBOX.pos.x;
            var offsetY = BACKGROUND_CRAFTBOX.pos.y;
            var wX_Scale = offsetX / scaleby;
            var wY_Scale = offsetY / scaleby;
            BUTTON_CLOSE_BOX.pos.x = offsetX + (594 * scaleby);
            BUTTON_CLOSE_BOX.pos.y = offsetY + (0 * scaleby);
            BUTTON_CLOSE_BOX.draw();
            var craftAvailable = World.PLAYER.craftAvailable;
            var recipeAvailable = World.PLAYER.recipeAvailable;
            var category = World.PLAYER.craftCategory;
            var area = World.PLAYER.craftArea;
            for (var i = 0; i < skillList.length; i++) {
                var wm = skillList[i];
                if (i === category) wm.setState(GUI.__BUTTON_CLICK__);
                wm.pos.x = ((10 * scaleby) + offsetX) + ((i * 47) * scaleby);
                wm.pos.y = offsetY - (40 * scaleby);
                wm.draw();
            }
            var j = 0;
            for (i = 0; i < craftList.length; i++) {
                if ((i === area) && (World.PLAYER.isInBuilding === 1)) {} else if ((i !== World.PLAYER.buildingArea) && (i !== 0)) continue;
                var wm = craftList[i];
                if (i === area) wm.setState(GUI.__BUTTON_CLICK__);
                wm.pos.x = offsetX - (40 * scaleby);
                wm.pos.y = ((10 * scaleby) + offsetY) + ((j * 43) * scaleby);
                wm.draw();
                j++;
            }
            preview.pos.x = offsetX + (364 * scaleby);
            preview.pos.y = offsetY + (27 * scaleby);
            preview.draw();
            var craft = Game.craft;
            var len = World.PLAYER.craftLen;
            var width = 49 * scaleby;
            var height = 49 * scaleby;
            var MVM = 58 * scaleby;
            var mnMmm = 30 * scaleby;
            var NWNmV = 34 * scaleby;
            var breath = 1;
            if (VnwNw < 500) {
                breath += 0.08 * MathUtils.Ease.inQuad(VnwNw / 500);
                VnwNw += delta;
            } else {
                breath += 0.08 * MathUtils.Ease.outQuad(1 - ((VnwNw - 500) / 500));
                VnwNw += delta;
                if (VnwNw > 1000) VnwNw = 0;
            }
            breath = window.Math.max(1, window.Math.min(1.08, breath));
            for (i = 0; i < len; i++) {
                var wm = craft[i];
                wm.pos.x = (mnMmm + offsetX) + ((i % 5) * MVM);
                wm.pos.y = (NWNmV + offsetY) + (window.Math.floor(i / 5) * MVM);
                var availableRecip = craftAvailable[i];
                if (availableRecip === 0) {
                    ctx.globalAlpha = 0.45;
                    wm.draw();
                    ctx.globalAlpha = 1;
                } else if (availableRecip === 2) {
                    wm.setState(GUI.__BUTTON_IN__);
                    wm.draw();
                } else {
                    ctx.globalAlpha = 0.6;
                    CanvasUtils.drawImageHd(STROKE_BONUS, (wm.pos.x / scaleby) + 24.5, (wm.pos.y / scaleby) + 24.5, 0, 0, 0, breath);
                    ctx.globalAlpha = 1;
                    wm.draw();
                }
            }
            var Nnv = 0;
            if (World.PLAYER.craftCategory === -1) {
                if (World.PLAYER.isInBuilding === 1) {
                    NwnNV.pos.x = offsetX + (454 * scaleby);
                    NwnNV.pos.y = offsetY + (153 * scaleby);
                    if (((World.PLAYER.craftAvailable[World.PLAYER.craftIdSelected] === 1) && (World.PLAYER.building.len < 4)) && (World.PLAYER.building.fuel !== 0)) NwnNV.draw();
                    else {
                        ctx.globalAlpha = 0.5;
                        NwnNV.setState(GUI.__BUTTON_OUT__);
                        NwnNV.draw();
                        ctx.globalAlpha = 1;
                    }
                } else if (World.PLAYER.crafting === 0) {
                    NwnNV.pos.x = offsetX + (454 * scaleby);
                    NwnNV.pos.y = offsetY + (153 * scaleby);
                    if (World.PLAYER.craftAvailable[World.PLAYER.craftIdSelected] === 1) NwnNV.draw();
                    else {
                        ctx.globalAlpha = 0.5;
                        NwnNV.setState(GUI.__BUTTON_OUT__);
                        NwnNV.draw();
                        ctx.globalAlpha = 1;
                    }
                } else {
                    VvvwN.pos.x = offsetX + (454 * scaleby);
                    VvvwN.pos.y = offsetY + (153 * scaleby);
                    VvvwN.draw();
                }
                if (craftGauge.isLoaded !== 1) {
                    craftGauge = CanvasUtils.loadImage(IMG_CRAFT_GAUGE, craftGauge);
                    return;
                }

                if (World.PLAYER.isInBuilding === 1) {
                    if ((World.PLAYER.building.time !== 0) && (World.PLAYER.building.fuel !== 0)) {
                        Nnv = World.PLAYER.building.time - window.Date.now();
                        if (Nnv < 0) World.PLAYER.building.time = 0;
                        Nnv = MathUtils.Ease.inOutQuad(1 - (Nnv / World.PLAYER.building.timeMax));
                    }
                } else if (World.PLAYER.crafting !== 0) {
                    Nnv = World.PLAYER.crafting - window.Date.now();
                    if (Nnv < 0) World.PLAYER.crafting = 0;
                    Nnv = MathUtils.Ease.inOutQuad(1 - (Nnv / World.PLAYER.craftingMax));
                }

                Nnv = window.Math.min(1, window.Math.max(0, Nnv));
                width = (scaleby * craftGauge.width) / 2;
                height = (scaleby * craftGauge.height) / 2;
                var posx = offsetX + (356 * scaleby);
                var posy = offsetY + (206 * scaleby);
                ctx.fillStyle = "#A29742";
                MVM = 3 * scaleby;
                mnMmm = 2 * MVM;
                ctx.fillRect(window.Math.floor(posx + MVM), window.Math.floor(posy + MVM), window.Math.floor((width - mnMmm) * Nnv), window.Math.floor(height - mnMmm));
                ctx.drawImage(craftGauge, posx, posy, width, height);
                
            } else {
                var skill = World.PLAYER.craftAvailable[World.PLAYER.craftIdSelected];
                nvmnM.pos.x = offsetX + (454 * scaleby);
                nvmnM.pos.y = offsetY + (153 * scaleby);
                if (skill === 1) nvmnM.draw();
                else if (skill === 0) {
                    ctx.globalAlpha = 0.5;
                    nvmnM.setState(GUI.__BUTTON_OUT__);
                    nvmnM.draw();
                    ctx.globalAlpha = 1;
                    if (World.PLAYER.craftSelected !== MMNWW) {
                        context2J.clearRect(0, 0, 420, 148);
                        MMNWW = World.PLAYER.craftSelected;
                        var detail = INVENTORY[MMNWW].detail;
                        var MwNwV = 20;
                        if (detail.level > World.PLAYER.level) {
                            var text = GUI.renderText(("Require level " + detail.level) + " or higher", "'Viga', sans-serif", "#D8BA3D", 30, 600);
                            context2J.drawImage(text, 20, MwNwV);
                            MwNwV += 50;
                        }
                        if ((detail.previous !== -1) && (World.PLAYER.skillUnlocked[detail.previous] === window.undefined)) {
                            var text = GUI.renderText(("Unlock " + INVENTORY[detail.previous].detail.name) + " before", "'Viga', sans-serif", "#D8BA3D", 30, 600);
                            context2J.drawImage(text, 20, MwNwV);
                            MwNwV += 50;
                        }
                        if (World.PLAYER.skillPoint < detail.price) {
                            var text = GUI.renderText((("Cost " + detail.price) + " skill point") + ((detail.price !== 1) ? "s" : ""), "'Viga', sans-serif", "#D8BA3D", 30, 600);
                            context2J.drawImage(text, 20, MwNwV);
                        }
                    }
                    ctx.drawImage(canvasJ, offsetX + (356 * scaleby), offsetY + (211 * scaleby), (scaleby * canvasJ.width) / 2, (scaleby * canvasJ.height) / 2);
                } else {
                    nvmnM.setState(GUI.__BUTTON_CLICK__);
                    nvmnM.draw();
                }
            }
            if (World.PLAYER.isInBuilding === 1) {
                var amount = World.PLAYER.building.fuel;
                if (amount >= 0) {
                    var wm;
                    if (((area === AREAS.__SMELTER__) || (area === AREAS.__EXTRACTOR__)) || (area === AREAS.__AGITATOR__)) wm = BUTTON_FUEL1;
                    else if (area === AREAS.__TESLA__ || area === AREAS.__FEEDER__) wm = BUTTON_CELLS;
                    else wm = BUTTON_FUEL;
                    wm.pos.x = offsetX + (532 * scaleby);
                    wm.pos.y = offsetY + (153 * scaleby);
                    if (World.PLAYER.building.fuel !== 255) wm.draw();
                    else {
                        ctx.globalAlpha = 0.5;
                        wm.setState(GUI.__BUTTON_OUT__);
                        wm.draw();
                        ctx.globalAlpha = 1;
                    }
                    if (inventoryAmmoNumber[amount] === window.undefined) {
                        inventoryAmmoNumber[amount] = {
                            img: GUI.renderText("x" + amount, "'Black Han Sans', sans-serif", "#FFFF00", 30, 250, window.undefined, 15, 12, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12)
                        };
                        inventoryAmmoNumber[amount].img.isLoaded = 1;
                    }
                    CanvasUtils.drawImageHd(inventoryAmmoNumber[amount], (wm.pos.x / scaleby) + 42, (wm.pos.y / scaleby) + 42, -0.5, 0, 0, 0.9);
                }
                var queue = Game.queue;
                var WMnmM = World.PLAYER.building.pos;
                len = World.PLAYER.building.len;
                width = 40 * scaleby;
                height = 40 * scaleby;
                MVM = 62 * scaleby;
                mnMmm = 356 * scaleby;
                NWNmV = 237 * scaleby;
                for (var i = 0; i < len; i++) {
                    var wm = queue[i];
                    if (i === WMnmM) {
                        if (Nnv !== 0) {
                            ctx.globalAlpha = 0.6;
                            CanvasUtils.drawImageHd(STROKE_BONUS, (wm.pos.x / scaleby) + 20, (wm.pos.y / scaleby) + 20, 0, 0, 0, 0.85 * window.Math.max(0.01, window.Math.min(1, Nnv)));
                            ctx.globalAlpha = 1;
                        }
                    } else if (i < WMnmM) {
                        ctx.globalAlpha = 0.6;
                        CanvasUtils.drawImageHd(STROKE_BONUS, (wm.pos.x / scaleby) + 20, (wm.pos.y / scaleby) + 20, 0, 0, 0, breath * 0.85);
                        ctx.globalAlpha = 1;
                    }
                    wm.pos.x = (mnMmm + offsetX) + (i * MVM);
                    wm.pos.y = NWNmV + offsetY;
                    wm.draw();
                }
            }
            var tools = Game.tools;
            len = World.PLAYER.toolsLen;
            MVM = 45 * scaleby;
            mnMmm = 356 * scaleby;
            NWNmV = 151 * scaleby;
            for (var i = 0; i < len; i++) {
                var wm = tools[i];
                wm.pos.x = (mnMmm + offsetX) + (i * MVM);
                wm.pos.y = NWNmV + offsetY;
                wm.draw();
            }
            if (World.PLAYER.skillPoint !== wmmVm) {
                context2H.clearRect(0, 0, 280, 50);
                wmmVm = World.PLAYER.skillPoint;
                var text = GUI.renderText("SKILL POINT: " + wmmVm, "'Viga', sans-serif", "#FFFFFF", 32, 400);
                context2H.drawImage(text, 24, 12);
            }
            ctx.drawImage(skillPoint, offsetX + (455 * scaleby), offsetY + (378 * scaleby), (scaleby * skillPoint.width) / 2, (scaleby * skillPoint.height) / 2);
            if (World.PLAYER.craftSelected !== mwwNm) {
                context2dG.clearRect(0, 0, 280, 148);
                mwwNm = World.PLAYER.craftSelected;
                itemstatsfunc(context2dG, mwwNm);
            }
            ctx.drawImage(canvasG, offsetX + (439 * scaleby), offsetY + (24 * scaleby), (scaleby * canvasG.width) / 2, (scaleby * canvasG.height) / 2);
            if ((World.PLAYER.skillPoint > 0) || (wvV.effect > 0)) {
                var move = (wvV.move + delta) % 1000;
                wvV.move = move;
                var _y = offsetY / scaleby;
                if (wvV.move < 500) _y += -62 - (15 * MathUtils.Ease.inOutQuad(move / 500));
                else _y += -62 - (15 * MathUtils.Ease.inOutQuad((1000 - move) / 500));
                ctx.globalAlpha = MathUtils.Ease.inQuad(wvV.effect);
                CanvasUtils.drawImageHd(wvV, 266 + (BACKGROUND_CRAFTBOX.pos.x / scaleby), _y, 0, 0, 0, 1);
                ctx.globalAlpha = 1;
                if (World.PLAYER.skillPoint <= 0) wvV.effect = window.Math.max(0, wvV.effect - (delta / 500));
                else if (wvV.effect < 1) wvV.effect = window.Math.min(1, wvV.effect + (delta / 500));
            }
            var recipe = Game.recipe;
            len = World.PLAYER.recipeLen;
            width = 40 * scaleby;
            height = 40 * scaleby;
            MVM = 45 * scaleby;
            mnMmm = 356 * scaleby;
            NWNmV = 107 * scaleby;
            for (var i = 0; i < len; i++) {
                var wm = recipe[i];
                wm.pos.x = (mnMmm + offsetX) + (i * MVM);
                wm.pos.y = NWNmV + offsetY;
                var amount = window.Math.abs(recipeAvailable[i]);
                if (inventoryItemNumber[amount] === window.undefined) {
                    inventoryItemNumber[amount] = {
                        img: GUI.renderText("x" + amount, "'Black Han Sans', sans-serif", "#ffffff", 30, 250, window.undefined, 15, 12, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12)
                    };
                    inventoryItemNumber[amount].img.isLoaded = 1;
                }
                if (recipeAvailable[i] < 0) {
                    ctx.globalAlpha = 0.45;
                    wm.draw();
                    CanvasUtils.drawImageHd(inventoryItemNumber[amount], (wm.pos.x / scaleby) + 30, (wm.pos.y / scaleby) + 32, -0.5, 0, 0, 0.9);
                    ctx.globalAlpha = 1;
                } else {
                    wm.draw();
                    CanvasUtils.drawImageHd(inventoryItemNumber[amount], (wm.pos.x / scaleby) + 30, (wm.pos.y / scaleby) + 32, -0.5, 0, 0, 0.9);
                }
                if ((NWmNn === i) && (World.PLAYER.recipeList[i] > 0)) drawDarkBox(World.PLAYER.recipeList[i], wm.pos.x, wm.pos.y + (45 * scaleby));
            }
        };

        function _Config(WWmVM, nmvnW, wMMmv, NNWVW, nMmMw, vNVNN, wvmWv, WmWnm, VNNMW, NVVwW, BUTTON_CLOSE_BOX, WVVMw, vnNWN, MnvNV) {
            WWmVM.draw();
            var offsetX = WWmVM.pos.x;
            var offsetY = WWmVM.pos.y;
            BUTTON_CLOSE_BOX.pos.x = offsetX + (265 * scaleby);
            BUTTON_CLOSE_BOX.pos.y = offsetY + (0 * scaleby);
            BUTTON_CLOSE_BOX.draw();
            nMmMw.pos.x = offsetX + (87 * scaleby);
            nMmMw.pos.y = offsetY + (15 * scaleby);
            if (Keyboard.isAzerty() === 1) nMmMw.setState(GUI.__BUTTON_CLICK__);
            nMmMw.draw();
            vNVNN.pos.x = offsetX + (173 * scaleby);
            vNVNN.pos.y = offsetY + (15 * scaleby);
            if (Keyboard.isQwerty() === 1) vNVNN.setState(GUI.__BUTTON_CLICK__);
            vNVNN.draw();
            NNWVW.pos.x = offsetX + (87 * scaleby);
            NNWVW.pos.y = offsetY + (62 * scaleby);
            if (CanvasUtils.options.forceResolution === 3) NNWVW.setState(GUI.__BUTTON_CLICK__);
            NNWVW.draw();
            wMMmv.pos.x = offsetX + (147 * scaleby);
            wMMmv.pos.y = offsetY + (62 * scaleby);
            if (CanvasUtils.options.forceResolution === 2) wMMmv.setState(GUI.__BUTTON_CLICK__);
            wMMmv.draw();
            nmvnW.pos.x = offsetX + (207 * scaleby);
            nmvnW.pos.y = offsetY + (62 * scaleby);
            if (CanvasUtils.options.forceResolution === 1) nmvnW.setState(GUI.__BUTTON_CLICK__);
            nmvnW.draw();
            wvmWv.pos.x = offsetX + (87 * scaleby);
            wvmWv.pos.y = offsetY + (117 * scaleby);
            if (AudioUtils.options.isAudio === 1) wvmWv.setState(GUI.__BUTTON_CLICK__);
            wvmWv.draw();
            WmWnm.pos.x = offsetX + (147 * scaleby);
            WmWnm.pos.y = offsetY + (117 * scaleby);
            if (AudioUtils.options.isAudio === 0) WmWnm.setState(GUI.__BUTTON_CLICK__);
            WmWnm.draw();
            VNNMW.pos.x = offsetX + (87 * scaleby);
            VNNMW.pos.y = offsetY + (167 * scaleby);
            if (AudioUtils.options.isFx === 1) VNNMW.setState(GUI.__BUTTON_CLICK__);
            VNNMW.draw();
            NVVwW.pos.x = offsetX + (147 * scaleby);
            NVVwW.pos.y = offsetY + (167 * scaleby);
            if (AudioUtils.options.isFx === 0) NVVwW.setState(GUI.__BUTTON_CLICK__);
            NVVwW.draw();
            MnvNV.pos.x = offsetX + (87 * scaleby);
            MnvNV.pos.y = offsetY + (217 * scaleby);
            if (setParticles === 0) MnvNV.setState(GUI.__BUTTON_CLICK__);
            MnvNV.draw();
            vnNWN.pos.x = offsetX + (147 * scaleby);
            vnNWN.pos.y = offsetY + (217 * scaleby);
            if (setParticles === 1) vnNWN.setState(GUI.__BUTTON_CLICK__);
            vnNWN.draw();
            WVVMw.pos.x = offsetX + (207 * scaleby);
            WVVMw.pos.y = offsetY + (217 * scaleby);
            if (setParticles === 2) WVVMw.setState(GUI.__BUTTON_CLICK__);
            WVVMw.draw();
        };

        function _playerChatMessage(player) {
            var PLAYER = World.players[player.pid];
            if (PLAYER.text.length > 0) {
                for (var i = 0;
                    (i < PLAYER.text.length) && (i < 2); i++) {
                    if (!PLAYER.label[i]) {
                        PLAYER.label[i] = GUI.renderText(PLAYER.text[i], "'Viga', sans-serif", "#ffffff", 32, 1000, "#000000", 33, 19, window.undefined, window.undefined, 0.55, 5);
                        PLAYER.textEffect[i] = 0;
                        PLAYER.textMove[i] = 0;
                    }
                    if (i === 1) PLAYER.textMove[0] = MathUtils.Ease.inOutQuad(PLAYER.textEase) * 28;
                }
                wwmww = delta / 1000;
                PLAYER.textEffect[0] += wwmww;
                if (PLAYER.text.length > 1) {
                    PLAYER.textEase = window.Math.min(PLAYER.textEase + wwmww, 1);
                    if ((PLAYER.textEffect[0] > 1) && (PLAYER.textEase > 0.5)) PLAYER.textEffect[1] += wwmww;
                }
                for (var i = 0;
                    (i < PLAYER.text.length) && (i < 2); i++) {
                    var effect = PLAYER.textEffect[i];
                    if (effect > 0) {
                        if (effect < 0.25) ctx.globalAlpha = effect * 4;
                        else if (effect > 4.75) ctx.globalAlpha = window.Math.max((5 - effect) * 5, 0);
                        else ctx.globalAlpha = 1;
                        var offsetY = 118;
                        var img = PLAYER.label[i];
                        ctx.drawImage(img, 0, 0, img.width, img.height, ((vertst + player.x) - (img.width / 4)) * scaleby, (((horist + player.y) - offsetY) - PLAYER.textMove[i]) * scaleby, (img.width / 2) * scaleby, (img.height / 2) * scaleby);
                        ctx.globalAlpha = 1;
                    }
                }
                if (PLAYER.textEffect[0] > 5) {
                    PLAYER.textEffect.shift();
                    PLAYER.text.shift();
                    PLAYER.textMove.shift();
                    PLAYER.label.shift();
                    PLAYER.textEase = 0;
                }
            }
        };

        function _playerID(player) {
            var PLAYER = World.players[player.pid];
            if (((((player.extra & 255) === 16) && (World.PLAYER.admin !== 1)) && (player.pid !== World.PLAYER.id)) && (((PLAYER.team === -1) || (World.teams[PLAYER.team].uid !== PLAYER.teamUid)) || (World.PLAYER.team !== PLAYER.team))) return;
            if (PLAYER.playerIdLabel === null) PLAYER.playerIdLabel = GUI.renderText("#" + PLAYER.id, "'Viga', sans-serif", "#FFFFFF", 24, 400, window.undefined, 16, 25, window.undefined, 0.5, window.undefined, window.undefined, "#000000", 5);
            var img = PLAYER.playerIdLabel;
            var offsetY = 90;
            ctx.drawImage(img, ((vertst + player.x) - (img.wh / 2)) * scaleby, ((horist + player.y) - offsetY - 13) * scaleby, img.wh * scaleby, img.h2 * scaleby);
        }

        function _playerName(player) {
            var colorTeam = '#FFFFFF';
            var colorEnemy = '#FFFFFF';
            if (MOD.ColorizeTeam) { colorTeam = MOD.TeamColor; colorEnemy = MOD.EnemyColor;} else { colorTeam = '#FFFFFF'; colorEnemy = '#FFFFFF';}
            var PLAYER = World.players[player.pid];
            if (((((player.extra & 255) === 16) && (World.PLAYER.admin !== 1)) && (player.pid !== World.PLAYER.id)) && (((PLAYER.team === -1) || (World.teams[PLAYER.team].uid !== PLAYER.teamUid)) || (World.PLAYER.team !== PLAYER.team))) return;
            if (PLAYER.nicknameLabel === null) PLAYER.nicknameLabel = GUI.renderText(PLAYER.nickname, "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
            var img = PLAYER.nicknameLabel;
            var offsetY = 90;
            if (PLAYER.team === -1) ctx.drawImage(img, ((vertst + player.x) - (img.wh / 2)) * scaleby, ((horist + player.y) - offsetY) * scaleby, img.wh * scaleby, img.h2 * scaleby);
            else if (PLAYER.team !== -1) {
                var team = World.teams[PLAYER.team];
                if (team.uid === PLAYER.teamUid) {
                    if (team.labelNickname === null)
                    var isInClan = 0;
                    if (((player.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[player.pid].team)) && (World.players[player.pid].teamUid === World.teams[World.PLAYER.team].uid)))) { isInClan = 1;
                        team.labelNickname = GUI.renderText(("[" + team.name) + "]", "'Viga', sans-serif", colorTeam, 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
                    } else team.labelNickname = GUI.renderText(("[" + team.name) + "]", "'Viga', sans-serif", colorEnemy, 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
                    var wvMMv = team.labelNickname;
                    ctx.drawImage(wvMMv, ((((vertst + player.x) - (img.wh / 2)) - (wvMMv.wh / 2)) - 0.5) * scaleby, ((horist + player.y) - offsetY) * scaleby, wvMMv.wh * scaleby, wvMMv.h2 * scaleby);
                    if ((img.width !== 0) && (img.height !== 0)) ctx.drawImage(img, (((vertst + player.x) - (img.wh / 2)) + (wvMMv.wh / 2)) * scaleby, ((horist + player.y) - offsetY) * scaleby, img.wh * scaleby, img.h2 * scaleby);
                } else PLAYER.team = -1;
            }

            // Auto Eat Label
            if (MOD.autoEat) {
                if (AutoEatLabel === null) AutoEatLabel = GUI.renderText('FOOD', "'Viga', sans-serif", "#00FF00", 20, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 10);
                var img = AutoEatLabel;
                var offsetY = 90;
                ctx.drawImage(img, ((vertst + World.PLAYER.x) - (img.wh / 2)) * scaleby, ((horist + World.PLAYER.y) - offsetY + 32) * scaleby, img.wh * scaleby, img.h2 * scaleby);
            }

            // Auto Loot Label
            if (MOD.autoLoot) {
                if (AutoLootLabel === null) AutoLootLabel = GUI.renderText('LOOT', "'Viga', sans-serif", "#FF0000", 20, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 10);
                var img = AutoLootLabel;
                var offsetY = 90;
                ctx.drawImage(img, ((vertst + World.PLAYER.x) - (img.wh / 2)) * scaleby, ((horist + World.PLAYER.y) - offsetY + 21) * scaleby, img.wh * scaleby, img.h2 * scaleby);
            }

            // Aim Bot Label
            if (MOD.AimBotEnable) {
                if (AimBotLabel === null) AimBotLabel = GUI.renderText('AIM', "'Viga', sans-serif", "#ad00e3", 20, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 10);
                var img = AimBotLabel;
                var offsetY = 90;
                ctx.drawImage(img, ((vertst + World.PLAYER.x) - ((img.wh - 60) / 2)) * scaleby, ((horist + World.PLAYER.y) - offsetY + 21) * scaleby, img.wh * scaleby, img.h2 * scaleby);
            }

        };
        
        
        
        function vmNmW(tile, i, j, wVNVN, vWMwn, NVWwM, MWMvm) {
            var building = BUILDINGS[tile.type];
            var img = building.img;
            if (img.isLoaded !== 1) {
                building.img = CanvasUtils.loadImage(building.src, building.img);
                return;
            }
            var nVNNn = NVWwM - tile.i;
            var VwMWn = MWMvm - tile.j;
            var nNmvn = (i + building.grid.length) - nVNNn;
            var VWMmV = (j + building.grid[0].length) - VwMWn;
            var nMNww = 0;
            var WvMwV = 0;
            for (var _i = i, mmWMW = 0; _i < nNmvn; _i++, mmWMW++) {
                if (_i >= VmvVW) {
                    nMNww = building.grid.length - mmWMW;
                    break;
                }
                for (var _j = j, mVvwm = 0; _j < VWMmV; _j++, mVvwm++) {
                    if (_j >= wWmnn) {
                        WvMwV = building.grid[0].length - mVvwm;
                        break;
                    } else vMnnw[_i][_j] = frameId;
                }
            }
            var offsetX = 0;
            var offsetY = 0;
            var height = 0;
            var width = 0;
            if ((nMNww !== 0) || (WvMwV !== 0)) {
                offsetX = (((tile.j + VwMWn) * __TILE_SIZE__) + vertst) * scaleby;
                offsetY = (((tile.i + nVNNn) * __TILE_SIZE__) + horist) * scaleby;
                nVNNn *= 32;
                VwMWn *= 32;
                height = (img.height - (nMNww * 32)) + nVNNn;
                width = (img.width - (WvMwV * 32)) + VwMWn;
            } else {
                offsetX = (((tile.j + VwMWn) * __TILE_SIZE__) + vertst) * scaleby;
                offsetY = (((tile.i + nVNNn) * __TILE_SIZE__) + horist) * scaleby;
                nVNNn *= 32;
                VwMWn *= 32;
                height = img.height - nVNNn;
                width = img.width - VwMWn;
            }
            ctx.drawImage(img, VwMWn, nVNNn, width, height, offsetX, offsetY, (width * 3) * scaleby, (height * 3) * scaleby);
        };
        
        function wNnvM() {
            WvmnV = CanvasUtils.lerp(WvmnV, (((Render.scale + NNmMN[0]) + NNmMN[1]) + NNmMN[2]) + NNmMN[3], vwMWM);
            oldscale = scaleby;
            scaleby += WvmnV * scaleby;
            canwns = canw / scaleby;
            canhns = canh / scaleby;
        };
        
        function myplayerfocusinscreen() {
            var players = Entitie.units[__ENTITIE_PLAYER__];
            var border = Entitie.border[__ENTITIE_PLAYER__];
            var len = border.border;
            for (var i = 0; i < len; i++) {
                var PLAYER = players[border.cycle[i]];
                if (PLAYER.pid === World.PLAYER.id) {
                    if (Math2d.fastDist(World.PLAYER.x, World.PLAYER.y, PLAYER.x, PLAYER.y) < 1) WMWvN = window.Math.max(0, WMWvN - delta);
                    else WMWvN = mMmvV;
                    var wVn = ENTITIES[__ENTITIE_PLAYER__].clothes[PLAYER.extra & 255];
                    var gauges = World.gauges;
                    if (wVn.rad !== window.undefined) {
                        gauges.rad.bonus = wVn.rad;
                        gauges.cold.bonus = wVn.warm;
                    } else {
                        gauges.rad.bonus = 0;
                        gauges.cold.bonus = 0;
                    }
                    NmM = PLAYER.x;
                    WWV = PLAYER.y;
                    World.PLAYER.x = PLAYER.x;
                    World.PLAYER.y = PLAYER.y;
                    World.PLAYER._i = PLAYER.i;
                    World.PLAYER._j = PLAYER.j;
                    World.PLAYER.isBuilding = (ENTITIES[__ENTITIE_PLAYER__].weapons[(PLAYER.extra >> 8) & 255].type === 6) ? 1 : 0;
                    var vWwvm = window.Math.min(canh4ns, canw4ns);
                    if (Mouse.distance > vWwvm) vWwvm = WwmVw * window.Math.min((Mouse.distance - vWwvm) / vWwvm, 1);
                    else vWwvm = 0;
                    var offsetX = vWwvm * window.Math.cos(Mouse.angle);
                    var offsetY = vWwvm * window.Math.sin(Mouse.angle);
                    vvWnv = CanvasUtils.lerp(vvWnv, offsetX, 0.025);
                    Nvmmn = CanvasUtils.lerp(Nvmmn, offsetY, 0.025);
                    var nvVvv = 0;
                    var WvnMn = 0;
                    if (Render.shake > 0) {
                        Render.shake -= 1;
                        nvVvv += (window.Math.random() * 6) - 3;
                        WvnMn += (window.Math.random() * 6) - 3;
                    }
                    if (Render.explosionShake > 0) {
                        Render.explosionShake -= 1;
                        nvVvv += (window.Math.random() * 18) - 9;
                        WvnMn += (window.Math.random() * 18) - 9;
                    }
                    vertst = (((canw2 / scaleby) - PLAYER.x) - vvWnv) + nvVvv;
                    horist = (((canh2 / scaleby) - PLAYER.y) - Nvmmn) + WvnMn;

                    NVVWM = PLAYER.x + vvWnv;
                    WVNMV = PLAYER.y + Nvmmn;
                    
                    rowx = ~~((Mouse.x*scaleby/scaleby +vvWnv - canw2/scaleby + NmM) / 100);
                    rowy = ~~((Mouse.y*scaleby/scaleby +Nvmmn - canh2/scaleby + WWV) / 100);
                    return;
                }
            }
        };
        
        function mNWNw() {
            for (var i = 0; i < World.PLAYER.gridPrev.length; i++) {
                if (World.PLAYER.gridPrev[i] !== 0) return 0;
            }
            return 1;
        };
        
        function wmVNW() {
            if (World.PLAYER.isBuilding === 1) {
                if ((World.PLAYER.grid > 0) && ((World.PLAYER.iGrid !== World.PLAYER._i) || (World.PLAYER.jGrid !== World.PLAYER._j))) {
                    for (var i = 0; i < World.PLAYER.gridPrev.length; i++) {
                        if (World.PLAYER.gridPrev[i] === 0) {
                            World.PLAYER.gridPrev[i] = World.PLAYER.grid;
                            World.PLAYER.iGridPrev[i] = World.PLAYER.iGrid;
                            World.PLAYER.jGridPrev[i] = World.PLAYER.jGrid;
                            break;
                        }
                    }
                    World.PLAYER.grid = 0;
                    World.PLAYER.iGrid = World.PLAYER._i;
                    World.PLAYER.jGrid = World.PLAYER._j;
                }
                World.PLAYER.grid = window.Math.min(Mvvwv, World.PLAYER.grid + delta);
                for (var i = 0; i < World.PLAYER.gridPrev.length; i++) World.PLAYER.gridPrev[i] = window.Math.max(0, World.PLAYER.gridPrev[i] - delta);
            } else if ((World.PLAYER.grid === 0) && (mNWNw() === 1)) return;
            else {
                World.PLAYER.grid = window.Math.max(0, World.PLAYER.grid - delta);
                for (var i = 0; i < World.PLAYER.gridPrev.length; i++) World.PLAYER.gridPrev[i] = window.Math.max(0, World.PLAYER.gridPrev[i] - delta);
            }
            if (wWNmv.isLoaded !== 1) {
                wWNmv = CanvasUtils.loadImage(IMG_CRAFT_GRID, wWNmv);
                return;
            }
            ctx.globalAlpha = World.PLAYER.grid / Mvvwv;
            var offsetY = scaleby * (((World.PLAYER.iGrid * __TILE_SIZE__) + horist) + __TILE_SIZE2__);
            var offsetX = scaleby * (((World.PLAYER.jGrid * __TILE_SIZE__) + vertst) + __TILE_SIZE2__);
            var width = (scaleby * wWNmv.width) / 2;
            var height = (scaleby * wWNmv.height) / 2;
            ctx.drawImage(wWNmv, offsetX - (width / 2), offsetY - (height / 2), width, height);
            ctx.globalAlpha = 1;
            for (var i = 0; i < World.PLAYER.gridPrev.length; i++) {
                if (World.PLAYER.gridPrev[i] > 0) {
                    ctx.globalAlpha = World.PLAYER.gridPrev[i] / Mvvwv;
                    var offsetY = scaleby * (((World.PLAYER.iGridPrev[i] * __TILE_SIZE__) + horist) + __TILE_SIZE2__);
                    var offsetX = scaleby * (((World.PLAYER.jGridPrev[i] * __TILE_SIZE__) + vertst) + __TILE_SIZE2__);
                    var width = (scaleby * wWNmv.width) / 2;
                    var height = (scaleby * wWNmv.height) / 2;
                    ctx.drawImage(wWNmv, offsetX - (width / 2), offsetY - (height / 2), width, height);
                    ctx.globalAlpha = 1;
                }
            }
        };
        
        function wmMwV() {
            var wVNVN = window.Math.min(MapManager.height - VmvVW, window.Math.max(0, (((WnWvv - VmvVW) / 2) + window.Math.floor((WVNMV / __TILE_SIZE__) - (VmvVW / 2))) + 1));
            var vWMwn = window.Math.min(MapManager.width - wWmnn, window.Math.max(0, (((NVmMW - wWmnn) / 2) + window.Math.floor((NVVWM / __TILE_SIZE__) - (wWmnn / 2))) + 1));
            var height = wVNVN + VmvVW;
            var width = vWMwn + wWmnn;
            for (var i = wVNVN; i < height; i++) {
                for (var j = vWMwn; j < width; j++) {
                    var player = MapManager.nWmMn[i][j];
                }
            }
        };
        
        function _playerNotification(player) {
            var PLAYER = World.players[player.pid];
            if ((PLAYER !== window.undefined) && (PLAYER.notification.length > 0)) {
                if (PLAYER.notificationDelay >= Mvnwm) PLAYER.notificationDelay = 0;
                var delay = PLAYER.notificationDelay;
                var level = PLAYER.notificationLevel[0];
                var type = PLAYER.notification[0];
                if (delay === 0) {
                    var distance = Math2d.distance(player.x, player.y, NmM, WWV);
                }
                PLAYER.notificationDelay += delta;
                if (PLAYER.notificationDelay >= Mvnwm) {
                    PLAYER.notificationDelay = 0;
                    PLAYER.notificationLevel.shift();
                    PLAYER.notification.shift();
                }
                var img = wVMNN[type][level];
                if (img.isLoaded !== 1) {
                    wVMNN[type][level] = CanvasUtils.loadImage((((IMG_ALERT + type) + "_") + level) + ".png", img);
                    return;
                }
                var move = 0;
                if (delay < mmWWw) {
                    var mwvWV = delay / mmWWw;
                    ctx.globalAlpha = mwvWV;
                    move = 15 * (1 - mwvWV);
                } else if (delay > WWMnN) {
                    var mwVvV = (Mvnwm - delay) / (Mvnwm - WWMnN);
                    ctx.globalAlpha = mwVvV;
                    move = 40 * (mwVvV - 1);
                }
                ctx.drawImage(img, ((vertst + player.x) - 120) * scaleby, ((horist + player.y) + (move - 45)) * scaleby, (img.width * scaleby) / 2, (img.height * scaleby) / 2);
                ctx.globalAlpha = 1;
            }
        };
        
        function _Run(player) {
            var PLAYER = World.players[player.pid];
            for (var i = 0; i < PLAYER.runEffect.length; i++) {
                var effect = PLAYER.runEffect[i];
                if ((i > 0) && (effect.delay <= 0)) {
                    var vVVVn = PLAYER.runEffect[i - 1];
                    if ((vVVVn.delay > 500) || (vVVVn.delay <= 0)) continue;
                }
                if ((player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) || (effect.delay > 0)) {
                    var mVn = ENTITIES[__ENTITIE_PLAYER__].runEffect;
                    var img = mVn.img;
                    if (img.isLoaded !== 1) {
                        mVn.img = CanvasUtils.loadImage(mVn.src, mVn.img);
                        return;
                    }
                    if (effect.delay <= 0) {
                        effect.delay = 750;
                        effect.angle = window.Math.random() * PI2;
                        effect.x = player.x;
                        effect.y = player.y;
                        effect.size = 1 + (window.Math.random() * 0.8);
                    } else effect.delay -= delta;
                    var value = MathUtils.Ease.outQuart(window.Math.max(0, effect.delay / 750));
                    var w = (((scaleby * (effect.size + 1)) * value) * img.width) / 7;
                    var wh = -w / 2;
                    ctx.save();
                    ctx.translate((vertst + effect.x) * scaleby, (horist + effect.y) * scaleby);
                    ctx.rotate(effect.angle);
                    ctx.globalAlpha = window.Math.max(0, value * value);
                    ctx.drawImage(img, wh, wh, w, w);
                    ctx.restore();
                }
            }
        };
        
        function Wvmnw(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) {
            var PLAYER = World.players[player.pid];
            var skinType = 0;
            var repellent = PLAYER.repellent - Render.globalTime;
            var withdrawal = PLAYER.withdrawal - Render.globalTime;
            if (repellent > 0) {
                if (withdrawal > 0) skinType = 3;
                else if (PLAYER.withdrawal > 0) skinType = 5;
                else skinType = 1;
            } else if (withdrawal > 0) skinType = 2;
            else if (PLAYER.withdrawal > 0) skinType = 4;
            if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel;
            var skin = mVn.skins[skinType];
            var recoil = 0;
            var Vmwnn = player.state & 254;
            var Nmm = weapon.rightArm;
            var VnN = weapon.leftArm;
            if (Vmwnn === 4) {
                if (PLAYER.consumable === -1) {
                    var MNmnm = (player.extra >> 8) & 255;
                    if ((AudioUtils._fx.shot[MNmnm] !== 0) && ((Render.globalTime - PLAYER.consumableLast) > 800)) {
                        PLAYER.consumableLast = Render.globalTime;
                        var VVmnw = window.Math.floor(window.Math.random() * weapon.soundLen);
                        AudioUtils.playFx(AudioUtils._fx.shot[MNmnm][VVmnw], weapon.soundVolume, Math2d.distance(World.PLAYER.x, World.PLAYER.y, player.x, player.y) / 4, weapon.soundDelay);
                    }
                    PLAYER.consumable = 0;
                }
                if (PLAYER.punch === 1) PLAYER.consumable = window.Math.max(0, PLAYER.consumable - delta);
                else PLAYER.consumable = window.Math.min(weapon.consumableDelay, PLAYER.consumable + delta);
                var value = PLAYER.consumable / weapon.consumableDelay;
                recoil = value * weapon.recoil;
                if ((PLAYER.consumable === 0) || (PLAYER.consumable === weapon.consumableDelay)) PLAYER.punch *= -1;
            } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) {
                PLAYER.consumable = -1;
                PLAYER.breath = (PLAYER.breath + delta) % 1500;
                if (PLAYER.move !== 0) {
                    if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move;
                    PLAYER.move = PLAYER.move + delta;
                    if (PLAYER.move > 800) PLAYER.move = 0;
                }
            } else {
                PLAYER.consumable = -1;
                if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9);
                else PLAYER.move = PLAYER.move + delta;
                if (PLAYER.move > 800) {
                    PLAYER.orientation *= -1;
                    PLAYER.move = PLAYER.move % 800;
                }
                if (PLAYER.breath !== 0) {
                    if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath;
                    PLAYER.breath = PLAYER.breath + delta;
                    if (PLAYER.breath > 1500) PLAYER.breath = 0;
                }
            }
            var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750)));
            var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400)));
            var MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, Nmm.angle + player.angle, ((Nmm.x + (move * PLAYER.orientation)) + recoil) + breath, Nmm.y, imageScale);
            MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, -VnN.angle + player.angle, ((VnN.x + (move * PLAYER.orientation)) + recoil) + breath, VnN.y, imageScale);
            var item = weapon.weapon;
            CanvasUtils.drawImageHd(item, offsetX, offsetY, player.angle, ((item.x + (move * PLAYER.orientation)) + breath) + recoil, item.y, imageScale);
            if (player.hurt2 > 0) {
                var mnM = 1;
                player.hurt2 -= delta;
                var value = 0;
                if (player.hurt2 > 150) value = MathUtils.Ease.inQuad((300 - player.hurt2) / 300);
                else {
                    value = MathUtils.Ease.outQuad(player.hurt2 / 150);
                    mnM += (1 - value) * 0.2;
                }
                ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                CanvasUtils.drawImageHd(mVn.food, offsetX, offsetY, player.angle, 0, 0, mnM);
                ctx.globalAlpha = 1;
            }
            if (player.hurt > 0) {
                var mnM = 1;
                player.hurt -= delta;
                var value = 0;
                if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300);
                else {
                    value = MathUtils.Ease.outQuad(player.hurt / 150);
                    mnM += (1 - value) * 0.2;
                }
                offsetX += (window.Math.cos(player.hurtAngle) * value) * 3;
                offsetY += (window.Math.sin(player.hurtAngle) * value) * 3;
                ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle, 0, 0, mnM);
                ctx.globalAlpha = 1;
            }
            if (player.heal > 0) {
                var mnM = 1;
                player.heal -= delta;
                if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300)));
                else {
                    var value = MathUtils.Ease.outQuad(player.heal / 150);
                    mnM += (1 - value) * 0.2;
                    ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                }
                CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle, 0, 0, mnM);
                ctx.globalAlpha = 1;
            }
            CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle, 0, 0, imageScale);
            if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle, 0, 0, imageScale);
        };
        
        function vwVWm(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) {
            var PLAYER = World.players[player.pid];
            var skinType = 0;
            var repellent = PLAYER.repellent - Render.globalTime;
            var withdrawal = PLAYER.withdrawal - Render.globalTime;
            if (repellent > 0) {
                if (withdrawal > 0) skinType = 3;
                else if (PLAYER.withdrawal > 0) skinType = 5;
                else skinType = 1;
            } else if (withdrawal > 0) skinType = 2;
            else if (PLAYER.withdrawal > 0) skinType = 4;
            if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel;
            var skin = mVn.skins[skinType];
            var recoil = 0;
            var recoilGun = 0;
            var recoilHead = 0;
            var effect = -1;
            var Nmm = weapon.rightArm;
            var VnN = weapon.leftArm;
            var cartridges = PLAYER.cartridges;
            if (player.hit > 0) {
                if (player.hit === player.hitMax) {
                    for (var i = 0; i < cartridges.length; i++) {
                        var cartridge = cartridges[i];
                        if (cartridge.delay <= 0) {
                            cartridge.type = weapon.cartridge;
                            cartridge.delay = weapon.cartridgeDelay;
                            cartridge.x = offsetX + (window.Math.cos(player.angle) * 44);
                            cartridge.y = offsetY + (window.Math.sin(player.angle) * 44);
                            var angle = ((-window.Math.PI / 2.5) + player.angle) + ((window.Math.random() * -window.Math.PI) / 3.5);
                            cartridge.ax = window.Math.cos(angle);
                            cartridge.ay = window.Math.sin(angle);
                            break;
                        }
                    }
                }
                player.hit = window.Math.max(0, player.hit - delta);
                var value = (player.hit > 80) ? (1 - ((player.hit - 80) / 100)) : (player.hit / 80);
                if (weapon.noEffect === 0) {
                    var nWvvW = mVn.gunEffect[weapon.gunEffect].length;
                    for (var gunEffect = 0; gunEffect < nWvvW; gunEffect++) {
                        if (player.hit > (weapon.delay - (30 * (gunEffect + 1)))) {
                            effect = gunEffect;
                            break;
                        }
                    }
                }
                recoilHead = value * weapon.recoilHead;
                recoilGun = value * weapon.recoilGun;
                recoil = value * weapon.recoil;
            } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) {
                PLAYER.breath = (PLAYER.breath + delta) % 1500;
                if (PLAYER.move !== 0) {
                    if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move;
                    PLAYER.move = PLAYER.move + delta;
                    if (PLAYER.move > 800) PLAYER.move = 0;
                }
            } else {
                if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9);
                else PLAYER.move = PLAYER.move + delta;
                if (PLAYER.move > 800) {
                    PLAYER.orientation *= -1;
                    PLAYER.move = PLAYER.move % 800;
                }
                if (PLAYER.breath !== 0) {
                    if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath;
                    PLAYER.breath = PLAYER.breath + delta;
                    if (PLAYER.breath > 1500) PLAYER.breath = 0;
                }
            }
            var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750)));
            var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400)));
            var MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, Nmm.angle + player.angle, ((Nmm.x + (move * PLAYER.orientation)) + recoil) + breath, Nmm.y, imageScale);
            MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, -VnN.angle + player.angle, ((VnN.x + (move * PLAYER.orientation)) + recoil) + breath, VnN.y, imageScale);
            var item = weapon.weapon;
            if ((effect >= 0) && (weapon.noEffect === 0)) {
                var gunEffect = mVn.gunEffect[weapon.gunEffect][effect];
                CanvasUtils.drawImageHd(gunEffect, offsetX, offsetY, player.angle, (((item.x + (move * PLAYER.orientation)) + breath) + recoilGun) + weapon.distance, item.y, imageScale);
            }
            CanvasUtils.drawImageHd(item, offsetX, offsetY, player.angle, ((item.x + (move * PLAYER.orientation)) + breath) + recoilGun, item.y, imageScale);
            for (var i = 0; i < cartridges.length; i++) {
                var cartridge = cartridges[i];
                if (cartridge.delay > 0) {
                    cartridge.x += (delta * cartridge.ax) * 0.18;
                    cartridge.y += (delta * cartridge.ay) * 0.18;
                    if ((cartridge.delay < 200) && (ctx.globalAlpha === 1)) {
                        ctx.globalAlpha = MathUtils.Ease.outQuad(cartridge.delay / 200);
                        CanvasUtils.drawImageHd(mVn.cartridges[cartridge.type], cartridge.x, cartridge.y, cartridge.delay * 0.007, 0, 0, imageScale);
                        ctx.globalAlpha = 1;
                    } else CanvasUtils.drawImageHd(mVn.cartridges[cartridge.type], cartridge.x, cartridge.y, cartridge.delay * 0.007, 0, 0, imageScale);
                    cartridge.delay -= delta;
                }
            }
            if (player.hurt > 0) {
                var mnM = 1;
                player.hurt -= delta;
                var value = 0;
                if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300);
                else {
                    value = MathUtils.Ease.outQuad(player.hurt / 150);
                    mnM += (1 - value) * 0.2;
                }
                offsetX += (window.Math.cos(player.hurtAngle) * value) * 3;
                offsetY += (window.Math.sin(player.hurtAngle) * value) * 3;
                ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle, recoilHead, 0, mnM);
                ctx.globalAlpha = 1;
            }
            if (player.heal > 0) {
                var mnM = 1;
                player.heal -= delta;
                if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300)));
                else {
                    var value = MathUtils.Ease.outQuad(player.heal / 150);
                    mnM += (1 - value) * 0.2;
                    ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                }
                CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle, recoilHead, 0, mnM);
                ctx.globalAlpha = 1;
            }
            CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle, recoilHead, 0, imageScale);
            if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle, recoilHead, 0, imageScale);
        };
        
        function WVVmN(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) {
            var PLAYER = World.players[player.pid];
            var skinType = 0;
            var repellent = PLAYER.repellent - Render.globalTime;
            var withdrawal = PLAYER.withdrawal - Render.globalTime;
            if (repellent > 0) {
                if (withdrawal > 0) skinType = 3;
                else if (PLAYER.withdrawal > 0) skinType = 5;
                else skinType = 1;
            } else if (withdrawal > 0) skinType = 2;
            else if (PLAYER.withdrawal > 0) skinType = 4;
            if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel;
            var skin = mVn.skins[skinType];
            var nmm = 0;
            var NNM = 0;
            var NWW = 0;
            var wnN = 0;
            if (player.hit > 0) {
                player.hit = window.Math.max(0, player.hit - delta);
                value = (player.hit > weapon.impactClient) ? (1 - ((player.hit - weapon.impactClient) / (weapon.delay - weapon.impactClient))) : (player.hit / weapon.impactClient);
                nmm = -MathUtils.Ease.inOutQuad(value) * 0.35;
                wnN = value * 3;
                NWW = -value * 20;
                NNM = value * 3;
            } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) {
                PLAYER.breath = (PLAYER.breath + delta) % 1500;
                if (PLAYER.move !== 0) {
                    if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move;
                    PLAYER.move = PLAYER.move + delta;
                    if (PLAYER.move > 800) PLAYER.move = 0;
                }
            } else {
                if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9);
                else PLAYER.move = PLAYER.move + delta;
                if (PLAYER.move > 800) {
                    PLAYER.orientation *= -1;
                    PLAYER.move = PLAYER.move % 800;
                }
                if (PLAYER.breath !== 0) {
                    if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath;
                    PLAYER.breath = PLAYER.breath + delta;
                    if (PLAYER.breath > 1500) PLAYER.breath = 0;
                }
            }
            var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750)));
            var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400)));
            var breathWeapon = weapon.breathWeapon * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750)));
            var NwM = weapon.rightArm;
            var MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, (NwM.angle + player.angle) - nmm, ((NwM.x - (move * PLAYER.orientation)) + NWW) + breathWeapon, NwM.y, imageScale);
            if (player.hit > 0) {
                var WnVmv = weapon.WnVmv;
                CanvasUtils.drawImageHd(WnVmv, offsetX, offsetY, player.angle, ((WnVmv.x - (move * PLAYER.orientation)) + breathWeapon) + NWW, WnVmv.y, imageScale);
            }
            var item = weapon.weapon;
            CanvasUtils.drawImageHd(item, offsetX, offsetY, item.angle + player.angle, ((item.x + (move * PLAYER.orientation)) + breath) + NNM, item.y, imageScale);
            NwM = weapon.leftArm;
            MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, -NwM.angle + player.angle, ((NwM.x + (move * PLAYER.orientation)) + NNM) + breath, NwM.y, imageScale);
            if (player.hurt > 0) {
                var mnM = 1;
                player.hurt -= delta;
                var value = 0;
                if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300);
                else {
                    value = MathUtils.Ease.outQuad(player.hurt / 150);
                    mnM += (1 - value) * 0.2;
                }
                offsetX += (window.Math.cos(player.hurtAngle) * value) * 3;
                offsetY += (window.Math.sin(player.hurtAngle) * value) * 3;
                ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, mnM);
                ctx.globalAlpha = 1;
            }
            if (player.heal > 0) {
                var mnM = 1;
                player.heal -= delta;
                if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300)));
                else {
                    var value = MathUtils.Ease.outQuad(player.heal / 150);
                    mnM += (1 - value) * 0.2;
                    ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                }
                CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, mnM);
                ctx.globalAlpha = 1;
            }
            CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, imageScale);
            if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, imageScale);
        };
        
        function mWNvw(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) {
            var PLAYER = World.players[player.pid];
            var skinType = 0;
            var repellent = PLAYER.repellent - Render.globalTime;
            var withdrawal = PLAYER.withdrawal - Render.globalTime;
            if (repellent > 0) {
                if (withdrawal > 0) skinType = 3;
                else if (PLAYER.withdrawal > 0) skinType = 5;
                else skinType = 1;
            } else if (withdrawal > 0) skinType = 2;
            else if (PLAYER.withdrawal > 0) skinType = 4;
            if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel;
            var skin = mVn.skins[skinType];
            var nmm = 0;
            var NNM = 0;
            var NWW = 0;
            var wnN = 0;
            if (player.hit > 0) {
                player.hit = window.Math.max(0, player.hit - delta);
                value = (player.hit > weapon.impactClient) ? (1 - ((player.hit - weapon.impactClient) / (weapon.delay - weapon.impactClient))) : (player.hit / weapon.impactClient);
                nmm = -MathUtils.Ease.inOutQuad(value) * 0.55;
                wnN = value * 3;
                NWW = -value * 25;
                NNM = value * 10;
            } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) {
                PLAYER.breath = (PLAYER.breath + delta) % 1500;
                if (PLAYER.move !== 0) {
                    if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move;
                    PLAYER.move = PLAYER.move + delta;
                    if (PLAYER.move > 800) PLAYER.move = 0;
                }
            } else {
                if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9);
                else PLAYER.move = PLAYER.move + delta;
                if (PLAYER.move > 800) {
                    PLAYER.orientation *= -1;
                    PLAYER.move = PLAYER.move % 800;
                }
                if (PLAYER.breath !== 0) {
                    if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath;
                    PLAYER.breath = PLAYER.breath + delta;
                    if (PLAYER.breath > 1500) PLAYER.breath = 0;
                }
            }
            var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750)));
            var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400)));
            var NwM = weapon.leftArm;
            var MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, ((-NwM.angle + player.angle) - breath) - nmm, (NwM.x - (move * PLAYER.orientation)) + NNM, NwM.y, imageScale);
            if (player.hurt > 0) {
                var mnM = 1;
                player.hurt -= delta;
                var value = 0;
                if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300);
                else {
                    value = MathUtils.Ease.outQuad(player.hurt / 150);
                    mnM += (1 - value) * 0.2;
                }
                offsetX += (window.Math.cos(player.hurtAngle) * value) * 3;
                offsetY += (window.Math.sin(player.hurtAngle) * value) * 3;
                ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, mnM);
                ctx.globalAlpha = 1;
            }
            if (player.heal > 0) {
                var mnM = 1;
                player.heal -= delta;
                if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300)));
                else {
                    var value = MathUtils.Ease.outQuad(player.heal / 150);
                    mnM += (1 - value) * 0.2;
                    ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                }
                CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, mnM);
                ctx.globalAlpha = 1;
            }
            CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, imageScale);
            if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, imageScale);
            var breathWeapon = weapon.breathWeapon * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750)));
            NwM = weapon.rightArm;
            MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, NwM.angle + player.angle, ((NwM.x + (move * PLAYER.orientation)) + NWW) + breathWeapon, NwM.y, imageScale);
            var item = weapon.weapon;
            CanvasUtils.drawImageHd(item, offsetX, offsetY, item.angle + player.angle, ((item.x + (move * PLAYER.orientation)) + breathWeapon) + NWW, item.y, imageScale);
        };
        
        function mvwMm(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) {
            var PLAYER = World.players[player.pid];
            var skinType = 0;
            var repellent = PLAYER.repellent - Render.globalTime;
            var withdrawal = PLAYER.withdrawal - Render.globalTime;
            if (repellent > 0) {
                if (withdrawal > 0) skinType = 3;
                else if (PLAYER.withdrawal > 0) skinType = 5;
                else skinType = 1;
            } else if (withdrawal > 0) skinType = 2;
            else if (PLAYER.withdrawal > 0) skinType = 4;
            if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel;
            var skin = mVn.skins[skinType];
            var nmm = 0;
            var NNM = 0;
            var NWW = 0;
            var wnN = 0;
            var Nmm = weapon.rightArm;
            var VnN = weapon.leftArm;
            if (player.hit > 0) {
                player.hit = window.Math.max(0, player.hit - delta);
                value = (player.hit > weapon.impactClient) ? (1 - ((player.hit - weapon.impactClient) / (weapon.delay - weapon.impactClient))) : (player.hit / weapon.impactClient);
                nmm = -MathUtils.Ease.inOutQuad(value) * 0.4;
                wnN = value * 3;
                NNM = value * VnN.distance;
                NWW = value * Nmm.distance;
            } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) {
                PLAYER.breath = (PLAYER.breath + delta) % 1500;
                if (PLAYER.move !== 0) {
                    if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move;
                    PLAYER.move = PLAYER.move + delta;
                    if (PLAYER.move > 800) PLAYER.move = 0;
                }
            } else {
                if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9);
                else PLAYER.move = PLAYER.move + delta;
                if (PLAYER.move > 800) {
                    PLAYER.orientation *= -1;
                    PLAYER.move = PLAYER.move % 800;
                }
                if (PLAYER.breath !== 0) {
                    if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath;
                    PLAYER.breath = PLAYER.breath + delta;
                    if (PLAYER.breath > 1500) PLAYER.breath = 0;
                }
            }
            var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750)));
            var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400)));
            var item = weapon.weapon;
            CanvasUtils.drawImageHd2(item, offsetX, offsetY, (item.angle + player.angle) + breath, item.x + (move * PLAYER.orientation), item.y, imageScale, nmm * item.rotation, item.x2, item.y2);
            var MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, ((Nmm.angle + player.angle) + breath) + (nmm * Nmm.rotation), (Nmm.x + (move * PLAYER.orientation)) + NWW, Nmm.y, imageScale);
            MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, ((-VnN.angle + player.angle) + breath) + (nmm * VnN.rotation), (VnN.x + (move * PLAYER.orientation)) + NNM, VnN.y, imageScale);
            if (player.hurt > 0) {
                var mnM = 1;
                player.hurt -= delta;
                var value = 0;
                if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300);
                else {
                    value = MathUtils.Ease.outQuad(player.hurt / 150);
                    mnM += (1 - value) * 0.2;
                }
                offsetX += (window.Math.cos(player.hurtAngle) * value) * 3;
                offsetY += (window.Math.sin(player.hurtAngle) * value) * 3;
                ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, mnM);
                ctx.globalAlpha = 1;
            }
            if (player.heal > 0) {
                var mnM = 1;
                player.heal -= delta;
                if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300)));
                else {
                    var value = MathUtils.Ease.outQuad(player.heal / 150);
                    mnM += (1 - value) * 0.2;
                    ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                }
                CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, mnM);
                ctx.globalAlpha = 1;
            }
            CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, imageScale);
            if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, imageScale);
        };
        
        function mmmMw(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) {
            var PLAYER = World.players[player.pid];
            var skinType = 0;
            var repellent = PLAYER.repellent - Render.globalTime;
            var withdrawal = PLAYER.withdrawal - Render.globalTime;
            if (repellent > 0) {
                if (withdrawal > 0) skinType = 3;
                else if (PLAYER.withdrawal > 0) skinType = 5;
                else skinType = 1;
            } else if (withdrawal > 0) skinType = 2;
            else if (PLAYER.withdrawal > 0) skinType = 4;
            if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel;
            var skin = mVn.skins[skinType];
            var NNM = 0;
            var NWW = 0;
            if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) {
                PLAYER.breath = (PLAYER.breath + delta) % 1500;
                if (PLAYER.move !== 0) {
                    if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move;
                    PLAYER.move = PLAYER.move + delta;
                    if (PLAYER.move > 800) PLAYER.move = 0;
                }
            } else {
                if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9);
                else PLAYER.move = PLAYER.move + delta;
                if (PLAYER.move > 800) {
                    PLAYER.orientation *= -1;
                    PLAYER.move = PLAYER.move % 800;
                }
                if (PLAYER.breath !== 0) {
                    if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath;
                    PLAYER.breath = PLAYER.breath + delta;
                    if (PLAYER.breath > 1500) PLAYER.breath = 0;
                }
            }
            var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750)));
            var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400)));
            var NwM = weapon.rightArm;
            var MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, (NwM.angle + player.angle) + breath, (NwM.x + (move * PLAYER.orientation)) + NWW, NwM.y, imageScale);
            NwM = weapon.leftArm;
            MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, (-NwM.angle + player.angle) - breath, (NwM.x - (move * PLAYER.orientation)) + NNM, NwM.y, imageScale);
            CanvasUtils.drawImageHd(weapon.blueprint, offsetX, offsetY, ((-NwM.angle + player.angle) - breath) + (window.Math.PI / 3), ((NwM.x - (move * PLAYER.orientation)) + NNM) - 40, NwM.y - 15, imageScale);
            if (player.hurt > 0) {
                var mnM = 1;
                player.hurt -= delta;
                var value = 0;
                if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300);
                else {
                    value = MathUtils.Ease.outQuad(player.hurt / 150);
                    mnM += (1 - value) * 0.2;
                }
                offsetX += (window.Math.cos(player.hurtAngle) * value) * 3;
                offsetY += (window.Math.sin(player.hurtAngle) * value) * 3;
                ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle, 0, 0, mnM);
                ctx.globalAlpha = 1;
            }
            if (player.heal > 0) {
                var mnM = 1;
                player.heal -= delta;
                if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300)));
                else {
                    var value = MathUtils.Ease.outQuad(player.heal / 150);
                    mnM += (1 - value) * 0.2;
                    ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                }
                CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle, 0, 0, mnM);
                ctx.globalAlpha = 1;
            }
            CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle, 0, 0, imageScale);
            if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle, 0, 0, imageScale);
            CanvasUtils.drawImageHd(weapon.pencil, offsetX, offsetY, player.angle, 0, 0, imageScale);
        };
        var nVWnV = [0, 0, 0, 0];
        
        function placingobj() {
            var nwmVM = 0;
            if ((World.PLAYER.isBuilding === 1) && (World.PLAYER.blueprint !== 0)) {
                var item = INVENTORY[World.PLAYER.blueprint];
                if (item.subtype !== 0) {
                    item = item.subtype[World.PLAYER.furniture];
                    item.redprint = item.building;
                    item.blueprint = item.building;
                    item.xCenter = nVWnV;
                    item.yCenter = nVWnV;
                }
                var angle = Mouse.angle;
                var rotation = (item.wall === 1) ? 0 : World.PLAYER.buildRotate;
                World.PLAYER.jBuild = World.PLAYER._j + window.Math.floor((__TILE_SIZE2__ + (window.Math.cos(angle) * __TILE_SIZE__)) / __TILE_SIZE__);
                World.PLAYER.iBuild = World.PLAYER._i + window.Math.floor((__TILE_SIZE2__ + (window.Math.sin(angle) * __TILE_SIZE__)) / __TILE_SIZE__);
                var offsetX = ((item.xCenter[rotation] + vertst) + __TILE_SIZE2__) + (__TILE_SIZE__ * World.PLAYER.jBuild);
                var offsetY = ((item.yCenter[rotation] + horist) + __TILE_SIZE2__) + (__TILE_SIZE__ * World.PLAYER.iBuild);
                if ((((World.PLAYER.jBuild >= 0) && (World.PLAYER.iBuild >= 0)) && (World.PLAYER.jBuild < worldWidth)) && (World.PLAYER.iBuild < worldHeight)) {
                    var VMV = matrix[World.PLAYER.iBuild][World.PLAYER.jBuild];
                    var team = (World.PLAYER.team === -1) ? -2 : World.PLAYER.team;
                    if ((VMV.tile === frameId) && (((item.zid !== 2) || (VMV.tilePid === 0)) || (VMV.category === SKILLS.__PLANT__))) {
                        World.PLAYER.canBuild = 1; // before 0
                        CanvasUtils.drawImageHd(item.redprint, offsetX, offsetY, rotation * PIby2, 0, 0, 1);
                    } else if ((((item.detail.category === SKILLS.__PLANT__) || (item.zid === 2)) || (((VMV.pid !== 0) && (VMV.pid !== World.PLAYER.id)) && (World.players[VMV.pid].team !== team))) && (VMV.ground === frameId)) {
                        World.PLAYER.canBuild = 0;
                        CanvasUtils.drawImageHd(item.redprint, offsetX, offsetY, rotation * PIby2, 0, 0, 1);
                    } else if ((item.iTile !== window.undefined) && ((((rotation % 2) === 0) && ((((((World.PLAYER.iBuild < 1) || (World.PLAYER.iBuild >= (worldHeight - 1))) || (matrix[World.PLAYER.iBuild + 1][World.PLAYER.jBuild].tile === frameId)) || ((matrix[World.PLAYER.iBuild + 1][World.PLAYER.jBuild].ground === frameId) && (((matrix[World.PLAYER.iBuild + 1][World.PLAYER.jBuild].pid !== World.PLAYER.id) && (matrix[World.PLAYER.iBuild + 1][World.PLAYER.jBuild].pid !== 0)) && (World.players[matrix[World.PLAYER.iBuild + 1][World.PLAYER.jBuild].pid].team !== team)))) || (matrix[World.PLAYER.iBuild - 1][World.PLAYER.jBuild].tile === frameId)) || ((matrix[World.PLAYER.iBuild - 1][World.PLAYER.jBuild].ground === frameId) && (((matrix[World.PLAYER.iBuild - 1][World.PLAYER.jBuild].pid !== World.PLAYER.id) && (matrix[World.PLAYER.iBuild - 1][World.PLAYER.jBuild].pid !== 0)) && (World.players[matrix[World.PLAYER.iBuild - 1][World.PLAYER.jBuild].pid].team !== team))))) || (((rotation % 2) === 1) && (((((((World.PLAYER.jBuild < 1) || (World.PLAYER.jBuild >= (worldWidth - 1))) || (matrix[World.PLAYER.iBuild][World.PLAYER.jBuild + 1].tile === frameId)) || ((matrix[World.PLAYER.iBuild][World.PLAYER.jBuild + 1].ground === frameId) && (((matrix[World.PLAYER.iBuild][World.PLAYER.jBuild + 1].pid !== World.PLAYER.id) && (matrix[World.PLAYER.iBuild][World.PLAYER.jBuild + 1].pid !== 0)) && (World.players[matrix[World.PLAYER.iBuild][World.PLAYER.jBuild + 1].pid].team !== team)))) || (matrix[World.PLAYER.iBuild][World.PLAYER.jBuild - 1].tile === frameId)) || ((matrix[World.PLAYER.iBuild][World.PLAYER.jBuild - 1].ground === frameId) && (((matrix[World.PLAYER.iBuild][World.PLAYER.jBuild - 1].pid !== World.PLAYER.id) && (matrix[World.PLAYER.iBuild][World.PLAYER.jBuild - 1].pid !== 0)) && (World.players[matrix[World.PLAYER.iBuild][World.PLAYER.jBuild - 1].pid].team !== team)))) || (World.PLAYER._i === World.PLAYER.iBuild))))) {
                        World.PLAYER.canBuild = 0;
                        CanvasUtils.drawImageHd(item.redprint, offsetX, offsetY, rotation * PIby2, 0, 0, 1);
                    } else {
                        World.PLAYER.canBuild = 1;
                        CanvasUtils.drawImageHd(item.blueprint, offsetX, offsetY, rotation * PIby2, 0, 0, 1);
                    }
                }
                if (hintRotate.isLoaded !== 1) {
                    hintRotate = CanvasUtils.loadImage(IMG_HINT_ROTATE, hintRotate);
                    return;
                }
                if ((item.wall === 1) || (World.PLAYER.interaction >= 0)) nwmVM = window.Math.max(0, World.PLAYER.hintRotate - delta);
                else nwmVM = window.Math.min(900, World.PLAYER.hintRotate + delta);
            } else nwmVM = window.Math.max(0, World.PLAYER.hintRotate - delta);
            if (nwmVM > 0) {
                ctx.globalAlpha = MathUtils.Ease.outQuad(window.Math.max(0, nwmVM - 600) / 300);
                var imageScale = scaleby + (WvmnV * scaleby);
                var vNwMN = imageScale / scaleby;
                var width = (scaleby * hintRotate.width) / 2;
                var height = (scaleby * hintRotate.height) / 2;
                ctx.drawImage(hintRotate, ((vertst + NmM) * scaleby) - (width / 2), window.Math.max(10 * scaleby, ((((horist + WWV) * scaleby) - (height / 2)) - (65 * scaleby)) - (60 * scaleby)), width, height);
                ctx.globalAlpha = 1;
            }
            World.PLAYER.hintRotate = nwmVM;
        };

        function nwMNv(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) {
            var PLAYER = World.players[player.pid];
            var skinType = 0;
            var repellent = PLAYER.repellent - Render.globalTime;
            var withdrawal = PLAYER.withdrawal - Render.globalTime;
            if (repellent > 0) {
                if (withdrawal > 0) skinType = 3;
                else if (PLAYER.withdrawal > 0) skinType = 5;
                else skinType = 1;
            } else if (withdrawal > 0) skinType = 2;
            else if (PLAYER.withdrawal > 0) skinType = 4;
            if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel;
            var skin = mVn.skins[skinType];
            var nmm = 0;
            var NNM = 0;
            var NWW = 0;
            var wnN = 0;
            if (player.hit > 0) {
                player.hit = window.Math.max(0, player.hit - delta);
                player.hit = window.Math.min(player.hit, weapon.delay);
                value = (player.hit > weapon.impactClient) ? (1 - ((player.hit - weapon.impactClient) / (weapon.delay - weapon.impactClient))) : (player.hit / weapon.impactClient);
                nmm = (PLAYER.punch * MathUtils.Ease.inOutQuad(value)) * 0.55;
                wnN = value * 3;
                if (PLAYER.punch === 1) NNM = value * 25;
                else NWW = value * 25;
                if (player.hit === 0) PLAYER.punch *= -1;
            } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) {
                PLAYER.breath = (PLAYER.breath + delta) % 1500;
                if (PLAYER.move !== 0) {
                    if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move;
                    PLAYER.move = PLAYER.move + delta;
                    if (PLAYER.move > 800) PLAYER.move = 0;
                }
            } else {
                if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9);
                else PLAYER.move = PLAYER.move + delta;
                if (PLAYER.move > 800) {
                    PLAYER.orientation *= -1;
                    PLAYER.move = PLAYER.move % 800;
                }
                if (PLAYER.breath !== 0) {
                    if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath;
                    PLAYER.breath = PLAYER.breath + delta;
                    if (PLAYER.breath > 1500) PLAYER.breath = 0;
                }
            }
            var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750)));
            var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400)));
            var NwM = weapon.rightArm;
            var MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, ((NwM.angle + player.angle) + breath) + nmm, (NwM.x + (move * PLAYER.orientation)) + NWW, NwM.y, imageScale);
            NwM = weapon.leftArm;
            MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm;
            CanvasUtils.drawImageHd(MVn, offsetX, offsetY, ((-NwM.angle + player.angle) - breath) + nmm, (NwM.x - (move * PLAYER.orientation)) + NNM, NwM.y, imageScale);
            if (player.hurt2 > 0) {
                var mnM = 1;
                player.hurt2 -= delta;
                var value = 0;
                if (player.hurt2 > 150) value = MathUtils.Ease.inQuad((300 - player.hurt2) / 300);
                else {
                    value = MathUtils.Ease.outQuad(player.hurt2 / 150);
                    mnM += (1 - value) * 0.2;
                }
                ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                CanvasUtils.drawImageHd(mVn.food, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, mnM);
                ctx.globalAlpha = 1;
            }
            if (player.hurt > 0) {
                var mnM = 1;
                player.hurt -= delta;
                var value = 0;
                if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300);
                else {
                    value = MathUtils.Ease.outQuad(player.hurt / 150);
                    mnM += (1 - value) * 0.2;
                }
                offsetX += (window.Math.cos(player.hurtAngle) * value) * 3;
                offsetY += (window.Math.sin(player.hurtAngle) * value) * 3;
                ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, mnM);
                ctx.globalAlpha = 1;
            }
            if (player.heal > 0) {
                var mnM = 1;
                player.heal -= delta;
                if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300)));
                else {
                    var value = MathUtils.Ease.outQuad(player.heal / 150);
                    mnM += (1 - value) * 0.2;
                    ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                }
                CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, mnM);
                ctx.globalAlpha = 1;
            }
            CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, imageScale);
            if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, imageScale);
        };

        function _EntitieAI(player) {
            var entitie = AI[player.extra & 15];
            matrix[player.i][player.j].tile = frameId;
            matrix[player.i][player.j].tilePid = player.pid;
            matrix[player.i][player.j].category = window.undefined;
            var imageScale = 1;
            var offsetX = vertst + player.x;
            var offsetY = horist + player.y;
            if (player.removed !== 0) {
                player.death += delta;
                var value = MathUtils.Ease.outQuart(1 - ((player.death - 500) / 400));
                ctx.globalAlpha = window.Math.min(window.Math.max(0, value), 1);
                CanvasUtils.drawImageHd(entitie.death, offsetX, offsetY, player.angle, 0, 0, 1);
                value = MathUtils.Ease.outQuart(1 - (player.death / 400));
                imageScale = window.Math.min(1 + (0.5 * (1 - value)), 1.5);
                ctx.globalAlpha = window.Math.max(0, value);
            }
            if ((player.extra & 16) === 16) {
                player.extra &= ~16;
                player.hurt = 250;
                player.hurtAngle = (PI2 * ((player.extra >> 5) & 31)) / 31;
            }
            entitie.draw(entitie, player, offsetX, offsetY, imageScale);
            if (player.removed !== 0) {
                if (player.death > 900) player.removed = 2;
                ctx.globalAlpha = 1;
            }
        };

        function _EntitiePlayer(player) {
            matrix[player.i][player.j].tile = frameId;
            matrix[player.i][player.j].tilePid = player.pid;
            matrix[player.i][player.j].category = window.undefined;
            var mVn = ENTITIES[__ENTITIE_PLAYER__];
            var MNmnm = (player.extra >> 8) & 255;
            var weapon = mVn.weapons[MNmnm];
            var wVn = mVn.clothes[player.extra & 255];
            var imageScale = 1;
            var Vmwnn = player.state & 254;
            var offsetX = vertst + player.x;
            var offsetY = horist + player.y;
            if (player.removed !== 0) {
                player.death += delta;
                var value = MathUtils.Ease.outQuart(1 - ((player.death - 500) / 400));
                ctx.globalAlpha = window.Math.min(window.Math.max(0, value), 1);
                CanvasUtils.drawImageHd(mVn.death, offsetX, offsetY, player.angle, 0, 0, 1);
                value = MathUtils.Ease.outQuart(1 - (player.death / 400));
                imageScale = window.Math.min(1 + (0.5 * (1 - value)), 1.5);
                ctx.globalAlpha = window.Math.max(0, value);
            }
            if (Vmwnn === 2) {
                player.state &= 65281;
                if (AudioUtils._fx.shot[MNmnm] !== 0) {
                    var VVmnw = window.Math.floor(window.Math.random() * weapon.soundLen);
                    AudioUtils.playFx(AudioUtils._fx.shot[MNmnm][VVmnw], weapon.soundVolume, Math2d.distance(World.PLAYER.x, World.PLAYER.y, player.x, player.y) / 4, weapon.soundDelay);
                }
                if (player.hit <= 0) {
                    player.hit = weapon.delay;
                    player.hitMax = weapon.delay;
                }
            } else if (Vmwnn === 6) player.state &= 65281;
            switch (weapon.type) {
                case 0:
                    nwMNv(mVn, weapon, wVn, player, imageScale, offsetX, offsetY);
                    break;
                case 1:
                    mvwMm(mVn, weapon, wVn, player, imageScale, offsetX, offsetY);
                    break;
                case 2:
                    vwVWm(mVn, weapon, wVn, player, imageScale, offsetX, offsetY);
                    break;
                case 3:
                    mWNvw(mVn, weapon, wVn, player, imageScale, offsetX, offsetY);
                    break;
                case 4:
                    WVVmN(mVn, weapon, wVn, player, imageScale, offsetX, offsetY);
                    break;
                case 5:
                    Wvmnw(mVn, weapon, wVn, player, imageScale, offsetX, offsetY);
                    break;
                case 6:
                    mmmMw(mVn, weapon, wVn, player, imageScale, offsetX, offsetY);
                    break;
            }
            if (player.removed !== 0) {
                if (player.death > 900) player.removed = 2;
                ctx.globalAlpha = 1;
            }

        };
        
        function _Interaction() {
            if (World.PLAYER.ghoul !== 0) return;
            var timer = World.PLAYER.wrongToolTimer;
            if (timer > 0) {
                if (timer < 500) ctx.globalAlpha = MathUtils.Ease.inQuad(timer / 500);
                else if (timer > 1500) ctx.globalAlpha = MathUtils.Ease.inQuad(1 - ((timer - 1500) / 500));
                else ctx.globalAlpha = 1;
                var tool = (World.PLAYER.wrongTool === 1) ? vwnWv : LOOT[INVENTORY[World.PLAYER.wrongTool].loot];
                CanvasUtils.drawImageHd(wrongTool, canw2ns, 50, 0, 0, 0, 1);
                CanvasUtils.drawImageHd(tool, canw2ns, 50, 0, 0, 0, 1);
                ctx.globalAlpha = 1;
                World.PLAYER.wrongToolTimer -= delta;
            }
            var interaction = World.PLAYER.interaction;
            switch (interaction) {
                case 0:
                    if (nMWVv.isLoaded !== 1) {
                        if (isTouchScreen === 0) nMWVv = CanvasUtils.loadImage(IMG_LOOT, nMWVv);
                        else nMWVv = CanvasUtils.loadImage(IMG_LOOT_TOUCH, nMWVv);
                        return;
                    }
                    var imageScale = scaleby + (WvmnV * scaleby);
                    var vNwMN = imageScale / scaleby;
                    var scalex = (scaleby * nMWVv.width) / 2;
                    var scaley = (scaleby * nMWVv.height) / 2;
                    var posx = ((vertst + NmM) * imageScale) - (scalex / 2);
                    var posy = window.Math.max(10 * scaleby, ((((horist + WWV) * imageScale) - (scaley / 2)) - (65 * imageScale)) - (60 * scaleby));
                    if (isTouchScreen === 1) {
                        Game.xInteract = posx;
                        Game.yInteract = posy;
                        Game.widthInteract = scalex;
                        Game.heightInteract = scaley;
                    }
                    ctx.drawImage(nMWVv, posx, posy, scalex, scaley);
                    var loot = LOOT[World.PLAYER.loot];
                    posx = ((vertst + NmM) * vNwMN) - (scalex / (2 * scaleby));
                    posy = window.Math.max(10, ((((horist + WWV) * vNwMN) - (scaley / (2 * scaleby))) - (65 * vNwMN)) - 60);
                    CanvasUtils.drawImageHd(loot, posx + 77, posy + 33, loot.angle, 0, 0, loot.scale);
                    break;
                case 1:
                    var value = World.PLAYER.interactionDelay / World.PLAYER.interactionWait;
                    var delay = World.PLAYER.interactionWait - World.PLAYER.interactionDelay;
                    World.PLAYER.interactionDelay -= delta;
                    if (World.PLAYER.interactionDelay < 0) {
                        World.PLAYER.interaction = -1;
                        return;
                    }
                    if (useTimer.isLoaded !== 1) {
                        useTimer = CanvasUtils.loadImage(IMG_TIMER, useTimer);
                        return;
                    }
                    if (arrow.isLoaded !== 1) {
                        arrow = CanvasUtils.loadImage(IMG_TIMER_ARROW, arrow);
                        return;
                    }
                    if (lights.isLoaded !== 1) {
                        lights = CanvasUtils.loadImage(IMG_TIMER_LIGHTS, lights);
                        return;
                    }
                    var imageScale = scaleby + (WvmnV * scaleby);
                    var scalex = (scaleby * useTimer.width) / 2;
                    var scaley = (scaleby * useTimer.height) / 2;
                    var _x = (vertst + NmM) * imageScale;
                    var _y = (horist + WWV) * imageScale;
                    var posx = _x - (scalex / 2);
                    var posy = window.Math.max(10 * imageScale, ((_y - (scaley / 2)) - (65 * imageScale)) - (60 * scaleby));
                    if (delay < 100) ctx.globalAlpha = delay / 100;
                    else if (World.PLAYER.interactionDelay < 100) ctx.globalAlpha = World.PLAYER.interactionDelay / 100;
                    ctx.drawImage(useTimer, posx, posy, scalex, scaley); 
                    ctx.save();
                    ctx.translate(_x, window.Math.max((10 * imageScale) + (scaley / 2), (_y - (65 * imageScale)) - (60 * scaleby)));
                    ctx.rotate(-PI2 * value);
                    ctx.drawImage(arrow, -scalex / 2, -scaley / 2, scalex, scaley);
                    ctx.restore();
                    ctx.drawImage(lights, posx, posy, scalex, scaley);
                    ctx.globalAlpha = 1;
                    break;
                case 2:
                    var img = World.PLAYER.eInteract.img;
                    if (img.isLoaded !== 1) {
                        if (isTouchScreen === 0) World.PLAYER.eInteract.img = CanvasUtils.loadImage(World.PLAYER.eInteract.src, img);
                        else World.PLAYER.eInteract.img = CanvasUtils.loadImage(World.PLAYER.eInteract.src.replace("e-", "e-isTouchScreen-"), img);
                        return;
                    }
                    var imageScale = scaleby + (WvmnV * scaleby);
                    var scalex = (scaleby * img.width) / 2;
                    var scaley = (scaleby * img.height) / 2;
                    var posx;
                    if (World.PLAYER.extraLoot === 1) posx = (((vertst + NmM) - 5) * imageScale) - scalex;
                    else posx = ((vertst + NmM) * imageScale) - (scalex / 2);
                    var posy = window.Math.max(10 * scaleby, ((((horist + WWV) * imageScale) - (scaley / 2)) - (65 * imageScale)) - (60 * scaleby));
                    if (isTouchScreen === 1) {
                        Game.xInteract = posx;
                        Game.yInteract = posy;
                        Game.widthInteract = scalex;
                        Game.heightInteract = scaley;
                    }
                    ctx.drawImage(img, posx, posy, scalex, scaley);
                    if (World.PLAYER.extraLoot === 1) {
                        if (VWvVN.isLoaded !== 1) {
                            if (isTouchScreen === 0) VWvVN = CanvasUtils.loadImage(IMG_LOOT2, VWvVN);
                            else VWvVN = CanvasUtils.loadImage(IMG_LOOT_TOUCH, nMWVv);
                            return;
                        }
                        var vNwMN = imageScale / scaleby;
                        scalex = (scaleby * VWvVN.width) / 2;
                        scaley = (scaleby * VWvVN.height) / 2;
                        posx += scalex + (10 * scaleby);
                        posy = window.Math.max(10 * scaleby, ((((horist + WWV) * imageScale) - (scaley / 2)) - (65 * imageScale)) - (60 * scaleby));
                        if (isTouchScreen === 1) {
                            Game.xInteract2 = posx;
                            Game.yInteract2 = posy;
                        }
                        ctx.drawImage(VWvVN, posx, posy, scalex, scaley);
                        var loot = LOOT[World.PLAYER.loot];
                        posx = ((vertst + NmM) * vNwMN) + 5;
                        posy = window.Math.max(10, ((((horist + WWV) * vNwMN) - (scaley / (2 * scaleby))) - (65 * vNwMN)) - 60);
                        CanvasUtils.drawImageHd(loot, posx + 77, posy + 33, loot.angle, 0, 0, loot.scale);
                    }
                    break;
            }
        };
        var nMVNv = 0;
        var WvWmM = 0;
        var PARTICLE = {
            id: -1,
            uid: -1
        };

        function vNwNM(player, id, distance, amount) {
            if ((setParticles === 0) || (id === PARTICLESID.__NOTHING__)) return;
            else if (setParticles === 2) amount *= 3;
            if ((Entitie.border[__ENTITIE_PARTICLES__].border + amount) >= wnNWM) return;
            for (var i = 0; i < amount; i++) {
                var N = window.Math.random();
                var angle = ((N * 10) % 1) * PI2;
                var MMwmm = distance + (((N * 10000) % 1) * 25);
                distance += 8;
                WvWmM = (WvWmM + 1) % wnNWM;
                var newEntityIndex = WvWmM + Entitie.maxUnitsMaster;
                nMVNv += 1;
                var particle = Entitie.get(0, newEntityIndex, nMVNv, __ENTITIE_PARTICLES__);
                setEntitie(particle, 0, nMVNv, newEntityIndex, __ENTITIE_PARTICLES__, player.px, player.py, player.px + (window.Math.cos(angle) * MMwmm), player.py + (window.Math.sin(angle) * MMwmm), window.Math.floor(N * PARTICLES[id].length), ((N * 100) % 1) * 255, id);
            }
        };

        function _Particles(particle) {
            var img = PARTICLES[particle.state][particle.extra];
            if (particle.death > 0) {
                particle.death = window.Math.min(1, particle.death + (delta / 500));
                ctx.globalAlpha = 1 - particle.death;
                CanvasUtils.drawImageHd(img, vertst + particle.x, horist + particle.y, particle.angle, 0, 0, 1);
                ctx.globalAlpha = 1;
                if (particle.death === 1) {
                    PARTICLE.id = particle.id;
                    PARTICLE.uid = particle.uid;
                }
                return;
            } else if (Math2d.fastDist(particle.x, particle.y, particle.nx, particle.ny) < 0.01) particle.death = 0.001;
            CanvasUtils.drawImageHd(img, vertst + particle.x, horist + particle.y, particle.angle, 0, 0, 1);
        };

        function _Dynamite(item, dynamite, offsetX, offsetY, rotation, imageScale) {
            dynamite.breath = (dynamite.breath + delta) % 500;
            var value = dynamite.breath / 500;
            var mnM = 0.95 + (0.3 * MathUtils.Ease.inOutQuad(value));
            ctx.globalAlpha = 1 - value;
            CanvasUtils.drawImageHd(item.building[1], (vertst + dynamite.x) + offsetX, (horist + dynamite.y) + offsetY, rotation * PIby2, 0, 0, mnM);
            ctx.globalAlpha = 1;
            CanvasUtils.drawImageHd(item.building[0], (vertst + dynamite.x) + offsetX, (horist + dynamite.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
        };
        
        
        function _Spike(item, spike, offsetX, offsetY, rotation, imageScale) {
            var isVisible = 0;
            var isInClan = 0;
            var triggered = 1;
            if ((spike.state & 16) === 16) triggered = 0;
            if (((spike.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[spike.pid].team)) && (World.players[spike.pid].teamUid === World.teams[World.PLAYER.team].uid))) || (Math2d.fastDist(NmM, WWV, spike.x, spike.y) < 52000)) isVisible = 1;
            if (((spike.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[spike.pid].team)) && (World.players[spike.pid].teamUid === World.teams[World.PLAYER.team].uid)))) isInClan = 1;
        
            if (MOD.showSpikes){

                if (triggered === 0) {
                    if (spike.hurt2 === 0) vNwNM(spike, item.particles, item.particlesDist, 5);
                    if (spike.hurt2 < 300) {
                        offsetX += (window.Math.random() * 6) - 4;
                        offsetY += (window.Math.random() * 6) - 4;
                        spike.hurt2 += delta;
                    }
                    CanvasUtils.drawImageHd(item.deployed[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                } else if (isInClan === 1) {
                    CanvasUtils.drawImageHd(item.hidden[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                    ctx.globalAlpha = 0.2;
                    CanvasUtils.drawImageHd(LIGHTFIRE[5], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, 0, 0, 0, 0.6);
                    ctx.globalAlpha = 1;
                } else if (isInClan === 0) {
                    CanvasUtils.drawImageHd(item.hidden[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                    ctx.globalAlpha = 0.2;
                    CanvasUtils.drawImageHd(LIGHTFIRE[4], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, 0, 0, 0, 0.6);
                    ctx.globalAlpha = 1;
                }

            } else {
                if (triggered === 0) {
                    if (spike.hurt2 === 0) vNwNM(spike, item.particles, item.particlesDist, 5);
                    if (spike.hurt2 < 300) {
                        offsetX += (window.Math.random() * 6) - 4;
                        offsetY += (window.Math.random() * 6) - 4;
                        spike.hurt2 += delta;
                    }
                    if (spike.breath > 0) {
                        spike.breath = window.Math.max(0, spike.breath - (delta / 5));
                        ctx.globalAlpha = MathUtils.Ease.inOutQuad(spike.breath / 300);
                        CanvasUtils.drawImageHd(item.hidden[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                        ctx.globalAlpha = 1;
                    }
                    CanvasUtils.drawImageHd(item.deployed[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                } else if (isVisible === 1) {
                    if (spike.breath === 300) CanvasUtils.drawImageHd(item.hidden[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                    else {
                        spike.breath = window.Math.min(300, spike.breath + delta);
                        ctx.globalAlpha = MathUtils.Ease.inOutQuad(spike.breath / 300);
                        CanvasUtils.drawImageHd(item.hidden[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                        ctx.globalAlpha = 1;
                    }
                } else if ((isVisible === 0) && (spike.breath > 0)) {
                    spike.breath = window.Math.max(0, spike.breath - (delta / 5));
                    ctx.globalAlpha = MathUtils.Ease.inOutQuad(spike.breath / 300);
                    CanvasUtils.drawImageHd(item.hidden[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                    ctx.globalAlpha = 1;
                }
        }
        };
        
        function _HiddenBuilding(item, building, offsetX, offsetY, rotation, imageScale) {
            if (MOD.showWires) {CanvasUtils.drawImageHd(item.building, (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale)} 
            else {
                var isVisible = 0;
                if (((building.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[building.pid].team)) && (World.players[building.pid].teamUid === World.teams[World.PLAYER.team].uid))) || (Math2d.fastDist(NmM, WWV, building.x, building.y) < 52000)) isVisible = 1;
                //CanvasUtils.drawImageHd(item.building, (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
        
                if (isVisible === 1) {
                    if (building.breath === 300) CanvasUtils.drawImageHd(item.building, (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                    else {
                        building.breath = window.Math.min(300, building.breath + delta);
                        ctx.globalAlpha = MathUtils.Ease.inOutQuad(building.breath / 300);
                        CanvasUtils.drawImageHd(item.building, (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                        ctx.globalAlpha = 1;
                    }
                }
                else if ((isVisible === 0) && (building.breath > 0)) {
                    building.breath = window.Math.max(0, building.breath - (delta / 5));
                    ctx.globalAlpha = MathUtils.Ease.inOutQuad(building.breath / 300);
                    CanvasUtils.drawImageHd(item.building, (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                    ctx.globalAlpha = 1;
                }
            }
        };
        
        function _Landmine(item, landmine, offsetX, offsetY, rotation, imageScale) {
            var isVisible = 0;
            var isInClan = 0;
            if (((landmine.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[landmine.pid].team)) && (World.players[landmine.pid].teamUid === World.teams[World.PLAYER.team].uid))) || (Math2d.fastDist(NmM, WWV, landmine.x, landmine.y) < 52000)) isVisible = 1;
            if (((landmine.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[landmine.pid].team)) && (World.players[landmine.pid].teamUid === World.teams[World.PLAYER.team].uid)))) isInClan = 1;
            
            if (MOD.showLandmines) {
                if (isVisible === 1) {
                    CanvasUtils.drawImageHd(item.building[landmine.id % 3], (vertst + landmine.x) + offsetX, (horist + landmine.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                    ctx.globalAlpha = 0.2;
                    CanvasUtils.drawImageHd(LIGHTFIRE[5], (vertst + landmine.x) + offsetX, (horist + landmine.y) + offsetY, 0, 0, 0, 0.6);
                    ctx.globalAlpha = 1;
                }
            
                else if (isVisible === 0) {
                    CanvasUtils.drawImageHd(item.building[landmine.id % 3], (vertst + landmine.x) + offsetX, (horist + landmine.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                    ctx.globalAlpha = 0.2;
                    CanvasUtils.drawImageHd(LIGHTFIRE[4], (vertst + landmine.x) + offsetX, (horist + landmine.y) + offsetY, 0, 0, 0, 0.6);
                    ctx.globalAlpha = 1; 
            
                }
            } else {
            
                if (isVisible === 1) {
                    landmine.breath = window.Math.min(300, landmine.breath + delta);
                    ctx.globalAlpha = MathUtils.Ease.inOutQuad(landmine.breath / 300);
                    CanvasUtils.drawImageHd(item.building[landmine.id % 3], (vertst + landmine.x) + offsetX, (horist + landmine.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                    ctx.globalAlpha = 1;
                }
            
                else if (isVisible === 0) {
                    landmine.breath = window.Math.min(300, landmine.breath + delta / 5);
                    ctx.globalAlpha = MathUtils.Ease.inOutQuad(landmine.breath / 300);
                    CanvasUtils.drawImageHd(item.building[landmine.id % 3], (vertst + landmine.x) + offsetX, (horist + landmine.y) + offsetY, rotation * PIby2, 0, 0, imageScale)
                    ctx.globalAlpha = 1;

            
                }
            }
        };
        
        function _DefaultBuilding(item, building, offsetX, offsetY, rotation, imageScale) {
            CanvasUtils.drawImageHd(item.building, (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
        };
        
        function _Breakable(item, building, offsetX, offsetY, rotation, imageScale) {
            CanvasUtils.drawImageHd(item.building[building.broke], (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
        };
        
        function _Wall(item, wall, offsetX, offsetY, rotation, imageScale) {
            if (wall.broke > 0) CanvasUtils.drawImageHd(item.broken[wall.broke - 1], (vertst + wall.x) + offsetX, (horist + wall.y) + offsetY, 0, 0, 0, imageScale);
            else CanvasUtils.drawImageHd(item.building[WwmwN(wall)], (vertst + wall.x) + offsetX, (horist + wall.y) + offsetY, 0, 0, 0, imageScale);
        };
        
        function handleProximity(item, player, checkPid) {
            if ((((player.removed === 0) && (World.PLAYER.interaction !== 1)) && (World.PLAYER.isInBuilding !== 1)) && (((checkPid === 0) || (player.pid === World.PLAYER.id)) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[player.pid].team)) && (World.players[player.pid].teamUid === World.teams[World.PLAYER.team].uid)))) {
                var distance = Math2d.fastDist(NmM, WWV, player.x, player.y);
                if (distance < nearestDistance) {
                    World.PLAYER.packetId = item.packetId;
                    World.PLAYER.buildingId = player.id;
                    World.PLAYER.buildingPid = player.pid;
                    World.PLAYER.buildingArea = item.area;
                    nearestDistance = distance;
                    if (World.PLAYER.interaction === 0) World.PLAYER.extraLoot = 1;
                    World.PLAYER.interaction = 2;
                    World.PLAYER.eInteract = item.interact;
                    return 1;
                }
            }
            return 0;
        };
        
        function _Construction(item, player, offsetX, offsetY, rotation, imageScale) {
            CanvasUtils.drawImageHd(item.builder, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, 1);
            var constructionLevel = (player.state >> 4) & 15;
            if (player.breath2 !== constructionLevel) {
                player.breath2 = constructionLevel;
                player.breath = 0;
            }
            player.breath = player.breath + delta;
            player.heal = (player.heal + delta) % 1000;
            var imageScale = 1 + (0.03 * ((player.heal < 500) ? (player.heal / 500) : (1 - ((player.heal - 500) / 500))));
            if (constructionLevel === 0) {
                ctx.globalAlpha = MathUtils.Ease.inOutQuad(player.breath / item.evolve);
                CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                ctx.globalAlpha = 1;
            } else if (player.breath < item.evolve) {
                var progress = MathUtils.Ease.inOutQuad(player.breath / item.evolve);
                ctx.globalAlpha = 1 - progress;
                CanvasUtils.drawImageHd(item.building[constructionLevel - 1], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                ctx.globalAlpha = progress;
                CanvasUtils.drawImageHd(item.building[constructionLevel], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                ctx.globalAlpha = 1;
            } else CanvasUtils.drawImageHd(item.building[constructionLevel], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
        };
        
        function _TreeSeed(item, player, offsetX, offsetY, rotation, imageScale) {
            var constructionLevel = (player.state >> 4) & 15;
            player.breath = (player.breath + delta) % 1000;
            var imageScale = 1 + (0.01 * ((player.breath < 500) ? (player.breath / 500) : (1 - ((player.breath - 500) / 500))));
            CanvasUtils.drawImageHd(item.building[constructionLevel], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
        };
        
        function _OrangeSeed(item, player, offsetX, offsetY, rotation, imageScale) {
            var constructionLevel = (player.state >> 4) & 15;
            player.breath = (player.breath + delta) % 1000;
            var imageScale = 1 + (0.03 * ((player.breath < 500) ? (player.breath / 500) : (1 - ((player.breath - 500) / 500))));
            CanvasUtils.drawImageHd(item.building[constructionLevel], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
        };
        
        function _LowWall(item, player, offsetX, offsetY, rotation, imageScale) {
            var WVV = (player.broke > 0) ? item.broken[player.broke - 1] : item.building[wmNMv(player, rotation)];
            var img = WVV.img;
            if (img.isLoaded !== 1) {
                WVV.img = CanvasUtils.loadImage(WVV.src, WVV.img);
                return;
            }
            var w = ((scaleby * img.width) / 2) * imageScale;
            var h = ((scaleby * img.height) / 2) * imageScale;
            ctx.save();
            ctx.translate(scaleby * ((vertst + player.x) + offsetX), scaleby * ((horist + player.y) + offsetY));
            ctx.rotate(rotation * PIby2);
            ctx.translate((item.xRotate * scaleby) - (w / 2), (item.yRotate * scaleby) - (h / 2));
            ctx.drawImage(img, -item.xRotate * scaleby, -item.yRotate * scaleby, w, h);
            ctx.restore();
        };
        
        function _AutomaticDoor(item, player, offsetX, offsetY, rotation, imageScale) {
            ctx.globalAlpha = 1;
            var MvVvv = (player.state >> 7) & 1;
            if (MvVvv === 1) player.hitMax = window.Math.min(500, player.hitMax + delta);
            else if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta);
            if ((player.hitMax > 0) && (player.hitMax !== 500)) {
                ctx.globalAlpha = MathUtils.Ease.outQuad(player.hitMax / 500);
                CanvasUtils.drawImageHd(item.building[1][player.broke], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                ctx.globalAlpha = MathUtils.Ease.outQuad(1 - (player.hitMax / 500));
                CanvasUtils.drawImageHd(item.building[0][player.broke], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                ctx.globalAlpha = 1;
            } else CanvasUtils.drawImageHd(item.building[MvVvv][player.broke], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
        };
        
        function _SwitchOff(item, player, offsetX, offsetY, rotation, imageScale) {
            handleProximity(item, player, 0);
            CanvasUtils.drawImageHd(item.building[(player.state >> 4) & 1], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
        };
        
        function _TimerGate(item, player, offsetX, offsetY, rotation, imageScale) {
            handleProximity(item, player, 0);
            CanvasUtils.drawImageHd(item.building[(player.state >> 4) & 3], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
        };
        
        function _Lamp(item, player, offsetX, offsetY, rotation, imageScale) {
            handleProximity(item, player, 0);
            var light = (player.state >> 7) & 1;
            if (light === 1) player.hitMax = window.Math.min(500, player.hitMax + delta);
            else if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta);
            if (player.hitMax > 0) {
                WvnvV[pplonscr++] = player;
                CanvasUtils.drawImageHd(item.buildingOn[(player.state >> 4) & 7], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            } else CanvasUtils.drawImageHd(item.building, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
        };
        
        function _LampLight(player) {
            var item = INVENTORY[player.extra >> 7];
            ctx.globalAlpha = MathUtils.Ease.outQuad(player.hitMax / 500);
            player.breath2 = (player.breath2 + delta) % 5000;
            var breath = player.breath2;
            var imageScale = 1 + (0.09 * ((breath < 2500) ? (breath / 2500) : (1 - ((breath - 2500) / 2500))));
            CanvasUtils.drawImageHd(item.buildingTop[(player.state >> 4) & 7], vertst + player.x, horist + player.y, 0, 0, 0, imageScale);
            ctx.globalAlpha = 1;
        };
        
        
        function _Door(item, player, offsetX, offsetY, rotation, imageScale) {
            var NVNvv = (player.state >> 4) & 1;
            var MWwVn = (player.pid === 0) ? 0 : 1;
            if ((handleProximity(item, player, MWwVn) === 1) && (NVNvv === 1)) World.PLAYER.eInteract = item.interactclose;
            if (player.hit !== NVNvv) {
                player.hitMax = 500;
                player.hit = NVNvv;
            }
            if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta);
            var angle = item.angle;
            if (NVNvv === 0) angle *= MathUtils.Ease.inOutQuad(player.hitMax / 500);
            else angle *= MathUtils.Ease.inOutQuad(1 - (player.hitMax / 500));
            var WVV = (player.broke > 0) ? item.broken[player.broke - 1] : item.building;
            var img = WVV.img;
            if (img.isLoaded !== 1) {
                WVV.img = CanvasUtils.loadImage(WVV.src, WVV.img);
                return;
            }
            var w = ((scaleby * img.width) / 2) * imageScale;
            var h = ((scaleby * img.height) / 2) * imageScale;
            ctx.save();
            ctx.translate(scaleby * ((vertst + player.x) + offsetX), scaleby * ((horist + player.y) + offsetY));
            ctx.rotate(rotation * PIby2);
            ctx.translate((item.xRotate * scaleby) - (w / 2), (item.yRotate * scaleby) - (h / 2));
            ctx.rotate(angle);
            ctx.drawImage(img, -item.xRotate * scaleby, -item.yRotate * scaleby, w, h);
            ctx.restore();
            if ((player.state & 32) === 32) {
                player.state -= 32;
                if (((player.breath === 0) && (offsetX === 0)) && (offsetY === 0)) player.breath = 600;
            }
            if (player.breath > 0) {
                if (arv.isLoaded !== 1) {
                    arv = CanvasUtils.loadImage(IMG_DAY_UNUSABLE, arv);
                    return;
                }
                if (player.breath > 400) ctx.globalAlpha = MathUtils.Ease.outQuad(1 - ((player.breath - 400) / 200));
                else if (player.breath < 200) ctx.globalAlpha = MathUtils.Ease.outQuad(player.breath / 200);
                var offsetY = scaleby * (((player.i * __TILE_SIZE__) + horist) + __TILE_SIZE2__);
                var offsetX = scaleby * (((player.j * __TILE_SIZE__) + vertst) + __TILE_SIZE2__);
                var width = (scaleby * arv.width) / 2;
                var height = (scaleby * arv.height) / 2;
                ctx.drawImage(arv, offsetX - (width / 2), offsetY - (height / 2), width, height);
                ctx.globalAlpha = 1;
                player.breath = window.Math.max(0, player.breath - delta);
            }
        };
        
        function _GroundFloor(item, player, offsetX, offsetY, rotation, imageScale) {
            var mmWVw = matrix[player.i][player.j];
            mmWVw.tile = 0;
            mmWVw.ground = frameId;
            mmWVw.pid = player.pid;
            if ((mmWVw.wallFrame !== frameId) || (mmWVw.drawFloor === 1)) {
                if (player.broke > 0) CanvasUtils.drawImageHd(item.broken[player.broke - 1], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, 0, 0, 0, imageScale);
                else CanvasUtils.drawImageHd(item.building[Wwmwm(player)], vertst + player.x, horist + player.y, 0, 0, 0, imageScale);
            }
        };
        
        
        function _Furniture(item, player, offsetX, offsetY, rotation, imageScale) {
            var inuse = (player.state >> 4) & 1;
            var objects = INVENTORY[item.id].subtype[player.subtype];
            if (inuse === 1) player.hit = window.Math.min(500, player.hit + delta);
            else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta);
            if (((inuse === 0) && (objects.usable === 1)) && (handleProximity(objects, player, 0) === 1)) World.PLAYER.eInteract = ICON_E_FURNITURE;
            CanvasUtils.drawImageHd(objects.building, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            if (player.hit > 0) containeropenic(player, offsetX, offsetY);
        };
        
        function _Road(item, player, offsetX, offsetY, rotation, imageScale) {
            var objects = INVENTORY[item.id].subtype[player.subtype];
            CanvasUtils.drawImageHd(objects.building, vertst + player.x, horist + player.y, 0, 0, 0, imageScale);
        };
        
        function _Ghoul(entitie, player, offsetX, offsetY, imageScale) {
            var Vmwnn = player.state & 254;
            if (Vmwnn === 2) {
                player.state &= 65281;
                if (player.hit <= 0) {
                    player.hit = entitie.actionDelay;
                    player.hitMax = entitie.actionDelay;
                    var VVmnw = window.Math.floor(window.Math.random() * 3);
                    AudioUtils.playFx(AudioUtils._fx.shot[0][VVmnw], 0.5, Math2d.distance(World.PLAYER.x, World.PLAYER.y, player.x, player.y) / 3.5, 0);
                }
            }
            var nmm = 0;
            var NNM = 0;
            var NWW = 0;
            var wnN = 0;
            if (player.hit > 0) {
                player.hit = window.Math.max(0, player.hit - delta);
                player.hit = window.Math.min(player.hit, entitie.actionDelay);
                value = (player.hit > entitie.actionImpactClient) ? (1 - ((player.hit - entitie.actionImpactClient) / (entitie.actionDelay - entitie.actionImpactClient))) : (player.hit / entitie.actionImpactClient);
                nmm = (player.hurt2 * MathUtils.Ease.inOutQuad(value)) * 0.55;
                wnN = value * 6;
                if (player.hurt2 === 1) NNM = value * 25;
                else NWW = value * 25;
                if (player.hit === 0) player.hurt2 *= -1;
            } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) {
                player.breath = (player.breath + delta) % 1500;
                if (player.breath2 !== 0) {
                    if (player.breath2 < 750) player.breath2 = 1500 - player.breath2;
                    player.breath2 = player.breath2 + delta;
                    if (player.breath2 > 1500) player.breath2 = 0;
                }
            } else {
                player.breath2 = (player.breath2 + delta) % 1500;
                if (player.breath2 > 1500) {
                    player.heal *= -1;
                    player.breath2 = player.breath2 % 1500;
                }
                if (player.breath !== 0) {
                    if (player.breath < 750) player.breath = 1500 - player.breath;
                    player.breath = player.breath + delta;
                    if (player.breath > 1500) player.breath = 0;
                }
            }
            var breath = entitie.breath * ((player.breath < 750) ? (player.breath / 750) : (1 - ((player.breath - 750) / 750)));
            var move = entitie.armMove * ((player.breath2 < 750) ? (player.breath2 / 750) : (1 - ((player.breath2 - 750) / 750)));
            CanvasUtils.drawImageHd(entitie.rightArm, offsetX, offsetY, ((entitie.rightArm.angle + player.angle) + breath) + nmm, (entitie.rightArm.x + (move * player.heal)) + NWW, entitie.rightArm.y, imageScale);
            CanvasUtils.drawImageHd(entitie.leftArm, offsetX, offsetY, ((-entitie.leftArm.angle + player.angle) - breath) + nmm, (entitie.leftArm.x - (move * player.heal)) + NNM, entitie.leftArm.y, imageScale);
            if (player.hurt > 0) {
                var mnM = 1;
                player.hurt -= delta;
                var value = 0;
                if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300);
                else {
                    value = MathUtils.Ease.outQuad(player.hurt / 150);
                    mnM += (1 - value) * 0.2;
                }
                offsetX += (window.Math.cos(player.hurtAngle) * value) * 10;
                offsetY += (window.Math.sin(player.hurtAngle) * value) * 10;
                ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value));
                CanvasUtils.drawImageHd(entitie.hurt, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, mnM);
                ctx.globalAlpha = 1;
            }
            CanvasUtils.drawImageHd(entitie.head, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, imageScale);
        };
        
        
        function _Workbench(item, player, offsetX, offsetY, rotation, imageScale) {
            var inuse = (player.state >> 4) & 1;
            if (inuse === 1) player.hit = window.Math.min(500, player.hit + delta);
            else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta);
            if (inuse === 0) handleProximity(item, player, 0);
            CanvasUtils.drawImageHd(item.building, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            if (player.hit > 0) containeropenic(player, offsetX, offsetY);
        };
        
        function _Workbench2(item, player, offsetX, offsetY, rotation, imageScale) {
            var i = (rotation + 1) % 2;
            var j = rotation % 2;
            matrix[player.i + i][player.j + j].tile = frameId;
            matrix[player.i - i][player.j - j].tile = frameId;
            matrix[player.i + i][player.j + j].tilePid = player.pid;
            matrix[player.i - i][player.j - j].tilePid = player.pid;
            matrix[player.i + i][player.j + j].category = window.undefined;
            matrix[player.i - i][player.j - j].category = window.undefined;
            handleProximity(item, player, 0);
            CanvasUtils.drawImageHd(item.building, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
        };
        
        function _Agitator(item, player, offsetX, offsetY, rotation, imageScale) {
            var MWm = (player.state >> 4) & 1;
            if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta);
            else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta);
            if (MWm === 0) handleProximity(item, player, 0);
            var light = (player.state >> 5) & 1;
            if (light === 1) player.hitMax = window.Math.min(10000, player.hitMax + delta);
            else if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta);
            var value = 0;
            if (player.hitMax > 0) {
                value = MathUtils.Ease.outQuad(player.hitMax / 10000);
                player.heal += (value * delta) / 300;
                CanvasUtils.drawImageHd(item.building[1], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                CanvasUtils.drawImageHd(item.building[2], ((vertst + player.x) + offsetX) + item.spine[rotation][0], ((horist + player.y) + offsetY) + item.spine[rotation][1], (rotation * PIby2) + player.heal, 0, 0, imageScale);
                CanvasUtils.drawImageHd(item.building[3], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            } else CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            if (player.hit > 0) containeropenic(player, offsetX, offsetY);
        };
        
        function _Extractor(item, player, offsetX, offsetY, rotation, imageScale) {
            var MWm = (player.state >> 4) & 1;
            if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta);
            else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta);
            if (MWm === 0) handleProximity(item, player, 0);
            var light = (player.state >> 5) & 1;
            if (light === 1) player.hitMax = window.Math.min(10000, player.hitMax + delta);
            else if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta);
            var value = 0;
            if (player.hitMax > 0) {
                value = MathUtils.Ease.outQuad(player.hitMax / 10000);
                offsetX += ((window.Math.random() * 2) - 1) * value;
                offsetY += ((window.Math.random() * 2) - 1) * value;
                player.heal += (value * delta) / 300;
                CanvasUtils.drawImageHd(item.building[1], ((vertst + player.x) + offsetX) + item.spine[rotation][0], ((horist + player.y) + offsetY) + item.spine[rotation][1], (rotation * PIby2) + player.heal, 0, 0, imageScale);
                CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            } else CanvasUtils.drawImageHd(item.building[2], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            if (player.hit > 0) containeropenic(player, offsetX, offsetY);
        };

        function _Feeder(item, player, offsetX, offsetY, rotation, imageScale) {
            var MWm = (player.state >> 4) & 1;
            if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta);
            else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta);
            if (MWm === 0) handleProximity(item, player, 0);
            var light = (player.state >> 5) & 1;
            if (light === 1) player.hitMax = window.Math.min(10000, player.hitMax + delta);
            else if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta);
            var value = 0;
            if (player.hitMax > 0) {
                value = MathUtils.Ease.outQuad(player.hitMax / 10000);
                offsetX += ((window.Math.random() * 2) - 1) * value;
                offsetY += ((window.Math.random() * 2) - 1) * value;
                player.heal += (value * delta) / 300;
                CanvasUtils.drawImageHd(item.building[1], ((vertst + player.x) + offsetX) + item.spine[rotation][0], ((horist + player.y) + offsetY) + item.spine[rotation][1], (rotation * PIby2) + player.heal, 0, 0, imageScale);
                CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            } else CanvasUtils.drawImageHd(item.building[2], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            if (player.hit > 0) containeropenic(player, offsetX, offsetY);
        };
        
        function containeropenic(player, offsetX, offsetY) {
            player.breath = (player.breath + delta) % 1000;
            var imageScale = 1 + (0.15 * ((player.breath < 500) ? (player.breath / 500) : (1 - ((player.breath - 500) / 500))));
            imageScale *= scaleby;
            if (arv.isLoaded !== 1) {
                arv = CanvasUtils.loadImage(IMG_DAY_UNUSABLE, arv);
                return;
            }
            ctx.globalAlpha = MathUtils.Ease.outQuad(player.hit / 500);
            var offsetY = scaleby * (((player.i * __TILE_SIZE__) + horist) + __TILE_SIZE2__);
            var offsetX = scaleby * (((player.j * __TILE_SIZE__) + vertst) + __TILE_SIZE2__);
            var width = (imageScale * arv.width) / 2;
            var height = (imageScale * arv.height) / 2;
            ctx.drawImage(arv, offsetX - (width / 2), offsetY - (height / 2), width, height);
            ctx.globalAlpha = 1;
        };
        
        function _Compost(item, player, offsetX, offsetY, rotation, imageScale) {
            var MWm = (player.state >> 4) & 1;
            if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta);
            else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta);
            if (MWm === 0) handleProximity(item, player, 0);
            var light = (player.state >> 5) & 1;
            if (light === 1) player.hitMax = window.Math.min(10000, player.hitMax + delta);
            else if (player.hitMax > 0) {
                player.hitMax = window.Math.max(0, player.hitMax - delta);
            }
            var value = 0;
            if (player.hitMax > 0) {
                value = MathUtils.Ease.outQuad(player.hitMax / 10000);
                offsetX += ((window.Math.random() * 2) - 1) * value;
                offsetY += ((window.Math.random() * 2) - 1) * value;
                CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            } else CanvasUtils.drawImageHd(item.building[1], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            if (player.hit > 0) containeropenic(player, offsetX, offsetY);
        };
        
        function _Smelter(item, player, offsetX, offsetY, rotation, imageScale) {
            var i = (rotation + 1) % 2;
            var j = rotation % 2;
            matrix[player.i + i][player.j + j].tile = frameId;
            matrix[player.i - i][player.j - j].tile = frameId;
            matrix[player.i + i][player.j + j].tilePid = player.pid;
            matrix[player.i - i][player.j - j].tilePid = player.pid;
            matrix[player.i + i][player.j + j].category = window.undefined;
            matrix[player.i - i][player.j - j].category = window.undefined;
            var MWm = (player.state >> 4) & 1;
            if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta);
            else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta);
            if (MWm === 0) handleProximity(item, player, 0);
            var light = (player.state >> 5) & 1;
            if (light === 1) player.hitMax = window.Math.min(10000, player.hitMax + delta);
            else if (player.hitMax > 0) {
                player.hitMax = window.Math.max(0, player.hitMax - delta);
            }
            var value = 0;
            if (player.hitMax > 0) {
                value = MathUtils.Ease.outQuad(player.hitMax / 10000);
                offsetX += ((window.Math.random() * 2) - 1) * value;
                offsetY += ((window.Math.random() * 2) - 1) * value;
                CanvasUtils.drawImageHd(item.building[1], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            } else CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            if (player.hit > 0) containeropenic(player, offsetX, offsetY);
        };
        
        function _TeslaBench(item, player, offsetX, offsetY, rotation, imageScale) {
            var i = (rotation + 1) % 2;
            var j = rotation % 2;
            matrix[player.i + i][player.j + j].tile = frameId;
            matrix[player.i - i][player.j - j].tile = frameId;
            matrix[player.i + i][player.j + j].tilePid = player.pid;
            matrix[player.i - i][player.j - j].tilePid = player.pid;
            matrix[player.i + i][player.j + j].category = window.undefined;
            matrix[player.i - i][player.j - j].category = window.undefined;
            var MWm = (player.state >> 4) & 1;
            if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta);
            else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta);
            if (MWm === 0) handleProximity(item, player, 0);
            var light = (player.state >> 5) & 1;
            if (light === 1) player.hitMax = 1 + (player.hitMax + (delta % 300000));
            else player.hitMax = 0;
            var value = 0;
            if (player.hitMax > 0) {
                CanvasUtils.drawImageHd(item.building[1 + (window.Math.floor(player.hitMax / 500) % 3)], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
                var light = item.light[window.Math.floor(player.hitMax / 50) % item.light.length];
                if (light !== 0) CanvasUtils.drawImageHd(light, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            } else CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
            if (player.hit > 0) containeropenic(player, offsetX, offsetY);
        };
        
        function _CampfireLight(player) {
            ctx.globalAlpha = MathUtils.Ease.outQuad(player.hitMax / 500);
            player.heal = (player.heal + delta) % 1000;
            for (var i = 0; i < 3; i++) {
                var breath = (player.heal + (i * 333)) % 1000;
                var imageScale = 1 + (0.15 * ((breath < 500) ? (breath / 500) : (1 - ((breath - 500) / 500))));
                CanvasUtils.drawImageHd(LIGHTFIRE[i], (vertst + player.x) + LIGHTFIREX[i], (horist + player.y) + LIGHTFIREY[i], 0, 0, 0, imageScale);
            }
            player.breath2 = (player.breath2 + delta) % 5000;
            var breath = player.breath2;
            var imageScale = 1 + (0.15 * ((breath < 2500) ? (breath / 2500) : (1 - ((breath - 2500) / 2500))));
            CanvasUtils.drawImageHd(LIGHTFIRE[3], (vertst + player.x) + LIGHTFIREX[3], (horist + player.y) + LIGHTFIREY[3], 0, 0, 0, imageScale);
            ctx.globalAlpha = 1;
        };
        
        function _Campfire(item, player, offsetX, offsetY, rotation, imageScale) {
            
            var MWm = (player.state >> 4) & 1;
            if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta);
            else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta);
            if (MWm === 0) handleProximity(item, player, 0);
            CanvasUtils.drawImageHd(item.building, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale);
        
            var light = (player.state >> 5) & 1;
            if (light === 1) player.hitMax = window.Math.min(500, player.hitMax + delta);
            else if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta);
            if (player.hitMax > 0) WvnvV[pplonscr++] = player;
            if (player.hit > 0) containeropenic(player, offsetX, offsetY);
        };
        
        function _Explosions(player) {
            var img = ENTITIES[__ENTITIE_EXPLOSION__].explosions;
            var mVn = window.Math.floor(player.born / 70);
            if (mVn < 10) {
                if (player.born === 0) {
                    if (Render.explosionShake !== -2) Render.explosionShake = 20;
                    AudioUtils.playFx(AudioUtils._fx.explosion, 0.7, Math2d.distance(World.PLAYER.x, World.PLAYER.y, player.x, player.y) / 4);
                }
                CanvasUtils.drawImageHd(img[mVn], vertst + player.x, horist + player.y, 0, 0, 0, 1);
            }
            player.born += delta;
        };
        
        function _Resources(resource) {
            matrix[resource.i][resource.j].tile = frameId;
            matrix[resource.i][resource.j].tilePid = resource.pid;
            matrix[resource.i][resource.j].category = window.undefined;
            var WwMWW = RESOURCES[(resource.extra >> 5) & 31];
            var type = WwMWW.type[(resource.extra >> 10) & 7];
            var imageScale = 1;
            if (resource.removed !== 0) {
                if (resource.death === 0) {
                    if ((WwMWW.destroy !== 0) && (soundLimit[WwMWW.destroy] === 0)) {
                        AudioUtils.playFx(AudioUtils._fx.damage[WwMWW.destroy], 1, Math2d.distance(World.PLAYER.x, World.PLAYER.y, resource.x, resource.y) / 2.5);
                        soundLimit[WwMWW.destroy] = 1;
                    }
                    vNwNM(resource, WwMWW.particles, type.particlesDist, type.particle);
                }
                resource.death += delta;
                var value = window.Math.max(0, MathUtils.Ease.outQuart(1 - (resource.death / 300)));
                ctx.globalAlpha = value;
                imageScale = window.Math.min(1 + (0.35 * (1 - value)), 1.35);
            } else if (resource.born < 700) {
                if ((resource.born === 0) && (type.imgTop !== window.undefined)) {
                    if (WMWvN === 0) resource.breath = window.Math.floor(window.Math.random() * 6000);
                    else {
                        resource.heal = window.Math.floor(window.Math.random() * 6000);
                        resource.breath = 3000;
                    }
                }
                var value = window.Math.min(1, MathUtils.Ease.outQuart(resource.born / 700));
                ctx.globalAlpha = value;
                imageScale = (0.5 * value) + 0.5;
            }
            if ((resource.state & 2) === 2) {
                if ((WwMWW.impact !== 0) && (soundLimit[WwMWW.impact] === 0)) {
                    AudioUtils.playFx(AudioUtils._fx.damage[WwMWW.impact], 1, Math2d.distance(World.PLAYER.x, World.PLAYER.y, resource.x, resource.y) / 2.8);
                    soundLimit[WwMWW.impact] = 1;
                }
                resource.hurt = 250;
                if (resource.hurt2 <= 0) resource.hurt2 = 300;
                resource.hurtAngle = (PI2 * (resource.extra & 31)) / 31;
                resource.state &= ~2;
                vNwNM(resource, WwMWW.particles, type.particlesDist, 1);
            }
            var offsetX = 0;
            var offsetY = 0;
            if (resource.hurt > 0) {
                var hurt = (resource.hurt > 200) ? ((20 * (250 - resource.hurt)) / 50) : ((20 * resource.hurt) / 200);
                offsetX = window.Math.cos(resource.hurtAngle) * hurt;
                offsetY = window.Math.sin(resource.hurtAngle) * hurt;
                resource.hurt -= delta;
            }
            if (((resource.breath === 3000) && (WMWvN !== 0)) && (resource.hurt === 0)) {
                CanvasUtils.drawImageHd(type.imgFull, (vertst + resource.x) + offsetX, (horist + resource.y) + offsetY, resource.angle, 0, 0, imageScale);
                if (resource.removed !== 0) {
                    if (resource.death > 300) resource.removed = 2;
                    ctx.globalAlpha = 1;
                } else if (resource.born < 700) {
                    resource.born += delta;
                    ctx.globalAlpha = 1;
                }
                return;
            }
            CanvasUtils.drawImageHd(type.img, (vertst + resource.x) + offsetX, (horist + resource.y) + offsetY, resource.angle, 0, 0, imageScale);
            if (type.imgTop !== window.undefined) {
                offsetX = 0;
                offsetY = 0;
                if (resource.hurt2 > 0) {
                    var hurt = (resource.hurt2 > 250) ? (10 * MathUtils.Ease.inQuad((300 - resource.hurt2) / 250)) : (10 * MathUtils.Ease.outQuad(resource.hurt2 / 250));
                    offsetX = window.Math.cos(resource.hurtAngle) * hurt;
                    offsetY = window.Math.sin(resource.hurtAngle) * hurt;
                    resource.hurt2 -= delta;
                }
                if (WMWvN === 0) {
                    if (resource.heal > 0) resource.heal = window.Math.max(0, resource.heal - delta);
                    else resource.breath += delta;
                    if (resource.breath > 6000) resource.breath = 0;
                    if (resource.breath > 3000) imageScale += (0.025 * (resource.breath - 3000)) / 3000;
                    else imageScale += 0.025 - ((0.025 * resource.breath) / 3000);
                } else {
                    if (resource.heal === 0) resource.heal = resource.breath;
                    if (resource.breath > 6000) resource.breath = 0;
                    if (resource.breath > 3000) {
                        resource.breath = window.Math.max(3000, resource.breath - delta);
                        imageScale += (0.025 * (resource.breath - 3000)) / 3000;
                    } else if (resource.breath < 3000) {
                        resource.breath = window.Math.min(3000, resource.breath + delta);
                        imageScale += 0.025 - ((0.025 * resource.breath) / 3000);
                    }
                }
                CanvasUtils.drawImageHd(type.imgTop, (vertst + resource.x) + offsetX, (horist + resource.y) + offsetY, resource.angle, 0, 0, imageScale);
            }
            if (resource.removed !== 0) {
                if (resource.death > 300) resource.removed = 2;
                ctx.globalAlpha = 1;
            } else if (resource.born < 700) {
                resource.born += delta;
                ctx.globalAlpha = 1;
            }

            /*
            var size = type.radius;
            ctx.beginPath();
            ctx.arc(scaleby * ((vertst + resource.x) + offsetX),scaleby * ((horist + resource.y) + offsetY), scaleby * size, 0, 2 * Math.PI);
            ctx.strokeStyle = '#FF0000';
            ctx.stroke();
            */

            if (pathFinder) {
                for (var x = 0; x < pworldWidth; x++) {
                    for (var y = 0; y < pworldHeight; y++) {
                            pworld[resource.j][resource.i] = 1;
                    }
                }
            }
        
        };
        
        function _Buildings(building) {
            matrix[building.i][building.j].tile = frameId;
            matrix[building.i][building.j].tilePid = building.pid;
            matrix[building.i][building.j].category = window.undefined;
            var rotation = (building.extra >> 5) & 3;
            var item = INVENTORY[building.extra >> 7];
            var imageScale = 1;
            matrix[building.i][building.j].category = item.detail.category;
            if (building.removed !== 0) {
                if (building.death === 0) {
                    var _item = (item.particles === -1) ? INVENTORY[item.id].subtype[building.subtype] : item;
                    vNwNM(building, _item.particles, _item.particlesDist, 5);
                    if ((_item.destroy !== 0) && (soundLimit[_item.destroy] === 0)) {
                        AudioUtils.playFx(AudioUtils._fx.damage[_item.destroy], 1, Math2d.distance(World.PLAYER.x, World.PLAYER.y, building.x, building.y) / 2.5);
                        soundLimit[_item.destroy] = 1;
                    }
                }
                building.death += delta;
                var value = window.Math.max(0, MathUtils.Ease.outQuart(1 - (building.death / 300)));
                ctx.globalAlpha = value;
                imageScale = window.Math.min(1 + (0.35 * (1 - value)), 1.35);
            }
            if ((building.state & 2) === 2) {
                building.hurt = 250;
                building.hurtAngle = (PI2 * (building.extra & 31)) / 31;
                building.state &= ~2;
                var _item = (item.particles === -1) ? INVENTORY[item.id].subtype[building.subtype] : item;
                vNwNM(building, _item.particles, _item.particlesDist, 1);
                if ((_item.impact !== 0) && (soundLimit[_item.impact] === 0)) {
                    AudioUtils.playFx(AudioUtils._fx.damage[_item.impact], 1, Math2d.distance(World.PLAYER.x, World.PLAYER.y, building.x, building.y) / 2.8);
                    soundLimit[_item.impact] = 1;
                }
            }
            var offsetX = 0;
            var offsetY = 0;
            if (building.hurt > 0) {
                if (building.hurt > 200) {
                    var hurt = (20 * (250 - building.hurt)) / 100;
                    offsetX = window.Math.cos(building.hurtAngle) * hurt;
                    offsetY = window.Math.sin(building.hurtAngle) * hurt;
                    building.hurt -= delta;
                } else {
                    var hurt = (20 * building.hurt) / 200;
                    offsetX = window.Math.cos(building.hurtAngle) * hurt;
                    offsetY = window.Math.sin(building.hurtAngle) * hurt;
                    building.hurt -= delta;
                }
            }
            item.draw(item, building, offsetX, offsetY, rotation, imageScale);
            if (building.removed !== 0) {
                if (building.death > 300) building.removed = 2;
                ctx.globalAlpha = 1;
            }

            if (pathFinder) {
                if (INVENTORY[item.id].draw != Render.groundFloor) { // dont count floor
                    for (var x = 0; x < pworldWidth; x++) {
                        for (var y = 0; y < pworldHeight; y++) {
                                pworld[building.j][building.i] = 1;
                        }
                    }
                }
            }

            if (MOD.buildingOwner) drawBuildingRectangle(building);
        };

        // Function to draw rectangle around building
        function drawBuildingRectangle(building) {
            // Constants
            var gridSize = 100;
            var width = 100;   // Use the first element for the width
            var height = 100;  // Use the second element for the height

            // Calculate snapped mouse coordinates
            var mouseX = Math.round(GetAllTargets.mouseMapCords.x);
            var mouseY = Math.round(GetAllTargets.mouseMapCords.y);
            var snappedMouseX = Math.floor(mouseX / gridSize) * gridSize;
            var snappedMouseY = Math.floor(mouseY / gridSize) * gridSize;

            // Calculate grid positions
            var gridPosX = Math.floor(building.x / gridSize);
            var gridPosY = Math.floor(building.y / gridSize);

            // Check if the mouse is over the building's grid position and building.pid is not 0
            if (snappedMouseX === gridPosX * gridSize && snappedMouseY === gridPosY * gridSize && building.pid !== 0) {
                // Calculate dimensions and positioning
                var scaledWidth = scaleby * width;
                var scaledHeight = scaleby * height;
                var offsetX = 0; // Assuming offsetX and offsetY are defined elsewhere
                var offsetY = 0; // Adjust as per your requirements

                var x = scaleby * (vertst + snappedMouseX + offsetX) - scaledWidth / 2;
                var y = scaleby * (horist + snappedMouseY + offsetY) - scaledHeight / 2;
                x += scaledWidth / 2; // Adjust to center the rectangle
                y += scaledHeight / 2; // Adjust to center the rectangle

                var isInClan = 0;
                if (((building.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[building.pid].team)) && (World.players[building.pid].teamUid === World.teams[World.PLAYER.team].uid)))) {
                    isInClan = 1;
                }

                var lineColor;
                if (isInClan === 1) {
                    lineColor = MOD.TeamColor; // Team color
                } else {
                    lineColor = MOD.EnemyColor; // Enemy color
                }

                ctx.lineWidth = 2;
                // Drawing rectangle
                ctx.beginPath();
                ctx.rect(x, y, scaledWidth, scaledHeight);
                ctx.strokeStyle = lineColor;
                ctx.stroke();

                // Draw building ID or other information
                drawDarkBox2(building, x, y)
                drawText(building.i, building.j, building.pid);
            }
        }
        
        function _Bullets(bullet) {
            matrix[bullet.i][bullet.j].tile = frameId;
            matrix[bullet.i][bullet.j].tilePid = bullet.pid;
            matrix[bullet.i][bullet.j].category = window.undefined;
            var progress = 1;
            var i = bullet.i;
            var j = bullet.j;
            var NWvmm = (i <= 1) ? 0 : (i - 1);
            var MvmNn = (i >= (worldWidth - 2)) ? (worldWidth - 1) : (i + 1);
            var vnVVM = (j <= 1) ? 0 : (j - 1);
            var MnVMW = (j >= (worldHeight - 2)) ? (worldHeight - 1) : (j + 1);
            for (i = NWvmm; i <= MvmNn; i++) {
                for (j = vnVVM; j <= MnVMW; j++) {
                    var VMV = matrix[i][j];
                    if (VMV.frameId !== frameId) continue;
                    var M = VMV.b;
                    var len = VMV.i;
                    for (var k = 0; k < len; k++) {
                        var playerGauges = M[k];
                        var type = playerGauges.type;
                        var mvnVn = Entitie.units[type][playerGauges.cycle];
                        if (((mvnVn.pid !== World.PLAYER.id)) && (Math2d.distance(mvnVn.x, mvnVn.y, bullet.x, bullet.y) < (ENTITIES[type].radius - 4))) {
                            window.console.log("DETECTED");
                            bullet.rx = bullet.x;
                            bullet.ry = bullet.y;
                            bullet.nx = bullet.x;
                            bullet.ny = bullet.y;
                        }
                    }
                }
            }
            if (bullet.removed !== 0) {
                bullet.death += delta;
                progress = window.Math.max(0, MathUtils.Ease.outQuart(1 - (bullet.death / 200)));
                ctx.globalAlpha = progress;
            }
            var distance = Math2d.fastDist(bullet.nx, bullet.ny, bullet.x, bullet.y);
            if ((distance < 400) || (bullet.removed !== 0)) {
                ctx.globalAlpha = window.Math.min(distance / 400, progress);
                CanvasUtils.drawImageHd(ENTITIES[__ENTITIE_PLAYER__].bullets[bullet.extra][2], vertst + bullet.x, horist + bullet.y, bullet.angle, 0, 0, 1);
                ctx.globalAlpha = progress;
                CanvasUtils.drawImageHd(ENTITIES[__ENTITIE_PLAYER__].bullets[bullet.extra][1], vertst + bullet.x, horist + bullet.y, bullet.angle, 0, 0, 1);
            } else CanvasUtils.drawImageHd(ENTITIES[__ENTITIE_PLAYER__].bullets[bullet.extra][0], vertst + bullet.x, horist + bullet.y, bullet.angle, 0, 0, 1);
            if (bullet.removed !== 0) {
                if (bullet.death > 200) bullet.removed = 2;
                ctx.globalAlpha = 1;
            }
        };
        
        function _Loots(loot) {
            matrix[loot.i][loot.j].tile = frameId;
            matrix[loot.i][loot.j].tilePid = loot.pid;
            matrix[loot.i][loot.j].category = window.undefined;
            if (loot.hit !== 0) {
                var PLAYER = World.players[loot.hit];
                if (frameId === PLAYER.frameId) {
                    var players = Entitie.units[__ENTITIE_PLAYER__];
                    var WMv = players[PLAYER.locatePlayer];
                    loot.nx = WMv.x;
                    loot.ny = WMv.y;
                    loot.angleX = window.Math.cos(Math2d.angle(loot.rx, loot.ry, loot.nx, loot.ny));
                    loot.angleY = window.Math.sin(Math2d.angle(loot.rx, loot.ry, loot.nx, loot.ny));
                }
            }

            if ((loot.removed === 0) && (Math2d.fastDist(loot.x, loot.y, loot.nx, loot.ny) < 1)) {
                var distance = Math2d.fastDist(NmM, WWV, loot.x, loot.y);
                if (distance < distance12k) {

                    //Auto Loot
                    if (MOD.autoLoot) {
                        if (MOD.useLootData) {
                            for (let lootType in LootData) {
                                if (
                                    LootData.hasOwnProperty(lootType) &&
                                    LootData[lootType].acquire &&
                                    loot.extra === LootData[lootType].extra
                                ) {
                                    Client.sendPacket(window.JSON.stringify([12, loot.id]));
                                    break; // Break the loop once we find a matching item
                                }
                            }
                        } else {
                            Client.sendPacket(window.JSON.stringify([12, loot.id]));
                        }
                    };
                    // -----

                    distance12k = distance;
                    World.PLAYER.loot = loot.extra;
                    World.PLAYER.lootId = loot.id;
                    if (World.PLAYER.interaction <= 0) World.PLAYER.interaction = 0;
                    else World.PLAYER.extraLoot = 1;
                }
            }
            var breath = 0;
            var vnwmm = 0;
            if (loot.removed !== 0) {
                loot.death += delta;
                ctx.globalAlpha = window.Math.max(0, MathUtils.Ease.outQuart(1 - (loot.death / 800)));
                vnwmm = loot.death / 2400;
            } else if (loot.born < 500) {
                var value = window.Math.min(1, MathUtils.Ease.outQuart(loot.born / 500));
                ctx.globalAlpha = value;
            }
            loot.breath = (loot.breath + delta) % 1500;
            if (loot.breath < 750) breath = 0.95 + (MathUtils.Ease.inOutQuad(loot.breath / 750) * 0.1);
            else breath = 0.95 + (MathUtils.Ease.inOutQuad(1 - ((loot.breath - 750) / 750)) * 0.1);
            CanvasUtils.drawImageHd(LOOT[loot.extra], vertst + loot.x, horist + loot.y, loot.angle, 0, 0, breath - vnwmm);
            if (loot.removed !== 0) {
                if (loot.death > 800) loot.removed = 2;
                ctx.globalAlpha = 1;
            } else if (loot.born < 500) {
                loot.born += delta;
                ctx.globalAlpha = 1;
            }
        };
        
        function RenderObjects() {
            var i = 0;
            pplonscr = 0;
            NNmMN[0] = 0;
            NNmMN[1] = 0;
            NNmMN[2] = 0;
            NNmMN[3] = 0;
            nearestDistance = 12000;
            distance12k = 12000;
            World.PLAYER.extraLoot    = 0;
            World.PLAYER.buildingId   = -1;
            World.PLAYER.buildingArea = -1;
            if (World.PLAYER.interaction !== 1) World.PLAYER.interaction = -1;
            
            var ents            = Entitie.units[ENTITIES.length];
            var entsBorder      = Entitie.border[ENTITIES.length];
            var entsLen         = entsBorder.border;

            var buildings       = Entitie.units[__ENTITIE_BUILD_TOP__];
            var buildingsBorder = Entitie.border[__ENTITIE_BUILD_TOP__];
            var buildingsLen    = buildingsBorder.border;
            for (i = 0; i < buildingsLen; i++) _bigWallConnect(buildings[buildingsBorder.cycle[i]]);

            buildings           = Entitie.units[__ENTITIE_BUILD_GROUND2__];
            buildingsBorder     = Entitie.border[__ENTITIE_BUILD_GROUND2__];
            buildingsLen        = buildingsBorder.border;
            for (i = 0; i < buildingsLen; i++) _floorConnect(buildings[buildingsBorder.cycle[i]]);
            for (i = 0; i < buildingsLen; i++) _Buildings(buildings[buildingsBorder.cycle[i]]);
            for (i = 0; i < entsLen; i++) {
                var player = ents[entsBorder.cycle[i]];
                if (player.type === __ENTITIE_BUILD_GROUND2__) _Buildings(player);
            }

            if (setParticles !== 0) {
                var particles       = Entitie.units[__ENTITIE_PARTICLES__];
                var buildingsBorder = Entitie.border[__ENTITIE_PARTICLES__];
                var buildingsLen    = buildingsBorder.border;
                for (i = 0; i < buildingsLen; i++) _Particles(particles[buildingsBorder.cycle[i]]);
                if (PARTICLE.id !== -1) {
                    Entitie.remove(0, PARTICLE.id, PARTICLE.uid, __ENTITIE_PARTICLES__);
                    PARTICLE.id = -1;
                }
            }

            var buildings           = Entitie.units[__ENTITIE_BUILD_GROUND__];
            var buildingsBorder     = Entitie.border[__ENTITIE_BUILD_GROUND__];
            var buildingsLen        = buildingsBorder.border;
            for (i = 0; i < buildingsLen; i++) _Buildings(buildings[buildingsBorder.cycle[i]]);
            for (i = 0; i < entsLen; i++) {
                var player = ents[entsBorder.cycle[i]];
                if (player.type === __ENTITIE_BUILD_GROUND__) _Buildings(player);
            }

            resources               = Entitie.units[__ENTITIE_RESOURCES_DOWN__];
            resourceBorder          = Entitie.border[__ENTITIE_RESOURCES_DOWN__];
            resourceLen             = resourceBorder.border;
            for (i = 0; i < resourceLen; i++) _Resources(resources[resourceBorder.cycle[i]]);
            for (i = 0; i < entsLen; i++) {
                var player = ents[entsBorder.cycle[i]];
                if (player.type === __ENTITIE_RESOURCES_DOWN__) _Resources(player);
            }

            var buildings           = Entitie.units[__ENTITIE_BUILD_DOWN__];
            var buildingsBorder     = Entitie.border[__ENTITIE_BUILD_DOWN__];
            var buildingsLen        = buildingsBorder.border;
            for (i = 0; i < buildingsLen; i++) _wallConnect(buildings[buildingsBorder.cycle[i]]);
            for (i = 0; i < buildingsLen; i++) _Buildings(buildings[buildingsBorder.cycle[i]]);
            for (i = 0; i < entsLen; i++) {
                var player = ents[entsBorder.cycle[i]];
                if (player.type === __ENTITIE_BUILD_DOWN__) _Buildings(player);
            }

            var players             = Entitie.units[__ENTITIE_PLAYER__];
            var border              = Entitie.border[__ENTITIE_PLAYER__];
            var len                 = border.border;
            for (i = 0; i < len; i++) {
                var pos = border.cycle[i];
                var player = players[pos];
                var PLAYER = World.players[player.pid];
                _Run(player);
                PLAYER.locatePlayer = pos;
                PLAYER.frameId = frameId;
                MmnMv(player, pos);
            }

            World.PLAYER.loot = -1;
            World.PLAYER.lootId = -1;
            var loots               = Entitie.units[__ENTITIE_LOOT__];
            var lootsBorder         = Entitie.border[__ENTITIE_LOOT__];
            var lootsLen            = lootsBorder.border;
            for (i = 0; i < lootsLen; i++) _Loots(loots[lootsBorder.cycle[i]]);
            for (i = 0; i < entsLen; i++) {
                var player = ents[entsBorder.cycle[i]];
                if (player.type === __ENTITIE_LOOT__) _Loots(player);
            }

            var bullets             = Entitie.units[__ENTITIE_BULLET__];
            var bulletsBorder       = Entitie.border[__ENTITIE_BULLET__];
            var bulletsLen          = bulletsBorder.border;
            for (i = 0; i < bulletsLen; i++) _Bullets(bullets[bulletsBorder.cycle[i]]);
            for (i = 0; i < entsLen; i++) {
                var player = ents[entsBorder.cycle[i]];
                if (player.type === __ENTITIE_BULLET__) _Bullets(player);
            }

            resources               = Entitie.units[__ENTITIE_RESOURCES_MID__];
            resourceBorder          = Entitie.border[__ENTITIE_RESOURCES_MID__];
            resourceLen             = resourceBorder.border;
            for (i = 0; i < resourceLen; i++) _Resources(resources[resourceBorder.cycle[i]]);
            for (i = 0; i < entsLen; i++) {
                var player = ents[entsBorder.cycle[i]];
                if (player.type === __ENTITIE_RESOURCES_MID__) _Resources(player);
            }

            if (World.gameMode === World.__GHOUL__) {
                for (i = 0; i < len; i++) {
                    var player = players[border.cycle[i]];
                    var ghoul = World.players[player.pid].ghoul;
                    if (ghoul === 0) _EntitiePlayer(player);
                    else {
                        player.extra = ghoul - 1;
                        _EntitieAI(player);
                    };
                }
                for (i = 0; i < entsLen; i++) {
                    var player = ents[entsBorder.cycle[i]];
                    if (player.type === __ENTITIE_PLAYER__) {
                        _Run(player);
                        var ghoul = World.players[player.pid].ghoul;
                        if (ghoul === 0) _EntitiePlayer(player);
                        else {
                            player.extra = ghoul - 1;
                            _EntitieAI(player);
                        };
                    }
                }
            } else {
                for (i = 0; i < len; i++) _EntitiePlayer(players[border.cycle[i]]);
                for (i = 0; i < entsLen; i++) {
                    var player = ents[entsBorder.cycle[i]];
                    if (player.type === __ENTITIE_PLAYER__) {
                        _Run(player);
                        _EntitiePlayer(player);
                    }
                }
            }

            var entitie         = Entitie.units[__ENTITIE_AI__];
            var entitieBorder   = Entitie.border[__ENTITIE_AI__];
            var entitieLen      = entitieBorder.border;
            for (i = 0; i < entitieLen; i++) _EntitieAI(entitie[entitieBorder.cycle[i]]);
            for (i = 0; i < entsLen; i++) {
                var player = ents[entsBorder.cycle[i]];
                if (player.type === __ENTITIE_AI__) _EntitieAI(player);
            }

            buildings           = Entitie.units[__ENTITIE_BUILD_TOP__];
            buildingsBorder     = Entitie.border[__ENTITIE_BUILD_TOP__];
            buildingsLen        = buildingsBorder.border;
            for (i = 0; i < buildingsLen; i++) _Buildings(buildings[buildingsBorder.cycle[i]]);
            for (i = 0; i < entsLen; i++) {
                var player = ents[entsBorder.cycle[i]];
                if (player.type === __ENTITIE_BUILD_TOP__) _Buildings(player);
            }
            for (i = 0; i < pplonscr; i++) {
                var item = INVENTORY[WvnvV[i].extra >> 7];
                item.drawTop(WvnvV[i]);
                WvnvV[i] = null;
            }

            resources       = Entitie.units[__ENTITIE_RESOURCES_TOP__];
            resourceBorder  = Entitie.border[__ENTITIE_RESOURCES_TOP__];
            resourceLen     = resourceBorder.border;
            for (i = 0; i < resourceLen; i++) _Resources(resources[resourceBorder.cycle[i]]);
            for (i = 0; i < entsLen; i++) {
                var player = ents[entsBorder.cycle[i]];
                if (player.type === __ENTITIE_RESOURCES_TOP__) _Resources(player);
            }

            resources       = Entitie.units[__ENTITIE_RESOURCES_STOP__];
            resourceBorder  = Entitie.border[__ENTITIE_RESOURCES_STOP__];
            resourceLen     = resourceBorder.border;
            for (i = 0; i < resourceLen; i++) _Resources(resources[resourceBorder.cycle[i]]);
            for (i = 0; i < entsLen; i++) {
                var player = ents[entsBorder.cycle[i]];
                if (player.type === __ENTITIE_RESOURCES_STOP__) _Resources(player);
            }

            explosions      = Entitie.units[__ENTITIE_EXPLOSION__];
            explosionBorder = Entitie.border[__ENTITIE_EXPLOSION__];
            explosionLen    = explosionBorder.border;
            for (i = 0; i < explosionLen; i++)  _Explosions(explosions[explosionBorder.cycle[i]]);
            for (i = 0; i < len; i++)           _playerNotification(players[border.cycle[i]]);
            
            if (World.gameMode !== World.__BR__) {
                for (i = 0; i < len; i++)       _playerName(players[border.cycle[i]]);
                for (i = 0; i < len; i++)       _playerChatMessage(players[border.cycle[i]]);
                if (MOD.showPID) {for (i = 0; i < len; i++)       _playerID(players[border.cycle[i]])};
            }
            
            for (i = 0; i < len; i++)           _CheckMyPlayer(players[border.cycle[i]]);

            if (MOD.DrawLines) {
            for (i = 0; i < len; i++)           _DrawLines(players[border.cycle[i]]);
            }

            if (pathFinder) {
                for (i = 0; i < len; i++)       _PathFinder(players[border.cycle[i]]);
            }

        };

        function drawText(i, j, text) {  
            var offsetY = scaleby * (((i * __TILE_SIZE__) + horist) + __TILE_SIZE2__);
            var offsetX = scaleby * (((j * __TILE_SIZE__) + vertst) + __TILE_SIZE2__);
            var size = 40
            butlabel = GUI.renderText(text, "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12);
            ctx.drawImage(butlabel, offsetX, offsetY,  scaleby * size,  scaleby * size);
        }

        function _DrawLines(player) {            
            var PLAYER = World.players[player.pid];
            var isInClan = 0;
            if(World.PLAYER.id === player.pid) return;

            var targetsPosition = {
                x: scaleby * (player.x + vertst),
                y: scaleby * (player.y + horist)
            };

            var myPosition = {
                x: scaleby * (World.PLAYER.x + vertst),
                y: scaleby * (World.PLAYER.y + horist)
            };
            var size = 38;
            var grey = '#E5E5E5';
            var teamcolor;
            var enemycolor;
            ctx.globalAlpha = MOD.linesOpacity
            if (!MOD.ColorizeTeam) teamcolor = grey; else teamcolor = MOD.TeamColor;
            if (!MOD.ColorizeTeam) enemycolor = grey; else enemycolor = MOD.EnemyColor;
            if (((player.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[player.pid].team)) && (World.players[player.pid].teamUid === World.teams[World.PLAYER.team].uid))) ) isInClan = 1;
            if (isInClan === 1) {
                ctx.beginPath();
                ctx.moveTo(myPosition.x, myPosition.y);
                ctx.lineTo(targetsPosition.x, targetsPosition.y);
                ctx.lineWidth = 1.2;
                ctx.strokeStyle = teamcolor;
                ctx.stroke();

                ctx.beginPath();
                ctx.arc(myPosition.x, myPosition.y, scaleby * size, 0, 2 * Math.PI);
                ctx.strokeStyle = teamcolor;
                ctx.stroke();
            } 
            else if (PLAYER.team === -1) {
                ctx.beginPath();
                ctx.moveTo(myPosition.x, myPosition.y);
                ctx.lineTo(targetsPosition.x, targetsPosition.y);
                ctx.lineWidth = 1.2;
                ctx.strokeStyle = grey;
                ctx.stroke();

                ctx.beginPath();
                ctx.arc(targetsPosition.x, targetsPosition.y, scaleby * size, 0, 2 * Math.PI);
                ctx.strokeStyle = grey;
                ctx.stroke();
            } 
            else {
            ctx.beginPath();
            ctx.moveTo(myPosition.x, myPosition.y);
            ctx.lineTo(targetsPosition.x, targetsPosition.y);
            ctx.lineWidth = 1.2;
            ctx.strokeStyle = enemycolor;
            ctx.stroke();

            ctx.beginPath();
            ctx.arc(targetsPosition.x, targetsPosition.y, scaleby * size, 0, 2 * Math.PI);
            ctx.strokeStyle = enemycolor;
            ctx.stroke();
            }
            ctx.globalAlpha = 1;
        }

        function _PathFinder(player) {
            matrix[player.i][player.j].tile = frameId;
            matrix[player.i][player.j].tilePid = player.pid;
            matrix[player.i][player.j].category = window.undefined;
            if(player.pid === World.PLAYER.id) {
            if (pathFinder) {
        
                var startpoint = [
                    Math.floor(player.j),
                    Math.floor(player.i)
                ];
        
                var endpoint = [
                    Math.floor(setx),
                    Math.floor(sety)
                ]
        
                pathStart = startpoint;
                pathEnd = endpoint;
                currentPath = findPath(pworld, pathStart, pathEnd);
                player.currentPath = currentPath;
                function findPath(pworld, pathStart, pathEnd) {
                    var abs = Math.abs;
                    var max = Math.max;
                    var maxWalkableTileNum = 0;
                    var pworldWidth = pworld[0].length;
                    var pworldHeight = pworld.length;
                    var worldSize = pworldWidth * pworldHeight;
                    var distanceFunction = DiagonalDistance;
                    var findNeighbours = DiagonalNeighbours;
        
                    function DiagonalDistance(Point, Goal) {
                        return max(abs(Point.x - Goal.x), abs(Point.y - Goal.y));
                    }
                    function Neighbours(x, y) {
                        var N = y - 1,
                            S = y + 1,
                            E = x + 1,
                            W = x - 1,
                            myN = N > -1 && canWalkHere(x, N),
                            myS = S < pworldHeight && canWalkHere(x, S),
                            myE = E < pworldWidth && canWalkHere(E, y),
                            myW = W > -1 && canWalkHere(W, y),
                            result = [];
                        if (myN)
                            result.push({
                                x: x,
                                y: N
                            });
                        if (myE)
                            result.push({
                                x: E,
                                y: y
                            });
                        if (myS)
                            result.push({
                                x: x,
                                y: S
                            });
                        if (myW)
                            result.push({
                                x: W,
                                y: y
                            });
                        findNeighbours(myN, myS, myE, myW, N, S, E, W, result);
                        return result;
                    }
                    function DiagonalNeighbours(myN, myS, myE, myW, N, S, E, W, result) {
                        if (myN) {
                            if (myE && canWalkHere(E, N))
                                result.push({
                                    x: E,
                                    y: N
                                });
                            if (myW && canWalkHere(W, N))
                                result.push({
                                    x: W,
                                    y: N
                                });
                        }
                        if (myS) {
                            if (myE && canWalkHere(E, S))
                                result.push({
                                    x: E,
                                    y: S
                                });
                            if (myW && canWalkHere(W, S))
                                result.push({
                                    x: W,
                                    y: S
                                });
                        }
                    }

                    function canWalkHere(x, y) {
                        return ((pworld[x] != null) &&
                            (pworld[x][y] != null) &&
                            (pworld[x][y] <= maxWalkableTileNum || pworld[x][y] === 2));
                    };
        
                    function Node(Parent, Point) {
                        var newNode = {
                            Parent: Parent,
                            value: Point.x + (Point.y * pworldWidth),
                            x: Point.x,
                            y: Point.y,
                            f: 0,
                            g: 0
                        };
        
                        return newNode;
                    }

                    function calculatePath() {
                        var mypathStart = Node(null, {
                            x: pathStart[0],
                            y: pathStart[1]
                        });
                        var mypathEnd = Node(null, {
                            x: pathEnd[0],
                            y: pathEnd[1]
                        });
                        var AStar = new Array(worldSize);
                        var Open = [mypathStart];
                        var Closed = [];
                        var result = [];
                        var myNeighbours;
                        var myNode;
                        var myPath;
                        var length, max, min, i, j;
                        while (length = Open.length) {
                            max = worldSize;
                            min = -1;
                            for (i = 0; i < length; i++) {
                                if (Open[i].f < max) {
                                    max = Open[i].f;
                                    min = i;
                                }
                            }
                            myNode = Open.splice(min, 1)[0];
                            if (myNode.value === mypathEnd.value) {
                                myPath = Closed[Closed.push(myNode) - 1];
                                do {
                                    result.push([myPath.x, myPath.y]);
                                }
                                while (myPath = myPath.Parent);
                                AStar = Closed = Open = [];
                                result.reverse();
                            } else
                            {
                                myNeighbours = Neighbours(myNode.x, myNode.y);
                                for (i = 0, j = myNeighbours.length; i < j; i++) {
                                    myPath = Node(myNode, myNeighbours[i]);
                                    if (!AStar[myPath.value]) {
                                        myPath.g = myNode.g + distanceFunction(myNeighbours[i], myNode);
                                        myPath.f = myPath.g + distanceFunction(myNeighbours[i], mypathEnd);
                                        Open.push(myPath);
                                        AStar[myPath.value] = true;
                                    }
                                }
                                Closed.push(myNode);
                            }
                        }
                        return result;
                    }
        
                    return calculatePath();
        
                }


                function drawpath(player) {
                    player.currentPath = currentPath;
        
                    var datax = [];
                    var datay = [];
                    for(var i = 0; i < currentPath.length; i++) {
                        datax.push([a1x])
                        datay.push([a1y])
                        var a1x = scaleby * (((currentPath[i][1] * 100) + horist) + 50);
                        var a1y = scaleby * (((currentPath[i][0] * 100) + vertst) + 50);
                    }
                    ctx.beginPath(datay[0], datax[0]);
                    for(var i = 1; i < currentPath.length; i++) {
                        ctx.lineTo(datay[i], datax[i],);
                        ctx.strokeStyle = '#00FF7F';
                        ctx.stroke();
                    }
        
                }
        
                                
                function drawBox() {
                    player.currentPath = currentPath;
                    
                    var myposx = scaleby * (((player.j * 100) + vertst) + 50);
                    var myposy = scaleby * (((player.i * 100) + horist) + 50);
                    ctx.strokeRect((myposx - 20), (myposy - 20), 40, 40);
                    ctx.strokeStyle = '#00FF7F';
                    for(var i = 0; i < currentPath.length; i++) {
                    var lastposx = scaleby * (((currentPath[i][0] * 100) + vertst) + 50);
                    var lastposy = scaleby * (((currentPath[i][1] * 100) + horist) + 50);
                    }
                    ctx.strokeRect((lastposx - 20), (lastposy - 20), 40, 40);
                    ctx.strokeStyle = '#e2f553';
                }
        
                if (pathFinder){ drawpath(player); drawBox(); }
            
            }


            
            }
        };

        function _StopPoisonEffect() {
            NNWWn = 0;
        };
        var handleResize;
        var vmvNw = CanvasUtils.options.forceResolution;
        var nvMNv = 0;
        var wMmwW = 0;
        var NNWWn = 0;
        var VnwwM = 0;
        var WvWvM = 0;
        
        function _SetPoisonEffect(delay) {
            if (WvWvM === 0) {
                nvMNv = Render.scale;
                Render.scale = 0.8;
                wMmwW = 0;
                NNWWn = delay;
                VnwwM = 0;
                WvWvM = 1;
                vmvNw = CanvasUtils.options.deviceRatio / CanvasUtils.options.scheduledRatio;
            }
        };

        function nmmMm() {
            if ((NNWWn <= 0) && ((wMmwW + delta) > 1500)) {
                WvWvM = 0;
                wMmwW = 1500;
            } else {
                NNWWn -= delta;
                VnwwM += delta;
                wMmwW = (wMmwW + delta) % 1500;
            }
            var value = MathUtils.Ease.inOutQuad(((wMmwW > 750) ? (1500 - wMmwW) : wMmwW) / 750);
            if (((NNWWn < 750) && (wMmwW > 750)) && ((1500 - wMmwW) > NNWWn)) {
                var WmNnV = window.Math.max(0, (1500 - wMmwW) / 750);
                value = (0.5 * WmNnV) + (value * (1 - 0.5));
            } else if (VnwwM > 750) value = 0.5 + (value * (1 - 0.5));
            var mvWMM = value * 20;
            Render.scale = nvMNv + value;
            CanvasUtils.options.scheduledRatio = CanvasUtils.options.deviceRatio / (vmvNw + mvWMM);
            handleResize();
        };
        var vvMWV = window.document.createElement('canvas');
        var vWwnm = vvMWV.getContext('2d');

        function nvVmw() {
            var temp;
            var value;
            var WvmWN = ctx;
            value = 1 - MathUtils.Ease.inQuad(World.transition / 1000);
            vvMWV.width = canvas.width;
            vvMWV.height = canvas.height;
            ctx = vWwnm;
            ctx.save();
            var mnV = CanvasUtils.options.scheduledRatio / CanvasUtils.options.backingStoreRatio;
            ctx.scale(mnV, mnV);
            temp = INVENTORY2;
            INVENTORY2 = INVENTORY;
            INVENTORY = temp;
            temp = PARTICLES2;
            PARTICLES2 = PARTICLES;
            PARTICLES = temp;
            temp = LOOT2;
            LOOT2 = LOOT;
            LOOT = temp;
            temp = RESOURCES2;
            RESOURCES2 = RESOURCES;
            RESOURCES = temp;
            temp = ENTITIES2;
            ENTITIES2 = ENTITIES;
            ENTITIES = temp;
            temp = LIGHTFIRE2;
            LIGHTFIRE2 = LIGHTFIRE;
            LIGHTFIRE = temp;
            temp = GROUND2;
            GROUND2 = GROUND;
            GROUND = temp;
            temp = AI2;
            AI2 = AI;
            AI = temp;
            ctx.fillStyle = (World.day === 0) ? "#0B2129" : "#3D5942";
            ctx.fillRect(0, 0, canw, canh);
            vMwNm();
            RenderObjects();
            temp = INVENTORY2;
            INVENTORY2 = INVENTORY;
            INVENTORY = temp;
            temp = PARTICLES2;
            PARTICLES2 = PARTICLES;
            PARTICLES = temp;
            temp = LOOT2;
            LOOT2 = LOOT;
            LOOT = temp;
            temp = RESOURCES2;
            RESOURCES2 = RESOURCES;
            RESOURCES = temp;
            temp = ENTITIES2;
            ENTITIES2 = ENTITIES;
            ENTITIES = temp;
            temp = LIGHTFIRE2;
            LIGHTFIRE2 = LIGHTFIRE;
            LIGHTFIRE = temp;
            temp = GROUND2;
            GROUND2 = GROUND;
            GROUND = temp;
            temp = AI2;
            AI2 = AI;
            AI = temp;
            ctx.restore();
            ctx = WvmWN;
            ctx.globalAlpha = value;
            ctx.drawImage(vvMWV, 0, 0, canw, canh);
            ctx.globalAlpha = 1;
            World.transition = window.Math.max(0, World.transition - delta);
            if (World.transition === 0) World.changeDayCycle();
        };

        function _World() {
            Render.globalTime += delta;
            if (WvWvM === 1) nmmMm();
            wNnvM();
            myplayerfocusinscreen();
            vMwNm();
            wmVNW();
            RenderObjects();
            placingobj();
            if (World.transition > 0) nvVmw();
            Entitie.cleanRemoved();
            frameId++;
            for (var i = 0; i < SOUND_LENGTH; i++) soundLimit[i] = 0;
            GetMouseCords();
            scaleby = oldscale;
            canwns = canw / scaleby;
            canhns = canh / scaleby;
        };

        function GetMouseCords() {
            if (MOD.AimBotEnable) {
                let aplha = ctx.globalAlpha,
                width = ctx.lineWidth;
                for (var lines = 0; lines < GetAllTargets.lines.length; lines++) {
                let pos = GetAllTargets.lines[lines];

                var myPosition = {
                    x: scaleby * (pos.x1 + vertst),
                    y: scaleby * (pos.y1 + horist)
                };

                var targetsPosition = {
                    x: scaleby * (pos.x2 + vertst),
                    y: scaleby * (pos.y2 + horist)
                };

                ctx.lineWidth = pos.width,
                ctx.globalAlpha = pos.alpha,
                ctx.strokeStyle = pos.color,
                ctx.beginPath(), 
                ctx.moveTo(myPosition.x, myPosition.y), 
                ctx.lineTo(targetsPosition.x, targetsPosition.y), 
                ctx.stroke();
                }
                ctx.globalAlpha = aplha, ctx.lineWidth = width;
            }
            if (MOD.mouseFovEnable) GetAllTargets.mouseMapCords = _getMapCordsFromScreenMouseCords(GetAllTargets.mousePosition);
        };

        function _SetDetection(value) {
            WMWvN = 0;
        };

        function _getMapCordsFromScreenMouseCords(cords) {
            return {x: cords.x / scaleby - vertst, y: cords.y / scaleby - horist};
        };

        function _SetParticles(value) {
            localStorage2.setItem("particles", "" + value);
            setParticles = value;
        };
        return {
            globalTime:         window.Date.now(),
            reset:              _Reset,
            world:              _World,
            minimap:            _Minimap,
            bigminimap:         _BigMinimap,
            gauges:             _Gauges,
            gaugesAfter:        _GaugesAfter,
            leaderboard:        _Leaderboard,
            inventory:          _Inventory,
            buttonInv:          _buttonInv,
            config:             _Config,
            craft:              _Craft,
            chest:              _Chest,
            team:               _Team,
            interaction:        _Interaction,
            alertServer:        _AlertServer,
            shake:              0,
            explosionShake:     0,
            scale:              -0.,
            setParticles:       _SetParticles,
            setDetection:       _SetDetection,
            setPoisonEffect:    _SetPoisonEffect,
            stopPoisonEffect:   _StopPoisonEffect,
            __TILE_SCALE__:     __TILE_SCALE__,
            __TILE_SIZE__:      __TILE_SIZE__,
            __TILE_SIZE2__:     __TILE_SIZE2__,
            __TRANSFORM__:      0,
            wall:               _Wall,
            lowWall:            _LowWall,
            door:               _Door,
            workbench:          _Workbench,
            campfire:           _Campfire,
            campfireLight:      _CampfireLight,
            smelter:            _Smelter,
            compost:            _Compost,
            agitator:           _Agitator,
            extractor:          _Extractor,
            feeder:             _Feeder,
            workbench2:         _Workbench2,
            teslaBench:         _TeslaBench,
            orangeSeed:         _OrangeSeed,
            treeSeed:           _TreeSeed,
            groundFloor:        _GroundFloor,
            defaultBuilding:    _DefaultBuilding,
            hiddenBuilding:     _HiddenBuilding,
            breakable:          _Breakable,
            furniture:          _Furniture,
            road:               _Road,
            landmine:           _Landmine,
            dynamite:           _Dynamite,
            spike:              _Spike,
            ghoul:              _Ghoul,
            construction:       _Construction,
            lamp:               _Lamp,
            lampLight:          _LampLight,
            switchOff:          _SwitchOff,
            timerGate:          _TimerGate,
            automaticDoor:      _AutomaticDoor,
            battleRoyale:       _BattleRoyale,
            getMapCordsFromScreenMouseCords: _getMapCordsFromScreenMouseCords
        };
    })();

var ent, inhandID, weapon;
var myplayerhit = 0;

function _CheckMyPlayer(player) {
    if(World.PLAYER.id === player.pid) { 
        ent         = ENTITIES[__ENTITIE_PLAYER__];
        inhandID    = (player.extra >> 8) & 255;
        weapon      = ent.weapons[inhandID];
        myplayerhit = player.hit;
    }
}

function _AutoEat(delta) {
    if (MOD.autoEat) {
        const foodItems = {
            orange: 12,
            tomato: 77,
            mushroom: 120,
            mushroom2: 121,
            steak: 10,
            tomatoSoup: 72,
            chips: 87,
            soda: 39
        };

        const hungryLevel = World.gauges.food.current;
        MOD.gaugesFood = hungryLevel;
        const inventory = World.PLAYER.inventory;
        let isLocked = true;
        let foodInHand = false;
        let interactionTimeout = World.PLAYER.interactionDelay;
        interactionTimeout -= delta;

        if (interactionTimeout <= 0 && World.PLAYER.interaction === -1) {
            isLocked = false;
        }

        if (weapon.consumable !== 1 || weapon.heal < -1 || weapon.food <= 0) {
            foodInHand = false;
        } else {
            foodInHand = true;
        }

        if (hungryLevel < MOD.hungryLevel) {
            if (!isLocked) {
                if (!foodInHand) {
                    checkInventoryForFood();
                } else {
                    eatFood();
                }
            }
        } else {
            console.log('MOD.autoEat -> Not hungry.');
        }

        function checkInventoryForFood() {
            let foundFood = false;
            let foodItem;

            for (const item of inventory) {
                if (Object.values(foodItems).includes(item[0])) {
                    foodItem = {
                        id: item[0],
                        amount: item[1],
                        itemId: item[2],
                        extra: item[3]
                    };
                    foundFood = true;
                    break;
                }
            }

            if (!isLocked && foundFood) {
                equipFood(foodItem);
            } else if (!isLocked) {
                noFood();
            }
        }

        function equipFood(foodItem) {
            if (!isLocked) {
                Client.sendPacket(JSON.stringify([8, foodItem.id, foodItem.amount, foodItem.itemId, foodItem.extra]));
                console.log('MOD.autoEat -> Equip food.');
            }
        }

        function eatFood() {
            if (!isLocked) {
                Client.sendMouseDown();
                Client.sendMouseUp();
                console.log('MOD.autoEat -> Eat food.');
            }
        }

        function noFood() {
            console.log('MOD.autoEat -> Food not found.');
        }

        if (myplayerhit !== 0) {
            Client.sendMouseUp(); // Ensure no interference with gameplay
        }
    }
}

setInterval(_AutoEat(1), 3000);

var MapManager = (function() {
    var TOP = 0;
    var DOWN = 1;
    var LEFT = 2;
    var RIGHT = 4;
    var vMWMW = 0;
    var wMVvN = 0;
    var MnMNn = 4;
    var wWn = null;
    var vWwNw = -1;
    var VNnvM = 0;
    var grid = [];
    var NvMvV = [];
    var roads = [];
    var NWVNw = {
        i: 0,
        j: 0
    };

    function VVvvN() {
        for (var i = 0; i < wMVvN; i++) {
            grid[i] = [];
            for (var j = 0; j < vMWMW; j++) grid[i][j] = 0;
        }
    };

    function wvmnN(seed, width, height) {
        wWn = new RNG.Random(seed);
        vMWMW = width;
        wMVvN = height;
        MapManager.width = width;
        MapManager.height = height;
        grid = [];
        MapManager.grid = grid;
        NvMvV = [];
        roads = [];
        MapManager.roads = roads;
        vWwNw = -1;
        NWVNw.i = 0;
        NWVNw.j = 0;
        VNnvM = 0;
    };

    function init(seed, width, height, fun) {
        window.console.time("Town generation");
        wvmnN(seed, width, height);
        VVvvN();
        if (fun !== window.undefined) fun();
        window.console.timeEnd("Town generation");
    };
    return {
        seed: 0,
        init: init,
        grid: grid,
        roads: null,
        width: 0,
        height: 0
    };
})();

COUNTER_ENTITIE = 0;
__ENTITIE_PLAYER__          = COUNTER_ENTITIE++;
__ENTITIE_LOOT__            = COUNTER_ENTITIE++;
__ENTITIE_BULLET__          = COUNTER_ENTITIE++;
__ENTITIE_BUILD_TOP__       = COUNTER_ENTITIE++;
__ENTITIE_BUILD_DOWN__      = COUNTER_ENTITIE++;
__ENTITIE_BUILD_GROUND__    = COUNTER_ENTITIE++;
__ENTITIE_BUILD_GROUND2__   = COUNTER_ENTITIE++;
__ENTITIE_PARTICLES__       = COUNTER_ENTITIE++;
__ENTITIE_RESOURCES_TOP__   = COUNTER_ENTITIE++;
__ENTITIE_RESOURCES_DOWN__  = COUNTER_ENTITIE++;
__ENTITIE_RESOURCES_MID__   = COUNTER_ENTITIE++;
__ENTITIE_RESOURCES_STOP__  = COUNTER_ENTITIE++;
__ENTITIE_EXPLOSION__       = COUNTER_ENTITIE++;
__ENTITIE_AI__              = COUNTER_ENTITIE++;

ENTITIES[__ENTITIE_PLAYER__].update = function updateEntitiePlayer(entity, offsetX, offsetY) {
    if (Math2d.distance(entity.x, entity.y, offsetX, offsetY) > 66) {
        entity.rx = offsetX;
        entity.ry = offsetY;
        var angle = Math2d.angle(entity.rx, entity.ry, entity.nx, entity.ny);
        entity.angleX = window.Math.cos(angle);
        entity.angleY = window.Math.sin(angle);
    }
    entity.speed = (entity.state >> 8) / 100;
};
ENTITIES[__ENTITIE_PLAYER__].init = function initEntitiePlayer(entity) {
    var PLAYER = World.players[entity.pid];
    for (var i = 0; i < PLAYER.runEffect.length; i++) PLAYER.runEffect[i].delay = 0;
    for (var i = 0; i < PLAYER.cartridges.length; i++) PLAYER.cartridges[i].delay = 0;
    entity.angle = entity.nangle;
    if (PLAYER.ghoul > 0) {
        entity.heal = 1;
        entity.hurt2 = 1;
    }
};
ENTITIES[__ENTITIE_AI__].update = ENTITIES[__ENTITIE_PLAYER__].update;
ENTITIES[__ENTITIE_AI__].init = function initEntitieAI(entity) {
    entity.heal = 1;
    entity.hurt2 = 1;
    entity.angle = entity.nangle;
    entity.speed = (entity.state >> 8) / 100;
};
ENTITIES[__ENTITIE_LOOT__].init = function initEntitieLoot(entity) {
    if ((entity.x !== entity.rx) || (entity.y !== entity.ry)) {
        entity.angle = Math2d.angle(entity.x, entity.y, entity.rx, entity.ry);
        entity.nangle = entity.angle;
    } else {
        entity.angle += window.Math.PI / 2;
        entity.nangle = entity.angle;
    }
};
ENTITIES[__ENTITIE_LOOT__].update = function updateEntitieLoot(entity, offsetX, offsetY) {
    entity.hit = entity.state >> 8;
};
ENTITIES[__ENTITIE_BULLET__].init = function initEntitieBullet(entity) {
    entity.hurtAngle = Math2d.angle(entity.rx, entity.ry, entity.nx, entity.ny);
    var id = entity.extra;
    entity.speed = (entity.state >> 8) / 100;
    switch (id) {
        case 4:
        case 8:
            var player = Entitie.findEntitie(__ENTITIE_PLAYER__, entity.pid, 0);
            if (player !== null) {
                player.extra = player.extra & 255;
                player.hit = 0;
            }
            break;
        case 3:
            var player = Entitie.findEntitie(__ENTITIE_PLAYER__, entity.pid, 0);
            if (player !== null) player.hit = 0;
            break;
    }
};
ENTITIES[__ENTITIE_BULLET__].update = function updateEntitieBullet(entity, offsetX, offsetY) {
    var angle = Math2d.angle(entity.x, entity.y, entity.nx, entity.ny);
    var pi2 = window.Math.PI * 2;
    var vWWMM = (((angle + pi2) % pi2) - ((entity.hurtAngle + pi2) % pi2)) % pi2;
    if (window.Math.abs(vWWMM) > 0.1) {
        entity.rx = entity.x;
        entity.ry = entity.y;
        entity.nx = entity.x;
        entity.ny = entity.y;
    }
};
ENTITIES[__ENTITIE_RESOURCES_TOP__].update = function updateEntitieBuilding() {
};
ENTITIES[__ENTITIE_RESOURCES_DOWN__].update = ENTITIES[__ENTITIE_RESOURCES_TOP__].update;
ENTITIES[__ENTITIE_RESOURCES_MID__].update = ENTITIES[__ENTITIE_RESOURCES_TOP__].update;
ENTITIES[__ENTITIE_RESOURCES_STOP__].update = ENTITIES[__ENTITIE_RESOURCES_TOP__].update;
ENTITIES[__ENTITIE_BUILD_TOP__].update = function updateEntitieBuilding(entity, offsetX, offsetY) {
    var rotation = (entity.extra >> 5) & 3;
    entity.subtype = (entity.state >> 5) & 63;
    entity.broke = entity.state >> 14;
    entity.state = entity.state & 16383;
    var item = INVENTORY[entity.extra >> 7];
    entity.x = ((window.Math.floor(offsetX / Render.__TILE_SIZE__) * Render.__TILE_SIZE__) + Render.__TILE_SIZE2__) + item.xCenter[rotation];
    entity.y = ((window.Math.floor(offsetY / Render.__TILE_SIZE__) * Render.__TILE_SIZE__) + Render.__TILE_SIZE2__) + item.yCenter[rotation];
    entity.rx = entity.x;
    entity.ry = entity.y;
    entity.nx = entity.x;
    entity.ny = entity.y;
    entity.px = entity.x;
    entity.py = entity.y;
    if ((item.door === 1) && ((entity.state & 16) === 16)) {
        entity.px = ((window.Math.floor(entity.j + item.jMove[rotation]) * Render.__TILE_SIZE__) + Render.__TILE_SIZE2__) + item.xCenter[(rotation + 1) % 4];
        entity.py = ((window.Math.floor(entity.i + item.iMove[rotation]) * Render.__TILE_SIZE__) + Render.__TILE_SIZE2__) + item.yCenter[(rotation + 1) % 4];
    }
};
ENTITIES[__ENTITIE_BUILD_DOWN__].update = ENTITIES[__ENTITIE_BUILD_TOP__].update;
ENTITIES[__ENTITIE_BUILD_GROUND__].update = ENTITIES[__ENTITIE_BUILD_TOP__].update;
ENTITIES[__ENTITIE_BUILD_GROUND2__].update = ENTITIES[__ENTITIE_BUILD_TOP__].update;
try {
    Render.shake;
} catch (error) {
    var Render = {};
}
var __WARM__      = 1;
var __RADIATION__ = 2;


var COUNTER = 0;
var AREAS = {
    __PLAYER__:             COUNTER++,
    __FIRE__:               COUNTER++,
    __WORKBENCH__:          COUNTER++,
    __BBQ__:                COUNTER++,
    __WEAVING__:            COUNTER++,
    __WORKBENCH2__:         COUNTER++,
    __SMELTER__:            COUNTER++,
    __TESLA__:              COUNTER++,
    __COMPOST__:            COUNTER++,
    __AGITATOR__:           COUNTER++,
    __EXTRACTOR__:          COUNTER++,
    __WELDING_MACHINE__:    COUNTER++,
    __FEEDER__:             COUNTER++
};

COUNTER = 0;
var SOUNDID = {
    __NO_SOUND__:           COUNTER++,
    __WOOD_IMPACT__:        COUNTER++,
    __STONE_IMPACT__:       COUNTER++,
    __STONE_IMPACT_2__:     COUNTER++,
    __STEEL_IMPACT__:       COUNTER++,
    __WOOD_DESTROY__:       COUNTER++,
    __STONE_DESTROY__:      COUNTER++,
    __STEEL_DESTROY__:      COUNTER++,
    __PILLOW_IMPACT__:      COUNTER++,
    __PILLOW_DESTROY__:     COUNTER++
};

var SOUND = [];
SOUND[SOUNDID.__WOOD_IMPACT__]      = "audio/wood-impact.mp3";
SOUND[SOUNDID.__STONE_IMPACT__]     = "audio/stone-impact2.mp3";
SOUND[SOUNDID.__STONE_IMPACT_2__]   = "audio/stone-impact.mp3";
SOUND[SOUNDID.__STEEL_IMPACT__]     = "audio/metal-impact2.mp3";
SOUND[SOUNDID.__PILLOW_IMPACT__]    = "audio/pillow-impact-impact.mp3";
SOUND[SOUNDID.__WOOD_DESTROY__]     = "audio/wood-destroy3.mp3";
SOUND[SOUNDID.__STONE_DESTROY__]    = "audio/stone-destroy.mp3";
SOUND[SOUNDID.__STEEL_DESTROY__]    = "audio/metal-destroy2.mp3";
SOUND[SOUNDID.__PILLOW_DESTROY__]   = "audio/pillow-impact-destroy.mp3";

var SOUND_LENGTH = SOUND.length;

COUNTER = 0;
var BEHAVIOR = {
    __NO__:             COUNTER++,
    __SEED__:           COUNTER++,
    __SEED_RESOURCE__:  COUNTER++,
    __LOGIC__:          COUNTER++,
    __AI_CONSTRUCTOR__: COUNTER++
};

COUNTER = 0;
var AIID = {
    __NORMAL_GHOUL__:       COUNTER++,
    __FAST_GHOUL__:         COUNTER++,
    __EXPLOSIVE_GHOUL__:    COUNTER++,
    __RADIOACTIVE_GHOUL__:  COUNTER++,
    __ARMORED_GHOUL__:      COUNTER++,
    __PUMPKIN_GHOUL__:      COUNTER++,
    __LAPABOT_REPAIR__:     COUNTER++,
    __HAL_BOT__:            COUNTER++,
    __TESLA_BOT__:          COUNTER++
};

COUNTER = 0;
var SKILLS = {
    __SKILL__:      COUNTER++,
    __SURVIVAL__:   COUNTER++,
    __CLOTHE__:     COUNTER++,
    __BUILDING__:   COUNTER++,
    __TOOL__:       COUNTER++,
    __WEAPON__:     COUNTER++,
    __PLANT__:      COUNTER++,
    __DRUG__:       COUNTER++,
    __MINERAL__:    COUNTER++,
    __LOGIC__:      COUNTER++
};

COUNTER = 1;
var IID = {
    __WOOD__:                   COUNTER++,
    __STONE__:                  COUNTER++,
    __STEEL__:                  COUNTER++,
    __ANIMAL_FAT__:             COUNTER++,
    __ANIMAL_TENDON__:          COUNTER++,
    __STRING__:                 COUNTER++,
    __LEATHER_BOAR__:           COUNTER++,
    __SHAPED_METAL__:           COUNTER++,
    __RAW_STEAK__:              COUNTER++,
    __COOKED_STEAK__:           COUNTER++,
    __ROTTEN_STEAK__:           COUNTER++,
    __ORANGE__:                 COUNTER++,
    __ROTTEN_ORANGE__:          COUNTER++,
    __SEED_ORANGE__:            COUNTER++,
    __HACHET__:                 COUNTER++,
    __STONE_PICKAXE__:          COUNTER++,
    __STEEL_PICKAXE__:          COUNTER++,
    __STONE_AXE__:              COUNTER++,
    __WORKBENCH__:              COUNTER++,
    __WOOD_SPEAR__:             COUNTER++,
    __WOOD_BOW__:               COUNTER++,
    __9MM__:                    COUNTER++,
    __DESERT_EAGLE__:           COUNTER++,
    __SHOTGUN__:                COUNTER++,
    __AK47__:                   COUNTER++,
    __SNIPER__:                 COUNTER++,
    __WOOD_WALL__:              COUNTER++,
    __STONE_WALL__:             COUNTER++,
    __STEEL_WALL__:             COUNTER++,
    __WOOD_DOOR__:              COUNTER++,
    __STONE_DOOR__:             COUNTER++,
    __STEEL_DOOR__:             COUNTER++,
    __CAMPFIRE__:               COUNTER++,
    __BULLET_9MM__:             COUNTER++,
    __BULLET_SHOTGUN__:         COUNTER++,
    __BULLET_SNIPER__:          COUNTER++,
    __MEDIKIT__:                COUNTER++,
    __BANDAGE__:                COUNTER++,
    __SODA__:                   COUNTER++,
    __MP5__:                    COUNTER++,
    __HEADSCARF__:              COUNTER++,
    __CHAPKA__:                 COUNTER++,
    __WINTER_COAT__:            COUNTER++,
    __GAZ_MASK__:               COUNTER++,
    __GAZ_PROTECTION__:         COUNTER++,
    __RADIATION_SUIT__:         COUNTER++,
    __WOOD_ARROW__:             COUNTER++,
    __CAMPFIRE_BBQ__:           COUNTER++,
    __SMELTER__:                COUNTER++,
    __WOOD_BIGDOOR__:           COUNTER++,
    __STONE_BIGDOOR__:          COUNTER++,
    __STEEL_BIGDOOR__:          COUNTER++,
    __SULFUR__:                 COUNTER++,
    __SHAPED_URANIUM__:         COUNTER++,
    __WORKBENCH2__:             COUNTER++,
    __URANIUM__:                COUNTER++,
    __WEAVING__:                COUNTER++,
    __GASOLINE__:               COUNTER++,
    __SULFUR_PICKAXE__:         COUNTER++,
    __CHEST__:                  COUNTER++,
    __FRIDGE__:                 COUNTER++,
    __WOOD_FLOOR__:             COUNTER++,
    __HAMMER__:                 COUNTER++,
    __SLEEPING_BAG__:           COUNTER++,
    __REPAIR_HAMMER__:          COUNTER++,
    __NAILS__:                  COUNTER++,
    __WOODLIGHT_FLOOR__:        COUNTER++,
    __WOOD_SMALLWALL__:         COUNTER++,
    __STONE_SMALLWALL__:        COUNTER++,
    __STEEL_SMALLWALL__:        COUNTER++,
    __FURNITURE__:              COUNTER++,
    __TOMATO_SOUP__:            COUNTER++,
    __SYRINGE__:                COUNTER++,
    __CHEMICAL_COMPONENT__:     COUNTER++,
    __RADAWAY__:                COUNTER++,
    __SEED_TOMATO__:            COUNTER++,
    __TOMATO__:                 COUNTER++,
    __ROTTEN_TOMATO__:          COUNTER++,
    __CAN__:                    COUNTER++,
    __WOOD_CROSSBOW__:          COUNTER++,
    __WOOD_CROSSARROW__:        COUNTER++,
    __NAIL_GUN__:               COUNTER++,
    __SAWED_OFF_SHOTGUN__:      COUNTER++,
    __STONE_FLOOR__:            COUNTER++,
    __TILING_FLOOR__:           COUNTER++,
    __ROAD__:                   COUNTER++,
    __CRISPS__:                 COUNTER++,
    __ROTTEN_CRISPS__:          COUNTER++,
    __ELECTRONICS__:            COUNTER++,
    __JUNK__:                   COUNTER++,
    __WIRE__:                   COUNTER++,
    __ENERGY_CELLS__:           COUNTER++,
    __LASER_PISTOL__:           COUNTER++,
    __TESLA__:                  COUNTER++,
    __ALLOYS__:                 COUNTER++,
    __SULFUR_AXE__:             COUNTER++,
    __LANDMINE__:               COUNTER++,
    __DYNAMITE__:               COUNTER++,
    __C4__:                     COUNTER++,
    __C4_TRIGGER__:             COUNTER++,
    __COMPOST__:                COUNTER++,
    __ARMOR_PHYSIC_1__:         COUNTER++,
    __ARMOR_PHYSIC_2__:         COUNTER++,
    __ARMOR_PHYSIC_3__:         COUNTER++,
    __ARMOR_FIRE_1__:           COUNTER++,
    __ARMOR_FIRE_2__:           COUNTER++,
    __ARMOR_FIRE_3__:           COUNTER++,
    __ARMOR_DEMINER__:          COUNTER++,
    __ARMOR_TESLA_1__:          COUNTER++,
    __ARMOR_TESLA_2__:          COUNTER++,
    __WOOD_SPIKE__:             COUNTER++,
    __LASER_SUBMACHINE__:       COUNTER++,
    __GRENADE__:                COUNTER++,
    __SUPER_HAMMER__:           COUNTER++,
    __GHOUL_BLOOD__:            COUNTER++,
    __CAMOUFLAGE_GEAR__:        COUNTER++,
    __AGITATOR__:               COUNTER++,
    __GHOUL_DRUG__:             COUNTER++,
    __MUSHROOM1__:              COUNTER++,
    __MUSHROOM2__:              COUNTER++,
    __MUSHROOM3__:              COUNTER++,
    __ROTTEN_MUSHROOM1__:       COUNTER++,
    __ROTTEN_MUSHROOM2__:       COUNTER++,
    __ROTTEN_MUSHROOM3__:       COUNTER++,
    __LAPADONE__:               COUNTER++,
    __LAPABOT_REPAIR__:         COUNTER++,
    __SMALL_WIRE__:             COUNTER++,
    __PUMPKIN__:                COUNTER++,
    __ROTTEN_PUMPKIN__:         COUNTER++,
    __SEED_GHOUL__:             COUNTER++,
    __EXTRACTOR__:              COUNTER++,
    __ANTIDOTE__:               COUNTER++,
    __ANTIDOTE_FLOWER__:        COUNTER++,
    __SEED_TREE__:              COUNTER++,
    __ACORN__:                  COUNTER++,
    __ROTTEN_ACORN__:           COUNTER++,
    __LASER_SNIPER__:           COUNTER++,
    __HAL_BOT__:                COUNTER++,
    __TESLA_BOT__:              COUNTER++,
    __CABLE0__:                 COUNTER++,
    __CABLE1__:                 COUNTER++,
    __CABLE2__:                 COUNTER++,
    __CABLE3__:                 COUNTER++,
    __SWITCH__:                 COUNTER++,
    __GATE_OR__:                COUNTER++,
    __GATE_AND__:               COUNTER++,
    __GATE_NOT__:               COUNTER++,
    __LAMP__:                   COUNTER++,
    __CABLE_WALL__:             COUNTER++,
    __AUTOMATIC_DOOR__:         COUNTER++,
    __PLATFORM__:               COUNTER++,
    __STONE_CAVE__:             COUNTER++,
    __BUNKER_WALL__:            COUNTER++,
    __GOLD_FLOOR__:             COUNTER++,
    __RED_FLOOR__:              COUNTER++,
    __WELDING_MACHINE__:        COUNTER++,
    __CABLE4__:                 COUNTER++,
    __GATE_TIMER__:             COUNTER++,
    __GATE_XOR__:               COUNTER++,
    __BUILDER_1__:              COUNTER++,
    __BUILDER_2__:              COUNTER++,
    __INV_1__:                  COUNTER++,
    __INV_2__:                  COUNTER++,
    __INV_3__:                  COUNTER++,
    __INV_4__:                  COUNTER++,
    __INV_5__:                  COUNTER++,
    __FEATHERWEIGHT__:          COUNTER++,
    __FEEDER__:                 COUNTER++
};
COUNTER = 0;
var LOOTID = {
    __SMALL_WOOD__:             COUNTER++,
    __MEDIUM_WOOD__:            COUNTER++,
    __BIG_WOOD__:               COUNTER++,
    __SMALL_STONE__:            COUNTER++,
    __MEDIUM_STONE__:           COUNTER++,
    __BIG_STONE__:              COUNTER++,
    __STEEL__:                  COUNTER++,
    __ANIMAL_FAT__:             COUNTER++,
    __ANIMAL_TENDON__:          COUNTER++,
    __STRING__:                 COUNTER++,
    __LEATHER_BOAR__:           COUNTER++,
    __SHAPED_METAL__:           COUNTER++,
    __RAW_STEAK__:              COUNTER++,
    __COOKED_STEAK__:           COUNTER++,
    __ROTTEN_STEAK__:           COUNTER++,
    __ORANGE__:                 COUNTER++,
    __ROTTEN_ORANGE__:          COUNTER++,
    __SEED_ORANGE__:            COUNTER++,
    __HACHET__:                 COUNTER++,
    __STONE_PICKAXE__:          COUNTER++,
    __STEEL_PICKAXE__:          COUNTER++,
    __STONE_AXE__:              COUNTER++,
    __WORKBENCH__:              COUNTER++,
    __WOOD_SPEAR__:             COUNTER++,
    __WOOD_BOW__:               COUNTER++,
    __9MM__:                    COUNTER++,
    __DESERT_EAGLE__:           COUNTER++,
    __SHOTGUN__:                COUNTER++,
    __AK47__:                   COUNTER++,
    __SNIPER__:                 COUNTER++,
    __WOOD_WALL__:              COUNTER++,
    __STONE_WALL__:             COUNTER++,
    __STEEL_WALL__:             COUNTER++,
    __WOOD_DOOR__:              COUNTER++,
    __STONE_DOOR__:             COUNTER++,
    __STEEL_DOOR__:             COUNTER++,
    __CAMPFIRE__:               COUNTER++,
    __BULLET_9MM__:             COUNTER++,
    __BULLET_SHOTGUN__:         COUNTER++,
    __BULLET_SNIPER__:          COUNTER++,
    __MEDIKIT__:                COUNTER++,
    __BANDAGE__:                COUNTER++,
    __SODA__:                   COUNTER++,
    __MP5__:                    COUNTER++,
    __HEADSCARF__:              COUNTER++,
    __CHAPKA__:                 COUNTER++,
    __WINTER_COAT__:            COUNTER++,
    __GAZ_MASK__:               COUNTER++,
    __GAZ_PROTECTION__:         COUNTER++,
    __RADIATION_SUIT__:         COUNTER++,
    __WOOD_ARROW__:             COUNTER++,
    __CAMPFIRE_BBQ__:           COUNTER++,
    __SMELTER__:                COUNTER++,
    __WOOD_BIGDOOR__:           COUNTER++,
    __STONE_BIGDOOR__:          COUNTER++,
    __STEEL_BIGDOOR__:          COUNTER++,
    __SULFUR__:                 COUNTER++,
    __SHAPED_URANIUM__:         COUNTER++,
    __WORKBENCH2__:             COUNTER++,
    __URANIUM__:                COUNTER++,
    __WEAVING__:                COUNTER++,
    __GASOLINE__:               COUNTER++,
    __SULFUR_PICKAXE__:         COUNTER++,
    __CHEST__:                  COUNTER++,
    __FRIDGE__:                 COUNTER++,
    __WOOD_FLOOR__:             COUNTER++,
    __HAMMER__:                 COUNTER++,
    __SLEEPING_BAG__:           COUNTER++,
    __REPAIR_HAMMER__:          COUNTER++,
    __NAILS__:                  COUNTER++,
    __WOODLIGHT_FLOOR__:        COUNTER++,
    __WOOD_SMALLWALL__:         COUNTER++,
    __STONE_SMALLWALL__:        COUNTER++,
    __STEEL_SMALLWALL__:        COUNTER++,
    __TOMATO_SOUP__:            COUNTER++,
    __SYRINGE__:                COUNTER++,
    __CHEMICAL_COMPONENT__:     COUNTER++,
    __RADAWAY__:                COUNTER++,
    __SEED_TOMATO__:            COUNTER++,
    __TOMATO__:                 COUNTER++,
    __ROTTEN_TOMATO__:          COUNTER++,
    __CAN__:                    COUNTER++,
    __WOOD_CROSSBOW__:          COUNTER++,
    __WOOD_CROSSARROW__:        COUNTER++,
    __NAIL_GUN__:               COUNTER++,
    __SAWED_OFF_SHOTGUN__:      COUNTER++,
    __STONE_FLOOR__:            COUNTER++,
    __TILING_FLOOR__:           COUNTER++,
    __CRISPS__:                 COUNTER++,
    __ROTTEN_CRISPS__:          COUNTER++,
    __ELECTRONICS__:            COUNTER++,
    __JUNK__:                   COUNTER++,
    __WIRE__:                   COUNTER++,
    __ENERGY_CELLS__:           COUNTER++,
    __LASER_PISTOL__:           COUNTER++,
    __TESLA__:                  COUNTER++,
    __ALLOYS__:                 COUNTER++,
    __SULFUR_AXE__:             COUNTER++,
    __LANDMINE__:               COUNTER++,
    __DYNAMITE__:               COUNTER++,
    __C4__:                     COUNTER++,
    __C4_TRIGGER__:             COUNTER++,
    __COMPOST__:                COUNTER++,
    __ARMOR_PHYSIC_1__:         COUNTER++,
    __ARMOR_PHYSIC_2__:         COUNTER++,
    __ARMOR_PHYSIC_3__:         COUNTER++,
    __ARMOR_FIRE_1__:           COUNTER++,
    __ARMOR_FIRE_2__:           COUNTER++,
    __ARMOR_FIRE_3__:           COUNTER++,
    __ARMOR_DEMINER__:          COUNTER++,
    __ARMOR_TESLA_1__:          COUNTER++,
    __ARMOR_TESLA_2__:          COUNTER++,
    __WOOD_SPIKE__:             COUNTER++,
    __LASER_SUBMACHINE__:       COUNTER++,
    __GRENADE__:                COUNTER++,
    __SUPER_HAMMER__:           COUNTER++,
    __GHOUL_BLOOD__:            COUNTER++,
    __CAMOUFLAGE_GEAR__:        COUNTER++,
    __AGITATOR__:               COUNTER++,
    __GHOUL_DRUG__:             COUNTER++,
    __MUSHROOM1__:              COUNTER++,
    __MUSHROOM2__:              COUNTER++,
    __MUSHROOM3__:              COUNTER++,
    __ROTTEN_MUSHROOM1__:       COUNTER++,
    __ROTTEN_MUSHROOM2__:       COUNTER++,
    __ROTTEN_MUSHROOM3__:       COUNTER++,
    __LAPADONE__:               COUNTER++,
    __LAPABOT_REPAIR__:         COUNTER++,
    __SMALL_WIRE__:             COUNTER++,
    __PUMPKIN__:                COUNTER++,
    __ROTTEN_PUMPKIN__:         COUNTER++,
    __SEED_GHOUL__:             COUNTER++,
    __EXTRACTOR__:              COUNTER++,
    __ANTIDOTE__:               COUNTER++,
    __ANTIDOTE_FLOWER__:        COUNTER++,
    __SEED_TREE__:              COUNTER++,
    __ACORN__:                  COUNTER++,
    __ROTTEN_ACORN__:           COUNTER++,
    __LASER_SNIPER__:           COUNTER++,
    __HAL_BOT__:                COUNTER++,
    __TESLA_BOT__:              COUNTER++,
    __CABLE0__:                 COUNTER++,
    __CABLE1__:                 COUNTER++,
    __CABLE2__:                 COUNTER++,
    __CABLE3__:                 COUNTER++,
    __SWITCH__:                 COUNTER++,
    __GATE_OR__:                COUNTER++,
    __GATE_AND__:               COUNTER++,
    __GATE_NOT__:               COUNTER++,
    __LAMP__:                   COUNTER++,
    __CABLE_WALL__:             COUNTER++,
    __AUTOMATIC_DOOR__:         COUNTER++,
    __PLATFORM__:               COUNTER++,
    __STONE_CAVE__:             COUNTER++,
    __BUNKER_WALL__:            COUNTER++,
    __GOLD_FLOOR__:             COUNTER++,
    __RED_FLOOR__:              COUNTER++,
    __WELDING_MACHINE__:        COUNTER++,
    __CABLE4__:                 COUNTER++,
    __GATE_TIMER__:             COUNTER++,
    __GATE_XOR__:               COUNTER++,
    __FEEDER__:                 COUNTER++
};

COUNTER = 0;
var PARTICLESID = {
    __NOTHING__:        COUNTER++,
    __WOOD__:           COUNTER++,
    __STONE__:          COUNTER++,
    __STEEL__:          COUNTER++,
    __URANIUM__:        COUNTER++,
    __SULFUR__:         COUNTER++,
    __LEAF__:           COUNTER++,
    __LEAFTREE__:       COUNTER++,
    __ORANGE__:         COUNTER++,
    __BLOOD__:          COUNTER++,
    __FIRE__:           COUNTER++,
    __FUR__:            COUNTER++,
    __BED0__:           COUNTER++,
    __BED1__:           COUNTER++,
    __SOFA0__:          COUNTER++,
    __SOFA1__:          COUNTER++,
    __SOFA2__:          COUNTER++,
    __TOILET__:         COUNTER++,
    __WOODLIGHT__:      COUNTER++,
    __SAFE0__:          COUNTER++,
    __GARBAGE0__:       COUNTER++,
    __FRIDGE__:         COUNTER++,
    __PLOT__:           COUNTER++,
    __BARELRED__:       COUNTER++,
    __BARELGREEN__:     COUNTER++,
    __METAL__:          COUNTER++,
    __TOMATO__:         COUNTER++,
    __GREY_STEEL__:     COUNTER++,
    __BLUE_STEEL__:     COUNTER++,
    __RED_STEEL__:      COUNTER++,
    __KAKI__:           COUNTER++,
    __MUSHROOM1__:      COUNTER++,
    __MUSHROOM2__:      COUNTER++,
    __MUSHROOM3__:      COUNTER++,
    __GOLD__:           COUNTER++
};

var WAITADS = [{
    src: "img/wait-ads-1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/wait-ads-2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/wait-ads-3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/wait-ads-4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/wait-ads-5.png",
    img: {
        isLoaded: 0
    }
}];
var PARTICLES = [];
PARTICLES[PARTICLESID.__NOTHING__] = [];
PARTICLES[PARTICLESID.__WOOD__] = [{
    src: "img/day-particules-wood1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-wood2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-wood3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-wood4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-wood5.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__STONE__] = [{
    src: "img/day-particules-stone1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-stone2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-stone3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-stone4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-stone5.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__STEEL__] = [{
    src: "img/day-particules-steel1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-steel2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-steel3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-steel4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-steel5.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__URANIUM__] = [{
    src: "img/day-particules-uranium1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-uranium2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-uranium3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-uranium4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-uranium5.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-uranium6.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-uranium7.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-uranium8.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-uranium9.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__SULFUR__] = [{
    src: "img/day-particules-sulfur1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sulfur2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sulfur3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sulfur4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sulfur5.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sulfur6.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sulfur7.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sulfur8.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sulfur9.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__LEAF__] = [{
    src: "img/day-particules-leaf1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaf2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaf3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaf4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaf5.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__LEAFTREE__] = [{
    src: "img/day-particules-wood1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-wood3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaftree1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaftree2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaftree3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaftree4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaftree5.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.flower] = [{
    src: "img/day-particules-flower1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-flower2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-flower3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-flower4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-flower5.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__ORANGE__] = [{
    src: "img/day-particules-leaf1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaf2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaf3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaf4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaf5.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaf6.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaf7.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaf8.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-leaf9.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__BLOOD__] = [{
    src: "img/day-particules-blood1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-blood2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-blood3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-blood4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-blood5.png",
    img: {
        isLoaded: 0
    }
}];
var NVMWV = 380;
PARTICLES[PARTICLESID.__FIRE__] = [{
    src: "img/day-particules-fire1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-fire2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-fire3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-fire4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-fire5.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__FUR__] = [{
    src: "img/day-particules-fur1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-fur2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-fur3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-fur4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-fur5.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__BED0__] = [{
    src: "img/day-particules-bed0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-bed1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-bed2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-bed6.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-wood1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-wood3.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__BED1__] = [{
    src: "img/day-particules-bed3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-bed4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-bed5.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-bed6.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-wood1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-wood3.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__SOFA0__] = [{
    src: "img/day-particules-sofa0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sofa1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sofa2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sofa3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sofa4.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__SOFA1__] = [{
    src: "img/day-particules-sofa0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sofa1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sofa2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sofa5.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sofa6.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__SOFA2__] = [{
    src: "img/day-particules-sofa0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sofa1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sofa2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sofa7.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-sofa8.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__TOILET__] = [{
    src: "img/day-particules-toilet0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-toilet1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-toilet2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-toilet3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-toilet4.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__WOODLIGHT__] = [{
    src: "img/day-particules-woodlight0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-woodlight1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-woodlight2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-woodlight3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-woodlight4.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__SAFE0__] = [{
    src: "img/day-particules-safe0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-safe1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-safe2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-safe3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-safe4.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__GARBAGE0__] = [{
    src: "img/day-particules-garbage0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-garbage1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-garbage2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-garbage3.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__FRIDGE__] = [{
    src: "img/day-particules-fridge0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-fridge1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-fridge2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-fridge3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-fridge4.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__PLOT__] = [{
    src: "img/day-particules-plot0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-plot1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-plot2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-plot3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-wood1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-wood3.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__BARELRED__] = [{
    src: "img/day-particules-barel0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-barel1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-barel2.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__BARELGREEN__] = [{
    src: "img/day-particules-barel3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-barel4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-barel5.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__METAL__] = [{
    src: "img/day-particules-metal0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-metal1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-metal2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-metal3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-metal4.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__TOMATO__] = [{
    src: "img/day-particules-tomato0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-tomato1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-tomato2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-tomato3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-tomato4.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__BLUE_STEEL__] = [{
    src: "img/day-particules-blue-steel0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-blue-steel1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-blue-steel2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-blue-steel3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-blue-steel4.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__GREY_STEEL__] = [{
    src: "img/day-particules-grey-steel0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-grey-steel1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-grey-steel2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-grey-steel3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-grey-steel4.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__RED_STEEL__] = [{
    src: "img/day-particules-red-steel0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-red-steel1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-red-steel2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-red-steel3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-red-steel4.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__KAKI__] = [{
    src: "img/day-particules-kaki0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-kaki1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-kaki2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-kaki3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-kaki4.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__MUSHROOM1__] = [{
    src: "img/day-particules-mushroom4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-mushroom5.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-mushroom6.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__MUSHROOM2__] = [{
    src: "img/day-particules-mushroom1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-mushroom2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-mushroom3.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__MUSHROOM3__] = [{
    src: "img/day-particules-mushroom7.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-mushroom8.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-mushroom9.png",
    img: {
        isLoaded: 0
    }
}];
PARTICLES[PARTICLESID.__GOLD__] = [{
    src: "img/day-particules-gold0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-gold1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-particules-gold2.png",
    img: {
        isLoaded: 0
    }
}];

function Detail(_name, _description, category, recipe, mm, area, level, previous, price) {
    this.name        = _name;
    this.description = _description;
    if (recipe !== window.undefined) this.recipe = recipe;
    if (mm !== window.undefined) this.stack = mm;
    if (area !== window.undefined) {
        this.area   = [];
        this.timer  = [];
        for (var i = 0; i < area.length; i++) {
            this.area[i]  = area[i][0];
            this.timer[i] = area[i][1];
        }
    }

    if (category !== window.undefined)  this.category   = category;
    else this.category  = -1;

    if (level !== window.undefined)     this.level      = level;
    else this.level     = -1;

    if (previous !== window.undefined)  this.previous   = previous;
    else this.previous  = -1;

    if (price !== window.undefined)     this.price      = price;
    else this.price     = 1;
};

var INVENTORY = [{
    src: [],
    img: []
}, {
    id: IID.__WOOD__,
    itemButton: {
        src: ["img/inv-wood-out.png", "img/inv-wood-in.png", "img/inv-wood-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Wood", "Found in trees, or on the ground."),
    stack: 255,
    loot: LOOTID.__BIG_WOOD__,
    score: 10
}, {
    id: IID.__STONE__,
    itemButton: {
        src: ["img/inv-stone-out.png", "img/inv-stone-in.png", "img/inv-stone-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Stone", "Find it on the ground or on the rock.", SKILLS.__MINERAL__, [], 0, [
        [AREAS.__EXTRACTOR__, 80000]
    ]),
    craftStart: 50,
    craftRng: 200,
    stack: 255,
    loot: LOOTID.__BIG_STONE__,
    score: 14
}, {
    id: IID.__STEEL__,
    itemButton: {
        src: ["img/inv-steel-out.png", "img/inv-steel-in.png", "img/inv-steel-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Iron", "Melt it on a Firepit or a Smelter", SKILLS.__MINERAL__, [], 0, [
        [AREAS.__EXTRACTOR__, 120000]
    ]),
    craftStart: 4,
    craftRng: 8,
    stack: 255,
    loot: LOOTID.__STEEL__,
    score: 28
}, {
    id: IID.__ANIMAL_FAT__,
    itemButton: {
        src: ["img/inv-animal-fat-out.png", "img/inv-animal-fat-in.png", "img/inv-animal-fat-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Animal Fat", "Useful to craft bullet and clothes"),
    stack: 255,
    loot: LOOTID.__ANIMAL_FAT__,
    score: 32
}, {
    id: IID.__ANIMAL_TENDON__,
    itemButton: {
        src: ["img/inv-animal-tendon-out.png", "img/inv-animal-tendon-in.png", "img/inv-animal-tendon-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Animal Tendon", "Useful to make string"),
    stack: 255,
    loot: LOOTID.__ANIMAL_TENDON__,
    score: 100
}, {
    id: IID.__STRING__,
    itemButton: {
        src: ["img/inv-string-out.png", "img/inv-string-in.png", "img/inv-string-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("String", "Useful to craft many INVENTORY.", SKILLS.__SURVIVAL__, [
        [IID.__ANIMAL_TENDON__, 2]
    ], 1, [
        [AREAS.__WORKBENCH__, 20000]
    ]),
    stack: 255,
    loot: LOOTID.__STRING__
}, {
    id: IID.__LEATHER_BOAR__,
    itemButton: {
        src: ["img/inv-leather-boar-out.png", "img/inv-leather-boar-in.png", "img/inv-leather-boar-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Leather", "Useful to make clothes"),
    stack: 255,
    loot: LOOTID.__LEATHER_BOAR__,
    score: 32
}, {
    id: IID.__SHAPED_METAL__,
    itemButton: {
        src: ["img/inv-shaped-metal-out.png", "img/inv-shaped-metal-in.png", "img/inv-shaped-metal-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Shaped Metal", "To craft improved INVENTORY.", SKILLS.__MINERAL__, [
        [IID.__STEEL__, 2]
    ], 1, [
        [AREAS.__SMELTER__, 3000],
        [AREAS.__BBQ__, 30000]
    ]),
    stack: 255,
    loot: LOOTID.__SHAPED_METAL__
}, {
    id: IID.__RAW_STEAK__,
    itemButton: {
        src: ["img/inv-raw-steak-out.png", "img/inv-raw-steak-in.png", "img/inv-raw-steak-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Raw Steak", "#Vegan"),
    stack: 10,
    loot: LOOTID.__RAW_STEAK__,
    perish: 15,
    perishId: IID.__ROTTEN_STEAK__,
    idWeapon: 12,
    wait: 5,
    score: 28
}, {
    id: IID.__COOKED_STEAK__,
    itemButton: {
        src: ["img/inv-cooked-steak-out.png", "img/inv-cooked-steak-in.png", "img/inv-cooked-steak-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Cooked Steak", "Rare or medium?", SKILLS.__SURVIVAL__, [
        [IID.__RAW_STEAK__, 1]
    ], 1, [
        [AREAS.__FIRE__, 20000],
        [AREAS.__BBQ__, 10000]
    ]),
    stack: 10,
    loot: LOOTID.__COOKED_STEAK__,
    wait: 5,
    perish: 3,
    perishId: IID.__ROTTEN_STEAK__,
    idWeapon: 13     
}, {
    id: IID.__ROTTEN_STEAK__,
    itemButton: {
        src: ["img/inv-rotten-steak-out.png", "img/inv-rotten-steak-in.png", "img/inv-rotten-steak-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    stack: 10,
    loot: LOOTID.__ROTTEN_STEAK__,
    wait: 5,
    idWeapon: 14,    
    detail: new Detail("Rotten Steak", "Don't eat that."),
    score: 20
}, {
    id: IID.__ORANGE__,
    itemButton: {
        src: ["img/inv-orange-out.png", "img/inv-orange-in.png", "img/inv-orange-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Orange", "A little hungry?"),
    stack: 20,
    loot: LOOTID.__ORANGE__,
    wait: 5,
    perish: 10,
    perishId: IID.__ROTTEN_ORANGE__,
    idWeapon: 15,    
    score: 24
}, {
    id: IID.__ROTTEN_ORANGE__,
    itemButton: {
        src: ["img/inv-rotten-orange-out.png", "img/inv-rotten-orange-in.png", "img/inv-rotten-orange-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Rotten Orange", "Go on, have a bite!", SKILLS.__PLANT__, [
        [IID.__ORANGE__, 4]
    ], 8, [
        [AREAS.__COMPOST__, 40000]
    ]),
    stack: 20,
    loot: LOOTID.__ROTTEN_ORANGE__,
    wait: 5,
    idWeapon: 16,     
    score: 20
}, {
    id: IID.__SEED_ORANGE__,
    itemButton: {
        src: ["img/inv-orange-seed-out.png", "img/inv-orange-seed-in.png", "img/inv-orange-seed-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Orange Seed", "Fill up on Vitame C?", SKILLS.__PLANT__, [
        [IID.__ORANGE__, 4]
    ], 1, [
        [AREAS.__FIRE__, 20000],
        [AREAS.__BBQ__, 15000]
    ]),
    stack: 40,
    loot: LOOTID.__SEED_ORANGE__,
    fruit:  LOOTID.__ORANGE__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [30, 30, 30, 30],
    height: [30, 30, 30, 30],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [35, 35, 35, 35],
    _y: [35, 35, 35, 35],
    blueprint: {
        src: "img/day-clear-blue-plant2-orange.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-plant2-orange.png",
        img: {
            isLoaded: 0
        }
    },
    door: 0,
    explosion: 0,
    behavior: BEHAVIOR.__SEED__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.orangeSeed,
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__NO_SOUND__,
    building: [{
        src: "img/day-plant0-orange.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-plant1-orange.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-plant2-orange.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-plant3-orange.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-plant4-orange.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__ORANGE__,
    particlesDist: 68,
    timelife: ((5 * 8) * 60) * 1000,
    life: 250,
    score: 0
}, {
    id: IID.__HACHET__,
    itemButton: {
        src: ["img/inv-hachet-out.png", "img/inv-hachet-in.png", "img/inv-hachet-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Hatchet", "Harvest Wood and Stone.", SKILLS.__TOOL__, [
        [IID.__WOOD__, 10],  
        [IID.__STONE__, 2]
    ], 1, [
        [AREAS.__PLAYER__, 5000],
        [AREAS.__WORKBENCH__, 10000]
    ]),
    idWeapon: 3,     
    stack: 1,
    loot: LOOTID.__HACHET__, 
    wait: 10
}, {
    id: IID.__STONE_PICKAXE__,
    itemButton: {
        src: ["img/inv-stone-pickaxe-out.png", "img/inv-stone-pickaxe-in.png", "img/inv-stone-pickaxe-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Stone Pickaxe", "Mine Stone and Iron.", SKILLS.__TOOL__, [
        [IID.__WOOD__, 100],
        [IID.__STONE__, 30]
    ], 1, [
        [AREAS.__WORKBENCH__, 30000]
    ]),
    idWeapon: 1,     
    stack: 1,
    loot: LOOTID.__STONE_PICKAXE__,
    wait: 10
}, {
    id: IID.__STEEL_PICKAXE__,
    itemButton: {
        src: ["img/inv-steel-pickaxe-out.png", "img/inv-steel-pickaxe-in.png", "img/inv-steel-pickaxe-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Metal Pickaxe", "Mine also Sulfur", SKILLS.__TOOL__, [
        [IID.__STONE__, 150],
        [IID.__SHAPED_METAL__, 6]
    ], 1, [
        [AREAS.__WORKBENCH2__, 60000]
    ], 6),
    idWeapon: 2,     
    stack: 1,
    loot: LOOTID.__STEEL_PICKAXE__,
    wait: 10
}, {
    id: IID.__STONE_AXE__,
    itemButton: {
        src: ["img/inv-stone-axe-out.png", "img/inv-stone-axe-in.png", "img/inv-stone-axe-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Metal Axe", "Harvest a lot of Wood", SKILLS.__TOOL__, [
        [IID.__WOOD__, 150],
        [IID.__SHAPED_METAL__, 7]
    ], 1, [
        [AREAS.__WORKBENCH2__, 80000]
    ], 5),
    idWeapon: 4,     
    stack: 1,
    loot: LOOTID.__STONE_AXE__,
    wait: 10
}, {
    id: IID.__WORKBENCH__,
    itemButton: {
        src: ["img/inv-workbench-out.png", "img/inv-workbench-in.png", "img/inv-workbench-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Workbench", "Allow you to make new INVENTORY.", SKILLS.__SURVIVAL__, [
        [IID.__WOOD__, 40],
        [IID.__STONE__, 20]
    ], 1, [
        [AREAS.__PLAYER__, 15000],
        [AREAS.__WORKBENCH__, 15000]
    ]),
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 1,
    area: AREAS.__WORKBENCH__,
    stack: 255,
    loot: LOOTID.__WORKBENCH__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-workbench.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-workbench.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.workbench,
    packetId: 16,
    interact: {
        src: "img/e-workbench.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__WOOD_IMPACT__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    building: {
        src: "img/day-workbench.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__WOOD__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__WOOD_SPEAR__,
    itemButton: {
        src: ["img/inv-wood-spear-out.png", "img/inv-wood-spear-in.png", "img/inv-wood-spear-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Wood Spear", "Don't forget to pick it up.", SKILLS.__WEAPON__, [
        [IID.__WOOD__, 70]
    ], 1, [
        [AREAS.__PLAYER__, 15000],
        [AREAS.__WORKBENCH__, 20000]
    ]),
    idWeapon: 5,     
    stack: 1,
    loot: LOOTID.__WOOD_SPEAR__,
    wait: 10
}, {
    id: IID.__WOOD_BOW__,
    itemButton: {
        src: ["img/inv-wood-bow-out.png", "img/inv-wood-bow-in.png", "img/inv-wood-bow-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Wood Bow", "Where are the cowboys?", SKILLS.__WEAPON__, [
        [IID.__WOOD__, 60],
        [IID.__ANIMAL_TENDON__, 2]
    ], 1, [
        [AREAS.__PLAYER__, 35000],
        [AREAS.__WORKBENCH__, 50000]
    ]),
    bullet: IID.__WOOD_ARROW__,
    mMVwm: 1,
    idWeapon: 6,     
    stack: 1,
    loot: LOOTID.__WOOD_BOW__,
    wait: 10
}, {
    id: IID.__9MM__,
    itemButton: {
        src: ["img/inv-9mm-out.png", "img/inv-9mm-in.png", "img/inv-9mm-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("9MM", "I hope you know how to aim.", SKILLS.__WEAPON__, [
        [IID.__JUNK__, 6],
        [IID.__SHAPED_METAL__, 9]
    ], 1, [
        [AREAS.__WORKBENCH2__, 160000]
    ], 7),
    idWeapon: 8,     
    bullet: IID.__BULLET_9MM__,
    stack: 1,
    loot: LOOTID.__9MM__,
    wait: 10
}, {
    id: IID.__DESERT_EAGLE__,
    itemButton: {
        src: ["img/inv-desert-eagle-out.png", "img/inv-desert-eagle-in.png", "img/inv-desert-eagle-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Desert Eagle", "Pretty useful for self-defense.", SKILLS.__WEAPON__, [
        [IID.__ALLOYS__, 4],
        [IID.__SHAPED_METAL__, 2]
    ], 1, [
        [AREAS.__WORKBENCH2__, 180000]
    ], 9, IID.__9MM__),
    idWeapon: 9,     
    bullet: IID.__BULLET_9MM__,
    stack: 1,
    loot: LOOTID.__DESERT_EAGLE__,
    wait: 10
}, {
    id: IID.__SHOTGUN__,
    itemButton: {
        src: ["img/inv-shotgun-out.png", "img/inv-shotgun-in.png", "img/inv-shotgun-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Shotgun", "He's dead now, don't you think?", SKILLS.__WEAPON__, [
        [IID.__ALLOYS__, 6],
        [IID.__SHAPED_METAL__, 6]
    ], 1, [
        [AREAS.__WORKBENCH2__, 200000]
    ], 11),
    idWeapon: 7,     
    bullet: IID.__BULLET_SHOTGUN__,
    stack: 1,
    loot: LOOTID.__SHOTGUN__,
    wait: 10
}, {
    id: IID.__AK47__,
    itemButton: {
        src: ["img/inv-ak47-out.png", "img/inv-ak47-in.png", "img/inv-ak47-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("AK47", "Revolution time", SKILLS.__WEAPON__, [
        [IID.__ALLOYS__, 14],
        [IID.__SHAPED_METAL__, 8]
    ], 1, [
        [AREAS.__WORKBENCH2__, 180000]
    ], 12, IID.__MP5__),
    idWeapon: 10,     
    bullet: IID.__BULLET_SNIPER__,
    stack: 1,
    loot: LOOTID.__AK47__,
    wait: 10
}, {
    id: IID.__SNIPER__,
    itemButton: {
        src: ["img/inv-sniper-out.png", "img/inv-sniper-in.png", "img/inv-sniper-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Sniper", "For the very angry shy", SKILLS.__WEAPON__, [
        [IID.__ALLOYS__, 10],
        [IID.__SHAPED_METAL__, 8]
    ], 1, [
        [AREAS.__WORKBENCH2__, 180000]
    ], 13),
    idWeapon: 11,     
    bullet: IID.__BULLET_SNIPER__,
    stack: 1,
    loot: LOOTID.__SNIPER__,
    wait: 10
}, {
    id: IID.__WOOD_WALL__,
    itemButton: {
        src: ["img/inv-wood-wall-out.png", "img/inv-wood-wall-in.png", "img/inv-wood-wall-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Wooden Wall", "Protected from the wind.", SKILLS.__BUILDING__, [
        [IID.__WOOD__, 20] 
    ], 1, [
        [AREAS.__WORKBENCH__, 10000]
    ]),
    idWeapon: 21,     
    fuel: -1,
    zid: 1,
    z: 1,
    stack: 255,
    loot: LOOTID.__WOOD_WALL__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-wood-wall.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-wood-wall.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 1,
    idWall: IID.__WOOD_WALL__,
    lowWall: 0,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.wall,
    drawFloor: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    broken: [{
        src: "img/day-wood-wall-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__WOOD_IMPACT__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    building: [{
        src: "img/day-wood-wall0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall39.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall40.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall41.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall42.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall43.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall44.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall45.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-wall46.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__WOOD__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 3000,
    score: 0
}, {
    id: IID.__STONE_WALL__,
    itemButton: {
        src: ["img/inv-stone-wall-out.png", "img/inv-stone-wall-in.png", "img/inv-stone-wall-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Stone Wall", "Saved the 3 little pigs.", SKILLS.__BUILDING__, [
        [IID.__STONE__, 20]
    ], 1, [
        [AREAS.__WORKBENCH__, 15000]
    ], 3),
    idWeapon: 21,     
    fuel: -1,
    zid: 1,
    z: 1,
    stack: 255,
    loot: LOOTID.__STONE_WALL__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-stone-wall.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-stone-wall.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 1,
    idWall: IID.__STONE_WALL__,
    lowWall: 0,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.wall,
    drawFloor: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    broken: [{
        src: "img/day-stone-wall-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__STONE_IMPACT__,
    destroy: SOUNDID.__STONE_DESTROY__,
    building: [{
        src: "img/day-stone-wall0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall39.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall40.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall41.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall42.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall43.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall44.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall45.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-wall46.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__STONE__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 7000,
    score: 0
}, {
    id: IID.__STEEL_WALL__,
    itemButton: {
        src: ["img/inv-steel-wall-out.png", "img/inv-steel-wall-in.png", "img/inv-steel-wall-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Metal Wall", "Afraid we'll find you?", SKILLS.__BUILDING__, [
        [IID.__SHAPED_METAL__, 3]
    ], 1, [
        [AREAS.__WORKBENCH2__, 20000]
    ], 6, IID.__STONE_WALL__),
    idWeapon: 21,     
    fuel: -1,
    zid: 1,
    z: 1,
    stack: 255,
    loot: LOOTID.__STEEL_WALL__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-stone-wall.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-stone-wall.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 1,
    idWall: IID.__STEEL_WALL__,
    lowWall: 0,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.wall,
    drawFloor: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    broken: [{
        src: "img/day-steel-wall-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/day-steel-wall0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall39.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall40.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall41.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall42.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall43.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall44.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall45.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-wall46.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__STEEL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 15000,
    score: 0
}, {
    id: IID.__WOOD_DOOR__,
    itemButton: {
        src: ["img/inv-wood-door-out.png", "img/inv-wood-door-in.png", "img/inv-wood-door-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Wooden Low Door", "You can shoot through it.", SKILLS.__BUILDING__, [
        [IID.__WOOD__, 40]
    ], 1, [
        [AREAS.__WORKBENCH__, 15000]
    ]),
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 0,
    stack: 255,
    loot: LOOTID.__WOOD_DOOR__,
    wait: 10,
    delay: 600,
    width: [100, 35, 100, 35],
    height: [35, 100, 35, 100],
    xCenter: [0, -30, 0, 30],
    yCenter: [30, 0, -30, 0],
    _x: [0, 0, 0, 65],
    _y: [65, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-wood-door.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-wood-door.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 1,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    angle: window.Math.PI / 2,
    iMove: [1, 0, -1, 0],
    jMove: [0, -1, 0, 1],
    xMove: [0, 0, 65, 0],
    yMove: [0, 0, 0, 65],
    wMove: [35, 100, 35, 100],
    hMove: [100, 35, 100, 35],
    xRotate: 6,
    yRotate: 46,
    draw: Render.door,
    packetId: 15,
    interact: {
        src: "img/e-opendoor.png",
        img: {
            isLoaded: 0
        }
    },
    interactclose: {
        src: "img/e-closedoor.png",
        img: {
            isLoaded: 0
        }
    },
    broken: [{
        src: "img/day-wood-door-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-door-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-door-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__WOOD_IMPACT__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    building: {
        src: "img/day-wood-door.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__WOOD__,
    particlesDist: 55,
    timelife: 315360000000,
    life: 2000,
    score: 0
}, {
    id: IID.__STONE_DOOR__,
    itemButton: {
        src: ["img/inv-stone-door-out.png", "img/inv-stone-door-in.png", "img/inv-stone-door-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Stone Low Door", "You can shoot through it.", SKILLS.__BUILDING__, [
        [IID.__STONE__, 40]
    ], 1, [
        [AREAS.__WORKBENCH__, 15000]
    ], 3),
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 0,
    stack: 255,
    loot: LOOTID.__STONE_DOOR__,
    wait: 10,
    delay: 600,
    width: [100, 35, 100, 35],
    height: [35, 100, 35, 100],
    xCenter: [0, -30, 0, 30],
    yCenter: [30, 0, -30, 0],
    _x: [0, 0, 0, 65],
    _y: [65, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-stone-door.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-stone-door.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 1,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    angle: window.Math.PI / 2,
    iMove: [1, 0, -1, 0],
    jMove: [0, -1, 0, 1],
    xMove: [0, 0, 65, 0],
    yMove: [0, 0, 0, 65],
    wMove: [35, 100, 35, 100],
    hMove: [100, 35, 100, 35],
    xRotate: 6,
    yRotate: 46,
    draw: Render.door,
    packetId: 15,
    interact: {
        src: "img/e-opendoor.png",
        img: {
            isLoaded: 0
        }
    },
    interactclose: {
        src: "img/e-closedoor.png",
        img: {
            isLoaded: 0
        }
    },
    broken: [{
        src: "img/day-stone-door-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-door-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-door-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__STONE_IMPACT__,
    destroy: SOUNDID.__STONE_DESTROY__,
    building: {
        src: "img/day-stone-door.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__STONE__,
    particlesDist: 55,
    timelife: 315360000000,
    life: 5000,
    score: 0
}, {
    id: IID.__STEEL_DOOR__,
    itemButton: {
        src: ["img/inv-steel-door-out.png", "img/inv-steel-door-in.png", "img/inv-steel-door-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Metal Low Door", "Killing at home, for more comfort.", SKILLS.__BUILDING__, [
        [IID.__SHAPED_METAL__, 6]
    ], 1, [
        [AREAS.__WORKBENCH2__, 30000]
    ], 6, IID.__STONE_DOOR__),
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 0,
    stack: 255,
    loot: LOOTID.__STEEL_DOOR__,
    wait: 10,
    delay: 600,
    width: [100, 35, 100, 35],
    height: [35, 100, 35, 100],
    xCenter: [0, -30, 0, 30],
    yCenter: [30, 0, -30, 0],
    _x: [0, 0, 0, 65],
    _y: [65, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-stone-door.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-stone-door.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 1,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    angle: window.Math.PI / 2,
    iMove: [1, 0, -1, 0],
    jMove: [0, -1, 0, 1],
    xMove: [0, 0, 65, 0],
    yMove: [0, 0, 0, 65],
    wMove: [35, 100, 35, 100],
    hMove: [100, 35, 100, 35],
    xRotate: 6,
    yRotate: 46,
    draw: Render.door,
    packetId: 15,
    interact: {
        src: "img/e-opendoor.png",
        img: {
            isLoaded: 0
        }
    },
    interactclose: {
        src: "img/e-closedoor.png",
        img: {
            isLoaded: 0
        }
    },
    broken: [{
        src: "img/day-steel-door-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-door-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-door-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: {
        src: "img/day-steel-door.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__STEEL__,
    particlesDist: 55,
    timelife: 315360000000,
    life: 10000,
    score: 0
}, {
    id: IID.__CAMPFIRE__,
    itemButton: {
        src: ["img/inv-campfire-out.png", "img/inv-campfire-in.png", "img/inv-campfire-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Campfire", "Warm you when you're cold.", SKILLS.__SURVIVAL__, [
        [IID.__WOOD__, 30],
        [IID.__STONE__, 5]
    ], 1, [
        [AREAS.__PLAYER__, 8000],
        [AREAS.__WORKBENCH__, 15000]
    ]),
    idWeapon: 21,     
    fuel: 15000,
    zid: -1,
    z: 0,
    area: AREAS.__FIRE__,
    stack: 255,
    loot: LOOTID.__CAMPFIRE__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-campfire.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-campfire.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: __WARM__,
    draw: Render.campfire,
    drawTop: Render.campfireLight,
    packetId: 16,
    interact: {
        src: "img/e-campfire.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__WOOD_IMPACT__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    building: {
        src: "img/day-campfire.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__WOOD__,
    particlesDist: 80,
    timelife: (1000 * 60) * 10,
    life: 150,
    score: 0
}, {
    id: IID.__BULLET_9MM__,
    itemButton: {
        src: ["img/inv-bullet-9mm-out.png", "img/inv-bullet-9mm-in.png", "img/inv-bullet-9mm-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Bullet", "For 9MM, Desert Eagle, and MP5 ", SKILLS.__WEAPON__, [
        [IID.__SULFUR__, 3],
        [IID.__SHAPED_METAL__, 3],
        [IID.__ANIMAL_FAT__, 3]
    ], 30, [
        [AREAS.__WORKBENCH2__, 10000]
    ], 6),
    stack: 255,
    loot: LOOTID.__BULLET_9MM__
}, {
    id: IID.__BULLET_SHOTGUN__,
    itemButton: {
        src: ["img/inv-bullet-shotgun-out.png", "img/inv-bullet-shotgun-in.png", "img/inv-bullet-shotgun-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Cartridge", "For Shotgun", SKILLS.__WEAPON__, [
        [IID.__ALLOYS__, 1],
        [IID.__SHAPED_METAL__, 4],
        [IID.__ANIMAL_FAT__, 4]
    ], 15, [
        [AREAS.__WORKBENCH2__, 10000]
    ], 10),
    stack: 255,
    loot: LOOTID.__BULLET_SHOTGUN__
}, {
    id: IID.__BULLET_SNIPER__,
    itemButton: {
        src: ["img/inv-bullet-sniper-out.png", "img/inv-bullet-sniper-in.png", "img/inv-bullet-sniper-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Heavy Bullet", "For Sniper, and AK47", SKILLS.__WEAPON__, [
        [IID.__ALLOYS__, 1],
        [IID.__SHAPED_METAL__, 4],
        [IID.__ANIMAL_FAT__, 4]
    ], 30, [
        [AREAS.__WORKBENCH2__, 10000]
    ], 11),
    stack: 255,
    loot: LOOTID.__BULLET_SNIPER__
}, {
    id: IID.__MEDIKIT__,
    itemButton: {
        src: ["img/inv-medikit-out.png", "img/inv-medikit-in.png", "img/inv-medikit-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Medkit", "Regenerate your life.", SKILLS.__DRUG__, [
        [IID.__STRING__, 2],
        [IID.__BANDAGE__, 1],
        [IID.__LEATHER_BOAR__, 2],
        [IID.__SHAPED_METAL__, 2]
    ], 1, [
        [AREAS.__WORKBENCH2__, 80000]
    ], 10),
    idWeapon: 17,     
    stack: 2,
    loot: LOOTID.__MEDIKIT__,
    wait: 10
}, {
    id: IID.__BANDAGE__,
    itemButton: {
        src: ["img/inv-bandage-out.png", "img/inv-bandage-in.png", "img/inv-bandage-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Bandage", "To heal the boo-boos.", SKILLS.__DRUG__, [
        [IID.__STRING__, 1],
        [IID.__LEATHER_BOAR__, 2]
    ], 1, [
        [AREAS.__WEAVING__, 20000]
    ]),
    idWeapon: 18,     
    stack: 5,
    loot: LOOTID.__BANDAGE__,
    wait: 10
}, {
    id: IID.__SODA__,
    itemButton: {
        src: ["img/inv-soda-out.png", "img/inv-soda-in.png", "img/inv-soda-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Soda", "Give energy.", SKILLS.__SURVIVAL__, [
        [IID.__GHOUL_BLOOD__, 1],
        [IID.__CHEMICAL_COMPONENT__, 1],
        [IID.__CAN__, 1]
    ], 1, [
        [AREAS.__FIRE__, 40000],
        [AREAS.__BBQ__, 40000]
    ], 5),
    idWeapon: 19,     
    stack: 5,
    loot: LOOTID.__SODA__,
    perish: 2,
    perishId: IID.__CAN__,
    wait: 10
}, {
    id: IID.__MP5__,
    itemButton: {
        src: ["img/inv-MP5-out.png", "img/inv-MP5-in.png", "img/inv-MP5-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("MP5", "Not bad.", SKILLS.__WEAPON__, [
        [IID.__ALLOYS__, 6],
        [IID.__SHAPED_METAL__, 6]
    ], 1, [
        [AREAS.__WORKBENCH2__, 200000]
    ], 10),
    idWeapon: 20,     
    bullet: IID.__BULLET_9MM__,
    stack: 1,
    loot: LOOTID.__MP5__,
    wait: 10
}, {
    id: IID.__HEADSCARF__,
    itemButton: {
        src: ["img/inv-headscarf-out.png", "img/inv-headscarf-in.png", "img/inv-headscarf-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Headscarf", "Warm you up.", SKILLS.__CLOTHE__, [
        [IID.__STRING__, 1],
        [IID.__LEATHER_BOAR__, 1]
    ], 1, [
        [AREAS.__WEAVING__, 60000]
    ]),
    idClothe: 1,
    stack: 1,
    loot: LOOTID.__HEADSCARF__,
    wait: 10,
    warm: 0.00085,
    def: 0,
    bul: 0,
    ene: 0,
    boom: 0,
    rad: 0,
    speed: 0
}, {
    id: IID.__CHAPKA__,
    itemButton: {
        src: ["img/inv-chapka-out.png", "img/inv-chapka-in.png", "img/inv-chapka-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Chapka", "You look like a real woodcutter.", SKILLS.__CLOTHE__, [
        [IID.__STRING__, 6],
        [IID.__LEATHER_BOAR__, 8],
        [IID.__HEADSCARF__, 1]
    ], 1, [
        [AREAS.__WEAVING__, 120000]
    ], 7),
    idClothe: 2,
    stack: 1,
    loot: LOOTID.__CHAPKA__,
    wait: 10,
    warm: 0.0017,
    def: 0,
    bul: 0,
    ene: 0,
    boom: 0,
    rad: 0,
    speed: 0
}, {
    id: IID.__WINTER_COAT__,
    itemButton: {
        src: ["img/inv-coat-out.png", "img/inv-coat-in.png", "img/inv-coat-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Winter Coat", "Is the weather really that cold?", SKILLS.__CLOTHE__, [
        [IID.__STRING__, 15],
        [IID.__LEATHER_BOAR__, 20],
        [IID.__CHAPKA__, 1]
    ], 1, [
        [AREAS.__WEAVING__, 180000]
    ], 9, IID.__CHAPKA__),
    idClothe: 3,
    stack: 1,
    loot: LOOTID.__WINTER_COAT__,
    wait: 10,
    warm: 0.0026,
    def: 0,
    bul: 0,
    ene: 0,
    boom: 0,
    rad: 0,
    speed: 0
}, {
    id: IID.__GAZ_MASK__,
    itemButton: {
        src: ["img/inv-gaz-mask-out.png", "img/inv-gaz-mask-in.png", "img/inv-gaz-mask-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Radiation Mask", "Protect you from Radioactivity.", SKILLS.__CLOTHE__, [
        [IID.__SHAPED_METAL__, 1],
        [IID.__STRING__, 1],
        [IID.__LEATHER_BOAR__, 2]
    ], 1, [
        [AREAS.__WEAVING__, 60000]
    ]),
    idClothe: 4,
    stack: 1,
    loot: LOOTID.__GAZ_MASK__,
    wait: 10,
    warm: 0,
    def: 0,
    bul: 0,
    ene: 0,
    boom: 0,
    rad: 0.009,
    speed: 0
}, {
    id: IID.__GAZ_PROTECTION__,
    itemButton: {
        src: ["img/inv-gaz-protection-out.png", "img/inv-gaz-protection-in.png", "img/inv-gaz-protection-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Min. Radiation Suit", "Previously, on Breaking Bad.", SKILLS.__CLOTHE__, [
        [IID.__ALLOYS__, 2],
        [IID.__SHAPED_METAL__, 2],
        [IID.__STRING__, 4],
        [IID.__LEATHER_BOAR__, 4],
        [IID.__GAZ_MASK__, 1]
    ], 1, [
        [AREAS.__WEAVING__, 90000]
    ], 8),
    idClothe: 5,
    stack: 1,
    loot: LOOTID.__GAZ_PROTECTION__,
    wait: 10,
    warm: 0.0006,
    def: 0,
    bul: 0,
    ene: 0,
    boom: 0,
    rad: 0.016,
    speed: 0
}, {
    id: IID.__RADIATION_SUIT__,
    itemButton: {
        src: ["img/inv-radiation-suit-out.png", "img/inv-radiation-suit-in.png", "img/inv-radiation-suit-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Radiation Suit", "Let's not grow a second head.", SKILLS.__CLOTHE__, [
        [IID.__ALLOYS__, 6],
        [IID.__SHAPED_METAL__, 4],
        [IID.__STRING__, 8],
        [IID.__LEATHER_BOAR__, 20],
        [IID.__GAZ_PROTECTION__, 1]
    ], 1, [
        [AREAS.__WEAVING__, 180000]
    ], 10, IID.__GAZ_PROTECTION__),
    idClothe: 6,
    stack: 1,
    loot: LOOTID.__RADIATION_SUIT__,
    wait: 10,
    warm: 0,
    def: 0,
    bul: 0,
    ene: 0,
    boom: 0,
    rad: 0.022,
    speed: -0.01
}, {
    id: IID.__WOOD_ARROW__,
    itemButton: {
        src: ["img/inv-wood-arrow-out.png", "img/inv-wood-arrow-in.png", "img/inv-wood-arrow-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Wood Arrow", "Needed to use bow.", SKILLS.__WEAPON__, [
        [IID.__WOOD__, 40]
    ], 5, [
        [AREAS.__PLAYER__, 15000],
        [AREAS.__WORKBENCH__, 10000]
    ]),
    stack: 255,
    loot: LOOTID.__WOOD_ARROW__
}, {
    id: IID.__CAMPFIRE_BBQ__,
    itemButton: {
        src: ["img/inv-campfire-bbq-out.png", "img/inv-campfire-bbq-in.png", "img/inv-campfire-bbq-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Firepit", "Warm up and melt iron slowly.", SKILLS.__SURVIVAL__, [
        [IID.__WOOD__, 120],
        [IID.__STONE__, 20],
        [IID.__STEEL__, 4]
    ], 1, [
        [AREAS.__WORKBENCH__, 20000]
    ], 3),
    idWeapon: 21,     
    fuel: 20000,
    zid: -1,
    z: 0,
    area: AREAS.__BBQ__,
    stack: 255,
    loot: LOOTID.__CAMPFIRE_BBQ__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-campfire-bbq.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-campfire-bbq.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: __WARM__,
    draw: Render.campfire,
    drawTop: Render.campfireLight,
    packetId: 16,
    interact: {
        src: "img/e-campfire-bbq.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__WOOD_IMPACT__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    building: {
        src: "img/day-campfire-bbq.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__WOOD__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__SMELTER__,
    itemButton: {
        src: ["img/inv-smelter-out.png", "img/inv-smelter-in.png", "img/inv-smelter-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Smelter", "Melt iron, uranium and alloys", SKILLS.__SURVIVAL__, [
        [IID.__SHAPED_METAL__, 6],
        [IID.__ELECTRONICS__, 1]
    ], 1, [
        [AREAS.__WORKBENCH2__, 100000]
    ], 10),
    idWeapon: 21,     
    fuel: 42000,
    zid: 1,
    z: 1,
    area: AREAS.__SMELTER__,
    stack: 255,
    loot: LOOTID.__SMELTER__,
    wait: 10,
    delay: 1000,
    width: [100, 260, 100, 260],
    height: [260, 100, 260, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, -80, 0, -80],
    _y: [-80, 0, -80, 0],
    iTile: [-1, 0, -1, 0],
    jTile: [0, -1, 0, -1],
    blueprint: {
        src: "img/day-clear-blue-smelter.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-smelter.png",
        img: {
            isLoaded: 0
        }
    },
    xLight: [-20.5, -101.5, 20.5, 101.5],
    yLight: [101.5, -20.5, -101, 20.5],
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.smelter,
    packetId: 16,
    interact: {
        src: "img/e-smelter.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/day-smelter-off.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-smelter-on.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-smelter-light-up.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-smelter-light-down.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 3000,
    score: 0
}, {
    id: IID.__WOOD_BIGDOOR__,
    itemButton: {
        src: ["img/inv-wood-door1-out.png", "img/inv-wood-door1-in.png", "img/inv-wood-door1-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Wooden Door", "Let's hope it holds.", SKILLS.__BUILDING__, [
        [IID.__WOOD__, 60]
    ], 1, [
        [AREAS.__WORKBENCH__, 20000]
    ]),
    idWeapon: 21,     
    fuel: -1,
    zid: 1,
    z: 1,
    stack: 255,
    loot: LOOTID.__WOOD_BIGDOOR__,
    wait: 10,
    delay: 600,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-wood-door1.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-wood-door1.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 1,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    angle: window.Math.PI,
    iMove: [1, -1, -1, 1],
    jMove: [-1, -1, 1, 1],
    xMove: [0, 0, 0, 0],
    yMove: [0, 0, 0, 0],
    wMove: [100, 100, 100, 100],
    hMove: [100, 100, 100, 100],
    xRotate: 17,
    yRotate: 113,
    draw: Render.door,
    packetId: 15,
    interact: {
        src: "img/e-opendoor.png",
        img: {
            isLoaded: 0
        }
    },
    interactclose: {
        src: "img/e-closedoor.png",
        img: {
            isLoaded: 0
        }
    },
    broken: [{
        src: "img/day-wood-door1-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-door1-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-door1-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__WOOD_IMPACT__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    building: {
        src: "img/day-wood-door1.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__WOOD__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 2500,
    score: 0
}, {
    id: IID.__STONE_BIGDOOR__,
    itemButton: {
        src: ["img/inv-stone-door1-out.png", "img/inv-stone-door1-in.png", "img/inv-stone-door1-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Stone Door", "Not too heavy to open, I hope.", SKILLS.__BUILDING__, [
        [IID.__STONE__, 60]
    ], 1, [
        [AREAS.__WORKBENCH__, 20000]
    ], 3),
    idWeapon: 21,     
    fuel: -1,
    zid: 1,
    z: 1,
    stack: 255,
    loot: LOOTID.__STONE_BIGDOOR__,
    wait: 10,
    delay: 600,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-stone-door1.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-stone-door1.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 1,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    angle: window.Math.PI,
    iMove: [1, -1, -1, 1],
    jMove: [-1, -1, 1, 1],
    xMove: [0, 0, 0, 0],
    yMove: [0, 0, 0, 0],
    wMove: [100, 100, 100, 100],
    hMove: [100, 100, 100, 100],
    xRotate: 17,
    yRotate: 113,
    draw: Render.door,
    packetId: 15,
    interact: {
        src: "img/e-opendoor.png",
        img: {
            isLoaded: 0
        }
    },
    interactclose: {
        src: "img/e-closedoor.png",
        img: {
            isLoaded: 0
        }
    },
    broken: [{
        src: "img/day-stone-door1-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-door1-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-door1-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__STONE_IMPACT__,
    destroy: SOUNDID.__STONE_DESTROY__,
    building: {
        src: "img/day-stone-door1.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__STONE__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 6000,
    score: 0
}, {
    id: IID.__STEEL_BIGDOOR__,
    itemButton: {
        src: ["img/inv-steel-door1-out.png", "img/inv-steel-door1-in.png", "img/inv-steel-door1-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Metal Door", "I guess you're safe.", SKILLS.__BUILDING__, [
        [IID.__SHAPED_METAL__, 9]
    ], 1, [
        [AREAS.__WORKBENCH2__, 40000]
    ], 6, IID.__STONE_BIGDOOR__),
    idWeapon: 21,     
    fuel: -1,
    zid: 1,
    z: 1,
    stack: 255,
    loot: LOOTID.__STEEL_BIGDOOR__,
    wait: 10,
    delay: 600,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-stone-door1.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-stone-door1.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 1,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    angle: window.Math.PI,
    iMove: [1, -1, -1, 1],
    jMove: [-1, -1, 1, 1],
    xMove: [0, 0, 0, 0],
    yMove: [0, 0, 0, 0],
    wMove: [100, 100, 100, 100],
    hMove: [100, 100, 100, 100],
    xRotate: 17,
    yRotate: 113,
    draw: Render.door,
    packetId: 15,
    interact: {
        src: "img/e-opendoor.png",
        img: {
            isLoaded: 0
        }
    },
    interactclose: {
        src: "img/e-closedoor.png",
        img: {
            isLoaded: 0
        }
    },
    broken: [{
        src: "img/day-steel-door1-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-door1-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-door1-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: {
        src: "img/day-steel-door1.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__STEEL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 12500,
    score: 0
}, {
    id: IID.__SULFUR__,
    itemButton: {
        src: ["img/inv-sulfur-out.png", "img/inv-sulfur-in.png", "img/inv-sulfur-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Sulfur", "Sulfur in such a cold landscape?", SKILLS.__MINERAL__, [], 0, [
        [AREAS.__EXTRACTOR__, 240000]
    ]),
    craftStart: 4,
    craftRng: 8,
    stack: 255,
    loot: LOOTID.__SULFUR__,
    score: 32
}, {
    id: IID.__SHAPED_URANIUM__,
    itemButton: {
        src: ["img/inv-shaped-uranium-out.png", "img/inv-shaped-uranium-in.png", "img/inv-shaped-uranium-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Shaped Uranium", "Are you out of your mind?", SKILLS.__MINERAL__, [
        [IID.__URANIUM__, 1]
    ], 1, [
        [AREAS.__SMELTER__, 20000]
    ]),
    stack: 255,
    loot: LOOTID.__SHAPED_URANIUM__,
    score: 0
}, {
    id: IID.__WORKBENCH2__,
    itemButton: {
        src: ["img/inv-workbench2-out.png", "img/inv-workbench2-in.png", "img/inv-workbench2-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Research Bench", "Allow you to make new INVENTORY", SKILLS.__SURVIVAL__, [
        [IID.__SHAPED_METAL__, 6],
        [IID.__ELECTRONICS__, 1]
    ], 1, [
        [AREAS.__WORKBENCH__, 50000]
    ], 6),
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 1,
    area: AREAS.__WORKBENCH2__,
    stack: 255,
    loot: LOOTID.__WORKBENCH2__,
    wait: 10,
    delay: 1000,
    width: [100, 290, 100, 280],
    height: [280, 100, 280, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, -90, 0, -90],
    _y: [-90, 0, -90, 0],
    iTile: [-1, 0, -1, 0],
    jTile: [0, -1, 0, -1],
    blueprint: {
        src: "img/day-clear-blue-workbench2.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-workbench2.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.workbench2,
    packetId: 16,
    interact: {
        src: "img/e-workbench2.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: {
        src: "img/day-workbench2.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 400,
    score: 0
}, {
    id: IID.__URANIUM__,
    itemButton: {
        src: ["img/inv-uranium-out.png", "img/inv-uranium-in.png", "img/inv-uranium-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Uranium", "Do you want to end up as Marie Curie?", SKILLS.__MINERAL__, [], 0, [
        [AREAS.__EXTRACTOR__, 240000]
    ]),
    craftStart: 2,
    craftRng: 4,
    stack: 255,
    loot: LOOTID.__URANIUM__,
    score: 45
}, {
    id: IID.__WEAVING__,
    itemButton: {
        src: ["img/inv-weaving-machine-out.png", "img/inv-weaving-machine-in.png", "img/inv-weaving-machine-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Weaving Machine", "Allow you to sew clothes", SKILLS.__SURVIVAL__, [
        [IID.__WOOD__, 80],
        [IID.__STONE__, 20],
        [IID.__STRING__, 2]
    ], 1, [
        [AREAS.__WORKBENCH__, 60000]
    ]),
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 1,
    area: AREAS.__WEAVING__,
    stack: 255,
    loot: LOOTID.__WEAVING__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-weaving-machine.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-weaving-machine.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.workbench,
    packetId: 16,
    interact: {
        src: "img/e-weaving-machine.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__WOOD_IMPACT__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    building: {
        src: "img/day-weaving-machine.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__WOOD__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__GASOLINE__,
    itemButton: {
        src: ["img/inv-gasoline-out.png", "img/inv-gasoline-in.png", "img/inv-gasoline-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Gasoline", "Fuel for Smelter", SKILLS.__SURVIVAL__, [
        [IID.__ROTTEN_ORANGE__, 4],
        [IID.__SULFUR__, 1]
    ], 1, [
        [AREAS.__WORKBENCH2__, 20000]
    ]),
    stack: 255,
    loot: LOOTID.__GASOLINE__
}, {
    id: IID.__SULFUR_PICKAXE__,
    itemButton: {
        src: ["img/inv-sulfur-pickaxe-out.png", "img/inv-sulfur-pickaxe-in.png", "img/inv-sulfur-pickaxe-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Sulfur Pickaxe", "Mine also Uranium", SKILLS.__TOOL__, [
        [IID.__ALLOYS__, 2],
        [IID.__SHAPED_METAL__, 6],
        [IID.__SULFUR__, 6]
    ], 1, [
        [AREAS.__WORKBENCH2__, 90000]
    ], 9, IID.__STEEL_PICKAXE__),
    idWeapon: 22,     
    stack: 1,
    loot: LOOTID.__SULFUR_PICKAXE__,
    wait: 10
}, {
    id: IID.__CHEST__,
    itemButton: {
        src: ["img/inv-chest-out.png", "img/inv-chest-in.png", "img/inv-chest-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Wood chest", "You can't store food in.", SKILLS.__BUILDING__, [
        [IID.__WOOD__, 50],
        [IID.__STONE__, 20]
    ], 1, [
        [AREAS.__WORKBENCH__, 30000]
    ], 8),
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 0,
    stack: 255,
    loot: LOOTID.__CHEST__,
    wait: 10,
    chest: 1,
    delay: 600,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-chest.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-chest.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    angle: window.Math.PI / 2,
    draw: Render.workbench,
    packetId: 25,
    interact: {
        src: "img/e-chest.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__WOOD_IMPACT__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    building: {
        src: "img/day-chest.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__WOOD__,
    particlesDist: 55,
    timelife: 315360000000,
    life: 300,
    score: 0
}, {
    id: IID.__FRIDGE__,
    itemButton: {
        src: ["img/inv-fridge-out.png", "img/inv-fridge-in.png", "img/inv-fridge-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Fridge", "Save your food.", SKILLS.__BUILDING__, [
        [IID.__SHAPED_METAL__, 5],
        [IID.__ENERGY_CELLS__, 4]
    ], 1, [
        [AREAS.__WORKBENCH2__, 90000]
    ], 9),
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 0,
    stack: 255,
    loot: LOOTID.__FRIDGE__,
    wait: 10,
    chest: 1,
    fridge: 1,
    delay: 600,
    width: [50, 100, 50, 100],
    height: [100, 50, 100, 50],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 50, 0],
    _y: [0, 0, 0, 50],
    blueprint: {
        src: "img/day-clear-blue-fridge.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-fridge.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    angle: window.Math.PI / 2,
    draw: Render.workbench,
    packetId: 25,
    interact: {
        src: "img/e-fridge.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: {
        src: "img/day-fridge.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__METAL__,
    particlesDist: 55,
    timelife: 315360000000,
    life: 300,
    score: 0
}, {
    id: IID.__WOOD_FLOOR__,
    itemButton: {
        src: ["img/inv-wood-floor-out.png", "img/inv-wood-floor-in.png", "img/inv-wood-floor-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Wood floor", "Players can't spawn on it", SKILLS.__BUILDING__, [
        [IID.__WOOD__, 15]
    ], 2, [
        [AREAS.__WORKBENCH__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__WOOD_FLOOR__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: 2,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-wood-floor.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-wood-floor.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 1,
    idWall: IID.__WOOD_FLOOR__,
    lowWall: 0,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.groundFloor,
    broken: [{
        src: "img/day-wood-floor-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    building: [{
        src: "img/day-wood-floor-0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-39.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-40.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-41.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-42.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-43.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-44.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-45.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-46.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__WOOD__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 4000,
    score: 0
}, {
    id: IID.__HAMMER__,
    itemButton: {
        src: ["img/inv-hammer-out.png", "img/inv-hammer-in.png", "img/inv-hammer-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Hammer", "Destroy walls quickly.", SKILLS.__TOOL__, [
        [IID.__WOOD__, 100],
        [IID.__SHAPED_METAL__, 10]
    ], 1, [
        [AREAS.__WORKBENCH2__, 30000]
    ], 7),
    idWeapon: 23,     
    stack: 1,
    loot: LOOTID.__HAMMER__,
    wait: 10
}, {
    id: IID.__SLEEPING_BAG__,
    itemButton: {
        src: ["img/inv-sleeping-bag-out.png", "img/inv-sleeping-bag-in.png", "img/inv-sleeping-bag-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Sleeping Bag", "Once dead, you keep your base", SKILLS.__SURVIVAL__, [
        [IID.__LEATHER_BOAR__, 7],
        [IID.__ANIMAL_FAT__, 7],
        [IID.__STRING__, 7]
    ], 1, [
        [AREAS.__WEAVING__, 20000]
    ], 9),
    stack: 255,
    loot: LOOTID.__SLEEPING_BAG__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-sleeping-bag.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-sleeping-bag.png",
        img: {
            isLoaded: 0
        }
    },
    door: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.defaultBuilding,
    impact: SOUNDID.__PILLOW_IMPACT__,
    destroy: SOUNDID.__PILLOW_DESTROY__,
    building: {
        src: "img/day-sleeping-bag.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__FUR__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 500,
    score: 0
}, {
    id: IID.__REPAIR_HAMMER__,
    itemButton: {
        src: ["img/inv-repair-hammer-out.png", "img/inv-repair-hammer-in.png", "img/inv-repair-hammer-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Repair Hammer", "Repair walls but require nails.", SKILLS.__TOOL__, [
        [IID.__WOOD__, 120],
        [IID.__SHAPED_METAL__, 2]
    ], 1, [
        [AREAS.__WORKBENCH__, 30000]
    ], 5),
    idWeapon: 24,     
    stack: 1,
    loot: LOOTID.__REPAIR_HAMMER__,
    wait: 10
}, {
    id: IID.__NAILS__,
    itemButton: {
        src: ["img/inv-nails-out.png", "img/inv-nails-in.png", "img/inv-nails-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Nails", "Needed to repair walls.", SKILLS.__SURVIVAL__, [
        [IID.__SHAPED_METAL__, 2]
    ], 85, [
        [AREAS.__WORKBENCH__, 20000]
    ]),
    stack: 255,
    loot: LOOTID.__NAILS__
}, {
    id: IID.__WOODLIGHT_FLOOR__,
    itemButton: {
        src: ["img/inv-wood-floor-light-out.png", "img/inv-wood-floor-light-in.png", "img/inv-wood-floor-light-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Light Wood Floor", "Players can't spawn on it", SKILLS.__BUILDING__, [
        [IID.__WOOD__, 15]
    ], 2, [
        [AREAS.__WORKBENCH__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__WOODLIGHT_FLOOR__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: 2,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-woodlight-floor.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-woodlight-floor.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 1,
    idWall: IID.__WOODLIGHT_FLOOR__,
    lowWall: 0,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.groundFloor,
    broken: [{
        src: "img/day-wood-floor-light-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    building: [{
        src: "img/day-wood-floor-light-0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-39.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-40.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-41.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-42.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-43.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-44.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-45.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-floor-light-46.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__WOODLIGHT__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 4000,
    score: 0
}, {
    id: IID.__WOOD_SMALLWALL__,
    itemButton: {
        src: ["img/inv-wood-smallwall-out.png", "img/inv-wood-smallwall-in.png", "img/inv-wood-smallwall-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Wooden Low Wall", "You can shoot through it.", SKILLS.__BUILDING__, [
        [IID.__WOOD__, 10]
    ], 1, [
        [AREAS.__WORKBENCH__, 10000]
    ]),
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 0,
    stack: 255,
    loot: LOOTID.__WOOD_SMALLWALL__,
    wait: 10,
    delay: 1000,
    width: [100, 35, 100, 35],
    height: [35, 100, 35, 100],
    xCenter: [0, -30, 0, 30],
    yCenter: [30, 0, -30, 0],
    _x: [0, 0, 0, 65],
    _y: [65, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-wood-smallwall.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-wood-smallwall.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 1,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    angle: window.Math.PI / 2,
    iMove: [1, 0, -1, 0],
    jMove: [0, -1, 0, 1],
    xMove: [0, 0, 65, 0],
    yMove: [0, 0, 0, 65],
    wMove: [35, 100, 35, 100],
    hMove: [100, 35, 100, 35],
    xRotate: 6,
    yRotate: 46,
    areaEffect: 0,
    draw: Render.lowWall,
    broken: [{
        src: "img/day-wood-smallwalls-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__WOOD_IMPACT__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    building: [{
        src: "img/day-wood-smallwalls-0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-smallwalls-39.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__WOOD__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 3000,
    score: 0
}, {
    id: IID.__STONE_SMALLWALL__,
    itemButton: {
        src: ["img/inv-stone-smallwall-out.png", "img/inv-stone-smallwall-in.png", "img/inv-stone-smallwall-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Stone Low Wall", "You can shoot through it.", SKILLS.__BUILDING__, [
        [IID.__STONE__, 10]
    ], 1, [
        [AREAS.__WORKBENCH__, 15000]
    ], 3),
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 0,
    stack: 255,
    loot: LOOTID.__STONE_SMALLWALL__,
    wait: 10,
    delay: 1000,
    width: [100, 35, 100, 35],
    height: [35, 100, 35, 100],
    xCenter: [0, -30, 0, 30],
    yCenter: [30, 0, -30, 0],
    _x: [0, 0, 0, 65],
    _y: [65, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-stone-smallwalls.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-stone-smallwalls.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 1,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    angle: window.Math.PI / 2,
    iMove: [1, 0, -1, 0],
    jMove: [0, -1, 0, 1],
    xMove: [0, 0, 65, 0],
    yMove: [0, 0, 0, 65],
    wMove: [35, 100, 35, 100],
    hMove: [100, 35, 100, 35],
    xRotate: 6,
    yRotate: 46,
    areaEffect: 0,
    draw: Render.lowWall,
    broken: [{
        src: "img/day-stone-smallwalls-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__STONE_IMPACT__,
    destroy: SOUNDID.__STONE_DESTROY__,
    building: [{
        src: "img/day-stone-smallwalls-0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-smallwalls-39.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__STONE__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 7000,
    score: 0
}, {
    id: IID.__STEEL_SMALLWALL__,
    itemButton: {
        src: ["img/inv-steel-smallwall-out.png", "img/inv-steel-smallwall-in.png", "img/inv-steel-smallwall-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Metal Low Wall", "You can shoot through it.", SKILLS.__BUILDING__, [
        [IID.__SHAPED_METAL__, 2]
    ], 1, [
        [AREAS.__WORKBENCH2__, 20000]
    ], 6, IID.__STONE_SMALLWALL__),
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 0,
    stack: 255,
    loot: LOOTID.__STEEL_SMALLWALL__,
    wait: 10,
    delay: 1000,
    width: [100, 35, 100, 35],
    height: [35, 100, 35, 100],
    xCenter: [0, -30, 0, 30],
    yCenter: [30, 0, -30, 0],
    _x: [0, 0, 0, 65],
    _y: [65, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-stone-smallwalls.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-stone-smallwalls.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 1,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    angle: window.Math.PI / 2,
    iMove: [1, 0, -1, 0],
    jMove: [0, -1, 0, 1],
    xMove: [0, 0, 65, 0],
    yMove: [0, 0, 0, 65],
    wMove: [35, 100, 35, 100],
    hMove: [100, 35, 100, 35],
    xRotate: 6,
    yRotate: 46,
    areaEffect: 0,
    draw: Render.lowWall,
    broken: [{
        src: "img/day-steel-smallwalls-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/day-steel-smallwalls-0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-steel-smallwalls-39.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__STEEL__,
    particlesDist: 55,
    timelife: 315360000000,
    life: 15000,
    score: 0
}, {
    id: IID.__FURNITURE__,
    zid: 0,
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: [],
    detail: {
        category: window.undefined
    },
    particles: -1,
    draw: Render.furniture
}, {
    id: IID.__TOMATO_SOUP__,
    itemButton: {
        src: ["img/inv-tomato-soup-out.png", "img/inv-tomato-soup-in.png", "img/inv-tomato-soup-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Tomato Soup", "Has not yet been opened.", SKILLS.__SURVIVAL__, [
        [IID.__CAN__, 1],
        [IID.__TOMATO__, 2]
    ], 1, [
        [AREAS.__FIRE__, 15000],
        [AREAS.__BBQ__, 7000]
    ]),
    idWeapon: 25,     
    stack: 5,
    loot: LOOTID.__TOMATO_SOUP__,
    perish: 2,
    perishId: IID.__CAN__,
    wait: 10
}, {
    id: IID.__SYRINGE__,
    itemButton: {
        src: ["img/inv-syringe-out.png", "img/inv-syringe-in.png", "img/inv-syringe-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Syringe", "Useful to make drugs.", SKILLS.__DRUG__, [
        [IID.__JUNK__, 1]
    ], 1, [
        [AREAS.__WORKBENCH2__, 30000]
    ]),
    stack: 20,
    loot: LOOTID.__SYRINGE__,
    score: 50
}, {
    id: IID.__CHEMICAL_COMPONENT__,
    itemButton: {
        src: ["img/inv-chemical-component-out.png", "img/inv-chemical-component-in.png", "img/inv-chemical-component-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Chemical Component", "Useful to make a drugs."),
    stack: 20,
    loot: LOOTID.__CHEMICAL_COMPONENT__,
    score: 50
}, {
    id: IID.__RADAWAY__,
    itemButton: {
        src: ["img/inv-radaway-out.png", "img/inv-radaway-in.png", "img/inv-radaway-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("RadAway", "Reduce your radioactivity a lot.", SKILLS.__DRUG__, [
        [IID.__SYRINGE__, 1],
        [IID.__CHEMICAL_COMPONENT__, 1],
        [IID.__MUSHROOM2__, 1]
    ], 1, [
        [AREAS.__AGITATOR__, 45000]
    ]),
    idWeapon: 26,     
    stack: 5,
    loot: LOOTID.__RADAWAY__,
    wait: 10
}, {
    id: IID.__SEED_TOMATO__,
    itemButton: {
        src: ["img/inv-tomato-seed-out.png", "img/inv-tomato-seed-in.png", "img/inv-tomato-seed-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Tomato Seed", "A fruit or vegetable?", SKILLS.__PLANT__, [
        [IID.__TOMATO__, 4]
    ], 1, [
        [AREAS.__FIRE__, 30000],
        [AREAS.__BBQ__, 20000]
    ]),
    stack: 40,
    loot: LOOTID.__SEED_TOMATO__,
    fruit: LOOTID.__TOMATO__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [30, 30, 30, 30],
    height: [30, 30, 30, 30],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [35, 35, 35, 35],
    _y: [35, 35, 35, 35],
    blueprint: {
        src: "img/day-clear-blue-tomato.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-tomato.png",
        img: {
            isLoaded: 0
        }
    },
    door: 0,
    explosion: 0,
    behavior: BEHAVIOR.__SEED__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.orangeSeed,
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__NO_SOUND__,
    building: [{
        src: "img/day-plant0-tomato.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-plant1-tomato.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-plant2-tomato.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-plant3-tomato.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-plant4-tomato.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__TOMATO__,
    particlesDist: 68,
    timelife: ((5 * 8) * 60) * 1000,
    life: 250,
    score: 0
}, {
    id: IID.__TOMATO__,
    itemButton: {
        src: ["img/inv-tomato-out.png", "img/inv-tomato-in.png", "img/inv-tomato-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Tomato", "Why did the tomato blush?"),
    stack: 20,
    loot: LOOTID.tomato,
    wait: 5,
    perish: 10,
    perishId: IID.__ROTTEN_TOMATO__,
    idWeapon: 27,     
    score: 24
}, {
    id: IID.__ROTTEN_TOMATO__,
    itemButton: {
        src: ["img/inv-rotten-tomato-out.png", "img/inv-rotten-tomato-in.png", "img/inv-rotten-tomato-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Rotten Tomato", "Go on, have a bite!"),
    stack: 20,
    loot: LOOTID.__ROTTEN_TOMATO__,
    wait: 5,
    idWeapon: 28,     
    score: 20
}, {
    id: IID.__CAN__,
    itemButton: {
        src: ["img/inv-can-out.png", "img/inv-can-in.png", "img/inv-can-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Can", "Useful to craft food can.", SKILLS.__SURVIVAL__, [
        [IID.__SHAPED_METAL__, 1]
    ], 1, [
        [AREAS.__WORKBENCH__, 20000]
    ]),
    idWeapon: 0,     
    stack: 255,
    loot: LOOTID.__CAN__
}, {
    id: IID.__WOOD_CROSSBOW__,
    itemButton: {
        src: ["img/inv-wood-crossbow-out.png", "img/inv-wood-crossbow-in.png", "img/inv-wood-crossbow-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Wood Crossbow", "Shoot faster, reload slower", SKILLS.__WEAPON__, [
        [IID.__WOOD__, 200],
        [IID.__STRING__, 2],
        [IID.__SHAPED_METAL__, 1]
    ], 1, [
        [AREAS.__WORKBENCH__, 50000]
    ], 6),
    idWeapon: 29,     
    bullet: IID.__WOOD_CROSSARROW__,
    stack: 1,
    loot: LOOTID.__WOOD_CROSSBOW__,
    wait: 10
}, {
    id: IID.__WOOD_CROSSARROW__,
    itemButton: {
        src: ["img/inv-wood-crossarrow-out.png", "img/inv-wood-crossarrow-in.png", "img/inv-wood-crossarrow-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Crossbow Arrows", "Needed to use crossbow.", SKILLS.__WEAPON__, [
        [IID.__WOOD__, 40],
        [IID.__SHAPED_METAL__, 1]
    ], 10, [
        [AREAS.__WORKBENCH__, 30000]
    ]),
    stack: 255,
    loot: LOOTID.__WOOD_CROSSARROW__
}, {
    id: IID.__NAIL_GUN__,
    itemButton: {
        src: ["img/inv-nail-gun-out.png", "img/inv-nail-gun-in.png", "img/inv-nail-gun-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Nail Gun", "Repair walls from a distance", SKILLS.__TOOL__, [
        [IID.__SHAPED_METAL__, 3],
        [IID.__SMALL_WIRE__, 1],
        [IID.__JUNK__, 1],
        [IID.__ENERGY_CELLS__, 4]
    ], 1, [
        [AREAS.__WORKBENCH2__, 30000]
    ], 7),
    idWeapon: 30,     
    bullet: IID.__NAILS__,
    stack: 1,
    loot: LOOTID.__NAIL_GUN__,
    wait: 10
}, {
    id: IID.__SAWED_OFF_SHOTGUN__,
    itemButton: {
        src: ["img/inv-sawed-off-shotgun-out.png", "img/inv-sawed-off-shotgun-in.png", "img/inv-sawed-off-shotgun-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Sawed Off", "Shoot less far, do more damages", SKILLS.__WEAPON__, [
        [IID.__SHOTGUN__, 1],
        [IID.__ALLOYS__, 6],
        [IID.__SHAPED_METAL__, 6]
    ], 1, [
        [AREAS.__WORKBENCH2__, 200000]
    ], 13, IID.__SHOTGUN__),
    idWeapon: 31,     
    bullet: IID.__BULLET_SHOTGUN__,
    stack: 1,
    loot: LOOTID.__SAWED_OFF_SHOTGUN__,
    wait: 10
}, {
    id: IID.__STONE_FLOOR__,
    itemButton: {
        src: ["img/inv-stone-floor-out.png", "img/inv-stone-floor-in.png", "img/inv-stone-floor-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Stone floor", "Players can't spawn on it", SKILLS.__BUILDING__, [
        [IID.__STONE__, 15]
    ], 2, [
        [AREAS.__WORKBENCH__, 15000]
    ], 4),
    stack: 255,
    loot: LOOTID.__STONE_FLOOR__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: 2,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-stone-floor.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-stone-floor.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 1,
    idWall: IID.__STONE_FLOOR__,
    lowWall: 0,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.groundFloor,
    broken: [{
        src: "img/day-stone-floor-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__STONE_DESTROY__,
    building: [{
        src: "img/day-stone-floor-0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-39.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-40.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-41.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-42.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-43.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-44.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-45.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-floor-46.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__STONE__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 8000,
    score: 0
}, {
    id: IID.__TILING_FLOOR__,
    itemButton: {
        src: ["img/inv-tiling-floor-out.png", "img/inv-tiling-floor-in.png", "img/inv-tiling-floor-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Tiling floor", "Players can't spawn on it", SKILLS.__BUILDING__, [
        [IID.__STONE__, 15]
    ], 2, [
        [AREAS.__WORKBENCH__, 15000]
    ], 4),
    stack: 255,
    loot: LOOTID.__TILING_FLOOR__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: 2,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-tiling-floor.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-tiling-floor.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 1,
    idWall: IID.__TILING_FLOOR__,
    lowWall: 0,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.groundFloor,
    broken: [{
        src: "img/day-tiling-floor-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__STONE_DESTROY__,
    building: [{
        src: "img/day-tiling-floor-0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-39.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-40.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-41.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-42.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-43.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-44.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-45.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tiling-floor-46.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__STONE__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 8000,
    score: 0
}, {
    id: IID.__ROAD__,
    zid: 0,
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: [],
    buildings: [],
    detail: {
        category: window.undefined
    },
    particles: -1,
    draw: Render.road
}, {
    id: IID.__CRISPS__,
    itemButton: {
        src: ["img/inv-chips-out.png", "img/inv-chips-in.png", "img/inv-chips-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Crisps", "You salty?"),
    idWeapon: 32,     
    stack: 5,
    loot: LOOTID.__CRISPS__,
    perish: 2,
    perishId: IID.__ROTTEN_CRISPS__,
    wait: 10
}, {
    id: IID.__ROTTEN_CRISPS__,
    itemButton: {
        src: ["img/inv-rotten-chips-out.png", "img/inv-rotten-chips-in.png", "img/inv-rotten-chips-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Expired Crisps", "Go on, have a bite!"),
    stack: 5,
    loot: LOOTID.__ROTTEN_CRISPS__,
    wait: 5,
    idWeapon: 33,     
    score: 20
}, {
    id: IID.__ELECTRONICS__,
    itemButton: {
        src: ["img/inv-electronic-part-out.png", "img/inv-electronic-part-in.png", "img/inv-electronic-part-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Electronic Parts", "Break TV's and Computers to find it"),
    stack: 255,
    loot: LOOTID.__ELECTRONICS__,
    score: 100
}, {
    id: IID.__JUNK__,
    itemButton: {
        src: ["img/inv-junk-out.png", "img/inv-junk-in.png", "img/inv-junk-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Junk", "Find it in houses"),
    stack: 255,
    loot: LOOTID.__JUNK__,
    score: 40
}, {
    id: IID.__WIRE__,
    itemButton: {
        src: ["img/inv-wires-out.png", "img/inv-wires-in.png", "img/inv-wires-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Big Wire", "Break big computers in power AREAS (in the city)"),
    stack: 255,
    loot: LOOTID.__WIRE__,
    score: 40
}, {
    id: IID.__ENERGY_CELLS__,
    itemButton: {
        src: ["img/inv-small-energy-cells-out.png", "img/inv-small-energy-cells-in.png", "img/inv-small-energy-cells-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Energy Cells", "Used for energy weapons/buildings", SKILLS.__SURVIVAL__, [
        [IID.__ALLOYS__, 1],
        [IID.__SHAPED_URANIUM__, 1]
    ], 30, [
        [AREAS.__TESLA__, 28000]
    ], 6),
    stack: 255,
    loot: LOOTID.__ENERGY_CELLS__
}, {
    id: IID.__LASER_PISTOL__,
    itemButton: {
        src: ["img/inv-laser-pistol-out.png", "img/inv-laser-pistol-in.png", "img/inv-laser-pistol-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Laser Pistol", "Bullets are faster.", SKILLS.__WEAPON__, [
        [IID.__SHAPED_URANIUM__, 2],
        [IID.__WIRE__, 1],
        [IID.__ELECTRONICS__, 2],
        [IID.__ALLOYS__, 1],
        [IID.__SHAPED_METAL__, 4]
    ], 1, [
        [AREAS.__TESLA__, 180000]
    ], 14),
    idWeapon: 34,     
    bullet: IID.__ENERGY_CELLS__,
    stack: 1,
    loot: LOOTID.__LASER_PISTOL__,
    wait: 10
}, {
    id: IID.__TESLA__,
    itemButton: {
        src: ["img/inv-workbench3-out.png", "img/inv-workbench3-in.png", "img/inv-workbench3-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Tesla Bench", "Allow you to make powerful INVENTORY", SKILLS.__SURVIVAL__, [
        [IID.__ALLOYS__, 4],
        [IID.__SHAPED_METAL__, 6],
        [IID.__ELECTRONICS__, 3],
        [IID.__WIRE__, 4],
        [IID.__SHAPED_URANIUM__, 2]
    ], 1, [
        [AREAS.__WORKBENCH2__, 120000]
    ], 10, IID.__WORKBENCH2__),
    idWeapon: 21,     
    fuel: 60000,
    zid: 0,
    z: 1,
    area: AREAS.__TESLA__,
    stack: 255,
    loot: LOOTID.__TESLA__,
    wait: 10,
    delay: 1000,
    width: [100, 260, 100, 260],
    height: [260, 100, 260, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, -80, 0, -80],
    _y: [-80, 0, -80, 0],
    iTile: [-1, 0, -1, 0],
    jTile: [0, -1, 0, -1],
    blueprint: {
        src: "img/day-clear-blue-workbench3.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-workbench3.png",
        img: {
            isLoaded: 0
        }
    },
    xLight: [-20.5, -101.5, 20.5, 101.5],
    yLight: [101.5, -20.5, -101, 20.5],
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__AI_CONSTRUCTOR__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.teslaBench,
    packetId: 16,
    interact: {
        src: "img/e-workbench3.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/day-workbench3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-workbench3-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-workbench3-2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-workbench3-3.png",
        img: {
            isLoaded: 0
        }
    }],
    light: [{
        src: "img/day-tesla-light0.png",
        img: {
            isLoaded: 0
        }
    }, 0, {
        src: "img/day-tesla-light1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tesla-light2.png",
        img: {
            isLoaded: 0
        }
    }, 0, {
        src: "img/day-tesla-light3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tesla-light4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-tesla-light5.png",
        img: {
            isLoaded: 0
        }
    }, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 3000,
    score: 0
}, {
    id: IID.__ALLOYS__,
    itemButton: {
        src: ["img/inv-alloys-out.png", "img/inv-alloys-in.png", "img/inv-alloys-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Alloys", "To craft powerful INVENTORY", SKILLS.__MINERAL__, [
        [IID.__STEEL__, 1],
        [IID.__JUNK__, 1],
        [IID.__SULFUR__, 1]
    ], 1, [
        [AREAS.__SMELTER__, 10000]
    ]),
    stack: 255,
    loot: LOOTID.__ALLOYS__
}, {
    id: IID.__SULFUR_AXE__,
    itemButton: {
        src: ["img/inv-sulfur-axe-out.png", "img/inv-sulfur-axe-in.png", "img/inv-sulfur-axe-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Sulfur Axe", "You look cool with it.", SKILLS.__TOOL__, [
        [IID.__STONE_AXE__, 1],
        [IID.__ALLOYS__, 8],
        [IID.__SHAPED_METAL__, 10],
        [IID.__SULFUR__, 20]
    ], 1, [
        [AREAS.__WORKBENCH2__, 200000]
    ], 10, IID.__STONE_AXE__),
    idWeapon: 35,     
    stack: 1,
    loot: LOOTID.__SULFUR_AXE__,
    wait: 10
}, {
    id: IID.__LANDMINE__,
    itemButton: {
        src: ["img/inv-landmine-out.png", "img/inv-landmine-in.png", "img/inv-landmine-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Landmine", "When you feel it, it's too late", SKILLS.__WEAPON__, [
        [IID.__SHAPED_METAL__, 4],
        [IID.__JUNK__, 1],
        [IID.__SULFUR__, 2],
        [IID.__ANIMAL_FAT__, 2]
    ], 1, [
        [AREAS.__WORKBENCH2__, 40000]
    ], 9),
    stack: 20,
    loot: LOOTID.__LANDMINE__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [50, 50, 50, 50],
    height: [50, 50, 50, 50],
    _x: [25, 25, 25, 25],
    _y: [25, 25, 25, 25],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-landmine.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-landmine.png",
        img: {
            isLoaded: 0
        }
    },
    door: 0,
    explosion: 1,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 0,
    damage: 200,
    damageBuilding: 400,
    areaEffect: 0,
    draw: Render.landmine,
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/day-landmine-0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-landmine-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-landmine-2.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__KAKI__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 5,
    score: 0
}, {
    id: IID.__DYNAMITE__,
    itemButton: {
        src: ["img/inv-dynamite-out.png", "img/inv-dynamite-in.png", "img/inv-dynamite-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Dynamite", "Get out of here, it gonna blow!", SKILLS.__WEAPON__, [
        [IID.__STRING__, 1],
        [IID.__ANIMAL_FAT__, 2],
        [IID.__SULFUR__, 2],
        [IID.__JUNK__, 1]
    ], 1, [
        [AREAS.__WORKBENCH2__, 40000]
    ], 9),
    stack: 10,
    loot: LOOTID.__DYNAMITE__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-dynamite.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-dynamite.png",
        img: {
            isLoaded: 0
        }
    },
    door: 0,
    explosion: 1,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 0,
    damage: 180,
    damageBuilding: 1400,
    areaEffect: 0,
    draw: Render.dynamite,
    impact: SOUNDID.__PILLOW_IMPACT__,
    destroy: SOUNDID.__NO_SOUND__,
    building: [{
        src: "img/day-dynamite.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/dynamite-yellow.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__RED_STEEL__,
    particlesDist: 80,
    timelife: 5000,
    life: 100,
    score: 0
}, {
    id: IID.__C4__,
    itemButton: {
        src: ["img/inv-C4-out.png", "img/inv-C4-in.png", "img/inv-C4-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("C4", "Explode when you hit the trigger!", SKILLS.__WEAPON__, [
        [IID.__DYNAMITE__, 2],
        [IID.__SMALL_WIRE__, 1],
        [IID.__ALLOYS__, 2],
        [IID.__ELECTRONICS__, 1]
    ], 1, [
        [AREAS.__WORKBENCH2__, 60000]
    ], 16, IID.__DYNAMITE__),
    stack: 5,
    loot: LOOTID.__C4__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-C4.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-C4.png",
        img: {
            isLoaded: 0
        }
    },
    door: 0,
    explosion: 1,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    damage: 255,
    damageBuilding: 6000,
    collision: 0,
    areaEffect: 0,
    draw: Render.dynamite,
    impact: SOUNDID.__PILLOW_IMPACT__,
    destroy: SOUNDID.__NO_SOUND__,
    building: [{
        src: "img/day-C4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/C4-red.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__KAKI__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 100,
    score: 0
}, {
    id: IID.__C4_TRIGGER__,
    itemButton: {
        src: ["img/inv-joystick-out.png", "img/inv-joystick-in.png", "img/inv-joystick-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("C4 Trigger", "Don't press the button or else...", SKILLS.__WEAPON__, [
        [IID.__SHAPED_METAL__, 5],
        [IID.__ELECTRONICS__, 1],
        [IID.__ENERGY_CELLS__, 8],
        [IID.__SMALL_WIRE__, 1]
    ], 1, [
        [AREAS.__WORKBENCH2__, 100000]
    ], 16, IID.__C4__),
    stack: 1,
    loot: LOOTID.__C4_TRIGGER__,
    wait: 10,
    idWeapon: 36,     
    score: 0
}, {
    id: IID.__COMPOST__,
    itemButton: {
        src: ["img/inv-composter-out.png", "img/inv-composter-in.png", "img/inv-composter-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Compost", "Allows to accelerate rotting", SKILLS.__SURVIVAL__, [
        [IID.__SHAPED_METAL__, 4],
        [IID.__ELECTRONICS__, 1]
    ], 1, [
        [AREAS.__WORKBENCH2__, 100000]
    ], 8),
    idWeapon: 21,     
    fuel: 10000,
    zid: 0,
    z: 1,
    area: AREAS.__COMPOST__,
    stack: 255,
    loot: LOOTID.__COMPOST__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-composter.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-composter.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.compost,
    packetId: 16,
    interact: {
        src: "img/e-composter.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/day-composter-off.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-composter.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 500,
    score: 0
}, {
    id: IID.__ARMOR_PHYSIC_1__,
    itemButton: {
        src: ["img/inv-metal-helmet-out.png", "img/inv-metal-helmet-in.png", "img/inv-metal-helmet-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Metal Helmet", "Protects you from melee weapons", SKILLS.__CLOTHE__, [
        [IID.__SHAPED_METAL__, 3],
        [IID.__ANIMAL_TENDON__, 3],
        [IID.__LEATHER_BOAR__, 3],
        [IID.__NAILS__, 80]
    ], 1, [
        [AREAS.__WORKBENCH__, 70000]
    ]),
    idClothe: 7,
    stack: 1,
    loot: LOOTID.__ARMOR_PHYSIC_1__,
    wait: 10,
    warm: 0,
    def: 0.15,
    bul: 0,
    ene: 0,
    boom: 0,
    rad: 0,
    speed: -0.01
}, {
    id: IID.__ARMOR_PHYSIC_2__,
    itemButton: {
        src: ["img/inv-welding-helmet-out.png", "img/inv-welding-helmet-in.png", "img/inv-welding-helmet-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Welding Helmet", "Protects you from melee weapons", SKILLS.__CLOTHE__, [
        [IID.__SHAPED_METAL__, 10],
        [IID.__ALLOYS__, 2],
        [IID.__LEATHER_BOAR__, 3],
        [IID.__NAILS__, 160],
        [IID.__ARMOR_PHYSIC_1__, 1]
    ], 1, [
        [AREAS.__WORKBENCH2__, 140000]
    ], 7),
    idClothe: 8,
    stack: 1,
    loot: LOOTID.__ARMOR_PHYSIC_2__,
    wait: 10,
    warm: 0,
    def: 0.4,
    bul: 0,
    ene: 0,
    boom: 0.05,
    rad: 0,
    speed: -0.02
}, {
    id: IID.__ARMOR_PHYSIC_3__,
    itemButton: {
        src: ["img/inv-gladiator-helmet-out.png", "img/inv-gladiator-helmet-in.png", "img/inv-gladiator-helmet-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Gladiator Helmet", "Strength and honor.", SKILLS.__CLOTHE__, [
        [IID.__SHAPED_METAL__, 12],
        [IID.__ALLOYS__, 6],
        [IID.__LEATHER_BOAR__, 4],
        [IID.__NAILS__, 255],
        [IID.__ARMOR_PHYSIC_2__, 1]
    ], 1, [
        [AREAS.__WORKBENCH2__, 300000]
    ], 17, IID.__ARMOR_PHYSIC_2__),
    idClothe: 9,
    stack: 1,
    loot: LOOTID.__ARMOR_PHYSIC_3__,
    wait: 10,
    warm: 0,
    def: 0.6,
    bul: 0.1,
    ene: 0,
    boom: 0.2,
    rad: 0,
    speed: -0.03
}, {
    id: IID.__ARMOR_FIRE_1__,
    itemButton: {
        src: ["img/inv-leather-jacket-out.png", "img/inv-leather-jacket-in.png", "img/inv-leather-jacket-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Leather Jacket", "Protects you from guns", SKILLS.__CLOTHE__, [
        [IID.__STRING__, 2],
        [IID.__LEATHER_BOAR__, 4]
    ], 1, [
        [AREAS.__WEAVING__, 70000]
    ]),
    idClothe: 10,
    stack: 1,
    loot: LOOTID.__ARMOR_FIRE_1__,
    wait: 10,
    warm: 0.0006,
    def: 0,
    bul: 0.2,
    ene: 0,
    boom: 0,
    rad: 0,
    speed: 0
}, {
    id: IID.__ARMOR_FIRE_2__,
    itemButton: {
        src: ["img/inv-kevlar-suit-out.png", "img/inv-kevlar-suit-in.png", "img/inv-kevlar-suit-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Kevlar Suit", "Protects you from guns", SKILLS.__CLOTHE__, [
        [IID.__SHAPED_METAL__, 6],
        [IID.__STRING__, 4],
        [IID.__LEATHER_BOAR__, 6],
        [IID.__ALLOYS__, 2],
        [IID.__ARMOR_FIRE_1__, 1]
    ], 1, [
        [AREAS.__WEAVING__, 100000]
    ], 12),
    idClothe: 11,
    stack: 1,
    loot: LOOTID.__ARMOR_FIRE_2__,
    wait: 10,
    warm: 0,
    def: 0,
    bul: 0.4,
    ene: 0,
    boom: 0,
    rad: 0,
    speed: 0
}, {
    id: IID.__ARMOR_FIRE_3__,
    itemButton: {
        src: ["img/inv-SWAT-suit-out.png", "img/inv-SWAT-suit-in.png", "img/inv-SWAT-suit-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("SWAT Suit", "Protects you from guns", SKILLS.__CLOTHE__, [
        [IID.__SHAPED_METAL__, 10],
        [IID.__STRING__, 10],
        [IID.__LEATHER_BOAR__, 10],
        [IID.__ALLOYS__, 4],
        [IID.__ARMOR_FIRE_2__, 1]
    ], 1, [
        [AREAS.__WEAVING__, 200000]
    ], 18, IID.__ARMOR_FIRE_2__),
    idClothe: 12,
    stack: 1,
    loot: LOOTID.__ARMOR_FIRE_3__,
    wait: 10,
    warm: 0,
    def: 0.1,
    bul: 0.7,
    ene: 0,
    boom: 0.1,
    rad: 0,
    speed: -0.01
}, {
    id: IID.__ARMOR_DEMINER__,
    itemButton: {
        src: ["img/inv-protective-suit-out.png", "img/inv-protective-suit-in.png", "img/inv-protective-suit-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Protective Suit", "Protects you from explosives", SKILLS.__CLOTHE__, [
        [IID.__SHAPED_METAL__, 6],
        [IID.__STRING__, 6],
        [IID.__LEATHER_BOAR__, 6],
        [IID.__ALLOYS__, 2]
    ], 1, [
        [AREAS.__WEAVING__, 200000]
    ], 12, IID.__FEATHERWEIGHT__),
    idClothe: 13,
    stack: 1,
    loot: LOOTID.__ARMOR_DEMINER__,
    wait: 10,
    warm: 0.00085,
    def: 0,
    bul: 0,
    ene: 0,
    boom: 0.9,
    rad: 0,
    speed: -0.03
}, {
    id: IID.__ARMOR_TESLA_1__,
    itemButton: {
        src: ["img/inv-tesla-0-out.png", "img/inv-tesla-0-in.png", "img/inv-tesla-0-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Power Armor", "Protects you from energy weapons", SKILLS.__CLOTHE__, [
        [IID.__SHAPED_METAL__, 20],
        [IID.__SHAPED_URANIUM__, 2],
        [IID.__ELECTRONICS__, 1],
        [IID.__WIRE__, 2],
        [IID.__ALLOYS__, 2]
    ], 1, [
        [AREAS.__TESLA__, 150000]
    ], 10),
    idClothe: 14,
    stack: 1,
    loot: LOOTID.__ARMOR_TESLA_1__,
    wait: 10,
    warm: 0,
    def: 0,
    bul: 0,
    ene: 0.3,
    boom: 0,
    rad: 0,
    speed: 0
}, {
    id: IID.__ARMOR_TESLA_2__,
    itemButton: {
        src: ["img/inv-tesla-armor-out.png", "img/inv-tesla-armor-in.png", "img/inv-tesla-armor-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Tesla Armor", "Protects you from energy weapons", SKILLS.__CLOTHE__, [
        [IID.__ARMOR_TESLA_1__, 1],
        [IID.__SHAPED_URANIUM__, 10],
        [IID.__ELECTRONICS__, 5],
        [IID.__WIRE__, 5],
        [IID.__ALLOYS__, 10]
    ], 1, [
        [AREAS.__TESLA__, 300000]
    ], 18, IID.__ARMOR_TESLA_1__, 3),
    idClothe: 15,
    stack: 1,
    loot: LOOTID.__ARMOR_TESLA_2__,
    wait: 10,
    warm: 0.00085,
    def: 0.2,
    bul: 0.2,
    ene: 0.75,
    boom: 0.2,
    rad: 0.01,
    speed: -0.02
}, {
    id: IID.__WOOD_SPIKE__,
    itemButton: {
        src: ["img/inv-wood-spike-out.png", "img/inv-wood-spike-in.png", "img/inv-wood-spike-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Wooden Spike", "Hurt and slow down", SKILLS.__BUILDING__, [
        [IID.__WOOD__, 80]
    ], 1, [
        [AREAS.__WORKBENCH__, 25000]
    ]),
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    stack: 40,
    loot: LOOTID.__WOOD_SPIKE__,
    wait: 10,
    delay: 1000,
    width: [50, 50, 50, 50],
    height: [50, 50, 50, 50],
    _x: [25, 25, 25, 25],
    _y: [25, 25, 25, 25],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-wood-spike.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-wood-spike.png",
        img: {
            isLoaded: 0
        }
    },
    door: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.spike,
    hidden: [{
        src: "img/day-wood-spike-cover1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-spike-cover2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-spike-cover3.png",
        img: {
            isLoaded: 0
        }
    }],
    deployed: [{
        src: "img/day-wood-spike-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-spike-2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-wood-spike-3.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__WOOD__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 200,
    score: 0
}, {
    id: IID.__LASER_SUBMACHINE__,
    itemButton: {
        src: ["img/inv-laser-submachine-out.png", "img/inv-laser-submachine-in.png", "img/inv-laser-submachine-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Laser Submachine", "It's the best weapon", SKILLS.__WEAPON__, [
        [IID.__ALLOYS__, 10],
        [IID.__SHAPED_METAL__, 6],
        [IID.__SHAPED_URANIUM__, 6],
        [IID.__WIRE__, 2],
        [IID.__ELECTRONICS__, 3]
    ], 1, [
        [AREAS.__TESLA__, 180000]
    ], 14, IID.__LASER_PISTOL__, 2),
    idWeapon: 37,     
    bullet: IID.__ENERGY_CELLS__,
    stack: 1,
    loot: LOOTID.__LASER_SUBMACHINE__,
    wait: 10
}, {
    id: IID.__GRENADE__,
    itemButton: {
        src: ["img/inv-grenade-out.png", "img/inv-grenade-in.png", "img/inv-grenade-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Grenade", "Explodes when you throw it away.", SKILLS.__WEAPON__, [
        [IID.__SHAPED_METAL__, 2],
        [IID.__JUNK__, 2],
        [IID.__SULFUR__, 2],
        [IID.__ANIMAL_FAT__, 2]
    ], 2, [
        [AREAS.__WORKBENCH2__, 30000]
    ], 10),
    idWeapon: 38,     
    damage: 130,
    damageBuilding: 400,
    stack: 10,
    loot: LOOTID.__GRENADE__,
    wait: 10
}, {
    id: IID.__SUPER_HAMMER__,
    itemButton: {
        src: ["img/inv-super-hammer-out.png", "img/inv-super-hammer-in.png", "img/inv-super-hammer-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Super Hammer", "Destroy indestructible walls."),
    idWeapon: 39,     
    stack: 1,
    loot: LOOTID.__SUPER_HAMMER__,
    wait: 10
}, {
    id: IID.__GHOUL_BLOOD__,
    itemButton: {
        src: ["img/inv-ghoul-blood-out.png", "img/inv-ghoul-blood-in.png", "img/inv-ghoul-blood-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Ghoul Blood", "Find it on speedy ghouls"),
    stack: 255,
    loot: LOOTID.__GHOUL_BLOOD__,
    score: 100
}, 

{
    id: IID.__CAMOUFLAGE_GEAR__,
    itemButton: {
        src: ["img/inv-camouflage-gear-out.png", "img/inv-camouflage-gear-in.png", "img/inv-camouflage-gear-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Camouflage Gear", "Hide you in the forest", SKILLS.__CLOTHE__, [
        [IID.__WOOD__, 90],
        [IID.__STRING__, 2],
        [IID.__LEATHER_BOAR__, 2]
    ], 1, [
        [AREAS.__WEAVING__, 40000]
    ]),
    idClothe: 16,
    stack: 1,
    loot: LOOTID.__CAMOUFLAGE_GEAR__,
    wait: 10,
    warm: 0,
    def: 0,
    bul: 0,
    ene: 0,
    boom: 0,
    rad: 0,
    speed: 0
},

{
    id: IID.__AGITATOR__,
    itemButton: {
        src: ["img/inv-agitator-out.png", "img/inv-agitator-in.png", "img/inv-agitator-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Agitator", "Allows to craft drugs", SKILLS.__SURVIVAL__, [
        [IID.__SHAPED_METAL__, 6],
        [IID.__ELECTRONICS__, 1]
    ], 1, [
        [AREAS.__WORKBENCH2__, 100000]
    ], 8),
    idWeapon: 21,     
    fuel: 100000,
    zid: 0,
    z: 1,
    area: AREAS.__AGITATOR__,
    stack: 255,
    loot: LOOTID.__AGITATOR__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-agitator.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-agitator.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.agitator,
    packetId: 16,
    interact: {
        src: "img/e-agitator.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/day-agitator1-off.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-agitator1-on.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-agitator-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-agitator-2.png",
        img: {
            isLoaded: 0
        }
    }],
    spine: [
        [-25.5, 21],
        [-21, -25.5],
        [25.5, -21],
        [21, 25.5]
    ],
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 500,
    score: 0
}, {
    id: IID.__GHOUL_DRUG__,
    itemButton: {
        src: ["img/inv-ghoul-drug-out.png", "img/inv-ghoul-drug-in.png", "img/inv-ghoul-drug-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Ghoul Drug", "Ghouls does not attack you.", SKILLS.__DRUG__, [
        [IID.__SYRINGE__, 1],
        [IID.__CHEMICAL_COMPONENT__, 1],
        [IID.__MUSHROOM2__, 1],
        [IID.__MUSHROOM3__, 1],
        [IID.__GHOUL_BLOOD__, 1]
    ], 1, [
        [AREAS.__AGITATOR__, 30000]
    ], 10),
    idWeapon: 40,     
    stack: 5,
    loot: LOOTID.__GHOUL_DRUG__,
    wait: 10
}, {
    id: IID.__MUSHROOM1__,
    itemButton: {
        src: ["img/inv-mushroom1-out.png", "img/inv-mushroom1-in.png", "img/inv-mushroom1-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Amanita", "Poisoned, really dangerous"),
    stack: 20,
    loot: LOOTID.__MUSHROOM1__,
    wait: 5,
    perish: 10,
    perishId: IID.__ROTTEN_MUSHROOM1__,
    idWeapon: 41,     
    score: 24
}, {
    id: IID.__MUSHROOM2__,
    itemButton: {
        src: ["img/inv-mushroom2-out.png", "img/inv-mushroom2-in.png", "img/inv-mushroom2-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Boletus", "Can be eaten."),
    stack: 20,
    loot: LOOTID.__MUSHROOM2__,
    wait: 5,
    perish: 10,
    perishId: IID.__ROTTEN_MUSHROOM2__,
    idWeapon: 42,     
    score: 24
}, {
    id: IID.__MUSHROOM3__,
    itemButton: {
        src: ["img/inv-mushroom3-out.png", "img/inv-mushroom3-in.png", "img/inv-mushroom3-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Russula", "Can be eaten."),
    stack: 20,
    loot: LOOTID.__MUSHROOM3__,
    wait: 5,
    perish: 10,
    perishId: IID.__ROTTEN_MUSHROOM3__,
    idWeapon: 43,     
    score: 24
}, {
    id: IID.__ROTTEN_MUSHROOM1__,
    itemButton: {
        src: ["img/inv-rotten-mushroom1-out.png", "img/inv-rotten-mushroom1-in.png", "img/inv-rotten-mushroom1-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Rotten Mushroom", "Go on, have a bite!"),
    stack: 20,
    loot: LOOTID.__ROTTEN_MUSHROOM1__,
    wait: 5,
    idWeapon: 44,     
    score: 20
}, {
    id: IID.__ROTTEN_MUSHROOM2__,
    itemButton: {
        src: ["img/inv-rotten-mushroom2-out.png", "img/inv-rotten-mushroom2-in.png", "img/inv-rotten-mushroom2-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Rotten Mushroom", "Go on, have a bite!"),
    stack: 20,
    loot: LOOTID.__ROTTEN_MUSHROOM2__,
    wait: 5,
    idWeapon: 45,     
    score: 20
}, {
    id: IID.__ROTTEN_MUSHROOM3__,
    itemButton: {
        src: ["img/inv-rotten-mushroom3-out.png", "img/inv-rotten-mushroom3-in.png", "img/inv-rotten-mushroom3-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Rotten Mushroom", "Go on, have a bite!"),
    stack: 20,
    loot: LOOTID.__ROTTEN_MUSHROOM3__,
    wait: 5,
    idWeapon: 46,     
    score: 20
}, {
    id: IID.__LAPADONE__,
    itemButton: {
        src: ["img/inv-lapadoine-out.png", "img/inv-lapadoine-in.png", "img/inv-lapadoine-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Lapadone", "You are faster a certain time.", SKILLS.__DRUG__, [
        [IID.__SYRINGE__, 1],
        [IID.__CHEMICAL_COMPONENT__, 1],
        [IID.__MUSHROOM1__, 1],
        [IID.__GHOUL_BLOOD__, 1]
    ], 1, [
        [AREAS.__AGITATOR__, 45000]
    ], 14),
    idWeapon: 47,     
    stack: 5,
    loot: LOOTID.__LAPADONE__,
    wait: 10
}, {
    id: IID.__LAPABOT_REPAIR__,
    itemButton: {
        src: ["img/inv-lapabot-out.png", "img/inv-lapabot-in.png", "img/inv-lapabot-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("LapaBot", "Repair your base for you", SKILLS.__SURVIVAL__, [
        [IID.__SHAPED_METAL__, 6],
        [IID.__ELECTRONICS__, 1],
        [IID.__SMALL_WIRE__, 1],
        [IID.__ALLOYS__, 1]
    ], 1, [
        [AREAS.__WORKBENCH2__, 100000]
    ], 8),
    stack: 5,
    loot: LOOTID.__LAPABOT_REPAIR__,
    fruit: LOOTID.tomato,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [30, 30, 30, 30],
    height: [30, 30, 30, 30],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [35, 35, 35, 35],
    _y: [35, 35, 35, 35],
    blueprint: {
        src: "img/clear-blue-lapabot.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-lapabot.png",
        img: {
            isLoaded: 0
        }
    },
    door: 0,
    explosion: 0,
    behavior: BEHAVIOR.__AI_CONSTRUCTOR__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.construction,
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/lapabot0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/lapabot1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/lapabot2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/lapabot3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/lapabot4.png",
        img: {
            isLoaded: 0
        }
    }],
    builder: {
        src: "img/day-lapabot-builder.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__METAL__,
    particlesDist: 68,
    timelife: ((5 * 8) * 60) * 1000,
    life: 250,
    score: 0,
    timelifeAI: 315360000000,
    idAI: AIID.__LAPABOT_REPAIR__,
    evolve: 20000,
    evolveMaxStep: 4,
    killConstructor: 1
}, {
    id: IID.__SMALL_WIRE__,
    itemButton: {
        src: ["img/inv-small-wire-out.png", "img/inv-small-wire-in.png", "img/inv-small-wire-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Small Wire", "Find it on TV's and computers in abandonned houses"),
    stack: 255,
    loot: LOOTID.__SMALL_WIRE__,
    score: 40
}, {
    id: IID.__PUMPKIN__,
    itemButton: {
        src: ["img/inv-pumpkin-out.png", "img/inv-pumpkin-in.png", "img/inv-pumpkin-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Pumpkin", "Eat it or craft a pumpkin ghoul"),
    stack: 20,
    loot: LOOTID.__PUMPKIN__,
    wait: 5,
    perish: 10,
    perishId: IID.__ROTTEN_PUMPKIN__,
    idWeapon: 48,     
    score: 24
}, {
    id: IID.__ROTTEN_PUMPKIN__,
    itemButton: {
        src: ["img/inv-rotten-pumpkin-out.png", "img/inv-rotten-pumpkin-in.png", "img/inv-rotten-pumpkin-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Rotten Pumpkin", "You should not click"),
    stack: 20,
    loot: LOOTID.__ROTTEN_PUMPKIN__,
    wait: 5,
    idWeapon: 49,     
    score: 20
}, {
    id: IID.__SEED_GHOUL__,
    itemButton: {
        src: ["img/inv-ghoul5-out.png", "img/inv-ghoul5-in.png", "img/inv-ghoul5-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Ghoul Seed", "Plant your pumpkin pet", -1, [
        [IID.__PUMPKIN__, 1],
        [IID.__GHOUL_BLOOD__, 1]
    ], 1, [
        [AREAS.__FIRE__, 30000],
        [AREAS.__BBQ__, 20000]
    ], 99),
    stack: 40,
    loot: LOOTID.__SEED_GHOUL__,
    fruit: LOOTID.tomato,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [30, 30, 30, 30],
    height: [30, 30, 30, 30],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [35, 35, 35, 35],
    _y: [35, 35, 35, 35],
    blueprint: {
        src: "img/clear-blue-root.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-root.png",
        img: {
            isLoaded: 0
        }
    },
    door: 0,
    explosion: 0,
    behavior: BEHAVIOR.__AI_CONSTRUCTOR__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.orangeSeed,
    impact: SOUNDID.__PILLOW_IMPACT__,
    destroy: SOUNDID.__PILLOW_DESTROY__,
    building: [{
        src: "img/day-root0-ghoul.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-root1-ghoul.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-root2-ghoul.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-root3-ghoul.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-root4-ghoul.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__ORANGE__,
    particlesDist: 68,
    timelife: ((5 * 8) * 60) * 1000,
    life: 250,
    score: 0,
    timelifeAI: 120000,
    idAI: AIID.__PUMPKIN_GHOUL__,
    evolve: 15000,
    evolveMaxStep: 3,
    killConstructor: 0
}, {
    id: IID.__EXTRACTOR__,
    itemButton: {
        src: ["img/inv-extractor-out.png", "img/inv-extractor-in.png", "img/inv-extractor-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Extractor", "Allows you to extract minerals from the ground", SKILLS.__SURVIVAL__, [
        [IID.__ALLOYS__, 2],
        [IID.__SHAPED_METAL__, 10],
        [IID.__SHAPED_URANIUM__, 2],
        [IID.__SMALL_WIRE__, 2],
        [IID.__ELECTRONICS__, 1]
    ], 1, [
        [AREAS.__WORKBENCH2__, 100000]
    ], 12),
    idWeapon: 21,     
    fuel: 740000,
    zid: 0,
    z: 1,
    area: AREAS.__EXTRACTOR__,
    stack: 255,
    loot: LOOTID.__EXTRACTOR__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-extractor.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-extractor.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.extractor,
    packetId: 16,
    interact: {
        src: "img/e-extractor.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/day-extractor.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-extractor-rotate.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-extractor-off.png",
        img: {
            isLoaded: 0
        }
    }],
    spine: [
        [0, 0],
        [0, 0],
        [0, 0],
        [0, 0]
    ],
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 500,
    score: 0
}, {
    id: IID.__ANTIDOTE__,
    itemButton: {
        src: ["img/inv-antidote-out.png", "img/inv-antidote-in.png", "img/inv-antidote-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Antidote", "Remove the withdrawal effects (pink skin)", SKILLS.__DRUG__, [
        [IID.__SYRINGE__, 1],
        [IID.__CHEMICAL_COMPONENT__, 1],
        [IID.__MUSHROOM1__, 1],
        [IID.__ANTIDOTE_FLOWER__, 1]
    ], 1, [
        [AREAS.__AGITATOR__, 45000]
    ], 14),
    idWeapon: 50,     
    stack: 5,
    loot: LOOTID.__ANTIDOTE__,
    wait: 10
}, {
    id: IID.__ANTIDOTE_FLOWER__,
    itemButton: {
        src: ["img/inv-antidote-flower-out.png", "img/inv-antidote-flower-in.png", "img/inv-antidote-flower-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Rare Flower", "Use it to make an antidote"),
    stack: 5,
    loot: LOOTID.__ANTIDOTE_FLOWER__,
    score: 400
}, {
    id: IID.__SEED_TREE__,
    itemButton: {
        src: ["img/inv-seed-tree-out.png", "img/inv-seed-tree-in.png", "img/inv-seed-tree-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Tree Seed", "Plant your forest", SKILLS.__PLANT__, [
        [IID.__ACORN__, 1]
    ], 5, [
        [AREAS.__FIRE__, 60000],
        [AREAS.__BBQ__, 40000]
    ]),
    stack: 100,
    loot: LOOTID.__SEED_TREE__,
    fruit:  LOOTID.__ORANGE__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [30, 30, 30, 30],
    height: [30, 30, 30, 30],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [35, 35, 35, 35],
    _y: [35, 35, 35, 35],
    blueprint: {
        src: "img/clear-blue-plant-tree.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-plant-tree.png",
        img: {
            isLoaded: 0
        }
    },
    door: 0,
    explosion: 0,
    behavior: BEHAVIOR.__SEED_RESOURCE__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.treeSeed,
    impact: SOUNDID.__WOOD_IMPACT__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    building: [{
        src: "img/day-plant-tree0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-plant-tree1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-plant-tree2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-plant-tree3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-plant4-orange.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__WOOD__,
    particlesDist: 68,
    timelife: ((5 * 8) * 60) * 1000,
    life: 150,
    score: 0
}, {
    id: IID.__ACORN__,
    itemButton: {
        src: ["img/inv-acorn-out.png", "img/inv-acorn-in.png", "img/inv-acorn-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Acorn", "Eat it or plant a tree"),
    stack: 20,
    loot: LOOTID.__ACORN__,
    wait: 5,
    perish: 3,
    perishId: IID.__ROTTEN_ACORN__,
    idWeapon: 51,     
    score: 24
}, {
    id: IID.__ROTTEN_ACORN__,
    itemButton: {
        src: ["img/inv-rotten-acorn-out.png", "img/inv-rotten-acorn-in.png", "img/inv-rotten-acorn-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Rotten Acorn", "Not really good"),
    stack: 20,
    loot: LOOTID.__ROTTEN_ACORN__,
    wait: 5,
    idWeapon: 52,     
    score: 20
}, {
    id: IID.__LASER_SNIPER__,
    itemButton: {
        src: ["img/inv-laser-sniper-out.png", "img/inv-laser-sniper-in.png", "img/inv-laser-sniper-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Laser Sniper", "Faster than a sniper", SKILLS.__WEAPON__, [
        [IID.__ALLOYS__, 8],
        [IID.__SHAPED_METAL__, 6],
        [IID.__SHAPED_URANIUM__, 5],
        [IID.__WIRE__, 3],
        [IID.__ELECTRONICS__, 3]
    ], 1, [
        [AREAS.__TESLA__, 180000]
    ], 14, IID.__LASER_PISTOL__, 2),
    idWeapon: 53,     
    bullet: IID.__ENERGY_CELLS__,
    stack: 1,
    loot: LOOTID.__LASER_SNIPER__,
    wait: 10
}, {
    id: IID.__HAL_BOT__,
    itemButton: {
        src: ["img/inv-hal-bot-out.png", "img/inv-hal-bot-in.png", "img/inv-hal-bot-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("HAL Bot", "Protect you", SKILLS.__SURVIVAL__, [
        [IID.__SHAPED_METAL__, 6],
        [IID.__ELECTRONICS__, 1],
        [IID.__SMALL_WIRE__, 1],
        [IID.__ALLOYS__, 1]
    ], 1, [
        [AREAS.__WORKBENCH2__, 100000]
    ], 8),
    stack: 5,
    loot: LOOTID.__HAL_BOT__,
    fruit: LOOTID.tomato,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [30, 30, 30, 30],
    height: [30, 30, 30, 30],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [35, 35, 35, 35],
    _y: [35, 35, 35, 35],
    blueprint: {
        src: "img/clear-blue-hal-bot.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-hal-bot.png",
        img: {
            isLoaded: 0
        }
    },
    door: 0,
    explosion: 0,
    behavior: BEHAVIOR.__AI_CONSTRUCTOR__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.construction,
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/hal-bot0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/hal-bot1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/hal-bot2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/hal-bot3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/hal-bot4.png",
        img: {
            isLoaded: 0
        }
    }],
    builder: {
        src: "img/day-hal-bot-builder.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__METAL__,
    particlesDist: 68,
    timelife: ((5 * 8) * 60) * 1000,
    life: 400,
    score: 0,
    timelifeAI: 315360000000,
    idAI: AIID.__HAL_BOT__,
    evolve: 8000,
    evolveMaxStep: 4,
    killConstructor: 1
}, {
    id: IID.__TESLA_BOT__,
    itemButton: {
        src: ["img/inv-tesla-bot-out.png", "img/inv-tesla-bot-in.png", "img/inv-tesla-bot-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Tesla Bot", "Protect you", SKILLS.__SURVIVAL__, [
        [IID.__SHAPED_URANIUM__, 3],
        [IID.__ELECTRONICS__, 1],
        [IID.__SMALL_WIRE__, 3],
        [IID.__WIRE__, 3],
        [IID.__ALLOYS__, 3]
    ], 1, [
        [AREAS.__TESLA__, 200000]
    ], 16),
    stack: 5,
    loot: LOOTID.__TESLA_BOT__,
    fruit: LOOTID.tomato,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [30, 30, 30, 30],
    height: [30, 30, 30, 30],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [35, 35, 35, 35],
    _y: [35, 35, 35, 35],
    blueprint: {
        src: "img/clear-blue-tesla-bot.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-tesla-bot.png",
        img: {
            isLoaded: 0
        }
    },
    door: 0,
    explosion: 0,
    behavior: BEHAVIOR.__AI_CONSTRUCTOR__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.construction,
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/tesla-bot0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/tesla-bot1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/tesla-bot2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/tesla-bot3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/tesla-bot4.png",
        img: {
            isLoaded: 0
        }
    }],
    builder: {
        src: "img/day-lapabot-builder.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__METAL__,
    particlesDist: 68,
    timelife: ((5 * 8) * 60) * 1000,
    life: 500,
    score: 0,
    timelifeAI: 315360000000,
    idAI: AIID.__TESLA_BOT__,
    evolve: 20000,
    evolveMaxStep: 4,
    killConstructor: 1
}, {
    id: IID.__CABLE0__,
    itemButton: {
        src: ["img/inv-wire0-out.png", "img/inv-wire0-in.png", "img/inv-wire0-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Cable", "Create automatic mechanisms", SKILLS.__LOGIC__, [
        [IID.__SMALL_WIRE__, 1]
    ], 3, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__CABLE0__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-wire0.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-wire0.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 0,
    wire: [
        [1, 1, 0, 0],
        [0, 0, 1, 1],
        [1, 1, 0, 0],
        [0, 0, 1, 1]
    ],
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.hiddenBuilding,
    impact: SOUNDID.__PILLOW_IMPACT__,
    destroy: SOUNDID.__PILLOW_DESTROY__,
    building: {
        src: "img/day-wire0.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__BARELRED__,
    particlesDist: 40,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__CABLE1__,
    itemButton: {
        src: ["img/inv-wire1-out.png", "img/inv-wire1-in.png", "img/inv-wire1-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Cable", "Create automatic mechanisms", SKILLS.__LOGIC__, [
        [IID.__SMALL_WIRE__, 1]
    ], 3, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__CABLE1__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-wire1.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-wire1.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 0,
    wire: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]
    ],
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.hiddenBuilding,
    impact: SOUNDID.__PILLOW_IMPACT__,
    destroy: SOUNDID.__PILLOW_DESTROY__,
    building: {
        src: "img/day-wire1.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__BARELRED__,
    particlesDist: 40,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__CABLE2__,
    itemButton: {
        src: ["img/inv-wire2-out.png", "img/inv-wire2-in.png", "img/inv-wire2-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Cable", "Create automatic mechanisms", SKILLS.__LOGIC__, [
        [IID.__SMALL_WIRE__, 1]
    ], 3, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__CABLE2__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-wire2.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-wire2.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 0,
    wire: [
        [0, 1, 0, 1],
        [0, 1, 1, 0],
        [1, 0, 1, 0],
        [1, 0, 0, 1]
    ],
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.hiddenBuilding,
    impact: SOUNDID.__PILLOW_IMPACT__,
    destroy: SOUNDID.__PILLOW_DESTROY__,
    building: {
        src: "img/day-wire2.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__BARELRED__,
    particlesDist: 40,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__CABLE3__,
    itemButton: {
        src: ["img/inv-wire3-out.png", "img/inv-wire3-in.png", "img/inv-wire3-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Cable", "Create automatic mechanisms", SKILLS.__LOGIC__, [
        [IID.__SMALL_WIRE__, 1]
    ], 3, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__CABLE3__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-wire3.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-wire3.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 0,
    wire: [
        [0, 1, 1, 1],
        [1, 1, 1, 0],
        [1, 0, 1, 1],
        [1, 1, 0, 1]
    ],
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.hiddenBuilding,
    impact: SOUNDID.__PILLOW_IMPACT__,
    destroy: SOUNDID.__PILLOW_DESTROY__,
    building: {
        src: "img/day-wire3.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__BARELRED__,
    particlesDist: 40,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__SWITCH__,
    itemButton: {
        src: ["img/inv-switch-out.png", "img/inv-switch-in.png", "img/inv-switch-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Switch", "Turn on/off mechanisms", SKILLS.__LOGIC__, [
        [IID.__SHAPED_METAL__, 1],
        [IID.__SMALL_WIRE__, 1]
    ], 3, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__SWITCH__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-switch.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-switch.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 1,
    wire: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]
    ],
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.switchOff,
    packetId: 37,
    interact: {
        src: "img/e-turnon.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/day-switch-off.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-switch-on.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__GATE_OR__,
    itemButton: {
        src: ["img/inv-switch-or-out.png", "img/inv-switch-or-in.png", "img/inv-switch-or-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Gate OR", "Activate only if an entry is on.", SKILLS.__LOGIC__, [
        [IID.__SHAPED_METAL__, 1],
        [IID.__SMALL_WIRE__, 1]
    ], 3, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__GATE_OR__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-switch-or.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-switch-or.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 1,
    wire: [
        [1, 0, 0, 0],
        [0, 0, 0, 1],
        [0, 1, 0, 0],
        [0, 0, 1, 0]
    ],
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.hiddenBuilding,
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: {
        src: "img/day-switch-or.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__GATE_AND__,
    itemButton: {
        src: ["img/inv-switch-and-out.png", "img/inv-switch-and-in.png", "img/inv-switch-and-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Gate AND", "Activate only if all entries are on.", SKILLS.__LOGIC__, [
        [IID.__SHAPED_METAL__, 1],
        [IID.__SMALL_WIRE__, 1]
    ], 3, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__GATE_AND__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-switch-and.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-switch-and.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 1,
    wire: [
        [1, 0, 0, 0],
        [0, 0, 0, 1],
        [0, 1, 0, 0],
        [0, 0, 1, 0]
    ],
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.hiddenBuilding,
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: {
        src: "img/day-switch-and.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__GATE_NOT__,
    itemButton: {
        src: ["img/inv-switch-reverse-out.png", "img/inv-switch-reverse-in.png", "img/inv-switch-reverse-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Gate NOT", "Activate only if no entry is on.", SKILLS.__LOGIC__, [
        [IID.__SHAPED_METAL__, 1],
        [IID.__SMALL_WIRE__, 1]
    ], 3, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__GATE_NOT__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-switch-reverse.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-switch-reverse.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 1,
    wire: [
        [1, 0, 1, 1],
        [1, 1, 0, 1],
        [0, 1, 1, 1],
        [1, 1, 1, 0]
    ],
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.hiddenBuilding,
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: {
        src: "img/day-switch-reverse.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__LAMP__,
    itemButton: {
        src: ["img/inv-lamp-white-out.png", "img/inv-lamp-white-in.png", "img/inv-lamp-white-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Lamp", "Turn on when connected, damage ghoul", SKILLS.__LOGIC__, [
        [IID.__SHAPED_METAL__, 1],
        [IID.__SMALL_WIRE__, 1]
    ], 3, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__LAMP__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-lamp.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-lamp.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 0,
    wire: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]
    ],
    subtype: 0,
    collision: 2,
    radius: 22,
    areaEffect: 0,
    draw: Render.lamp,
    drawTop: Render.lampLight,
    packetId: 36,
    interact: {
        src: "img/e-light.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: {
        src: "img/day-lamp-off.png",
        img: {
            isLoaded: 0
        }
    },
    buildingOn: [{
        src: "img/day-lamp-white.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-lamp-yellow.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-lamp-green.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-lamp-clear-blue.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-lamp-purple.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-lamp-pink.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-lamp-orange.png",
        img: {
            isLoaded: 0
        }
    }],
    buildingTop: [{
        src: "img/day-lamp-light-white.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-lamp-light-yellow.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-lamp-light-green.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-lamp-light-clear-blue.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-lamp-light-purple.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-lamp-light-pink.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-lamp-light-orange.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 600,
    score: 0
}, {
    id: IID.__CABLE_WALL__,
    itemButton: {
        src: ["img/inv-cable-wall-out.png", "img/inv-cable-wall-in.png", "img/inv-cable-wall-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Cable  - Wall", "Wall that can be connected to a cable", SKILLS.__LOGIC__, [
        [IID.__SHAPED_METAL__, 8],
        [IID.__SMALL_WIRE__, 1]
    ], 1, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ], 7),
    stack: 255,
    loot: LOOTID.__CABLE_WALL__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 1,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-cable-wall.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-cable-wall.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 0,
    wire: [
        [1, 1, 0, 0],
        [0, 0, 1, 1],
        [1, 1, 0, 0],
        [0, 0, 1, 1]
    ],
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.breakable,
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/day-cable-wall.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-cable-wall1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-cable-wall2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-cable-wall3.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__METAL__,
    particlesDist: 40,
    timelife: 315360000000,
    life: 15000,
    score: 0
}, {
    id: IID.__AUTOMATIC_DOOR__,
    itemButton: {
        src: ["img/inv-automatic-door-out.png", "img/inv-automatic-door-in.png", "img/inv-automatic-door-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Automatic Door", "Connect it to a switch to open and close it.", SKILLS.__LOGIC__, [
        [IID.__SHAPED_METAL__, 8],
        [IID.__SMALL_WIRE__, 2],
        [IID.__ELECTRONICS__, 1]
    ], 1, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ], 7),
    stack: 255,
    loot: LOOTID.__AUTOMATIC_DOOR__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 1,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-automatic-door.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-automatic-door.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 0,
    wire: [
        [0, 1, 1, 1],
        [1, 1, 1, 0],
        [1, 0, 1, 1],
        [1, 1, 0, 1]
    ],
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.automaticDoor,
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [
        [{
            src: "img/day-automatic-door-off.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-automatic-door1-off.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-automatic-door2-off.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-automatic-door3-off.png",
            img: {
                isLoaded: 0
            }
        }],
        [{
            src: "img/day-automatic-door-on.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-automatic-door1-on.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-automatic-door2-on.png",
            img: {
                isLoaded: 0
            }
        }, {
            src: "img/day-automatic-door3-on.png",
            img: {
                isLoaded: 0
            }
        }]
    ],
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 15000,
    score: 0
}, {
    id: IID.__PLATFORM__,
    itemButton: {
        src: ["img/inv-platform-out.png", "img/inv-platform-in.png", "img/inv-platform-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Platform", "Weight detector", SKILLS.__LOGIC__, [
        [IID.__SHAPED_METAL__, 1],
        [IID.__SMALL_WIRE__, 1]
    ], 3, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__PLATFORM__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-platform-off.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-platform-off.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 1,
    wire: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]
    ],
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.defaultBuilding,
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: {
        src: "img/day-platform-off.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__FRIDGE__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__STONE_CAVE__,
    itemButton: {
        src: ["img/inv-stone-cave-out.png", "img/inv-stone-cave-in.png", "img/inv-stone-cave-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Stone Cave", "Build mountains.", -1, [
        [IID.__STONE__, 140]
    ], 1, [
        [AREAS.__WORKBENCH__, 30000]
    ], 99),
    idWeapon: 21,     
    fuel: -1,
    zid: 1,
    z: 1,
    stack: 255,
    loot: LOOTID.__STONE_CAVE__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-stone-cave.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-stone-cave.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 1,
    idWall: IID.__STONE_CAVE__,
    lowWall: 0,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.wall,
    drawFloor: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    broken: [{
        src: "img/day-stone-cave-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__STONE_IMPACT__,
    destroy: SOUNDID.__STONE_DESTROY__,
    building: [{
        src: "img/day-stone-cave0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave39.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave40.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave41.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave42.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave43.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave44.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave45.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-stone-cave46.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__STONE__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 300,
    score: 0
}, {
    id: IID.__BUNKER_WALL__,
    itemButton: {
        src: ["img/inv-bunker-wall-out.png", "img/inv-bunker-wall-in.png", "img/inv-bunker-wall-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Bunker Wall", "Good old memory of the wasteland.", -1, [
        [IID.__STONE__, 150],
        [IID.__SHAPED_METAL__, 12]
    ], 1, [
        [AREAS.__WORKBENCH__, 30000]
    ], 99),
    idWeapon: 21,     
    fuel: -1,
    zid: 1,
    z: 1,
    stack: 255,
    loot: LOOTID.__BUNKER_WALL__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-bunker-wall.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-bunker-wall.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 1,
    idWall: IID.__STONE_CAVE__,
    lowWall: 0,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.wall,
    drawFloor: [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    broken: [{
        src: "img/day-bunker-wall-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/day-bunker-wall0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall39.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall40.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall41.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall42.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall43.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall44.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall45.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-bunker-wall46.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__STEEL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 10000,
    score: 0
}, {
    id: IID.__GOLD_FLOOR__,
    itemButton: {
        src: ["img/inv-mustard-floor-out.png", "img/inv-mustard-floor-in.png", "img/inv-mustard-floor-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Golden Floor", "Players can't spawn on it", SKILLS.__BUILDING__, [
        [IID.__LEATHER_BOAR__, 2]
    ], 2, [
        [AREAS.__WORKBENCH__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__GOLD_FLOOR__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: 2,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-stone-floor.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-stone-floor.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 1,
    idWall: IID.__GOLD_FLOOR__,
    lowWall: 0,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.groundFloor,
    broken: [{
        src: "img/day-mustard-floor-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__PILLOW_DESTROY__,
    building: [{
        src: "img/day-mustard-floor-0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-39.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-40.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-41.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-42.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-43.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-44.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-45.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-mustard-floor-46.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__GOLD__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 3000,
    score: 0
}, {
    id: IID.__RED_FLOOR__,
    itemButton: {
        src: ["img/inv-red-floor-out.png", "img/inv-red-floor-in.png", "img/inv-red-floor-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Red floor", "Players can't spawn on it", SKILLS.__BUILDING__, [
        [IID.__LEATHER_BOAR__, 2]
    ], 2, [
        [AREAS.__WORKBENCH__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__RED_FLOOR__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: 2,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/day-clear-blue-stone-floor.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/day-redprint-stone-floor.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 1,
    idWall: IID.__RED_FLOOR__,
    lowWall: 0,
    door: 0,
    broke: 1,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.groundFloor,
    broken: [{
        src: "img/day-red-floor-broken0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-broken1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-broken2.png",
        img: {
            isLoaded: 0
        }
    }],
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__PILLOW_DESTROY__,
    building: [{
        src: "img/day-red-floor-0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-3.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-4.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-5.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-6.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-7.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-8.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-9.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-10.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-11.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-12.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-13.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-14.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-15.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-16.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-17.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-18.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-19.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-20.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-21.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-22.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-23.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-24.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-25.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-26.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-27.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-28.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-29.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-30.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-31.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-32.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-33.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-34.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-35.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-36.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-37.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-38.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-39.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-40.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-41.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-42.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-43.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-44.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-45.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-red-floor-46.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__MUSHROOM1__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 3000,
    score: 0
}, {
    id: IID.__WELDING_MACHINE__,
    itemButton: {
        src: ["img/inv-welding-machine-out.png", "img/inv-welding-machine-in.png", "img/inv-welding-machine-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Welding Machine", "Allow you to make logic gates", SKILLS.__SURVIVAL__, [
        [IID.__JUNK__, 2],
        [IID.__SHAPED_METAL__, 4],
        [IID.__ELECTRONICS__, 1]
    ], 1, [
        [AREAS.__WORKBENCH__, 50000]
    ]),
    idWeapon: 21,     
    fuel: -1,
    zid: 0,
    z: 1,
    area: AREAS.__WELDING_MACHINE__,
    stack: 255,
    loot: LOOTID.__WELDING_MACHINE__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-welding-machine.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-welding-machine.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 1,
    areaEffect: 0,
    draw: Render.workbench,
    packetId: 16,
    interact: {
        src: "img/e-welding-machine.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: {
        src: "img/day-welding-machine.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 500,
    score: 0
}, {
    id: IID.__CABLE4__,
    itemButton: {
        src: ["img/inv-wire4-out.png", "img/inv-wire4-in.png", "img/inv-wire4-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Cable  - Bridge", "Create automatic mechanisms", SKILLS.__LOGIC__, [
        [IID.__SMALL_WIRE__, 1]
    ], 3, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__CABLE4__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-wire4.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-wire4.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 0,
    wire: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]
    ],
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.hiddenBuilding,
    impact: SOUNDID.__PILLOW_IMPACT__,
    destroy: SOUNDID.__PILLOW_DESTROY__,
    building: {
        src: "img/day-wire4.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__BARELRED__,
    particlesDist: 40,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__GATE_TIMER__,
    itemButton: {
        src: ["img/inv-timer-out.png", "img/inv-timer-in.png", "img/inv-timer-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Gate Timer", "Emit a signal regularly.", SKILLS.__LOGIC__, [
        [IID.__SHAPED_METAL__, 1],
        [IID.__SMALL_WIRE__, 1]
    ], 3, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__GATE_TIMER__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-timer.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-timer.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 1,
    wire: [
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]
    ],
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.timerGate,
    packetId: 38,
    interact: {
        src: "img/e-light.png",
        img: {
            isLoaded: 0
        }
    },
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
        src: "img/day-timer-0.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-timer-1.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-timer-2.png",
        img: {
            isLoaded: 0
        }
    }, {
        src: "img/day-timer-3.png",
        img: {
            isLoaded: 0
        }
    }],
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 250,
    score: 0
}, {
    id: IID.__GATE_XOR__,
    itemButton: {
        src: ["img/inv-xor-out.png", "img/inv-xor-in.png", "img/inv-xor-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Gate Xor", "Activate only if only one entry is on.", SKILLS.__LOGIC__, [
        [IID.__SHAPED_METAL__, 1],
        [IID.__SMALL_WIRE__, 1]
    ], 3, [
        [AREAS.__WELDING_MACHINE__, 15000]
    ]),
    stack: 255,
    loot: LOOTID.__GATE_XOR__,
    wait: 10,
    idWeapon: 21,     
    fuel: -1,
    zid: -1,
    z: 0,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
        src: "img/clear-blue-xor.png",
        img: {
            isLoaded: 0
        }
    },
    redprint: {
        src: "img/redprint-xor.png",
        img: {
            isLoaded: 0
        }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__LOGIC__,
    gate: 1,
    wire: [
        [1, 0, 0, 0],
        [0, 0, 0, 1],
        [0, 1, 0, 0],
        [0, 0, 1, 0]
    ],
    subtype: 0,
    collision: 0,
    areaEffect: 0,
    draw: Render.hiddenBuilding,
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: {
        src: "img/day-xor.png",
        img: {
            isLoaded: 0
        }
    },
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 250,
    score: 0
},

{
    id: IID.__BUILDER_1__,
    itemButton: {
        src: ["img/skill-builder1-out.png", "img/skill-builder1-in.png", "img/skill-builder1-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Builder 1", "Multiplies some craft by two", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 6, window.undefined, 2)
}, {
    id: IID.__BUILDER_2__,
    itemButton: {
        src: ["img/skill-builder2-out.png", "img/skill-builder2-in.png", "img/skill-builder2-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Builder 2", "Repair much faster", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 18, IID.__BUILDER_1__)
},



{
    id: IID.__INV_1__,
    itemButton: {
        src: ["img/skill-inv1-out.png", "img/skill-inv1-in.png", "img/skill-inv1-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Inventory 1", "Add a slot in your inventory", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 0),
    bag: 1
},

{
    id: IID.__INV_2__,
    itemButton: {
        src: ["img/skill-inv2-out.png", "img/skill-inv2-in.png", "img/skill-inv2-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Inventory 2", "Add a slot in your inventory", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 5, IID.__INV_1__),
    bag: 1
},

{
    id: IID.__INV_3__,
    itemButton: {
        src: ["img/skill-inv3-out.png", "img/skill-inv3-in.png", "img/skill-inv3-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Inventory 3", "Add a slot in your bag", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 7, IID.__INV_2__),
    bag: 1
},

{
    id: IID.__INV_4__,
    itemButton: {
        src: ["img/skill-inv4-out.png", "img/skill-inv4-in.png", "img/skill-inv4-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Inventory 4", "Add two slots in your bag", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 10, IID.__INV_3__, 2),
    bag: 2
},

{
    id: IID.__INV_5__,
    itemButton: {
        src: ["img/skill-inv5-out.png", "img/skill-inv5-in.png", "img/skill-inv5-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Inventory 5", "Add three slots in your bag", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 12, IID.__INV_4__, 3),
    bag: 3
},



    
{
    id: IID.__FEATHERWEIGHT__,
    itemButton: {
        src: ["img/skill-lightweight-out.png", "img/skill-lightweight-in.png", "img/skill-lightweight-click.png"],
        img: [{
            isLoaded: 0
        }, {
            isLoaded: 0
        }, {
            isLoaded: 0
        }]
    },
    detail: new Detail("Light Weight", "Less likely to trigger traps.", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 8)
},

{
    id: IID.__FEEDER__,
    itemButton: {
      src: ["img/inv-feeder-out.png?2", "img/inv-feeder-in.png?2", "img/inv-feeder-click.png?2"],
      img: [{
        isLoaded: 0
      }, {
        isLoaded: 0
      }, {
        isLoaded: 0
      }]
    },
    detail: new Detail("Feeder", "Allows you to feed automatically", SKILLS.__SURVIVAL__, [[IID.__ALLOYS__, 4], [IID.__SHAPED_METAL__, 20], [IID.__SHAPED_URANIUM__, 8], [IID.__SMALL_WIRE__, 4], [IID.__ELECTRONICS__, 2]], 1, [[AREAS.__TESLA__, 100000]], 12),
    idWeapon: 21,
    fuel: 180000,
    zid: 0,
    z: 1,
    area: AREAS.__FEEDER__,
    stack: 255,
    loot: LOOTID.__FEEDER__,
    wait: 10,
    delay: 1000,
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    xCenter: [0, 0, 0, 0],
    yCenter: [0, 0, 0, 0],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    blueprint: {
      src: "img/clear-blue-feeder.png?2",
      img: {
        isLoaded: 0
      }
    },
    redprint: {
      src: "img/redprint-feeder.png?2",
      img: {
        isLoaded: 0
      }
    },
    wall: 0,
    lowWall: 0,
    door: 0,
    broke: 0,
    explosion: 0,
    behavior: BEHAVIOR.__NO__,
    wire: 0,
    subtype: 0,
    collision: 0,
    areaEffect: 3,
    draw: Render.feeder,
    packetId: 16,
    interact: {
      src: "img/e-feeder.png?2",
      img: {
        isLoaded: 0
      }
    },
    impact: SOUNDID.__STEEL_IMPACT__,
    destroy: SOUNDID.__STEEL_DESTROY__,
    building: [{
      src: "img/day-feeder.png?2",
      img: {
        isLoaded: 0
      }
    }, {
      src: "img/day-feeder-rotate.png?2",
      img: {
        isLoaded: 0
      }
    }, {
      src: "img/day-feeder-off.png?2",
      img: {
        isLoaded: 0
      }
    }],
    spine: [[0, 0], [0, 0], [0, 0], [0, 0]],
    particles: PARTICLESID.__METAL__,
    particlesDist: 80,
    timelife: 315360000000,
    life: 250,
    score: 0
}
];

COUNTER = 0;
var FURNITUREID = {
    __SOFA0__:              COUNTER++,
    __SOFA1__:              COUNTER++,
    __SOFA2__:              COUNTER++,
    __SOFA3__:              COUNTER++,
    __SOFA4__:              COUNTER++,
    __BED0__:               COUNTER++,
    __BED1__:               COUNTER++,
    __TABLE0__:             COUNTER++,
    __TV0__:                COUNTER++,
    __COMPUTER0__:          COUNTER++,
    __CHAIR0__:             COUNTER++,
    __WASHBASIN0__:         COUNTER++,
    __FURNITURE0__:         COUNTER++,
    __FURNITURE1__:         COUNTER++,
    __FURNITURE2__:         COUNTER++,
    __FURNITURE3__:         COUNTER++,
    __CARTON0__:            COUNTER++,
    __CARTON1__:            COUNTER++,
    __SAFE0__:              COUNTER++,
    __FRIDGE0__:            COUNTER++,
    __FRIDGE1__:            COUNTER++,
    __TOILET0__:            COUNTER++,
    __LITTLETABLE0__:       COUNTER++,
    __PLOT0__:              COUNTER++,
    __BAREL0__:             COUNTER++,
    __BAREL1__:             COUNTER++,
    __GARBAGE0__:           COUNTER++,
    __CUPBOARD0__:          COUNTER++,
    __PHARMA0__:            COUNTER++,
    __AMMOBOX0__:           COUNTER++,
    __AMMOLOCKER0__:        COUNTER++,
    __AMMOLOCKER1__:        COUNTER++,
    __AMMOLOCKER2__:        COUNTER++,
    __MACHINE0__:           COUNTER++,
    __MACHINE1__:           COUNTER++,
    __USINE_BOX0__:         COUNTER++,
    __USINE_BOX1__:         COUNTER++,
    __USINE_BOX2__:         COUNTER++,
    __USINE_BOX3__:         COUNTER++,
    __DISTRIBUTOR0__:       COUNTER++,
    __CASH0__:              COUNTER++,
    __RENFORCED__:          COUNTER++,
    __SOFA6__:              COUNTER++,
    __GOLD_CHAIR0__:        COUNTER++,
    __GREEN_CHAIR0__:       COUNTER++,
    __WOOD_CHAIR0__:        COUNTER++,
    __TABLE1__:             COUNTER++,
    __SMALL_LIGHT__:        COUNTER++,
    __BED2__:               COUNTER++,
    __FURNITURE4__:         COUNTER++,
    __FURNITURE5__:         COUNTER++,
    __FURNITURE6__:         COUNTER++,
    __CHAIR1__:             COUNTER++,
    __CHAIR2__:             COUNTER++,
    __DISTRIBUTOR1__:       COUNTER++,
    __SHOWER0__:            COUNTER++,
    __TABLE2__:             COUNTER++,
    __BLOOD_TRANS__:        COUNTER++,
    __ENERGY_BOX0__:        COUNTER++
};

COUNTER = 0;
var ROAD = INVENTORY[IID.__ROAD__].subtype;
ROAD[COUNTER] = {
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__NO_SOUND__,
    building: {
        src: "img/day-road0.png",
        img: {
            isLoaded: 0
        }
    },
    detail: new Detail("", "", -1, [
        [IID.__STONE__, 100]
    ]),
    life: 100000000,
    score: 0,
    particles: PARTICLESID.__NOTHING__,
    particlesDist: 70,
    angle: window.Math.PI,
    usable: 0,
    fridge: 0,
    loot: null,
    collision: 0,
    z: 0,
    zid: 2,
    areaEffect: 0,
    timelife: 315360000000
};
for (var i = 0; i < 45; i++) {
    COUNTER++;
    ROAD[COUNTER] = window.JSON.parse(window.JSON.stringify(ROAD[0]));
    ROAD[COUNTER].building.src = ("img/day-road" + COUNTER) + ".png";
}
var FURNITURE = INVENTORY[IID.__FURNITURE__].subtype;
FURNITURE[FURNITUREID.__SOFA0__] = {
    width: [100, 100, 100, 100],
    height: [100, 100, 100, 100],
    _x: [0, 0, 0, 0],
    _y: [0, 0, 0, 0],
    impact: SOUNDID.__PILLOW_IMPACT__,
    destroy: SOUNDID.__PILLOW_DESTROY__,
    building: {
        src: "img/day-sofa0.png",
        img: {
            isLoaded: 0
        }
    },
    detail: new Detail("", "", -1, [
        [IID.__WOOD__, 99],
        [IID.__LEATHER_BOAR__, 9],
        [IID.__STRING__, 6]
    ]),
    life: 450,
    score: 0,
    particles: PARTICLESID.__SOFA0__,
    particlesDist: 70,
    angle: window.Math.PI,
    usable: 0,
    fridge: 0,
    loot: null,
    collision: 1,
    z: 1,
    zid: 0,
    areaEffect: 0,
    packetId: 25,
    explosion: 0,
    damage: 0,
    damageBuilding: 0,
    timelife: 315360000000
};
FURNITURE[FURNITUREID.__SOFA1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__]));
FURNITURE[FURNITUREID.__SOFA1__].building.src = "img/day-sofa1.png";
FURNITURE[FURNITUREID.__SOFA1__].particles = PARTICLESID.__SOFA1__;
FURNITURE[FURNITUREID.__SOFA2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA1__]));
FURNITURE[FURNITUREID.__SOFA2__].building.src = "img/day-sofa2.png";
FURNITURE[FURNITUREID.__SOFA3__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__]));
FURNITURE[FURNITUREID.__SOFA3__].building.src = "img/day-sofa3.png";
FURNITURE[FURNITUREID.__SOFA3__].particles = PARTICLESID.__SOFA2__;
FURNITURE[FURNITUREID.__SOFA4__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA3__]));
FURNITURE[FURNITUREID.__SOFA4__].building.src = "img/day-sofa4.png";
FURNITURE[FURNITUREID.__SOFA6__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA3__]));
FURNITURE[FURNITUREID.__SOFA6__].building.src = "img/day-sofa6.png";
FURNITURE[FURNITUREID.__RENFORCED__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__]));
FURNITURE[FURNITUREID.__RENFORCED__].building.src = "img/day-renforced-door.png";
FURNITURE[FURNITUREID.__RENFORCED__].particles = PARTICLESID.__STEEL__;
FURNITURE[FURNITUREID.__RENFORCED__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 40]
]);
FURNITURE[FURNITUREID.__RENFORCED__].life = 7000;
FURNITURE[FURNITUREID.__MACHINE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__]));
FURNITURE[FURNITUREID.__MACHINE0__].building.src = "img/day-electronic-box0.png";
FURNITURE[FURNITUREID.__MACHINE0__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__MACHINE0__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__MACHINE0__].particles = PARTICLESID.__STEEL__;
FURNITURE[FURNITUREID.__MACHINE0__].detail = new Detail("", "", -1, [
    [IID.__ENERGY_CELLS__, 8],
    [IID.__ELECTRONICS__, 4],
    [IID.__SHAPED_METAL__, 4],
    [IID.__JUNK__, 12]
]);
FURNITURE[FURNITUREID.__MACHINE0__].width = [100, 100, 100, 100];
FURNITURE[FURNITUREID.__MACHINE0__].height = [100, 100, 100, 100];
FURNITURE[FURNITUREID.__MACHINE0__]._x = [0, 0, 0, 0];
FURNITURE[FURNITUREID.__MACHINE0__]._y = [0, 0, 0, 0];
FURNITURE[FURNITUREID.__MACHINE0__].life = 800;
FURNITURE[FURNITUREID.__MACHINE1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__MACHINE0__]));
FURNITURE[FURNITUREID.__MACHINE1__].building.src = "img/day-electronic-box1.png";
FURNITURE[FURNITUREID.__MACHINE1__].width = [120, 120, 120, 120];
FURNITURE[FURNITUREID.__MACHINE1__].height = [120, 120, 120, 120];
FURNITURE[FURNITUREID.__MACHINE1__]._x = [-10, -10, -10, -10];
FURNITURE[FURNITUREID.__MACHINE1__]._y = [-10, -10, -10, -10];
FURNITURE[FURNITUREID.__MACHINE1__].detail = new Detail("", "", -1, [
    [IID.__ENERGY_CELLS__, 16],
    [IID.__ELECTRONICS__, 16],
    [IID.__WIRE__, 8],
    [IID.__SHAPED_METAL__, 16]
]);
FURNITURE[FURNITUREID.__MACHINE1__].life = 1400;
FURNITURE[FURNITUREID.__BED0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__]));
FURNITURE[FURNITUREID.__BED0__].building.src = "img/day-bed0.png";
FURNITURE[FURNITUREID.__BED0__].particles = PARTICLESID.__BED0__;
FURNITURE[FURNITUREID.__BED0__].detail = new Detail("", "", -1, [
    [IID.__WOOD__, 200],
    [IID.__LEATHER_BOAR__, 20]
]);
FURNITURE[FURNITUREID.__BED1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__BED0__]));
FURNITURE[FURNITUREID.__BED1__].building.src = "img/day-bed1.png";
FURNITURE[FURNITUREID.__BED1__].particles = PARTICLESID.__BED1__;
FURNITURE[FURNITUREID.__BED2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__BED0__]));
FURNITURE[FURNITUREID.__BED2__].building.src = "img/day-bed2.png";
FURNITURE[FURNITUREID.__BED2__].particles = PARTICLESID.__GREY_STEEL__;
FURNITURE[FURNITUREID.__BED2__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 12],
    [IID.__LEATHER_BOAR__, 20],
    [IID.__ANIMAL_FAT__, 12]
]);
FURNITURE[FURNITUREID.__TABLE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__]));
FURNITURE[FURNITUREID.__TABLE0__].building.src = "img/day-table0.png";
FURNITURE[FURNITUREID.__TABLE0__].impact = SOUNDID.__WOOD_IMPACT__;
FURNITURE[FURNITUREID.__TABLE0__].destroy = SOUNDID.__WOOD_DESTROY__;
FURNITURE[FURNITUREID.__TABLE0__].particles = PARTICLESID.__WOOD__;
FURNITURE[FURNITUREID.__TABLE0__].detail = new Detail("", "", -1, [
    [IID.__WOOD__, 200]
]);
FURNITURE[FURNITUREID.__TABLE1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__TABLE0__]));
FURNITURE[FURNITUREID.__TABLE1__].building.src = "img/day-table1.png";
FURNITURE[FURNITUREID.__TABLE1__].width = [100, 290, 100, 280];
FURNITURE[FURNITUREID.__TABLE1__].height = [280, 100, 280, 100];
FURNITURE[FURNITUREID.__TABLE1__].iTile = [-1, 0, -1, 0];
FURNITURE[FURNITUREID.__TABLE1__].jTile = [0, -1, 0, -1];
FURNITURE[FURNITUREID.__TABLE1__]._x = [0, -90, 0, -90];
FURNITURE[FURNITUREID.__TABLE1__]._y = [-90, 0, -90, 0];
FURNITURE[FURNITUREID.__TABLE2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__TABLE0__]));
FURNITURE[FURNITUREID.__TABLE2__].building.src = "img/day-table2.png";
FURNITURE[FURNITUREID.__TABLE2__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__TABLE2__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__TABLE2__].particles = PARTICLESID.__STEEL__;
FURNITURE[FURNITUREID.__TABLE2__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 8]
]);
FURNITURE[FURNITUREID.__TV0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__]));
FURNITURE[FURNITUREID.__TV0__].building.src = "img/day-tv0.png";
FURNITURE[FURNITUREID.__TV0__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__TV0__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__TV0__].particles = PARTICLESID.__SAFE0__;
FURNITURE[FURNITUREID.__TV0__].detail = new Detail("", "", -1, [
    [IID.__ELECTRONICS__, 4],
    [IID.__SHAPED_METAL__, 16],
    [IID.__SMALL_WIRE__, 4],
    [IID.__JUNK__, 12]
]);
FURNITURE[FURNITUREID.__COMPUTER0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__]));
FURNITURE[FURNITUREID.__COMPUTER0__].building.src = "img/day-computer0.png";
FURNITURE[FURNITUREID.__COMPUTER0__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__COMPUTER0__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__COMPUTER0__].particles = PARTICLESID.__METAL__;
FURNITURE[FURNITUREID.__COMPUTER0__].detail = new Detail("", "", -1, [
    [IID.__SMALL_WIRE__, 4],
    [IID.__SHAPED_METAL__, 16],
    [IID.__JUNK__, 12],
    [IID.__ELECTRONICS__, 4]
]);
FURNITURE[FURNITUREID.__CHAIR0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__COMPUTER0__]));
FURNITURE[FURNITUREID.__CHAIR0__].building.src = "img/day-chair0.png";
FURNITURE[FURNITUREID.__CHAIR0__].detail = new Detail("", "", -1, [
    [IID.__LEATHER_BOAR__, 8],
    [IID.__SHAPED_METAL__, 8]
]);
FURNITURE[FURNITUREID.__CHAIR1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__COMPUTER0__]));
FURNITURE[FURNITUREID.__CHAIR1__].building.src = "img/day-chair1.png";
FURNITURE[FURNITUREID.__CHAIR1__].detail = new Detail("", "", -1, [
    [IID.__LEATHER_BOAR__, 8],
    [IID.__SHAPED_METAL__, 8]
]);
FURNITURE[FURNITUREID.__CHAIR2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__COMPUTER0__]));
FURNITURE[FURNITUREID.__CHAIR2__].building.src = "img/day-chair2.png";
FURNITURE[FURNITUREID.__CHAIR2__].detail = new Detail("", "", -1, [
    [IID.__LEATHER_BOAR__, 8],
    [IID.__SHAPED_METAL__, 8]
]);
FURNITURE[FURNITUREID.__WASHBASIN0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__]));
FURNITURE[FURNITUREID.__WASHBASIN0__].building.src = "img/day-washbasin0.png";
FURNITURE[FURNITUREID.__WASHBASIN0__].impact = SOUNDID.__WOOD_IMPACT__;
FURNITURE[FURNITUREID.__WASHBASIN0__].destroy = SOUNDID.__WOOD_DESTROY__;
FURNITURE[FURNITUREID.__WASHBASIN0__].particles = PARTICLESID.__WOODLIGHT__;
FURNITURE[FURNITUREID.__WASHBASIN0__].detail = new Detail("", "", -1, [
    [IID.__WOOD__, 150],
    [IID.__SHAPED_METAL__, 8]
]);
FURNITURE[FURNITUREID.__PHARMA0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__WASHBASIN0__]));
FURNITURE[FURNITUREID.__PHARMA0__].building.src = "img/day-pharma0.png";
FURNITURE[FURNITUREID.__PHARMA0__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 8],
    [IID.__STONE__, 60]
]);
FURNITURE[FURNITUREID.__PHARMA0__].impact = SOUNDID.__STONE_IMPACT__;
FURNITURE[FURNITUREID.__PHARMA0__].destroy = SOUNDID.__STONE_DESTROY__;
FURNITURE[FURNITUREID.__PHARMA0__].particles = PARTICLESID.__TOILET__;
FURNITURE[FURNITUREID.__PHARMA0__].usable = 1;
FURNITURE[FURNITUREID.__PHARMA0__].loot = [
    [IID.__BANDAGE__, 1, 0.1],
    [IID.__MEDIKIT__, 1, 0.03],
    [IID.__RADAWAY__, 1, 0.05],
    [IID.__CHEMICAL_COMPONENT__, 2, 0.2],
    [IID.__SYRINGE__, 1, 0.1]
];
FURNITURE[FURNITUREID.__SHOWER0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__WASHBASIN0__]));
FURNITURE[FURNITUREID.__SHOWER0__].building.src = "img/day-shower0.png";
FURNITURE[FURNITUREID.__SHOWER0__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 8],
    [IID.__STONE__, 60]
]);
FURNITURE[FURNITUREID.__SHOWER0__].impact = SOUNDID.__STONE_IMPACT__;
FURNITURE[FURNITUREID.__SHOWER0__].destroy = SOUNDID.__STONE_DESTROY__;
FURNITURE[FURNITUREID.__SHOWER0__].particles = PARTICLESID.__TOILET__;
FURNITURE[FURNITUREID.__SHOWER0__].width = [70, 100, 70, 100];
FURNITURE[FURNITUREID.__SHOWER0__].height = [100, 70, 100, 70];
FURNITURE[FURNITUREID.__SHOWER0__]._x = [0, 0, 30, 0];
FURNITURE[FURNITUREID.__SHOWER0__]._y = [0, 0, 0, 30];
FURNITURE[FURNITUREID.__FURNITURE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__WASHBASIN0__]));
FURNITURE[FURNITUREID.__FURNITURE0__].building.src = "img/day-furniture0.png";
FURNITURE[FURNITUREID.__FURNITURE0__].width = [50, 100, 50, 100];
FURNITURE[FURNITUREID.__FURNITURE0__].height = [100, 50, 100, 50];
FURNITURE[FURNITUREID.__FURNITURE0__]._x = [0, 0, 50, 0];
FURNITURE[FURNITUREID.__FURNITURE0__]._y = [0, 0, 0, 50];
FURNITURE[FURNITUREID.__FURNITURE0__].detail = new Detail("", "", -1, [
    [IID.__WOOD__, 200]
]);
FURNITURE[FURNITUREID.__FURNITURE0__].usable = 1;
FURNITURE[FURNITUREID.__FURNITURE0__].loot = [
    [IID.__HEADSCARF__, 1, 0.004],
    [IID.__GAZ_MASK__, 1, 0.004],
    [IID.__9MM__, 1, 0.005],
    [IID.__BULLET_9MM__, 30, 0.02],
    [IID.__BANDAGE__, 1, 0.05],
    [IID.__SEED_TOMATO__, 1, 0.08],
    [IID.__NAILS__, 40, 0.1],
    [IID.__SEED_ORANGE__, 2, 0.1],
    [IID.__SLEEPING_BAG__, 1, 0.01],
    [IID.__ENERGY_CELLS__, 4, 0.05],
    [IID.__JUNK__, 1, 0.2],
    [IID.__STRING__, 2, 0.1]
];
FURNITURE[FURNITUREID.__FURNITURE1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__]));
FURNITURE[FURNITUREID.__FURNITURE1__].building.src = "img/day-furniture1.png";
FURNITURE[FURNITUREID.__FURNITURE1__].width = [70, 100, 70, 100];
FURNITURE[FURNITUREID.__FURNITURE1__].height = [100, 70, 100, 70];
FURNITURE[FURNITUREID.__FURNITURE1__]._x = [0, 0, 30, 0];
FURNITURE[FURNITUREID.__FURNITURE1__]._y = [0, 0, 0, 30];
FURNITURE[FURNITUREID.__FURNITURE2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__]));
FURNITURE[FURNITUREID.__FURNITURE2__].building.src = "img/day-furniture2.png";
FURNITURE[FURNITUREID.__FURNITURE2__].width = [70, 70, 70, 70];
FURNITURE[FURNITUREID.__FURNITURE2__].height = [70, 70, 70, 70];
FURNITURE[FURNITUREID.__FURNITURE2__]._x = [15, 15, 15, 15];
FURNITURE[FURNITUREID.__FURNITURE2__]._y = [15, 15, 15, 15];
FURNITURE[FURNITUREID.__FURNITURE2__].detail = new Detail("", "", -1, [
    [IID.__WOOD__, 100]
]);
FURNITURE[FURNITUREID.__FURNITURE3__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__]));
FURNITURE[FURNITUREID.__FURNITURE3__].building.src = "img/day-furniture3.png";
FURNITURE[FURNITUREID.__FURNITURE4__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE1__]));
FURNITURE[FURNITUREID.__FURNITURE4__].building.src = "img/day-furniture4.png";
FURNITURE[FURNITUREID.__FURNITURE4__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__FURNITURE4__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__FURNITURE4__].particles = PARTICLESID.__GREY_STEEL__;
FURNITURE[FURNITUREID.__FURNITURE4__].loot = [
    [IID.__HEADSCARF__, 1, 0.004],
    [IID.__GAZ_MASK__, 1, 0.004],
    [IID.__9MM__, 1, 0.005],
    [IID.__BULLET_9MM__, 30, 0.02],
    [IID.__BANDAGE__, 1, 0.05],
    [IID.__SMALL_WIRE__, 4, 0.1],
    [IID.__LAMP__, 1, 0.08],
    [IID.__PLATFORM__, 1, 0.08],
    [IID.__SLEEPING_BAG__, 1, 0.01],
    [IID.__ENERGY_CELLS__, 8, 0.05],
    [IID.__JUNK__, 2, 0.2],
    [IID.__STRING__, 2, 0.1]
];
FURNITURE[FURNITUREID.__FURNITURE5__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__]));
FURNITURE[FURNITUREID.__FURNITURE5__].building.src = "img/day-furniture5.png";
FURNITURE[FURNITUREID.__FURNITURE5__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__FURNITURE5__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__FURNITURE5__].particles = PARTICLESID.__GREY_STEEL__;
FURNITURE[FURNITUREID.__FURNITURE5__].loot = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE4__].loot));
FURNITURE[FURNITUREID.__FURNITURE6__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE5__]));
FURNITURE[FURNITUREID.__FURNITURE6__].building.src = "img/day-furniture6.png";
FURNITURE[FURNITUREID.__CARTON0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__]));
FURNITURE[FURNITUREID.__CARTON0__].impact = SOUNDID.__PILLOW_IMPACT__;
FURNITURE[FURNITUREID.__CARTON0__].destroy = SOUNDID.__PILLOW_DESTROY__;
FURNITURE[FURNITUREID.__CARTON0__].building.src = "img/day-carton-box0.png";
FURNITURE[FURNITUREID.__CARTON0__].detail = new Detail("", "", -1, []);
FURNITURE[FURNITUREID.__CARTON0__].usable = 1;
FURNITURE[FURNITUREID.__CARTON0__].loot = [
    [IID.__CAN__, 1, 0.1],
    [IID.__JUNK__, 2, 0.2],
    [IID.__HEADSCARF__, 1, 0.003],
    [IID.__GAZ_MASK__, 1, 0.003],
    [IID.__NAIL_GUN__, 1, 0.01],
    [IID.__9MM__, 1, 0.005],
    [IID.__BULLET_9MM__, 30, 0.02],
    [IID.__BANDAGE__, 1, 0.08],
    [IID.__SEED_TOMATO__, 1, 0.1],
    [IID.__NAILS__, 40, 0.02],
    [IID.__SEED_ORANGE__, 2, 0.1],
    [IID.__ENERGY_CELLS__, 4, 0.08],
    [IID.__ELECTRONICS__, 1, 0.1]
];
FURNITURE[FURNITUREID.__CARTON1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__CARTON0__]));
FURNITURE[FURNITUREID.__CARTON1__].building.src = "img/day-carton-box1.png";
FURNITURE[FURNITUREID.__GOLD_CHAIR0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__CARTON0__]));
FURNITURE[FURNITUREID.__GOLD_CHAIR0__].building.src = "img/day-gold-chair0.png";
FURNITURE[FURNITUREID.__GOLD_CHAIR0__].detail = new Detail("", "", -1, [
    [IID.__WOOD__, 40]
]);
FURNITURE[FURNITUREID.__GOLD_CHAIR0__].usable = 0;
FURNITURE[FURNITUREID.__GOLD_CHAIR0__].particles = PARTICLESID.__GOLD__;
FURNITURE[FURNITUREID.__GREEN_CHAIR0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__GOLD_CHAIR0__]));
FURNITURE[FURNITUREID.__GREEN_CHAIR0__].building.src = "img/day-green-chair0.png";
FURNITURE[FURNITUREID.__GREEN_CHAIR0__].particles = PARTICLESID.__KAKI__;
FURNITURE[FURNITUREID.__WOOD_CHAIR0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__GOLD_CHAIR0__]));
FURNITURE[FURNITUREID.__WOOD_CHAIR0__].building.src = "img/day-wood-chair0.png";
FURNITURE[FURNITUREID.__WOOD_CHAIR0__].impact = SOUNDID.__WOOD_IMPACT__;
FURNITURE[FURNITUREID.__WOOD_CHAIR0__].destroy = SOUNDID.__WOOD_DESTROY__;
FURNITURE[FURNITUREID.__WOOD_CHAIR0__].particles = PARTICLESID.__WOODLIGHT__;
FURNITURE[FURNITUREID.__PLOT0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__]));
FURNITURE[FURNITUREID.__PLOT0__].building.src = "img/day-plot0.png";
FURNITURE[FURNITUREID.__PLOT0__].particles = PARTICLESID.__PLOT__;
FURNITURE[FURNITUREID.__PLOT0__].collision = 2;
FURNITURE[FURNITUREID.__PLOT0__].radius = 30;
FURNITURE[FURNITUREID.__PLOT0__].detail = new Detail("", "", -1, [
    [IID.__STONE__, 40],
    [IID.__WOOD__, 40]
]);
FURNITURE[FURNITUREID.__PLOT0__].usable = 0;
FURNITURE[FURNITUREID.__BLOOD_TRANS__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__PLOT0__]));
FURNITURE[FURNITUREID.__BLOOD_TRANS__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__BLOOD_TRANS__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__BLOOD_TRANS__].building.src = "img/day-blood-transfusion.png";
FURNITURE[FURNITUREID.__BLOOD_TRANS__].particles = PARTICLESID.__GREY_STEEL__;
FURNITURE[FURNITUREID.__BLOOD_TRANS__].detail = new Detail("", "", -1, [
    [IID.__JUNK__, 2],
    [IID.__SHAPED_METAL__, 1],
    [IID.__SYRINGE__, 1]
]);
FURNITURE[FURNITUREID.__BAREL0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__]));
FURNITURE[FURNITUREID.__BAREL0__].building.src = "img/day-barel0.png";
FURNITURE[FURNITUREID.__BAREL0__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__BAREL0__].destroy = SOUNDID.__NO_SOUND__;
FURNITURE[FURNITUREID.__BAREL0__].particles = PARTICLESID.__BARELRED__;
FURNITURE[FURNITUREID.__BAREL0__].explosion = 1;
FURNITURE[FURNITUREID.__BAREL0__].damage = 250;
FURNITURE[FURNITUREID.__BAREL0__].damageBuilding = 5000;
FURNITURE[FURNITUREID.__BAREL0__].collision = 2;
FURNITURE[FURNITUREID.__BAREL0__].radius = 30;
FURNITURE[FURNITUREID.__BAREL0__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 8]
]);
FURNITURE[FURNITUREID.__BAREL0__].usable = 1;
FURNITURE[FURNITUREID.__BAREL0__].life = 100;
FURNITURE[FURNITUREID.__BAREL0__].loot = [
    [IID.__GASOLINE__, 1, 0.2]
];
FURNITURE[FURNITUREID.__BAREL1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__]));
FURNITURE[FURNITUREID.__BAREL1__].building.src = "img/day-barel1.png";
FURNITURE[FURNITUREID.__BAREL1__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__BAREL1__].destroy = SOUNDID.__NO_SOUND__;
FURNITURE[FURNITUREID.__BAREL1__].particles = PARTICLESID.__BARELGREEN__;
FURNITURE[FURNITUREID.__BAREL1__].explosion = 1;
FURNITURE[FURNITUREID.__BAREL1__].damage = 300;
FURNITURE[FURNITUREID.__BAREL1__].damageBuilding = 10000;
FURNITURE[FURNITUREID.__BAREL1__].collision = 2;
FURNITURE[FURNITUREID.__BAREL1__].radius = 30;
FURNITURE[FURNITUREID.__BAREL1__].life = 300;
FURNITURE[FURNITUREID.__BAREL1__].detail = new Detail("", "", -1, [
    [IID.__URANIUM__, 8],
    [IID.__SHAPED_METAL__, 8]
]);
FURNITURE[FURNITUREID.__BAREL1__].usable = 0;
FURNITURE[FURNITUREID.__BAREL1__].areaEffect = __RADIATION__;
FURNITURE[FURNITUREID.__GARBAGE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__]));
FURNITURE[FURNITUREID.__GARBAGE0__].building.src = "img/day-garbage-bag0.png";
FURNITURE[FURNITUREID.__GARBAGE0__].impact = SOUNDID.__PILLOW_IMPACT__;
FURNITURE[FURNITUREID.__GARBAGE0__].destroy = SOUNDID.__PILLOW_DESTROY__;
FURNITURE[FURNITUREID.__GARBAGE0__].particles = PARTICLESID.__GARBAGE0__;
FURNITURE[FURNITUREID.__GARBAGE0__].collision = 2;
FURNITURE[FURNITUREID.__GARBAGE0__].radius = 30;
FURNITURE[FURNITUREID.__GARBAGE0__].detail = new Detail("", "", -1, []);
FURNITURE[FURNITUREID.__GARBAGE0__].loot = [
    [IID.__CAN__, 1, 0.08],
    [IID.__SYRINGE__, 1, 0.05],
    [IID.__GAZ_MASK__, 1, 0.02],
    [IID.__9MM__, 1, 0.01],
    [IID.__BULLET_9MM__, 30, 0.02],
    [IID.__NAILS__, 40, 0.1],
    [IID.__SEED_ORANGE__, 2, 0.1],
    [IID.__SEED_TOMATO__, 1, 0.1],
    [IID.__ROTTEN_TOMATO__, 1, 0.15],
    [IID.__ROTTEN_ORANGE__, 1, 0.15],
    [IID.__ROTTEN_STEAK__, 1, 0.15],
    [IID.__JUNK__, 3, 0.4]
];
FURNITURE[FURNITUREID.__FRIDGE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__]));
FURNITURE[FURNITUREID.__FRIDGE0__].building.src = "img/day-fridge0.png";
FURNITURE[FURNITUREID.__FRIDGE0__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__FRIDGE0__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__FRIDGE0__].particles = PARTICLESID.__METAL__;
FURNITURE[FURNITUREID.__FRIDGE0__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 16],
    [IID.__SULFUR__, 16]
]);
FURNITURE[FURNITUREID.__FRIDGE0__].fridge = 1;
FURNITURE[FURNITUREID.__FRIDGE0__].loot = [
    [IID.__SODA__, 1, 0.1],
    [IID.__TOMATO_SOUP__, 1, 0.1],
    [IID.__CRISPS__, 1, 0.01],
    [IID.__ROTTEN_TOMATO__, 1, 0.15],
    [IID.__ROTTEN_ORANGE__, 1, 0.15],
    [IID.__ROTTEN_STEAK__, 1, 0.15],
    [IID.__ROTTEN_CRISPS__, 1, 0.01]
];
FURNITURE[FURNITUREID.__FRIDGE1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FRIDGE0__]));
FURNITURE[FURNITUREID.__FRIDGE1__].building.src = "img/day-fridge1.png";
FURNITURE[FURNITUREID.__FRIDGE1__].particles = PARTICLESID.__FRIDGE__;
FURNITURE[FURNITUREID.__DISTRIBUTOR0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__]));
FURNITURE[FURNITUREID.__DISTRIBUTOR0__].building.src = "img/day-vending-machine0.png";
FURNITURE[FURNITUREID.__DISTRIBUTOR0__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__DISTRIBUTOR0__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__DISTRIBUTOR0__].particles = PARTICLESID.__RED_STEEL__;
FURNITURE[FURNITUREID.__DISTRIBUTOR0__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 16],
    [IID.__SULFUR__, 16]
]);
FURNITURE[FURNITUREID.__DISTRIBUTOR0__].fridge = 1;
FURNITURE[FURNITUREID.__DISTRIBUTOR0__].loot = [
    [IID.__SODA__, 1, 0.04],
    [IID.__CRISPS__, 1, 0.04]
];
FURNITURE[FURNITUREID.__DISTRIBUTOR1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__DISTRIBUTOR0__]));
FURNITURE[FURNITUREID.__DISTRIBUTOR1__].building.src = "img/day-distributor0.png";
FURNITURE[FURNITUREID.__DISTRIBUTOR1__].particles = PARTICLESID.__GREY_STEEL__;
FURNITURE[FURNITUREID.__DISTRIBUTOR1__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 16],
    [IID.__SULFUR__, 16]
]);
FURNITURE[FURNITUREID.__DISTRIBUTOR1__].fridge = 1;
FURNITURE[FURNITUREID.__DISTRIBUTOR1__].loot = [
    [IID.__SODA__, 1, 0.04],
    [IID.__CRISPS__, 1, 0.04],
    [IID.__TOMATO_SOUP__, 1, 0.04]
];
FURNITURE[FURNITUREID.__CASH0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE1__]));
FURNITURE[FURNITUREID.__CASH0__].building.src = "img/day-cash-machine0.png";
FURNITURE[FURNITUREID.__CASH0__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__CASH0__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__CASH0__].particles = PARTICLESID.__GREY_STEEL__;
FURNITURE[FURNITUREID.__CASH0__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 16],
    [IID.__ELECTRONICS__, 4]
]);
FURNITURE[FURNITUREID.__CASH0__].loot = [
    [IID.__JUNK__, 1, 0.05]
];
FURNITURE[FURNITUREID.__CUPBOARD0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__]));
FURNITURE[FURNITUREID.__CUPBOARD0__].building.src = "img/day-cupboard0.png";
FURNITURE[FURNITUREID.__CUPBOARD0__].particles = PARTICLESID.__WOOD__;
FURNITURE[FURNITUREID.__USINE_BOX0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__]));
FURNITURE[FURNITUREID.__USINE_BOX0__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__USINE_BOX0__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__USINE_BOX0__].building.src = "img/day-electronic-box2.png";
FURNITURE[FURNITUREID.__USINE_BOX0__].particles = PARTICLESID.__STEEL__;
FURNITURE[FURNITUREID.__USINE_BOX0__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 16]
]);
FURNITURE[FURNITUREID.__USINE_BOX0__].width = [70, 70, 70, 70];
FURNITURE[FURNITUREID.__USINE_BOX0__].height = [70, 70, 70, 70];
FURNITURE[FURNITUREID.__USINE_BOX0__]._x = [15, 15, 15, 15];
FURNITURE[FURNITUREID.__USINE_BOX0__]._y = [15, 15, 15, 15];
FURNITURE[FURNITUREID.__USINE_BOX0__].loot = [
    [IID.__ELECTRONICS__, 2, 0.1],
    [IID.__JUNK__, 2, 0.1],
    [IID.__ENERGY_CELLS__, 20, 0.05],
    [IID.__SYRINGE__, 2, 0.1],
    [IID.__CHEMICAL_COMPONENT__, 4, 0.1],
    [IID.__RADAWAY__, 1, 0.03],
    [IID.__ALLOYS__, 1, 0.01]
];
FURNITURE[FURNITUREID.__USINE_BOX1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__USINE_BOX0__]));
FURNITURE[FURNITUREID.__USINE_BOX1__].building.src = "img/day-electronic-box3.png";
FURNITURE[FURNITUREID.__USINE_BOX1__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 16],
    [IID.__ELECTRONICS__, 4]
]);
if (window.NVMWV) {
    var NwvwW = window['Math'].acos;
    window['Math'].acos = window['Math'].asin;
    window['Math'].asin = NwvwW;
};
FURNITURE[FURNITUREID.__USINE_BOX1__].loot = [
    [IID.__ELECTRONICS__, 2, 0.1],
    [IID.__JUNK__, 4, 0.1],
    [IID.__ENERGY_CELLS__, 20, 0.05],
    [IID.__WIRE__, 1, 0.03],
    [IID.__SHAPED_URANIUM__, 5, 0.01],
    [IID.__RADAWAY__, 2, 0.1],
    [IID.__SYRINGE__, 3, 0.1],
    [IID.__CHEMICAL_COMPONENT__, 5, 0.1],
    [IID.__LASER_PISTOL__, 1, 0.005],
    [IID.__ALLOYS__, 2, 0.05]
];
FURNITURE[FURNITUREID.__ENERGY_BOX0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__USINE_BOX1__]));
FURNITURE[FURNITUREID.__ENERGY_BOX0__].building.src = "img/day-energy-box0.png";
FURNITURE[FURNITUREID.__ENERGY_BOX0__].particles = PARTICLESID.__KAKI__;
FURNITURE[FURNITUREID.__ENERGY_BOX0__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 16],
    [IID.__ELECTRONICS__, 4]
]);
FURNITURE[FURNITUREID.__ENERGY_BOX0__].loot = [
    [IID.__ELECTRONICS__, 2, 0.1],
    [IID.__JUNK__, 4, 0.1],
    [IID.__ENERGY_CELLS__, 20, 0.05],
    [IID.__SMALL_WIRE__, 8, 0.03],
    [IID.__SHAPED_URANIUM__, 5, 0.01],
    [IID.__RADAWAY__, 2, 0.1],
    [IID.__SYRINGE__, 3, 0.1],
    [IID.__CHEMICAL_COMPONENT__, 5, 0.1],
    [IID.__LASER_PISTOL__, 1, 0.005],
    [IID.__ALLOYS__, 2, 0.05]
];
FURNITURE[FURNITUREID.__USINE_BOX2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__USINE_BOX0__]));
FURNITURE[FURNITUREID.__USINE_BOX2__].building.src = "img/day-electronic-box4.png";
FURNITURE[FURNITUREID.__USINE_BOX2__].loot = [
    [IID.__ELECTRONICS__, 2, 0.1],
    [IID.__JUNK__, 4, 0.1],
    [IID.__ENERGY_CELLS__, 20, 0.05],
    [IID.__WIRE__, 1, 0.03],
    [IID.__SHAPED_URANIUM__, 2, 0.01],
    [IID.__RADAWAY__, 1, 0.1],
    [IID.__SYRINGE__, 3, 0.1],
    [IID.__CHEMICAL_COMPONENT__, 5, 0.1],
    [IID.__ALLOYS__, 1, 0.01],
    [IID.__DYNAMITE__, 1, 0.008]
];
FURNITURE[FURNITUREID.__USINE_BOX3__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__USINE_BOX0__]));
FURNITURE[FURNITUREID.__USINE_BOX3__].building.src = "img/day-electronic-box5.png";
FURNITURE[FURNITUREID.__AMMOBOX0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__]));
FURNITURE[FURNITUREID.__AMMOBOX0__].building.src = "img/day-ammo-box.png";
FURNITURE[FURNITUREID.__AMMOBOX0__].particles = PARTICLESID.__WOODLIGHT__;
FURNITURE[FURNITUREID.__AMMOBOX0__].loot = [
    [IID.__MP5__, 1, 0.001], 
    [IID.__AK47__, 1, 0.001], 
    [IID.__SHOTGUN__, 1, 0.001], 
    [IID.__SAWED_OFF_SHOTGUN__, 1, 0.001], 
    [IID.__DESERT_EAGLE__, 1, 0.001], 
    [IID.__SNIPER__, 1, 0.001],
    [IID.__BULLET_SNIPER__, 50, 0.01],
    [IID.__ENERGY_CELLS__, 20, 0.01],
    [IID.__LASER_PISTOL__, 1, 0.0008],
    [IID.__DYNAMITE__, 2, 0.005],
    [IID.__C4__, 1, 0.001],
    [IID.__C4_TRIGGER__, 1, 0.001],
    [IID.__LANDMINE__, 3, 0.005],
    [IID.__BULLET_SHOTGUN__, 30, 0.01],
    [IID.__9MM__, 1, 0.003],
    [IID.__BULLET_9MM__, 50, 0.01],
    [IID.__WOOD_CROSSBOW__, 1, 0.003],
    [IID.__WOOD_CROSSARROW__, 50, 0.01],
    [IID.__STONE_AXE__, 1, 0.005],
    [IID.__ARMOR_PHYSIC_1__, 1, 0.005],
    [IID.__ARMOR_PHYSIC_2__, 1, 0.002],
    [IID.__ARMOR_PHYSIC_3__, 1, 0.001],
    [IID.__ARMOR_FIRE_1__, 1, 0.005],
    [IID.__ARMOR_FIRE_2__, 1, 0.002],
    [IID.__ARMOR_FIRE_3__, 1, 0.001],
    [IID.__ARMOR_TESLA_1__, 1, 0.002],
    [IID.__ARMOR_TESLA_2__, 1, 0.001],
    [IID.__LAPADONE__, 1, 0.0005],
    [IID.__LASER_SUBMACHINE__, 1, 0.0005]
];
FURNITURE[FURNITUREID.__AMMOLOCKER1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__AMMOBOX0__]));
FURNITURE[FURNITUREID.__AMMOLOCKER1__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__AMMOLOCKER1__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__AMMOLOCKER1__].building.src = "img/day-ammo-locker1.png";
FURNITURE[FURNITUREID.__AMMOLOCKER1__].particles = PARTICLESID.__GREY_STEEL__;
FURNITURE[FURNITUREID.__AMMOLOCKER1__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 32],
    [IID.__SULFUR__, 12]
]);
FURNITURE[FURNITUREID.__AMMOLOCKER2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__AMMOBOX0__]));
FURNITURE[FURNITUREID.__AMMOLOCKER2__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__AMMOLOCKER2__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__AMMOLOCKER2__].building.src = "img/day-ammo-locker2.png";
FURNITURE[FURNITUREID.__AMMOLOCKER2__].particles = PARTICLESID.__GREY_STEEL__;
FURNITURE[FURNITUREID.__AMMOLOCKER2__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 32],
    [IID.__SULFUR__, 12]
]);
FURNITURE[FURNITUREID.__AMMOLOCKER0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__AMMOBOX0__]));
FURNITURE[FURNITUREID.__AMMOLOCKER0__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__AMMOLOCKER0__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__AMMOLOCKER0__].building.src = "img/day-ammo-locker0.png";
FURNITURE[FURNITUREID.__AMMOLOCKER0__].particles = PARTICLESID.__BLUE_STEEL__;
FURNITURE[FURNITUREID.__AMMOLOCKER0__].width = [70, 50, 70, 50];
FURNITURE[FURNITUREID.__AMMOLOCKER0__].height = [50, 70, 50, 70];
FURNITURE[FURNITUREID.__AMMOLOCKER0__]._x = [0, 25, 30, 25];
FURNITURE[FURNITUREID.__AMMOLOCKER0__]._y = [25, 0, 25, 30];
FURNITURE[FURNITUREID.__AMMOLOCKER0__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 32],
    [IID.__SULFUR__, 12]
]);
FURNITURE[FURNITUREID.__SAFE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__]));
FURNITURE[FURNITUREID.__SAFE0__].impact = SOUNDID.__STEEL_IMPACT__;
FURNITURE[FURNITUREID.__SAFE0__].destroy = SOUNDID.__STEEL_DESTROY__;
FURNITURE[FURNITUREID.__SAFE0__].building.src = "img/day-safe0.png";
FURNITURE[FURNITUREID.__SAFE0__].particles = PARTICLESID.__SAFE0__;
FURNITURE[FURNITUREID.__SAFE0__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 32],
    [IID.__SULFUR__, 32]
]);
FURNITURE[FURNITUREID.__SAFE0__].loot = [
    [IID.__CHAPKA__, 1, 0.008],
    [IID.__WINTER_COAT__, 1, 0.002],
    [IID.__RADIATION_SUIT__, 1, 0.002],
    [IID.__GAZ_PROTECTION__, 1, 0.02],
    [IID.__SAWED_OFF_SHOTGUN__, 1, 0.002],
    [IID.__MP5__, 1, 0.002],
    [IID.__AK47__, 1, 0.002],
    [IID.__SHOTGUN__, 1, 0.002],
    [IID.__DESERT_EAGLE__, 1, 0.002],
    [IID.__SNIPER__, 1, 0.002],
    [IID.__BULLET_SNIPER__, 50, 0.02],
    [IID.__BULLET_SHOTGUN__, 30, 0.02],
    [IID.__DYNAMITE__, 1, 0.01],
    [IID.__LANDMINE__, 1, 0.01],
    [IID.__9MM__, 1, 0.04],
    [IID.__BULLET_9MM__, 40, 0.06],
    [IID.__WOOD_CROSSBOW__, 1, 0.05],
    [IID.__WOOD_CROSSARROW__, 50, 0.05]
];
FURNITURE[FURNITUREID.__LITTLETABLE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FRIDGE0__]));
FURNITURE[FURNITUREID.__LITTLETABLE0__].building.src = "img/day-little-table0.png";
FURNITURE[FURNITUREID.__LITTLETABLE0__].width = [50, 50, 50, 50];
FURNITURE[FURNITUREID.__LITTLETABLE0__].height = [50, 50, 50, 50];
FURNITURE[FURNITUREID.__LITTLETABLE0__]._x = [25, 25, 25, 25];
FURNITURE[FURNITUREID.__LITTLETABLE0__]._y = [25, 25, 25, 25];
FURNITURE[FURNITUREID.__LITTLETABLE0__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 8]
]);
FURNITURE[FURNITUREID.__LITTLETABLE0__].usable = 0;
FURNITURE[FURNITUREID.__SMALL_LIGHT__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__]));
FURNITURE[FURNITUREID.__SMALL_LIGHT__].building.src = "img/day-small-light-off.png";
FURNITURE[FURNITUREID.__SMALL_LIGHT__].particles = PARTICLESID.__GREY_STEEL__;
FURNITURE[FURNITUREID.__TOILET0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FRIDGE0__]));
FURNITURE[FURNITUREID.__TOILET0__].impact = SOUNDID.__STONE_IMPACT__;
FURNITURE[FURNITUREID.__TOILET0__].destroy = SOUNDID.__STONE_DESTROY__;
FURNITURE[FURNITUREID.__TOILET0__].particles = PARTICLESID.__TOILET__;
FURNITURE[FURNITUREID.__TOILET0__].building.src = "img/day-toilet0.png";
FURNITURE[FURNITUREID.__TOILET0__].width = [50, 70, 50, 70];
FURNITURE[FURNITUREID.__TOILET0__].height = [70, 50, 70, 50];
FURNITURE[FURNITUREID.__TOILET0__]._x = [25, 30, 25, 0];
FURNITURE[FURNITUREID.__TOILET0__]._y = [0, 25, 30, 25];
FURNITURE[FURNITUREID.__TOILET0__].particles = PARTICLESID.__TOILET__;
FURNITURE[FURNITUREID.__TOILET0__].detail = new Detail("", "", -1, [
    [IID.__SHAPED_METAL__, 4],
    [IID.__STONE__, 100]
]);
FURNITURE[FURNITUREID.__TOILET0__].usable = 1;
FURNITURE[FURNITUREID.__TOILET0__].loot = [
    [IID.__SYRINGE__, 1, 0.2],
    [IID.__CHEMICAL_COMPONENT__, 1, 0.02],
    [IID.__GHOUL_BLOOD__, 1, 0.005],
    [IID.__LAPADONE__, 1, 0.002]
];
var LOOT = [{
    id: LOOTID.__SMALL_WOOD__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood0.png",
    idItem: IID.__WOOD__,
    amount: 1,
    scale: 0.85,
    angle: 0
}, {
    id: LOOTID.__MEDIUM_WOOD__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood1.png",
    idItem: IID.__WOOD__,
    amount: 2,
    scale: 0.85,
    angle: 0
}, {
    id: LOOTID.__BIG_WOOD__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood2.png",
    idItem: IID.__WOOD__,
    amount: 3,
    scale: 0.85,
    angle: 0
}, {
    id: LOOTID.__SMALL_STONE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-stone0.png",
    idItem: IID.__STONE__,
    amount: 1,
    scale: 1.2,
    angle: 0
}, {
    id: LOOTID.__MEDIUM_STONE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-stone1.png",
    idItem: IID.__STONE__,
    amount: 2,
    scale: 1.2,
    angle: 0
}, {
    id: LOOTID.__BIG_STONE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-stone2.png",
    idItem: IID.__STONE__,
    amount: 3,
    scale: 1.2,
    angle: 0
}, {
    id: LOOTID.__STEEL__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-steel.png",
    idItem: IID.__STEEL__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ANIMAL_FAT__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-animal-fat.png",
    idItem: IID.__ANIMAL_FAT__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__ANIMAL_TENDON__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-animal-tendon.png",
    idItem: IID.__ANIMAL_TENDON__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__STRING__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-string.png",
    idItem: IID.__STRING__,
    amount: 1,
    scale: 0.7,
    angle: 0
}, {
    id: LOOTID.__LEATHER_BOAR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-leather-boar.png",
    idItem: IID.__LEATHER_BOAR__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__SHAPED_METAL__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-shaped-metal.png",
    idItem: IID.__SHAPED_METAL__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__RAW_STEAK__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-raw-steak.png",
    idItem: IID.__RAW_STEAK__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__COOKED_STEAK__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-cooked-steak.png",
    idItem: IID.__COOKED_STEAK__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__ROTTEN_STEAK__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-rotten-steak.png",
    idItem: IID.__ROTTEN_STEAK__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__ORANGE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-orange.png",
    idItem: IID.__ORANGE__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__ROTTEN_ORANGE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-rotten-orange.png",
    idItem: IID.__ROTTEN_ORANGE__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__SEED_ORANGE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-seed-orange.png",
    idItem: IID.__SEED_ORANGE__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__HACHET__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-hachet.png",
    idItem: IID.__HACHET__,
    amount: 1,
    scale: 0.9,
    angle: 0.5
}, {
    id: LOOTID.__STONE_PICKAXE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-stone-pickaxe.png",
    idItem: IID.__STONE_PICKAXE__,
    amount: 1,
    scale: 0.7,
    angle: 0.3
}, {
    id: LOOTID.__STEEL_PICKAXE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-steel-pickaxe.png",
    idItem: IID.__STEEL_PICKAXE__,
    amount: 1,
    scale: 0.7,
    angle: 0.3
}, {
    id: LOOTID.__STONE_AXE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-stone-axe.png",
    idItem: IID.__STONE_AXE__,
    amount: 1,
    scale: 0.7,
    angle: 0.5
}, {
    id: LOOTID.__WORKBENCH__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-workbench.png",
    idItem: IID.__WORKBENCH__,
    amount: 1,
    scale: 0.7,
    angle: 0
}, {
    id: LOOTID.__WOOD_SPEAR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood-spear.png",
    idItem: IID.__WOOD_SPEAR__,
    amount: 1,
    scale: 0.6,
    angle: 0.6
}, {
    id: LOOTID.__WOOD_BOW__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood-bow.png",
    idItem: IID.__WOOD_BOW__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__9MM__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-9mm.png",
    idItem: IID.__9MM__,
    amount: 1,
    scale: 1,
    angle: -0.1
}, {
    id: LOOTID.__DESERT_EAGLE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-desert-eagle.png",
    idItem: IID.__DESERT_EAGLE__,
    amount: 1,
    scale: 1,
    angle: -0.1
}, {
    id: LOOTID.__SHOTGUN__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-shotgun.png",
    idItem: IID.__SHOTGUN__,
    amount: 1,
    scale: 0.7,
    angle: -0.5
}, {
    id: LOOTID.__AK47__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-ak47.png",
    idItem: IID.__AK47__,
    amount: 1,
    scale: 0.7,
    angle: -0.5
}, {
    id: LOOTID.__SNIPER__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-sniper.png",
    idItem: IID.__SNIPER__,
    amount: 1,
    scale: 0.7,
    angle: -0.5
}, {
    id: LOOTID.__WOOD_WALL__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood-wall.png",
    idItem: IID.__WOOD_WALL__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__STONE_WALL__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-stone-wall.png",
    idItem: IID.__STONE_WALL__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__STEEL_WALL__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-steel-wall.png",
    idItem: IID.__STEEL_WALL__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__WOOD_DOOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood-door.png",
    idItem: IID.__WOOD_DOOR__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__STONE_DOOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-stone-door.png",
    idItem: IID.__STONE_DOOR__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__STEEL_DOOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-steel-door.png",
    idItem: IID.__STEEL_DOOR__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__CAMPFIRE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-campfire.png",
    idItem: IID.__CAMPFIRE__,
    amount: 1,
    scale: 0.7,
    angle: 0
}, {
    id: LOOTID.__BULLET_9MM__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-bullet-9mm.png",
    idItem: IID.__BULLET_9MM__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__BULLET_SHOTGUN__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-bullet-shotgun.png",
    idItem: IID.__BULLET_SHOTGUN__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__BULLET_SNIPER__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-bullet-sniper.png",
    idItem: IID.__BULLET_SNIPER__,
    amount: 1,
    scale: 1.1,
    angle: 0
}, {
    id: LOOTID.__MEDIKIT__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-medikit.png",
    idItem: IID.__MEDIKIT__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__BANDAGE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-bandage.png",
    idItem: IID.__BANDAGE__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__SODA__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-soda.png",
    idItem: IID.__SODA__,
    amount: 1,
    scale: 1.2,
    angle: 0
}, {
    id: LOOTID.__MP5__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-MP5.png",
    idItem: IID.__MP5__,
    amount: 1,
    scale: 0.8,
    angle: -0.5
}, {
    id: LOOTID.__HEADSCARF__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-headscarf.png",
    idItem: IID.__HEADSCARF__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__CHAPKA__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-chapka.png",
    idItem: IID.__CHAPKA__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__WINTER_COAT__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-coat.png",
    idItem: IID.__WINTER_COAT__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__GAZ_MASK__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-gaz-mask.png",
    idItem: IID.__GAZ_MASK__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__GAZ_PROTECTION__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-gaz-protection.png",
    idItem: IID.__GAZ_PROTECTION__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__RADIATION_SUIT__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-radiation-suit.png",
    idItem: IID.__RADIATION_SUIT__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__WOOD_ARROW__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood-arrow.png",
    idItem: IID.__WOOD_ARROW__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__CAMPFIRE_BBQ__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-campfire-bbq.png",
    idItem: IID.__CAMPFIRE_BBQ__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__SMELTER__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-smelter.png",
    idItem: IID.__SMELTER__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__WOOD_BIGDOOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood-door1.png",
    idItem: IID.__WOOD_BIGDOOR__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__STONE_BIGDOOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-stone-door1.png",
    idItem: IID.__STONE_BIGDOOR__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__STEEL_BIGDOOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-steel-door1.png",
    idItem: IID.__STEEL_BIGDOOR__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__SULFUR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-sulfur.png",
    idItem: IID.__SULFUR__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__SHAPED_URANIUM__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-shaped-uranium.png",
    idItem: IID.__SHAPED_URANIUM__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__WORKBENCH2__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-workbench2.png",
    idItem: IID.__WORKBENCH2__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__URANIUM__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-uranium.png",
    idItem: IID.__URANIUM__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__WEAVING__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-weaving-machine.png",
    idItem: IID.__WEAVING__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__GASOLINE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-gasoline.png",
    idItem: IID.__GASOLINE__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__SULFUR_PICKAXE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-sulfur-pickaxe.png",
    idItem: IID.__SULFUR_PICKAXE__,
    amount: 1,
    scale: 0.7,
    angle: 0.3
}, {
    id: LOOTID.__CHEST__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-chest.png",
    idItem: IID.__CHEST__,
    amount: 1,
    scale: 0.7,
    angle: 0.3
}, {
    id: LOOTID.__FRIDGE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-fridge.png",
    idItem: IID.__FRIDGE__,
    amount: 1,
    scale: 0.7,
    angle: 0.3
}, {
    id: LOOTID.__WOOD_FLOOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood-floor.png",
    idItem: IID.__WOOD_FLOOR__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__HAMMER__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-hammer.png",
    idItem: IID.__HAMMER__,
    amount: 1,
    scale: 0.7,
    angle: 0.3
}, {
    id: LOOTID.__SLEEPING_BAG__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-sleeping-bag.png",
    idItem: IID.__SLEEPING_BAG__,
    amount: 1,
    scale: 0.7,
    angle: 0.3
}, {
    id: LOOTID.__REPAIR_HAMMER__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-repair-hammer.png",
    idItem: IID.__REPAIR_HAMMER__,
    amount: 1,
    scale: 0.7,
    angle: 0.3
}, {
    id: LOOTID.__NAILS__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-nails.png",
    idItem: IID.__NAILS__,
    amount: 1,
    scale: 0.7,
    angle: 0.3
}, {
    id: LOOTID.__WOODLIGHT_FLOOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood-floor-light.png",
    idItem: IID.__WOODLIGHT_FLOOR__,
    amount: 1,
    scale: 0.7,
    angle: 0.3
}, {
    id: LOOTID.__WOOD_SMALLWALL__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood-smallwall.png",
    idItem: IID.__WOOD_SMALLWALL__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__STONE_SMALLWALL__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-stone-smallwall.png",
    idItem: IID.__STONE_SMALLWALL__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__STEEL_SMALLWALL__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-steel-smallwall.png",
    idItem: IID.__STEEL_SMALLWALL__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__TOMATO_SOUP__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-tomato-soup.png",
    idItem: IID.__TOMATO_SOUP__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__SYRINGE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-syringe.png",
    idItem: IID.__SYRINGE__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__CHEMICAL_COMPONENT__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-chemical-component.png",
    idItem: IID.__CHEMICAL_COMPONENT__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__RADAWAY__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-radaway.png",
    idItem: IID.__RADAWAY__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__SEED_TOMATO__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-seed-tomato.png",
    idItem: IID.__SEED_TOMATO__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__TOMATO__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-tomato.png",
    idItem: IID.__TOMATO__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__ROTTEN_TOMATO__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-rotten-tomato.png",
    idItem: IID.__ROTTEN_TOMATO__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__CAN__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-can.png",
    idItem: IID.__CAN__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__WOOD_CROSSBOW__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood-crossbow.png",
    idItem: IID.__WOOD_CROSSBOW__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__WOOD_CROSSARROW__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood-crossarrow.png",
    idItem: IID.__WOOD_CROSSARROW__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__NAIL_GUN__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-nail-gun.png",
    idItem: IID.__NAIL_GUN__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__SAWED_OFF_SHOTGUN__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-sawed-off-shotgun.png",
    idItem: IID.__SAWED_OFF_SHOTGUN__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__STONE_FLOOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-stone-floor.png",
    idItem: IID.__STONE_FLOOR__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__TILING_FLOOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-tiling-floor.png",
    idItem: IID.__TILING_FLOOR__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__CRISPS__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-chips.png",
    idItem: IID.__CRISPS__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__ROTTEN_CRISPS__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-rotten-chips.png",
    idItem: IID.__ROTTEN_CRISPS__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__ELECTRONICS__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-electronic-part.png",
    idItem: IID.__ELECTRONICS__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__JUNK__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-junk.png",
    idItem: IID.__JUNK__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__WIRE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wires.png",
    idItem: IID.__WIRE__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__ENERGY_CELLS__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-small-energy-cells.png",
    idItem: IID.__ENERGY_CELLS__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__LASER_PISTOL__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-laser-pistol.png",
    idItem: IID.__LASER_PISTOL__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__TESLA__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-workbench3.png",
    idItem: IID.__TESLA__,
    amount: 1,
    scale: 0.9,
    angle: 0
}, {
    id: LOOTID.__ALLOYS__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-alloys.png",
    idItem: IID.__ALLOYS__,
    amount: 1,
    scale: 1,
    angle: 0
}, {
    id: LOOTID.__SULFUR_AXE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-sulfur-axe.png",
    idItem: IID.__SULFUR_AXE__,
    amount: 1,
    scale: 0.7,
    angle: 0.5
}, {
    id: LOOTID.__LANDMINE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-landmine.png",
    idItem: IID.__LANDMINE__,
    amount: 1,
    scale: 0.7,
    angle: 0.5
}, {
    id: LOOTID.__DYNAMITE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-dynamite.png",
    idItem: IID.__DYNAMITE__,
    amount: 1,
    scale: 0.7,
    angle: 0.5
}, {
    id: LOOTID.__C4__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-C4.png",
    idItem: IID.__C4__,
    amount: 1,
    scale: 0.7,
    angle: 0.5
}, {
    id: LOOTID.__C4_TRIGGER__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-joystick.png",
    idItem: IID.__C4_TRIGGER__,
    amount: 1,
    scale: 0.7,
    angle: 0.5
}, {
    id: LOOTID.__COMPOST__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-composter.png",
    idItem: IID.__COMPOST__,
    amount: 1,
    scale: 0.7,
    angle: 0.5
}, {
    id: LOOTID.__ARMOR_PHYSIC_1__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-metal-helmet.png",
    idItem: IID.__ARMOR_PHYSIC_1__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ARMOR_PHYSIC_2__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-welding-helmet.png",
    idItem: IID.__ARMOR_PHYSIC_2__,
    amount: 1,
    scale: 0.7,
    angle: 0
}, {
    id: LOOTID.__ARMOR_PHYSIC_3__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-gladiator-helmet.png",
    idItem: IID.__ARMOR_PHYSIC_3__,
    amount: 1,
    scale: 0.7,
    angle: 0
}, {
    id: LOOTID.__ARMOR_FIRE_1__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-leather-jacket.png",
    idItem: IID.__ARMOR_FIRE_1__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ARMOR_FIRE_2__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-kevlar-suit.png",
    idItem: IID.__ARMOR_FIRE_2__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ARMOR_FIRE_3__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-SWAT-suit.png",
    idItem: IID.__ARMOR_FIRE_3__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ARMOR_DEMINER__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-protective-suit.png",
    idItem: IID.__ARMOR_DEMINER__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ARMOR_TESLA_1__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-tesla-0.png",
    idItem: IID.__ARMOR_TESLA_1__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ARMOR_TESLA_2__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-tesla-armor.png",
    idItem: IID.__ARMOR_TESLA_2__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__WOOD_SPIKE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wood-spike.png",
    idItem: IID.__WOOD_SPIKE__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__LASER_SUBMACHINE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-laser-submachine.png",
    idItem: IID.__LASER_SUBMACHINE__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__GRENADE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-grenade.png",
    idItem: IID.__GRENADE__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__SUPER_HAMMER__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-super-hammer.png",
    idItem: IID.__SUPER_HAMMER__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__GHOUL_BLOOD__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-ghoul-blood.png",
    idItem: IID.__GHOUL_BLOOD__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__CAMOUFLAGE_GEAR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-camouflage-gear.png",
    idItem: IID.__CAMOUFLAGE_GEAR__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__AGITATOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-agitator.png",
    idItem: IID.__AGITATOR__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__GHOUL_DRUG__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-ghoul-drug.png",
    idItem: IID.__GHOUL_DRUG__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__MUSHROOM1__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-mushroom1.png",
    idItem: IID.__MUSHROOM1__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__MUSHROOM2__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-mushroom2.png",
    idItem: IID.__MUSHROOM2__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__MUSHROOM3__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-mushroom3.png",
    idItem: IID.__MUSHROOM3__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ROTTEN_MUSHROOM1__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-rotten-mushroom1.png",
    idItem: IID.__ROTTEN_MUSHROOM1__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ROTTEN_MUSHROOM2__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-rotten-mushroom2.png",
    idItem: IID.__ROTTEN_MUSHROOM2__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ROTTEN_MUSHROOM3__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-rotten-mushroom3.png",
    idItem: IID.__ROTTEN_MUSHROOM3__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__LAPADONE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-lapadoine.png",
    idItem: IID.__LAPADONE__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__LAPABOT_REPAIR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-lapabot.png",
    idItem: IID.__LAPABOT_REPAIR__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__SMALL_WIRE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-small-wire.png",
    idItem: IID.__SMALL_WIRE__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__PUMPKIN__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-pumpkin.png",
    idItem: IID.__PUMPKIN__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ROTTEN_PUMPKIN__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-rotten-pumpkin.png",
    idItem: IID.__ROTTEN_PUMPKIN__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__SEED_GHOUL__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-ghoul5.png",
    idItem: IID.__SEED_GHOUL__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__EXTRACTOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-extractor.png",
    idItem: IID.__EXTRACTOR__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ANTIDOTE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-antidote.png",
    idItem: IID.__ANTIDOTE__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ANTIDOTE_FLOWER__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-antidote-flower.png",
    idItem: IID.__ANTIDOTE_FLOWER__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__SEED_TREE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-seed-tree.png",
    idItem: IID.__SEED_TREE__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ACORN__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-acorn.png",
    idItem: IID.__ACORN__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__ROTTEN_ACORN__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-rotten-acorn.png",
    idItem: IID.__ROTTEN_ACORN__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__LASER_SNIPER__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-laser-sniper.png",
    idItem: IID.__LASER_SNIPER__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__HAL_BOT__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-hal-bot.png",
    idItem: IID.__HAL_BOT__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__TESLA_BOT__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-tesla-bot.png",
    idItem: IID.__TESLA_BOT__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__CABLE0__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wire0.png",
    idItem: IID.__CABLE0__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__CABLE1__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wire1.png",
    idItem: IID.__CABLE1__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__CABLE2__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wire2.png",
    idItem: IID.__CABLE2__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__CABLE3__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wire3.png",
    idItem: IID.__CABLE3__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__SWITCH__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-switch.png",
    idItem: IID.__SWITCH__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__GATE_OR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-switch-or.png",
    idItem: IID.__GATE_OR__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__GATE_AND__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-switch-and.png",
    idItem: IID.__GATE_AND__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__GATE_NOT__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-switch-reverse.png",
    idItem: IID.__GATE_NOT__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__LAMP__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-lamp-white.png",
    idItem: IID.__LAMP__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__CABLE_WALL__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-cable-wall.png",
    idItem: IID.__CABLE_WALL__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__AUTOMATIC_DOOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-automatic-door.png",
    idItem: IID.__AUTOMATIC_DOOR__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__PLATFORM__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-platform.png",
    idItem: IID.__PLATFORM__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__STONE_CAVE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-stone-cave.png",
    idItem: IID.__STONE_CAVE__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__BUNKER_WALL__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-bunker-wall.png",
    idItem: IID.__BUNKER_WALL__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__GOLD_FLOOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-mustard-floor.png",
    idItem: IID.__GOLD_FLOOR__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__RED_FLOOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-red-floor.png",
    idItem: IID.__RED_FLOOR__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__WELDING_MACHINE__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-welding-machine.png",
    idItem: IID.__WELDING_MACHINE__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__CABLE4__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-wire4.png",
    idItem: IID.__CABLE4__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__GATE_TIMER__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-timer.png",
    idItem: IID.__GATE_TIMER__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__GATE_XOR__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-xor.png",
    idItem: IID.__GATE_XOR__,
    amount: 1,
    scale: 0.8,
    angle: 0
}, {
    id: LOOTID.__FEEDER__,
    img: {
        isLoaded: 0
    },
    src: "img/day-ground-feeder.png",
    idItem: LOOTID.__FEEDER__,
    amount: 1,
    scale: 0.8,
    angle: 0
  }];
var COUNTER = 0;

var RESID = {
    WOOD:           COUNTER++,
    STONE:          COUNTER++,
    STEEL:          COUNTER++,
    URANIUM:        COUNTER++,
    SULFUR:         COUNTER++,
    LEAFTREE:       COUNTER++,
    ORANGETREE:     COUNTER++,
    TOMATOTREE:     COUNTER++,
    BOAR:           COUNTER++,
    DEER:           COUNTER++,
    MUSHROOM1:      COUNTER++,
    MUSHROOM2:      COUNTER++,
    MUSHROOM3:      COUNTER++,
    WHITE_FLOWER:   COUNTER++
};

var __TOP   = 8;
var __DOWN  = 9;
var __MID   = 10;
var __STOP  = 11;

var RESOURCES = [];
RESOURCES[RESID.WOOD] = {
    loot: [LOOTID.__BIG_WOOD__, LOOTID.__MEDIUM_WOOD__, LOOTID.__SMALL_WOOD__],
    rare: [0.2, 0.4, 1],
    tool: [-1, IID.__HACHET__, IID.__STONE_AXE__, IID.__SULFUR_AXE__],
    effect: [1, 2, 4, 5],
    areaEffect: 0,
    type: [{
        life: 200,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-wood1.png"
        },
        particlesDist: 100,
        particle: 5,
        units: 0,
        unitsMax: 80,
        collision: 1,
        z: __TOP,
        radius: 80
    }, {
        life: 150,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-wood0.png"
        },
        particlesDist: 75,
        particle: 5,
        units: 0,
        unitsMax: 80,
        collision: 1,
        z: __TOP,
        radius: 55
    }, {
        life: 120,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-wood2.png"
        },
        particlesDist: 70,
        particle: 5,
        units: 0,
        unitsMax: 80,
        collision: 1,
        z: __TOP,
        radius: 48
    }, {
        life: 100,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-wood3.png"
        },
        particlesDist: 60,
        particle: 5,
        units: 0,
        unitsMax: 80,
        collision: 1,
        z: __TOP,
        radius: 37
    }, {
        life: 75,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-wood4.png"
        },
        particlesDist: 50,
        particle: 5,
        units: 0,
        unitsMax: 80,
        collision: 1,
        z: __TOP,
        radius: 30
    }],
    particles: PARTICLESID.__WOOD__,
    impact: SOUNDID.__WOOD_IMPACT__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    score: 5
};
RESOURCES[RESID.LEAFTREE] = {
    loot: [LOOTID.acorn, LOOTID.__BIG_WOOD__, LOOTID.__MEDIUM_WOOD__, LOOTID.__SMALL_WOOD__],
    rare: [0.015, 0.2, 0.4, 1],
    tool: [-1, IID.__HACHET__, IID.__STONE_AXE__, IID.__SULFUR_AXE__],
    effect: [1, 2, 4, 5],
    areaEffect: 0,
    type: [{
        life: 250,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tree0.png"
        },
        imgTop: {
            img: {
                isLoaded: 0
            },
            src: "img/day-treeleaf0.png"
        },
        imgFull: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tree-and-leaf0.png"
        },
        particlesDist: 145,
        particle: 5,
        units: 0,
        unitsMax: 800,
        collision: 1,
        z: __STOP,
        radius: 70
    }, {
        life: 250,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tree1.png"
        },
        imgTop: {
            img: {
                isLoaded: 0
            },
            src: "img/day-treeleaf1.png"
        },
        imgFull: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tree-and-leaf1.png"
        },
        particlesDist: 128,
        particle: 5,
        units: 0,
        unitsMax: 800,
        collision: 1,
        z: __STOP,
        radius: 52
    }, {
        life: 150,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tree2.png"
        },
        imgTop: {
            img: {
                isLoaded: 0
            },
            src: "img/day-treeleaf2.png"
        },
        imgFull: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tree-and-leaf2.png"
        },
        particlesDist: 114,
        particle: 5,
        units: 0,
        unitsMax: 800,
        collision: 1,
        z: __STOP,
        radius: 42
    }, {
        life: 75,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tree3.png"
        },
        imgTop: {
            img: {
                isLoaded: 0
            },
            src: "img/day-treeleaf3.png"
        },
        imgFull: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tree-and-leaf3.png"
        },
        particlesDist: 90,
        particle: 5,
        units: 0,
        unitsMax: 800,
        collision: 1,
        z: __STOP,
        radius: 34
    }, {
        life: 250,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tree4.png"
        },
        imgTop: {
            img: {
                isLoaded: 0
            },
            src: "img/day-treeleaf4.png"
        },
        imgFull: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tree-and-leaf4.png"
        },
        particlesDist: 147,
        particle: 5,
        units: 0,
        unitsMax: 800,
        collision: 1,
        z: __STOP,
        radius: 54
    }],
    particles: PARTICLESID.__LEAFTREE__,
    impact: SOUNDID.__WOOD_IMPACT__,
    destroy: SOUNDID.__WOOD_DESTROY__,
    score: 5
};
RESOURCES[RESID.STONE] = {
    loot: [LOOTID.__BIG_STONE__, LOOTID.__MEDIUM_STONE__, LOOTID.__SMALL_STONE__],
    rare: [0.1, 0.3, 1],
    tool: [IID.__HACHET__, IID.__STONE_PICKAXE__, IID.__STEEL_PICKAXE__, IID.__SULFUR_PICKAXE__],
    effect: [1, 3, 4, 5],
    areaEffect: 0,
    type: [{
        life: 1000,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-stone0.png"
        },
        particlesDist: 80,
        particle: 5,
        units: 0,
        unitsMax: 115,
        collision: 1,
        z: __MID,
        radius: 60
    }, {
        life: 800,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-stone2.png"
        },
        particlesDist: 80,
        particle: 5,
        units: 0,
        unitsMax: 115,
        collision: 1,
        z: __MID,
        radius: 58
    }, {
        life: 600,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-stone1.png"
        },
        particlesDist: 74,
        particle: 5,
        units: 0,
        unitsMax: 115,
        collision: 1,
        z: __MID,
        radius: 54
    }, {
        life: 400,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-stone3.png"
        },
        particlesDist: 65,
        particle: 5,
        units: 0,
        unitsMax: 115,
        collision: 1,
        z: __DOWN,
        radius: 45
    }, {
        life: 200,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-stone4.png"
        },
        particlesDist: 63,
        particle: 5,
        units: 0,
        unitsMax: 115,
        collision: 1,
        z: __DOWN,
        radius: 43
    }, {
        life: 150,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-stone5.png"
        },
        particlesDist: 61,
        particle: 5,
        units: 0,
        unitsMax: 115,
        collision: 1,
        z: __DOWN,
        radius: 41
    }],
    particles: PARTICLESID.__STONE__,
    impact: SOUNDID.__STONE_IMPACT_2__,
    destroy: SOUNDID.__STONE_DESTROY__,
    score: 15
};
RESOURCES[RESID.STEEL] = {
    loot: [LOOTID.__STEEL__, LOOTID.__BIG_STONE__, LOOTID.__MEDIUM_STONE__, LOOTID.__SMALL_STONE__],
    rare: [0.4, 0.45, 0.6, 1],
    tool: [IID.__STONE_PICKAXE__, IID.__STEEL_PICKAXE__, IID.__SULFUR_PICKAXE__],
    effect: [1, 2, 3],
    areaEffect: 0,
    type: [{
        life: 1200,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-steel0.png"
        },
        particlesDist: 81,
        particle: 5,
        units: 0,
        unitsMax: 22,
        collision: 1,
        z: __MID,
        radius: 61
    }, {
        life: 1000,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-steel1.png"
        },
        particlesDist: 81,
        particle: 5,
        units: 0,
        unitsMax: 22,
        collision: 1,
        z: __MID,
        radius: 61
    }, {
        life: 300,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-steel2.png"
        },
        particlesDist: 62,
        particle: 5,
        units: 0,
        unitsMax: 22,
        collision: 1,
        z: __DOWN,
        radius: 42
    }, {
        life: 500,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-steel3.png"
        },
        particlesDist: 70,
        particle: 5,
        units: 0,
        unitsMax: 22,
        collision: 1,
        z: __MID,
        radius: 50
    }],
    particles: PARTICLESID.__STEEL__,
    impact: SOUNDID.__STONE_IMPACT_2__,
    destroy: SOUNDID.__STONE_DESTROY__,
    score: 40
};
RESOURCES[RESID.SULFUR] = {
    loot: [LOOTID.sulfur, LOOTID.__BIG_STONE__, LOOTID.__MEDIUM_STONE__, LOOTID.__SMALL_STONE__],
    rare: [0.4, 0.45, 0.6, 1],
    tool: [IID.__STEEL_PICKAXE__, IID.__SULFUR_PICKAXE__],
    effect: [1, 2],
    areaEffect: 0,
    type: [{
        life: 1000,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-sulfur0.png"
        },
        particlesDist: 62,
        particle: 5,
        units: 0,
        unitsMax: 22,
        collision: 1,
        z: __MID,
        radius: 42
    }, {
        life: 400,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-sulfur1.png"
        },
        particlesDist: 70,
        particle: 5,
        units: 0,
        unitsMax: 22,
        collision: 1,
        z: __DOWN,
        radius: 50
    }, {
        life: 400,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-sulfur2.png"
        },
        particlesDist: 58,
        particle: 5,
        units: 0,
        unitsMax: 22,
        collision: 1,
        z: __DOWN,
        radius: 38
    }],
    particles: PARTICLESID.__SULFUR__,
    impact: SOUNDID.__STONE_IMPACT_2__,
    destroy: SOUNDID.__STONE_DESTROY__,
    score: 70
};
RESOURCES[RESID.URANIUM] = {
    loot: [LOOTID.uranium, LOOTID.__BIG_STONE__, LOOTID.__MEDIUM_STONE__, LOOTID.__SMALL_STONE__],
    rare: [0.3, 0.45, 0.6, 1],
    tool: [IID.__SULFUR_PICKAXE__],
    effect: [1],
    areaEffect: __RADIATION__,
    type: [{
        life: 6000,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-uranium0.png"
        },
        particlesDist: 104,
        particle: 5,
        units: 0,
        unitsMax: 5,
        collision: 1,
        z: __MID,
        radius: 75
    }, {
        life: 4000,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-uranium1.png"
        },
        particlesDist: 75,
        particle: 5,
        units: 0,
        unitsMax: 5,
        collision: 1,
        z: __MID,
        radius: 55
    }, {
        life: 2000,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-uranium2.png"
        },
        particlesDist: 62,
        particle: 5,
        units: 0,
        unitsMax: 5,
        collision: 1,
        z: __DOWN,
        radius: 42
    }],
    particles: PARTICLESID.__URANIUM__,
    impact: SOUNDID.__STONE_IMPACT_2__,
    destroy: SOUNDID.__STONE_DESTROY__,
    score: 140
};
RESOURCES[RESID.ORANGETREE] = {
    loot: [LOOTID.seedorange,  LOOTID.__ORANGE__],
    rare: [0.05, 1],
    tool: [-1],
    effect: [1],
    areaEffect: 0,
    type: [{
        life: 80,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-orange-tree-leaf0.png"
        },
        imgTop: {
            img: {
                isLoaded: 0
            },
            src: "img/day-orange0.png"
        },
        imgFull: {
            img: {
                isLoaded: 0
            },
            src: "img/day-orange-tree0.png"
        },
        particlesDist: 68,
        particle: 5,
        units: 0,
        unitsMax: 20,
        collision: 1,
        z: __DOWN,
        radius: 38
    }, {
        life: 100,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-orange-tree-leaf1.png"
        },
        imgTop: {
            img: {
                isLoaded: 0
            },
            src: "img/day-orange1.png"
        },
        imgFull: {
            img: {
                isLoaded: 0
            },
            src: "img/day-orange-tree1.png"
        },
        particlesDist: 70,
        particle: 5,
        units: 0,
        unitsMax: 20,
        collision: 1,
        z: __DOWN,
        radius: 37
    }, {
        life: 120,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-orange-tree-leaf2.png"
        },
        imgTop: {
            img: {
                isLoaded: 0
            },
            src: "img/day-orange2.png"
        },
        imgFull: {
            img: {
                isLoaded: 0
            },
            src: "img/day-orange-tree2.png"
        },
        particlesDist: 78,
        particle: 5,
        units: 0,
        unitsMax: 20,
        collision: 1,
        z: __DOWN,
        radius: 45
    }],
    particles: PARTICLESID.__ORANGE__,
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__NO_SOUND__,
    score: 50
};
RESOURCES[RESID.TOMATOTREE] = {
    loot: [LOOTID.tomatoseed, LOOTID.tomato],
    rare: [0.05, 1],
    tool: [-1],
    effect: [1],
    areaEffect: 0,
    type: [{
        life: 80,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tomato-tree-leaf0.png"
        },
        imgTop: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tomato0.png"
        },
        imgFull: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tomato-tree0.png"
        },
        particlesDist: 68,
        particle: 5,
        units: 0,
        unitsMax: 16,
        collision: 1,
        z: __DOWN,
        radius: 38
    }, {
        life: 100,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tomato-tree-leaf1.png"
        },
        imgTop: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tomato1.png"
        },
        imgFull: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tomato-tree1.png"
        },
        particlesDist: 70,
        particle: 5,
        units: 0,
        unitsMax: 16,
        collision: 1,
        z: __DOWN,
        radius: 37
    }, {
        life: 120,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tomato-tree-leaf2.png"
        },
        imgTop: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tomato2.png"
        },
        imgFull: {
            img: {
                isLoaded: 0
            },
            src: "img/day-tomato-tree2.png"
        },
        particlesDist: 78,
        particle: 5,
        units: 0,
        unitsMax: 16,
        collision: 1,
        z: __DOWN,
        radius: 45
    }],
    particles: PARTICLESID.__TOMATO__,
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__NO_SOUND__,
    score: 50
};
RESOURCES[RESID.BOAR] = {
    loot: [LOOTID.rawsteak, LOOTID.__ANIMAL_FAT__, LOOTID.__LEATHER_BOAR__],
    rare: [0.25, 0.85, 1],
    tool: [IID.__HACHET__, IID.__STONE_AXE__, IID.__SULFUR_AXE__],
    effect: [1, 3, 4],
    areaEffect: 0,
    type: [{
        life: 250,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-boar-dead.png"
        },
        particlesDist: 70,
        particle: 5,
        units: 0,
        unitsMax: 18,
        collision: 1,
        z: __DOWN,
        radius: 47
    }],
    particles: PARTICLESID.__BLOOD__,
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__NO_SOUND__,
    score: 40
};
RESOURCES[RESID.DEER] = {
    loot: [LOOTID.rawsteak, LOOTID.__ANIMAL_TENDON__, LOOTID.__LEATHER_BOAR__, LOOTID.__ANIMAL_FAT__],
    rare: [0.28, 0.7, 0.85, 1],
    tool: [IID.__HACHET__, IID.__STONE_AXE__, IID.__SULFUR_AXE__],
    effect: [1, 3, 4],
    areaEffect: 0,
    type: [{
        life: 200,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-deer-dead.png"
        },
        particlesDist: 73,
        particle: 5,
        units: 0,
        unitsMax: 18,
        collision: 1,
        z: __DOWN,
        radius: 53
    }],
    particles: PARTICLESID.__BLOOD__,
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__NO_SOUND__,
    score: 40
};
RESOURCES[RESID.MUSHROOM1] = {
    loot: [LOOTID.mushroom],
    rare: [1],
    tool: [-1],
    effect: [1],
    areaEffect: 0,
    type: [{
        life: 1,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-mushroom1.png"
        },
        particlesDist: 18,
        particle: 2,
        units: 0,
        unitsMax: 2,
        collision: 0,
        z: __DOWN,
        radius: 32
    }, {
        life: 1,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-mushroom2.png"
        },
        particlesDist: 18,
        particle: 2,
        units: 0,
        unitsMax: 2,
        collision: 0,
        z: __DOWN,
        radius: 32
    }, {
        life: 1,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-mushroom3.png"
        },
        particlesDist: 18,
        particle: 2,
        units: 0,
        unitsMax: 2,
        collision: 0,
        z: __DOWN,
        radius: 32
    }, {
        life: 1,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-mushroom4.png"
        },
        particlesDist: 18,
        particle: 2,
        units: 0,
        unitsMax: 2,
        collision: 0,
        z: __DOWN,
        radius: 32
    }],
    particles: PARTICLESID.__MUSHROOM1__,
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__NO_SOUND__,
    score: 40
};
RESOURCES[RESID.WHITE_FLOWER] = {
    loot: [LOOTID.antidoteflower],
    rare: [1],
    tool: [-1],
    effect: [1],
    areaEffect: 0,
    type: [{
        life: 1,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-antidote-tree.png"
        },
        particlesDist: 18,
        particle: 2,
        units: 0,
        unitsMax: 1,
        collision: 0,
        z: __DOWN,
        radius: 32
    }],
    particles: PARTICLESID.flower,
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__NO_SOUND__,
    score: 1000
};
RESOURCES[RESID.MUSHROOM2] = {
    loot: [LOOTID.mushroom2],
    rare: [1],
    tool: [-1],
    effect: [1],
    areaEffect: 0,
    type: [{
        life: 1,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-mushroom5.png"
        },
        particlesDist: 18,
        particle: 2,
        units: 0,
        unitsMax: 6,
        collision: 0,
        z: __DOWN,
        radius: 32
    }, {
        life: 1,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-mushroom6.png"
        },
        particlesDist: 18,
        particle: 2,
        units: 0,
        unitsMax: 6,
        collision: 0,
        z: __DOWN,
        radius: 32
    }, {
        life: 1,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-mushroom7.png"
        },
        particlesDist: 18,
        particle: 2,
        units: 0,
        unitsMax: 6,
        collision: 0,
        z: __DOWN,
        radius: 32
    }, {
        life: 1,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-mushroom8.png"
        },
        particlesDist: 18,
        particle: 2,
        units: 0,
        unitsMax: 6,
        collision: 0,
        z: __DOWN,
        radius: 32
    }],
    particles: PARTICLESID.__MUSHROOM2__,
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__NO_SOUND__,
    score: 40
};
RESOURCES[RESID.MUSHROOM3] = {
    loot: [LOOTID.mushroom3],
    rare: [1],
    tool: [-1],
    effect: [1],
    areaEffect: 0,
    type: [{
        life: 1,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-mushroom9.png"
        },
        particlesDist: 18,
        particle: 2,
        units: 0,
        unitsMax: 6,
        collision: 0,
        z: __DOWN,
        radius: 32
    }, {
        life: 1,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-mushroom10.png"
        },
        particlesDist: 18,
        particle: 2,
        units: 0,
        unitsMax: 6,
        collision: 0,
        z: __DOWN,
        radius: 32
    }, {
        life: 1,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-mushroom11.png"
        },
        particlesDist: 18,
        particle: 2,
        units: 0,
        unitsMax: 6,
        collision: 0,
        z: __DOWN,
        radius: 32
    }, {
        life: 1,
        img: {
            img: {
                isLoaded: 0
            },
            src: "img/day-mushroom12.png"
        },
        particlesDist: 18,
        particle: 2,
        units: 0,
        unitsMax: 6,
        collision: 0,
        z: __DOWN,
        radius: 32
    }],
    particles: PARTICLESID.__MUSHROOM3__,
    impact: SOUNDID.__NO_SOUND__,
    destroy: SOUNDID.__NO_SOUND__,
    score: 40
};

var LIGHTFIREX = [-26, 25, -7, 0];
var LIGHTFIREY = [-28, -15, 25, 0];
var LIGHTFIRE = [{
    src: "img/day-campfire-light-1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-campfire-light-2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-campfire-light-3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/day-campfire-light-down.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/ghoul-hurt.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/heal-player.png",
    img: {
        isLoaded: 0
    }
}];
var KARMA = [{
    src: "img/karma4.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/karma3.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/karma2.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/karma1.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/karma0.png",
    img: {
        isLoaded: 0
    }
}, {
    src: "img/karma5.png",
    img: {
        isLoaded: 0
    }
}];

var COUNTER = 0;
var HOUSEID = {
    __HOUSE0__:     COUNTER++,
    __HOUSE1__:     COUNTER++,
    __HOUSE2__:     COUNTER++,
    __HOUSE3__:     COUNTER++,
    __HOUSE4__:     COUNTER++,
    __HOUSE5__:     COUNTER++,
    __HOUSE6__:     COUNTER++,
    __HOUSE7__:     COUNTER++,
    __HOUSE8__:     COUNTER++,
    __HOUSE9__:     COUNTER++,
    __CITY0__:      COUNTER++,
    __BUNKER0__:    COUNTER++
};
var HOUSE = [];
var P = {};
try {
    if (exports !== window.undefined) {
        _EMP = {
            v: 0,
            b: 0,
            V: -1,
            r: 0
        };
        _WF = {
            v: IID.__WOOD_FLOOR__,
            b: 0,
            V: -1,
            r: 0
        };
        _LF = {
            v: IID.__WOODLIGHT_FLOOR__,
            b: 0,
            V: -1,
            r: 0
        };
        _SF = {
            v: IID.__STONE_FLOOR__,
            b: 0,
            V: -1,
            r: 0
        };
        _TF = {
            v: IID.__TILING_FLOOR__,
            b: 0,
            V: -1,
            r: 0
        };
        _GF = {
            v: IID.__GOLD_FLOOR__,
            b: 0,
            V: -1,
            r: 0
        };
        _RF = {
            v: IID.__RED_FLOOR__,
            b: 0,
            V: -1,
            r: 0
        };
        _WW = {
            v: 0,
            b: IID.__WOOD_WALL__,
            V: -1,
            r: 0
        };
        _WWWF = {
            v: IID.__WOOD_FLOOR__,
            b: IID.__WOOD_WALL__,
            V: -1,
            r: 0
        };
        _WWLF = {
            v: IID.__WOODLIGHT_FLOOR__,
            b: IID.__WOOD_WALL__,
            V: -1,
            r: 0
        };
        _WWSF = {
            v: IID.__STONE_FLOOR__,
            b: IID.__WOOD_WALL__,
            V: -1,
            r: 0
        };
        _WWTF = {
            v: IID.__TILING_FLOOR__,
            b: IID.__WOOD_WALL__,
            V: -1,
            r: 0
        };
        _WWGF = {
            v: IID.__GOLD_FLOOR__,
            b: IID.__WOOD_WALL__,
            V: -1,
            r: 0
        };
        _WWRF = {
            v: IID.__RED_FLOOR__,
            b: IID.__WOOD_WALL__,
            V: -1,
            r: 0
        };
        _SW = {
            v: 0,
            b: IID.__STONE_WALL__,
            V: -1,
            r: 0
        };
        _SWWF = {
            v: IID.__WOOD_FLOOR__,
            b: IID.__STONE_WALL__,
            V: -1,
            r: 0
        };
        _SWLF = {
            v: IID.__WOODLIGHT_FLOOR__,
            b: IID.__STONE_WALL__,
            V: -1,
            r: 0
        };
        _SWSF = {
            v: IID.__STONE_FLOOR__,
            b: IID.__STONE_WALL__,
            V: -1,
            r: 0
        };
        _SWTF = {
            v: IID.__TILING_FLOOR__,
            b: IID.__STONE_WALL__,
            V: -1,
            r: 0
        };
        _SWGF = {
            v: IID.__GOLD_FLOOR__,
            b: IID.__STONE_WALL__,
            V: -1,
            r: 0
        };
        _SWRF = {
            v: IID.__RED_FLOOR__,
            b: IID.__STONE_WALL__,
            V: -1,
            r: 0
        };
        _MW = {
            v: 0,
            b: IID.__STEEL_WALL__,
            V: -1,
            r: 0
        };
        _MWWF = {
            v: IID.__WOOD_FLOOR__,
            b: IID.__STEEL_WALL__,
            V: -1,
            r: 0
        };
        _MWLF = {
            v: IID.__WOODLIGHT_FLOOR__,
            b: IID.__STEEL_WALL__,
            V: -1,
            r: 0
        };
        _MWSF = {
            v: IID.__STONE_FLOOR__,
            b: IID.__STEEL_WALL__,
            V: -1,
            r: 0
        };
        _MWTF = {
            v: IID.__TILING_FLOOR__,
            b: IID.__STEEL_WALL__,
            V: -1,
            r: 0
        };
        _MWGF = {
            v: IID.__GOLD_FLOOR__,
            b: IID.__STEEL_WALL__,
            V: -1,
            r: 0
        };
        _MWRF = {
            v: IID.__RED_FLOOR__,
            b: IID.__STEEL_WALL__,
            V: -1,
            r: 0
        };
        _SC = {
            v: 0,
            b: IID.__STONE_CAVE__,
            V: -1,
            r: 0
        };
        _SCSF = {
            v: IID.__STONE_FLOOR__,
            b: IID.__STONE_CAVE__,
            V: -1,
            r: 0
        };
        _SCTF = {
            v: IID.__TILING_FLOOR__,
            b: IID.__STONE_CAVE__,
            V: -1,
            r: 0
        };
        _BW = {
            v: 0,
            b: IID.__BUNKER_WALL__,
            V: -1,
            r: 0
        };
        _BWSF = {
            v: IID.__STONE_FLOOR__,
            b: IID.__BUNKER_WALL__,
            V: -1,
            r: 0
        };
        _BWTF = {
            v: IID.__TILING_FLOOR__,
            b: IID.__BUNKER_WALL__,
            V: -1,
            r: 0
        };
        HOUSE[HOUSEID.__HOUSE0__] = {
            width: 0,
            height: 0,
            radiation: 0,
            building: [
                [_EMP],
                [_EMP, _WWWF, _WWWF, _WWWF, {
                    v: 62,
                    b: 30,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 30,
                    V: -1,
                    r: 2
                }, _WWWF, _WWWF],
                [_EMP, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 0,
                    r: 3
                }, _WF, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 13,
                    r: 1
                }, _WWWF],
                [_EMP, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 22,
                    r: 3
                }, _WF, _WF, _WF, _WF, {
                    v: 62,
                    b: 30,
                    V: -1,
                    r: 3
                }],
                [_EMP, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 9,
                    r: 3
                }, {
                    v: 62,
                    b: 71,
                    V: 10,
                    r: 1
                }, _WF, _WF, _WF, {
                    v: 62,
                    b: 30,
                    V: -1,
                    r: 3
                }],
                [_EMP, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 17,
                    r: 0
                }, _WF, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 19,
                    r: 2
                }, _WWWF],
                [_EMP, _WWWF, _WWWF, _WWWF, _WWWF, _WWWF, _WWWF, _WWWF]
            ]
        };
        HOUSE[HOUSEID.__HOUSE1__] = {
            width: 0,
            height: 0,
            radiation: 0,
            building: [
                [_EMP],
                [_EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, _SWLF, _SWLF, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 2
                }, _SWLF, _SWLF, _SWLF],
                [_EMP, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 1
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 0
                }, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 28,
                    r: 3
                }, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 21,
                    r: 1
                }, _SWLF],
                [_EMP, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 1
                }, _WF, _WF, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 12,
                    r: 0
                }, _LF, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 1
                }],
                [_EMP, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 1
                }, _WF, _WF, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 3
                }, _LF, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 15,
                    r: 1
                }, _SWLF],
                [_EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, _SWWF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 0
                }, _SWLF, _LF, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 1
                }, _LF, {
                    v: 67,
                    b: 71,
                    V: 5,
                    r: 1
                }, _SWLF],
                [_EMP, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 0
                }, _SWWF, _WF, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 2
                }, _SWWF],
                [_EMP, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 2
                }, _WF, _WF, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 14,
                    r: 1
                }, _SWWF],
                [_EMP, _EMP, _SWWF, {
                    v: 67,
                    b: 71,
                    V: 27,
                    r: 0
                }, _LF, _LF, {
                    v: 62,
                    b: 71,
                    V: 8,
                    r: 3
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 1,
                    r: 1
                }, _SWWF],
                [_EMP, _EMP, _SWWF, {
                    v: 67,
                    b: 71,
                    V: 27,
                    r: 0
                }, _LF, {
                    v: 67,
                    b: 71,
                    V: 7,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 0
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 2,
                    r: 1
                }, _SWWF],
                [_EMP, _EMP, _SWWF, {
                    v: 67,
                    b: 71,
                    V: 20,
                    r: 0
                }, _LF, _LF, _WF, _WF, _WF, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 1
                }],
                [_EMP, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 1
                }, _SWWF, _SWWF, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 0
                }, _SWWF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 0
                }, _SWWF, _SWWF],
                [_EMP, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 2
                }, _EMP, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 0
                }]
            ]
        };
        HOUSE[HOUSEID.__HOUSE2__] = {
            width: 0,
            height: 0,
            radiation: 0,
            building: [
                [_EMP],
                [_EMP, _EMP, _EMP, _SWWF, _SWWF, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, _SWWF, _SWWF, _SWLF, _SWLF, _SWLF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 1
                }],
                [_EMP, _EMP, _EMP, _SWWF, {
                    v: 67,
                    b: 71,
                    V: 27,
                    r: 0
                }, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 3
                }, _SWWF, {
                    v: 67,
                    b: 71,
                    V: 5,
                    r: 0
                }, {
                    v: 67,
                    b: 71,
                    V: 13,
                    r: 1
                }, _SWLF, _WF, _WF, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 1
                }],
                [_EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, _SWWF, {
                    v: 67,
                    b: 71,
                    V: 20,
                    r: 0
                }, _LF, {
                    v: 67,
                    b: 71,
                    V: 7,
                    r: 3
                }, {
                    v: 67,
                    b: 71,
                    V: 16,
                    r: 2
                }, _SWWF, _LF, _LF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 3
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 1
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 1
                }],
                [_EMP, _WF, {
                    v: 62,
                    b: 71,
                    V: 2,
                    r: 1
                }, _SWWF, {
                    v: 67,
                    b: 71,
                    V: 11,
                    r: 3
                }, _LF, _LF, _LF, _SWWF, _LF, {
                    v: 67,
                    b: 71,
                    V: 12,
                    r: 2
                }, _SWLF, _SWLF, _SWLF, _SW],
                [_EMP, _WF, _WF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 1
                }, _WF, _WF, _WF, _WF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 3
                }, _LF, _LF, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 25,
                    r: 2
                }, {
                    v: 67,
                    b: 71,
                    V: 3,
                    r: 1
                }, _SWLF],
                [_EMP, _WF, _WF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 1
                }, _WF, _WF, _WF, _WF, _SWWF, _LF, _LF, {
                    v: 67,
                    b: 51,
                    V: -1,
                    r: 1
                }, _LF, {
                    v: 67,
                    b: 71,
                    V: 18,
                    r: 2
                }, _SWLF],
                [_EMP, _WF, _WF, _SW, {
                    v: 62,
                    b: 71,
                    V: 3,
                    r: 3
                }, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 16,
                    r: 2
                }, _SWWF, _SWLF, _SWLF, _SWLF, _SWLF, _SWLF, _SWLF],
                [_EMP, _WF, {
                    v: 62,
                    b: 71,
                    V: 26,
                    r: 0
                }, _SWWF, {
                    v: 0,
                    b: 71,
                    V: 4,
                    r: 3
                }, {
                    v: 62,
                    b: 71,
                    V: 22,
                    r: 1
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 8,
                    r: 1
                }, _SWWF, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 1
                }, _EMP, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 0
                }],
                [_EMP, _WF, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 0
                }, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 1
                }, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 14,
                    r: 1
                }, _SWWF, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 1
                }],
                [_EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, _SWWF, _SWWF, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 0
                }, _SWWF, _SWWF, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 1
                }]
            ]
        };
        HOUSE[HOUSEID.__HOUSE3__] = {
            width: 0,
            height: 0,
            radiation: 0,
            building: [
                [_EMP],
                [_EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, _SWLF, _SWLF, _SWLF, _SWLF],
                [_EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 71,
                    V: 23,
                    r: 2
                }, _EMP, _EMP, _EMP, _EMP, _EMP, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 21,
                    r: 0
                }, {
                    v: 67,
                    b: 71,
                    V: 28,
                    r: 0
                }, _SWLF],
                [_EMP, _SWWF, _SWWF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 2
                }, _SWWF, _SWWF, _EMP, _SWLF, _LF, _LF, _SWLF],
                [_EMP, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 12,
                    r: 0
                }, _WF, _WF, _WF, _SWWF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 2
                }, _SWLF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 0
                }, _SWLF, _SWLF],
                [_EMP, _SWWF, _WF, {
                    v: 62,
                    b: 71,
                    V: 2,
                    r: 0
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 14,
                    r: 1
                }, _SWWF, _WF, _WF, _WF, _WF, _SWWF],
                [_EMP, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 0,
                    r: 3
                }, {
                    v: 62,
                    b: 71,
                    V: 7,
                    r: 0
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 8,
                    r: 1
                }, _SWWF, _WF, {
                    v: 62,
                    b: 71,
                    V: 14,
                    r: 2
                }, {
                    v: 62,
                    b: 71,
                    V: 5,
                    r: 2
                }, _WF, _SWWF],
                [_EMP, _SWWF, _WF, {
                    v: 62,
                    b: 71,
                    V: 1,
                    r: 2
                }, _WF, _WF, _SWWF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 2
                }, _SWWF, _SWWF, _SWWF, _SWWF, _SWLF],
                [_EMP, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 1
                }, _WF, _WF, _WF, _WF, _WF, _WF, _WF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 3
                }, _LF, _LF, _SWLF],
                [_EMP, _SWWF, _WF, _WF, _WF, _WF, _WF, _WF, _WF, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 25,
                    r: 3
                }, {
                    v: 67,
                    b: 71,
                    V: 18,
                    r: 3
                }, _SWLF],
                [_EMP, _SWWF, _SWWF, _SWWF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 2
                }, _SWWF, _SWWF, _SWWF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 2
                }, _SWLF, _SWLF, _SWLF, _SWLF],
                [_EMP, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 20,
                    r: 1
                }, {
                    v: 62,
                    b: 71,
                    V: 11,
                    r: 0
                }, _WF, _WF, _SWWF, {
                    v: 67,
                    b: 71,
                    V: 24,
                    r: 0
                }, _LF, _LF, _LF, _LF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 3
                }],
                [_EMP, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 1
                }, _WF, _WF, _WF, _WF, _SWWF, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 0
                }, _LF, _LF, _LF, _LF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 3
                }],
                [_EMP, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 1
                }, _WF, _WF, _WF, _WF, _SWWF, _SWWF, _SWWF, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }],
                [_EMP, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 14,
                    r: 2
                }, {
                    v: 62,
                    b: 71,
                    V: 13,
                    r: 3
                }, {
                    v: 62,
                    b: 71,
                    V: 12,
                    r: 3
                }, _WF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 1
                }, {
                    v: 67,
                    b: 71,
                    V: 12,
                    r: 2
                }, _SWWF],
                [_EMP, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWLF, _SWWF, _SWWF]
            ]
        };
        HOUSE[HOUSEID.__HOUSE4__] = {
            width: 0,
            height: 0,
            radiation: 0,
            building: [
                [_EMP],
                [_EMP, _SWLF, _SWLF, _SWLF, _SWLF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 2
                }, _SWLF, _SWLF, _SWLF, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, _SW],
                [_EMP, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 12,
                    r: 0
                }, _LF, {
                    v: 67,
                    b: 71,
                    V: 5,
                    r: 0
                }, _LF, {
                    v: 67,
                    b: 71,
                    V: 11,
                    r: 1
                }, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 13,
                    r: 0
                }, _LF, _LF, _SWLF],
                [_EMP, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 13,
                    r: 0
                }, _LF, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 19,
                    r: 2
                }, _SWLF, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 21,
                    r: 1
                }, _SWLF],
                [_EMP, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 9,
                    r: 3
                }, _LF, {
                    v: 67,
                    b: 71,
                    V: 7,
                    r: 1
                }, _LF, {
                    v: 67,
                    b: 71,
                    V: 26,
                    r: 3
                }, _SWLF, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 28,
                    r: 1
                }, _SWLF],
                [_EMP, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 13,
                    r: 0
                }, _LF, _LF, _LF, _LF, _SWLF, _LF, _SWLF, _SWLF, _SWLF],
                [_EMP, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 9,
                    r: 3
                }, {
                    v: 67,
                    b: 71,
                    V: 10,
                    r: 1
                }, {
                    v: 67,
                    b: 71,
                    V: 12,
                    r: 3
                }, _LF, _LF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 1
                }, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 27,
                    r: 2
                }, _SWLF],
                [_EMP, _SWLF, _SWLF, _SWLF, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, _SWLF, _SWLF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 0
                }, _SWLF, _SWLF, _SWLF],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 3
                }, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 3
                }]
            ]
        };
        HOUSE[HOUSEID.__HOUSE5__] = {
            width: 0,
            height: 0,
            radiation: 0,
            building: [
                [_EMP],
                [_EMP, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF],
                [_EMP, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 0
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 9,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 9,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 9,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 9,
                    r: 0
                }, _WF, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 0
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 1,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 2,
                    r: 0
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 1
                }, _SWWF, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 1
                }],
                [_EMP, _SWWF, _LF, _LF, {
                    v: 62,
                    b: 71,
                    V: 10,
                    r: 2
                }, {
                    v: 62,
                    b: 71,
                    V: 10,
                    r: 2
                }, {
                    v: 62,
                    b: 71,
                    V: 10,
                    r: 2
                }, {
                    v: 62,
                    b: 71,
                    V: 10,
                    r: 2
                }, _WF, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 39,
                    r: 0
                }, _WF, _WF, _WF, _WF, _WF, _SWWF],
                [_EMP, _SWWF, {
                    v: 67,
                    b: 71,
                    V: 39,
                    r: 3
                }, _LF, _LF, _LF, _LF, _LF, _LF, {
                    v: 62,
                    b: 150,
                    V: -1,
                    r: 3
                }, _LF, _LF, _LF, _LF, _LF, _LF, {
                    v: 67,
                    b: 51,
                    V: -1,
                    r: 1
                }],
                [_EMP, _SWWF, {
                    v: 85,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 85,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 1
                }, _LF, _LF, _LF, _LF, {
                    v: 62,
                    b: 150,
                    V: -1,
                    r: 3
                }, _LF, _LF, _LF, _LF, _LF, _LF, {
                    v: 67,
                    b: 51,
                    V: -1,
                    r: 3
                }],
                [_EMP, _SWWF, {
                    v: 85,
                    b: 71,
                    V: 28,
                    r: 3
                }, _TF, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 1
                }, {
                    v: 62,
                    b: 71,
                    V: 10,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 10,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 10,
                    r: 0
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 149,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 71,
                    V: 40,
                    r: 1
                }, {
                    v: 62,
                    b: 71,
                    V: 7,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 7,
                    r: 1
                }, _SWWF],
                [_EMP, _SWWF, {
                    v: 85,
                    b: 71,
                    V: 21,
                    r: 3
                }, _TF, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 1
                }, {
                    v: 62,
                    b: 71,
                    V: 9,
                    r: 2
                }, {
                    v: 62,
                    b: 71,
                    V: 9,
                    r: 2
                }, {
                    v: 62,
                    b: 71,
                    V: 9,
                    r: 2
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 142,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 1
                }, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 1
                }, {
                    v: 62,
                    b: 144,
                    V: -1,
                    r: 0
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 8,
                    r: 1
                }, _SWWF],
                [_EMP, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWTF, {
                    v: 0,
                    b: 71,
                    V: 41,
                    r: 2
                }, _SWTF, _SWTF, _SWTF, _SWWF, _SWWF, _SWWF],
                [_EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 3
                }, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 3
                }, _EMP, _EMP, _EMP, _SWTF, _TF, _TF, {
                    v: 85,
                    b: 71,
                    V: 18,
                    r: 2
                }, _SWTF, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 0
                }],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _SWTF, {
                    v: 85,
                    b: 71,
                    V: 25,
                    r: 1
                }, _TF, {
                    v: 85,
                    b: 71,
                    V: 19,
                    r: 2
                }, _SWTF],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _SWTF, _SWTF, _SWTF, _SWTF, _SWTF]
            ]
        };
        HOUSE[HOUSEID.__HOUSE6__] = {
            width: 0,
            height: 0,
            radiation: 0,
            building: [
                [_EMP],
                [_EMP, _WWWF, _WWWF, _WWWF, {
                    v: 67,
                    b: 50,
                    V: -1,
                    r: 2
                }, _WWWF, _WWWF, _WWWF],
                [_EMP, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 9,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 8,
                    r: 0
                }, _LF, {
                    v: 62,
                    b: 71,
                    V: 13,
                    r: 1
                }, {
                    v: 62,
                    b: 71,
                    V: 6,
                    r: 0
                }, _WWWF],
                [_EMP, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 10,
                    r: 2
                }, _WF, _LF, _WF, _WF, _WWWF],
                [_EMP, {
                    v: 67,
                    b: 50,
                    V: -1,
                    r: 1
                }, _LF, _LF, {
                    v: 67,
                    b: 148,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 144,
                    V: -1,
                    r: 0
                }, _LF, {
                    v: 67,
                    b: 50,
                    V: -1,
                    r: 3
                }],
                [_EMP, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 28,
                    r: 3
                }, _WF, _LF, _WF, {
                    v: 62,
                    b: 71,
                    V: 19,
                    r: 2
                }, _WWWF],
                [_EMP, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 21,
                    r: 3
                }, _WF, _LF, _WF, {
                    v: 62,
                    b: 71,
                    V: 26,
                    r: 2
                }, _WWWF],
                [_EMP, _WWWF, _WWWF, _WWWF, {
                    v: 67,
                    b: 50,
                    V: -1,
                    r: 0
                }, _WWWF, _WWWF, _WWWF]
            ]
        };
        HOUSE[HOUSEID.__HOUSE7__] = {
            width: 0,
            height: 0,
            radiation: 0,
            building: [
                [_EMP],
                [_EMP, _SW, _SW, _SW, _SW, _SW, _SW, _SW, _SW],
                [_EMP, _SW, {
                    v: 62,
                    b: 148,
                    V: -1,
                    r: 1
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 16,
                    r: 1
                }, {
                    v: 62,
                    b: 71,
                    V: 39,
                    r: 1
                }, _WF, {
                    v: 62,
                    b: 148,
                    V: -1,
                    r: 1
                }, _SW],
                [_EMP, _SW, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 0
                }, _SW],
                [_EMP, _SW, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 69,
                    V: -1,
                    r: 1
                }, _SF, _SF, {
                    v: 84,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 0
                }, _SW],
                [_EMP, _SW, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 69,
                    V: -1,
                    r: 1
                }, _SF, _SF, {
                    v: 84,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 0
                }, _SW],
                [_EMP, _SW, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 69,
                    V: -1,
                    r: 1
                }, _SF, _SF, {
                    v: 84,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 0
                }, _SW],
                [_EMP, _SW, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 0
                }, _SW],
                [_EMP, _SW, {
                    v: 62,
                    b: 148,
                    V: -1,
                    r: 1
                }, {
                    v: 62,
                    b: 144,
                    V: -1,
                    r: 0
                }, _WF, _WF, {
                    v: 62,
                    b: 144,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 148,
                    V: -1,
                    r: 1
                }, _SW],
                [_EMP, _SW, _SW, _SW, {
                    v: 84,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 84,
                    b: 31,
                    V: -1,
                    r: 2
                }, _SW, _SW, _SW, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 1
                }],
                [_EMP, _SW, {
                    v: 84,
                    b: 71,
                    V: 8,
                    r: 0
                }, {
                    v: 84,
                    b: 71,
                    V: 8,
                    r: 0
                }, _SF, _SF, {
                    v: 84,
                    b: 71,
                    V: 8,
                    r: 0
                }, {
                    v: 84,
                    b: 71,
                    V: 8,
                    r: 0
                }, _SW, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 1
                }],
                [_EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }]
            ]
        };
        HOUSE[HOUSEID.__HOUSE8__] = {
            width: 0,
            height: 0,
            radiation: 0,
            building: [
                [_EMP],
                [_EMP, _LF, {
                    v: 67,
                    b: 148,
                    V: -1,
                    r: 0
                }, _LF, _LF, _LF, {
                    v: 67,
                    b: 151,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 148,
                    V: -1,
                    r: 3
                }, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 0
                }, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 3
                }, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 3
                }],
                [_EMP, _MWLF, {
                    v: 67,
                    b: 149,
                    V: -1,
                    r: 0
                }, _MWLF, {
                    v: 67,
                    b: 150,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 150,
                    V: -1,
                    r: 0
                }, _MWLF, {
                    v: 67,
                    b: 149,
                    V: -1,
                    r: 0
                }, _MWWF, _MWWF, _MW, _MW, _MW, _MW],
                [_EMP, _MW, {
                    v: 62,
                    b: 148,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 151,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 143,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 143,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 148,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 0
                }, _MWWF, {
                    v: 84,
                    b: 71,
                    V: 23,
                    r: 0
                }, {
                    v: 84,
                    b: 71,
                    V: 28,
                    r: 0
                }, {
                    v: 84,
                    b: 71,
                    V: 28,
                    r: 0
                }, _MW, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 3
                }],
                [_EMP, _MW, _WF, _LF, _LF, _LF, _LF, {
                    v: 62,
                    b: 142,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 146,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 32,
                    V: -1,
                    r: 3
                }, _SF, _SF, _SF, _MW],
                [_EMP, _MW, {
                    v: 62,
                    b: 71,
                    V: 4,
                    r: 3
                }, _LF, {
                    v: 67,
                    b: 71,
                    V: 7,
                    r: 3
                }, {
                    v: 67,
                    b: 71,
                    V: 7,
                    r: 3
                }, _LF, {
                    v: 62,
                    b: 71,
                    V: 3,
                    r: 1
                }, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 0
                }, _MW, _MW, _TF, _TF, _MW],
                [_EMP, _MW, {
                    v: 62,
                    b: 71,
                    V: 3,
                    r: 3
                }, _LF, {
                    v: 67,
                    b: 71,
                    V: 7,
                    r: 3
                }, {
                    v: 67,
                    b: 71,
                    V: 7,
                    r: 3
                }, _LF, {
                    v: 62,
                    b: 71,
                    V: 4,
                    r: 1
                }, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 0
                }, {
                    v: 85,
                    b: 71,
                    V: 21,
                    r: 3
                }, {
                    v: 85,
                    b: 32,
                    V: -1,
                    r: 3
                }, _TF, _TF, _MW],
                [_EMP, _MW, _WF, _LF, _LF, _LF, _LF, _WF, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 0
                }, _MW, _MW, _MW, _MW, _MW],
                [_EMP, _MW, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 3
                }, _WF, _WF, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 3
                }, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 0
                }, _MW],
                [_EMP, _MWLF, _MWLF, _MWLF, {
                    v: 67,
                    b: 52,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 52,
                    V: -1,
                    r: 2
                }, _MWLF, _MWLF, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 0
                }, _MWLF],
                [_EMP, _MWLF, {
                    v: 67,
                    b: 71,
                    V: 27,
                    r: 1
                }, _LF, _LF, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 16,
                    r: 1
                }, {
                    v: 67,
                    b: 144,
                    V: -1,
                    r: 3
                }, _MWLF],
                [_EMP, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 1
                }, _LF, _WF, _WF, _WF, _LF, {
                    v: 67,
                    b: 71,
                    V: 13,
                    r: 0
                }, _LF, _MWLF],
                [_EMP, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 1
                }, _LF, {
                    v: 62,
                    b: 71,
                    V: 4,
                    r: 3
                }, _WF, _WF, _LF, {
                    v: 67,
                    b: 71,
                    V: 9,
                    r: 3
                }, {
                    v: 67,
                    b: 71,
                    V: 10,
                    r: 1
                }, _MWLF, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 3
                }],
                [_EMP, _MWLF, {
                    v: 67,
                    b: 71,
                    V: 27,
                    r: 0
                }, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 3,
                    r: 2
                }, _LF, _LF, _LF, _MWLF, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 2
                }],
                [_EMP, _MWLF, {
                    v: 67,
                    b: 71,
                    V: 18,
                    r: 0
                }, _LF, _LF, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 0
                }, {
                    v: 67,
                    b: 71,
                    V: 12,
                    r: 3
                }, _MWLF],
                [_EMP, _MWLF, _MWLF, _MWLF, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 0
                }, _MWLF, _MWLF, _MWLF, _MWLF]
            ]
        };
        HOUSE[HOUSEID.__HOUSE9__] = {
            width: 0,
            height: 0,
            radiation: 0,
            building: [
                [_EMP],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 151,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 148,
                    V: -1,
                    r: 0
                }, _EMP, {
                    v: 0,
                    b: 148,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 151,
                    V: -1,
                    r: 0
                }],
                [_EMP, _WW, _WW, {
                    v: 0,
                    b: 30,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 30,
                    V: -1,
                    r: 2
                }, _MWTF, _MWTF, {
                    v: 67,
                    b: 149,
                    V: -1,
                    r: 2
                }, {
                    v: 67,
                    b: 150,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 149,
                    V: -1,
                    r: 0
                }, _MWTF],
                [_EMP, _WW, {
                    v: 0,
                    b: 71,
                    V: 23,
                    r: 3
                }, _EMP, _EMP, _MWTF, {
                    v: 67,
                    b: 71,
                    V: 9,
                    r: 0
                }, {
                    v: 67,
                    b: 143,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 146,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 143,
                    V: -1,
                    r: 1
                }, _MWTF, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 2
                }],
                [_EMP, _WW, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 3
                }, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 3
                }, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 3
                }, _MWTF, {
                    v: 67,
                    b: 71,
                    V: 10,
                    r: 2
                }, {
                    v: 67,
                    b: 151,
                    V: -1,
                    r: 1
                }, _LF, {
                    v: 67,
                    b: 151,
                    V: -1,
                    r: 1
                }, _MWTF, _MWTF, _MWTF],
                [_EMP, _WW, {
                    v: 0,
                    b: 144,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 144,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 144,
                    V: -1,
                    r: 3
                }, _MWTF, _LF, _LF, _LF, _LF, {
                    v: 62,
                    b: 71,
                    V: 20,
                    r: 1
                }, {
                    v: 62,
                    b: 71,
                    V: 11,
                    r: 0
                }, {
                    v: 62,
                    b: 70,
                    V: -1,
                    r: 3
                }],
                [_EMP, _MWTF, {
                    v: 85,
                    b: 149,
                    V: -1,
                    r: 0
                }, {
                    v: 85,
                    b: 149,
                    V: -1,
                    r: 0
                }, {
                    v: 85,
                    b: 149,
                    V: -1,
                    r: 0
                }, _MWTF, {
                    v: 62,
                    b: 32,
                    V: -1,
                    r: 2
                }, _MWWF, {
                    v: 67,
                    b: 71,
                    V: 8,
                    r: 0
                }, _LF, _WF, _WF, {
                    v: 62,
                    b: 70,
                    V: -1,
                    r: 3
                }],
                [_EMP, {
                    v: 85,
                    b: 70,
                    V: -1,
                    r: 1
                }, {
                    v: 85,
                    b: 147,
                    V: -1,
                    r: 2
                }, {
                    v: 85,
                    b: 146,
                    V: -1,
                    r: 2
                }, {
                    v: 85,
                    b: 140,
                    V: -1,
                    r: 2
                }, _MWTF, _WF, {
                    v: 62,
                    b: 70,
                    V: -1,
                    r: 3
                }, _LF, _LF, _WF, _WF, {
                    v: 62,
                    b: 70,
                    V: -1,
                    r: 3
                }],
                [_EMP, _MWTF, {
                    v: 85,
                    b: 71,
                    V: 31,
                    r: 0
                }, {
                    v: 85,
                    b: 142,
                    V: -1,
                    r: 3
                }, {
                    v: 85,
                    b: 146,
                    V: -1,
                    r: 1
                }, {
                    v: 85,
                    b: 150,
                    V: -1,
                    r: 1
                }, {
                    v: 62,
                    b: 71,
                    V: 5,
                    r: 2
                }, {
                    v: 62,
                    b: 70,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 71,
                    V: 0,
                    r: 2
                }, _LF, {
                    v: 62,
                    b: 71,
                    V: 10,
                    r: 3
                }, {
                    v: 62,
                    b: 71,
                    V: 7,
                    r: 0
                }, {
                    v: 62,
                    b: 70,
                    V: -1,
                    r: 3
                }],
                [_EMP, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, {
                    v: 85,
                    b: 32,
                    V: -1,
                    r: 2
                }, _MWTF, _MWTF, _MWTF],
                [_EMP, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 0
                }, _MWTF, {
                    v: 85,
                    b: 71,
                    V: 28,
                    r: 3
                }, _TF, _TF, _MWTF, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 0
                }, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWTF, {
                    v: 85,
                    b: 71,
                    V: 21,
                    r: 3
                }, _TF, {
                    v: 85,
                    b: 71,
                    V: 18,
                    r: 3
                }, _MWTF],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF]
            ]
        };
        HOUSE[HOUSEID.__CITY0__] = {
            width: 0,
            height: 0,
            radiation: __RADIATION__,
            building: [
                [_EMP],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 111,
                    V: -1,
                    r: 3
                }, _EMP, _EMP, {
                    v: 0,
                    b: 111,
                    V: -1,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 111,
                    V: -1,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 111,
                    V: -1,
                    r: 3
                }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 26,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 24,
                    r: 0
                }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 0
                }],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 0
                }],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWTF, {
                    v: 85,
                    b: 71,
                    V: 37,
                    r: 1
                }, {
                    v: 85,
                    b: 71,
                    V: 28,
                    r: 0
                }, _TF, {
                    v: 85,
                    b: 71,
                    V: 31,
                    r: 1
                }, {
                    v: 85,
                    b: 71,
                    V: 32,
                    r: 1
                }, _MWTF, {
                    v: 85,
                    b: 71,
                    V: 37,
                    r: 1
                }, _TF, _TF, _MWTF, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _MWLF, _WF, {
                    v: 62,
                    b: 70,
                    V: -1,
                    r: 3
                }, _LF, _LF, {
                    v: 62,
                    b: 71,
                    V: 13,
                    r: 2
                }, _MWLF, _MWSF, _MWSF, _MWSF, _MWSF],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWTF, _TF, _TF, _TF, _TF, _TF, _MWTF, _TF, _TF, {
                    v: 85,
                    b: 71,
                    V: 36,
                    r: 1
                }, _MWTF, _EMP, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 0
                }, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, {
                    v: 0,
                    b: 71,
                    V: 23,
                    r: 0
                }, _MWLF, _WF, {
                    v: 62,
                    b: 71,
                    V: 40,
                    r: 2
                }, _LF, _LF, {
                    v: 62,
                    b: 71,
                    V: 12,
                    r: 2
                }, _MWLF, {
                    v: 84,
                    b: 71,
                    V: 26,
                    r: 3
                }, {
                    v: 84,
                    b: 71,
                    V: 17,
                    r: 3
                }, _SF, _MWSF],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 0
                }, _MWSF, _MWSF, {
                    v: 84,
                    b: 52,
                    V: -1,
                    r: 0
                }, _MWSF, _MWSF, _MWTF, _MWTF, _MWSF, {
                    v: 85,
                    b: 71,
                    V: 41,
                    r: 0
                }, _MWSF, {
                    v: 85,
                    b: 71,
                    V: 41,
                    r: 0
                }, _MWTF, _MW, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, {
                    v: 0,
                    b: 151,
                    V: -1,
                    r: 1
                }, {
                    v: 67,
                    b: 150,
                    V: -1,
                    r: 1
                }, _LF, _LF, _LF, _LF, _WF, _MWLF, _SF, _SF, {
                    v: 84,
                    b: 71,
                    V: 18,
                    r: 2
                }, _MWSF],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWSF, _SF, _SF, _SF, _SF, {
                    v: 84,
                    b: 71,
                    V: 35,
                    r: 2
                }, {
                    v: 84,
                    b: 71,
                    V: 35,
                    r: 2
                }, _SF, _SF, _SF, _SF, {
                    v: 84,
                    b: 71,
                    V: 35,
                    r: 2
                }, {
                    v: 84,
                    b: 71,
                    V: 35,
                    r: 2
                }, _SF, _SF, _SF, _SF, {
                    v: 84,
                    b: 71,
                    V: 33,
                    r: 2
                }, _MWTF, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, {
                    v: 0,
                    b: 151,
                    V: -1,
                    r: 1
                }, {
                    v: 67,
                    b: 150,
                    V: -1,
                    r: 1
                }, _LF, _LF, _LF, _LF, _WF, {
                    v: 67,
                    b: 71,
                    V: 41,
                    r: 1
                }, _SF, _SF, {
                    v: 84,
                    b: 71,
                    V: 18,
                    r: 2
                }, _MWSF],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWSF, {
                    v: 84,
                    b: 71,
                    V: 9,
                    r: 0
                }, _SF, _SF, _SF, _SF, _SF, {
                    v: 84,
                    b: 151,
                    V: -1,
                    r: 1
                }, _SF, _SF, {
                    v: 84,
                    b: 151,
                    V: -1,
                    r: 1
                }, _SF, _SF, _SF, _SF, _SF, _SF, {
                    v: 85,
                    b: 71,
                    V: 33,
                    r: 2
                }, _MWTF, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, {
                    v: 0,
                    b: 71,
                    V: 23,
                    r: 0
                }, _MWLF, {
                    v: 62,
                    b: 71,
                    V: 39,
                    r: 3
                }, {
                    v: 62,
                    b: 71,
                    V: 39,
                    r: 3
                }, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 3
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 2
                }, _MWLF, {
                    v: 84,
                    b: 71,
                    V: 26,
                    r: 2
                }, _SF, {
                    v: 84,
                    b: 71,
                    V: 16,
                    r: 2
                }, _MWSF, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 1
                }],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWSF, {
                    v: 84,
                    b: 71,
                    V: 10,
                    r: 2
                }, _SF, _SF, _SF, _MWSF, _MWSF, {
                    v: 84,
                    b: 149,
                    V: -1,
                    r: 2
                }, {
                    v: 85,
                    b: 150,
                    V: -1,
                    r: 0
                }, {
                    v: 85,
                    b: 150,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 149,
                    V: -1,
                    r: 2
                }, _MWSF, _MWSF, _SF, _SF, _MWTF, _MWSF, _MWTF, _MWTF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _MWLF, _MWLF, _MWLF, _MWLF, {
                    v: 0,
                    b: 52,
                    V: -1,
                    r: 0
                }, _MWLF, _MWLF, _MWSF, _MWSF, _MWSF, _MWSF],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWSF, _MWSF, _MWSF, {
                    v: 84,
                    b: 71,
                    V: 33,
                    r: 0
                }, _SF, _MWSF, {
                    v: 84,
                    b: 71,
                    V: 32,
                    r: 0
                }, {
                    v: 84,
                    b: 142,
                    V: -1,
                    r: 3
                }, {
                    v: 84,
                    b: 140,
                    V: -1,
                    r: 1
                }, {
                    v: 85,
                    b: 146,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 142,
                    V: -1,
                    r: 2
                }, {
                    v: 84,
                    b: 151,
                    V: -1,
                    r: 2
                }, {
                    v: 84,
                    b: 150,
                    V: -1,
                    r: 1
                }, _SF, {
                    v: 84,
                    b: 71,
                    V: 33,
                    r: 2
                }, _MWTF, {
                    v: 0,
                    b: 71,
                    V: 37,
                    r: 1
                }, {
                    v: 0,
                    b: 71,
                    V: 38,
                    r: 1
                }, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }, _SF, _SF, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 0
                }],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWSF, {
                    v: 84,
                    b: 71,
                    V: 22,
                    r: 0
                }, _SF, _MWSF, _SF, {
                    v: 84,
                    b: 71,
                    V: 34,
                    r: 3
                }, _TF, {
                    v: 85,
                    b: 140,
                    V: -1,
                    r: 2
                }, {
                    v: 84,
                    b: 71,
                    V: 34,
                    r: 3
                }, _SF, _MWSF, _SF, {
                    v: 84,
                    b: 71,
                    V: 38,
                    r: 0
                }, _MWTF, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 32,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 24,
                    r: 0
                }],
                [_EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 26,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 24,
                    r: 0
                }, _EMP, _MWSF, _MW, {
                    v: 84,
                    b: 32,
                    V: -1,
                    r: 0
                }, _MWSF, {
                    v: 84,
                    b: 142,
                    V: -1,
                    r: 0
                }, {
                    v: 85,
                    b: 148,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 146,
                    V: -1,
                    r: 1
                }, {
                    v: 85,
                    b: 146,
                    V: -1,
                    r: 0
                }, {
                    v: 85,
                    b: 148,
                    V: -1,
                    r: 0
                }, {
                    v: 85,
                    b: 142,
                    V: -1,
                    r: 1
                }, _MWSF, {
                    v: 84,
                    b: 32,
                    V: -1,
                    r: 0
                }, _MW, _MWTF, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 35,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 31,
                    r: 0
                }],
                [_EMP, _EMP, _EMP, _MWTF, _MWTF, _MWTF, _MWTF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, {
                    v: 0,
                    b: 70,
                    V: -1,
                    r: 3
                }, _TF, _TF, _MWSF, {
                    v: 84,
                    b: 140,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 71,
                    V: 34,
                    r: 1
                }, {
                    v: 85,
                    b: 140,
                    V: -1,
                    r: 2
                }, _TF, {
                    v: 84,
                    b: 71,
                    V: 34,
                    r: 1
                }, {
                    v: 84,
                    b: 140,
                    V: -1,
                    r: 2
                }, _MWSF, _TF, _TF, {
                    v: 0,
                    b: 70,
                    V: -1,
                    r: 1
                }, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 23,
                    r: 0
                }, _EMP, _EMP, _EMP, _WF],
                [_EMP, _EMP, _EMP, _MWTF, {
                    v: 85,
                    b: 71,
                    V: 33,
                    r: 1
                }, {
                    v: 85,
                    b: 71,
                    V: 33,
                    r: 1
                }, _MWTF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, {
                    v: 0,
                    b: 70,
                    V: -1,
                    r: 3
                }, {
                    v: 85,
                    b: 70,
                    V: -1,
                    r: 2
                }, _SF, {
                    v: 84,
                    b: 144,
                    V: -1,
                    r: 1
                }, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 1
                }, {
                    v: 84,
                    b: 145,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 142,
                    V: -1,
                    r: 0
                }, {
                    v: 85,
                    b: 146,
                    V: -1,
                    r: 0
                }, {
                    v: 85,
                    b: 147,
                    V: -1,
                    r: 3
                }, {
                    v: 84,
                    b: 142,
                    V: -1,
                    r: 1
                }, {
                    v: 84,
                    b: 146,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 3
                }, {
                    v: 84,
                    b: 144,
                    V: -1,
                    r: 1
                }, _SF, {
                    v: 85,
                    b: 70,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 70,
                    V: -1,
                    r: 1
                }, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _WWLF, _WWLF, {
                    v: 67,
                    b: 30,
                    V: -1,
                    r: 2
                }, _WWLF, _WWLF, _WF, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }],
                [_EMP, _EMP, _EMP, _MWSF, _SF, _SF, _MWSF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, {
                    v: 0,
                    b: 32,
                    V: -1,
                    r: 3
                }, _TF, _TF, _TF, _MWSF, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 0
                }, {
                    v: 85,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 85,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 0
                }, _MWSF, _TF, _TF, _TF, {
                    v: 0,
                    b: 32,
                    V: -1,
                    r: 1
                }, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 0
                }, _WWLF, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 6,
                    r: 1
                }, _WWLF, _WF, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 1
                }, _LF, _LF, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }],
                [_EMP, _EMP, _EMP, {
                    v: 84,
                    b: 71,
                    V: 41,
                    r: 1
                }, _SF, _SF, {
                    v: 84,
                    b: 71,
                    V: 41,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, {
                    v: 0,
                    b: 70,
                    V: -1,
                    r: 3
                }, {
                    v: 85,
                    b: 70,
                    V: -1,
                    r: 0
                }, _SF, _SF, _SF, {
                    v: 84,
                    b: 144,
                    V: -1,
                    r: 1
                }, {
                    v: 84,
                    b: 144,
                    V: -1,
                    r: 1
                }, _SF, _SF, {
                    v: 84,
                    b: 144,
                    V: -1,
                    r: 1
                }, {
                    v: 84,
                    b: 144,
                    V: -1,
                    r: 1
                }, _SF, _SF, _SF, {
                    v: 85,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 70,
                    V: -1,
                    r: 1
                }, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, {
                    v: 67,
                    b: 30,
                    V: -1,
                    r: 1
                }, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 19,
                    r: 2
                }, _WWWF, _WF, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 1
                }, _LF, _LF, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }],
                [_EMP, _EMP, _EMP, _MWTF, {
                    v: 85,
                    b: 71,
                    V: 36,
                    r: 2
                }, {
                    v: 85,
                    b: 71,
                    V: 37,
                    r: 3
                }, _MWTF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, {
                    v: 0,
                    b: 70,
                    V: -1,
                    r: 3
                }, {
                    v: 85,
                    b: 71,
                    V: 39,
                    r: 0
                }, _TF, _TF, _TF, _TF, _TF, _TF, _TF, _TF, _TF, _TF, {
                    v: 85,
                    b: 71,
                    V: 35,
                    r: 1
                }, {
                    v: 0,
                    b: 70,
                    V: -1,
                    r: 1
                }, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _WWLF, {
                    v: 67,
                    b: 71,
                    V: 8,
                    r: 3
                }, _LF, {
                    v: 67,
                    b: 71,
                    V: 0,
                    r: 1
                }, _WWLF, _WF, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 1
                }, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 1
                }, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 1
                }, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }],
                [_EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 1
                }, _MWTF, _MWTF, _MWTF, _MWTF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, {
                    v: 0,
                    b: 70,
                    V: -1,
                    r: 3
                }, {
                    v: 84,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 32,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 32,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 70,
                    V: -1,
                    r: 1
                }, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, {
                    v: 0,
                    b: 71,
                    V: 23,
                    r: 0
                }, _WWLF, _WWLF, _WWLF, _WWLF, _WWLF, _WF, _SWLF, _SWLF, _SWLF, _SWLF, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _WF, _WF, _WF, _WF, _WF, _WF, _WF, _SWLF, _WF, {
                    v: 62,
                    b: 71,
                    V: 21,
                    r: 1
                }, _SWWF, _LF, _LF, _LF, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 3
                }],
                [{
                    v: 0,
                    b: 86,
                    V: 26,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 33,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 32,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 33,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 32,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 24,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 2
                }, _SWLF, _SWLF, _SWLF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 0
                }, _SWWF, _SWWF, {
                    v: 67,
                    b: 51,
                    V: -1,
                    r: 2
                }, _SWLF, _SWLF, _SWLF, _SWLF],
                [{
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 28,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 0
                }, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 13,
                    r: 1
                }, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 27,
                    r: 1
                }, _LF, _LF, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 3
                }, _LF, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 3
                }],
                [{
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 27,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, _WF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 1
                }, _LF, _LF, _LF, _LF, _LF, _LF, _SWLF, _LF, _LF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 3
                }],
                [{
                    v: 0,
                    b: 86,
                    V: 30,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 42,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 43,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 34,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 0
                }, _SWLF, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 0
                }, _LF, _LF, _SWLF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 0
                }, _SWLF, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 1
                }],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 7,
                    r: 0
                }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 84,
                    b: 71,
                    V: 23,
                    r: 0
                }, {
                    v: 84,
                    b: 151,
                    V: -1,
                    r: 0
                }, {
                    v: 84,
                    b: 71,
                    V: 23,
                    r: 0
                }, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 0
                }, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 15,
                    r: 0
                }, {
                    v: 67,
                    b: 71,
                    V: 4,
                    r: 0
                }, {
                    v: 67,
                    b: 71,
                    V: 3,
                    r: 0
                }, {
                    v: 67,
                    b: 71,
                    V: 14,
                    r: 0
                }, _LF, _LF, _LF, _LF, _LF, _SWLF, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 1
                }],
                [_EMP, _EMP, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 26,
                    r: 1
                }, _WF, _WF, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 16,
                    r: 2
                }, _WF, _WF, _WWWF, {
                    v: 0,
                    b: 31,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 31,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 15,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, _EMP, _EMP, _EMP, _MWWF, _MWWF, _MWWF, {
                    v: 62,
                    b: 150,
                    V: -1,
                    r: 3
                }, _MWWF, _MWWF, _MWWF, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 0
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 23,
                    r: 0
                }, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 4,
                    r: 3
                }, {
                    v: 67,
                    b: 71,
                    V: 7,
                    r: 3
                }, {
                    v: 67,
                    b: 71,
                    V: 7,
                    r: 3
                }, {
                    v: 67,
                    b: 71,
                    V: 3,
                    r: 1
                }, _LF, _WF, _WF, _WF, _LF, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 3
                }],
                [_EMP, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 17,
                    r: 1
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 22,
                    r: 1
                }, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 17,
                    r: 2
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 15,
                    r: 1
                }, _WWWF, _EMP, _EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }, _EMP, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 0
                }, _MWWF, {
                    v: 62,
                    b: 71,
                    V: 16,
                    r: 2
                }, {
                    v: 62,
                    b: 71,
                    V: 39,
                    r: 1
                }, _WF, _WF, _WF, _MWWF, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 148,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }, _LF, _LF, _LF, _LF, _LF, _WF, _WF, _WF, _LF, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 3
                }],
                [_EMP, _EMP, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 10,
                    r: 0
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 0,
                    r: 1
                }, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 1,
                    r: 3
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 8,
                    r: 1
                }, _WWWF, _EMP, _EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, _MW, _MWSF, _MWSF, _MWWF, _WF, _WF, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 27,
                    r: 2
                }, _MWWF, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 140,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 0
                }, {
                    v: 67,
                    b: 71,
                    V: 27,
                    r: 3
                }, {
                    v: 67,
                    b: 71,
                    V: 8,
                    r: 2
                }, {
                    v: 67,
                    b: 71,
                    V: 27,
                    r: 3
                }, _LF, _LF, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 12,
                    r: 2
                }, _SWLF],
                [_EMP, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 0
                }, _WWWF, {
                    v: 62,
                    b: 71,
                    V: 9,
                    r: 2
                }, _WF, _WF, _WWWF, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 12,
                    r: 2
                }, _WW, _EMP, _EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 2
                }, _MWSF, {
                    v: 84,
                    b: 71,
                    V: 16,
                    r: 1
                }, {
                    v: 84,
                    b: 71,
                    V: 19,
                    r: 1
                }, _MWSF, {
                    v: 62,
                    b: 32,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 70,
                    V: -1,
                    r: 0
                }, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 39,
                    r: 2
                }, _MWWF, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 148,
                    V: -1,
                    r: 0
                }, _SWLF, _SWLF, _SWLF, _SWLF, _SWLF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 0
                }, _SWLF, _SWLF, _SWLF, _SWLF, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 1
                }],
                [_EMP, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 0
                }, _WW, _WWWF, _WWWF, _WWWF, _WWWF, _WWWF, _WWWF, _WW, _WW, _EMP, _EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 0
                }, _MWSF, _SF, _SF, _MWSF, _LF, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 3
                }, _WF, _WF, _WF, _MWWF, {
                    v: 84,
                    b: 71,
                    V: 23,
                    r: 0
                }, _SF, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 140,
                    V: -1,
                    r: 0
                }, _SWLF, {
                    v: 62,
                    b: 71,
                    V: 20,
                    r: 1
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 28,
                    r: 0
                }, _SWWF, _WF, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 20,
                    r: 1
                }, {
                    v: 62,
                    b: 71,
                    V: 13,
                    r: 1
                }, _SWWF],
                [_EMP, _EMP, _EMP, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _WF, _WF, _WF, _WF, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, _MWSF, _SF, _SF, _MWLF, _LF, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 3
                }, _WF, _WF, _WF, {
                    v: 62,
                    b: 150,
                    V: -1,
                    r: 3
                }, {
                    v: 84,
                    b: 151,
                    V: -1,
                    r: 0
                }, _SF, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 140,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 1
                }, _WF, _WF, _WF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 3
                }, _WF, _WF, _WF, _WF, _WF, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 1
                }],
                [_EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 6,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 14,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 15,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 5,
                    r: 0
                }, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 2
                }, _WF, _WF, _WF, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 16,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, _MWSF, {
                    v: 84,
                    b: 71,
                    V: 18,
                    r: 3
                }, _SF, {
                    v: 67,
                    b: 150,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 142,
                    V: -1,
                    r: 1
                }, {
                    v: 67,
                    b: 71,
                    V: 40,
                    r: 2
                }, _WF, _WF, _WF, {
                    v: 62,
                    b: 150,
                    V: -1,
                    r: 3
                }, {
                    v: 84,
                    b: 151,
                    V: -1,
                    r: 3
                }, _SF, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 143,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 144,
                    V: -1,
                    r: 3
                }, _WF, _WF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 3
                }, _WF, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 12,
                    r: 3
                }, {
                    v: 62,
                    b: 71,
                    V: 12,
                    r: 3
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 1
                }],
                [_EMP, _EMP, _EMP, _SWWF, _WF, _WF, _WF, _WF, _SWWF, _SWLF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 2
                }, _SWLF, _SWLF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 13,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, _MWSF, _MWSF, _MWSF, _MWLF, {
                    v: 67,
                    b: 144,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 3
                }, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 39,
                    r: 2
                }, _MWWF, {
                    v: 84,
                    b: 71,
                    V: 23,
                    r: 0
                }, _SF, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 140,
                    V: -1,
                    r: 0
                }, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 2
                }, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 2
                }, _SWLF, _SWLF, _SWLF, _SWLF, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 1
                }],
                [_EMP, _EMP, _EMP, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 0,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 2,
                    r: 0
                }, _WF, _WF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 1
                }, _LF, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 0
                }, _SWLF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 0
                }, _MWLF, {
                    v: 67,
                    b: 148,
                    V: -1,
                    r: 1
                }, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 151,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 151,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 27,
                    r: 2
                }, _MWWF, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 142,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 148,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 140,
                    V: -1,
                    r: 1
                }, {
                    v: 0,
                    b: 148,
                    V: -1,
                    r: 0
                }, _SWLF, {
                    v: 67,
                    b: 71,
                    V: 16,
                    r: 1
                }, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 26,
                    r: 1
                }, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 2
                }, {
                    v: 67,
                    b: 71,
                    V: 17,
                    r: 1
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 3
                }],
                [_EMP, _EMP, _EMP, _SWWF, _WF, _WF, _WF, _WF, _SWWF, {
                    v: 67,
                    b: 71,
                    V: 12,
                    r: 0
                }, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 12,
                    r: 2
                }, _SWLF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, _EMP, _EMP, _EMP, _MWLF, _MWLF, _MWLF, {
                    v: 62,
                    b: 150,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 150,
                    V: -1,
                    r: 3
                }, _MWWF, _MWWF, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, _EMP, _EMP, _WF, _WF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 1
                }, _LF, _LF, _LF, _LF, _LF, _LF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 3
                }],
                [_EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 0
                }, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 1,
                    r: 2
                }, {
                    v: 62,
                    b: 71,
                    V: 8,
                    r: 2
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 2
                }, _SWWF, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 2
                }, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 20,
                    r: 2
                }, _SWLF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 84,
                    b: 71,
                    V: 23,
                    r: 0
                }, _SF, _SF, {
                    v: 84,
                    b: 71,
                    V: 23,
                    r: 0
                }, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, _EMP, _EMP, _WF, _WF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 1
                }, _LF, _LF, _LF, _LF, _LF, _LF, {
                    v: 67,
                    b: 31,
                    V: -1,
                    r: 3
                }],
                [_EMP, _EMP, _EMP, _SWWF, _SWWF, _SWWF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 0
                }, _SWWF, _SWWF, _SWLF, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 0
                }, _SWLF, _SWLF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _SF, _SF, _SF, _SF, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 21,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 20,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 15,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 36,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 4,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 45,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 32,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 25,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 24,
                    r: 0
                }],
                [{
                    v: 0,
                    b: 86,
                    V: 17,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 4,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 5,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 3,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 37,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 35,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 29,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 31,
                    r: 0
                }],
                [{
                    v: 0,
                    b: 86,
                    V: 16,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 11,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 10,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 9,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 38,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 1,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 34,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _LF, _LF, _LF, {
                    v: 67,
                    b: 151,
                    V: -1,
                    r: 1
                }, _LF, _LF, _LF],
                [{
                    v: 0,
                    b: 86,
                    V: 40,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 0,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 39,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, _EMP, _EMP, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, _SWWF, _SWWF, _SW, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 2
                }, _SWWF, _SWWF, _SWWF, {
                    v: 0,
                    b: 71,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 140,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 1
                }],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 1
                }, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 1
                }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 1
                }, _LF, _LF, _LF, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 27,
                    r: 1
                }, {
                    v: 62,
                    b: 71,
                    V: 27,
                    r: 1
                }, _WF, _WF, _WF, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 111,
                    V: -1,
                    r: 1
                }, {
                    v: 0,
                    b: 140,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 111,
                    V: -1,
                    r: 1
                }, _EMP, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 1
                }],
                [_EMP, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, _MWWF, _MWWF, _MWWF, _MWWF, _MWWF, _MWWF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 1
                }, _LF, _LF, _LF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 1
                }, _WF, _WF, _WF, _WF, _WF, {
                    v: 62,
                    b: 69,
                    V: -1,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, {
                    v: 67,
                    b: 151,
                    V: -1,
                    r: 1
                }, {
                    v: 0,
                    b: 140,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 140,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 148,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 140,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 140,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 151,
                    V: -1,
                    r: 1
                }],
                [_EMP, _MWLF, {
                    v: 67,
                    b: 71,
                    V: 35,
                    r: 2
                }, _LF, {
                    v: 67,
                    b: 142,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 146,
                    V: -1,
                    r: 1
                }, {
                    v: 67,
                    b: 146,
                    V: -1,
                    r: 1
                }, {
                    v: 67,
                    b: 140,
                    V: -1,
                    r: 1
                }, {
                    v: 67,
                    b: 140,
                    V: -1,
                    r: 1
                }, {
                    v: 62,
                    b: 150,
                    V: -1,
                    r: 1
                }, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 17,
                    r: 3
                }, {
                    v: 62,
                    b: 71,
                    V: 16,
                    r: 1
                }, _MWWF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 1
                }, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 3,
                    r: 1
                }, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 22,
                    r: 2
                }, {
                    v: 62,
                    b: 71,
                    V: 20,
                    r: 3
                }, {
                    v: 62,
                    b: 71,
                    V: 11,
                    r: 2
                }, _WF, _SWWF, _SWWF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 111,
                    V: -1,
                    r: 1
                }, {
                    v: 0,
                    b: 140,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 111,
                    V: -1,
                    r: 1
                }, _EMP, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 1
                }],
                [_EMP, _MWLF, _LF, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 149,
                    V: -1,
                    r: 2
                }, _MW, _MW, _MWWF, _WF, _WF, _WF, _WF, _MWWF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 1
                }, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 3
                }, _SWLF, _SWLF, _SWWF, _SWWF, _SWWF, _SWWF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 2
                }, _SWWF, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 3
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 140,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 69,
                    V: -1,
                    r: 1
                }],
                [{
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 1
                }, _MWLF, _LF, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 151,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 151,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 151,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 142,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 146,
                    V: -1,
                    r: 1
                }, {
                    v: 62,
                    b: 150,
                    V: -1,
                    r: 1
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 10,
                    r: 3
                }, {
                    v: 62,
                    b: 71,
                    V: 7,
                    r: 3
                }, _WF, {
                    v: 62,
                    b: 32,
                    V: -1,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, {
                    v: 0,
                    b: 69,
                    V: -1,
                    r: 2
                }, _SW, {
                    v: 62,
                    b: 71,
                    V: 14,
                    r: 0
                }, {
                    v: 62,
                    b: 71,
                    V: 5,
                    r: 0
                }, _WF, _WF, _WF, _WF, _SWWF, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }, _EMP, _LF, {
                    v: 67,
                    b: 71,
                    V: 45,
                    r: 0
                }, {
                    v: 67,
                    b: 71,
                    V: 45,
                    r: 0
                }, {
                    v: 67,
                    b: 151,
                    V: -1,
                    r: 1
                }, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 24,
                    r: 1
                }],
                [_EMP, _MWLF, _LF, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 70,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 140,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 142,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 149,
                    V: -1,
                    r: 1
                }, {
                    v: 62,
                    b: 144,
                    V: -1,
                    r: 0
                }, _WF, {
                    v: 62,
                    b: 71,
                    V: 7,
                    r: 3
                }, _WF, {
                    v: 62,
                    b: 32,
                    V: -1,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 0
                }, _SWWF, _WF, _WF, _WF, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 13,
                    r: 2
                }, _SWWF, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }],
                [{
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 1
                }, _MWLF, _LF, _LF, {
                    v: 67,
                    b: 71,
                    V: 3,
                    r: 0
                }, {
                    v: 67,
                    b: 148,
                    V: -1,
                    r: 3
                }, _MWLF, {
                    v: 67,
                    b: 146,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 147,
                    V: -1,
                    r: 3
                }, {
                    v: 62,
                    b: 149,
                    V: -1,
                    r: 1
                }, {
                    v: 62,
                    b: 144,
                    V: -1,
                    r: 0
                }, _WF, _WF, _WF, _MWWF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 0
                }, _SWWF, {
                    v: 62,
                    b: 71,
                    V: 12,
                    r: 3
                }, {
                    v: 62,
                    b: 71,
                    V: 23,
                    r: 3
                }, _WF, _WF, {
                    v: 62,
                    b: 71,
                    V: 10,
                    r: 3
                }, {
                    v: 62,
                    b: 71,
                    V: 9,
                    r: 1
                }, _SWWF, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 3
                }, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }],
                [{
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 1
                }, _MWLF, _LF, _WF, _WF, {
                    v: 67,
                    b: 146,
                    V: -1,
                    r: 0
                }, _MWLF, {
                    v: 67,
                    b: 142,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 142,
                    V: -1,
                    r: 1
                }, _MW, {
                    v: 62,
                    b: 144,
                    V: -1,
                    r: 0
                }, _WF, {
                    v: 62,
                    b: 144,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 144,
                    V: -1,
                    r: 0
                }, _MWWF, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, _EMP, _SWWF, _SWWF, _SWWF, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 31,
                    V: -1,
                    r: 0
                }, _SWWF, _SWWF, _SWWF, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 23,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 22,
                    r: 0
                }],
                [_EMP, _MWLF, _LF, _WF, _WF, {
                    v: 67,
                    b: 71,
                    V: 10,
                    r: 0
                }, _MWLF, {
                    v: 67,
                    b: 71,
                    V: 14,
                    r: 3
                }, {
                    v: 67,
                    b: 140,
                    V: -1,
                    r: 0
                }, _MWWF, {
                    v: 62,
                    b: 149,
                    V: -1,
                    r: 0
                }, _MWWF, {
                    v: 62,
                    b: 149,
                    V: -1,
                    r: 0
                }, {
                    v: 62,
                    b: 149,
                    V: -1,
                    r: 0
                }, _MWWF, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 1
                }, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 1
                }, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 30,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 31,
                    r: 0
                }],
                [_EMP, _MWLF, {
                    v: 67,
                    b: 71,
                    V: 36,
                    r: 2
                }, {
                    v: 67,
                    b: 151,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 71,
                    V: 12,
                    r: 3
                }, {
                    v: 67,
                    b: 71,
                    V: 9,
                    r: 2
                }, _MWLF, {
                    v: 67,
                    b: 71,
                    V: 16,
                    r: 2
                }, {
                    v: 67,
                    b: 140,
                    V: -1,
                    r: 2
                }, {
                    v: 67,
                    b: 71,
                    V: 17,
                    r: 3
                }, {
                    v: 67,
                    b: 147,
                    V: -1,
                    r: 2
                }, {
                    v: 67,
                    b: 142,
                    V: -1,
                    r: 0
                }, {
                    v: 67,
                    b: 146,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 142,
                    V: -1,
                    r: 2
                }, _MW, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }],
                [_EMP, _MWLF, _MWLF, {
                    v: 67,
                    b: 150,
                    V: -1,
                    r: 2
                }, _MWLF, _MWLF, _MWLF, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 2
                }, {
                    v: 67,
                    b: 142,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 140,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 146,
                    V: -1,
                    r: 3
                }, {
                    v: 67,
                    b: 142,
                    V: -1,
                    r: 2
                }, _LF, {
                    v: 67,
                    b: 71,
                    V: 23,
                    r: 2
                }, _MW, {
                    v: 0,
                    b: 71,
                    V: 24,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }],
                [_EMP, _EMP, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 2
                }, {
                    v: 0,
                    b: 71,
                    V: 16,
                    r: 1
                }, {
                    v: 0,
                    b: 71,
                    V: 17,
                    r: 1
                }, {
                    v: 0,
                    b: 71,
                    V: 26,
                    r: 1
                }, _MW, _MW, _MW, _MW, _MW, _MW, _MW, _MW, _MW, _EMP, {
                    v: 0,
                    b: 86,
                    V: 14,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 12,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 6,
                    r: 0
                }],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, {
                    v: 0,
                    b: 86,
                    V: 40,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 1,
                    r: 0
                }, {
                    v: 0,
                    b: 86,
                    V: 41,
                    r: 0
                }]
            ]
        };
        HOUSE[HOUSEID.__BUNKER0__] = {
            width: 0,
            height: 0,
            radiation: 0,
            building: [
                [_EMP],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _SC, _SC, _SC, _SC, _SC, _SC, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _SC, _SC, _SC, _EMP, _EMP, _EMP, _EMP, _SC, _BWTF, _BWTF, {
                    v: 85,
                    b: 52,
                    V: -1,
                    r: 2
                }, _BWTF, _BWTF, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _BWTF, _TF, _TF, _TF, _BWTF, _SC, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _EMP, _SC, _SC, _SC, _SC, _BWTF, _BWTF, _BWTF, _BWTF, _TF, _TF, _TF, _BWTF, _SC, _SC, _EMP, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _SC, _SC, _SC, _SC, _SC, _BWTF, {
                    v: 85,
                    b: 71,
                    V: 9,
                    r: 0
                }, {
                    v: 85,
                    b: 71,
                    V: 58,
                    r: 0
                }, _BWTF, {
                    v: 85,
                    b: 71,
                    V: 33,
                    r: 3
                }, _TF, {
                    v: 85,
                    b: 71,
                    V: 33,
                    r: 3
                }, _BWTF, _SC, _SC, _EMP, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _SC, _SC, _SC, _SC, _SC, _BWTF, {
                    v: 85,
                    b: 71,
                    V: 10,
                    r: 2
                }, _TF, _BWTF, _BWTF, _SF, _BWSF, _BWSF, _BW, _SC, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _SC, _SC, _SC, _SC, _SC, _BWTF, _TF, _TF, _SF, _SF, _SF, _SF, {
                    v: 84,
                    b: 71,
                    V: 51,
                    r: 1
                }, _BWSF, _SC, _SC, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _SC, _SC, _SC, _SC, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _SF, _SF, _SF, _SF, _BWSF, _BW, _SC, _SC, _EMP, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _SC, _SC, _SC, _SC, _BWTF, _SF, _SF, _SF, _BWTF, _BWTF, _SF, _SF, _SF, _BWSF, _BWTF, _BWTF, _SC, _EMP, _SC, _SC, _SC, _SC],
                [_EMP, _SC, _SC, _SC, _SC, _BWTF, _SF, _BWTF, _SF, _SF, _SF, _SF, _BWTF, _TF, _TF, {
                    v: 85,
                    b: 71,
                    V: 55,
                    r: 2
                }, _BWTF, _SC, _EMP, _SC, _SC, _SC, _SC],
                [_EMP, _SC, _SC, _SC, _SC, _BWTF, _SF, _BWTF, _BWTF, _BWTF, _BWTF, _SF, _BWTF, {
                    v: 85,
                    b: 71,
                    V: 28,
                    r: 3
                }, _TF, {
                    v: 85,
                    b: 71,
                    V: 21,
                    r: 1
                }, _BWTF, _SC, _EMP, _EMP, _SC, _SC],
                [_EMP, _SC, _SC, _SC, _SC, _BWTF, _TF, {
                    v: 85,
                    b: 71,
                    V: 23,
                    r: 1
                }, {
                    v: 85,
                    b: 71,
                    V: 53,
                    r: 3
                }, {
                    v: 85,
                    b: 71,
                    V: 56,
                    r: 2
                }, _BWTF, _SF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _SC, _EMP, _EMP, _SC, _SC, _SC],
                [_EMP, _EMP, _EMP, _SC, _SC, _BWTF, _TF, _TF, _TF, {
                    v: 85,
                    b: 71,
                    V: 53,
                    r: 2
                }, _BWTF, _SF, _SF, _TF, {
                    v: 85,
                    b: 71,
                    V: 51,
                    r: 0
                }, {
                    v: 85,
                    b: 71,
                    V: 48,
                    r: 0
                }, _BWTF, _SC, _SC],
                [_EMP, _SC, _SC, _SC, _SC, _BWTF, _TF, _TF, _TF, _TF, _BWTF, _BWTF, _BWTF, _TF, _TF, _TF, _BWTF, _SC, _SC, _SC],
                [_EMP, _SC, _SC, _SC, _SC, _BWTF, {
                    v: 85,
                    b: 71,
                    V: 20,
                    r: 3
                }, {
                    v: 85,
                    b: 71,
                    V: 11,
                    r: 2
                }, {
                    v: 85,
                    b: 71,
                    V: 49,
                    r: 3
                }, _TF, {
                    v: 85,
                    b: 71,
                    V: 54,
                    r: 2
                }, _BWTF, _BWTF, {
                    v: 85,
                    b: 71,
                    V: 48,
                    r: 2
                }, {
                    v: 85,
                    b: 71,
                    V: 50,
                    r: 2
                }, {
                    v: 85,
                    b: 71,
                    V: 49,
                    r: 3
                }, _BWTF, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _EMP, _SC, _SC, _SC, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC],
                [_EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC]
            ]
        };
    }
} catch (error) {};
for (var i = 0; i < HOUSE.length; i++) {
    var house = HOUSE[i];
    var housePlan = HOUSE[i].building;
    house.height = housePlan.length;
    for (var j = 0; j < housePlan.length; j++)
        house.width = window.Math.max(housePlan[j].length, house.width);
}

var AREASTOITEM = [];
AREASTOITEM[AREAS.__FIRE__]         = IID.__CAMPFIRE__;
AREASTOITEM[AREAS.__BBQ__]          = IID.__CAMPFIRE_BBQ__;
AREASTOITEM[AREAS.__WORKBENCH__]    = IID.__WORKBENCH__;
AREASTOITEM[AREAS.__WORKBENCH2__]   = IID.__WORKBENCH2__;
AREASTOITEM[AREAS.__TESLA__]        = IID.__TESLA__;
AREASTOITEM[AREAS.__SMELTER__]      = IID.__SMELTER__;
AREASTOITEM[AREAS.__WEAVING__]      = IID.__WEAVING__;
AREASTOITEM[AREAS.__COMPOST__]      = IID.__COMPOST__;
AREASTOITEM[AREAS.__AGITATOR__]     = IID.__AGITATOR__;
AREASTOITEM[AREAS.__EXTRACTOR__]    = IID.__EXTRACTOR__;
AREASTOITEM[AREAS.__FEEDER__]       = IID.__FEEDER__;

var INVENTORY2  = null;
var ENTITIES2   = null;
var PARTICLES2  = null;
var LOOT2       = null;
var RESOURCES2  = null;
var LIGHTFIRE2  = null;
var AI2         = null;
var GROUND      = "#38513D";
var GROUND2     = "#0B1D23";

var BRKIT = [{
    id: IID.__STONE__,
    amount: 50,
    life: 255
}, {
    id: IID.__WOOD__,
    amount: 100,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 1,
    life: 255
}];
var KIT = [];
COUNTER = 0;
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE__,
    amount: 20,
    life: 255
}, {
    id: IID.__WOOD__,
    amount: 40,
    life: 255
}, {
    id: IID.__ORANGE__,
    amount: 1,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE__,
    amount: 20,
    life: 255
}, {
    id: IID.__WOOD__,
    amount: 40,
    life: 255
}, {
    id: IID.__ORANGE__,
    amount: 3,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE__,
    amount: 30,
    life: 255
}, {
    id: IID.__WOOD__,
    amount: 50,
    life: 255
}, {
    id: IID.__CAMPFIRE__,
    amount: 1,
    life: 255
}, {
    id: IID.__ORANGE__,
    amount: 4,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE__,
    amount: 30,
    life: 255
}, {
    id: IID.__WOOD__,
    amount: 60,
    life: 255
}, {
    id: IID.__CAMPFIRE__,
    amount: 1,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 1,
    life: 255
}, {
    id: IID.__ORANGE__,
    amount: 5,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE__,
    amount: 40,
    life: 255
}, {
    id: IID.__WOOD__,
    amount: 90,
    life: 255
}, {
    id: IID.__CAMPFIRE__,
    amount: 1,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 1,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 1,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE__,
    amount: 40,
    life: 255
}, {
    id: IID.__WOOD__,
    amount: 150,
    life: 255
}, {
    id: IID.__CAMPFIRE__,
    amount: 1,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 1,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 1,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE__,
    amount: 1,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 1,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 2,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE__,
    amount: 1,
    life: 255
}, {
    id: IID.__STEEL__,
    amount: 6,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 1,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 2,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE_BBQ__,
    amount: 1,
    life: 255
}, {
    id: IID.__WOOD_SPEAR__,
    amount: 1,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 1,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 3,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE_BBQ__,
    amount: 1,
    life: 255
}, {
    id: IID.__WOOD_BOW__,
    amount: 1,
    life: 255
}, {
    id: IID.__WOOD_ARROW__,
    amount: 20,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 1,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 4,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE_BBQ__,
    amount: 1,
    life: 255
}, {
    id: IID.__WOOD_WALL__,
    amount: 10,
    life: 255
}, {
    id: IID.__WOOD_DOOR__,
    amount: 2,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 1,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 4,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE_BBQ__,
    amount: 1,
    life: 255
}, {
    id: IID.__WOOD_WALL__,
    amount: 16,
    life: 255
}, {
    id: IID.__STONE_DOOR__,
    amount: 2,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 2,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 4,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE_BBQ__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 14,
    life: 255
}, {
    id: IID.__STONE_DOOR__,
    amount: 2,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 2,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 4,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE_BBQ__,
    amount: 1,
    life: 255
}, {
    id: IID.__LANDMINE__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 14,
    life: 255
}, {
    id: IID.__STONE_DOOR__,
    amount: 2,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 2,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 4,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE_BBQ__,
    amount: 1,
    life: 255
}, {
    id: IID.__ARMOR_PHYSIC_1__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 14,
    life: 255
}, {
    id: IID.__STONE_DOOR__,
    amount: 2,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 2,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 4,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE_BBQ__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 16,
    life: 255
}, {
    id: IID.__STONE_DOOR__,
    amount: 2,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 1,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 2,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 4,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STEEL_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE_BBQ__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 16,
    life: 255
}, {
    id: IID.__STONE_DOOR__,
    amount: 2,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 1,
    life: 255
}, {
    id: IID.__WORKBENCH__,
    amount: 2,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 4,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__HACHET__,
    amount: 1,
    life: 255
}, {
    id: IID.__STEEL_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE_BBQ__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 16,
    life: 255
}, {
    id: IID.__STONE_DOOR__,
    amount: 2,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 1,
    life: 255
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 4,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__STONE_AXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__STEEL_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE_BBQ__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 16,
    life: 255
}, {
    id: IID.__STONE_DOOR__,
    amount: 2,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 1,
    life: 255
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 4,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__STONE_AXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__STEEL_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE_BBQ__,
    amount: 2,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 20,
    life: 255
}, {
    id: IID.__STONE_DOOR__,
    amount: 4,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 2,
    life: 255
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}, {
    id: IID.__RAW_STEAK__,
    amount: 4,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__STONE_AXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__STEEL_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CAMPFIRE_BBQ__,
    amount: 2,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 26,
    life: 255
}, {
    id: IID.__STONE_DOOR__,
    amount: 6,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 3,
    life: 255
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}, {
    id: IID.__SEED_ORANGE__,
    amount: 8,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__STONE_AXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__STEEL_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__HEADSCARF__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 26,
    life: 255
}, {
    id: IID.__STONE_DOOR__,
    amount: 6,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 3,
    life: 255
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}, {
    id: IID.__SEED_ORANGE__,
    amount: 8,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__STONE_AXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__STEEL_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__HEADSCARF__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 26,
    life: 255
}, {
    id: IID.__STONE_DOOR__,
    amount: 6,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 3,
    life: 255
}, {
    id: IID.__9MM__,
    amount: 1,
    life: 20
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__SULFUR_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_AXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__HEADSCARF__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 26,
    life: 255
}, {
    id: IID.__STONE_DOOR__,
    amount: 6,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 3,
    life: 255
}, {
    id: IID.__9MM__,
    amount: 1,
    life: 20
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__SULFUR_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_AXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__HEADSCARF__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 26,
    life: 255
}, {
    id: IID.__SMELTER__,
    amount: 1,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 3,
    life: 255
}, {
    id: IID.__9MM__,
    amount: 1,
    life: 20
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__SULFUR_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__SULFUR_AXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__HEADSCARF__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 26,
    life: 255
}, {
    id: IID.__SMELTER__,
    amount: 1,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 3,
    life: 255
}, {
    id: IID.__9MM__,
    amount: 1,
    life: 20
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__SULFUR_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__SULFUR_AXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CHAPKA__,
    amount: 1,
    life: 255
}, {
    id: IID.__STONE_WALL__,
    amount: 26,
    life: 255
}, {
    id: IID.__SMELTER__,
    amount: 1,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 3,
    life: 255
}, {
    id: IID.__9MM__,
    amount: 1,
    life: 20
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__SULFUR_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__SULFUR_AXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CHAPKA__,
    amount: 1,
    life: 255
}, {
    id: IID.__STEEL_WALL__,
    amount: 14,
    life: 255
}, {
    id: IID.__SMELTER__,
    amount: 1,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 3,
    life: 255
}, {
    id: IID.__9MM__,
    amount: 1,
    life: 20
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__SULFUR_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__SULFUR_AXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CHAPKA__,
    amount: 1,
    life: 255
}, {
    id: IID.__STEEL_WALL__,
    amount: 14,
    life: 255
}, {
    id: IID.__SMELTER__,
    amount: 1,
    life: 255
}, {
    id: IID.__CHEST__,
    amount: 3,
    life: 255
}, {
    id: IID.__DESERT_EAGLE__,
    amount: 1,
    life: 7
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__SULFUR_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__SULFUR_AXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CHAPKA__,
    amount: 1,
    life: 255
}, {
    id: IID.__STEEL_WALL__,
    amount: 14,
    life: 255
}, {
    id: IID.__SMELTER__,
    amount: 1,
    life: 255
}, {
    id: IID.__DYNAMITE__,
    amount: 6,
    life: 255
}, {
    id: IID.__DESERT_EAGLE__,
    amount: 1,
    life: 7
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}];
KIT[COUNTER++] = [{
    id: IID.__SULFUR_PICKAXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__SULFUR_AXE__,
    amount: 1,
    life: 255
}, {
    id: IID.__CHAPKA__,
    amount: 1,
    life: 255
}, {
    id: IID.__STEEL_WALL__,
    amount: 20,
    life: 255
}, {
    id: IID.__SMELTER__,
    amount: 1,
    life: 255
}, {
    id: IID.__LANDMINE__,
    amount: 6,
    life: 255
}, {
    id: IID.__DESERT_EAGLE__,
    amount: 1,
    life: 7
}, {
    id: IID.__WORKBENCH2__,
    amount: 1,
    life: 255
}];

COUNTER = 0;
var MODE_AI = {
    __AGGRESSIVE__: COUNTER++,
    __REPAIR__:     COUNTER++
};

var AI = [];
AI[AIID.__NORMAL_GHOUL__] = {
    actionDelay: 700,
    actionImpactClient: 550,
    baseSpeed: 0.5,
    aggressive: 1,
    mode: MODE_AI.__AGGRESSIVE__,
    timeTrigger: ((2 * 8) * 60) * 1000,
    draw: Render.ghoul,
    breath: 0.05,
    armMove: 6,
    leftArm: {
        angle: 0,
        x: 28,
        y: -50,
        src: "img/day-ghoul-left-arm.png",
        img: {
            isLoaded: 0
        }
    },
    rightArm: {
        angle: 0,
        x: 28,
        y: 50,
        src: "img/day-ghoul-right-arm.png",
        img: {
            isLoaded: 0
        }
    },
    head: {
        src: "img/day-ghoul.png",
        img: {
            isLoaded: 0
        }
    },
    hurt: {
        src: "img/ghoul-hurt.png",
        img: {
            isLoaded: 0
        }
    },
    death: {
        src: "img/day-ghoul-death.png",
        img: {
            isLoaded: 0
        }
    },
    units: 0,
    unitsMax: 30,
    areaEffect: 0,
    radius: 38,
    life: 160,
    speed: [0.12, 0.22],
    speedRun: [0.14, 0.25],
    loot: [
        [IID.__ANIMAL_FAT__, 4, LOOTID.__ANIMAL_FAT__]
    ],
    light: 1,
    areaEffect: 0,
    explosion: 0,
    damageExplosion: 0,
    damageBuilding: 0,
    radiusDamage: 40,
    distDamage: 50,
    damage: [8, 20],
    knockback: 20,
    timelife: ((2 * 8) * 60) * 1000,
    score: 1200
};
AI[AIID.__FAST_GHOUL__] = {
    actionDelay: 300,
    actionImpactClient: 150,
    baseSpeed: 0.5,
    aggressive: 2,
    mode: MODE_AI.__AGGRESSIVE__,
    timeTrigger: (((2 * 2) * 8) * 60) * 1000,
    draw: Render.ghoul,
    breath: 0.05,
    armMove: 6,
    leftArm: {
        angle: 0,
        x: 28,
        y: -40,
        src: "img/day-ghoul3-left-arm.png",
        img: {
            isLoaded: 0
        }
    },
    rightArm: {
        angle: 0,
        x: 28,
        y: 40,
        src: "img/day-ghoul3-right-arm.png",
        img: {
            isLoaded: 0
        }
    },
    head: {
        src: "img/day-ghoul3.png",
        img: {
            isLoaded: 0
        }
    },
    hurt: {
        src: "img/ghoul3-hurt.png",
        img: {
            isLoaded: 0
        }
    },
    death: {
        src: "img/day-ghoul3-death.png",
        img: {
            isLoaded: 0
        }
    },
    units: 0,
    unitsMax: 18,
    areaEffect: 0,
    radius: 38,
    life: 100,
    speed: [0.18, 0.28],
    speedRun: [0.22, 0.38],
    loot: [
        [IID.__GHOUL_BLOOD__, 4, LOOTID.ghoulblood]
    ],
    light: 1,
    areaEffect: 0,
    explosion: 0,
    damageExplosion: 0,
    damageBuilding: 0,
    radiusDamage: 40,
    distDamage: 50,
    damage: [7, 14],
    knockback: 20,
    timelife: ((2 * 8) * 60) * 1000,
    score: 1000
};
AI[AIID.__EXPLOSIVE_GHOUL__] = {
    actionDelay: 500,
    actionImpactClient: 350,
    baseSpeed: 0.5,
    aggressive: 4,
    mode: MODE_AI.__AGGRESSIVE__,
    timeTrigger: (((3 * 2) * 8) * 60) * 1000,
    draw: Render.ghoul,
    breath: 0.05,
    armMove: 6,
    leftArm: {
        angle: 0,
        x: 28,
        y: -48,
        src: "img/day-ghoul4-left-arm.png",
        img: {
            isLoaded: 0
        }
    },
    rightArm: {
        angle: 0,
        x: 28,
        y: 48,
        src: "img/day-ghoul4-right-arm.png",
        img: {
            isLoaded: 0
        }
    },
    head: {
        src: "img/day-ghoul4.png",
        img: {
            isLoaded: 0
        }
    },
    hurt: {
        src: "img/ghoul4-hurt.png",
        img: {
            isLoaded: 0
        }
    },
    death: {
        src: "img/day-ghoul4-death.png",
        img: {
            isLoaded: 0
        }
    },
    units: 0,
    unitsMax: 14,
    areaEffect: 0,
    radius: 38,
    life: 100,
    speed: [0.12, 0.23],
    speedRun: [0.14, 0.26],
    loot: [
        [IID.__SULFUR__, 4, LOOTID.sulfur],
        [IID.__ANIMAL_FAT__, 4, LOOTID.__ANIMAL_FAT__],
        [IID.__JUNK__, 4, LOOTID.junk]
    ],
    light: 1,
    areaEffect: 0,
    explosion: 1,
    damageExplosion: 120,
    damageBuilding: 500,
    radiusDamage: 40,
    distDamage: 50,
    damage: [6, 20],
    knockback: 20,
    timelife: ((2 * 8) * 60) * 1000,
    score: 500
};
AI[AIID.__RADIOACTIVE_GHOUL__] = {
    actionDelay: 500,
    actionImpactClient: 350,
    baseSpeed: 0.5,
    aggressive: 8,
    mode: MODE_AI.__AGGRESSIVE__,
    timeTrigger: (((4 * 2) * 8) * 60) * 1000,
    draw: Render.ghoul,
    breath: 0.05,
    armMove: 6,
    leftArm: {
        angle: 0,
        x: 28,
        y: -40,
        src: "img/day-ghoul2-left-arm.png",
        img: {
            isLoaded: 0
        }
    },
    rightArm: {
        angle: 0,
        x: 28,
        y: 40,
        src: "img/day-ghoul2-right-arm.png",
        img: {
            isLoaded: 0
        }
    },
    head: {
        src: "img/day-ghoul2.png",
        img: {
            isLoaded: 0
        }
    },
    hurt: {
        src: "img/ghoul2-hurt.png",
        img: {
            isLoaded: 0
        }
    },
    death: {
        src: "img/day-ghoul2-death.png",
        img: {
            isLoaded: 0
        }
    },
    units: 0,
    unitsMax: 10,
    areaEffect: 0,
    radius: 38,
    life: 160,
    speed: [0.12, 0.23],
    speedRun: [0.14, 0.26],
    loot: [
        [IID.__URANIUM__, 4, LOOTID.uranium]
    ],
    light: 1,
    areaEffect: __RADIATION__,
    explosion: 0,
    damageExplosion: 0,
    damageBuilding: 0,
    radiusDamage: 40,
    distDamage: 50,
    damage: [5, 15],
    knockback: 20,
    timelife: ((2 * 8) * 60) * 1000,
    score: 1500
};
AI[AIID.__ARMORED_GHOUL__] = {
    actionDelay: 700,
    actionImpactClient: 550,
    baseSpeed: 0.5,
    aggressive: 16,
    mode: MODE_AI.__AGGRESSIVE__,
    timeTrigger: (((5 * 2) * 8) * 60) * 1000,
    draw: Render.ghoul,
    breath: 0.05,
    armMove: 6,
    leftArm: {
        angle: 0,
        x: 28,
        y: -50,
        src: "img/day-ghoul1-left-arm.png",
        img: {
            isLoaded: 0
        }
    },
    rightArm: {
        angle: 0,
        x: 28,
        y: 50,
        src: "img/day-ghoul1-right-arm.png",
        img: {
            isLoaded: 0
        }
    },
    head: {
        src: "img/day-ghoul1.png",
        img: {
            isLoaded: 0
        }
    },
    hurt: {
        src: "img/ghoul1-hurt.png",
        img: {
            isLoaded: 0
        }
    },
    death: {
        src: "img/day-ghoul1-death.png",
        img: {
            isLoaded: 0
        }
    },
    units: 0,
    unitsMax: 14,
    areaEffect: 0,
    radius: 38,
    life: 800,
    speed: [0.11, 0.21],
    speedRun: [0.14, 0.24],
    loot: [
        [IID.__ALLOYS__, 4, LOOTID.alloys],
        [IID.__SHAPED_METAL__, 12, LOOTID.__SHAPED_METAL__]
    ],
    light: 1,
    areaEffect: 0,
    explosion: 0,
    damageExplosion: 0,
    damageBuilding: 0,
    radiusDamage: 40,
    distDamage: 50,
    damage: [20, 50],
    knockback: 20,
    timelife: ((4 * 8) * 60) * 1000,
    score: 5000
};
AI[AIID.__PUMPKIN_GHOUL__] = {
    actionDelay: 700,
    actionImpactClient: 550,
    baseSpeed: 0.5,
    aggressive: 32,
    mode: MODE_AI.__AGGRESSIVE__,
    timeTrigger: ((2 * 8) * 60) * 1000,
    draw: Render.ghoul,
    breath: 0.05,
    armMove: 6,
    leftArm: {
        angle: 0,
        x: 28,
        y: -50,
        src: "img/day-ghoul5-left-arm.png",
        img: {
            isLoaded: 0
        }
    },
    rightArm: {
        angle: 0,
        x: 28,
        y: 50,
        src: "img/day-ghoul5-right-arm.png",
        img: {
            isLoaded: 0
        }
    },
    head: {
        src: "img/day-ghoul5.png",
        img: {
            isLoaded: 0
        }
    },
    hurt: {
        src: "img/ghoul5-hurt.png",
        img: {
            isLoaded: 0
        }
    },
    death: {
        src: "img/day-ghoul5-death.png",
        img: {
            isLoaded: 0
        }
    },
    units: 0,
    unitsMax: 0,
    areaEffect: 0,
    radius: 38,
    life: 160,
    speed: [0.04, 0.04],
    loot: [
        [IID.__PUMPKIN__, 4, LOOTID.pumpkin]
    ],
    light: 0,
    areaEffect: 0,
    explosion: 0,
    damageExplosion: 0,
    damageBuilding: 0,
    radiusDamage: 40,
    distDamage: 50,
    damage: [20, 30],
    knockback: 20,
    timelife: ((2 * 8) * 60) * 1000,
    score: 100
};
AI[AIID.__LAPABOT_REPAIR__] = {
    actionDelay: 700,
    actionImpactClient: 550,
    baseSpeed: 0.5,
    aggressive: 0,
    mode: MODE_AI.__REPAIR__,
    timeTrigger: 0,
    draw: Render.ghoul,
    breath: 0.05,
    armMove: 6,
    leftArm: {
        angle: 0,
        x: 28,
        y: -50,
        src: "img/day-lapabot-left-arm.png",
        img: {
            isLoaded: 0
        }
    },
    rightArm: {
        angle: 0,
        x: 28,
        y: 50,
        src: "img/day-lapabot-right-arm.png",
        img: {
            isLoaded: 0
        }
    },
    head: {
        src: "img/day-lapabot.png",
        img: {
            isLoaded: 0
        }
    },
    hurt: {
        src: "img/lapabot-hurt.png",
        img: {
            isLoaded: 0
        }
    },
    death: {
        src: "img/day-lapabot-death.png",
        img: {
            isLoaded: 0
        }
    },
    units: 0,
    unitsMax: 0,
    areaEffect: 0,
    radius: 38,
    life: 600,
    speed: [0.08, 0.08],
    loot: [
        [IID.__SHAPED_METAL__, 4, LOOTID.shapedmetal]
    ],
    light: 0,
    areaEffect: 0,
    explosion: 0,
    damageExplosion: 0,
    damageBuilding: 0,
    radiusDamage: 40,
    distDamage: 50,
    damage: [30, 30],
    knockback: 20,
    timelife: ((2 * 8) * 60) * 1000,
    score: 100
};
AI[AIID.__HAL_BOT__] = {
    actionDelay: 550,
    actionImpactClient: 400,
    baseSpeed: 0.5,
    aggressive: 0,
    mode: MODE_AI.__AGGRESSIVE__,
    timeTrigger: 0,
    draw: Render.ghoul,
    breath: 0.05,
    armMove: 6,
    leftArm: {
        angle: 0,
        x: 8,
        y: -45,
        src: "img/day-hal-bot-left-arm.png",
        img: {
            isLoaded: 0
        }
    },
    rightArm: {
        angle: 0,
        x: 8,
        y: 45,
        src: "img/day-hal-bot-right-arm.png",
        img: {
            isLoaded: 0
        }
    },
    head: {
        src: "img/day-hal-bot.png",
        img: {
            isLoaded: 0
        }
    },
    hurt: {
        src: "img/hal-bot-hurt.png",
        img: {
            isLoaded: 0
        }
    },
    death: {
        src: "img/day-hal-bot-death.png",
        img: {
            isLoaded: 0
        }
    },
    units: 0,
    unitsMax: 0,
    areaEffect: 0,
    radius: 38,
    life: 800,
    speed: [0.12, 0.12],
    loot: [
        [IID.__SHAPED_METAL__, 4, LOOTID.shapedmetal]
    ],
    light: 0,
    areaEffect: 0,
    explosion: 0,
    damageExplosion: 0,
    damageBuilding: 0,
    radiusDamage: 40,
    distDamage: 50,
    damage: [30, 30],
    knockback: 20,
    timelife: ((2 * 8) * 60) * 1000,
    score: 500
};
AI[AIID.__TESLA_BOT__] = {
    actionDelay: 700,
    actionImpactClient: 550,
    baseSpeed: 0.5,
    aggressive: 0,
    mode: MODE_AI.__AGGRESSIVE__,
    timeTrigger: 0,
    draw: Render.ghoul,
    breath: 0.05,
    armMove: 6,
    leftArm: {
        angle: 0,
        x: 18,
        y: -60,
        src: "img/day-tesla-bot-left-arm.png",
        img: {
            isLoaded: 0
        }
    },
    rightArm: {
        angle: 0,
        x: 18,
        y: 60,
        src: "img/day-tesla-bot-right-arm.png",
        img: {
            isLoaded: 0
        }
    },
    head: {
        src: "img/day-tesla-bot.png",
        img: {
            isLoaded: 0
        }
    },
    hurt: {
        src: "img/tesla-bot-hurt.png",
        img: {
            isLoaded: 0
        }
    },
    death: {
        src: "img/day-tesla-bot-death.png",
        img: {
            isLoaded: 0
        }
    },
    units: 0,
    unitsMax: 0,
    areaEffect: 0,
    radius: 38,
    life: 3000,
    speed: [0.1, 0.1],
    loot: [
        [IID.__SHAPED_URANIUM__, 4, LOOTID.shapeduranium],
        [IID.__ALLOYS__, 4, LOOTID.alloys]
    ],
    light: 0,
    areaEffect: 0,
    explosion: 1,
    damageExplosion: 100,
    damageBuilding: 100,
    radiusDamage: 40,
    distDamage: 50,
    damage: [80, 80],
    knockback: 40,
    timelife: ((2 * 8) * 60) * 1000,
    score: 3000
};
try {
    if (exports !== window.undefined) {
        exports.IID         = IID;
        exports.FURNITUREID = FURNITUREID;
        exports.HOUSE       = HOUSE;
        exports.HOUSEID     = HOUSEID;
        exports.INVENTORY   = INVENTORY;
        exports.LOOT        = LOOT;
        exports.LOOTID      = LOOTID;
        exports.RESID       = RESID;
        exports.RESOURCES   = RESOURCES;
        exports.AREAS       = AREAS;
        exports.SKILLS      = SKILLS;
        exports.KIT         = KIT;
        exports.BRKIT       = BRKIT;
        exports.AI          = AI;
        exports.AIID        = AIID;
        exports.BEHAVIOR    = BEHAVIOR;

        for (var k = 0; k < 3; k++) {
            for (var i = 1; i < INVENTORY.length; i++) {
                var item = INVENTORY[i];
                var recipe = item.detail.recipe;
                if (recipe === window.undefined) continue;
                for (var j = 0; j < recipe.length; j++) {
                    var _item = INVENTORY[recipe[j][0]];
                    if (j === 0) item.score = 0;
                    item.score += _item.score * recipe[j][1];
                    recipe[j][2] = _item.loot;
                }
                item.score = window.Math.floor(item.score / 4);
            }
        }
        for (var i = 0; i < FURNITURE.length; i++) {
            var item = FURNITURE[i];
            var recipe = item.detail.recipe;
            if (recipe === window.undefined) continue;
            for (var j = 0; j < recipe.length; j++) {
                var _item = INVENTORY[recipe[j][0]];
                if (j === 0) item.score = 0;
                item.score += _item.score * recipe[j][1];
                recipe[j][2] = _item.loot;
            }
            item.score = window.Math.floor(item.score / 4);
        }
    }
} catch (error) {
    for (var i = 0; i < KARMA.length; i++) KARMA[i].img = CanvasUtils.loadImage(KARMA[i].src, KARMA[i].img);

    INVENTORY2  = window.JSON.parse(window.JSON.stringify(INVENTORY));
    PARTICLES2  = window.JSON.parse(window.JSON.stringify(PARTICLES));
    LOOT2       = window.JSON.parse(window.JSON.stringify(LOOT));
    ENTITIES2   = window.JSON.parse(window.JSON.stringify(ENTITIES));
    RESOURCES2  = window.JSON.parse(window.JSON.stringify(RESOURCES));
    LIGHTFIRE2  = window.JSON.parse(window.JSON.stringify(LIGHTFIRE));
    AI2         = window.JSON.parse(window.JSON.stringify(AI));

    function replaceStringInObject(vNWwm, wnvNw, code, nWnNV) {
        for (var WmVNW in wnvNw) {
            var MmmVN = wnvNw[WmVNW];
            var nVW = vNWwm[WmVNW];
            if (nVW === window.undefined) {
                vNWwm[WmVNW] = MmmVN;
                continue;
            }
            if (typeof nVW === "object") replaceStringInObject(nVW, MmmVN, code, nWnNV);
            else if (typeof nVW === "string") vNWwm[WmVNW] = nVW.replace(code, nWnNV);
        }
    };

    replaceStringInObject(RESOURCES2, RESOURCES,    "day", "night");
    replaceStringInObject(INVENTORY2, INVENTORY,    "day", "night");
    replaceStringInObject(PARTICLES2, PARTICLES,    "day", "night");
    replaceStringInObject(LOOT2, LOOT,              "day", "night");
    replaceStringInObject(ENTITIES2, ENTITIES,      "day", "night");
    replaceStringInObject(LIGHTFIRE2, LIGHTFIRE,    "day", "night");
    replaceStringInObject(AI2, AI,                  "day", "night");

    function updateClotheInfo(vNWwm) {
        for (var WmVNW in vNWwm) {
            var nVW = vNWwm[WmVNW];
            if ((typeof nVW === "object") && (nVW !== null)) {
                if (nVW.rad !== window.undefined) {
                    var wVn = ENTITIES[__ENTITIE_PLAYER__].clothes[nVW.idClothe];
                    wVn.rad = nVW.rad;
                    wVn.warm = nVW.warm;
                    wVn.def = nVW.def;
                    wVn = ENTITIES2[__ENTITIE_PLAYER__].clothes[nVW.idClothe];
                    wVn.rad = nVW.rad;
                    wVn.warm = nVW.warm;
                    wVn.def = nVW.def;
                } else updateClotheInfo(nVW);
            }
        }
    };
    updateClotheInfo(INVENTORY);
}


var AudioManager = (function() {
    var wwwvv = [237225, 303931, 166687, 229213, 217292, 205860, 182041, 273065];
    var wMw = [];
    var WvwmM = window.Math.floor(window.Math.random() * wwwvv.length);
    var mvnmN = 0;
    var mWWVV = 0;
    var vmwnm = 0;
    var musicVolume = 0.45;
    var VNWVM = 0;
    var NNwwM = 0;

    AudioUtils.audio.end        = new AudioUtils.Sound("audio/end.mp3", 0, true);
    AudioUtils.audio.title      = new AudioUtils.Sound("audio/title.mp3", 0, true);
    AudioUtils.audio.geiger     = new AudioUtils.Sound("audio/geiger.mp3", 0, true);
    AudioUtils.audio.ambient1   = new AudioUtils.Sound("audio/ambient1.mp3", 0, true);
    AudioUtils.audio.ambient2   = new AudioUtils.Sound("audio/ambient2.mp3", 0, true);
    AudioUtils.audio.ambient3   = new AudioUtils.Sound("audio/ambient3.mp3", 0, true);
    AudioUtils.audio.ambient4   = new AudioUtils.Sound("audio/ambient4.mp3", 0, true);
    AudioUtils.audio.ambient5   = new AudioUtils.Sound("audio/ambient5.mp3", 0, true);
    AudioUtils.audio.ambient6   = new AudioUtils.Sound("audio/ambient6.mp3", 0, true);
    AudioUtils.audio.ambient7   = new AudioUtils.Sound("audio/ambient7.mp3", 0, true);
    AudioUtils.audio.ambient8   = new AudioUtils.Sound("audio/ambient8.mp3", 0, true);

    wMw.push(AudioUtils.audio.ambient1);
    wMw.push(AudioUtils.audio.ambient2);
    wMw.push(AudioUtils.audio.ambient3);
    wMw.push(AudioUtils.audio.ambient4);
    wMw.push(AudioUtils.audio.ambient5);
    wMw.push(AudioUtils.audio.ambient6);
    wMw.push(AudioUtils.audio.ambient7);
    wMw.push(AudioUtils.audio.ambient8);

    AudioUtils._fx.open         = new AudioUtils.Sound("audio/open.mp3", 1, false, 1);
    AudioUtils._fx.drag         = new AudioUtils.Sound("audio/drag.mp3", 1, false, 1);
    AudioUtils._fx.play         = new AudioUtils.Sound("audio/play.mp3", 1, false, 1);
    AudioUtils._fx.skill        = new AudioUtils.Sound("audio/skill.mp3", 1, false, 1);
    AudioUtils._fx.craft        = new AudioUtils.Sound("audio/craft.mp3", 1, false, 1);
    AudioUtils._fx.button       = new AudioUtils.Sound("audio/button.mp3", 1, false, 1);
    AudioUtils._fx.throwLoot    = new AudioUtils.Sound("audio/throwLoot.mp3", 1, false, 1);
    AudioUtils._fx.levelup      = new AudioUtils.Sound("audio/levelup.mp3", 1, false, 1);
    AudioUtils._fx.explosion    = new AudioUtils.Sound("audio/explosion.mp3", 1, false, 1);
    AudioUtils._fx.zipperOn     = new AudioUtils.Sound("audio/zipper-on.mp3", 0.7, false, 1);
    AudioUtils._fx.zipperOff    = new AudioUtils.Sound("audio/zipper-off.mp3", 0.7, false, 1);
    AudioUtils._fx.eat          = [new AudioUtils.Sound("audio/eat-1s-0.mp3", 1, false, 1), new AudioUtils.Sound("audio/eat-1s-1.mp3", 1, false, 1), new AudioUtils.Sound("audio/eat-1s-2.mp3", 1, false, 1)];
    AudioUtils._fx.damage       = [];

    for (var i = 1; i < SOUND.length; i++) AudioUtils._fx.damage[i] = new AudioUtils.Sound(SOUND[i], 1, false, 1);
    AudioUtils._fx.shot = [];
    var weapons = ENTITIES[__ENTITIE_PLAYER__].weapons;
    for (var i = 0; i < weapons.length; i++) {
        var weapon = weapons[i];
        if (weapon.sound === window.undefined) AudioUtils._fx.shot[i] = 0;
        else if (typeof weapon.sound === "number") AudioUtils._fx.shot[i] = weapon.sound;
        else {
            AudioUtils._fx.shot[i] = [];
            for (var j = 0; j < weapon.sound.length; j++) AudioUtils._fx.shot[i][j] = new AudioUtils.Sound(weapon.sound[j], 1, false, 1);
        }
    }
    if (AudioUtils.options.isAudio === 1) {
        AudioUtils.loadSound(wMw[WvwmM]);
        AudioUtils.loadSound(AudioUtils.audio.title);
    }
    for (var i = 0; i < AudioUtils._fx.shot.length; i++) {
        var sound = AudioUtils._fx.shot[i];
        if (sound === 1) AudioUtils._fx.shot[i] = AudioUtils._fx.eat;
    }
    if (AudioUtils.options.isFx === 1) {
        AudioUtils.loadSound(AudioUtils._fx.open);
        AudioUtils.loadSound(AudioUtils._fx.play);
        AudioUtils.loadSound(AudioUtils._fx.drag);
        AudioUtils.loadSound(AudioUtils._fx.skill);
        AudioUtils.loadSound(AudioUtils._fx.craft);
        AudioUtils.loadSound(AudioUtils._fx.button);
        AudioUtils.loadSound(AudioUtils._fx.levelup);
        AudioUtils.loadSound(AudioUtils._fx.explosion);
        for (var i = 0; i < AudioUtils._fx.eat.length; i++) AudioUtils.loadSound(AudioUtils._fx.eat[i]);
        for (var i = 1; i < AudioUtils._fx.damage.length; i++) AudioUtils.loadSound(AudioUtils._fx.damage[i]);
        for (var i = 0; i < AudioUtils._fx.shot.length; i++) {
            var sound = AudioUtils._fx.shot[i];
            if (sound !== 0) {
                for (var j = 0; j < sound.length; j++) AudioUtils.loadSound(sound[j]);
            }
        }
    }

    function scheduler() {
        AudioUtils.playSound(AudioUtils.audio.title);
        AudioUtils.playSound(AudioUtils.audio.end);
        for (var i = 0; i < wMw.length; i++) AudioUtils.playSound(wMw[i]);
        if (AudioUtils.options.isFx === 1) {
            var wmNWn = AudioUtils.options.isAudio;
            AudioUtils.options.isAudio = 1;
            AudioUtils.playSound(AudioUtils.audio.geiger);
            AudioUtils.options.isAudio = wmNWn;
        }
        if ((NNwwM !== AudioManager.geiger) && (mWWVV === 1)) {
            if (VNWVM === 0) {
                VNWVM = 1000;
                var distance = AudioManager.geiger - NNwwM;
                AudioUtils.fadeSound(AudioUtils.audio.geiger, 250, distance);
                NNwwM = AudioManager.geiger;
            }
            VNWVM = window.Math.max(0, VNWVM - delta);
        }
        if ((mvnmN === 0) && (mWWVV === 1)) {
            AudioUtils.fadeSound(wMw[WvwmM], 5000, -musicVolume);
            WvwmM = (WvwmM + 1) % wMw.length;
            mvnmN = wwwvv[WvwmM] - 5000;
            AudioUtils.fadeSound(wMw[WvwmM], 5000, musicVolume);
        }
        mvnmN = window.Math.max(0, mvnmN - delta);
    };

    function quitGame() {
        mWWVV = 0;
        vmwnm = 1;
        AudioUtils.fadeSound(AudioUtils.audio.geiger, 250, -NNwwM);
        NNwwM = 0;
        AudioManager.geiger = 0;
        AudioUtils.fadeSound(wMw[WvwmM], 500, -musicVolume);
        AudioUtils.fadeSound(AudioUtils.audio.end, 1000, AudioManager.musicVolume);
    };

    function cutTitleMusic() {
        if (vmwnm === 0) AudioUtils.fadeSound(AudioUtils.audio.title, 500, -musicVolume);
        else AudioUtils.fadeSound(AudioUtils.audio.end, 500, -musicVolume);
    };

    function startGame() {
        mWWVV = 1;
        cutTitleMusic();
        if (mvnmN === 0) WvwmM = (WvwmM + 1) % wMw.length;
        mvnmN = wwwvv[WvwmM] - 5000;
        AudioUtils.fadeSound(wMw[WvwmM], 5000, musicVolume);
    };
    return {
        startGame:      startGame,
        quitGame:       quitGame,
        scheduler:      scheduler,
        cutTitleMusic:  cutTitleMusic,
        musicVolume:    musicVolume,
        geiger:         0
    };
})();
try {
    debugMode;
} catch (error) {
    debugMode = window.undefined;
}
if (debugMode === window.undefined) {
    window.aiptag = window.aiptag || ({});
    window.aiptag["consented"] = true;
    window.aiptag["cmd"] = window.aiptag["cmd"] || ([]);
    window.aiptag["cmd"]["display"] = window.aiptag["cmd"]["display"] || ([]);
    window.aiptag["cmd"]["player"] = window.aiptag["cmd"]["player"] || ([]);
     var fun = function() {        
        adplayer = new aipPlayer({
            AD_WIDTH: 960,
            AD_HEIGHT: 540,
            AD_FULLSCREEN: true,
            AD_CENTERPLAYER: true,
            LOADING_TEXT: 'loading advertisement',
            PREROLL_ELEM: function() {
                return window.document.getElementById('preroll');
            },
            AIP_COMPLETE: function(nMWWmvw) {
                Home.waitAds = 0;
                Home.ads = -1;
                Home.joinServer();
            },
            AIP_REMOVE: function() {}
        });
    };
    window.aiptag["cmd"]["player"].push(fun);
}

function reloadIframe() {
    try {
        if (window.self !== window.top) {
            loaded = localStorage2.getItem("inIframe");
            if (loaded === "1") localStorage2.setItem("inIframe", "0");
            else {
                localStorage2.setItem("inIframe", "1");
                window.location.href = window.location.href + "";
            }
        }
    } catch (error) {}
};
reloadIframe();

var versionInf = [30, 2079];
try {
    debugMode;
} catch (error) {
    debugMode = window.undefined;
}

Entitie.init(600, 30000, 5000);
Client.init(30, 15000, 2000, 3, 60000, 10000, onMessageRaw, onMessageJSON, onFirstMessage);

function waitHTMLAndRun() {
    htmlLoaded = ((((((((true && (window.document.getElementById("nickname") !== null)) && (window.document.getElementById("terms") !== null)) && (window.document.getElementById("serverList") !== null)) && (window.document.getElementById("changelog") !== null)) && (window.document.getElementById("howtoplay") !== null)) && (window.document.getElementById("featuredVideo") !== null)) && (window.document.getElementById("trevda") !== null)) && (window.document.getElementById("preroll") !== null)) && (window.document.getElementById("chat") !== null);
    if (htmlLoaded === true) {
        Loader.init();
        Home.init();
        Game.init();
        Score.init();
        Rank.init();
        Editor.init();
        CanvasUtils.initAnimatedCanvas(Loader, __RESIZE_METHOD_SCALE__, "can", "bod", 1280, window.undefined, true);
        Loader.run();
    } else window.setTimeout(waitHTMLAndRun, 100);
};

window.onbeforeunload = function() {
    if (Client.state & Client.State.__CONNECTED__) return "Are you sure you want quit?";
};
waitHTMLAndRun();

//var noDebug = window.console;
//noDebug.log = noDebug.info = noDebug.error = noDebug.warn = noDebug.debug = noDebug.NWVnW = noDebug.trace = noDebug.time = noDebug.timeEnd = function() {};

/**
 * dat-gui JavaScript Controller Library
 * https://github.com/dataarts/dat.gui
 *
 * Copyright 2011 Data Arts Team, Google Creative Lab
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 */
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.dat={})}(this,function(e){"use strict";function t(e,t){var n=e.__state.conversionName.toString(),o=Math.round(e.r),i=Math.round(e.g),r=Math.round(e.b),s=e.a,a=Math.round(e.h),l=e.s.toFixed(1),d=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===n||"SIX_CHAR_HEX"===n){for(var c=e.hex.toString(16);c.length<6;)c="0"+c;return"#"+c}return"CSS_RGB"===n?"rgb("+o+","+i+","+r+")":"CSS_RGBA"===n?"rgba("+o+","+i+","+r+","+s+")":"HEX"===n?"0x"+e.hex.toString(16):"RGB_ARRAY"===n?"["+o+","+i+","+r+"]":"RGBA_ARRAY"===n?"["+o+","+i+","+r+","+s+"]":"RGB_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+"}":"RGBA_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+",a:"+s+"}":"HSV_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+"}":"HSVA_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+",a:"+s+"}":"unknown format"}function n(e,t,n){Object.defineProperty(e,t,{get:function(){return"RGB"===this.__state.space?this.__state[t]:(I.recalculateRGB(this,t,n),this.__state[t])},set:function(e){"RGB"!==this.__state.space&&(I.recalculateRGB(this,t,n),this.__state.space="RGB"),this.__state[t]=e}})}function o(e,t){Object.defineProperty(e,t,{get:function(){return"HSV"===this.__state.space?this.__state[t]:(I.recalculateHSV(this),this.__state[t])},set:function(e){"HSV"!==this.__state.space&&(I.recalculateHSV(this),this.__state.space="HSV"),this.__state[t]=e}})}function i(e){if("0"===e||S.isUndefined(e))return 0;var t=e.match(U);return S.isNull(t)?0:parseFloat(t[1])}function r(e){var t=e.toString();return t.indexOf(".")>-1?t.length-t.indexOf(".")-1:0}function s(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}function a(e,t,n,o,i){return o+(e-t)/(n-t)*(i-o)}function l(e,t,n,o){e.style.background="",S.each(ee,function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+n+" 0%, "+o+" 100%); "})}function d(e){e.style.background="",e.style.cssText+="background: -moz-linear-gradient(top,  #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",e.style.cssText+="background: -webkit-linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -o-linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -ms-linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: linear-gradient(top,  #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}function c(e,t,n){var o=document.createElement("li");return t&&o.appendChild(t),n?e.__ul.insertBefore(o,n):e.__ul.appendChild(o),e.onResize(),o}function u(e){X.unbind(window,"resize",e.__resizeHandler),e.saveToLocalStorageIfPossible&&X.unbind(window,"unload",e.saveToLocalStorageIfPossible)}function _(e,t){var n=e.__preset_select[e.__preset_select.selectedIndex];n.innerHTML=t?n.value+"*":n.value}function h(e,t,n){if(n.__li=t,n.__gui=e,S.extend(n,{options:function(t){if(arguments.length>1){var o=n.__li.nextElementSibling;return n.remove(),f(e,n.object,n.property,{before:o,factoryArgs:[S.toArray(arguments)]})}if(S.isArray(t)||S.isObject(t)){var i=n.__li.nextElementSibling;return n.remove(),f(e,n.object,n.property,{before:i,factoryArgs:[t]})}},name:function(e){return n.__li.firstElementChild.firstElementChild.innerHTML=e,n},listen:function(){return n.__gui.listen(n),n},remove:function(){return n.__gui.remove(n),n}}),n instanceof q){var o=new Q(n.object,n.property,{min:n.__min,max:n.__max,step:n.__step});S.each(["updateDisplay","onChange","onFinishChange","step","min","max"],function(e){var t=n[e],i=o[e];n[e]=o[e]=function(){var e=Array.prototype.slice.call(arguments);return i.apply(o,e),t.apply(n,e)}}),X.addClass(t,"has-slider"),n.domElement.insertBefore(o.domElement,n.domElement.firstElementChild)}else if(n instanceof Q){var i=function(t){if(S.isNumber(n.__min)&&S.isNumber(n.__max)){var o=n.__li.firstElementChild.firstElementChild.innerHTML,i=n.__gui.__listening.indexOf(n)>-1;n.remove();var r=f(e,n.object,n.property,{before:n.__li.nextElementSibling,factoryArgs:[n.__min,n.__max,n.__step]});return r.name(o),i&&r.listen(),r}return t};n.min=S.compose(i,n.min),n.max=S.compose(i,n.max)}else n instanceof K?(X.bind(t,"click",function(){X.fakeEvent(n.__checkbox,"click")}),X.bind(n.__checkbox,"click",function(e){e.stopPropagation()})):n instanceof Z?(X.bind(t,"click",function(){X.fakeEvent(n.__button,"click")}),X.bind(t,"mouseover",function(){X.addClass(n.__button,"hover")}),X.bind(t,"mouseout",function(){X.removeClass(n.__button,"hover")})):n instanceof $&&(X.addClass(t,"color"),n.updateDisplay=S.compose(function(e){return t.style.borderLeftColor=n.__color.toString(),e},n.updateDisplay),n.updateDisplay());n.setValue=S.compose(function(t){return e.getRoot().__preset_select&&n.isModified()&&_(e.getRoot(),!0),t},n.setValue)}function p(e,t){var n=e.getRoot(),o=n.__rememberedObjects.indexOf(t.object);if(-1!==o){var i=n.__rememberedObjectIndecesToControllers[o];if(void 0===i&&(i={},n.__rememberedObjectIndecesToControllers[o]=i),i[t.property]=t,n.load&&n.load.remembered){var r=n.load.remembered,s=void 0;if(r[e.preset])s=r[e.preset];else{if(!r[se])return;s=r[se]}if(s[o]&&void 0!==s[o][t.property]){var a=s[o][t.property];t.initialValue=a,t.setValue(a)}}}}function f(e,t,n,o){if(void 0===t[n])throw new Error('Object "'+t+'" has no property "'+n+'"');var i=void 0;if(o.color)i=new $(t,n);else{var r=[t,n].concat(o.factoryArgs);i=ne.apply(e,r)}o.before instanceof z&&(o.before=o.before.__li),p(e,i),X.addClass(i.domElement,"c");var s=document.createElement("span");X.addClass(s,"property-name"),s.innerHTML=i.property;var a=document.createElement("div");a.appendChild(s),a.appendChild(i.domElement);var l=c(e,a,o.before);return X.addClass(l,he.CLASS_CONTROLLER_ROW),i instanceof $?X.addClass(l,"color"):X.addClass(l,H(i.getValue())),h(e,l,i),e.__controllers.push(i),i}function m(e,t){return document.location.href+"."+t}function g(e,t,n){var o=document.createElement("option");o.innerHTML=t,o.value=t,e.__preset_select.appendChild(o),n&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function b(e,t){t.style.display=e.useLocalStorage?"block":"none"}function v(e){var t=e.__save_row=document.createElement("li");X.addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),X.addClass(t,"save-row");var n=document.createElement("span");n.innerHTML="&nbsp;",X.addClass(n,"button gears");var o=document.createElement("span");o.innerHTML="Save",X.addClass(o,"button"),X.addClass(o,"save");var i=document.createElement("span");i.innerHTML="New",X.addClass(i,"button"),X.addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",X.addClass(r,"button"),X.addClass(r,"revert");var s=e.__preset_select=document.createElement("select");if(e.load&&e.load.remembered?S.each(e.load.remembered,function(t,n){g(e,n,n===e.preset)}):g(e,se,!1),X.bind(s,"change",function(){for(var t=0;t<e.__preset_select.length;t++)e.__preset_select[t].innerHTML=e.__preset_select[t].value;e.preset=this.value}),t.appendChild(s),t.appendChild(n),t.appendChild(o),t.appendChild(i),t.appendChild(r),ae){var a=document.getElementById("dg-local-explain"),l=document.getElementById("dg-local-storage");document.getElementById("dg-save-locally").style.display="block","true"===localStorage.getItem(m(e,"isLocal"))&&l.setAttribute("checked","checked"),b(e,a),X.bind(l,"change",function(){e.useLocalStorage=!e.useLocalStorage,b(e,a)})}var d=document.getElementById("dg-new-constructor");X.bind(d,"keydown",function(e){!e.metaKey||67!==e.which&&67!==e.keyCode||le.hide()}),X.bind(n,"click",function(){d.innerHTML=JSON.stringify(e.getSaveObject(),void 0,2),le.show(),d.focus(),d.select()}),X.bind(o,"click",function(){e.save()}),X.bind(i,"click",function(){var t=prompt("Enter a new preset name.");t&&e.saveAs(t)}),X.bind(r,"click",function(){e.revert()})}function y(e){function t(t){return t.preventDefault(),e.width+=i-t.clientX,e.onResize(),i=t.clientX,!1}function n(){X.removeClass(e.__closeButton,he.CLASS_DRAG),X.unbind(window,"mousemove",t),X.unbind(window,"mouseup",n)}function o(o){return o.preventDefault(),i=o.clientX,X.addClass(e.__closeButton,he.CLASS_DRAG),X.bind(window,"mousemove",t),X.bind(window,"mouseup",n),!1}var i=void 0;e.__resize_handle=document.createElement("div"),S.extend(e.__resize_handle.style,{width:"6px",marginLeft:"-3px",height:"200px",cursor:"ew-resize",position:"absolute"}),X.bind(e.__resize_handle,"mousedown",o),X.bind(e.__closeButton,"mousedown",o),e.domElement.insertBefore(e.__resize_handle,e.domElement.firstElementChild)}function w(e,t){e.domElement.style.width=t+"px",e.__save_row&&e.autoPlace&&(e.__save_row.style.width=t+"px"),e.__closeButton&&(e.__closeButton.style.width=t+"px")}function x(e,t){var n={};return S.each(e.__rememberedObjects,function(o,i){var r={},s=e.__rememberedObjectIndecesToControllers[i];S.each(s,function(e,n){r[n]=t?e.initialValue:e.getValue()}),n[i]=r}),n}function E(e){for(var t=0;t<e.__preset_select.length;t++)e.__preset_select[t].value===e.preset&&(e.__preset_select.selectedIndex=t)}function C(e){0!==e.length&&oe.call(window,function(){C(e)}),S.each(e,function(e){e.updateDisplay()})}var A=Array.prototype.forEach,k=Array.prototype.slice,S={BREAK:{},extend:function(e){return this.each(k.call(arguments,1),function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(n){this.isUndefined(t[n])||(e[n]=t[n])}.bind(this))},this),e},defaults:function(e){return this.each(k.call(arguments,1),function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(n){this.isUndefined(e[n])&&(e[n]=t[n])}.bind(this))},this),e},compose:function(){var e=k.call(arguments);return function(){for(var t=k.call(arguments),n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},each:function(e,t,n){if(e)if(A&&e.forEach&&e.forEach===A)e.forEach(t,n);else if(e.length===e.length+0){var o=void 0,i=void 0;for(o=0,i=e.length;o<i;o++)if(o in e&&t.call(n,e[o],o)===this.BREAK)return}else for(var r in e)if(t.call(n,e[r],r)===this.BREAK)return},defer:function(e){setTimeout(e,0)},debounce:function(e,t,n){var o=void 0;return function(){var i=this,r=arguments,s=n||!o;clearTimeout(o),o=setTimeout(function(){o=null,n||e.apply(i,r)},t),s&&e.apply(i,r)}},toArray:function(e){return e.toArray?e.toArray():k.call(e)},isUndefined:function(e){return void 0===e},isNull:function(e){return null===e},isNaN:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e){return isNaN(e)}),isArray:Array.isArray||function(e){return e.constructor===Array},isObject:function(e){return e===Object(e)},isNumber:function(e){return e===e+0},isString:function(e){return e===e+""},isBoolean:function(e){return!1===e||!0===e},isFunction:function(e){return e instanceof Function}},O=[{litmus:S.isString,conversions:{THREE_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString()+t[1].toString()+t[2].toString()+t[2].toString()+t[3].toString()+t[3].toString(),0)}},write:t},SIX_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9]{6})$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString(),0)}},write:t},CSS_RGB:{read:function(e){var t=e.match(/^rgb\(\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3])}},write:t},CSS_RGBA:{read:function(e){var t=e.match(/^rgba\(\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3]),a:parseFloat(t[4])}},write:t}}},{litmus:S.isNumber,conversions:{HEX:{read:function(e){return{space:"HEX",hex:e,conversionName:"HEX"}},write:function(e){return e.hex}}}},{litmus:S.isArray,conversions:{RGB_ARRAY:{read:function(e){return 3===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2]}},write:function(e){return[e.r,e.g,e.b]}},RGBA_ARRAY:{read:function(e){return 4===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2],a:e[3]}},write:function(e){return[e.r,e.g,e.b,e.a]}}}},{litmus:S.isObject,conversions:{RGBA_OBJ:{read:function(e){return!!(S.isNumber(e.r)&&S.isNumber(e.g)&&S.isNumber(e.b)&&S.isNumber(e.a))&&{space:"RGB",r:e.r,g:e.g,b:e.b,a:e.a}},write:function(e){return{r:e.r,g:e.g,b:e.b,a:e.a}}},RGB_OBJ:{read:function(e){return!!(S.isNumber(e.r)&&S.isNumber(e.g)&&S.isNumber(e.b))&&{space:"RGB",r:e.r,g:e.g,b:e.b}},write:function(e){return{r:e.r,g:e.g,b:e.b}}},HSVA_OBJ:{read:function(e){return!!(S.isNumber(e.h)&&S.isNumber(e.s)&&S.isNumber(e.v)&&S.isNumber(e.a))&&{space:"HSV",h:e.h,s:e.s,v:e.v,a:e.a}},write:function(e){return{h:e.h,s:e.s,v:e.v,a:e.a}}},HSV_OBJ:{read:function(e){return!!(S.isNumber(e.h)&&S.isNumber(e.s)&&S.isNumber(e.v))&&{space:"HSV",h:e.h,s:e.s,v:e.v}},write:function(e){return{h:e.h,s:e.s,v:e.v}}}}}],T=void 0,L=void 0,R=function(){L=!1;var e=arguments.length>1?S.toArray(arguments):arguments[0];return S.each(O,function(t){if(t.litmus(e))return S.each(t.conversions,function(t,n){if(T=t.read(e),!1===L&&!1!==T)return L=T,T.conversionName=n,T.conversion=t,S.BREAK}),S.BREAK}),L},B=void 0,N={hsv_to_rgb:function(e,t,n){var o=Math.floor(e/60)%6,i=e/60-Math.floor(e/60),r=n*(1-t),s=n*(1-i*t),a=n*(1-(1-i)*t),l=[[n,a,r],[s,n,r],[r,n,a],[r,s,n],[a,r,n],[n,r,s]][o];return{r:255*l[0],g:255*l[1],b:255*l[2]}},rgb_to_hsv:function(e,t,n){var o=Math.min(e,t,n),i=Math.max(e,t,n),r=i-o,s=void 0,a=void 0;return 0===i?{h:NaN,s:0,v:0}:(a=r/i,s=e===i?(t-n)/r:t===i?2+(n-e)/r:4+(e-t)/r,(s/=6)<0&&(s+=1),{h:360*s,s:a,v:i/255})},rgb_to_hex:function(e,t,n){var o=this.hex_with_component(0,2,e);return o=this.hex_with_component(o,1,t),o=this.hex_with_component(o,0,n)},component_from_hex:function(e,t){return e>>8*t&255},hex_with_component:function(e,t,n){return n<<(B=8*t)|e&~(255<<B)}},H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},F=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},P=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),D=function e(t,n,o){null===t&&(t=Function.prototype);var i=Object.getOwnPropertyDescriptor(t,n);if(void 0===i){var r=Object.getPrototypeOf(t);return null===r?void 0:e(r,n,o)}if("value"in i)return i.value;var s=i.get;if(void 0!==s)return s.call(o)},j=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},V=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},I=function(){function e(){if(F(this,e),this.__state=R.apply(this,arguments),!1===this.__state)throw new Error("Failed to interpret color arguments");this.__state.a=this.__state.a||1}return P(e,[{key:"toString",value:function(){return t(this)}},{key:"toHexString",value:function(){return t(this,!0)}},{key:"toOriginal",value:function(){return this.__state.conversion.write(this)}}]),e}();I.recalculateRGB=function(e,t,n){if("HEX"===e.__state.space)e.__state[t]=N.component_from_hex(e.__state.hex,n);else{if("HSV"!==e.__state.space)throw new Error("Corrupted color state");S.extend(e.__state,N.hsv_to_rgb(e.__state.h,e.__state.s,e.__state.v))}},I.recalculateHSV=function(e){var t=N.rgb_to_hsv(e.r,e.g,e.b);S.extend(e.__state,{s:t.s,v:t.v}),S.isNaN(t.h)?S.isUndefined(e.__state.h)&&(e.__state.h=0):e.__state.h=t.h},I.COMPONENTS=["r","g","b","h","s","v","hex","a"],n(I.prototype,"r",2),n(I.prototype,"g",1),n(I.prototype,"b",0),o(I.prototype,"h"),o(I.prototype,"s"),o(I.prototype,"v"),Object.defineProperty(I.prototype,"a",{get:function(){return this.__state.a},set:function(e){this.__state.a=e}}),Object.defineProperty(I.prototype,"hex",{get:function(){return"HEX"!==this.__state.space&&(this.__state.hex=N.rgb_to_hex(this.r,this.g,this.b),this.__state.space="HEX"),this.__state.hex},set:function(e){this.__state.space="HEX",this.__state.hex=e}});var z=function(){function e(t,n){F(this,e),this.initialValue=t[n],this.domElement=document.createElement("div"),this.object=t,this.property=n,this.__onChange=void 0,this.__onFinishChange=void 0}return P(e,[{key:"onChange",value:function(e){return this.__onChange=e,this}},{key:"onFinishChange",value:function(e){return this.__onFinishChange=e,this}},{key:"setValue",value:function(e){return this.object[this.property]=e,this.__onChange&&this.__onChange.call(this,e),this.updateDisplay(),this}},{key:"getValue",value:function(){return this.object[this.property]}},{key:"updateDisplay",value:function(){return this}},{key:"isModified",value:function(){return this.initialValue!==this.getValue()}}]),e}(),M={HTMLEvents:["change"],MouseEvents:["click","mousemove","mousedown","mouseup","mouseover"],KeyboardEvents:["keydown"]},G={};S.each(M,function(e,t){S.each(e,function(e){G[e]=t})});var U=/(\d+(\.\d+)?)px/,X={makeSelectable:function(e,t){void 0!==e&&void 0!==e.style&&(e.onselectstart=t?function(){return!1}:function(){},e.style.MozUserSelect=t?"auto":"none",e.style.KhtmlUserSelect=t?"auto":"none",e.unselectable=t?"on":"off")},makeFullscreen:function(e,t,n){var o=n,i=t;S.isUndefined(i)&&(i=!0),S.isUndefined(o)&&(o=!0),e.style.position="absolute",i&&(e.style.left=0,e.style.right=0),o&&(e.style.top=0,e.style.bottom=0)},fakeEvent:function(e,t,n,o){var i=n||{},r=G[t];if(!r)throw new Error("Event type "+t+" not supported.");var s=document.createEvent(r);switch(r){case"MouseEvents":var a=i.x||i.clientX||0,l=i.y||i.clientY||0;s.initMouseEvent(t,i.bubbles||!1,i.cancelable||!0,window,i.clickCount||1,0,0,a,l,!1,!1,!1,!1,0,null);break;case"KeyboardEvents":var d=s.initKeyboardEvent||s.initKeyEvent;S.defaults(i,{cancelable:!0,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,keyCode:void 0,charCode:void 0}),d(t,i.bubbles||!1,i.cancelable,window,i.ctrlKey,i.altKey,i.shiftKey,i.metaKey,i.keyCode,i.charCode);break;default:s.initEvent(t,i.bubbles||!1,i.cancelable||!0)}S.defaults(s,o),e.dispatchEvent(s)},bind:function(e,t,n,o){var i=o||!1;return e.addEventListener?e.addEventListener(t,n,i):e.attachEvent&&e.attachEvent("on"+t,n),X},unbind:function(e,t,n,o){var i=o||!1;return e.removeEventListener?e.removeEventListener(t,n,i):e.detachEvent&&e.detachEvent("on"+t,n),X},addClass:function(e,t){if(void 0===e.className)e.className=t;else if(e.className!==t){var n=e.className.split(/ +/);-1===n.indexOf(t)&&(n.push(t),e.className=n.join(" ").replace(/^\s+/,"").replace(/\s+$/,""))}return X},removeClass:function(e,t){if(t)if(e.className===t)e.removeAttribute("class");else{var n=e.className.split(/ +/),o=n.indexOf(t);-1!==o&&(n.splice(o,1),e.className=n.join(" "))}else e.className=void 0;return X},hasClass:function(e,t){return new RegExp("(?:^|\\s+)"+t+"(?:\\s+|$)").test(e.className)||!1},getWidth:function(e){var t=getComputedStyle(e);return i(t["border-left-width"])+i(t["border-right-width"])+i(t["padding-left"])+i(t["padding-right"])+i(t.width)},getHeight:function(e){var t=getComputedStyle(e);return i(t["border-top-width"])+i(t["border-bottom-width"])+i(t["padding-top"])+i(t["padding-bottom"])+i(t.height)},getOffset:function(e){var t=e,n={left:0,top:0};if(t.offsetParent)do{n.left+=t.offsetLeft,n.top+=t.offsetTop,t=t.offsetParent}while(t);return n},isActive:function(e){return e===document.activeElement&&(e.type||e.href)}},K=function(e){function t(e,n){F(this,t);var o=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),i=o;return o.__prev=o.getValue(),o.__checkbox=document.createElement("input"),o.__checkbox.setAttribute("type","checkbox"),X.bind(o.__checkbox,"change",function(){i.setValue(!i.__prev)},!1),o.domElement.appendChild(o.__checkbox),o.updateDisplay(),o}return j(t,z),P(t,[{key:"setValue",value:function(e){var n=D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,e);return this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue()),this.__prev=this.getValue(),n}},{key:"updateDisplay",value:function(){return!0===this.getValue()?(this.__checkbox.setAttribute("checked","checked"),this.__checkbox.checked=!0,this.__prev=!0):(this.__checkbox.checked=!1,this.__prev=!1),D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),Y=function(e){function t(e,n,o){F(this,t);var i=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=o,s=i;if(i.__select=document.createElement("select"),S.isArray(r)){var a={};S.each(r,function(e){a[e]=e}),r=a}return S.each(r,function(e,t){var n=document.createElement("option");n.innerHTML=t,n.setAttribute("value",e),s.__select.appendChild(n)}),i.updateDisplay(),X.bind(i.__select,"change",function(){var e=this.options[this.selectedIndex].value;s.setValue(e)}),i.domElement.appendChild(i.__select),i}return j(t,z),P(t,[{key:"setValue",value:function(e){var n=D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,e);return this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue()),n}},{key:"updateDisplay",value:function(){return X.isActive(this.__select)?this:(this.__select.value=this.getValue(),D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this))}}]),t}(),J=function(e){function t(e,n){function o(){r.setValue(r.__input.value)}F(this,t);var i=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=i;return i.__input=document.createElement("input"),i.__input.setAttribute("type","text"),X.bind(i.__input,"keyup",o),X.bind(i.__input,"change",o),X.bind(i.__input,"blur",function(){r.__onFinishChange&&r.__onFinishChange.call(r,r.getValue())}),X.bind(i.__input,"keydown",function(e){13===e.keyCode&&this.blur()}),i.updateDisplay(),i.domElement.appendChild(i.__input),i}return j(t,z),P(t,[{key:"updateDisplay",value:function(){return X.isActive(this.__input)||(this.__input.value=this.getValue()),D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),W=function(e){function t(e,n,o){F(this,t);var i=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),s=o||{};return i.__min=s.min,i.__max=s.max,i.__step=s.step,S.isUndefined(i.__step)?0===i.initialValue?i.__impliedStep=1:i.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(i.initialValue))/Math.LN10))/10:i.__impliedStep=i.__step,i.__precision=r(i.__impliedStep),i}return j(t,z),P(t,[{key:"setValue",value:function(e){var n=e;return void 0!==this.__min&&n<this.__min?n=this.__min:void 0!==this.__max&&n>this.__max&&(n=this.__max),void 0!==this.__step&&n%this.__step!=0&&(n=Math.round(n/this.__step)*this.__step),D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,n)}},{key:"min",value:function(e){return this.__min=e,this}},{key:"max",value:function(e){return this.__max=e,this}},{key:"step",value:function(e){return this.__step=e,this.__impliedStep=e,this.__precision=r(e),this}}]),t}(),Q=function(e){function t(e,n,o){function i(){l.__onFinishChange&&l.__onFinishChange.call(l,l.getValue())}function r(e){var t=d-e.clientY;l.setValue(l.getValue()+t*l.__impliedStep),d=e.clientY}function s(){X.unbind(window,"mousemove",r),X.unbind(window,"mouseup",s),i()}F(this,t);var a=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,o));a.__truncationSuspended=!1;var l=a,d=void 0;return a.__input=document.createElement("input"),a.__input.setAttribute("type","text"),X.bind(a.__input,"change",function(){var e=parseFloat(l.__input.value);S.isNaN(e)||l.setValue(e)}),X.bind(a.__input,"blur",function(){i()}),X.bind(a.__input,"mousedown",function(e){X.bind(window,"mousemove",r),X.bind(window,"mouseup",s),d=e.clientY}),X.bind(a.__input,"keydown",function(e){13===e.keyCode&&(l.__truncationSuspended=!0,this.blur(),l.__truncationSuspended=!1,i())}),a.updateDisplay(),a.domElement.appendChild(a.__input),a}return j(t,W),P(t,[{key:"updateDisplay",value:function(){return this.__input.value=this.__truncationSuspended?this.getValue():s(this.getValue(),this.__precision),D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),q=function(e){function t(e,n,o,i,r){function s(e){e.preventDefault();var t=_.__background.getBoundingClientRect();return _.setValue(a(e.clientX,t.left,t.right,_.__min,_.__max)),!1}function l(){X.unbind(window,"mousemove",s),X.unbind(window,"mouseup",l),_.__onFinishChange&&_.__onFinishChange.call(_,_.getValue())}function d(e){var t=e.touches[0].clientX,n=_.__background.getBoundingClientRect();_.setValue(a(t,n.left,n.right,_.__min,_.__max))}function c(){X.unbind(window,"touchmove",d),X.unbind(window,"touchend",c),_.__onFinishChange&&_.__onFinishChange.call(_,_.getValue())}F(this,t);var u=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,{min:o,max:i,step:r})),_=u;return u.__background=document.createElement("div"),u.__foreground=document.createElement("div"),X.bind(u.__background,"mousedown",function(e){document.activeElement.blur(),X.bind(window,"mousemove",s),X.bind(window,"mouseup",l),s(e)}),X.bind(u.__background,"touchstart",function(e){1===e.touches.length&&(X.bind(window,"touchmove",d),X.bind(window,"touchend",c),d(e))}),X.addClass(u.__background,"slider"),X.addClass(u.__foreground,"slider-fg"),u.updateDisplay(),u.__background.appendChild(u.__foreground),u.domElement.appendChild(u.__background),u}return j(t,W),P(t,[{key:"updateDisplay",value:function(){var e=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*e+"%",D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),Z=function(e){function t(e,n,o){F(this,t);var i=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=i;return i.__button=document.createElement("div"),i.__button.innerHTML=void 0===o?"Fire":o,X.bind(i.__button,"click",function(e){return e.preventDefault(),r.fire(),!1}),X.addClass(i.__button,"button"),i.domElement.appendChild(i.__button),i}return j(t,z),P(t,[{key:"fire",value:function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}}]),t}(),$=function(e){function t(e,n){function o(e){u(e),X.bind(window,"mousemove",u),X.bind(window,"touchmove",u),X.bind(window,"mouseup",r),X.bind(window,"touchend",r)}function i(e){_(e),X.bind(window,"mousemove",_),X.bind(window,"touchmove",_),X.bind(window,"mouseup",s),X.bind(window,"touchend",s)}function r(){X.unbind(window,"mousemove",u),X.unbind(window,"touchmove",u),X.unbind(window,"mouseup",r),X.unbind(window,"touchend",r),c()}function s(){X.unbind(window,"mousemove",_),X.unbind(window,"touchmove",_),X.unbind(window,"mouseup",s),X.unbind(window,"touchend",s),c()}function a(){var e=R(this.value);!1!==e?(p.__color.__state=e,p.setValue(p.__color.toOriginal())):this.value=p.__color.toString()}function c(){p.__onFinishChange&&p.__onFinishChange.call(p,p.__color.toOriginal())}function u(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=p.__saturation_field.getBoundingClientRect(),n=e.touches&&e.touches[0]||e,o=n.clientX,i=n.clientY,r=(o-t.left)/(t.right-t.left),s=1-(i-t.top)/(t.bottom-t.top);return s>1?s=1:s<0&&(s=0),r>1?r=1:r<0&&(r=0),p.__color.v=s,p.__color.s=r,p.setValue(p.__color.toOriginal()),!1}function _(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=p.__hue_field.getBoundingClientRect(),n=1-((e.touches&&e.touches[0]||e).clientY-t.top)/(t.bottom-t.top);return n>1?n=1:n<0&&(n=0),p.__color.h=360*n,p.setValue(p.__color.toOriginal()),!1}F(this,t);var h=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));h.__color=new I(h.getValue()),h.__temp=new I(0);var p=h;h.domElement=document.createElement("div"),X.makeSelectable(h.domElement,!1),h.__selector=document.createElement("div"),h.__selector.className="selector",h.__saturation_field=document.createElement("div"),h.__saturation_field.className="saturation-field",h.__field_knob=document.createElement("div"),h.__field_knob.className="field-knob",h.__field_knob_border="2px solid ",h.__hue_knob=document.createElement("div"),h.__hue_knob.className="hue-knob",h.__hue_field=document.createElement("div"),h.__hue_field.className="hue-field",h.__input=document.createElement("input"),h.__input.type="text",h.__input_textShadow="0 1px 1px ",X.bind(h.__input,"keydown",function(e){13===e.keyCode&&a.call(this)}),X.bind(h.__input,"blur",a),X.bind(h.__selector,"mousedown",function(){X.addClass(this,"drag").bind(window,"mouseup",function(){X.removeClass(p.__selector,"drag")})}),X.bind(h.__selector,"touchstart",function(){X.addClass(this,"drag").bind(window,"touchend",function(){X.removeClass(p.__selector,"drag")})});var f=document.createElement("div");return S.extend(h.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),S.extend(h.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:h.__field_knob_border+(h.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),S.extend(h.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),S.extend(h.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),S.extend(f.style,{width:"100%",height:"100%",background:"none"}),l(f,"top","rgba(0,0,0,0)","#000"),S.extend(h.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),d(h.__hue_field),S.extend(h.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:h.__input_textShadow+"rgba(0,0,0,0.7)"}),X.bind(h.__saturation_field,"mousedown",o),X.bind(h.__saturation_field,"touchstart",o),X.bind(h.__field_knob,"mousedown",o),X.bind(h.__field_knob,"touchstart",o),X.bind(h.__hue_field,"mousedown",i),X.bind(h.__hue_field,"touchstart",i),h.__saturation_field.appendChild(f),h.__selector.appendChild(h.__field_knob),h.__selector.appendChild(h.__saturation_field),h.__selector.appendChild(h.__hue_field),h.__hue_field.appendChild(h.__hue_knob),h.domElement.appendChild(h.__input),h.domElement.appendChild(h.__selector),h.updateDisplay(),h}return j(t,z),P(t,[{key:"updateDisplay",value:function(){var e=R(this.getValue());if(!1!==e){var t=!1;S.each(I.COMPONENTS,function(n){if(!S.isUndefined(e[n])&&!S.isUndefined(this.__color.__state[n])&&e[n]!==this.__color.__state[n])return t=!0,{}},this),t&&S.extend(this.__color.__state,e)}S.extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var n=this.__color.v<.5||this.__color.s>.5?255:0,o=255-n;S.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+n+","+n+","+n+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,l(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),S.extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+n+","+n+","+n+")",textShadow:this.__input_textShadow+"rgba("+o+","+o+","+o+",.7)"})}}]),t}(),ee=["-moz-","-o-","-webkit-","-ms-",""],te={load:function(e,t){var n=t||document,o=n.createElement("link");o.type="text/css",o.rel="stylesheet",o.href=e,n.getElementsByTagName("head")[0].appendChild(o)},inject:function(e,t){var n=t||document,o=document.createElement("style");o.type="text/css",o.innerHTML=e;var i=n.getElementsByTagName("head")[0];try{i.appendChild(o)}catch(e){}}},ne=function(e,t){var n=e[t];return S.isArray(arguments[2])||S.isObject(arguments[2])?new Y(e,t,arguments[2]):S.isNumber(n)?S.isNumber(arguments[2])&&S.isNumber(arguments[3])?S.isNumber(arguments[4])?new q(e,t,arguments[2],arguments[3],arguments[4]):new q(e,t,arguments[2],arguments[3]):S.isNumber(arguments[4])?new Q(e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new Q(e,t,{min:arguments[2],max:arguments[3]}):S.isString(n)?new J(e,t):S.isFunction(n)?new Z(e,t,""):S.isBoolean(n)?new K(e,t):null},oe=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)},ie=function(){function e(){F(this,e),this.backgroundElement=document.createElement("div"),S.extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),X.makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),S.extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;X.bind(this.backgroundElement,"click",function(){t.hide()})}return P(e,[{key:"show",value:function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),S.defer(function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"})}},{key:"hide",value:function(){var e=this,t=function t(){e.domElement.style.display="none",e.backgroundElement.style.display="none",X.unbind(e.domElement,"webkitTransitionEnd",t),X.unbind(e.domElement,"transitionend",t),X.unbind(e.domElement,"oTransitionEnd",t)};X.bind(this.domElement,"webkitTransitionEnd",t),X.bind(this.domElement,"transitionend",t),X.bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"}},{key:"layout",value:function(){this.domElement.style.left=window.innerWidth/2-X.getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-X.getHeight(this.domElement)/2+"px"}}]),e}(),re=function(e){if(e&&"undefined"!=typeof window){var t=document.createElement("style");return t.setAttribute("type","text/css"),t.innerHTML=e,document.head.appendChild(t),e}}(".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .cr.function .property-name{width:100%}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\n");te.inject(re);var se="Default",ae=function(){try{return!!window.localStorage}catch(e){return!1}}(),le=void 0,de=!0,ce=void 0,ue=!1,_e=[],he=function e(t){var n=this,o=t||{};this.domElement=document.createElement("div"),this.__ul=document.createElement("ul"),this.domElement.appendChild(this.__ul),X.addClass(this.domElement,"dg"),this.__folders={},this.__controllers=[],this.__rememberedObjects=[],this.__rememberedObjectIndecesToControllers=[],this.__listening=[],o=S.defaults(o,{closeOnTop:!1,autoPlace:!0,width:e.DEFAULT_WIDTH}),o=S.defaults(o,{resizable:o.autoPlace,hideable:o.autoPlace}),S.isUndefined(o.load)?o.load={preset:se}:o.preset&&(o.load.preset=o.preset),S.isUndefined(o.parent)&&o.hideable&&_e.push(this),o.resizable=S.isUndefined(o.parent)&&o.resizable,o.autoPlace&&S.isUndefined(o.scrollable)&&(o.scrollable=!0);var i=ae&&"true"===localStorage.getItem(m(this,"isLocal")),r=void 0,s=void 0;if(Object.defineProperties(this,{parent:{get:function(){return o.parent}},scrollable:{get:function(){return o.scrollable}},autoPlace:{get:function(){return o.autoPlace}},closeOnTop:{get:function(){return o.closeOnTop}},preset:{get:function(){return n.parent?n.getRoot().preset:o.load.preset},set:function(e){n.parent?n.getRoot().preset=e:o.load.preset=e,E(this),n.revert()}},width:{get:function(){return o.width},set:function(e){o.width=e,w(n,e)}},name:{get:function(){return o.name},set:function(e){o.name=e,s&&(s.innerHTML=o.name)}},closed:{get:function(){return o.closed},set:function(t){o.closed=t,o.closed?X.addClass(n.__ul,e.CLASS_CLOSED):X.removeClass(n.__ul,e.CLASS_CLOSED),this.onResize(),n.__closeButton&&(n.__closeButton.innerHTML=t?e.TEXT_OPEN:e.TEXT_CLOSED)}},load:{get:function(){return o.load}},useLocalStorage:{get:function(){return i},set:function(e){ae&&(i=e,e?X.bind(window,"unload",r):X.unbind(window,"unload",r),localStorage.setItem(m(n,"isLocal"),e))}}}),S.isUndefined(o.parent)){if(this.closed=o.closed||!1,X.addClass(this.domElement,e.CLASS_MAIN),X.makeSelectable(this.domElement,!1),ae&&i){n.useLocalStorage=!0;var a=localStorage.getItem(m(this,"gui"));a&&(o.load=JSON.parse(a))}this.__closeButton=document.createElement("div"),this.__closeButton.innerHTML=e.TEXT_CLOSED,X.addClass(this.__closeButton,e.CLASS_CLOSE_BUTTON),o.closeOnTop?(X.addClass(this.__closeButton,e.CLASS_CLOSE_TOP),this.domElement.insertBefore(this.__closeButton,this.domElement.childNodes[0])):(X.addClass(this.__closeButton,e.CLASS_CLOSE_BOTTOM),this.domElement.appendChild(this.__closeButton)),X.bind(this.__closeButton,"click",function(){n.closed=!n.closed})}else{void 0===o.closed&&(o.closed=!0);var l=document.createTextNode(o.name);X.addClass(l,"controller-name"),s=c(n,l);X.addClass(this.__ul,e.CLASS_CLOSED),X.addClass(s,"title"),X.bind(s,"click",function(e){return e.preventDefault(),n.closed=!n.closed,!1}),o.closed||(this.closed=!1)}o.autoPlace&&(S.isUndefined(o.parent)&&(de&&(ce=document.createElement("div"),X.addClass(ce,"dg"),X.addClass(ce,e.CLASS_AUTO_PLACE_CONTAINER),document.body.appendChild(ce),de=!1),ce.appendChild(this.domElement),X.addClass(this.domElement,e.CLASS_AUTO_PLACE)),this.parent||w(n,o.width)),this.__resizeHandler=function(){n.onResizeDebounced()},X.bind(window,"resize",this.__resizeHandler),X.bind(this.__ul,"webkitTransitionEnd",this.__resizeHandler),X.bind(this.__ul,"transitionend",this.__resizeHandler),X.bind(this.__ul,"oTransitionEnd",this.__resizeHandler),this.onResize(),o.resizable&&y(this),r=function(){ae&&"true"===localStorage.getItem(m(n,"isLocal"))&&localStorage.setItem(m(n,"gui"),JSON.stringify(n.getSaveObject()))},this.saveToLocalStorageIfPossible=r,o.parent||function(){var e=n.getRoot();e.width+=1,S.defer(function(){e.width-=1})}()};he.toggleHide=function(){ue=!ue,S.each(_e,function(e){e.domElement.style.display=ue?"none":""})},he.CLASS_AUTO_PLACE="a",he.CLASS_AUTO_PLACE_CONTAINER="ac",he.CLASS_MAIN="main",he.CLASS_CONTROLLER_ROW="cr",he.CLASS_TOO_TALL="taller-than-window",he.CLASS_CLOSED="closed",he.CLASS_CLOSE_BUTTON="close-button",he.CLASS_CLOSE_TOP="close-top",he.CLASS_CLOSE_BOTTOM="close-bottom",he.CLASS_DRAG="drag",he.DEFAULT_WIDTH=245,he.TEXT_CLOSED="Close Controls",he.TEXT_OPEN="Open Controls",he._keydownHandler=function(e){"text"===document.activeElement.type||72!==e.which&&72!==e.keyCode||he.toggleHide()},X.bind(window,"keydown",he._keydownHandler,!1),S.extend(he.prototype,{add:function(e,t){return f(this,e,t,{factoryArgs:Array.prototype.slice.call(arguments,2)})},addColor:function(e,t){return f(this,e,t,{color:!0})},remove:function(e){this.__ul.removeChild(e.__li),this.__controllers.splice(this.__controllers.indexOf(e),1);var t=this;S.defer(function(){t.onResize()})},destroy:function(){if(this.parent)throw new Error("Only the root GUI should be removed with .destroy(). For subfolders, use gui.removeFolder(folder) instead.");this.autoPlace&&ce.removeChild(this.domElement);var e=this;S.each(this.__folders,function(t){e.removeFolder(t)}),X.unbind(window,"keydown",he._keydownHandler,!1),u(this)},addFolder:function(e){if(void 0!==this.__folders[e])throw new Error('You already have a folder in this GUI by the name "'+e+'"');var t={name:e,parent:this};t.autoPlace=this.autoPlace,this.load&&this.load.folders&&this.load.folders[e]&&(t.closed=this.load.folders[e].closed,t.load=this.load.folders[e]);var n=new he(t);this.__folders[e]=n;var o=c(this,n.domElement);return X.addClass(o,"folder"),n},removeFolder:function(e){this.__ul.removeChild(e.domElement.parentElement),delete this.__folders[e.name],this.load&&this.load.folders&&this.load.folders[e.name]&&delete this.load.folders[e.name],u(e);var t=this;S.each(e.__folders,function(t){e.removeFolder(t)}),S.defer(function(){t.onResize()})},open:function(){this.closed=!1},close:function(){this.closed=!0},hide:function(){this.domElement.style.display="none"},show:function(){this.domElement.style.display=""},onResize:function(){var e=this.getRoot();if(e.scrollable){var t=X.getOffset(e.__ul).top,n=0;S.each(e.__ul.childNodes,function(t){e.autoPlace&&t===e.__save_row||(n+=X.getHeight(t))}),window.innerHeight-t-20<n?(X.addClass(e.domElement,he.CLASS_TOO_TALL),e.__ul.style.height=window.innerHeight-t-20+"px"):(X.removeClass(e.domElement,he.CLASS_TOO_TALL),e.__ul.style.height="auto")}e.__resize_handle&&S.defer(function(){e.__resize_handle.style.height=e.__ul.offsetHeight+"px"}),e.__closeButton&&(e.__closeButton.style.width=e.width+"px")},onResizeDebounced:S.debounce(function(){this.onResize()},50),remember:function(){if(S.isUndefined(le)&&((le=new ie).domElement.innerHTML='<div id="dg-save" class="dg dialogue">\n\n  Here\'s the new load parameter for your <code>GUI</code>\'s constructor:\n\n  <textarea id="dg-new-constructor"></textarea>\n\n  <div id="dg-save-locally">\n\n    <input id="dg-local-storage" type="checkbox"/> Automatically save\n    values to <code>localStorage</code> on exit.\n\n    <div id="dg-local-explain">The values saved to <code>localStorage</code> will\n      override those passed to <code>dat.GUI</code>\'s constructor. This makes it\n      easier to work incrementally, but <code>localStorage</code> is fragile,\n      and your friends may not see the same values you do.\n\n    </div>\n\n  </div>\n\n</div>'),this.parent)throw new Error("You can only call remember on a top level GUI.");var e=this;S.each(Array.prototype.slice.call(arguments),function(t){0===e.__rememberedObjects.length&&v(e),-1===e.__rememberedObjects.indexOf(t)&&e.__rememberedObjects.push(t)}),this.autoPlace&&w(this,this.width)},getRoot:function(){for(var e=this;e.parent;)e=e.parent;return e},getSaveObject:function(){var e=this.load;return e.closed=this.closed,this.__rememberedObjects.length>0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=x(this)),e.folders={},S.each(this.__folders,function(t,n){e.folders[n]=t.getSaveObject()}),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=x(this),_(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[se]=x(this,!0)),this.load.remembered[e]=x(this),this.preset=e,g(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){S.each(this.__controllers,function(t){this.getRoot().load.remembered?p(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())},this),S.each(this.__folders,function(e){e.revert(e)}),e||_(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&C(this.__listening)},updateDisplay:function(){S.each(this.__controllers,function(e){e.updateDisplay()}),S.each(this.__folders,function(e){e.updateDisplay()})}});var pe={Color:I,math:N,interpret:R},fe={Controller:z,BooleanController:K,OptionController:Y,StringController:J,NumberController:W,NumberControllerBox:Q,NumberControllerSlider:q,FunctionController:Z,ColorController:$},me={dom:X},ge={GUI:he},be=he,ve={color:pe,controllers:fe,dom:me,gui:ge,GUI:be};e.color=pe,e.controllers=fe,e.dom=me,e.gui=ge,e.GUI=be,e.default=ve,Object.defineProperty(e,"__esModule",{value:!0})});