7Placer

typescript pixelplace.io bot

当前为 2025-04-17 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name          7Placer
// @description   typescript pixelplace.io bot
// @version       1.6.2
// @author        Azti
// @match         https://pixelplace.io/*
// @require       https://update.greasyfork.org/scripts/498080/1395134/Hacktimer.js
// @require       https://pixelplace.io/js/jquery.min.js?v2=1
// @require       https://pixelplace.io/js/jquery-ui.min.js?v2=1
// @require       https://cdnjs.cloudflare.com/ajax/libs/toastify-js/1.6.1/toastify.js
// @grant         none
// @run-at        document-start
// @namespace https://greasyfork.org/users/374503
// ==/UserScript==

/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "./src/auth/Auth.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Auth)
/* harmony export */ });
class Auth {
    constructor(authObj) {
        this.authKey = authObj.authKey;
        this.authId = authObj.authId;
        this.authToken = authObj.authToken;
    }
}


/***/ }),

/***/ "./src/auth/util/commands.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   connect: () => (/* binding */ connect),
/* harmony export */   deleteAccount: () => (/* binding */ deleteAccount),
/* harmony export */   disconnect: () => (/* binding */ disconnect),
/* harmony export */   getAccounts: () => (/* binding */ getAccounts),
/* harmony export */   getAuth: () => (/* binding */ getAuth),
/* harmony export */   saveAccount: () => (/* binding */ saveAccount),
/* harmony export */   saveAuth: () => (/* binding */ saveAuth)
/* harmony export */ });
/* harmony import */ var _Auth__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/auth/Auth.ts");
/* harmony import */ var _bot_Bot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/Bot.ts");
/* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/variables.ts");
/* harmony import */ var _requests_get_painting__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/requests/get-painting.ts");
/* harmony import */ var _bot_util_websocket__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/bot/util/websocket.ts");





const window2 = window;
var LocalAccounts = new Map();
// save changes in localstorage
function storagePush() {
    const obj = Object.fromEntries(LocalAccounts);
    localStorage.setItem('LocalAccounts', JSON.stringify(obj));
}
// restore localstorage to localaccounts
function storageGet() {
    const storedAccounts = localStorage.getItem('LocalAccounts');
    if (storedAccounts) {
        const parsedAccounts = JSON.parse(storedAccounts);
        LocalAccounts = new Map(Object.entries(parsedAccounts));
    }
    else
        LocalAccounts = new Map();
}
async function delay(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}
// saves from params
function saveAuth(username, authId, authKey, authToken, print = true) {
    if (!authId || !authKey || !authToken) {
        console.log('[7p] saveAuth usage: saveAuth(username, authId, authKey, authToken)');
        return;
    }
    const account = { authId, authKey, authToken };
    LocalAccounts.set(username, account);
    storagePush();
    if (print)
        console.log('Auth saved. Saved list: ', LocalAccounts);
}
// returns client's auth
async function getAuth(print = true) {
    const cookieStore = window2.cookieStore;
    const authToken = await cookieStore.get("authToken");
    const authKey = await cookieStore.get("authKey");
    const authId = await cookieStore.get("authId");
    if (authToken == null || authKey == null || authId == null) {
        console.log('[7p] Please login first!');
        return;
    }
    if (print)
        console.log(`authId = "${authId.value}", authKey = "${authKey.value}", authToken = "${authToken.value}"`);
    return { authToken: authToken.value, authKey: authKey.value, authId: authId.value };
}
// saves auth from client cookies
async function saveAccount() {
    storageGet();
    const AuthObj = await getAuth(false);
    const userinfo = await (0,_requests_get_painting__WEBPACK_IMPORTED_MODULE_2__["default"])(AuthObj.authId, AuthObj.authKey, AuthObj.authToken);
    saveAuth(userinfo.user.name, AuthObj.authId, AuthObj.authKey, AuthObj.authToken, false);
    console.log('Auth saved. Saved list: ', LocalAccounts);
}
// logs saved auths
function getAccounts() {
    storageGet();
    if (!LocalAccounts || LocalAccounts.size == 0) {
        console.log('No accounts found');
        return;
    }
    console.log(`Found ${LocalAccounts.size} accounts`);
    console.log(LocalAccounts);
}
// deletes auths
function deleteAccount(identifier) {
    if (identifier == null) {
        console.log('deleteAccount usage: deleteAccount(user or index)');
        return;
    }
    storageGet();
    if (typeof identifier == 'string') {
        if (identifier == 'all') {
            LocalAccounts.forEach((value, key) => {
                LocalAccounts.delete(key);
            });
            return;
        }
        if (!LocalAccounts.has(identifier)) {
            console.log(`[7p] Error deleting: No account with name ${identifier}`);
            return;
        }
        LocalAccounts.delete(identifier);
        console.log(`[7p] Deleted account ${identifier}.`);
        console.log(LocalAccounts);
    }
    if (typeof identifier == 'number') {
        const keys = Array.from(LocalAccounts.keys());
        if (identifier > keys.length) {
            console.log(`[7p] Error deleting: No account with index ${identifier}`);
            return;
        }
        LocalAccounts.delete(keys[identifier]);
        console.log(`Deleted account ${identifier}`);
        console.log(LocalAccounts);
    }
    storagePush();
}
async function connect(username) {
    storageGet();
    const account = LocalAccounts.get(username);
    const connectedbot = window2.seven.bots.find((bot) => bot.generalinfo?.user.name == username);
    if (!username) {
        console.log('[7p] Missing bot username, connect("username")');
        return;
    }
    if (username == 'all') {
        for (const [username, account] of LocalAccounts) {
            // checks if bot is already connected
            const connectedbot = window2.seven.bots.find((bot) => bot.generalinfo?.user.name == username);
            const auth = new _Auth__WEBPACK_IMPORTED_MODULE_4__["default"](account);
            if (connectedbot) {
                console.log(`[7p] Account ${username} is already connected.`);
                continue;
            }
            new _bot_Bot__WEBPACK_IMPORTED_MODULE_0__.WSBot(auth, username);
            await delay(500);
        }
        return;
    }
    if (!account) {
        console.log(`[7p] No account found with username ${username}`);
        return;
    }
    if (connectedbot) {
        console.log(`[7p] Account ${username} is already connected.`);
        return;
    }
    const auth = new _Auth__WEBPACK_IMPORTED_MODULE_4__["default"](account);
    new _bot_Bot__WEBPACK_IMPORTED_MODULE_0__.WSBot(auth, username);
}
function disconnect(username) {
    const bot = window2.seven.bots.find((bot) => bot.generalinfo?.user.name == username);
    if (!username) {
        console.log('[7p] disconnect requires a username, disconnect("username")');
        return;
    }
    if (username == 'all') {
        if (window2.seven.bots.length == 1) {
            console.log('[7p] No bots connected.');
            return;
        }
        for (const bot of window2.seven.bots) {
            (0,_bot_util_websocket__WEBPACK_IMPORTED_MODULE_3__.closeBot)(bot);
        }
        return;
    }
    if (!bot) {
        console.log(`[7p] No bot connected with username ${username}`);
        return;
    }
    (0,_bot_util_websocket__WEBPACK_IMPORTED_MODULE_3__.closeBot)(bot);
}


/***/ }),

/***/ "./src/bot/Bot.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Bot: () => (/* binding */ Bot),
/* harmony export */   Client: () => (/* binding */ Client),
/* harmony export */   WSBot: () => (/* binding */ WSBot)
/* harmony export */ });
/* harmony import */ var _util_websocket__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/util/websocket.ts");
/* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/Canvas.ts");
/* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/variables.ts");
/* harmony import */ var _css_style__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/css/style.ts");
/* harmony import */ var _requests_get_painting__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/requests/get-painting.ts");






const seven = window.seven;
class Bot {
    constructor() {
        this.trackeriters = 0;
        this.lastplace = Date.now();
        this.botid = Bot.botIndex;
        Bot.botIndex += 1; // id for next bot
    }
    emit(event, params) {
        this.ws.send(`42["${event}",${params}]`);
    }
    async placePixel(x, y, color, client = false, tracker = true) {
        const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
        const canvascolor = canvas.getColor(x, y);
        if (canvascolor == color || canvascolor == 200) {
            return true;
        }
        while (Date.now() - this.lastplace < seven.pixelspeed) {
            await new Promise(resolve => setTimeout(resolve, 0));
        }
        this.emit('p', `[${x},${y},${color},1]`);
        this.lastplace = Date.now();
        if (tracker && this.trackeriters >= 6) {
            $(this.tracker).css({ top: y, left: x, display: 'block' });
            this.trackeriters = 0;
        }
        this.trackeriters += 1;
        return true;
    }
    static async findAvailableBot() {
        const bots = seven.bots;
        var tick = 0;
        while (true) {
            for (var i = 0; i < bots.length; i++) {
                const bot = bots[i];
                if (Date.now() - bot.lastplace >= seven.pixelspeed) {
                    // console.log(`[7p] found available bot: ${bot.username}, ${ Date.now() - bot.lastplace }`)
                    return bot;
                }
            }
            tick += 1;
            if (tick == seven.tickspeed) {
                tick = 0;
                await new Promise(resolve => setTimeout(resolve, 0));
            }
        }
    }
    createTracker() {
        const tracker = $('<div class="track" id="bottracker">').text(`[7P] ${this.username}`).css(_css_style__WEBPACK_IMPORTED_MODULE_3__.trackercss);
        $('#canvas').ready(function () {
            // console.log(`[7p] created tracker: ${name}`)
            $('#painting-move').append(tracker);
        });
        return tracker;
    }
    set ws(wss) {
        this._ws = wss;
    }
    get ws() {
        return this._ws;
    }
}
Bot.botIndex = 0;
class WSBot extends Bot {
    constructor(auth, username) {
        super();
        this._auth = auth;
        this.username = username;
        this.startBot();
    }
    async startBot() {
        this.generalinfo = await (0,_requests_get_painting__WEBPACK_IMPORTED_MODULE_4__["default"])(this.auth.authId, this.auth.authKey, this.auth.authToken);
        this.tracker = this.createTracker();
        this.ws = await (0,_util_websocket__WEBPACK_IMPORTED_MODULE_0__.hookBot)(this);
    }
    get auth() {
        return this._auth;
    }
}
class Client extends Bot {
    constructor() {
        super();
        this.username = 'Client';
        Client.instance = this;
        this.tracker = this.createTracker();
        seven.bots.push(this);
    }
    static get Client() {
        return Client.instance;
    }
}


/***/ }),

/***/ "./src/bot/util/onmessage.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   onBotMessage: () => (/* binding */ onBotMessage),
/* harmony export */   onClientMessage: () => (/* binding */ onClientMessage)
/* harmony export */ });
/* harmony import */ var _Bot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/Bot.ts");
/* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/Canvas.ts");
/* harmony import */ var _palive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/bot/util/palive.ts");
/* harmony import */ var _websocket__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/bot/util/websocket.ts");
/* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/variables.ts");
/* harmony import */ var _auth_util_commands__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/auth/util/commands.ts");
/* harmony import */ var _modules_defaultModules_SevenProtect__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/modules/defaultModules/SevenProtect.ts");







const seven = window.seven;
// client
function onClientMessage(event) {
    const msg = event.data;
    const bot = _Bot__WEBPACK_IMPORTED_MODULE_0__.Client.instance;
    if (msg.startsWith("42")) {
        const msg = JSON.parse(event.data.substr(2));
        const type = msg[0];
        switch (type) {
            case "p":
                for (const pixel of msg[1]) {
                    const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
                    const x = pixel[0];
                    const y = pixel[1];
                    const color = pixel[2];
                    const id = pixel[4];
                    canvas.updatePixel(x, y, color);
                    _modules_defaultModules_SevenProtect__WEBPACK_IMPORTED_MODULE_6__["default"].checkPixel(x, y, color);
                }
                break;
            case "canvas":
                for (const pixel of msg[1]) {
                    const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
                    const x = pixel[0];
                    const y = pixel[1];
                    const color = pixel[2];
                    canvas.updatePixel(x, y, color);
                }
                break;
        }
    }
}
// multibot
async function onBotMessage(event, bot) {
    const message = event.data;
    // game packets
    if (message.startsWith("42")) {
        const message = JSON.parse(event.data.substr(2));
        const type = message[0];
        const botid = bot.generalinfo.user.id;
        const botname = bot.username;
        switch (type) {
            case "server_time":
                bot.paliveServerTime = message[1]; // stores servertime for palive
                break;
            case "ping.alive":
                const hash = (0,_palive__WEBPACK_IMPORTED_MODULE_2__["default"])(bot.paliveServerTime, botid);
                console.log('[7p]', botname, ': pong =', hash, botid);
                bot.emit('pong.alive', `"${hash}"`);
                break;
            case "throw.error":
                if (message[1] == 49) {
                    console.log(`[7p] [Bot ${botname}] Error (${message[1]}): This auth is not valid! Deleting account from saved accounts...`);
                    (0,_auth_util_commands__WEBPACK_IMPORTED_MODULE_5__.deleteAccount)(botname);
                    (0,_websocket__WEBPACK_IMPORTED_MODULE_3__.closeBot)(bot);
                    return;
                }
                else if (message[1] == 16) {
                    (0,_websocket__WEBPACK_IMPORTED_MODULE_3__.closeBot)(bot);
                }
                console.log(`[7p] [Bot ${botname}] Pixelplace WS error: ${message[1]}`);
                break;
            case "canvas":
                console.log(`[7p] Succesfully connected to bot ${bot.username}`);
                seven.bots.push(bot);
                break;
        }
    }
    // start
    if (message.startsWith("0"))
        bot.ws.send('40');
    // auth
    if (message.startsWith("40"))
        bot.ws.send(`42["init",{"authKey":"${bot.auth.authKey}","authToken":"${bot.auth.authToken}","authId":"${bot.auth.authId}","boardId":${_canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance.ID}}]`);
    // keep alive
    if (message.startsWith("2"))
        bot.ws.send('3');
}


/***/ }),

/***/ "./src/bot/util/palive.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ getPalive),
/* harmony export */   getTDelay: () => (/* binding */ getTDelay)
/* harmony export */ });
// credits to symmetry
function randomString(charList, num) {
    return Array.from({ length: num }, () => charList.charAt(Math.floor(Math.random() * charList.length))).join('');
}
function randomString1(num) {
    const charList = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    return randomString(charList, num);
}
function randomString2(num) {
    const charList = 'gmbonjklezcfxta1234567890GMBONJKLEZCFXTA';
    return randomString(charList, num);
}
function randInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
const paliveCharmap = {
    "0": "g",
    "1": "n",
    "2": "b",
    "3": "r",
    "4": "z",
    "5": "s",
    "6": "l",
    "7": "x",
    "8": "i",
    "9": "o",
};
function getPalive(serverTime, userId) {
    const tDelay = getTDelay(serverTime);
    const sequenceLengths = [6, 5, 9, 4, 5, 3, 6, 6, 3];
    const currentTimestamp = Math.floor(Date.now() / 1000) + tDelay - 5400;
    const timestampString = currentTimestamp.toString();
    const timestampCharacters = timestampString.split('');
    let result = '';
    for (let i = 0; i < sequenceLengths.length; i++) {
        const sequenceNumber = sequenceLengths[i];
        result += randInt(0, 1) == 1 ? randomString2(sequenceNumber) : randomString1(sequenceNumber);
        const letter = paliveCharmap[parseInt(timestampCharacters[i])];
        result += randInt(0, 1) == 0 ? letter.toUpperCase() : letter;
    }
    result += userId.toString().substring(0, 1) + (randInt(0, 1) == 1 ? randomString2(randInt(4, 20)) : randomString1(randInt(4, 25)));
    return result + "0=";
}
function getTDelay(serverTime) {
    const currentTime = new Date().getTime() / 1e3;
    return Math.floor(serverTime - currentTime);
}


/***/ }),

/***/ "./src/bot/util/websocket.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   closeBot: () => (/* binding */ closeBot),
/* harmony export */   hookBot: () => (/* binding */ hookBot)
/* harmony export */ });
/* harmony import */ var _Bot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/Bot.ts");
/* harmony import */ var _onmessage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/bot/util/onmessage.ts");
/* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/variables.ts");



const seven = window.seven;
// client
const customWS = window.WebSocket;
window.WebSocket = function (url, protocols) {
    const client = new _Bot__WEBPACK_IMPORTED_MODULE_0__.Client();
    const socket = new customWS(url, protocols);
    socket.addEventListener("message", (event) => { (0,_onmessage__WEBPACK_IMPORTED_MODULE_1__.onClientMessage)(event); });
    client.ws = socket;
    return socket;
};
// multibot
async function hookBot(bot) {
    console.log(`[7p] Attempting to connect account ${bot.username}`);
    const socket = new customWS("wss://pixelplace.io/socket.io/?EIO=4&transport=websocket");
    socket.addEventListener("message", (event) => { (0,_onmessage__WEBPACK_IMPORTED_MODULE_1__.onBotMessage)(event, bot); });
    socket.addEventListener("close", () => { _Bot__WEBPACK_IMPORTED_MODULE_0__.Bot.botIndex -= 1; });
    return socket;
}
function closeBot(bot) {
    if (bot instanceof _Bot__WEBPACK_IMPORTED_MODULE_0__.Client)
        return;
    if (!bot) {
        console.log('[7p] Cannot close bot that doesnt exist.');
        return;
    }
    bot.ws.close();
    const result = seven.bots.filter((checkedBot) => checkedBot.botid != bot.botid);
    seven.bots = result;
    console.log('[7placer] Ended bot ', bot.botid);
}


/***/ }),

/***/ "./src/canvas/Canvas.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Canvas: () => (/* binding */ Canvas),
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _css_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/css/style.ts");
/* harmony import */ var _util_canvasloader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/util/canvasloader.ts");


class Canvas {
    constructor() {
        this._ID = this.ParseID();
        this._isProcessed = false;
        this._customCanvas = this.newPreviewCanvas();
    }
    static get instance() {
        if (!Canvas._instance) {
            Canvas._instance = new Canvas;
            (0,_util_canvasloader__WEBPACK_IMPORTED_MODULE_1__.processColors)();
        }
        return Canvas._instance;
    }
    newPreviewCanvas() {
        const canvas = $(`<canvas width="2500" height="2088">`).css(_css_style__WEBPACK_IMPORTED_MODULE_0__.canvascss);
        $('#canvas').ready(function () {
            $('#painting-move').append(canvas);
        });
        const ctx = canvas[0].getContext("2d");
        return ctx;
    }
    ParseID() {
        return parseInt(window.location.href.split("/").slice(-1)[0].split("-")[0]);
    }
    get previewCanvas() {
        return this._customCanvas;
    }
    get canvasArray() {
        return this._canvasArray;
    }
    get isProcessed() {
        return this._isProcessed;
    }
    set isProcessed(bool) {
        this._isProcessed = bool;
    }
    get ID() {
        return this._ID;
    }
    set canvasArray(array) {
        this._canvasArray = array;
        this.isProcessed = true;
    }
    getColor(x, y) {
        try {
            return this.canvasArray[x][y];
        }
        catch {
            return 200;
        }
        ;
    }
    updatePixel(x, y, color) {
        if (!this._isProcessed)
            return;
        this.canvasArray[x][y] = color;
        // console.log(this.getColor(x, y), "->", color) 
    }
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Canvas);


/***/ }),

/***/ "./src/canvas/util/canvasloader.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   processColors: () => (/* binding */ processColors),
/* harmony export */   processWater: () => (/* binding */ processWater)
/* harmony export */ });
/* harmony import */ var _Canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/canvas/Canvas.ts");
/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/util/colors.ts");


async function processWater() {
    var image = await fetch('https://pixelplace.io/canvas/' + _Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance.ID + 'p.png?t200000=' + Date.now());
    if (!image.ok) {
        const canvas = document.getElementById('canvas');
        var waterArray = Array.from({ length: canvas.width }, () => Array.from({ length: canvas.height }, () => 1));
        return waterArray;
    }
    const blob = await image.blob();
    const bitmap = await createImageBitmap(blob);
    const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);
    var waterArray = Array.from({ length: canvas.width }, () => Array.from({ length: canvas.height }, () => 1));
    const context = canvas.getContext('2d');
    context.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height);
    const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
    return new Promise((resolve) => {
        if (bitmap.width == 1 && bitmap.height == 1) { // custom canvases ?
            resolve(waterArray);
        }
        for (let y = 0; y < canvas.height; y++) {
            for (let x = 0; x < canvas.width; x++) {
                const index = (y * imageData.width + x) * 4;
                var r = imageData.data[index];
                var g = imageData.data[index + 1];
                var b = imageData.data[index + 2];
                if (r == 204 && g == 204 && b == 204) {
                    waterArray[x][y] = 200;
                }
            }
        }
        console.log(waterArray);
        resolve(waterArray);
    });
}
async function processColors() {
    const startTotalTime = performance.now();
    const waterArray = await processWater();
    const startColorsTime = performance.now();
    const canvas = document.getElementById('canvas');
    const ctx = canvas.getContext('2d');
    const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
    const pixelData = imageData.data;
    var CanvasArray = Array.from({ length: canvas.width }, () => Array.from({ length: canvas.height }, () => 1));
    if (waterArray.length > 1) {
        CanvasArray = waterArray;
    }
    for (let y = 0; y < canvas.height; y++) {
        for (let x = 0; x < canvas.width; x++) {
            if (CanvasArray[x][y] == 200) {
                continue;
            }
            const pixelIndex = (y * canvas.width + x) * 4;
            const r = pixelData[pixelIndex];
            const g = pixelData[pixelIndex + 1];
            const b = pixelData[pixelIndex + 2];
            const colornum = (r << 16) | (g << 8) | b;
            const colorIndex = _colors__WEBPACK_IMPORTED_MODULE_1__.colors.indexOf(colornum);
            CanvasArray[x][y] = colorIndex;
        }
    }
    console.log(CanvasArray);
    _Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance.canvasArray = CanvasArray;
    const finalTotalTime = performance.now() - startTotalTime;
    const finalColorsTime = performance.now() - startColorsTime;
    const finalWaterTime = startColorsTime - startTotalTime;
    console.log(`[7p PROCESSING] Total Time: ${finalTotalTime}ms, Colors Time: ${finalColorsTime}ms, Water Time: ${finalWaterTime}ms`);
}


/***/ }),

/***/ "./src/canvas/util/colors.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   colors: () => (/* binding */ colors)
/* harmony export */ });
const colors = [
    0xFFFFFF,
    0xC4C4C4,
    0x888888,
    0x555555,
    0x222222,
    0x000000,
    0x006600,
    0x22B14C,
    0x02BE01,
    0x51E119,
    0x94E044,
    0xFBFF5B,
    0xE5D900,
    0xE6BE0C,
    0xE59500,
    0xA06A42,
    0x99530D,
    0x633C1F,
    0x6B0000,
    0x9F0000,
    0xE50000,
    0xFF3904,
    0xBB4F00,
    0xFF755F,
    0xFFC49F,
    0xFFDFCC,
    0xFFA7D1,
    0xCF6EE4,
    0xEC08EC,
    0x820080,
    0x5100FF,
    0x020763,
    0x0000EA,
    0x044BFF,
    0x6583CF,
    0x36BAFF,
    0x0083C7,
    0x00D3DD,
    0x45FFC8,
    0x003638,
    0x477050,
    0x98FB98,
    0xFF7000,
    0xCE2939,
    0xFF416A,
    0x7D26CD,
    0x330077,
    0x005BA1,
    0xB5E8EE,
    0x1B7400,
    0x75CEA9,
    0x34EB6B,
    0xFFCC00,
    0xBB276C,
    0xFF7EBB,
    0x440414,
    0x591C91,
    0xC1A162,
    0xCAFF70,
    0x013182,
    0xA6A6A6,
    0x6F6F6F,
    0x3A3A3A,
    0x4D082C
];


/***/ }),

/***/ "./src/css/drop.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   createDropArea: () => (/* binding */ createDropArea)
/* harmony export */ });
/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/css/style.ts");
/* harmony import */ var _modules_defaultModules_SevenImageTools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenImageTools.ts");
/* harmony import */ var _modules_util_getClientMouse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/modules/util/getClientMouse.ts");



function createDropArea() {
    const dropobject = $('<div>').text('Drop Image').css(_style__WEBPACK_IMPORTED_MODULE_0__.drop);
    const [x, y] = (0,_modules_util_getClientMouse__WEBPACK_IMPORTED_MODULE_2__["default"])();
    $('body').append(dropobject);
    dropobject.on("click", function () {
        dropobject.remove();
    });
    dropobject.on("drop", async function (event) {
        event.preventDefault();
        event.stopPropagation();
        const image = event.originalEvent.dataTransfer.files[0];
        dropobject.remove();
        await (0,_modules_defaultModules_SevenImageTools__WEBPACK_IMPORTED_MODULE_1__.botImage)(x, y, image);
        // console.log(image)
    }).on('dragover', false);
}


/***/ }),

/***/ "./src/css/style.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   canvascss: () => (/* binding */ canvascss),
/* harmony export */   drop: () => (/* binding */ drop),
/* harmony export */   trackercss: () => (/* binding */ trackercss)
/* harmony export */ });
const trackercss = {
    top: '0px',
    left: '0px',
    borderColor: 'rgb(138,43,226)',
    color: 'rgb(138,43,226)',
    backgroundColor: 'black',
    opacity: '60%',
    display: 'none',
    transition: 'all 0.06s ease-in-out',
    pointerEvents: 'none'
};
// design by 0vc4
const drop = {
    width: 'calc(100% - 2em)',
    height: 'calc(100% - 2em)',
    position: 'fixed',
    left: '0px',
    top: '0px',
    backgroundColor: 'rgba(0, 0, 0, 0.533)',
    zIndex: '9999-',
    display: 'flex',
    color: 'white',
    fontSize: '48pt',
    justifyContent: 'center',
    alignItems: 'center',
    border: '3px white dashed',
    borderRadius: '18px',
    margin: '1em',
};
const canvascss = {
    position: 'absolute',
    pointerEvents: 'none',
    left: '0px',
    top: '0px',
    imageRendering: 'pixelated',
    opacity: '50%',
    animation: 'blink 3s ease-out infinite'
};
const blink = document.createElement("style");
blink.type = "text/css";
blink.innerText = `
@keyframes blink {
  0% { opacity: .30; }
  50% { opacity: .10; }
  100% { opacity: .30; }
}`;
document.head.appendChild(blink);


/***/ }),

/***/ "./src/index.ts":
/***/ ((__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) => {

"use strict";

;// ./package.json
const package_namespaceObject = {"rE":"1.6.2"};
// EXTERNAL MODULE: ./src/canvas/Canvas.ts
var Canvas = __webpack_require__("./src/canvas/Canvas.ts");
// EXTERNAL MODULE: ./src/util/ExternalLoader.ts
var ExternalLoader = __webpack_require__("./src/util/ExternalLoader.ts");
;// ./src/index.ts



// @ts-ignore (GLOBAL IMPORT)
const context = __webpack_require__("./src sync recursive ^(?%21.*global\\.d).+");
context.keys().forEach(context);
Object.defineProperty(window.console, 'log', {
    configurable: false,
    enumerable: true,
    writable: false,
    value: console.log
});
console.log('7Placer Loaded! Version:', package_namespaceObject.rE);
(0,ExternalLoader.loadCss)('https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css');
window.onload = () => {
    Toastify({
        text: '7Placer Loaded!',
    }).showToast();
    Canvas["default"].instance;
};


/***/ }),

/***/ "./src/modules/defaultModules/SevenImageTools.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   ImageToPixels: () => (/* binding */ ImageToPixels),
/* harmony export */   botImage: () => (/* binding */ botImage)
/* harmony export */ });
/* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/canvas/Canvas.ts");
/* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/variables.ts");
/* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
/* harmony import */ var _canvas_util_colors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/canvas/util/colors.ts");
/* harmony import */ var _SevenSorting__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/modules/defaultModules/SevenSorting.ts");





function getColorDistance(c1, c2) {
    // Image Color
    const r1 = (c1 >> 16) & 0xFF;
    const g1 = (c1 >> 8) & 0xFF;
    const b1 = c1 & 0xFF;
    // Pixelplace Color
    const r2 = (c2 >> 16) & 0xFF;
    const g2 = (c2 >> 8) & 0xFF;
    const b2 = c2 & 0xFF;
    return (r1 - r2) ** 2 + (g1 - g2) ** 2 + (b1 - b2) ** 2;
}
function findClosestColor(color) {
    let minDistance = Infinity;
    let colorNumber;
    let index = 0;
    for (const pxpColor of _canvas_util_colors__WEBPACK_IMPORTED_MODULE_4__.colors) {
        const distance = getColorDistance(color, pxpColor);
        if (distance < minDistance) {
            minDistance = distance;
            colorNumber = index;
        }
        index += 1;
    }
    return colorNumber;
}
function previewCanvasImage(x, y, image) {
    const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance;
    const ctx = canvas.previewCanvas;
    const img = new Image();
    img.onload = function () {
        ctx.drawImage(img, x, y);
    };
    img.src = URL.createObjectURL(image);
}
async function ImageToPixels(image) {
    const result = [];
    const canvas = new OffscreenCanvas(image.width, image.height);
    const ctx = canvas.getContext('2d');
    ctx.drawImage(image, 0, 0, image.width, image.height);
    const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
    const pixelData = imageData.data;
    for (let y = 0; y < canvas.height; y++) {
        for (let x = 0; x < canvas.width; x++) {
            const pixelIndex = (y * canvas.width + x) * 4;
            const r = pixelData[pixelIndex];
            const g = pixelData[pixelIndex + 1];
            const b = pixelData[pixelIndex + 2];
            const a = pixelData[pixelIndex + 3];
            const colornum = (r << 16) | (g << 8) | b;
            if (a < 1) {
                continue; // ignore transparent pixels
            }
            const color = findClosestColor(colornum);
            result.push({ x, y, color });
        }
    }
    return result;
}
async function botImage(x, y, image) {
    const bitmap = await createImageBitmap(image);
    const processed = await ImageToPixels(bitmap);
    previewCanvasImage(x, y, image);
    (0,_SevenSorting__WEBPACK_IMPORTED_MODULE_3__["default"])(processed, window.seven.order);
    processed.forEach((pixel) => _SevenQueue__WEBPACK_IMPORTED_MODULE_2__["default"].add(pixel.x + x, pixel.y + y, pixel.color, true));
}


/***/ }),

/***/ "./src/modules/defaultModules/SevenProtect.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/canvas/Canvas.ts");
/* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");


class Protector {
    protect(x, y, color) {
        Protector.protected.push({ x: x, y: y, color: color });
    }
    static clear() {
        Protector.protected = [];
    }
    static checkPixel(x, y, color) {
        const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance;
        if (Protector.protected.length == 0) {
            return;
        }
        function isInsideProtected(pixel) {
            if (pixel.x == x && pixel.y == y) {
                return true;
            }
            return false;
        }
        function isSameColor(pixel) {
            const canvasColor = canvas.getColor(x, y);
            if (canvasColor == pixel.color) {
                return true;
            }
            return false;
        }
        Protector.protected.forEach((pixel) => {
            if (isInsideProtected(pixel) && !isSameColor(pixel)) {
                _SevenQueue__WEBPACK_IMPORTED_MODULE_1__["default"].add(x, y, pixel.color, false);
            }
        });
    }
}
Protector.protected = [];
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Protector);


/***/ }),

/***/ "./src/modules/defaultModules/SevenQueue.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Queue)
/* harmony export */ });
/* harmony import */ var _bot_Bot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/Bot.ts");
/* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/Canvas.ts");
/* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/variables.ts");
/* harmony import */ var _SevenProtect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/modules/defaultModules/SevenProtect.ts");




const seven = window.seven;
class Queue {
    constructor() {
        Queue.performance = performance.now();
    }
    static add(x, y, color, protection, atStart = false, client = false) {
        const pixel = { x: x, y: y, color: color, protected: protection, client: client };
        if (atStart) {
            seven.queue.unshift(pixel);
        }
        else {
            seven.queue.push(pixel);
        }
        if (seven.queue.length == 1) {
            Queue.start();
        }
    }
    static clear() {
        // console.log('Queue cleared: ', seven.queue)
        seven.queue = [];
    }
    static async start() {
        const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
        const protector = new _SevenProtect__WEBPACK_IMPORTED_MODULE_3__["default"];
        if (!canvas.isProcessed) {
            console.log('[7p] Error starting queue: Canvas has not been processed yet.');
            Queue.stop();
            return;
        }
        seven.inprogress = true;
        while (seven.inprogress) {
            // console.log(performance.now() - Queue.performance)
            Queue.performance = performance.now();
            const pixel = seven.queue[0];
            if (pixel.client) {
                var bot = _bot_Bot__WEBPACK_IMPORTED_MODULE_0__.Client.instance;
            }
            else {
                var bot = await _bot_Bot__WEBPACK_IMPORTED_MODULE_0__.Bot.findAvailableBot();
            }
            await bot.placePixel(pixel.x, pixel.y, pixel.color);
            var indexOfRemoval = seven.queue.indexOf(pixel);
            seven.queue.splice(indexOfRemoval, 1);
            if (pixel.protected && seven.protect) {
                protector.protect(pixel.x, pixel.y, pixel.color);
            }
            if (seven.queue.length == 0) {
                seven.inprogress = false;
                console.log('[7p] Queue done.');
            }
        }
    }
    static stop() {
        seven.inprogress = false;
        const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
        canvas.previewCanvas.clearRect(0, 0, 3000, 3000);
        _SevenProtect__WEBPACK_IMPORTED_MODULE_3__["default"].clear();
        Queue.clear();
    }
}


/***/ }),

/***/ "./src/modules/defaultModules/SevenSorting.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ sort)
/* harmony export */ });
const seven = window.seven;
function sort(array, order) {
    switch (seven.order) {
        case 'rand':
            array.sort(() => Math.random() - 0.5);
            return array;
        case 'colors':
            array.sort((a, b) => a.color - b.color);
            return array;
        case 'vertical':
            array.sort((a, b) => a.x - b.x);
            return array;
        case 'horizontal':
            array.sort((a, b) => a.y - b.y);
            return array;
        default:
        case 'circle':
            const CX = Math.floor((array[0].x + array[array.length - 1].x) / 2);
            const CY = Math.floor((array[0].y + array[array.length - 1].y) / 2);
            array.sort((a, b) => {
                const distanceA = Math.sqrt((a.x - CX) ** 2 + (a.y - CY) ** 2);
                const distanceB = Math.sqrt((b.x - CX) ** 2 + (b.y - CY) ** 2);
                return distanceA - distanceB;
            });
            return array;
    }
}


/***/ }),

/***/ "./src/modules/defaultModules/SevenSquareMaker.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   BotSquare: () => (/* binding */ BotSquare)
/* harmony export */ });
/* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
/* harmony import */ var _SevenSorting__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenSorting.ts");


function BotSquare(x1, y1, x2, y2, color) {
    var result = [];
    if (x2 < x1)
        [x1, x2] = [x2, x1];
    if (y2 < y1)
        [y1, y2] = [y2, y1];
    for (let x = x1; x <= x2; x++) {
        for (let y = y1; y <= y2; y++) {
            result.push({ x, y, color });
        }
    }
    result = (0,_SevenSorting__WEBPACK_IMPORTED_MODULE_1__["default"])(result, window.seven.order);
    result.forEach((pixel) => {
        _SevenQueue__WEBPACK_IMPORTED_MODULE_0__["default"].add(pixel.x, pixel.y, pixel.color, true);
    });
}


/***/ }),

/***/ "./src/modules/defaultModules/defaultKeys.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _css_drop__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/css/drop.ts");
/* harmony import */ var _util_getClientMouse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/modules/util/getClientMouse.ts");
/* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
/* harmony import */ var _SevenSquareMaker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/modules/defaultModules/SevenSquareMaker.ts");




var coord1 = null;
$(document).on('keyup', function (event) {
    if ($(':input[type="text"]').is(':focus'))
        return; //; prevent with chat open
    switch (event.which) {
        case (87):
            if (!event.altKey)
                return;
            _SevenQueue__WEBPACK_IMPORTED_MODULE_1__["default"].stop();
            break;
        case (66):
            if (!event.altKey)
                return;
            (0,_css_drop__WEBPACK_IMPORTED_MODULE_0__.createDropArea)();
            break;
        case 88:
            const [x, y, color] = (0,_util_getClientMouse__WEBPACK_IMPORTED_MODULE_3__["default"])();
            if (coord1 == null) {
                coord1 = { x: x, y: y };
                return;
            }
            (0,_SevenSquareMaker__WEBPACK_IMPORTED_MODULE_2__.BotSquare)(coord1.x, coord1.y, x, y, color);
            coord1 = null;
            break;
        // add more 
    }
});


/***/ }),

/***/ "./src/modules/defaultModules/index.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   BotSquare: () => (/* reexport safe */ _SevenSquareMaker__WEBPACK_IMPORTED_MODULE_2__.BotSquare),
/* harmony export */   ImageToPixels: () => (/* reexport safe */ _SevenImageTools__WEBPACK_IMPORTED_MODULE_0__.ImageToPixels),
/* harmony export */   botImage: () => (/* reexport safe */ _SevenImageTools__WEBPACK_IMPORTED_MODULE_0__.botImage)
/* harmony export */ });
/* harmony import */ var _SevenImageTools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/modules/defaultModules/SevenImageTools.ts");
/* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
/* harmony import */ var _SevenSquareMaker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/modules/defaultModules/SevenSquareMaker.ts");
/* harmony import */ var _defaultKeys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/modules/defaultModules/defaultKeys.ts");






/***/ }),

/***/ "./src/modules/index.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   BotSquare: () => (/* reexport safe */ _defaultModules__WEBPACK_IMPORTED_MODULE_0__.BotSquare),
/* harmony export */   ImageToPixels: () => (/* reexport safe */ _defaultModules__WEBPACK_IMPORTED_MODULE_0__.ImageToPixels),
/* harmony export */   botImage: () => (/* reexport safe */ _defaultModules__WEBPACK_IMPORTED_MODULE_0__.botImage)
/* harmony export */ });
/* harmony import */ var _defaultModules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/modules/defaultModules/index.ts");

// custom exports


/***/ }),

/***/ "./src/modules/util/getClientMouse.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ getClientMouse)
/* harmony export */ });
function getClientMouse() {
    const coordinates = $('#coordinates').text();
    const [x, y] = coordinates.split(',').map(coord => parseInt(coord.trim()));
    const selectedcolor = $('#palette-buttons a.selected').data('id');
    return [x, y, selectedcolor];
}


/***/ }),

/***/ "./src/requests/get-painting.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ getPainting)
/* harmony export */ });
/* harmony import */ var _getCookie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/requests/getCookie.ts");
/* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/canvas/Canvas.ts");


async function getPainting(authId, authKey, authToken) {
    const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance;
    const originalAuthId = (0,_getCookie__WEBPACK_IMPORTED_MODULE_1__["default"])('authId');
    const originalAuthKey = (0,_getCookie__WEBPACK_IMPORTED_MODULE_1__["default"])('authKey');
    const originalAuthToken = (0,_getCookie__WEBPACK_IMPORTED_MODULE_1__["default"])('authToken');
    document.cookie = `authId=${authId}; path=/`;
    document.cookie = `authKey=${authKey}; path=/`;
    document.cookie = `authToken=${authToken}; path=/`;
    try {
        const response = await fetch(`https://pixelplace.io/api/get-painting.php?id=${canvas.ID}&connected=1`, {
            headers: {
                'Accept': 'application/json, text/javascript, */*; q=0.01',
            },
            credentials: 'include'
        });
        const json = response.json();
        return json;
    }
    finally {
        document.cookie = `authId=${originalAuthId}; path=/`;
        document.cookie = `authKey=${originalAuthKey}; path=/`;
        document.cookie = `authToken=${originalAuthToken}; path=/`;
    }
}


/***/ }),

/***/ "./src/requests/getCookie.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ getCookie)
/* harmony export */ });
function getCookie(name) {
    const value = `; ${document.cookie}`;
    const parts = value.split(`; ${name}=`);
    if (parts.length === 2)
        return parts.pop().split(';').shift();
}


/***/ }),

/***/ "./src/requests/ping.ts":
/***/ (() => {

// to do


/***/ }),

/***/ "./src/util/ExternalLoader.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   loadCss: () => (/* binding */ loadCss)
/* harmony export */ });
function loadCss(url) {
    var head = document.getElementsByTagName('head')[0];
    var link = document.createElement('link');
    link.rel = 'stylesheet';
    link.type = 'text/css';
    link.href = url;
    link.media = 'all';
    head.appendChild(link);
}


/***/ }),

/***/ "./src/variables.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/auth/util/commands.ts");

window.seven = {
    bots: [],
    pixelspeed: 21,
    queue: [],
    inprogress: false,
    protect: false,
    tickspeed: 1000,
    order: 'fromCenter',
    saveAuth: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.saveAuth,
    getAuth: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.getAuth,
    saveAccount: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.saveAccount,
    getAccounts: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.getAccounts,
    deleteAccount: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.deleteAccount,
    connect: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.connect,
    disconnect: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.disconnect,
};


/***/ }),

/***/ "./src sync recursive ^(?%21.*global\\.d).+":
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var map = {
	".": "./src/index.ts",
	"./": "./src/index.ts",
	"./auth/Auth": "./src/auth/Auth.ts",
	"./auth/Auth.ts": "./src/auth/Auth.ts",
	"./auth/util/commands": "./src/auth/util/commands.ts",
	"./auth/util/commands.ts": "./src/auth/util/commands.ts",
	"./bot/Bot": "./src/bot/Bot.ts",
	"./bot/Bot.ts": "./src/bot/Bot.ts",
	"./bot/util/onmessage": "./src/bot/util/onmessage.ts",
	"./bot/util/onmessage.ts": "./src/bot/util/onmessage.ts",
	"./bot/util/palive": "./src/bot/util/palive.ts",
	"./bot/util/palive.ts": "./src/bot/util/palive.ts",
	"./bot/util/websocket": "./src/bot/util/websocket.ts",
	"./bot/util/websocket.ts": "./src/bot/util/websocket.ts",
	"./canvas/Canvas": "./src/canvas/Canvas.ts",
	"./canvas/Canvas.ts": "./src/canvas/Canvas.ts",
	"./canvas/util/canvasloader": "./src/canvas/util/canvasloader.ts",
	"./canvas/util/canvasloader.ts": "./src/canvas/util/canvasloader.ts",
	"./canvas/util/colors": "./src/canvas/util/colors.ts",
	"./canvas/util/colors.ts": "./src/canvas/util/colors.ts",
	"./css/drop": "./src/css/drop.ts",
	"./css/drop.ts": "./src/css/drop.ts",
	"./css/style": "./src/css/style.ts",
	"./css/style.ts": "./src/css/style.ts",
	"./index": "./src/index.ts",
	"./index.ts": "./src/index.ts",
	"./modules": "./src/modules/index.ts",
	"./modules/": "./src/modules/index.ts",
	"./modules/defaultModules": "./src/modules/defaultModules/index.ts",
	"./modules/defaultModules/": "./src/modules/defaultModules/index.ts",
	"./modules/defaultModules/SevenImageTools": "./src/modules/defaultModules/SevenImageTools.ts",
	"./modules/defaultModules/SevenImageTools.ts": "./src/modules/defaultModules/SevenImageTools.ts",
	"./modules/defaultModules/SevenProtect": "./src/modules/defaultModules/SevenProtect.ts",
	"./modules/defaultModules/SevenProtect.ts": "./src/modules/defaultModules/SevenProtect.ts",
	"./modules/defaultModules/SevenQueue": "./src/modules/defaultModules/SevenQueue.ts",
	"./modules/defaultModules/SevenQueue.ts": "./src/modules/defaultModules/SevenQueue.ts",
	"./modules/defaultModules/SevenSorting": "./src/modules/defaultModules/SevenSorting.ts",
	"./modules/defaultModules/SevenSorting.ts": "./src/modules/defaultModules/SevenSorting.ts",
	"./modules/defaultModules/SevenSquareMaker": "./src/modules/defaultModules/SevenSquareMaker.ts",
	"./modules/defaultModules/SevenSquareMaker.ts": "./src/modules/defaultModules/SevenSquareMaker.ts",
	"./modules/defaultModules/defaultKeys": "./src/modules/defaultModules/defaultKeys.ts",
	"./modules/defaultModules/defaultKeys.ts": "./src/modules/defaultModules/defaultKeys.ts",
	"./modules/defaultModules/index": "./src/modules/defaultModules/index.ts",
	"./modules/defaultModules/index.ts": "./src/modules/defaultModules/index.ts",
	"./modules/index": "./src/modules/index.ts",
	"./modules/index.ts": "./src/modules/index.ts",
	"./modules/util/getClientMouse": "./src/modules/util/getClientMouse.ts",
	"./modules/util/getClientMouse.ts": "./src/modules/util/getClientMouse.ts",
	"./requests/get-painting": "./src/requests/get-painting.ts",
	"./requests/get-painting.ts": "./src/requests/get-painting.ts",
	"./requests/getCookie": "./src/requests/getCookie.ts",
	"./requests/getCookie.ts": "./src/requests/getCookie.ts",
	"./requests/ping": "./src/requests/ping.ts",
	"./requests/ping.ts": "./src/requests/ping.ts",
	"./util/ExternalLoader": "./src/util/ExternalLoader.ts",
	"./util/ExternalLoader.ts": "./src/util/ExternalLoader.ts",
	"./variables": "./src/variables.ts",
	"./variables.ts": "./src/variables.ts"
};


function webpackContext(req) {
	var id = webpackContextResolve(req);
	return __webpack_require__(id);
}
function webpackContextResolve(req) {
	if(!__webpack_require__.o(map, req)) {
		var e = new Error("Cannot find module '" + req + "'");
		e.code = 'MODULE_NOT_FOUND';
		throw e;
	}
	return map[req];
}
webpackContext.keys = function webpackContextKeys() {
	return Object.keys(map);
};
webpackContext.resolve = webpackContextResolve;
module.exports = webpackContext;
webpackContext.id = "./src sync recursive ^(?%21.*global\\.d).+";

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/define property getters */
/******/ 	(() => {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = (exports, definition) => {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	(() => {
/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/make namespace object */
/******/ 	(() => {
/******/ 		// define __esModule on exports
/******/ 		__webpack_require__.r = (exports) => {
/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 			}
/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
/******/ 		};
/******/ 	})();
/******/ 	
/************************************************************************/
/******/ 	
/******/ 	// startup
/******/ 	// Load entry module and return exports
/******/ 	// This entry module is referenced by other modules so it can't be inlined
/******/ 	var __webpack_exports__ = __webpack_require__("./src/index.ts");
/******/ 	
/******/ })()
;