Archived
Add files via upload
This commit is contained in:
47 files changed
+5938
No files matched your search
@@ -0,0 +1,16 @@
|
||||
const fs = require('fs');
|
||||
const data = JSON.parse(fs.readFileSync("drawings.json", 'utf-8'));
|
||||
var count = 0;
|
||||
|
||||
let filteredData = [];
|
||||
for (const entry of data) {
|
||||
if (entry[0].color !== "#faf700") {
|
||||
filteredData.push(entry);
|
||||
console.log(entry[0].color);
|
||||
} else {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
fs.writeFileSync("drawings.json", JSON.stringify(filteredData), 'utf-8');
|
||||
console.log("Done found " + count);
|
||||
@@ -0,0 +1,512 @@
|
||||
const socket = io({
|
||||
timeout: 500
|
||||
});
|
||||
|
||||
const canvas = document.getElementById('drawingCanvas');
|
||||
const canvasContainer = document.getElementById('canvasContainer');
|
||||
const buttons = document.getElementById('buttons');
|
||||
const tx = document.getElementById('x');
|
||||
const ty = document.getElementById('y');
|
||||
const context = canvas.getContext('2d');
|
||||
const chat = document.querySelector('.chat-container');
|
||||
const nameinput = document.getElementById('username');
|
||||
const drawingEmitDelay = 500;
|
||||
let lastDrawingEmitTime = 0;
|
||||
let drawings = [];
|
||||
let announcementIDs = [];
|
||||
let currentDrawing = [];
|
||||
let isDrawing = false;
|
||||
let uiVisible = true;
|
||||
let currentColor = '#000000';
|
||||
let announceCount = 1;
|
||||
let connectionTimer = null;
|
||||
let connectionSeconds = 0;
|
||||
let versionSet = false;
|
||||
let ping = null;
|
||||
let uuid = "";
|
||||
context.imageSmoothingEnabled = true;
|
||||
canvasContainer.style.transform = `scale(0.08)`;
|
||||
|
||||
function getCookie(name) {
|
||||
const cookies = document.cookie.split(';').map(cookie => cookie.trim());
|
||||
for (const cookie of cookies) {
|
||||
const [cookieName, cookieValue] = cookie.split('=').map(part => decodeURIComponent(part));
|
||||
if (cookieName === name) {
|
||||
return cookieValue;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function setCookie(name, value, expire) {
|
||||
const expirationDate = new Date();
|
||||
expirationDate.setDate(expirationDate.getDate() + expire);
|
||||
|
||||
const cookieValue = encodeURIComponent(value) + (expire ? `; expires=${expirationDate.toUTCString()}` : '');
|
||||
document.cookie = `${name}=${cookieValue}; path=/`;
|
||||
}
|
||||
|
||||
function pinger() {
|
||||
const startTime = Date.now();
|
||||
const pingtext = document.getElementById('ping').querySelector('p');
|
||||
|
||||
socket.on('pong', () => {
|
||||
const latency = Date.now() - startTime;
|
||||
pingtext.textContent = 'Ping: ' + latency + 'ms';
|
||||
document.getElementById('ping').style.opacity = 0.25;
|
||||
});
|
||||
|
||||
socket.emit('ping');
|
||||
}
|
||||
|
||||
ping = setInterval(pinger, 1000);
|
||||
|
||||
function startConnectionTimer() {
|
||||
const messages = document.querySelector('.messages');
|
||||
|
||||
if(messages.querySelectorAll('[id="connection"]').length > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
clearInterval(ping);
|
||||
const parentMessage = document.createElement('div');
|
||||
parentMessage.setAttribute('class', 'message fadeup red');
|
||||
parentMessage.setAttribute('id', 'connection');
|
||||
parentMessage.style.boxShadow = "0 4px 8px rgba(0, 0, 0, 0.1)";
|
||||
parentMessage.style.width = "300px";
|
||||
const message = document.createElement('p');
|
||||
message.setAttribute('id', 'timeout');
|
||||
message.setAttribute('style', 'white-space: nowrap;margin: 25px 50px 25px 50px');
|
||||
message.textContent = "Server Connection Timeout: " + connectionSeconds.toFixed(1);
|
||||
parentMessage.appendChild(message);
|
||||
messages.appendChild(parentMessage);
|
||||
|
||||
canvas.style.opacity = 0;
|
||||
buttons.style.opacity = 0;
|
||||
canvas.classList.add('fadedown');
|
||||
drawings = [];
|
||||
currentDrawing = [];
|
||||
draw();
|
||||
|
||||
connectionTimer = setInterval(() => {
|
||||
connectionSeconds += 0.1;
|
||||
document.getElementById('timeout').textContent = "Server Connection Timeout: " + connectionSeconds.toFixed(1);
|
||||
}, 100);
|
||||
}
|
||||
|
||||
function stopConnectionTimer() {
|
||||
clearInterval(connectionTimer);
|
||||
ping = setInterval(pinger, 1000);
|
||||
connectionSeconds = 0;
|
||||
|
||||
const messages = document.querySelector('.messages');
|
||||
|
||||
messages.querySelectorAll('[id="connection"]').forEach((child) => {
|
||||
child.classList.remove('fadeup');
|
||||
child.classList.add('fadedown');
|
||||
setTimeout(() => {
|
||||
child.remove();
|
||||
}, 500);
|
||||
});
|
||||
|
||||
const parentMessage = document.createElement('div');
|
||||
parentMessage.setAttribute('class', 'message fadeup green');
|
||||
parentMessage.setAttribute('id', 'success');
|
||||
parentMessage.style.boxShadow = "0 4px 8px rgba(0, 0, 0, 0.1)";
|
||||
parentMessage.setAttribute('style', "min-width: auto;");
|
||||
const messagetext = document.createElement('p');
|
||||
messagetext.setAttribute('id', 'timeout');
|
||||
messagetext.setAttribute('style', 'white-space: nowrap;margin: 25px 50px 25px 50px');
|
||||
messagetext.textContent = "Server connection has been restored";
|
||||
parentMessage.appendChild(messagetext);
|
||||
messages.appendChild(parentMessage);
|
||||
|
||||
canvas.style.opacity = 1;
|
||||
buttons.style.opacity = 1;
|
||||
canvas.classList.remove('fadedown');
|
||||
canvas.classList.add('fadeup');
|
||||
const message = document.getElementById('success');
|
||||
|
||||
setTimeout(() => {
|
||||
message.classList.remove('fadeup');
|
||||
message.classList.add('fadedown');
|
||||
setTimeout(() => {
|
||||
message.remove();
|
||||
}, 500);
|
||||
}, 2500);
|
||||
}
|
||||
|
||||
socket.on('connect', () => {
|
||||
if(connectionSeconds != 0) {
|
||||
stopConnectionTimer();
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('connect_error', () => {
|
||||
startConnectionTimer();
|
||||
});
|
||||
|
||||
socket.on('connect_timeout', () => {
|
||||
startConnectionTimer();
|
||||
});
|
||||
|
||||
function toggleOP() {
|
||||
uiVisible = !uiVisible;
|
||||
buttons.style.display = uiVisible ? '' : 'none';
|
||||
document.getElementById('resetView').style.display = uiVisible ? '' : 'none';
|
||||
document.getElementById('xy').style.display = uiVisible ? '' : 'none';
|
||||
document.getElementById('connectedClients').style.display = uiVisible ? '' : 'none';
|
||||
document.getElementById('version').style.display = uiVisible ? '' : 'none';
|
||||
document.getElementById('ping').style.display = uiVisible ? '' : 'none';
|
||||
document.getElementById('data').style.display = uiVisible ? '' : 'none';
|
||||
chat.style.display = uiVisible ? 'flex' : 'none';
|
||||
}
|
||||
|
||||
function resetView() {
|
||||
canvasContainer.style.transform = `scale(0.08)`;
|
||||
canvas.style.transform = `translate(0px, 0px)`;
|
||||
zoomLevel = 0.08;
|
||||
offsetX = 0;
|
||||
offsetY = 0;
|
||||
}
|
||||
|
||||
function changeColor(event) {
|
||||
currentColor = event.target.value;
|
||||
}
|
||||
|
||||
document.addEventListener('mouseup', () => {
|
||||
isDrawing = false;
|
||||
});
|
||||
|
||||
canvas.addEventListener('mouseleave', () => {
|
||||
isDrawing = false;
|
||||
});
|
||||
|
||||
canvas.addEventListener('mousedown', (event) => {
|
||||
isDrawing = true;
|
||||
addPoint(event);
|
||||
});
|
||||
|
||||
canvas.addEventListener('mouseup', () => {
|
||||
isDrawing = false;
|
||||
if (currentDrawing.length > 0) {
|
||||
socket.emit('draw', { type: 'draw', drawing: currentDrawing, valid: uuid });
|
||||
drawings.push(currentDrawing);
|
||||
draw();
|
||||
currentDrawing = [];
|
||||
lastDrawingEmitTime = Date.now();
|
||||
}
|
||||
});
|
||||
|
||||
canvas.addEventListener('mousemove', (event) => {
|
||||
const rect = canvas.getBoundingClientRect();
|
||||
const scaleX = canvas.width / rect.width;
|
||||
const scaleY = canvas.height / rect.height;
|
||||
|
||||
const x = Math.round((event.clientX - rect.left) * scaleX);
|
||||
const y = Math.round((event.clientY - rect.top) * scaleY);
|
||||
|
||||
tx.innerHTML = x;
|
||||
ty.innerHTML = y;
|
||||
|
||||
if (isDrawing) {
|
||||
addPoint(event);
|
||||
|
||||
const currentTime = Date.now();
|
||||
if (currentTime - lastDrawingEmitTime >= drawingEmitDelay) {
|
||||
//socket.emit('draw', { type: 'draw', drawing: currentDrawing, valid: uuid });
|
||||
lastDrawingEmitTime = currentTime;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById('chat-input').addEventListener('keydown', function(event) {
|
||||
if(event.keyCode == 13) {
|
||||
socket.emit('message', { uuid: uuid, content: document.getElementById('chat-input').value });
|
||||
document.getElementById('chat-input').value = "";
|
||||
}
|
||||
});
|
||||
|
||||
nameinput.addEventListener('keydown', function(event) {
|
||||
if(event.keyCode == 13) {
|
||||
socket.emit('changeName', { uuid: uuid, name: nameinput.value });
|
||||
}
|
||||
});
|
||||
|
||||
document.addEventListener('keydown', function(event) {
|
||||
if (event.key === 'ArrowUp') {
|
||||
pan('up');
|
||||
} else if (event.key === 'ArrowDown') {
|
||||
pan('down');
|
||||
} else if (event.key === 'ArrowLeft') {
|
||||
pan('left');
|
||||
} else if (event.key === 'ArrowRight') {
|
||||
pan('right');
|
||||
}
|
||||
});
|
||||
|
||||
function addPoint(event) {
|
||||
if (!isDrawing) return;
|
||||
const rect = canvas.getBoundingClientRect();
|
||||
const scaleX = canvas.width / rect.width;
|
||||
const scaleY = canvas.height / rect.height;
|
||||
|
||||
const x = (event.clientX - rect.left) * scaleX;
|
||||
const y = (event.clientY - rect.top) * scaleY;
|
||||
|
||||
currentDrawing.push({ x: Math.round(x), y: Math.round(y), color: currentColor });
|
||||
draw();
|
||||
}
|
||||
|
||||
function draw() {
|
||||
context.clearRect(0, 0, canvas.width, canvas.height);
|
||||
|
||||
for (const drawing of drawings) {
|
||||
if (drawing.length < 2) continue;
|
||||
|
||||
for (let i = 1; i < drawing.length; i++) {
|
||||
const startPoint = drawing[i - 1];
|
||||
const endPoint = drawing[i];
|
||||
|
||||
context.beginPath();
|
||||
context.strokeStyle = startPoint.color;
|
||||
context.moveTo(Math.round(startPoint.x), Math.round(startPoint.y));
|
||||
context.lineTo(Math.round(endPoint.x), Math.round(endPoint.y));
|
||||
context.stroke();
|
||||
}
|
||||
}
|
||||
|
||||
context.stroke();
|
||||
|
||||
|
||||
if (currentDrawing.length > 0) {
|
||||
context.beginPath();
|
||||
context.strokeStyle = currentColor;
|
||||
context.moveTo(Math.round(currentDrawing[0].x), Math.round(currentDrawing[0].y));
|
||||
|
||||
for (let i = 1; i < currentDrawing.length; i++) {
|
||||
const point = currentDrawing[i];
|
||||
context.lineTo(Math.round(point.x), Math.round(point.y));
|
||||
}
|
||||
|
||||
context.stroke();
|
||||
}
|
||||
}
|
||||
|
||||
socket.on('changeName', (data) => {
|
||||
document.getElementById('nameStatus').textContent = data.status.message;
|
||||
document.getElementById('nameStatus').style.display = "";
|
||||
|
||||
setTimeout(() => {
|
||||
document.getElementById('nameStatus').style.display = "none";
|
||||
}, 5000);
|
||||
});
|
||||
|
||||
socket.on('chat', (data) => {
|
||||
if(data.type == "message") {
|
||||
const message = document.createElement('li');
|
||||
message.textContent = "<" + data.name + "> " + data.content;
|
||||
chat.querySelector('ul').appendChild(message);
|
||||
chat.querySelector('.chat-messages').querySelector('ul').scrollTop = chat.querySelector('.chat-messages').querySelector('ul').scrollHeight;
|
||||
} else if(data.type == "existingMessages") {
|
||||
const messages = JSON.parse(data.messages);
|
||||
chat.querySelector('ul').innerHTML = "";
|
||||
messages.forEach(entry => {
|
||||
const message = document.createElement('li');
|
||||
message.textContent = "<" + entry.name + "> " + entry.content;
|
||||
chat.querySelector('ul').appendChild(message);
|
||||
chat.querySelector('.chat-messages').querySelector('ul').scrollTop = chat.querySelector('.chat-messages').querySelector('ul').scrollHeight;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('dataSize', (data) => {
|
||||
document.getElementById('data').querySelector('p').textContent = "Size: " + data.size + "MB";
|
||||
document.getElementById('data').style.opacity = 0.25;
|
||||
});
|
||||
|
||||
socket.on('play', (data) => {
|
||||
if(data.audio != "stop") {
|
||||
document.getElementById('audio-player').src = data.audio;
|
||||
document.getElementById('audio-player').play();
|
||||
} else {
|
||||
document.getElementById('audio-player').pause();
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('announcement', (data) => {
|
||||
if (data.message && data.color) {
|
||||
const announcementMessage = data.message;
|
||||
const messages = document.querySelector('.messages');
|
||||
|
||||
const announcement = document.createElement('div');
|
||||
announcement.setAttribute('class', 'message fadeup ' + data.color);
|
||||
announcement.setAttribute('id', announceCount);
|
||||
announcement.style.boxShadow = "0 4px 8px rgba(0, 0, 0, 0.1)";
|
||||
const message = document.createElement('p');
|
||||
message.setAttribute('style', 'white-space: normal;margin: 25px 50px 25px 50px');
|
||||
message.textContent = announcementMessage;
|
||||
announcement.appendChild(message);
|
||||
messages.appendChild(announcement);
|
||||
announceCount++;
|
||||
|
||||
announcementIDs.push(announceCount - 1);
|
||||
|
||||
setTimeout(() => {
|
||||
const el = document.getElementById(announceCount - 1);
|
||||
el.classList.remove('fadeup');
|
||||
el.classList.add('fadedown');
|
||||
setTimeout(() => {
|
||||
el.style.display = "none";
|
||||
el.remove();
|
||||
}, 500);
|
||||
}, 5000);
|
||||
}
|
||||
});
|
||||
|
||||
function hideMessages() {
|
||||
const parentDiv = document.querySelector('.messages');
|
||||
if (parentDiv) {
|
||||
const childDivs = parentDiv.querySelectorAll('div');
|
||||
|
||||
if(childDivs.length > 1) {
|
||||
childDivs.forEach((child) => {
|
||||
if (child.getAttribute('id') != "connection") {
|
||||
child.classList.add('fadedown');
|
||||
}
|
||||
});
|
||||
|
||||
setTimeout(() => {
|
||||
childDivs.forEach((child) => {
|
||||
if (child.getAttribute('id') != "connection") {
|
||||
child.style.display = 'none';
|
||||
child.remove();
|
||||
}
|
||||
});
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setInterval(hideMessages, 5000);
|
||||
|
||||
socket.on('connectedClients', (count) => {
|
||||
document.getElementById('clientNum').textContent = `Connected Clients: ${count}`;
|
||||
document.getElementById('connectedClients').style.opacity = 0.25;
|
||||
});
|
||||
|
||||
socket.on('reload', (count) => {
|
||||
location.reload(true);
|
||||
});
|
||||
|
||||
socket.on('version', (version) => {
|
||||
document.title = "Collavas v" + version;
|
||||
document.getElementById('version').querySelector('p').textContent = "Version: " + version;
|
||||
document.getElementById('version').style.opacity = 0.25;
|
||||
versionSet = true;
|
||||
|
||||
document.getElementById('w-version').textContent = "Collavas v" + version;
|
||||
});
|
||||
|
||||
socket.on('draw', (data) => {
|
||||
if (data.type === 'draw' && data.drawing) {
|
||||
drawings.push(data.drawing);
|
||||
draw();
|
||||
} else if (data.type === 'existingDrawings' && data.drawings) {
|
||||
const parsedDrawings = JSON.parse(data.drawings);
|
||||
const messages = JSON.parse(data.chat);
|
||||
drawings = [];
|
||||
|
||||
chat.querySelector('ul').innerHTML = "";
|
||||
messages.forEach(entry => {
|
||||
const message = document.createElement('li');
|
||||
message.textContent = "<" + entry.name + "> " + entry.content;
|
||||
chat.querySelector('ul').appendChild(message);
|
||||
chat.querySelector('.chat-messages').querySelector('ul').scrollTop = chat.querySelector('.chat-messages').querySelector('ul').scrollHeight;
|
||||
});
|
||||
|
||||
uuid = data.id;
|
||||
nameinput.value = data.name;
|
||||
setCookie("uuid", uuid, 1);
|
||||
|
||||
drawings.push(...parsedDrawings);
|
||||
draw();
|
||||
|
||||
document.getElementById('transition').style.opacity = 1;
|
||||
document.getElementById('transition').style.visibility = "hidden";
|
||||
canvas.style.opacity = 1;
|
||||
canvas.style.visibility = "visible";
|
||||
buttons.style.opacity = 1;
|
||||
chat.style.display = "flex";
|
||||
|
||||
if(!getCookie("visited")) {
|
||||
var welcome = document.getElementById('welcome');
|
||||
welcome.style.display = "flex";
|
||||
welcome.style.opacity = 1;
|
||||
welcome.querySelector('div').classList.add('fadeup');
|
||||
setCookie("visited", "true", 1);
|
||||
|
||||
document.getElementById('w-close').addEventListener('click', (event) => {
|
||||
welcome.style.opacity = 0;
|
||||
welcome.querySelector('div').classList.remove('fadeup');
|
||||
welcome.querySelector('div').classList.add('fadedown');
|
||||
|
||||
setTimeout(() => {
|
||||
welcome.style.display = "none";
|
||||
}, 500);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let zoomLevel = 0.08;
|
||||
const zoomFactor = 0.1;
|
||||
|
||||
let offsetX = 0;
|
||||
let offsetY = 0;
|
||||
|
||||
function pan(direction) {
|
||||
const panSpeed = 40;
|
||||
|
||||
switch (direction) {
|
||||
case 'left':
|
||||
offsetX += panSpeed;
|
||||
break;
|
||||
case 'right':
|
||||
offsetX -= panSpeed;
|
||||
break;
|
||||
case 'up':
|
||||
offsetY += panSpeed;
|
||||
break;
|
||||
case 'down':
|
||||
offsetY -= panSpeed;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
updateCanvasContainerPosition();
|
||||
}
|
||||
|
||||
function updateCanvasContainerPosition() {
|
||||
if(zoomLevel == 0.08) {
|
||||
canvas.style.transform = `0px, 0px)`;
|
||||
offsetX = 0;
|
||||
offsetY = 0;
|
||||
} else {
|
||||
canvas.style.transform = `translate(${offsetX}px, ${offsetY}px)`;
|
||||
}
|
||||
}
|
||||
canvasContainer.addEventListener('wheel', (event) => {
|
||||
event.preventDefault();
|
||||
|
||||
const scrollAmount = event.deltaY > 0 ? -1 : 1;
|
||||
const scaleFactor = 1 + scrollAmount * zoomFactor;
|
||||
|
||||
zoomLevel *= scaleFactor;
|
||||
|
||||
if (zoomLevel < 0.08) { zoomLevel = 0.08; canvas.style.transform = `translate(0px, 0px)`; updateCanvasContainerPosition(); }
|
||||
if (zoomLevel > 20.0) zoomLevel = 20.0;
|
||||
|
||||
canvasContainer.style.transform = `scale(${zoomLevel})`;
|
||||
});
|
||||
@@ -0,0 +1 @@
|
||||
node server-96wMDN.js
|
||||
@@ -0,0 +1,2 @@
|
||||
version: 0.1.4
|
||||
port: 3000
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1,128 @@
|
||||
[2025-01-02 17:35:15] [INFO] Starting Collavas server v0.1.4
|
||||
[2025-01-02 17:35:15] [INFO] Loading Dependencies...
|
||||
[2025-01-02 17:35:15] [INFO] Successfully started!
|
||||
[2025-01-02 17:35:15] [INFO] Server is running on port 3000
|
||||
[2025-01-02 17:35:15] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:35:19] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:36:13] [INFO] NaN 1735868173756
|
||||
[2025-01-02 17:36:13] [INFO] 8f5bbf5e-9848-422f-9e41-6a84807effe1 {"type":"draw","drawing":[{"x":5195,"y":4934,"color":"#000000"},{"x":5195,"y":4935,"color":"#000000"},{"x":5195,"y":4944,"color":"#000000"},{"x":5195,"y":4954,"color":"#000000"},{"x":5196,"y":4961,"color":"#000000"},{"x":5196,"y":4964,"color":"#000000"},{"x":5196,"y":4964,"color":"#000000"},{"x":5203,"y":4953,"color":"#000000"},{"x":5209,"y":4949,"color":"#000000"},{"x":5215,"y":4957,"color":"#000000"},{"x":5216,"y":4964,"color":"#000000"},{"x":5207,"y":4966,"color":"#000000"},{"x":5195,"y":4961,"color":"#000000"},{"x":5194,"y":4960,"color":"#000000"},{"x":5195,"y":4960,"color":"#000000"}],"valid":"8f5bbf5e-9848-422f-9e41-6a84807effe1"}
|
||||
[2025-01-02 17:36:26] [INFO] Drawing not authenticated 8f5bbf5e-9848-422f-9e41-6a84807effe1
|
||||
[2025-01-02 17:36:32] [INFO] 18580 1735868192337
|
||||
[2025-01-02 17:36:32] [INFO] 8f5bbf5e-9848-422f-9e41-6a84807effe1 {"type":"draw","drawing":[{"x":5194,"y":4936,"color":"#000000"},{"x":5194,"y":4939,"color":"#000000"},{"x":5194,"y":4953,"color":"#000000"},{"x":5194,"y":4964,"color":"#000000"},{"x":5194,"y":4964,"color":"#000000"},{"x":5196,"y":4946,"color":"#000000"},{"x":5197,"y":4940,"color":"#000000"},{"x":5197,"y":4938,"color":"#000000"},{"x":5197,"y":4939,"color":"#000000"},{"x":5193,"y":4957,"color":"#000000"},{"x":5193,"y":4969,"color":"#000000"},{"x":5194,"y":4969,"color":"#000000"},{"x":5197,"y":4948,"color":"#000000"},{"x":5196,"y":4938,"color":"#000000"},{"x":5193,"y":4934,"color":"#000000"},{"x":5196,"y":4947,"color":"#000000"},{"x":5199,"y":4964,"color":"#000000"},{"x":5199,"y":4966,"color":"#000000"},{"x":5196,"y":4955,"color":"#000000"},{"x":5195,"y":4945,"color":"#000000"}],"valid":"8f5bbf5e-9848-422f-9e41-6a84807effe1"}
|
||||
[2025-01-02 17:36:35] [INFO] 3396 1735868195735
|
||||
[2025-01-02 17:36:35] [INFO] 8f5bbf5e-9848-422f-9e41-6a84807effe1 {"type":"draw","drawing":[{"x":5197,"y":4962,"color":"#000000"},{"x":5197,"y":4959,"color":"#000000"},{"x":5204,"y":4952,"color":"#000000"},{"x":5214,"y":4952,"color":"#000000"},{"x":5216,"y":4956,"color":"#000000"},{"x":5213,"y":4963,"color":"#000000"},{"x":5212,"y":4964,"color":"#000000"},{"x":5203,"y":4963,"color":"#000000"},{"x":5191,"y":4959,"color":"#000000"},{"x":5190,"y":4956,"color":"#000000"},{"x":5202,"y":4951,"color":"#000000"},{"x":5211,"y":4951,"color":"#000000"},{"x":5214,"y":4952,"color":"#000000"},{"x":5215,"y":4958,"color":"#000000"},{"x":5212,"y":4966,"color":"#000000"},{"x":5204,"y":4967,"color":"#000000"},{"x":5195,"y":4963,"color":"#000000"},{"x":5192,"y":4957,"color":"#000000"},{"x":5194,"y":4954,"color":"#000000"},{"x":5201,"y":4951,"color":"#000000"},{"x":5207,"y":4954,"color":"#000000"},{"x":5210,"y":4958,"color":"#000000"},{"x":5211,"y":4963,"color":"#000000"},{"x":5209,"y":4967,"color":"#000000"},{"x":5205,"y":4968,"color":"#000000"},{"x":5200,"y":4964,"color":"#000000"},{"x":5197,"y":4959,"color":"#000000"},{"x":5197,"y":4959,"color":"#000000"}],"valid":"8f5bbf5e-9848-422f-9e41-6a84807effe1"}
|
||||
[2025-01-02 17:36:41] [INFO] 5774 1735868201510
|
||||
[2025-01-02 17:36:41] [INFO] 8f5bbf5e-9848-422f-9e41-6a84807effe1 {"type":"draw","drawing":[{"x":5222,"y":4963,"color":"#000000"},{"x":5224,"y":4955,"color":"#000000"},{"x":5227,"y":4931,"color":"#000000"},{"x":5227,"y":4932,"color":"#000000"},{"x":5228,"y":4948,"color":"#000000"},{"x":5228,"y":4958,"color":"#000000"},{"x":5228,"y":4960,"color":"#000000"},{"x":5227,"y":4960,"color":"#000000"},{"x":5223,"y":4949,"color":"#000000"},{"x":5225,"y":4936,"color":"#000000"},{"x":5226,"y":4932,"color":"#000000"},{"x":5226,"y":4946,"color":"#000000"},{"x":5226,"y":4962,"color":"#000000"},{"x":5226,"y":4963,"color":"#000000"},{"x":5226,"y":4956,"color":"#000000"},{"x":5227,"y":4935,"color":"#000000"},{"x":5228,"y":4933,"color":"#000000"},{"x":5227,"y":4942,"color":"#000000"},{"x":5222,"y":4962,"color":"#000000"},{"x":5222,"y":4964,"color":"#000000"},{"x":5227,"y":4951,"color":"#000000"},{"x":5228,"y":4946,"color":"#000000"},{"x":5229,"y":4944,"color":"#000000"},{"x":5239,"y":4942,"color":"#000000"},{"x":5244,"y":4947,"color":"#000000"},{"x":5245,"y":4950,"color":"#000000"},{"x":5245,"y":4948,"color":"#000000"},{"x":5244,"y":4943,"color":"#000000"},{"x":5238,"y":4942,"color":"#000000"},{"x":5233,"y":4944,"color":"#000000"},{"x":5228,"y":4947,"color":"#000000"},{"x":5228,"y":4949,"color":"#000000"},{"x":5229,"y":4948,"color":"#000000"},{"x":5236,"y":4942,"color":"#000000"},{"x":5240,"y":4941,"color":"#000000"},{"x":5242,"y":4945,"color":"#000000"},{"x":5244,"y":4948,"color":"#000000"},{"x":5240,"y":4945,"color":"#000000"},{"x":5234,"y":4941,"color":"#000000"},{"x":5227,"y":4946,"color":"#000000"},{"x":5225,"y":4952,"color":"#000000"},{"x":5225,"y":4955,"color":"#000000"},{"x":5229,"y":4950,"color":"#000000"},{"x":5242,"y":4942,"color":"#000000"},{"x":5245,"y":4942,"color":"#000000"},{"x":5246,"y":4946,"color":"#000000"},{"x":5245,"y":4951,"color":"#000000"},{"x":5243,"y":4947,"color":"#000000"},{"x":5240,"y":4943,"color":"#000000"},{"x":5234,"y":4945,"color":"#000000"},{"x":5229,"y":4950,"color":"#000000"},{"x":5228,"y":4954,"color":"#000000"},{"x":5228,"y":4955,"color":"#000000"}],"valid":"8f5bbf5e-9848-422f-9e41-6a84807effe1"}
|
||||
[2025-01-02 17:36:50] [INFO] 9007 1735868210518
|
||||
[2025-01-02 17:36:50] [INFO] 8f5bbf5e-9848-422f-9e41-6a84807effe1 {"type":"draw","drawing":[{"x":5264,"y":4932,"color":"#000000"},{"x":5263,"y":4935,"color":"#000000"},{"x":5257,"y":4956,"color":"#000000"},{"x":5259,"y":4964,"color":"#000000"},{"x":5264,"y":4964,"color":"#000000"},{"x":5278,"y":4952,"color":"#000000"},{"x":5283,"y":4939,"color":"#000000"},{"x":5285,"y":4932,"color":"#000000"},{"x":5285,"y":4931,"color":"#000000"},{"x":5285,"y":4940,"color":"#000000"},{"x":5282,"y":4958,"color":"#000000"},{"x":5280,"y":4963,"color":"#000000"},{"x":5262,"y":4964,"color":"#000000"},{"x":5258,"y":4959,"color":"#000000"},{"x":5262,"y":4944,"color":"#000000"},{"x":5267,"y":4936,"color":"#000000"},{"x":5269,"y":4934,"color":"#000000"},{"x":5269,"y":4934,"color":"#000000"},{"x":5263,"y":4944,"color":"#000000"},{"x":5258,"y":4958,"color":"#000000"},{"x":5258,"y":4963,"color":"#000000"},{"x":5265,"y":4962,"color":"#000000"},{"x":5280,"y":4952,"color":"#000000"},{"x":5283,"y":4947,"color":"#000000"},{"x":5283,"y":4940,"color":"#000000"},{"x":5283,"y":4938,"color":"#000000"},{"x":5282,"y":4942,"color":"#000000"},{"x":5275,"y":4955,"color":"#000000"},{"x":5270,"y":4961,"color":"#000000"},{"x":5260,"y":4959,"color":"#000000"},{"x":5259,"y":4955,"color":"#000000"},{"x":5265,"y":4938,"color":"#000000"},{"x":5266,"y":4937,"color":"#000000"},{"x":5266,"y":4938,"color":"#000000"},{"x":5260,"y":4951,"color":"#000000"},{"x":5256,"y":4961,"color":"#000000"},{"x":5257,"y":4965,"color":"#000000"},{"x":5271,"y":4962,"color":"#000000"},{"x":5283,"y":4953,"color":"#000000"},{"x":5287,"y":4940,"color":"#000000"},{"x":5287,"y":4935,"color":"#000000"},{"x":5287,"y":4935,"color":"#000000"},{"x":5278,"y":4951,"color":"#000000"},{"x":5273,"y":4959,"color":"#000000"},{"x":5269,"y":4960,"color":"#000000"},{"x":5258,"y":4958,"color":"#000000"},{"x":5255,"y":4952,"color":"#000000"},{"x":5259,"y":4938,"color":"#000000"},{"x":5264,"y":4932,"color":"#000000"},{"x":5264,"y":4932,"color":"#000000"},{"x":5259,"y":4945,"color":"#000000"},{"x":5256,"y":4955,"color":"#000000"},{"x":5256,"y":4960,"color":"#000000"},{"x":5270,"y":4961,"color":"#000000"},{"x":5277,"y":4951,"color":"#000000"},{"x":5279,"y":4945,"color":"#000000"},{"x":5280,"y":4940,"color":"#000000"},{"x":5282,"y":4938,"color":"#000000"},{"x":5282,"y":4937,"color":"#000000"},{"x":5279,"y":4943,"color":"#000000"},{"x":5273,"y":4951,"color":"#000000"},{"x":5267,"y":4956,"color":"#000000"},{"x":5263,"y":4956,"color":"#000000"},{"x":5259,"y":4953,"color":"#000000"},{"x":5258,"y":4944,"color":"#000000"},{"x":5264,"y":4933,"color":"#000000"},{"x":5267,"y":4928,"color":"#000000"},{"x":5267,"y":4929,"color":"#000000"},{"x":5256,"y":4944,"color":"#000000"},{"x":5253,"y":4955,"color":"#000000"},{"x":5255,"y":4957,"color":"#000000"},{"x":5270,"y":4957,"color":"#000000"},{"x":5280,"y":4946,"color":"#000000"},{"x":5283,"y":4940,"color":"#000000"},{"x":5284,"y":4939,"color":"#000000"},{"x":5284,"y":4939,"color":"#000000"},{"x":5276,"y":4952,"color":"#000000"},{"x":5267,"y":4958,"color":"#000000"},{"x":5256,"y":4956,"color":"#000000"},{"x":5258,"y":4944,"color":"#000000"},{"x":5265,"y":4934,"color":"#000000"},{"x":5265,"y":4933,"color":"#000000"}],"valid":"8f5bbf5e-9848-422f-9e41-6a84807effe1"}
|
||||
[2025-01-02 17:37:01] [INFO] 10889 1735868221408
|
||||
[2025-01-02 17:37:01] [INFO] 8f5bbf5e-9848-422f-9e41-6a84807effe1 {"type":"draw","drawing":[{"x":5301,"y":4919,"color":"#000000"},{"x":5301,"y":4921,"color":"#000000"},{"x":5302,"y":4942,"color":"#000000"},{"x":5299,"y":4955,"color":"#000000"},{"x":5297,"y":4961,"color":"#000000"},{"x":5297,"y":4961,"color":"#000000"},{"x":5298,"y":4946,"color":"#000000"},{"x":5299,"y":4939,"color":"#000000"},{"x":5303,"y":4939,"color":"#000000"},{"x":5307,"y":4951,"color":"#000000"},{"x":5307,"y":4958,"color":"#000000"},{"x":5307,"y":4962,"color":"#000000"},{"x":5306,"y":4963,"color":"#000000"},{"x":5306,"y":4963,"color":"#000000"},{"x":5307,"y":4948,"color":"#000000"},{"x":5305,"y":4941,"color":"#000000"},{"x":5305,"y":4940,"color":"#000000"},{"x":5301,"y":4942,"color":"#000000"},{"x":5298,"y":4947,"color":"#000000"},{"x":5296,"y":4954,"color":"#000000"},{"x":5296,"y":4955,"color":"#000000"},{"x":5296,"y":4954,"color":"#000000"},{"x":5299,"y":4938,"color":"#000000"},{"x":5300,"y":4932,"color":"#000000"},{"x":5301,"y":4927,"color":"#000000"},{"x":5301,"y":4928,"color":"#000000"},{"x":5299,"y":4942,"color":"#000000"},{"x":5297,"y":4953,"color":"#000000"},{"x":5296,"y":4959,"color":"#000000"},{"x":5296,"y":4960,"color":"#000000"},{"x":5298,"y":4949,"color":"#000000"},{"x":5303,"y":4944,"color":"#000000"},{"x":5307,"y":4947,"color":"#000000"},{"x":5310,"y":4959,"color":"#000000"},{"x":5311,"y":4962,"color":"#000000"},{"x":5311,"y":4963,"color":"#000000"},{"x":5311,"y":4958,"color":"#000000"},{"x":5308,"y":4943,"color":"#000000"},{"x":5303,"y":4940,"color":"#000000"},{"x":5299,"y":4944,"color":"#000000"},{"x":5295,"y":4953,"color":"#000000"},{"x":5295,"y":4958,"color":"#000000"},{"x":5295,"y":4961,"color":"#000000"},{"x":5295,"y":4958,"color":"#000000"},{"x":5301,"y":4939,"color":"#000000"},{"x":5302,"y":4932,"color":"#000000"},{"x":5302,"y":4931,"color":"#000000"},{"x":5302,"y":4931,"color":"#000000"},{"x":5303,"y":4940,"color":"#000000"},{"x":5299,"y":4953,"color":"#000000"},{"x":5296,"y":4960,"color":"#000000"},{"x":5296,"y":4961,"color":"#000000"},{"x":5297,"y":4955,"color":"#000000"},{"x":5303,"y":4945,"color":"#000000"},{"x":5308,"y":4944,"color":"#000000"},{"x":5312,"y":4958,"color":"#000000"},{"x":5310,"y":4964,"color":"#000000"},{"x":5310,"y":4965,"color":"#000000"},{"x":5311,"y":4959,"color":"#000000"},{"x":5311,"y":4946,"color":"#000000"},{"x":5310,"y":4944,"color":"#000000"},{"x":5307,"y":4943,"color":"#000000"},{"x":5298,"y":4949,"color":"#000000"},{"x":5293,"y":4960,"color":"#000000"},{"x":5293,"y":4966,"color":"#000000"},{"x":5293,"y":4965,"color":"#000000"},{"x":5296,"y":4954,"color":"#000000"},{"x":5300,"y":4939,"color":"#000000"},{"x":5301,"y":4934,"color":"#000000"},{"x":5301,"y":4935,"color":"#000000"},{"x":5298,"y":4949,"color":"#000000"},{"x":5297,"y":4959,"color":"#000000"},{"x":5295,"y":4963,"color":"#000000"},{"x":5298,"y":4956,"color":"#000000"},{"x":5304,"y":4943,"color":"#000000"},{"x":5309,"y":4943,"color":"#000000"},{"x":5311,"y":4948,"color":"#000000"},{"x":5311,"y":4955,"color":"#000000"},{"x":5311,"y":4959,"color":"#000000"},{"x":5310,"y":4961,"color":"#000000"},{"x":5310,"y":4957,"color":"#000000"},{"x":5309,"y":4945,"color":"#000000"},{"x":5308,"y":4944,"color":"#000000"},{"x":5302,"y":4947,"color":"#000000"},{"x":5295,"y":4952,"color":"#000000"},{"x":5293,"y":4960,"color":"#000000"},{"x":5292,"y":4963,"color":"#000000"},{"x":5293,"y":4961,"color":"#000000"},{"x":5299,"y":4944,"color":"#000000"},{"x":5304,"y":4932,"color":"#000000"},{"x":5305,"y":4931,"color":"#000000"},{"x":5304,"y":4932,"color":"#000000"},{"x":5299,"y":4946,"color":"#000000"},{"x":5296,"y":4955,"color":"#000000"},{"x":5296,"y":4956,"color":"#000000"},{"x":5296,"y":4957,"color":"#000000"},{"x":5296,"y":4955,"color":"#000000"},{"x":5301,"y":4942,"color":"#000000"},{"x":5304,"y":4933,"color":"#000000"},{"x":5304,"y":4933,"color":"#000000"},{"x":5302,"y":4939,"color":"#000000"},{"x":5299,"y":4944,"color":"#000000"}],"valid":"8f5bbf5e-9848-422f-9e41-6a84807effe1"}
|
||||
[2025-01-02 17:40:04] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:40:06] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:40:51] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:40:53] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:42:03] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:42:05] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:42:50] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:42:51] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:44:01] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:44:03] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:44:48] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:44:49] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:45:59] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:46:01] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:46:46] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:46:48] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:47:58] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:47:59] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:48:44] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:48:46] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:49:56] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:49:58] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:50:43] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:50:45] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:51:55] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:51:57] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:52:42] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:52:44] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:53:54] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:53:55] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:54:40] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:54:42] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:55:52] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:55:53] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:57:03] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:57:05] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:57:50] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:57:51] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:59:01] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:59:03] [INFO] Connected Clients: 1
|
||||
[2025-01-02 17:59:48] [INFO] Connected Clients: 0
|
||||
[2025-01-02 17:59:50] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:01:00] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:01:02] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:01:47] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:01:48] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:02:58] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:03:00] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:03:45] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:03:47] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:04:57] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:04:59] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:05:44] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:05:46] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:06:56] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:06:58] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:07:43] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:07:45] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:08:55] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:08:57] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:09:42] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:09:44] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:10:54] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:10:56] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:11:41] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:11:43] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:12:53] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:12:55] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:13:40] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:13:42] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:14:52] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:14:54] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:15:39] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:15:41] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:16:51] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:16:53] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:18:03] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:18:05] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:18:50] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:18:52] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:20:02] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:20:04] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:20:49] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:20:51] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:22:01] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:22:03] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:22:47] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:22:49] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:23:59] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:24:01] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:24:46] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:24:47] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:25:57] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:25:59] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:26:44] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:26:46] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:27:56] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:27:58] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:28:42] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:28:45] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:29:55] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:29:57] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:30:41] [INFO] Connected Clients: 0
|
||||
[2025-01-02 18:30:44] [INFO] Connected Clients: 1
|
||||
[2025-01-02 18:30:47] [INFO] Connected Clients: 0
|
||||
[2025-01-02 20:42:35] [INFO] Connected Clients: 1
|
||||
[2025-01-02 20:42:35] [INFO] Connected Clients: 0
|
||||
[2025-01-02 20:43:07] [INFO] Connected Clients: 1
|
||||
[2025-01-02 20:43:14] [INFO] Connected Clients: 0
|
||||
Generated
+1253
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"axios": "^1.6.8",
|
||||
"cors": "^2.8.5",
|
||||
"express": "^4.18.2",
|
||||
"msgpack-lite": "^0.1.26",
|
||||
"readline": "^1.3.0",
|
||||
"socket.io": "^4.7.2",
|
||||
"uuid": "^9.0.1",
|
||||
"winston": "^3.13.0",
|
||||
"yaml": "^2.4.1"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
<!-- Client-side (HTML + JavaScript) -->
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Collavas - Mobile Access Denied</title>
|
||||
<link rel="shortcut icon" href="/static/img/logo.png" type="image/png">
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #f78397;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #FFF;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.logo {
|
||||
display: flex;
|
||||
justify-content: center; /* Horizontally center the content */
|
||||
align-items: center; /* Vertically center the content */
|
||||
height: 150px; /* Set a height for the container, if needed */
|
||||
margin-top: 100px;
|
||||
}
|
||||
|
||||
.logo img {
|
||||
max-width: auto;
|
||||
height: 150px;
|
||||
padding: 5px;
|
||||
/* Remove the margin: 0 auto; line */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="main">
|
||||
<div class="logo">
|
||||
<a href="">
|
||||
<img src="/static/img/logo.png" alt="Logo">
|
||||
</a>
|
||||
</div>
|
||||
<h1>COLLAVAS Web is not supported on mobile devices.</h1>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,113 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Collavas</title>
|
||||
<meta property="og:title" content="Collavas WEB">
|
||||
<meta property="og:url" content="https://www.collavas.com/">
|
||||
<meta property="og:description" content="Collavas, it's a canvas with no limitations and publicly accessible!">
|
||||
<meta property="og:image" content="/static/img/logo.png">
|
||||
<link rel="shortcut icon" href="/static/img/logo.png" type="image/png">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.js"></script>
|
||||
<script src="/static/js/mobile-UujD4m.js"></script>
|
||||
<link rel="stylesheet" href="/static/css/main-96wMDN.css">
|
||||
<link rel="stylesheet" href="/static/css/icons-UujD4m.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="main">
|
||||
<div class="messages"></div>
|
||||
<div class="top-bar">
|
||||
<div class="logo">
|
||||
<a href="">
|
||||
<img src="/static/img/logo.png" alt="Logo">
|
||||
</a>
|
||||
</div>
|
||||
<div class="menu">
|
||||
<ul>
|
||||
<li><a href="//discord.gg/wgwb6z8krC">Discord</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropbtn" style="display: flex; flex-direction: row;">Settings<svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 320 512"><style>svg{fill:#ffffff;margin-left:5px;}</style><path d="M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"/></svg></a>
|
||||
<div class="dropdown-content" id="myDropdown">
|
||||
<p>Color</p>
|
||||
<div class="color-palette">
|
||||
<input type="color" id="colorPicker" value="#000000" onchange="changeColor(event)">
|
||||
</div>
|
||||
<p>Name (press enter to save)</p>
|
||||
<input type="text" id="username" maxlength="20">
|
||||
<p id="nameStatus" style="margin-top:5px;"></p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="welcome" style="z-index:9999999;">
|
||||
<div class="message pink">
|
||||
<img src="/static/img/logo.png" style="width: 200px; height: auto;margin-left: auto;margin-right: auto;">
|
||||
<p style="white-space: nowrap;margin: 25px 50px 25px 50px">Welcome to <span id="w-version"></span></p>
|
||||
<p>Collavas is a free canvas with no rules, we allow users to draw what ever they want on our 10000x10000 canvas, viewable and editible by anyone on the web since March 19th, 2024. This project was made possible by the <a href="//aesthetiful.com/" target="_blank">Aesthetiful.com</a> infrastructure.</p>
|
||||
<p>This project is in its early stages of development, if there are any bugs please report it to our <a href="//discord.gg/wgwb6z8krC" target="_blank">Discord Server</a>.</p>
|
||||
<br><h2>v0.1.4 update</h2>
|
||||
<ul style="text-align: left;"><li>Increased chat limitations</li><li>Loading older chats</li><li>Server shutting down randomly is fixed</li></ul><br><br>
|
||||
<a href="javascript:void(0)" id="w-close"><p>close<svg height="10" width="10" style="margin: 0;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"/></svg></p></a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="transition">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
<div class="content-wrapper"> <!-- Wrap your content here -->
|
||||
<!-- Buttons for panning -->
|
||||
<div class="action-buttons">
|
||||
<button class="buttonTog" id="buttonTog" onclick="toggleOP()">Toggle UI</button>
|
||||
<button class="resetView" id="resetView" onclick="resetView()">Reset View</button>
|
||||
</div>
|
||||
<div class="chat-container">
|
||||
<div class="chat-messages">
|
||||
<ul></ul>
|
||||
</div>
|
||||
<div class="chat-input">
|
||||
<input id="chat-input" type="text" placeholder="Type to chat...">
|
||||
</div>
|
||||
</div>
|
||||
<div class="pan-buttons" id="buttons">
|
||||
<div class="top">
|
||||
<button class="up" onclick="pan('up')">Up</button>
|
||||
</div>
|
||||
<div class="middle">
|
||||
<button class="left" onclick="pan('left')">Left</button>
|
||||
<button class="right" onclick="pan('right')">Right</button>
|
||||
</div>
|
||||
<div class="base">
|
||||
<button class="down" onclick="pan('down')">Down</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clients" id="connectedClients">
|
||||
<p id="clientNum">Connected Clients: N/A</p>
|
||||
</div>
|
||||
<div class="coordinates" id="xy">
|
||||
<p>x: </p><p id="x">0</p><p>y: </p><p id="y">0</p>
|
||||
</div>
|
||||
<div class="data-size" id="data">
|
||||
<p>Size: 0MB</p>
|
||||
</div>
|
||||
<div class="ping" id="ping">
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="client-version" id="version">
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="collavas">
|
||||
<p>Collavas WEB © 2024 All rights reserved.</p>
|
||||
</div>
|
||||
<!-- Canvas container -->
|
||||
<div class="canvasWrapper">
|
||||
<div class="canvasContainer" id="canvasContainer">
|
||||
<canvas id="drawingCanvas" class="canvas-main" width="10000" height="10000"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<audio src="" id="audio-player" style="display: none;">
|
||||
</div>
|
||||
</div>
|
||||
<script src="/static/js/main-96wMDN.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
// Handle data storage and retrieval
|
||||
$dataFile = 'drawing_data.json';
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
// Handle incoming drawing data
|
||||
$currentData = json_decode(file_get_contents($dataFile), true);
|
||||
$newData = json_decode(file_get_contents('php://input'), true);
|
||||
|
||||
// Merge new data with existing data
|
||||
$currentData[] = $newData;
|
||||
|
||||
// Save the updated data
|
||||
file_put_contents($dataFile, json_encode($currentData, JSON_PRETTY_PRINT));
|
||||
echo 'Data saved successfully';
|
||||
} else {
|
||||
// Serve the HTML file
|
||||
include 'main.html';
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,104 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Canvas Drawing</title>
|
||||
<style>
|
||||
canvas {
|
||||
border: 1px solid #000;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<canvas id="drawingCanvas" width="1000" height="1000"></canvas>
|
||||
|
||||
<script>
|
||||
const canvas = document.getElementById('drawingCanvas');
|
||||
const context = canvas.getContext('2d');
|
||||
let existingData = []; // Initialize existingData
|
||||
|
||||
// Function to save drawing data to the server
|
||||
function saveDrawing(data) {
|
||||
fetch('index.php', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify(data),
|
||||
})
|
||||
.then(response => response.text())
|
||||
.then(message => console.log(message))
|
||||
.catch(error => console.error('Error saving drawing data:', error));
|
||||
}
|
||||
|
||||
// Function to draw a path on the canvas
|
||||
function drawPath(path) {
|
||||
path.forEach((point, index) => {
|
||||
if (index === 0) {
|
||||
context.beginPath(); // Start a new path
|
||||
context.moveTo(point.x, point.y);
|
||||
} else {
|
||||
context.lineTo(point.x, point.y);
|
||||
}
|
||||
context.stroke();
|
||||
});
|
||||
}
|
||||
|
||||
// Function to draw existingData on the canvas
|
||||
function drawExistingData() {
|
||||
context.clearRect(0, 0, canvas.width, canvas.height);
|
||||
existingData.forEach(path => drawPath(path));
|
||||
}
|
||||
|
||||
// Function to load existing drawing data from a JSON file
|
||||
function loadDrawing() {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', 'drawing_data.json', false); // Synchronous request
|
||||
xhr.send();
|
||||
|
||||
if (xhr.status === 200) {
|
||||
var data = JSON.parse(xhr.responseText);
|
||||
if (Array.isArray(data)) {
|
||||
existingData = data; // Update existingData
|
||||
drawExistingData(); // Draw existingData on the canvas
|
||||
} else {
|
||||
console.error('Invalid data format:', data);
|
||||
}
|
||||
} else {
|
||||
console.error('Error loading drawing data. Status:', xhr.status);
|
||||
}
|
||||
}
|
||||
|
||||
// Load existing drawing data on page load
|
||||
loadDrawing();
|
||||
|
||||
// Array to store the current drawing path
|
||||
let currentPath = [];
|
||||
|
||||
// Event listener for mouse down
|
||||
canvas.addEventListener('mousedown', (event) => {
|
||||
currentPath = [{ x: event.clientX, y: event.clientY }];
|
||||
});
|
||||
|
||||
// Event listener for mouse move
|
||||
canvas.addEventListener('mousemove', (event) => {
|
||||
if (currentPath.length > 0) {
|
||||
currentPath.push({ x: event.clientX, y: event.clientY });
|
||||
drawExistingData();
|
||||
drawPath(currentPath);
|
||||
}
|
||||
});
|
||||
|
||||
// Event listener for mouse up
|
||||
canvas.addEventListener('mouseup', () => {
|
||||
if (currentPath.length > 1) {
|
||||
existingData.push(currentPath);
|
||||
saveDrawing(existingData);
|
||||
}
|
||||
currentPath = [];
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
/*!* Font Awesome Pro 5.10.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)*/.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-abacus:before{content:"\f640"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acorn:before{content:"\f6ae"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-alarm-clock:before{content:"\f34e"}.fa-alarm-exclamation:before{content:"\f843"}.fa-alarm-plus:before{content:"\f844"}.fa-alarm-snooze:before{content:"\f845"}.fa-algolia:before{content:"\f36c"}.fa-alicorn:before{content:"\f6b0"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-align-slash:before{content:"\f846"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-analytics:before{content:"\f643"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angel:before{content:"\f779"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fLine truncated
|
||||
@@ -0,0 +1,672 @@
|
||||
:root {
|
||||
--blue: #039be5;
|
||||
--indigo: #6610f2;
|
||||
--purple: #ba68c8;
|
||||
--pink: #e83e8c;
|
||||
--red: #e3342f;
|
||||
--orange: #fd7e14;
|
||||
--yellow: #ffb300;
|
||||
--green: #00b857;
|
||||
--teal: #20c997;
|
||||
--cyan: #17a2b8;
|
||||
--white: #fff;
|
||||
--gray: #6c757d;
|
||||
--gray-dark: #343a40;
|
||||
--primary: #039be5;
|
||||
--secondary: #6c757d;
|
||||
--success: #00b857;
|
||||
--info: #ba68c8;
|
||||
--warning: #ffb300;
|
||||
--danger: #e3342f;
|
||||
--light: #f8f9fa;
|
||||
--dark: #343a40;
|
||||
--breakpoint-xs: 0;
|
||||
--breakpoint-sm: 576px;
|
||||
--breakpoint-md: 768px;
|
||||
--breakpoint-lg: 992px;
|
||||
--breakpoint-xl: 1200px;
|
||||
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
}
|
||||
|
||||
canvas {
|
||||
background: #FFF;
|
||||
width: auto;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
p {
|
||||
color: #FFF;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #FFC0CB;
|
||||
}
|
||||
|
||||
.top-bar {
|
||||
background-color: #f78397;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
|
||||
z-index: 9999999999999;
|
||||
}
|
||||
|
||||
.logo img {
|
||||
max-width: auto;
|
||||
height: 45px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.menu ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
margin-right: 20px;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.menu li {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.menu a {
|
||||
text-decoration: none;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.canvasWrapper {
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
width: 100%;
|
||||
height: calc(100vh - 65px);
|
||||
pointer-events: auto;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.canvasContainer {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.canvas-main {
|
||||
transition: opacity 0.5s ease-in, transform.translate 0.5s ease-in;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
z-index: 1;
|
||||
pointer-events: auto;
|
||||
image-rendering: pixelated;
|
||||
}
|
||||
|
||||
.pan-buttons {
|
||||
transition: 0.25s ease-in;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.pan-buttons .top {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 10%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.pan-buttons .top .up {
|
||||
height: 10vh;
|
||||
width: 25%;
|
||||
margin: 10px auto;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .top .up:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .middle {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
.pan-buttons .middle .right {
|
||||
height: 35vh;
|
||||
width: 12.5vh;
|
||||
margin-right: 10px;
|
||||
margin-left: auto;
|
||||
opacity: 25%;
|
||||
margin: 10px;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .right:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .left {
|
||||
height: 35vh;
|
||||
width: 12.5vh;
|
||||
margin-right: auto;
|
||||
margin-left: 10px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .left:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .base {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 15%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.pan-buttons .base .down {
|
||||
height: 10vh;
|
||||
width: 25%;
|
||||
margin: 25px auto;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .base .down:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons button {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.pan-buttons {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.buttonTog {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.resetView {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 70px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.chat-container {
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
width: 30%;
|
||||
height: 25%;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.chat-messages {
|
||||
height: 95%;
|
||||
opacity: 25%;
|
||||
padding: 10px;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
word-wrap: break-word;
|
||||
word-break: break-all;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.chat-messages ul {
|
||||
flex-direction: column-reverse;
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow-y: auto;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
.chat-input {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#chat-input {
|
||||
margin-top: 5px;
|
||||
width: 100%;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
#chat-input:focus {
|
||||
outline: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.buttonTog:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.resetView:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: #f9f9f9;
|
||||
min-width: 160px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.dropdown:hover .dropdown-content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
top: 45px;
|
||||
right: 1%;
|
||||
max-height: 200px;
|
||||
width: 15%;
|
||||
overflow-y: auto;
|
||||
background-color: #de7688;
|
||||
padding: 10px;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
|
||||
animation: fadeInUp 0.15s ease;
|
||||
}
|
||||
|
||||
.coordinates {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
bottom: 10px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.clients {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
bottom: 45px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.collavas {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.client-version {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 45px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.ping {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 80px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.data-size {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 115px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.coordinates p {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.messages {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
right: 50%;
|
||||
top: 0px;
|
||||
z-index: 99999999999999999999;
|
||||
}
|
||||
|
||||
.message {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 40px;
|
||||
width: auto;
|
||||
min-width: 250px;
|
||||
max-width: 750px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#welcome>.message {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
width: 1000px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.spinner,
|
||||
.spinner::before,
|
||||
.spinner::after {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 2px;
|
||||
box-shadow: -60px 10px 0 rgba(255, 255, 255, 0);
|
||||
animation: spinner 1.0s linear infinite;
|
||||
}
|
||||
|
||||
.spinner {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.spinner::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
animation-delay: -0.1s;
|
||||
}
|
||||
|
||||
.spinner::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
animation-delay: 0.1s;
|
||||
}
|
||||
|
||||
#transition {
|
||||
transition: 0.5s ease-in-out;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
color: white;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#welcome {
|
||||
transition: 0.5s ease-in-out;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
color: white;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 1;
|
||||
opacity: 0;
|
||||
display: none;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.fadeup {
|
||||
animation: fadeInUp 0.25s ease;
|
||||
}
|
||||
|
||||
.fadedown {
|
||||
opacity: 0;
|
||||
animation: fadeOutDown 0.25s ease;
|
||||
}
|
||||
|
||||
.green {
|
||||
background-color: var(--green);
|
||||
}
|
||||
|
||||
.blue {
|
||||
background-color: var(--blue);
|
||||
}
|
||||
|
||||
.indigo {
|
||||
background-color: var(--indigo);
|
||||
}
|
||||
|
||||
.purple {
|
||||
background-color: var(--purple);
|
||||
}
|
||||
|
||||
.pink {
|
||||
background-color: var(--pink);
|
||||
}
|
||||
|
||||
.red {
|
||||
background-color: var(--red);
|
||||
}
|
||||
|
||||
.orange {
|
||||
background-color: var(--orange);
|
||||
}
|
||||
|
||||
.yellow {
|
||||
background-color: var(--yellow);
|
||||
}
|
||||
|
||||
.teal {
|
||||
background-color: var(--teal);
|
||||
}
|
||||
|
||||
.cyan {
|
||||
background-color: var(--cyan);
|
||||
}
|
||||
|
||||
.white {
|
||||
background-color: var(--white);
|
||||
}
|
||||
|
||||
.gray {
|
||||
background-color: var(--gray);
|
||||
}
|
||||
|
||||
.gray-dark {
|
||||
background-color: var(--gray-dark);
|
||||
}
|
||||
|
||||
.primary {
|
||||
background-color: var(--primary);
|
||||
}
|
||||
|
||||
.secondary {
|
||||
background-color: var(--secondary);
|
||||
}
|
||||
|
||||
.success {
|
||||
background-color: var(--success);
|
||||
}
|
||||
|
||||
.info {
|
||||
background-color: var(--info);
|
||||
}
|
||||
|
||||
.warning {
|
||||
background-color: var(--warning);
|
||||
}
|
||||
|
||||
.danger {
|
||||
background-color: var(--danger);
|
||||
}
|
||||
|
||||
.light {
|
||||
background-color: var(--light);
|
||||
}
|
||||
|
||||
.dark {
|
||||
background-color: var(--dark);
|
||||
}
|
||||
|
||||
@keyframes fadeInUp {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translate3d(0, 100%, 0);
|
||||
transform: translate3d(0, 100%, 0)
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
-webkit-transform: none;
|
||||
transform: none
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fadeOutDown {
|
||||
0% {
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 0;
|
||||
-webkit-transform: translate3d(0, 100%, 0);
|
||||
transform: translate3d(0, 100%, 0)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes spinner {
|
||||
0% {
|
||||
box-shadow: -60px 10px 0 rgba(255, 255, 255, 0);
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
25% {
|
||||
box-shadow: 20px 10px 0 rgba(255, 255, 255, 1);
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
50% {
|
||||
box-shadow: 60px 10px 0 rgba(255, 255, 255, 0);
|
||||
width: 10px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,615 @@
|
||||
:root {
|
||||
--blue: #039be5;
|
||||
--indigo: #6610f2;
|
||||
--purple: #ba68c8;
|
||||
--pink: #e83e8c;
|
||||
--red: #e3342f;
|
||||
--orange: #fd7e14;
|
||||
--yellow: #ffb300;
|
||||
--green: #00b857;
|
||||
--teal: #20c997;
|
||||
--cyan: #17a2b8;
|
||||
--white: #fff;
|
||||
--gray: #6c757d;
|
||||
--gray-dark: #343a40;
|
||||
--primary: #039be5;
|
||||
--secondary: #6c757d;
|
||||
--success: #00b857;
|
||||
--info: #ba68c8;
|
||||
--warning: #ffb300;
|
||||
--danger: #e3342f;
|
||||
--light: #f8f9fa;
|
||||
--dark: #343a40;
|
||||
--breakpoint-xs: 0;
|
||||
--breakpoint-sm: 576px;
|
||||
--breakpoint-md: 768px;
|
||||
--breakpoint-lg: 992px;
|
||||
--breakpoint-xl: 1200px;
|
||||
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
}
|
||||
|
||||
canvas {
|
||||
background: #FFF;
|
||||
width: auto;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
p {
|
||||
color: #FFF;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #FFC0CB;
|
||||
}
|
||||
|
||||
.top-bar {
|
||||
background-color: #f78397;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
|
||||
z-index: 9999999999999;
|
||||
}
|
||||
|
||||
.logo img {
|
||||
max-width: auto;
|
||||
height: 45px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.menu ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
margin-right: 20px;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.menu li {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.menu a {
|
||||
text-decoration: none;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.canvasWrapper {
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
width: 100%;
|
||||
height: calc(100vh - 65px);
|
||||
pointer-events: auto;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.canvasContainer {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.canvas-main {
|
||||
transition: opacity 0.5s ease-in, transform.translate 0.5s ease-in;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
z-index: 1;
|
||||
pointer-events: auto;
|
||||
image-rendering: pixelated;
|
||||
}
|
||||
|
||||
.pan-buttons {
|
||||
transition: 0.25s ease-in;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.pan-buttons .top {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 10%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.pan-buttons .top .up {
|
||||
height: 10vh;
|
||||
width: 25%;
|
||||
margin: 10px auto;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .top .up:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .middle {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
.pan-buttons .middle .right {
|
||||
height: 35vh;
|
||||
width: 12.5vh;
|
||||
margin-right: 10px;
|
||||
margin-left: auto;
|
||||
opacity: 25%;
|
||||
margin: 10px;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .right:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .left {
|
||||
height: 35vh;
|
||||
width: 12.5vh;
|
||||
margin-right: auto;
|
||||
margin-left: 10px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .left:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .base {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 15%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.pan-buttons .base .down {
|
||||
height: 10vh;
|
||||
width: 25%;
|
||||
margin: 25px auto;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .base .down:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons button {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.pan-buttons {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.buttonTog {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.resetView {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 70px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.buttonTog:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.resetView:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: #f9f9f9;
|
||||
min-width: 160px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.dropdown:hover .dropdown-content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
top: 45px;
|
||||
right: 1%;
|
||||
max-height: 200px;
|
||||
width: 15%;
|
||||
overflow-y: auto;
|
||||
background-color: #de7688;
|
||||
padding: 10px;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
|
||||
animation: fadeInUp 0.15s ease;
|
||||
}
|
||||
|
||||
.coordinates {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
bottom: 10px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.clients {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
bottom: 45px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.collavas {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.client-version {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 45px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.ping {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 80px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.data-size {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 115px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.coordinates p {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.messages {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
right: 50%;
|
||||
top: 0px;
|
||||
z-index: 99999999999999999999;
|
||||
}
|
||||
|
||||
.message {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 40px;
|
||||
width: auto;
|
||||
min-width: 250px;
|
||||
max-width: 750px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#welcome>.message {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
width: 1000px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.spinner,
|
||||
.spinner::before,
|
||||
.spinner::after {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 2px;
|
||||
box-shadow: -60px 10px 0 rgba(255, 255, 255, 0);
|
||||
animation: spinner 1.0s linear infinite;
|
||||
}
|
||||
|
||||
.spinner {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.spinner::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
animation-delay: -0.1s;
|
||||
}
|
||||
|
||||
.spinner::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
animation-delay: 0.1s;
|
||||
}
|
||||
|
||||
#transition {
|
||||
transition: 0.5s ease-in-out;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
color: white;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#welcome {
|
||||
transition: 0.5s ease-in-out;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
color: white;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 1;
|
||||
opacity: 0;
|
||||
display: none;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.fadeup {
|
||||
animation: fadeInUp 0.25s ease;
|
||||
}
|
||||
|
||||
.fadedown {
|
||||
opacity: 0;
|
||||
animation: fadeOutDown 0.25s ease;
|
||||
}
|
||||
|
||||
.green {
|
||||
background-color: var(--green);
|
||||
}
|
||||
|
||||
.blue {
|
||||
background-color: var(--blue);
|
||||
}
|
||||
|
||||
.indigo {
|
||||
background-color: var(--indigo);
|
||||
}
|
||||
|
||||
.purple {
|
||||
background-color: var(--purple);
|
||||
}
|
||||
|
||||
.pink {
|
||||
background-color: var(--pink);
|
||||
}
|
||||
|
||||
.red {
|
||||
background-color: var(--red);
|
||||
}
|
||||
|
||||
.orange {
|
||||
background-color: var(--orange);
|
||||
}
|
||||
|
||||
.yellow {
|
||||
background-color: var(--yellow);
|
||||
}
|
||||
|
||||
.teal {
|
||||
background-color: var(--teal);
|
||||
}
|
||||
|
||||
.cyan {
|
||||
background-color: var(--cyan);
|
||||
}
|
||||
|
||||
.white {
|
||||
background-color: var(--white);
|
||||
}
|
||||
|
||||
.gray {
|
||||
background-color: var(--gray);
|
||||
}
|
||||
|
||||
.gray-dark {
|
||||
background-color: var(--gray-dark);
|
||||
}
|
||||
|
||||
.primary {
|
||||
background-color: var(--primary);
|
||||
}
|
||||
|
||||
.secondary {
|
||||
background-color: var(--secondary);
|
||||
}
|
||||
|
||||
.success {
|
||||
background-color: var(--success);
|
||||
}
|
||||
|
||||
.info {
|
||||
background-color: var(--info);
|
||||
}
|
||||
|
||||
.warning {
|
||||
background-color: var(--warning);
|
||||
}
|
||||
|
||||
.danger {
|
||||
background-color: var(--danger);
|
||||
}
|
||||
|
||||
.light {
|
||||
background-color: var(--light);
|
||||
}
|
||||
|
||||
.dark {
|
||||
background-color: var(--dark);
|
||||
}
|
||||
|
||||
@keyframes fadeInUp {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translate3d(0, 100%, 0);
|
||||
transform: translate3d(0, 100%, 0)
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
-webkit-transform: none;
|
||||
transform: none
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fadeOutDown {
|
||||
0% {
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 0;
|
||||
-webkit-transform: translate3d(0, 100%, 0);
|
||||
transform: translate3d(0, 100%, 0)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes spinner {
|
||||
0% {
|
||||
box-shadow: -60px 10px 0 rgba(255, 255, 255, 0);
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
25% {
|
||||
box-shadow: 20px 10px 0 rgba(255, 255, 255, 1);
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
50% {
|
||||
box-shadow: 60px 10px 0 rgba(255, 255, 255, 0);
|
||||
width: 10px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,669 @@
|
||||
:root {
|
||||
--blue: #039be5;
|
||||
--indigo: #6610f2;
|
||||
--purple: #ba68c8;
|
||||
--pink: #e83e8c;
|
||||
--red: #e3342f;
|
||||
--orange: #fd7e14;
|
||||
--yellow: #ffb300;
|
||||
--green: #00b857;
|
||||
--teal: #20c997;
|
||||
--cyan: #17a2b8;
|
||||
--white: #fff;
|
||||
--gray: #6c757d;
|
||||
--gray-dark: #343a40;
|
||||
--primary: #039be5;
|
||||
--secondary: #6c757d;
|
||||
--success: #00b857;
|
||||
--info: #ba68c8;
|
||||
--warning: #ffb300;
|
||||
--danger: #e3342f;
|
||||
--light: #f8f9fa;
|
||||
--dark: #343a40;
|
||||
--breakpoint-xs: 0;
|
||||
--breakpoint-sm: 576px;
|
||||
--breakpoint-md: 768px;
|
||||
--breakpoint-lg: 992px;
|
||||
--breakpoint-xl: 1200px;
|
||||
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
}
|
||||
|
||||
canvas {
|
||||
background: #FFF;
|
||||
width: auto;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
p {
|
||||
color: #FFF;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #FFC0CB;
|
||||
}
|
||||
|
||||
.top-bar {
|
||||
background-color: #f78397;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
|
||||
z-index: 9999999999999;
|
||||
}
|
||||
|
||||
.logo img {
|
||||
max-width: auto;
|
||||
height: 45px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.menu ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
margin-right: 20px;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.menu li {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.menu a {
|
||||
text-decoration: none;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.canvasWrapper {
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
width: 100%;
|
||||
height: calc(100vh - 65px);
|
||||
pointer-events: auto;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.canvasContainer {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.canvas-main {
|
||||
transition: opacity 0.5s ease-in, transform.translate 0.5s ease-in;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
z-index: 1;
|
||||
pointer-events: auto;
|
||||
image-rendering: pixelated;
|
||||
}
|
||||
|
||||
.pan-buttons {
|
||||
transition: 0.25s ease-in;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.pan-buttons .top {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 10%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.pan-buttons .top .up {
|
||||
height: 10vh;
|
||||
width: 25%;
|
||||
margin: 10px auto;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .top .up:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .middle {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
.pan-buttons .middle .right {
|
||||
height: 35vh;
|
||||
width: 12.5vh;
|
||||
margin-right: 10px;
|
||||
margin-left: auto;
|
||||
opacity: 25%;
|
||||
margin: 10px;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .right:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .left {
|
||||
height: 35vh;
|
||||
width: 12.5vh;
|
||||
margin-right: auto;
|
||||
margin-left: 10px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .left:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .base {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 15%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.pan-buttons .base .down {
|
||||
height: 10vh;
|
||||
width: 25%;
|
||||
margin: 25px auto;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .base .down:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons button {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.pan-buttons {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.buttonTog {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.resetView {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 70px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.chat-container {
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
width: 30%;
|
||||
height: 25%;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.chat-messages {
|
||||
height: 95%;
|
||||
opacity: 25%;
|
||||
padding: 10px;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.chat-messages ul {
|
||||
flex-direction: column-reverse;
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow-y: auto;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
.chat-input {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#chat-input {
|
||||
margin-top: 5px;
|
||||
width: 100%;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
#chat-input:focus {
|
||||
outline: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.buttonTog:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.resetView:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: #f9f9f9;
|
||||
min-width: 160px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.dropdown:hover .dropdown-content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
top: 45px;
|
||||
right: 1%;
|
||||
max-height: 200px;
|
||||
width: 15%;
|
||||
overflow-y: auto;
|
||||
background-color: #de7688;
|
||||
padding: 10px;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
|
||||
animation: fadeInUp 0.15s ease;
|
||||
}
|
||||
|
||||
.coordinates {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
bottom: 10px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.clients {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
bottom: 45px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.collavas {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.client-version {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 45px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.ping {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 80px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.data-size {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 115px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.coordinates p {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.messages {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
right: 50%;
|
||||
top: 0px;
|
||||
z-index: 99999999999999999999;
|
||||
}
|
||||
|
||||
.message {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 40px;
|
||||
width: auto;
|
||||
min-width: 250px;
|
||||
max-width: 750px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#welcome>.message {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
width: 1000px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.spinner,
|
||||
.spinner::before,
|
||||
.spinner::after {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 2px;
|
||||
box-shadow: -60px 10px 0 rgba(255, 255, 255, 0);
|
||||
animation: spinner 1.0s linear infinite;
|
||||
}
|
||||
|
||||
.spinner {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.spinner::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
animation-delay: -0.1s;
|
||||
}
|
||||
|
||||
.spinner::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
animation-delay: 0.1s;
|
||||
}
|
||||
|
||||
#transition {
|
||||
transition: 0.5s ease-in-out;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
color: white;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#welcome {
|
||||
transition: 0.5s ease-in-out;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
color: white;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 1;
|
||||
opacity: 0;
|
||||
display: none;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.fadeup {
|
||||
animation: fadeInUp 0.25s ease;
|
||||
}
|
||||
|
||||
.fadedown {
|
||||
opacity: 0;
|
||||
animation: fadeOutDown 0.25s ease;
|
||||
}
|
||||
|
||||
.green {
|
||||
background-color: var(--green);
|
||||
}
|
||||
|
||||
.blue {
|
||||
background-color: var(--blue);
|
||||
}
|
||||
|
||||
.indigo {
|
||||
background-color: var(--indigo);
|
||||
}
|
||||
|
||||
.purple {
|
||||
background-color: var(--purple);
|
||||
}
|
||||
|
||||
.pink {
|
||||
background-color: var(--pink);
|
||||
}
|
||||
|
||||
.red {
|
||||
background-color: var(--red);
|
||||
}
|
||||
|
||||
.orange {
|
||||
background-color: var(--orange);
|
||||
}
|
||||
|
||||
.yellow {
|
||||
background-color: var(--yellow);
|
||||
}
|
||||
|
||||
.teal {
|
||||
background-color: var(--teal);
|
||||
}
|
||||
|
||||
.cyan {
|
||||
background-color: var(--cyan);
|
||||
}
|
||||
|
||||
.white {
|
||||
background-color: var(--white);
|
||||
}
|
||||
|
||||
.gray {
|
||||
background-color: var(--gray);
|
||||
}
|
||||
|
||||
.gray-dark {
|
||||
background-color: var(--gray-dark);
|
||||
}
|
||||
|
||||
.primary {
|
||||
background-color: var(--primary);
|
||||
}
|
||||
|
||||
.secondary {
|
||||
background-color: var(--secondary);
|
||||
}
|
||||
|
||||
.success {
|
||||
background-color: var(--success);
|
||||
}
|
||||
|
||||
.info {
|
||||
background-color: var(--info);
|
||||
}
|
||||
|
||||
.warning {
|
||||
background-color: var(--warning);
|
||||
}
|
||||
|
||||
.danger {
|
||||
background-color: var(--danger);
|
||||
}
|
||||
|
||||
.light {
|
||||
background-color: var(--light);
|
||||
}
|
||||
|
||||
.dark {
|
||||
background-color: var(--dark);
|
||||
}
|
||||
|
||||
@keyframes fadeInUp {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translate3d(0, 100%, 0);
|
||||
transform: translate3d(0, 100%, 0)
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
-webkit-transform: none;
|
||||
transform: none
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fadeOutDown {
|
||||
0% {
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 0;
|
||||
-webkit-transform: translate3d(0, 100%, 0);
|
||||
transform: translate3d(0, 100%, 0)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes spinner {
|
||||
0% {
|
||||
box-shadow: -60px 10px 0 rgba(255, 255, 255, 0);
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
25% {
|
||||
box-shadow: 20px 10px 0 rgba(255, 255, 255, 1);
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
50% {
|
||||
box-shadow: 60px 10px 0 rgba(255, 255, 255, 0);
|
||||
width: 10px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,615 @@
|
||||
:root {
|
||||
--blue: #039be5;
|
||||
--indigo: #6610f2;
|
||||
--purple: #ba68c8;
|
||||
--pink: #e83e8c;
|
||||
--red: #e3342f;
|
||||
--orange: #fd7e14;
|
||||
--yellow: #ffb300;
|
||||
--green: #00b857;
|
||||
--teal: #20c997;
|
||||
--cyan: #17a2b8;
|
||||
--white: #fff;
|
||||
--gray: #6c757d;
|
||||
--gray-dark: #343a40;
|
||||
--primary: #039be5;
|
||||
--secondary: #6c757d;
|
||||
--success: #00b857;
|
||||
--info: #ba68c8;
|
||||
--warning: #ffb300;
|
||||
--danger: #e3342f;
|
||||
--light: #f8f9fa;
|
||||
--dark: #343a40;
|
||||
--breakpoint-xs: 0;
|
||||
--breakpoint-sm: 576px;
|
||||
--breakpoint-md: 768px;
|
||||
--breakpoint-lg: 992px;
|
||||
--breakpoint-xl: 1200px;
|
||||
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
}
|
||||
|
||||
canvas {
|
||||
background: #FFF;
|
||||
width: auto;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
p {
|
||||
color: #FFF;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #FFC0CB;
|
||||
}
|
||||
|
||||
.top-bar {
|
||||
background-color: #f78397;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
|
||||
z-index: 9999999999999;
|
||||
}
|
||||
|
||||
.logo img {
|
||||
max-width: auto;
|
||||
height: 45px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.menu ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
margin-right: 20px;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.menu li {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.menu a {
|
||||
text-decoration: none;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.canvasWrapper {
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
width: 100%;
|
||||
height: calc(100vh - 65px);
|
||||
pointer-events: auto;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.canvasContainer {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.canvas-main {
|
||||
transition: opacity 0.5s ease-in, transform.translate 0.5s ease-in;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
z-index: 1;
|
||||
pointer-events: auto;
|
||||
image-rendering: pixelated;
|
||||
}
|
||||
|
||||
.pan-buttons {
|
||||
transition: 0.25s ease-in;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.pan-buttons .top {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 10%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.pan-buttons .top .up {
|
||||
height: 10vh;
|
||||
width: 25%;
|
||||
margin: 10px auto;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .top .up:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .middle {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
.pan-buttons .middle .right {
|
||||
height: 35vh;
|
||||
width: 12.5vh;
|
||||
margin-right: 10px;
|
||||
margin-left: auto;
|
||||
opacity: 25%;
|
||||
margin: 10px;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .right:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .left {
|
||||
height: 35vh;
|
||||
width: 12.5vh;
|
||||
margin-right: auto;
|
||||
margin-left: 10px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .left:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .base {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 15%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.pan-buttons .base .down {
|
||||
height: 10vh;
|
||||
width: 25%;
|
||||
margin: 25px auto;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .base .down:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons button {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.pan-buttons {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.buttonTog {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.resetView {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 70px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.buttonTog:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.resetView:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: #f9f9f9;
|
||||
min-width: 160px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.dropdown:hover .dropdown-content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
top: 45px;
|
||||
right: 1%;
|
||||
max-height: 200px;
|
||||
width: 15%;
|
||||
overflow-y: auto;
|
||||
background-color: #de7688;
|
||||
padding: 10px;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
|
||||
animation: fadeInUp 0.15s ease;
|
||||
}
|
||||
|
||||
.coordinates {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
bottom: 10px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.clients {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
bottom: 45px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.collavas {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.client-version {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 45px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.ping {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 80px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.data-size {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 115px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.coordinates p {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.messages {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
right: 50%;
|
||||
top: 0px;
|
||||
z-index: 99999999999999999999;
|
||||
}
|
||||
|
||||
.message {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 40px;
|
||||
width: auto;
|
||||
min-width: 250px;
|
||||
max-width: 750px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#welcome>.message {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
width: 1000px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.spinner,
|
||||
.spinner::before,
|
||||
.spinner::after {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 2px;
|
||||
box-shadow: -60px 10px 0 rgba(255, 255, 255, 0);
|
||||
animation: spinner 1.0s linear infinite;
|
||||
}
|
||||
|
||||
.spinner {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.spinner::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
animation-delay: -0.1s;
|
||||
}
|
||||
|
||||
.spinner::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
animation-delay: 0.1s;
|
||||
}
|
||||
|
||||
#transition {
|
||||
transition: 0.5s ease-in-out;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
color: white;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#welcome {
|
||||
transition: 0.5s ease-in-out;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
color: white;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 1;
|
||||
opacity: 0;
|
||||
display: none;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.fadeup {
|
||||
animation: fadeInUp 0.25s ease;
|
||||
}
|
||||
|
||||
.fadedown {
|
||||
opacity: 0;
|
||||
animation: fadeOutDown 0.25s ease;
|
||||
}
|
||||
|
||||
.green {
|
||||
background-color: var(--green);
|
||||
}
|
||||
|
||||
.blue {
|
||||
background-color: var(--blue);
|
||||
}
|
||||
|
||||
.indigo {
|
||||
background-color: var(--indigo);
|
||||
}
|
||||
|
||||
.purple {
|
||||
background-color: var(--purple);
|
||||
}
|
||||
|
||||
.pink {
|
||||
background-color: var(--pink);
|
||||
}
|
||||
|
||||
.red {
|
||||
background-color: var(--red);
|
||||
}
|
||||
|
||||
.orange {
|
||||
background-color: var(--orange);
|
||||
}
|
||||
|
||||
.yellow {
|
||||
background-color: var(--yellow);
|
||||
}
|
||||
|
||||
.teal {
|
||||
background-color: var(--teal);
|
||||
}
|
||||
|
||||
.cyan {
|
||||
background-color: var(--cyan);
|
||||
}
|
||||
|
||||
.white {
|
||||
background-color: var(--white);
|
||||
}
|
||||
|
||||
.gray {
|
||||
background-color: var(--gray);
|
||||
}
|
||||
|
||||
.gray-dark {
|
||||
background-color: var(--gray-dark);
|
||||
}
|
||||
|
||||
.primary {
|
||||
background-color: var(--primary);
|
||||
}
|
||||
|
||||
.secondary {
|
||||
background-color: var(--secondary);
|
||||
}
|
||||
|
||||
.success {
|
||||
background-color: var(--success);
|
||||
}
|
||||
|
||||
.info {
|
||||
background-color: var(--info);
|
||||
}
|
||||
|
||||
.warning {
|
||||
background-color: var(--warning);
|
||||
}
|
||||
|
||||
.danger {
|
||||
background-color: var(--danger);
|
||||
}
|
||||
|
||||
.light {
|
||||
background-color: var(--light);
|
||||
}
|
||||
|
||||
.dark {
|
||||
background-color: var(--dark);
|
||||
}
|
||||
|
||||
@keyframes fadeInUp {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translate3d(0, 100%, 0);
|
||||
transform: translate3d(0, 100%, 0)
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
-webkit-transform: none;
|
||||
transform: none
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fadeOutDown {
|
||||
0% {
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 0;
|
||||
-webkit-transform: translate3d(0, 100%, 0);
|
||||
transform: translate3d(0, 100%, 0)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes spinner {
|
||||
0% {
|
||||
box-shadow: -60px 10px 0 rgba(255, 255, 255, 0);
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
25% {
|
||||
box-shadow: 20px 10px 0 rgba(255, 255, 255, 1);
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
50% {
|
||||
box-shadow: 60px 10px 0 rgba(255, 255, 255, 0);
|
||||
width: 10px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,601 @@
|
||||
:root {
|
||||
--blue: #039be5;
|
||||
--indigo: #6610f2;
|
||||
--purple: #ba68c8;
|
||||
--pink: #e83e8c;
|
||||
--red: #e3342f;
|
||||
--orange: #fd7e14;
|
||||
--yellow: #ffb300;
|
||||
--green: #00b857;
|
||||
--teal: #20c997;
|
||||
--cyan: #17a2b8;
|
||||
--white: #fff;
|
||||
--gray: #6c757d;
|
||||
--gray-dark: #343a40;
|
||||
--primary: #039be5;
|
||||
--secondary: #6c757d;
|
||||
--success: #00b857;
|
||||
--info: #ba68c8;
|
||||
--warning: #ffb300;
|
||||
--danger: #e3342f;
|
||||
--light: #f8f9fa;
|
||||
--dark: #343a40;
|
||||
--breakpoint-xs: 0;
|
||||
--breakpoint-sm: 576px;
|
||||
--breakpoint-md: 768px;
|
||||
--breakpoint-lg: 992px;
|
||||
--breakpoint-xl: 1200px;
|
||||
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
}
|
||||
|
||||
canvas {
|
||||
background: #FFF;
|
||||
width: auto;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
p {
|
||||
color: #FFF;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #FFC0CB;
|
||||
}
|
||||
|
||||
.top-bar {
|
||||
background-color: #f78397;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
|
||||
z-index: 9999999999999;
|
||||
}
|
||||
|
||||
.logo img {
|
||||
max-width: auto;
|
||||
height: 45px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.menu ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
margin-right: 20px;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.menu li {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.menu a {
|
||||
text-decoration: none;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.canvasWrapper {
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
width: 100%;
|
||||
height: calc(100vh - 65px);
|
||||
pointer-events: auto;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.canvasContainer {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.canvas-main {
|
||||
transition: opacity 0.5s ease-in, transform.translate 0.5s ease-in;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
z-index: 1;
|
||||
pointer-events: auto;
|
||||
image-rendering: pixelated;
|
||||
}
|
||||
|
||||
.pan-buttons {
|
||||
transition: 0.25s ease-in;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.pan-buttons .top {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 10%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.pan-buttons .top .up {
|
||||
height: 10vh;
|
||||
width: 25%;
|
||||
margin: 10px auto;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .top .up:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .middle {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
.pan-buttons .middle .right {
|
||||
height: 35vh;
|
||||
width: 12.5vh;
|
||||
margin-right: 10px;
|
||||
margin-left: auto;
|
||||
opacity: 25%;
|
||||
margin: 10px;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .right:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .left {
|
||||
height: 35vh;
|
||||
width: 12.5vh;
|
||||
margin-right: auto;
|
||||
margin-left: 10px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .middle .left:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons .base {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 15%;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.pan-buttons .base .down {
|
||||
height: 10vh;
|
||||
width: 25%;
|
||||
margin: 25px auto;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.pan-buttons .base .down:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pan-buttons button {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.pan-buttons {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.buttonTog {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.resetView {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 70px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
color: #FFF;
|
||||
border: 0px;
|
||||
border-radius: 5px;
|
||||
pointer-events: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.buttonTog:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.resetView:hover {
|
||||
opacity: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: #f9f9f9;
|
||||
min-width: 160px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.dropdown:hover .dropdown-content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
top: 45px;
|
||||
right: 1%;
|
||||
max-height: 200px;
|
||||
width: 15%;
|
||||
overflow-y: auto;
|
||||
background-color: #de7688;
|
||||
padding: 10px;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
|
||||
animation: fadeInUp 0.15s ease;
|
||||
}
|
||||
|
||||
.coordinates {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
bottom: 10px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.clients {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
bottom: 45px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.collavas {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 25%;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.client-version {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 45px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.ping {
|
||||
transition: 0.5s ease-in;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 80px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
z-index: 500;
|
||||
}
|
||||
|
||||
.coordinates p {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.messages {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
right: 50%;
|
||||
top: 0px;
|
||||
z-index: 99999999999999999999;
|
||||
}
|
||||
|
||||
.message {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 40px;
|
||||
width: auto;
|
||||
min-width: 250px;
|
||||
max-width: 750px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#welcome>.message {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
width: 1000px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.spinner,
|
||||
.spinner::before,
|
||||
.spinner::after {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 2px;
|
||||
box-shadow: -60px 10px 0 rgba(255, 255, 255, 0);
|
||||
animation: spinner 1.0s linear infinite;
|
||||
}
|
||||
|
||||
.spinner {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.spinner::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
animation-delay: -0.1s;
|
||||
}
|
||||
|
||||
.spinner::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
animation-delay: 0.1s;
|
||||
}
|
||||
|
||||
#transition {
|
||||
transition: 0.5s ease-in-out;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
color: white;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#welcome {
|
||||
transition: 0.5s ease-in-out;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
color: white;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 1;
|
||||
opacity: 0;
|
||||
display: none;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.fadeup {
|
||||
animation: fadeInUp 0.25s ease;
|
||||
}
|
||||
|
||||
.fadedown {
|
||||
opacity: 0;
|
||||
animation: fadeOutDown 0.25s ease;
|
||||
}
|
||||
|
||||
.green {
|
||||
background-color: var(--green);
|
||||
}
|
||||
|
||||
.blue {
|
||||
background-color: var(--blue);
|
||||
}
|
||||
|
||||
.indigo {
|
||||
background-color: var(--indigo);
|
||||
}
|
||||
|
||||
.purple {
|
||||
background-color: var(--purple);
|
||||
}
|
||||
|
||||
.pink {
|
||||
background-color: var(--pink);
|
||||
}
|
||||
|
||||
.red {
|
||||
background-color: var(--red);
|
||||
}
|
||||
|
||||
.orange {
|
||||
background-color: var(--orange);
|
||||
}
|
||||
|
||||
.yellow {
|
||||
background-color: var(--yellow);
|
||||
}
|
||||
|
||||
.teal {
|
||||
background-color: var(--teal);
|
||||
}
|
||||
|
||||
.cyan {
|
||||
background-color: var(--cyan);
|
||||
}
|
||||
|
||||
.white {
|
||||
background-color: var(--white);
|
||||
}
|
||||
|
||||
.gray {
|
||||
background-color: var(--gray);
|
||||
}
|
||||
|
||||
.gray-dark {
|
||||
background-color: var(--gray-dark);
|
||||
}
|
||||
|
||||
.primary {
|
||||
background-color: var(--primary);
|
||||
}
|
||||
|
||||
.secondary {
|
||||
background-color: var(--secondary);
|
||||
}
|
||||
|
||||
.success {
|
||||
background-color: var(--success);
|
||||
}
|
||||
|
||||
.info {
|
||||
background-color: var(--info);
|
||||
}
|
||||
|
||||
.warning {
|
||||
background-color: var(--warning);
|
||||
}
|
||||
|
||||
.danger {
|
||||
background-color: var(--danger);
|
||||
}
|
||||
|
||||
.light {
|
||||
background-color: var(--light);
|
||||
}
|
||||
|
||||
.dark {
|
||||
background-color: var(--dark);
|
||||
}
|
||||
|
||||
@keyframes fadeInUp {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translate3d(0, 100%, 0);
|
||||
transform: translate3d(0, 100%, 0)
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
-webkit-transform: none;
|
||||
transform: none
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fadeOutDown {
|
||||
0% {
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 0;
|
||||
-webkit-transform: translate3d(0, 100%, 0);
|
||||
transform: translate3d(0, 100%, 0)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes spinner {
|
||||
0% {
|
||||
box-shadow: -60px 10px 0 rgba(255, 255, 255, 0);
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
25% {
|
||||
box-shadow: 20px 10px 0 rgba(255, 255, 255, 1);
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
50% {
|
||||
box-shadow: 60px 10px 0 rgba(255, 255, 255, 0);
|
||||
width: 10px;
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 236 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.9 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.9 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 176 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 126 KiB |
@@ -0,0 +1,53 @@
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
const canvas = document.getElementById("canvas");
|
||||
const ctx = canvas.getContext("2d");
|
||||
const socket = new WebSocket("ws://10.0.0.132:7777"); // Change the server address
|
||||
|
||||
let drawing = false;
|
||||
|
||||
canvas.addEventListener("mousedown", startDrawing);
|
||||
canvas.addEventListener("mouseup", stopDrawing);
|
||||
canvas.addEventListener("mousemove", draw);
|
||||
|
||||
function startDrawing(e) {
|
||||
drawing = true;
|
||||
draw(e);
|
||||
}
|
||||
|
||||
function stopDrawing() {
|
||||
drawing = false;
|
||||
ctx.beginPath();
|
||||
sendDrawingData();
|
||||
}
|
||||
|
||||
function draw(e) {
|
||||
if (!drawing) return;
|
||||
|
||||
ctx.lineWidth = 2;
|
||||
ctx.lineCap = "round";
|
||||
ctx.strokeStyle = "#000";
|
||||
|
||||
ctx.lineTo(e.clientX - canvas.offsetLeft, e.clientY - canvas.offsetTop);
|
||||
ctx.stroke();
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(e.clientX - canvas.offsetLeft, e.clientY - canvas.offsetTop);
|
||||
|
||||
sendDrawingData();
|
||||
}
|
||||
|
||||
function sendDrawingData() {
|
||||
const imageData = canvas.toDataURL("image/png");
|
||||
socket.send(JSON.stringify({ type: "draw", data: imageData }));
|
||||
}
|
||||
|
||||
socket.addEventListener("message", (event) => {
|
||||
const data = JSON.parse(event.data);
|
||||
if (data.type === "draw") {
|
||||
const image = new Image();
|
||||
image.onload = function () {
|
||||
ctx.drawImage(image, 0, 0);
|
||||
};
|
||||
image.src = data.data;
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,53 @@
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
const canvas = document.getElementById("canvas");
|
||||
const ctx = canvas.getContext("2d");
|
||||
const socket = new WebSocket("ws://10.0.0.132:7777"); // Change the server address
|
||||
|
||||
let drawing = false;
|
||||
|
||||
canvas.addEventListener("mousedown", startDrawing);
|
||||
canvas.addEventListener("mouseup", stopDrawing);
|
||||
canvas.addEventListener("mousemove", draw);
|
||||
|
||||
function startDrawing(e) {
|
||||
drawing = true;
|
||||
draw(e);
|
||||
}
|
||||
|
||||
function stopDrawing() {
|
||||
drawing = false;
|
||||
ctx.beginPath();
|
||||
sendDrawingData();
|
||||
}
|
||||
|
||||
function draw(e) {
|
||||
if (!drawing) return;
|
||||
|
||||
ctx.lineWidth = 2;
|
||||
ctx.lineCap = "round";
|
||||
ctx.strokeStyle = "#000";
|
||||
|
||||
ctx.lineTo(e.clientX - canvas.offsetLeft, e.clientY - canvas.offsetTop);
|
||||
ctx.stroke();
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(e.clientX - canvas.offsetLeft, e.clientY - canvas.offsetTop);
|
||||
|
||||
sendDrawingData();
|
||||
}
|
||||
|
||||
function sendDrawingData() {
|
||||
const imageData = canvas.toDataURL("image/png");
|
||||
socket.send(JSON.stringify({ type: "draw", data: imageData }));
|
||||
}
|
||||
|
||||
socket.addEventListener("message", (event) => {
|
||||
const data = JSON.parse(event.data);
|
||||
if (data.type === "draw") {
|
||||
const image = new Image();
|
||||
image.onload = function () {
|
||||
ctx.drawImage(image, 0, 0);
|
||||
};
|
||||
image.src = data.data;
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1 @@
|
||||
const _0x4a2fee=_0x1229;(function(_0x123ba9,_0xa960f7){const _0xd79cf7=_0x1229,_0x532974=_0x123ba9();while(!![]){try{const _0x5ad226=-parseInt(_0xd79cf7(0x1b4))/(0x4be*0x2+0x26b0+-0x1*0x302b)+-parseInt(_0xd79cf7(0x27e))/(0x5e4+-0x1034+0xa52)+-parseInt(_0xd79cf7(0x125))/(0x1718+0xf*0x6f+-0x1d96)+-parseInt(_0xd79cf7(0x16e))/(-0x129*-0x5+-0x15*-0x34+-0xa0d)*(-parseInt(_0xd79cf7(0x1ff))/(-0x25dd+0x1df7+0x1*0x7eb))+parseInt(_0xd79cf7(0x1cc))/(-0x3b*-0x59+-0x1*-0x304+-0x1781*0x1)+-parseInt(_0xd79cf7(0x235))/(-0x3*-0xce2+-0x1*0x1c57+-0x4*0x292)*(parseInt(_0xd79cf7(0x250))/(0x1c+0xe62+-0xe76))+parseInt(_0xd79cf7(0x228))/(-0x2521+0x16e7+0xe43)*(parseInt(_0xd79cf7(0x1d4))/(-0x31*0x87+0x1f51+0x2*-0x2b8));if(_0x5ad226===_0xa960f7)break;else _0x532974['push'](_0x532974['shift']());}catch(_0x2827d4){_0x532974['push'](_0x532974['shift']());}}}(_0x37a6,0xa3c48+-0x672c8+0x9341a));const socket=io({'timeout':0x1f4}),canvas=document[_0x4a2fee(0x1a3)+_0x4a2fee(0x1b5)](_0x4a2fee(0x1b2)+_0x4a2fee(0x1f4)),canvasContainer=document[_0x4a2fee(0x1a3)+_0x4a2fee(0x1b5)](_0x4a2fee(0x21c)+_0x4a2fee(0x10c)),buttons=document[_0x4a2fee(0x1a3)+_0x4a2fee(0x1b5)](_0x4a2fee(0x1a7)),tx=document[_0x4a2fee(0x1a3)+_0x4a2fee(0x1b5)]('x'),ty=document[_0x4a2fee(0x1a3)+_0x4a2fee(0x1b5)]('y'),context=canvas[_0x4a2fee(0x1f6)]('2d'),chat=document[_0x4a2fee(0x25f)+_0x4a2fee(0x145)](_0x4a2fee(0x1e4)+_0x4a2fee(0x10c)),nameinput=document[_0x4a2fee(0x1a3)+_0x4a2fee(0x1b5)](_0x4a2fee(0x17c)),drawingEmitDelay=-0x295+-0x22*0x11b+0x2a1f;let lastDrawingEmitTime=0x8dd*-0x2+-0xc15+0x1*0x1dcf,drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x4a2fee(0x18e),announceCount=0x1a38+-0x17fb+-0x23c,connectionTimer=null,connectionSeconds=-0x1591+0x18ad+-0x31c,versionSet=![],ping=null,uuid='';context[_0x4a2fee(0x122)+_0x4a2fee(0x257)+'d']=!![],canvasContainer[_0x4a2fee(0x1e8)][_0x4a2fee(0x10d)]=_0x4a2fee(0x200)+')';function getCookie(_0x54774a){const _0x18c415=_0x4a2fee,_0xddc675={'ylPDb':function(_0xcc003f,_0x5d4907){return _0xcc003f===_0x5d4907;}},_0x53b042=document[_0x18c415(0x24a)][_0x18c415(0x276)](';')[_0x18c415(0x199)](_0x2450b0=>_0x2450b0[_0x18c415(0x1dc)]());for(const _0x390815 of _0x53b042){const [_0x28bbb4,_0x53fe99]=_0x390815[_0x18c415(0x276)]('=')[_0x18c415(0x199)](_0x2475af=>decodeURIComponent(_0x2475af));if(_0xddc675[_0x18c415(0x150)](_0x28bbb4,_0x54774a))return _0x53fe99;}return null;}function setCookie(_0xcac3fd,_0x1ef456,_0x239f02){const _0x351deb=_0x4a2fee,_0x19a965={'RrVEf':function(_0x37b694,_0xa41293){return _0x37b694+_0xa41293;},'KGXWL':function(_0x58e785,_0x126568){return _0x58e785+_0x126568;},'mIjog':function(_0x3e237c,_0x3f97c6){return _0x3e237c(_0x3f97c6);}},_0x4fd21e=new Date();_0x4fd21e[_0x351deb(0x24d)](_0x19a965[_0x351deb(0x14a)](_0x4fd21e[_0x351deb(0x1f1)](),_0x239f02));const _0x28b739=_0x19a965[_0x351deb(0x170)](_0x19a965[_0x351deb(0x135)](encodeURIComponent,_0x1ef456),_0x239f02?_0x351deb(0x143)+_0x4fd21e[_0x351deb(0x182)+'g']():'');document[_0x351deb(0x24a)]=_0xcac3fd+'='+_0x28b739+_0x351deb(0x23f);}function pinger(){const _0x26e25f=_0x4a2fee,_0x572823={'UksCe':function(_0x32693d,_0x4dfb5c){return _0x32693d-_0x4dfb5c;},'kRzbC':function(_0xffca32,_0x317b15){return _0xffca32+_0x317b15;},'gCKot':function(_0x3d48ee,_0x1c5e79){return _0x3d48ee+_0x1c5e79;},'mXacA':_0x26e25f(0x1fb),'llfhi':_0x26e25f(0x1c8),'DGDrD':_0x26e25f(0x175)},_0x4680bd=Date[_0x26e25f(0x1e2)](),_0x58b027=document[_0x26e25f(0x1a3)+_0x26e25f(0x1b5)](_0x572823[_0x26e25f(0x1ae)])[_0x26e25f(0x25f)+_0x26e25f(0x145)]('p');socket['on'](_0x572823[_0x26e25f(0x1be)],()=>{const _0x17db05=_0x26e25f,_0x236d1f=_0x572823[_0x17db05(0x163)](Date[_0x17db05(0x1e2)](),_0x4680bd);_0x58b027[_0x17db05(0x272)+'t']=_0x572823[_0x17db05(0x17b)](_0x572823[_0x17db05(0x11d)](_0x572823[_0x17db05(0x27a)],_0x236d1f),'ms'),document[_0x17db05(0x1a3)+_0x17db05(0x1b5)](_0x572823[_0x17db05(0x1ae)])[_0x17db05(0x1e8)][_0x17db05(0x1ad)]=-0xbe*0x13+-0x3*-0x48b+-0x1*-0x79+0.25;}),socket[_0x26e25f(0x211)](_0x572823[_0x26e25f(0x1ae)]);}ping=setInterval(pinger,0x5e6+-0x61*0x4f+-0x137*-0x17);function startConnectionTimer(){const _0x28e57e=_0x4a2fee,_0x231802={'AEakE':_0x28e57e(0x10b),'XLhFM':function(_0x2ff54d,_0x442e79){return _0x2ff54d+_0x442e79;},'xMFLc':_0x28e57e(0x17e)+_0x28e57e(0x12f)+_0x28e57e(0x245),'EFfVz':_0x28e57e(0x1cb),'cuXyx':function(_0x192a5e,_0x5f17d1){return _0x192a5e>_0x5f17d1;},'KgdWe':_0x28e57e(0x1a4)+_0x28e57e(0x1a1),'Ccvce':function(_0x3b5897,_0x4e3e43){return _0x3b5897(_0x4e3e43);},'PUXnD':_0x28e57e(0x194),'ThfMy':_0x28e57e(0x17d),'BjQZL':_0x28e57e(0x212)+_0x28e57e(0x20f),'HAIRN':_0x28e57e(0x13c),'MdJme':_0x28e57e(0x256)+_0x28e57e(0x271)+_0x28e57e(0x1d8),'aaZsi':_0x28e57e(0x1c5),'qUHvv':_0x28e57e(0x1e8),'ncSOu':_0x28e57e(0x16c)+_0x28e57e(0x21e)+_0x28e57e(0x16d)+_0x28e57e(0x240)+_0x28e57e(0x191),'ReNol':function(_0x3ba502,_0x1bd207){return _0x3ba502+_0x1bd207;},'cRztF':_0x28e57e(0x274),'YxNZd':function(_0x4dc570){return _0x4dc570();},'GslOP':function(_0x4c8333,Line truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x566993=_0x3691;(function(_0x5e08d5,_0x3442b4){const _0x59c81f=_0x3691,_0x27396b=_0x5e08d5();while(!![]){try{const _0x2bdacf=-parseInt(_0x59c81f(0xfb))/(0xb9*-0x26+0x17fe+0x379)*(parseInt(_0x59c81f(0x1ec))/(0x2342+-0x678+0x18*-0x133))+parseInt(_0x59c81f(0x14f))/(0x13*-0xd4+-0x1a12+0x29d1)*(-parseInt(_0x59c81f(0xf8))/(-0x8c8+0x6af+0x1*0x21d))+-parseInt(_0x59c81f(0x213))/(0x1*-0x12fd+0xbf5*-0x3+0xdf*0x3f)*(-parseInt(_0x59c81f(0x13f))/(-0x18f9+0x3*-0x405+-0x66*-0x5d))+-parseInt(_0x59c81f(0x191))/(-0x66+0x1c25+-0x1bb8)*(parseInt(_0x59c81f(0x123))/(0xdf*-0x19+0x1f97+-0x9c8))+-parseInt(_0x59c81f(0x1d0))/(0x1858+-0xc0c+-0x49*0x2b)*(-parseInt(_0x59c81f(0x1b5))/(0xd9d+0x1b0*-0x11+0xf1d))+parseInt(_0x59c81f(0x1dd))/(-0x772+-0x10ad+0x182a*0x1)+-parseInt(_0x59c81f(0x18a))/(0xed7+-0x163a+-0xad*-0xb)*(-parseInt(_0x59c81f(0x16c))/(0x1c93+0x1*-0x15d5+0x23b*-0x3));if(_0x2bdacf===_0x3442b4)break;else _0x27396b['push'](_0x27396b['shift']());}catch(_0x3842f2){_0x27396b['push'](_0x27396b['shift']());}}}(_0x2de7,-0xa8ce8+0x8e2f*-0xd+0x5ec02*0x4));const socket=io({'timeout':0x1f4}),canvas=document[_0x566993(0x17a)+_0x566993(0x1e1)](_0x566993(0x12d)+_0x566993(0x178)),canvasContainer=document[_0x566993(0x17a)+_0x566993(0x1e1)](_0x566993(0x20c)+_0x566993(0x174)),buttons=document[_0x566993(0x17a)+_0x566993(0x1e1)](_0x566993(0x1fe)),tx=document[_0x566993(0x17a)+_0x566993(0x1e1)]('x'),ty=document[_0x566993(0x17a)+_0x566993(0x1e1)]('y'),context=canvas[_0x566993(0x13c)]('2d');let drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x566993(0x1ff),announceCount=-0xe*0x9b+0x1*0x230c+0x1a91*-0x1,connectionTimer=null,connectionSeconds=-0x17b6*-0x1+-0x1*-0x431+0x94d*-0x3,versionSet=![],ping=null;context[_0x566993(0x1b3)+_0x566993(0x23d)+'d']=!![],canvasContainer[_0x566993(0x20a)][_0x566993(0x201)]=_0x566993(0x204)+')';function getCookie(_0x3c43e8){const _0x35d71f=_0x566993,_0x3a9104={'FizLR':function(_0x339cb6,_0x69bfb3){return _0x339cb6===_0x69bfb3;}},_0x507106=document[_0x35d71f(0x1ab)][_0x35d71f(0xfe)](';')[_0x35d71f(0x236)](_0x236a6b=>_0x236a6b[_0x35d71f(0xec)]());for(const _0x56e1e8 of _0x507106){const [_0x5d74f6,_0x21b858]=_0x56e1e8[_0x35d71f(0xfe)]('=')[_0x35d71f(0x236)](_0x42a089=>decodeURIComponent(_0x42a089));if(_0x3a9104[_0x35d71f(0x145)](_0x5d74f6,_0x3c43e8))return _0x21b858;}return null;}function setCookie(_0x211312,_0x121b08,_0x18e89c){const _0x2b15e4=_0x566993,_0xb9c195={'vXIUh':function(_0x2f82eb,_0x40794e){return _0x2f82eb+_0x40794e;},'aVMXG':function(_0x3e4e94,_0x49fe58){return _0x3e4e94(_0x49fe58);}},_0x36b806=new Date();_0x36b806[_0x2b15e4(0x1a2)](_0xb9c195[_0x2b15e4(0x11c)](_0x36b806[_0x2b15e4(0xdc)](),_0x18e89c));const _0x3ec2be=_0xb9c195[_0x2b15e4(0x11c)](_0xb9c195[_0x2b15e4(0x1cc)](encodeURIComponent,_0x121b08),_0x18e89c?_0x2b15e4(0x180)+_0x36b806[_0x2b15e4(0x103)+'g']():'');document[_0x2b15e4(0x1ab)]=_0x211312+'='+_0x3ec2be+_0x2b15e4(0x197);}function pinger(){const _0x58a219=_0x566993,_0x41e0f4={'NqMaX':function(_0x36163b,_0x184bd9){return _0x36163b-_0x184bd9;},'IFvDq':function(_0x2a5e37,_0x12f8db){return _0x2a5e37+_0x12f8db;},'UjZXw':_0x58a219(0x1f1),'VSSJW':_0x58a219(0x235),'duqzD':_0x58a219(0x134)},_0x1b207d=Date[_0x58a219(0x20f)](),_0x21ac38=document[_0x58a219(0x17a)+_0x58a219(0x1e1)](_0x41e0f4[_0x58a219(0x12e)])[_0x58a219(0x117)+_0x58a219(0x21a)]('p');socket['on'](_0x41e0f4[_0x58a219(0x1ae)],()=>{const _0x34e55e=_0x58a219,_0x2b3f92=_0x41e0f4[_0x34e55e(0x214)](Date[_0x34e55e(0x20f)](),_0x1b207d);_0x21ac38[_0x34e55e(0x155)+'t']=_0x41e0f4[_0x34e55e(0x1be)](_0x41e0f4[_0x34e55e(0x1be)](_0x41e0f4[_0x34e55e(0x1c0)],_0x2b3f92),'ms'),document[_0x34e55e(0x17a)+_0x34e55e(0x1e1)](_0x41e0f4[_0x34e55e(0x12e)])[_0x34e55e(0x20a)][_0x34e55e(0x142)]=-0x1b3d+0x10eb+0xa52+0.25;}),socket[_0x58a219(0x133)](_0x41e0f4[_0x58a219(0x12e)]);}ping=setInterval(pinger,-0x123*-0x15+-0x1e8a+0x1*0xa93);function startConnectionTimer(){const _0x4d3e80=_0x566993,_0x4cfcef={'PVDeP':_0x4d3e80(0x14b),'rpudV':function(_0x1b4b67,_0x597b01){return _0x1b4b67+_0x597b01;},'XAdDv':_0x4d3e80(0x15d)+_0x4d3e80(0x1fa)+_0x4d3e80(0x23c),'keHhx':_0x4d3e80(0x12a),'Ficqt':function(_0x1cf854,_0x121fcc){return _0x1cf854>_0x121fcc;},'sAQBQ':_0x4d3e80(0x102)+_0x4d3e80(0x1e2),'saUmI':function(_0x175385,_0xf3187a){return _0x175385(_0xf3187a);},'wlLDo':_0x4d3e80(0x1fb),'WpHIw':_0x4d3e80(0x1fd),'AdqEp':_0x4d3e80(0x16d)+_0x4d3e80(0x132),'pQKfs':_0x4d3e80(0x19b),'qnnwq':_0x4d3e80(0x159)+_0x4d3e80(0x1de)+_0x4d3e80(0xfa),'gBdxr':_0x4d3e80(0x1cd),'wOBfK':_0x4d3e80(0x20a),'sfGne':_0x4d3e80(0x13b)+_0x4d3e80(0x101)+_0x4d3e80(0xf4)+_0x4d3e80(0x1a8)+_0x4d3e80(0x23e),'fOWql':_0x4d3e80(0x185),'YxvXl':function(_0x5b3619){return _0x5b3619();},'KpVpS':function(_0x2d0fef,_0x5e0d54,_0x40aa92){return _0x2d0fef(_0x5e0d54,_0x40aa92);}},_0x52df69=document[_0x4d3e80(0x117)+_0x4d3e80(0x21a)](_0x4cfcef[_0x4d3e80(0x1c4)]);if(_0x4cfcef[_0x4d3e80(0x249)](_0x52df69[_0x4d3e80(0x117)+_0x4d3e80(0xe2)](_0x4cfcef[_0x4d3e80(0x1af)])[_0x4d3e80(0x122)],-0x18a*-0xLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x193ac2=_0x4207;(function(_0x2d82f6,_0x2bafde){const _0x3cd5b0=_0x4207,_0x1cdbfc=_0x2d82f6();while(!![]){try{const _0x518468=-parseInt(_0x3cd5b0(0x15d))/0x1*(parseInt(_0x3cd5b0(0x1d5))/0x2)+-parseInt(_0x3cd5b0(0x188))/0x3+-parseInt(_0x3cd5b0(0x176))/0x4+parseInt(_0x3cd5b0(0x166))/0x5+parseInt(_0x3cd5b0(0x1b5))/0x6+-parseInt(_0x3cd5b0(0x16d))/0x7*(-parseInt(_0x3cd5b0(0x177))/0x8)+parseInt(_0x3cd5b0(0x159))/0x9;if(_0x518468===_0x2bafde)break;else _0x1cdbfc['push'](_0x1cdbfc['shift']());}catch(_0x33d663){_0x1cdbfc['push'](_0x1cdbfc['shift']());}}}(_0x2bcc,0x75513));function _0x4207(_0x5cbf46,_0x13dc32){const _0x2bcc1e=_0x2bcc();return _0x4207=function(_0x4207e2,_0x21a39e){_0x4207e2=_0x4207e2-0x14e;let _0xcb52cc=_0x2bcc1e[_0x4207e2];return _0xcb52cc;},_0x4207(_0x5cbf46,_0x13dc32);}const socket=io({'timeout':0x1f4}),canvas=document[_0x193ac2(0x1c9)]('drawingCanvas'),canvasContainer=document[_0x193ac2(0x1c9)](_0x193ac2(0x1c2)),buttons=document[_0x193ac2(0x1c9)](_0x193ac2(0x19a)),tx=document[_0x193ac2(0x1c9)]('x'),ty=document[_0x193ac2(0x1c9)]('y'),context=canvas['getContext']('2d'),chat=document[_0x193ac2(0x191)](_0x193ac2(0x15c)),nameinput=document['getElementById'](_0x193ac2(0x156)),drawingEmitDelay=0x1f4;let lastDrawingEmitTime=0x0,drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x193ac2(0x1be),announceCount=0x1,connectionTimer=null,connectionSeconds=0x0,versionSet=![],ping=null,uuid='';context[_0x193ac2(0x1cd)]=!![],canvasContainer[_0x193ac2(0x1af)][_0x193ac2(0x183)]=_0x193ac2(0x1a6);function getCookie(_0x412d35){const _0x16c6c5=_0x193ac2,_0x5f2cf4=document['cookie'][_0x16c6c5(0x1c0)](';')[_0x16c6c5(0x184)](_0x9a1b9e=>_0x9a1b9e[_0x16c6c5(0x1a7)]());for(const _0x133762 of _0x5f2cf4){const [_0x1032c1,_0x13d356]=_0x133762[_0x16c6c5(0x1c0)]('=')[_0x16c6c5(0x184)](_0x56adb9=>decodeURIComponent(_0x56adb9));if(_0x1032c1===_0x412d35)return _0x13d356;}return null;}function setCookie(_0x1433a8,_0x38d8fa,_0x360b6e){const _0x16d389=_0x193ac2,_0x334096=new Date();_0x334096[_0x16d389(0x182)](_0x334096[_0x16d389(0x1c3)]()+_0x360b6e);const _0x556c96=encodeURIComponent(_0x38d8fa)+(_0x360b6e?_0x16d389(0x1d4)+_0x334096[_0x16d389(0x1d7)]():'');document[_0x16d389(0x1e1)]=_0x1433a8+'='+_0x556c96+_0x16d389(0x150);}function pinger(){const _0x230f47=_0x193ac2,_0x1124fc=Date[_0x230f47(0x1a9)](),_0x3a57a9=document[_0x230f47(0x1c9)](_0x230f47(0x1d0))[_0x230f47(0x191)]('p');socket['on'](_0x230f47(0x1a3),()=>{const _0x436db7=_0x230f47,_0x30ce96=Date['now']()-_0x1124fc;_0x3a57a9[_0x436db7(0x171)]=_0x436db7(0x193)+_0x30ce96+'ms',document['getElementById']('ping')[_0x436db7(0x1af)][_0x436db7(0x1c6)]=0.25;}),socket[_0x230f47(0x157)](_0x230f47(0x1d0));}ping=setInterval(pinger,0x3e8);function startConnectionTimer(){const _0x35641d=_0x193ac2,_0x44b94a=document['querySelector'](_0x35641d(0x19b));if(_0x44b94a[_0x35641d(0x1de)](_0x35641d(0x17c))[_0x35641d(0x1a5)]>0x0)return;clearInterval(ping);const _0x2ed1c8=document['createElement']('div');_0x2ed1c8[_0x35641d(0x172)](_0x35641d(0x19f),_0x35641d(0x1ad)),_0x2ed1c8[_0x35641d(0x172)]('id',_0x35641d(0x185)),_0x2ed1c8[_0x35641d(0x1af)][_0x35641d(0x196)]=_0x35641d(0x1b8),_0x2ed1c8[_0x35641d(0x1af)][_0x35641d(0x17d)]=_0x35641d(0x1c4);const _0x41e904=document['createElement']('p');_0x41e904[_0x35641d(0x172)]('id',_0x35641d(0x15e)),_0x41e904[_0x35641d(0x172)](_0x35641d(0x1af),_0x35641d(0x19d)),_0x41e904[_0x35641d(0x171)]=_0x35641d(0x179)+connectionSeconds[_0x35641d(0x161)](0x1),_0x2ed1c8[_0x35641d(0x187)](_0x41e904),_0x44b94a[_0x35641d(0x187)](_0x2ed1c8),canvas['style'][_0x35641d(0x1c6)]=0x0,buttons[_0x35641d(0x1af)]['opacity']=0x0,canvas[_0x35641d(0x1b9)][_0x35641d(0x1b0)]('fadedown'),drawings=[],currentDrawing=[],draw(),connectionTimer=setInterval(()=>{const _0x3e57e1=_0x35641d;connectionSeconds+=0.1,document['getElementById'](_0x3e57e1(0x15e))['textContent']='Server\x20Connection\x20Timeout:\x20'+connectionSeconds[_0x3e57e1(0x161)](0x1);},0x64);}function stopConnectionTimer(){const _0x3b2260=_0x193ac2;clearInterval(connectionTimer),ping=setInterval(pinger,0x3e8),connectionSeconds=0x0;const _0x52fd3e=document[_0x3b2260(0x191)]('.messages');_0x52fd3e[_0x3b2260(0x1de)](_0x3b2260(0x17c))['forEach'](_0x2c9460=>{const _0x295c2d=_0x3b2260;_0x2c9460[_0x295c2d(0x1b9)][_0x295c2d(0x1c5)]('fadeup'),_0x2c9460['classList'][_0x295c2d(0x1b0)](_0x295c2d(0x16b)),setTimeout(()=>{const _0x9af0fe=_0x295c2d;_0x2c9460[_0x9af0fe(0x1c5)]();},0x1f4);});const _0x79b9e6=document[_0x3b2260(0x160)](_0x3b2260(0x16c));_0x79b9e6[_0x3b2260(0x172)](_0x3b2260(0x19f),_0x3b2260(0x173)),_0x79b9e6[_0x3b2260(0x172)]('id','success'),_0x79b9e6['style']['boxShadow']=_0x3b2260(0x1b8),_0x79b9e6[_0x3b2260(0x172)]('style','min-width:\x20auto;');const _0x1b7c3b=document[_0x3b2260(0x160)]('p');_0x1b7c3b[_0x3b2260(0x172)]('id','timeout'),_0x1b7c3b['setAttribute'](_0x3b2260(0x1af),'white-space:\x20nowrap;margin:\x2025px\x2050px\x2025px\x2050px'),_0x1b7c3b['textContent']=_0x3b2260(0x19e),_0x79b9e6['appenLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x25730a=_0x1b1c;(function(_0x204028,_0x3a9e32){const _0x31358e=_0x1b1c,_0x4b7de=_0x204028();while(!![]){try{const _0x100fbe=parseInt(_0x31358e(0x230))/0x1*(-parseInt(_0x31358e(0x1a9))/0x2)+-parseInt(_0x31358e(0x1af))/0x3*(-parseInt(_0x31358e(0x217))/0x4)+-parseInt(_0x31358e(0x21f))/0x5*(parseInt(_0x31358e(0x1be))/0x6)+parseInt(_0x31358e(0x233))/0x7*(-parseInt(_0x31358e(0x21a))/0x8)+-parseInt(_0x31358e(0x218))/0x9*(-parseInt(_0x31358e(0x205))/0xa)+parseInt(_0x31358e(0x1d2))/0xb*(-parseInt(_0x31358e(0x1dc))/0xc)+parseInt(_0x31358e(0x1b8))/0xd*(parseInt(_0x31358e(0x1e5))/0xe);if(_0x100fbe===_0x3a9e32)break;else _0x4b7de['push'](_0x4b7de['shift']());}catch(_0x5d106c){_0x4b7de['push'](_0x4b7de['shift']());}}}(_0x4899,0xac8ed));const socket=io({'timeout':0x1f4}),canvas=document[_0x25730a(0x21b)](_0x25730a(0x1ff)),canvasContainer=document[_0x25730a(0x21b)](_0x25730a(0x1a8)),buttons=document[_0x25730a(0x21b)](_0x25730a(0x1f8)),tx=document[_0x25730a(0x21b)]('x'),ty=document[_0x25730a(0x21b)]('y'),context=canvas[_0x25730a(0x222)]('2d'),chat=document[_0x25730a(0x22e)](_0x25730a(0x1d7)),nameinput=document[_0x25730a(0x21b)](_0x25730a(0x1f4)),drawingEmitDelay=0x1f4;let lastDrawingEmitTime=0x0,drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor='#000000',announceCount=0x1,connectionTimer=null,connectionSeconds=0x0,versionSet=![],ping=null,uuid='';context[_0x25730a(0x1a5)]=!![],canvasContainer['style']['transform']=_0x25730a(0x211);function getCookie(_0x1386d8){const _0x3a95db=_0x25730a,_0x4fc9d4=document[_0x3a95db(0x204)]['split'](';')[_0x3a95db(0x1e7)](_0x409a14=>_0x409a14[_0x3a95db(0x213)]());for(const _0x448477 of _0x4fc9d4){const [_0x2095c8,_0x46f5fa]=_0x448477['split']('=')[_0x3a95db(0x1e7)](_0x203fe1=>decodeURIComponent(_0x203fe1));if(_0x2095c8===_0x1386d8)return _0x46f5fa;}return null;}function setCookie(_0x15e2a5,_0x3d0e3b,_0x2e634a){const _0x1c0ff7=_0x25730a,_0x5a1c27=new Date();_0x5a1c27[_0x1c0ff7(0x1b0)](_0x5a1c27['getDate']()+_0x2e634a);const _0x1cb1c3=encodeURIComponent(_0x3d0e3b)+(_0x2e634a?_0x1c0ff7(0x206)+_0x5a1c27[_0x1c0ff7(0x1ac)]():'');document[_0x1c0ff7(0x204)]=_0x15e2a5+'='+_0x1cb1c3+_0x1c0ff7(0x20f);}function pinger(){const _0x377bfb=_0x25730a,_0x3e1eb1=Date[_0x377bfb(0x1f5)](),_0x3635ae=document[_0x377bfb(0x21b)](_0x377bfb(0x220))['querySelector']('p');socket['on'](_0x377bfb(0x1d6),()=>{const _0x2b7ae8=_0x377bfb,_0x5625ec=Date[_0x2b7ae8(0x1f5)]()-_0x3e1eb1;_0x3635ae[_0x2b7ae8(0x1e3)]=_0x2b7ae8(0x1b7)+_0x5625ec+'ms',document[_0x2b7ae8(0x21b)](_0x2b7ae8(0x220))['style']['opacity']=0.25;}),socket[_0x377bfb(0x209)](_0x377bfb(0x220));}ping=setInterval(pinger,0x3e8);function startConnectionTimer(){const _0x3c2065=_0x25730a,_0x36380b=document['querySelector'](_0x3c2065(0x19f));if(_0x36380b[_0x3c2065(0x1e0)]('[id=\x22connection\x22]')[_0x3c2065(0x1c8)]>0x0)return;clearInterval(ping);const _0x3ff475=document['createElement']('div');_0x3ff475[_0x3c2065(0x232)](_0x3c2065(0x1ad),_0x3c2065(0x1a7)),_0x3ff475['setAttribute']('id',_0x3c2065(0x1ec)),_0x3ff475[_0x3c2065(0x226)]['boxShadow']=_0x3c2065(0x221),_0x3ff475['style']['width']=_0x3c2065(0x1ae);const _0x5c5c63=document[_0x3c2065(0x219)]('p');_0x5c5c63[_0x3c2065(0x232)]('id',_0x3c2065(0x216)),_0x5c5c63[_0x3c2065(0x232)](_0x3c2065(0x226),_0x3c2065(0x210)),_0x5c5c63[_0x3c2065(0x1e3)]=_0x3c2065(0x1c9)+connectionSeconds[_0x3c2065(0x1df)](0x1),_0x3ff475[_0x3c2065(0x1b1)](_0x5c5c63),_0x36380b[_0x3c2065(0x1b1)](_0x3ff475),canvas['style'][_0x3c2065(0x1cc)]=0x0,buttons['style']['opacity']=0x0,canvas[_0x3c2065(0x1ce)][_0x3c2065(0x208)]('fadedown'),drawings=[],currentDrawing=[],draw(),connectionTimer=setInterval(()=>{const _0x51aaf8=_0x3c2065;connectionSeconds+=0.1,document[_0x51aaf8(0x21b)]('timeout')[_0x51aaf8(0x1e3)]=_0x51aaf8(0x1c9)+connectionSeconds['toFixed'](0x1);},0x64);}function stopConnectionTimer(){const _0x5761a3=_0x25730a;clearInterval(connectionTimer),ping=setInterval(pinger,0x3e8),connectionSeconds=0x0;const _0x5e0b04=document['querySelector'](_0x5761a3(0x19f));_0x5e0b04['querySelectorAll'](_0x5761a3(0x1c0))['forEach'](_0x15f789=>{const _0x3b1179=_0x5761a3;_0x15f789[_0x3b1179(0x1ce)][_0x3b1179(0x1d8)](_0x3b1179(0x207)),_0x15f789[_0x3b1179(0x1ce)]['add'](_0x3b1179(0x1a1)),setTimeout(()=>{const _0x2ee7a0=_0x3b1179;_0x15f789[_0x2ee7a0(0x1d8)]();},0x1f4);});const _0x5c4498=document['createElement'](_0x5761a3(0x1a4));_0x5c4498[_0x5761a3(0x232)]('class',_0x5761a3(0x227)),_0x5c4498[_0x5761a3(0x232)]('id',_0x5761a3(0x1ee)),_0x5c4498[_0x5761a3(0x226)]['boxShadow']='0\x204px\x208px\x20rgba(0,\x200,\x200,\x200.1)',_0x5c4498[_0x5761a3(0x232)]('style',_0x5761a3(0x1d4));const _0x347d4c=document[_0x5761a3(0x219)]('p');_0x347d4c['setAttribute']('id','timeout'),_0x347d4c[_0x5761a3(0x232)](_0x5761a3(0x226),'white-space:\x20nowrap;margin:\x2025px\x2050px\x2025px\x2050px'),_0x347d4c['textContent']='Server\x20connection\x20has\x20been\x20restored',_0x5c4498[_0x5761a3(0x1b1)](_0x347d4c),_0x5e0b04[_0x5761a3(0x1b1)](_0x5c4498),canvasLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x48cc39=_0x4090;function _0x4090(_0x41fd09,_0x4186df){const _0x3c7860=_0x28df();return _0x4090=function(_0x39a555,_0x6b286d){_0x39a555=_0x39a555-(0x19f8+-0x1*-0x1747+-0x30d9);let _0x26c937=_0x3c7860[_0x39a555];return _0x26c937;},_0x4090(_0x41fd09,_0x4186df);}(function(_0x418212,_0x224980){const _0x16eaf2=_0x4090,_0xd4aea2=_0x418212();while(!![]){try{const _0x5b048c=-parseInt(_0x16eaf2(0x15c))/(-0x17c+-0x129*0x2+0x3cf)+-parseInt(_0x16eaf2(0xeb))/(0x1f66*-0x1+0x3b*0x68+0x110*0x7)+parseInt(_0x16eaf2(0xf6))/(0x4c2+0x896+-0xd55*0x1)+-parseInt(_0x16eaf2(0xc1))/(0x1af8+0x374*-0xb+0xb08)+parseInt(_0x16eaf2(0x170))/(0x16a5+0x5d8+-0x1c78)+-parseInt(_0x16eaf2(0x179))/(0x1a7e+0x1d05+-0x377d)*(-parseInt(_0x16eaf2(0x93))/(-0x6*0x1be+0xdb*0x2+0x5*0x1c1))+-parseInt(_0x16eaf2(0x165))/(0x219a+0x116*-0x1e+0xfe*-0x1)*(-parseInt(_0x16eaf2(0x1a5))/(0x1e83+0x23fd+-0x4277));if(_0x5b048c===_0x224980)break;else _0xd4aea2['push'](_0xd4aea2['shift']());}catch(_0x44f173){_0xd4aea2['push'](_0xd4aea2['shift']());}}}(_0x28df,0x28790+0x2cbff+-0x15a*0x1fc));const socket=io({'timeout':0x1f4}),canvas=document[_0x48cc39(0x8d)+_0x48cc39(0x1b0)](_0x48cc39(0x70)+_0x48cc39(0x1b2)),canvasContainer=document[_0x48cc39(0x8d)+_0x48cc39(0x1b0)](_0x48cc39(0x198)+_0x48cc39(0x1d2)),buttons=document[_0x48cc39(0x8d)+_0x48cc39(0x1b0)](_0x48cc39(0x75)),tx=document[_0x48cc39(0x8d)+_0x48cc39(0x1b0)]('x'),ty=document[_0x48cc39(0x8d)+_0x48cc39(0x1b0)]('y'),context=canvas[_0x48cc39(0x18a)]('2d'),chat=document[_0x48cc39(0x148)+_0x48cc39(0xe6)](_0x48cc39(0xc9)+_0x48cc39(0x1d2)),nameinput=document[_0x48cc39(0x8d)+_0x48cc39(0x1b0)](_0x48cc39(0xdf)),drawingEmitDelay=-0xfa4+-0xcd*-0x8+0x10*0xb3;let lastDrawingEmitTime=-0x24fc+-0x1196*-0x1+-0x17e*-0xd,drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x48cc39(0xa0),announceCount=-0xb7f+0x2d6+0x8aa,connectionTimer=null,connectionSeconds=0x1*0x247+0x1e13+-0xca*0x29,versionSet=![],ping=null,uuid='';context[_0x48cc39(0xa5)+_0x48cc39(0xc6)+'d']=!![],canvasContainer[_0x48cc39(0x163)][_0x48cc39(0x7e)]=_0x48cc39(0x171)+')';function getCookie(_0x3ae658){const _0x2eac29=_0x48cc39,_0x5b2f8a={'bTvuY':function(_0x112c56,_0x3ff993){return _0x112c56===_0x3ff993;}},_0x44ab15=document[_0x2eac29(0x15f)][_0x2eac29(0x12e)](';')[_0x2eac29(0x10d)](_0x3257fe=>_0x3257fe[_0x2eac29(0xfe)]());for(const _0x443dce of _0x44ab15){const [_0x4dc3a0,_0x4df85c]=_0x443dce[_0x2eac29(0x12e)]('=')[_0x2eac29(0x10d)](_0x208f17=>decodeURIComponent(_0x208f17));if(_0x5b2f8a[_0x2eac29(0x1b5)](_0x4dc3a0,_0x3ae658))return _0x4df85c;}return null;}function setCookie(_0x3ce520,_0x3f7d89,_0x366196){const _0x142beb=_0x48cc39,_0x4967c5={'SuVPB':function(_0x1c163e,_0x2bce44){return _0x1c163e+_0x2bce44;},'YohXc':function(_0x125d2c,_0x1de347){return _0x125d2c+_0x1de347;},'COOZj':function(_0x42028e,_0x41bc9e){return _0x42028e(_0x41bc9e);}},_0x36dd31=new Date();_0x36dd31[_0x142beb(0x7d)](_0x4967c5[_0x142beb(0x1bd)](_0x36dd31[_0x142beb(0x1cd)](),_0x366196));const _0x95d2ef=_0x4967c5[_0x142beb(0xea)](_0x4967c5[_0x142beb(0xcd)](encodeURIComponent,_0x3f7d89),_0x366196?_0x142beb(0x157)+_0x36dd31[_0x142beb(0x120)+'g']():'');document[_0x142beb(0x15f)]=_0x3ce520+'='+_0x95d2ef+_0x142beb(0x144);}function pinger(){const _0x4f4975=_0x48cc39,_0x4c41b7={'KPpea':function(_0x303132,_0xde0de){return _0x303132-_0xde0de;},'PuVnw':function(_0x16f067,_0x4985c9){return _0x16f067+_0x4985c9;},'ZqEoG':function(_0x501f0e,_0x13d5bb){return _0x501f0e+_0x13d5bb;},'OLrvM':_0x4f4975(0x1ab),'Xwrbt':_0x4f4975(0xac),'lmlgf':_0x4f4975(0x101)},_0x1ce1ec=Date[_0x4f4975(0x17f)](),_0x59c19f=document[_0x4f4975(0x8d)+_0x4f4975(0x1b0)](_0x4c41b7[_0x4f4975(0x111)])[_0x4f4975(0x148)+_0x4f4975(0xe6)]('p');socket['on'](_0x4c41b7[_0x4f4975(0x1a4)],()=>{const _0x12b4cd=_0x4f4975,_0x59263c=_0x4c41b7[_0x12b4cd(0xec)](Date[_0x12b4cd(0x17f)](),_0x1ce1ec);_0x59c19f[_0x12b4cd(0xd1)+'t']=_0x4c41b7[_0x12b4cd(0x174)](_0x4c41b7[_0x12b4cd(0xcc)](_0x4c41b7[_0x12b4cd(0x191)],_0x59263c),'ms'),document[_0x12b4cd(0x8d)+_0x12b4cd(0x1b0)](_0x4c41b7[_0x12b4cd(0x111)])[_0x12b4cd(0x163)][_0x12b4cd(0x96)]=0x14f9+0x1f1+-0x1*0x16ea+0.25;}),socket[_0x4f4975(0xb0)](_0x4c41b7[_0x4f4975(0x111)]);}ping=setInterval(pinger,0x19b1*0x1+0x2635+-0x3bfe);function startConnectionTimer(){const _0x1630f9=_0x48cc39,_0xfbb133={'iZsFP':_0x1630f9(0xae),'zTuCA':function(_0x216271,_0xb844e8){return _0x216271+_0xb844e8;},'qMkby':_0x1630f9(0x1c2)+_0x1630f9(0x176)+_0x1630f9(0x139),'mrFkY':_0x1630f9(0xda),'SYZUN':function(_0x10e1bd,_0x6636c2){return _0x10e1bd>_0x6636c2;},'zlBEQ':_0x1630f9(0x1b3)+_0x1630f9(0x167),'ynjnl':function(_0x1b382b,_0xd4f860){return _0x1b382b(_0xd4f860);},'cTeRm':_0x1630f9(0x14f),'aJPdN':_0x1630f9(0x6b),'BymmR':_0x1630f9(0x10e)+_0x1630f9(0x172),'gnPiP':_0x1630f9(0x14d),'FxZXK':_0x1630f9(0xbd)+_0x1630f9(0x81)+_0x1630f9(0x12b),'BiwtI':_0x1630f9(0x105),'OkThf':_0x1630f9(0x163),'rSpTp':_0x1630f9(0x16f)+_0x1630f9(0x1cc)+_0x1630f9(0x11e)+_0x1630f9(0xfa)+_0x1630f9(0x6d),'lUbao':function(_0x3be944,_0x2c3a82)Line truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x467e64=_0x28ea;(function(_0x144a54,_0x2ca07b){const _0x117221=_0x28ea,_0x53aaf0=_0x144a54();while(!![]){try{const _0x648510=-parseInt(_0x117221(0x210))/(0x1ab8+-0x3c5*0x1+-0x16f2*0x1)+-parseInt(_0x117221(0x1dc))/(-0xfb1+-0x3*-0x117+-0x637*-0x2)+-parseInt(_0x117221(0x246))/(-0x1*0x2311+-0xec2+-0x2*-0x18eb)+parseInt(_0x117221(0x239))/(-0x1*-0x1552+0x1690+-0x1*0x2bde)+parseInt(_0x117221(0x1fb))/(0x1ef0+-0x14a3+-0x292*0x4)*(parseInt(_0x117221(0x29b))/(0x9eb+0x1f*-0x97+-0x166*-0x6))+parseInt(_0x117221(0x1ee))/(-0xc47*-0x2+-0x11bb+0x91*-0xc)+parseInt(_0x117221(0x1bd))/(0x2*-0xfd4+-0x14e*0x16+0x2*0x1e32)*(-parseInt(_0x117221(0x20f))/(-0xed*-0x3+0xc0e+0x1*-0xecc));if(_0x648510===_0x2ca07b)break;else _0x53aaf0['push'](_0x53aaf0['shift']());}catch(_0x40d907){_0x53aaf0['push'](_0x53aaf0['shift']());}}}(_0x10da,-0x1*0x1367b6+-0x1e4d2*0x6+-0x1*-0x2d50dd));const socket=io({'timeout':0x1f4}),canvas=document[_0x467e64(0x175)+_0x467e64(0x191)](_0x467e64(0x1cd)+_0x467e64(0x1fa)),canvasContainer=document[_0x467e64(0x175)+_0x467e64(0x191)](_0x467e64(0x28a)+_0x467e64(0x24a)),buttons=document[_0x467e64(0x175)+_0x467e64(0x191)](_0x467e64(0x1d9)),tx=document[_0x467e64(0x175)+_0x467e64(0x191)]('x'),ty=document[_0x467e64(0x175)+_0x467e64(0x191)]('y'),context=canvas[_0x467e64(0x22e)]('2d'),chat=document[_0x467e64(0x20e)+_0x467e64(0x245)](_0x467e64(0x28e)+_0x467e64(0x24a)),nameinput=document[_0x467e64(0x175)+_0x467e64(0x191)](_0x467e64(0x218)),drawingEmitDelay=-0x809+0x4e1*-0x2+0x13bf;let lastDrawingEmitTime=0x75f+-0x2392+-0x1*-0x1c33,drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x467e64(0x168),announceCount=-0x16d9+0xe2f+0x8ab,connectionTimer=null,connectionSeconds=0xdd6+0x11*0x139+-0x1*0x229f,versionSet=![],ping=null,uuid='';context[_0x467e64(0x293)+_0x467e64(0x149)+'d']=!![],canvasContainer[_0x467e64(0x13d)][_0x467e64(0x197)]=_0x467e64(0x25c)+')';function getCookie(_0x51627e){const _0x141984=_0x467e64,_0x29f583={'qLajc':function(_0x1fa865,_0x4ff392){return _0x1fa865===_0x4ff392;}},_0xe7ea54=document[_0x141984(0x2ac)][_0x141984(0x2a8)](';')[_0x141984(0x240)](_0x5085be=>_0x5085be[_0x141984(0x29c)]());for(const _0x327101 of _0xe7ea54){const [_0x1fff25,_0x407d45]=_0x327101[_0x141984(0x2a8)]('=')[_0x141984(0x240)](_0x629cae=>decodeURIComponent(_0x629cae));if(_0x29f583[_0x141984(0x26e)](_0x1fff25,_0x51627e))return _0x407d45;}return null;}function setCookie(_0x34516a,_0x3d72ea,_0x4fe7cb){const _0x3763d9=_0x467e64,_0x531ef1={'aNNbF':function(_0x5843b4,_0x57f3b0){return _0x5843b4+_0x57f3b0;},'NMjcl':function(_0x79a502,_0x59c4a6){return _0x79a502+_0x59c4a6;},'esMnW':function(_0x452602,_0x7296bf){return _0x452602(_0x7296bf);}},_0x4ff8b0=new Date();_0x4ff8b0[_0x3763d9(0x269)](_0x531ef1[_0x3763d9(0x22d)](_0x4ff8b0[_0x3763d9(0x21f)](),_0x4fe7cb));const _0x4fc44a=_0x531ef1[_0x3763d9(0x19e)](_0x531ef1[_0x3763d9(0x290)](encodeURIComponent,_0x3d72ea),_0x4fe7cb?_0x3763d9(0x22c)+_0x4ff8b0[_0x3763d9(0x254)+'g']():'');document[_0x3763d9(0x2ac)]=_0x34516a+'='+_0x4fc44a+_0x3763d9(0x14a);}function pinger(){const _0x508151=_0x467e64,_0x4db98a={'pHDdc':function(_0x311340,_0x21935){return _0x311340-_0x21935;},'ECudl':function(_0x34fddc,_0x21c4f1){return _0x34fddc+_0x21c4f1;},'XceLR':_0x508151(0x158),'gjAfU':_0x508151(0x287),'kVHrC':_0x508151(0x1e7)},_0xeb12ce=Date[_0x508151(0x18e)](),_0x30c576=document[_0x508151(0x175)+_0x508151(0x191)](_0x4db98a[_0x508151(0x203)])[_0x508151(0x20e)+_0x508151(0x245)]('p');socket['on'](_0x4db98a[_0x508151(0x283)],()=>{const _0x1377b8=_0x508151,_0xd335ad=_0x4db98a[_0x1377b8(0x1a1)](Date[_0x1377b8(0x18e)](),_0xeb12ce);_0x30c576[_0x1377b8(0x198)+'t']=_0x4db98a[_0x1377b8(0x188)](_0x4db98a[_0x1377b8(0x188)](_0x4db98a[_0x1377b8(0x27e)],_0xd335ad),'ms'),document[_0x1377b8(0x175)+_0x1377b8(0x191)](_0x4db98a[_0x1377b8(0x203)])[_0x1377b8(0x13d)][_0x1377b8(0x17b)]=-0x20ed+0x15b*0x19+-0x1*0xf6+0.25;}),socket[_0x508151(0x1b7)](_0x4db98a[_0x508151(0x203)]);}ping=setInterval(pinger,0x1f1b+0xfaf+-0x2ae2);function startConnectionTimer(){const _0x92bc45=_0x467e64,_0x4fcbb={'cQxfC':_0x92bc45(0x15c),'EJNVd':function(_0x3826b0,_0x5b9ff6){return _0x3826b0+_0x5b9ff6;},'Uocjj':_0x92bc45(0x205)+_0x92bc45(0x243)+_0x92bc45(0x16a),'FvLvB':_0x92bc45(0x1eb),'EIPeF':function(_0x3c1124,_0x33b2f7){return _0x3c1124>_0x33b2f7;},'UJxyz':_0x92bc45(0x1c2)+_0x92bc45(0x257),'tQpmA':function(_0xca1d86,_0x212094){return _0xca1d86(_0x212094);},'LMGqB':_0x92bc45(0x1aa),'aMdnz':_0x92bc45(0x166),'TGTkS':_0x92bc45(0x224)+_0x92bc45(0x1c9),'nuCAK':_0x92bc45(0x23c),'lLrrb':_0x92bc45(0x251)+_0x92bc45(0x261)+_0x92bc45(0x1d0),'nGtPr':_0x92bc45(0x249),'SXYMj':_0x92bc45(0x13d),'FVKAB':_0x92bc45(0x1a3)+_0x92bc45(0x292)+_0x92bc45(0x24c)+_0x92bc45(0x1b1)+_0x92bc45(0x26d),'SqxPl':function(_0x498ef2,_0x3a7ec4){return _0x498ef2+_0x3a7ec4;},'IRcxy':_0x92bc45(0x1a8),'affoX':function(_0x22d9a0){return _0x22d9a0();},'GHiDM':function(_0x36ae97,_0x8009cf,_0x5a00a3){return _0x36ae97(_0x8009cf,_0x5a00a3);}},_0x2d38e4=document[_0x92bc45(0x2Line truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x2c7fc4=_0x3cf4;(function(_0x3b3e54,_0x94af4c){const _0x50809f=_0x3cf4,_0x5726d0=_0x3b3e54();while(!![]){try{const _0x17971b=-parseInt(_0x50809f(0x255))/(-0x1ccf+0x1f85+-0x2b5)*(-parseInt(_0x50809f(0x223))/(-0x114a+-0xd8d+0x1ed9))+-parseInt(_0x50809f(0x1a9))/(0x1df4+-0x2683*0x1+0x892)*(-parseInt(_0x50809f(0x241))/(0xb1*-0x21+0x2033+-0x95e))+parseInt(_0x50809f(0x2a6))/(-0x3*0x3f7+0x2137+0x13*-0x11f)+parseInt(_0x50809f(0x283))/(0x1095+0x18f2+0x271*-0x11)*(-parseInt(_0x50809f(0x250))/(-0x25*0x100+-0x1*-0x1a33+-0x84*-0x15))+-parseInt(_0x50809f(0x1b1))/(-0x12*0x1d9+-0x1*-0x134a+0x1*0xe00)*(parseInt(_0x50809f(0x17f))/(0x29*-0x9+0x8a5+-0x72b))+-parseInt(_0x50809f(0x1d1))/(0xf48+-0x10f+-0x1*0xe2f)+parseInt(_0x50809f(0x27f))/(-0x24f2+-0x1d75+0x17a*0x2d)*(-parseInt(_0x50809f(0x16d))/(-0x1*0x1f0c+0x1*-0xfd3+0x2eeb));if(_0x17971b===_0x94af4c)break;else _0x5726d0['push'](_0x5726d0['shift']());}catch(_0x36c0c0){_0x5726d0['push'](_0x5726d0['shift']());}}}(_0xbd80,0x2*0x8d26+0x3f7dd*-0x1+0xafa15));const socket=io({'timeout':0x1f4}),canvas=document[_0x2c7fc4(0x173)+_0x2c7fc4(0x1db)](_0x2c7fc4(0x217)+_0x2c7fc4(0x175)),canvasContainer=document[_0x2c7fc4(0x173)+_0x2c7fc4(0x1db)](_0x2c7fc4(0x212)+_0x2c7fc4(0x2ce)),buttons=document[_0x2c7fc4(0x173)+_0x2c7fc4(0x1db)](_0x2c7fc4(0x1ac)),tx=document[_0x2c7fc4(0x173)+_0x2c7fc4(0x1db)]('x'),ty=document[_0x2c7fc4(0x173)+_0x2c7fc4(0x1db)]('y'),context=canvas[_0x2c7fc4(0x27d)]('2d');let drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x2c7fc4(0x1f5),announceCount=-0x57c+0x1*-0x166c+-0x1be9*-0x1,connectionTimer=null,connectionSeconds=-0x1*-0x1f87+-0x2546+0x5bf*0x1,versionSet=![],ping=null;function _0xbd80(){const _0x4277b8=['toFixed','QcpOo','OrhKY','px\x2050px\x2025','OvUwT','opacity','jpkSR','gtzww','rivDA','NGEvZ','message','ent','ArrowDown','XIclS','aTRRD','dUpfd','transform','LfvpN','e:\x20nowrap;','addEventLi','HgdVF','Ping:\x20','KlOTi','awings','Clients:\x20','rctDW','pStOP','XglEh','GSlol','getContext','pEyip','8063aaxbWs','IIRHi','width','InjCm','6OHyHmp','vKFmL','px\x2050px','clientNum','tQjya','NTEyZ','ArrowUp','reload','Collavas\x20v','audio','iflAb','Fapws','zdjDc','visibility','rOHnv','min-width:','mouseleave','xWson','size','classList','cUXCC','LjgkY','w-close','left','rrently\x20be','forEach','visited','FGzpZ','getBoundin','drawing','now','map','deltaY','jpTvU','AdOqM','4917125YiDANb','lSTZx','QWtBq','jHJYc','YtkIP','wheel','value','VRJLp','2|4|0|3|1','toUTCStrin','cvHqz','qbHCL',';\x20path=/','Qrhil','hingEnable','style','AfcGS','target','dRGTB','0\x204px\x208px\x20','moveTo','3|0|1|2|4','mouseup','ZzQYr','.messages','success','draw','kxSHN','KGvEo','connect_er','UUTzS','audio-play','0|3|4','transition','qrJqZ','KQrxK','You\x20are\x20cu','timeout','connect','IfoHs','ainer','rgba(0,\x200,','xlAqE','hsgSq','fpWsL','mited','nection\x20ha','gGbyq','w-version','textConten','EBhld','vWBTL','div','XNQqH','4044OsRTqx','ZVlmt','JjiKW','AoLkp','1|5|2|0|3|','e:\x20normal;','getElement','Jtzmt','vas','\x20auto;','trim','odIJI','LCicp','pause','SjcSW','mousedown','yzPqS','qKZaf','9izFecw','XDksj','welcome','getDate','LKrlb','jpGmm','hstDx','VDdcF','EObyU','s\x20been\x20res','ArrowLeft','JpbGD','IHVUn','BtDac','cntLn','htRmL','tored','none','announceme','bZswb','Dvbiy','scale(0.08','DIOiI','IDqFE','VZPQq','connect_ti','drawLimit','PjfkG','clientY','querySelec','lineTo','wmXqx','OOXZY','setDate','clientX','SJzKG','TJERA','cookie','bjNiT','meout','connectedC','doSkm','1956nTwgnn','emit','gGePo','buttons','hidden','fadedown','click','xnOyP','7641016uZYgmO','rjkMW','white-spac','acmYg','tor','translate(','nection\x20Ti','clearRect','pong','TYhIM','height','UIYGd','keydown','flex','iNqEU','ArrowRight','version','hpSLW','nvQow','flXle','HcLvw','zsusB','JnMBs','Size:\x20','KNkuZ','VSQYM','[id=\x22conne','lients','fadeup','stroke','createElem','data','5196310ekYBcy','jVBTz','innerHTML','MBwPH','rxyLw','gepgO','rgyoe','GTFwr','PFZnF','src','ById','stop','QFVwm','title','mousemove','sIRho','ping','Connected\x20','PiCNG','rKpGs','gJUWW','top','add','connection','deup\x20','EUzfu','jTWYg','Version:\x20','300px','TDHRg','message\x20fa','zksJZ','QYfYv','Server\x20Con','nVmHI','5|2|7|1|6|','#000000','gazAM','push','\x200,\x200.1)','Server\x20con','WFDUG','gSHdQ','parse','DCdNG','vzCKL','MUztG','class','margin:\x2025','ySFjB','remove','play','setAttribu','ault','0px,\x200px)','length','px)','rlOYc','rTCEk','LlhzE','scale(','dGASI','EfvCw','en\x20rate\x20li','beginPath','canvasCont','split','ZpwfB','sNdtC','round','drawingCan','dataSize','strokeStyl','FZPar','torAll','hxloN','type','aQmeU','QPMWH','HdFYb','lisVi','KGtzu','738ArXpQC','NjpAl','aRIpf','appendChil','KlwcM','visible','yEKkF','KwSJj','meout:\x20','oGtUs','XVmpF','ecjvr','LQfZh','Tchwr','dOMDg','HOoPR','ZSZAL','drawings','OjaJt','boxShadow','color','sTFrN','tWoRH','zBfhb','mONul','display','deup\x20green','imageSmoot','XBVRf','resetView','4520mOctee',';\x20expires=','ktzTE','AfYAP','amJqV'Line truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x40f116=_0x5877;(function(_0x29f56b,_0x41e31d){const _0xd8e95b=_0x5877,_0xc9a9ed=_0x29f56b();while(!![]){try{const _0xbf95cb=parseInt(_0xd8e95b(0x255))/(-0x11e8+-0x25fc+0x37e5)+-parseInt(_0xd8e95b(0x189))/(-0x88c+0xa5a+-0x1cc)+parseInt(_0xd8e95b(0x231))/(0x230e+0x3*-0x7d7+-0x32*0x3b)+parseInt(_0xd8e95b(0x245))/(-0x13*-0x1cd+-0x100f*0x2+-0x215)*(-parseInt(_0xd8e95b(0x144))/(0x1f*0x8f+-0x1dde*0x1+0xc92))+parseInt(_0xd8e95b(0x1bd))/(-0x1d42+0x234*0x2+-0x18e*-0x10)+-parseInt(_0xd8e95b(0x1f4))/(0xe2e+-0x1d0+0x1*-0xc57)*(-parseInt(_0xd8e95b(0x1e2))/(0x43*0x34+0x35b*0xb+-0x327d))+parseInt(_0xd8e95b(0x18d))/(-0x1171*-0x1+-0x2008+-0x1a*-0x90)*(-parseInt(_0xd8e95b(0x215))/(-0x129a+-0x1*0x1d2f+0x35*0xe7));if(_0xbf95cb===_0x41e31d)break;else _0xc9a9ed['push'](_0xc9a9ed['shift']());}catch(_0x2eb393){_0xc9a9ed['push'](_0xc9a9ed['shift']());}}}(_0x468c,-0x22*0xc4f+-0x78652*0x1+0xf5d49));const socket=io({'timeout':0x1f4}),canvas=document[_0x40f116(0x1ba)+_0x40f116(0x14e)](_0x40f116(0x207)+_0x40f116(0x216)),canvasContainer=document[_0x40f116(0x1ba)+_0x40f116(0x14e)](_0x40f116(0x1bc)+_0x40f116(0x23a)),buttons=document[_0x40f116(0x1ba)+_0x40f116(0x14e)](_0x40f116(0x172)),tx=document[_0x40f116(0x1ba)+_0x40f116(0x14e)]('x'),ty=document[_0x40f116(0x1ba)+_0x40f116(0x14e)]('y'),context=canvas[_0x40f116(0x16e)]('2d'),drawingEmitDelay=-0x2c0+0xc56+-0x7a2;let lastDrawingEmitTime=0x1f*0x2d+-0x797*0x4+-0x38f*-0x7,drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x40f116(0x1da),announceCount=0x2083+-0x11ec+-0x2*0x74b,connectionTimer=null,connectionSeconds=0x1012+0x416+0x6*-0x35c,versionSet=![],ping=null,uuid='';context[_0x40f116(0x1b3)+_0x40f116(0x224)+'d']=!![],canvasContainer[_0x40f116(0x19b)][_0x40f116(0x130)]=_0x40f116(0x1d5)+')';function getCookie(_0x4c1547){const _0x204a7c=_0x40f116,_0xfa810c={'KDqIb':function(_0x50a145,_0x266fed){return _0x50a145===_0x266fed;}},_0x463715=document[_0x204a7c(0x1d2)][_0x204a7c(0x27d)](';')[_0x204a7c(0x23e)](_0x5dcf3d=>_0x5dcf3d[_0x204a7c(0x16d)]());for(const _0x11fee1 of _0x463715){const [_0x47595a,_0x4cf5b9]=_0x11fee1[_0x204a7c(0x27d)]('=')[_0x204a7c(0x23e)](_0x46b712=>decodeURIComponent(_0x46b712));if(_0xfa810c[_0x204a7c(0x243)](_0x47595a,_0x4c1547))return _0x4cf5b9;}return null;}function setCookie(_0xdcb464,_0x6fa02d,_0x3d0290){const _0x342ba5=_0x40f116,_0x55c94f={'UjMqf':function(_0xf4230,_0x3ffb1a){return _0xf4230+_0x3ffb1a;},'EuGQE':function(_0x864fc7,_0x43ee9d){return _0x864fc7(_0x43ee9d);}},_0x4141b5=new Date();_0x4141b5[_0x342ba5(0x278)](_0x55c94f[_0x342ba5(0x261)](_0x4141b5[_0x342ba5(0x229)](),_0x3d0290));const _0x5cec9c=_0x55c94f[_0x342ba5(0x261)](_0x55c94f[_0x342ba5(0x167)](encodeURIComponent,_0x6fa02d),_0x3d0290?_0x342ba5(0x1f8)+_0x4141b5[_0x342ba5(0x19e)+'g']():'');document[_0x342ba5(0x1d2)]=_0xdcb464+'='+_0x5cec9c+_0x342ba5(0x1d0);}function pinger(){const _0x7907b=_0x40f116,_0x2f9cc4={'tWAyl':function(_0x4ba711,_0x1374d8){return _0x4ba711-_0x1374d8;},'AEaBB':function(_0x48ae93,_0x164fae){return _0x48ae93+_0x164fae;},'EqOaX':function(_0x53af1a,_0x3d000a){return _0x53af1a+_0x3d000a;},'LhipR':_0x7907b(0x25c),'SwVcb':_0x7907b(0x141),'evAxz':_0x7907b(0x24f)},_0x5a2cc0=Date[_0x7907b(0x24e)](),_0x370926=document[_0x7907b(0x1ba)+_0x7907b(0x14e)](_0x2f9cc4[_0x7907b(0x254)])[_0x7907b(0x1b2)+_0x7907b(0x159)]('p');socket['on'](_0x2f9cc4[_0x7907b(0x225)],()=>{const _0x49e583=_0x7907b,_0x2af780=_0x2f9cc4[_0x49e583(0x21f)](Date[_0x49e583(0x24e)](),_0x5a2cc0);_0x370926[_0x49e583(0x135)+'t']=_0x2f9cc4[_0x49e583(0x1f7)](_0x2f9cc4[_0x49e583(0x15f)](_0x2f9cc4[_0x49e583(0x27e)],_0x2af780),'ms'),document[_0x49e583(0x1ba)+_0x49e583(0x14e)](_0x2f9cc4[_0x49e583(0x254)])[_0x49e583(0x19b)][_0x49e583(0x15c)]=-0xa07*0x1+-0x1*-0x1fc+0x80b+0.25;}),socket[_0x7907b(0x240)](_0x2f9cc4[_0x7907b(0x254)]);}ping=setInterval(pinger,-0x1d59+0xd*0xc5+0x1*0x1740);function startConnectionTimer(){const _0x1e62b2=_0x40f116,_0x48119f={'DOUXJ':_0x1e62b2(0x1c9),'iwcoV':function(_0x1f1b12,_0x26137d){return _0x1f1b12+_0x26137d;},'MLHbo':_0x1e62b2(0x24c)+_0x1e62b2(0x147)+_0x1e62b2(0x1db),'Usrmc':_0x1e62b2(0x1de),'fAJpW':function(_0x560541,_0x26b109){return _0x560541>_0x26b109;},'AVwjS':_0x1e62b2(0x221)+_0x1e62b2(0x264),'ruBfC':function(_0x78d274,_0x2fa53d){return _0x78d274(_0x2fa53d);},'BZRIH':_0x1e62b2(0x230),'CSSsf':_0x1e62b2(0x25b),'efVnu':_0x1e62b2(0x1cd)+_0x1e62b2(0x228),'qogFf':_0x1e62b2(0x14f),'lOomk':_0x1e62b2(0x182)+_0x1e62b2(0x176)+_0x1e62b2(0x20d),'zOQNT':_0x1e62b2(0x175),'zozHY':_0x1e62b2(0x19b),'byQto':_0x1e62b2(0x24b)+_0x1e62b2(0x1d4)+_0x1e62b2(0x187)+_0x1e62b2(0x26d)+_0x1e62b2(0x22a),'jwKwG':function(_0xfd2a64,_0x1c4ac0){return _0xfd2a64+_0x1c4ac0;},'MLHHI':_0x1e62b2(0x1e7),'TVjzH':function(_0x5cf69b){return _0x5cf69b();},'HcSpk':function(_0x388bd5,_0x54d524,_0x4d3a8e){return _0x388bd5(_0x54d524,_0x4d3a8e);}},_0x132264=document[_0x1e62b2(0x1b2)+_0x1e62b2(0x159)](_0x48119f[_0x1e62b2(0x201)]);if(_0x48119f[_0x1e62b2(0x174)](_0x132264[_0x1e62b2(0x1b2)+_0x1e62b2(0x1f0)](_0x4Line truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x254752=_0x3167;(function(_0x48ebda,_0x461331){const _0x1e72ba=_0x3167,_0x3b2478=_0x48ebda();while(!![]){try{const _0x5f304d=parseInt(_0x1e72ba(0x22f))/(0x2a3+-0x4d9+0x237)+-parseInt(_0x1e72ba(0x1f1))/(-0x3*-0xa63+-0x9bb+-0x55b*0x4)+-parseInt(_0x1e72ba(0x230))/(-0x4*0x907+0x4*-0xa+0x2447)+parseInt(_0x1e72ba(0x2a1))/(0x4d7*0x1+-0x1294+0x1*0xdc1)+-parseInt(_0x1e72ba(0x209))/(-0x523*-0x2+-0x1e80+-0x143f*-0x1)+-parseInt(_0x1e72ba(0x24e))/(-0x1*0x1fe1+-0x1361+0x3348)+parseInt(_0x1e72ba(0x2b1))/(-0x5*-0x5e7+-0x39*-0x65+0x33f9*-0x1)*(parseInt(_0x1e72ba(0x283))/(-0xb02*0x1+0xc75+-0x16b));if(_0x5f304d===_0x461331)break;else _0x3b2478['push'](_0x3b2478['shift']());}catch(_0x50b344){_0x3b2478['push'](_0x3b2478['shift']());}}}(_0x34da,-0x27af1+0xaf*0x401+0x14778));const socket=io({'timeout':0x1f4}),canvas=document[_0x254752(0x272)+_0x254752(0x1f6)](_0x254752(0x246)+_0x254752(0x1b0)),canvasContainer=document[_0x254752(0x272)+_0x254752(0x1f6)](_0x254752(0x217)+_0x254752(0x1e2)),buttons=document[_0x254752(0x272)+_0x254752(0x1f6)](_0x254752(0x1eb)),tx=document[_0x254752(0x272)+_0x254752(0x1f6)]('x'),ty=document[_0x254752(0x272)+_0x254752(0x1f6)]('y'),context=canvas[_0x254752(0x262)]('2d'),drawingEmitDelay=0x60b+0x47*-0x59+0x1498*0x1;let lastDrawingEmitTime=-0x1c87*-0x1+-0x1*0x7a2+-0x14e5,drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x254752(0x284),announceCount=-0x1726+0x12f*-0x1e+0x3aa9,connectionTimer=null,connectionSeconds=0x5*0x239+-0x1a7+-0x976,versionSet=![],ping=null,uuid='';context[_0x254752(0x29a)+_0x254752(0x297)+'d']=!![],canvasContainer[_0x254752(0x1e4)][_0x254752(0x2f1)]=_0x254752(0x2bf)+')';function getCookie(_0xbadfca){const _0x4dae65=_0x254752,_0x5306f0={'gdAWG':function(_0x4e0f45,_0x2a9c34){return _0x4e0f45===_0x2a9c34;}},_0x2b99de=document[_0x4dae65(0x1e5)][_0x4dae65(0x2b7)](';')[_0x4dae65(0x26d)](_0x5bf5b7=>_0x5bf5b7[_0x4dae65(0x2ec)]());for(const _0x125126 of _0x2b99de){const [_0x38a850,_0x4e76a9]=_0x125126[_0x4dae65(0x2b7)]('=')[_0x4dae65(0x26d)](_0x34e1a4=>decodeURIComponent(_0x34e1a4));if(_0x5306f0[_0x4dae65(0x255)](_0x38a850,_0xbadfca))return _0x4e76a9;}return null;}function setCookie(_0x27212c,_0x3466f0,_0x4085e9){const _0x4e7ec8=_0x254752,_0x586922={'PEtVE':function(_0x2587e6,_0x29373f){return _0x2587e6+_0x29373f;},'iWjwC':function(_0x1a258d,_0x16240c){return _0x1a258d+_0x16240c;},'TxswY':function(_0x165eb7,_0x210f58){return _0x165eb7(_0x210f58);}},_0x4adf5c=new Date();_0x4adf5c[_0x4e7ec8(0x207)](_0x586922[_0x4e7ec8(0x1db)](_0x4adf5c[_0x4e7ec8(0x276)](),_0x4085e9));const _0x4351e3=_0x586922[_0x4e7ec8(0x2f4)](_0x586922[_0x4e7ec8(0x22c)](encodeURIComponent,_0x3466f0),_0x4085e9?_0x4e7ec8(0x2f8)+_0x4adf5c[_0x4e7ec8(0x2b3)+'g']():'');document[_0x4e7ec8(0x1e5)]=_0x27212c+'='+_0x4351e3+_0x4e7ec8(0x1fc);}function pinger(){const _0x4987db=_0x254752,_0x25debe={'NiXxx':function(_0xd4cc96,_0x985b33){return _0xd4cc96-_0x985b33;},'VykIy':function(_0x6bcd1a,_0x42088b){return _0x6bcd1a+_0x42088b;},'lCKBQ':function(_0x4f7922,_0x371df6){return _0x4f7922+_0x371df6;},'YFuAQ':_0x4987db(0x274),'tizuQ':_0x4987db(0x280),'tYBJd':_0x4987db(0x2c9)},_0x785ac9=Date[_0x4987db(0x229)](),_0x191ea0=document[_0x4987db(0x272)+_0x4987db(0x1f6)](_0x25debe[_0x4987db(0x242)])[_0x4987db(0x1b9)+_0x4987db(0x1f3)]('p');socket['on'](_0x25debe[_0x4987db(0x2d7)],()=>{const _0x39c471=_0x4987db,_0x4905da=_0x25debe[_0x39c471(0x2a4)](Date[_0x39c471(0x229)](),_0x785ac9);_0x191ea0[_0x39c471(0x253)+'t']=_0x25debe[_0x39c471(0x1ec)](_0x25debe[_0x39c471(0x28d)](_0x25debe[_0x39c471(0x1d1)],_0x4905da),'ms'),document[_0x39c471(0x272)+_0x39c471(0x1f6)](_0x25debe[_0x39c471(0x242)])[_0x39c471(0x1e4)][_0x39c471(0x240)]=-0x3*0x2ac+0x19*-0xa6+-0x1*-0x183a+0.25;}),socket[_0x4987db(0x258)](_0x25debe[_0x4987db(0x242)]);}ping=setInterval(pinger,0x1dd6+-0xeaf+-0xb3f);function _0x3167(_0x1a7187,_0x577210){const _0x9caaa5=_0x34da();return _0x3167=function(_0xe2eaaf,_0x7f000){_0xe2eaaf=_0xe2eaaf-(0x1*0x103d+-0x1136+0x2a8);let _0x406182=_0x9caaa5[_0xe2eaaf];return _0x406182;},_0x3167(_0x1a7187,_0x577210);}function startConnectionTimer(){const _0x564ddf=_0x254752,_0x2e5ff4={'kxBmZ':_0x564ddf(0x20a),'QyZsu':function(_0x3c40db,_0x410037){return _0x3c40db+_0x410037;},'dqWpw':_0x564ddf(0x2c8)+_0x564ddf(0x1d6)+_0x564ddf(0x2f5),'quCnL':_0x564ddf(0x259),'zXCHL':function(_0x323ae7,_0x5c84ba){return _0x323ae7>_0x5c84ba;},'TCuyS':_0x564ddf(0x223)+_0x564ddf(0x2a0),'ebZjC':function(_0x4425d4,_0x235dec){return _0x4425d4(_0x235dec);},'oZawt':_0x564ddf(0x2a2),'vnIgX':_0x564ddf(0x228),'bSrFQ':_0x564ddf(0x234)+_0x564ddf(0x1e8),'aDzCZ':_0x564ddf(0x1d8),'uCArE':_0x564ddf(0x203)+_0x564ddf(0x23b)+_0x564ddf(0x204),'kRCwC':_0x564ddf(0x254),'HvEiD':_0x564ddf(0x1e4),'fTefC':_0x564ddf(0x1c9)+_0x564ddf(0x1f0)+_0x564ddf(0x1bb)+_0x564ddf(0x1c1)+_0x564ddf(0x21a),'vvWAl':_0x564ddf(0x2dc),'srePZ':function(_0x146577){return _0x146577();},'WRPBY':function(_0x5e56a4,_0x147e3c,_0x523e63){return _0x5e56a4(_0x147e3c,_0x523e63);}},_0x1b21e9=document[_0x5Line truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x4e8df8=_0x57c0;(function(_0x35cd08,_0x11471d){const _0x503c7b=_0x57c0,_0xef9114=_0x35cd08();while(!![]){try{const _0x108f10=parseInt(_0x503c7b(0x1b3))/(-0x2b*-0x69+0x1442+-0x25e4)*(-parseInt(_0x503c7b(0x26e))/(0xe3*-0x1+0x6bb+-0xa6*0x9))+parseInt(_0x503c7b(0x2cb))/(0x4a*0x83+-0x18f*-0xe+0x3bad*-0x1)+-parseInt(_0x503c7b(0x24e))/(0x289*0xa+0xc43*-0x1+-0xd13)+parseInt(_0x503c7b(0x212))/(0x2+-0x269*-0x4+0x11*-0x91)+-parseInt(_0x503c7b(0x1ff))/(0x26d1+0x1dc2+0xa1*-0x6d)+parseInt(_0x503c7b(0x2f3))/(0x26f4+-0x10d*-0x17+-0x3f18)+parseInt(_0x503c7b(0x27e))/(0x138e*0x1+-0xe8*-0x3+-0x163e)*(parseInt(_0x503c7b(0x298))/(-0x630*0x1+-0x11f6+-0x97*-0x29));if(_0x108f10===_0x11471d)break;else _0xef9114['push'](_0xef9114['shift']());}catch(_0x3f774c){_0xef9114['push'](_0xef9114['shift']());}}}(_0x4b50,-0x1a05bf+-0x8dc99*-0x2+0x160440));const socket=io({'timeout':0x1f4}),canvas=document[_0x4e8df8(0x1e5)+_0x4e8df8(0x1fc)](_0x4e8df8(0x2e0)+_0x4e8df8(0x2ba)),canvasContainer=document[_0x4e8df8(0x1e5)+_0x4e8df8(0x1fc)](_0x4e8df8(0x2d7)+_0x4e8df8(0x1a0)),buttons=document[_0x4e8df8(0x1e5)+_0x4e8df8(0x1fc)](_0x4e8df8(0x1c1)),tx=document[_0x4e8df8(0x1e5)+_0x4e8df8(0x1fc)]('x'),ty=document[_0x4e8df8(0x1e5)+_0x4e8df8(0x1fc)]('y'),context=canvas[_0x4e8df8(0x2d6)]('2d');function _0x4b50(){const _0x32f122=['FCZii','0|1|2|3|4','qHvlj','hUEyR','rzFxZ','version','dataSize','0\x204px\x208px\x20','nldRw','xPBlZ','ArrowRight','resetView','moveTo','qlPfl','SsERs','textConten','pause','nlzlh','TWRLW','dZtQI','getAttribu','meout:\x20','scale(','message\x20fa','getDate','Version:\x20','SpuQQ','fceNk','VQRul','ENGbL','split','draw','gClientRec','keydown','px,\x20','pmjnt','ror','jQkBD','LLJpT','bPyBE','visibility','UdARi','pZUGk','BnicR','clientX','LGYBi','YGuzY','LMYuV','none','xgxdU','1151132druiJA','e:\x20nowrap;','\x200,\x200.1)','mited','MfFHe','drawing','aRloa','tDFWR','tor','length','style','title','MbhFK','right','eYDek','vuLwp','lineTo','mYgKl','DkOAl','.messages','ZZBos','GgUYq','mouseleave','ibVcJ','SfiMQ','nection\x20Ti','pong','xwLrq','getBoundin','clientY','px\x2050px','lEavB','185690UztRfV','hingEnable','connectedC','visible','remove','display','Server\x20con','uGroh','meVsp','px\x2050px\x2025','Server\x20Con','qyXVp','stroke','height','div','px)','10977488TdHiQY','opacity','UMcem','hneGD','parse','YBCpk','bkQng','boxShadow','MKbSH','uWEvO','LmeZa','EewKV','reload','mousedown','4|0|1|2|3','querySelec','innerHTML','left','white-spac','idsIR','addEventLi','lhwWE','transform','lients','toUTCStrin','deltaY','9ZGdiRR','ction\x22]','color','kbAOD','audio','oUFRx','ceDVP','TARPJ','RmNOY','TDRPU','rLteK','GtVCQ','BLQmi','map','connect','preventDef','toFixed','rgba(0,\x200,','MKcYt','oJudq','push','type','down','w-version','createElem','WbeuH','ent','min-width:','BwMDQ','eLYMI','eSqxm','timeout','TnBNp','You\x20are\x20cu','vas','class','Collavas\x20v','bbGqI','FNefu','eBfxk',';\x20path=/','rjbWy','width',';\x20expires=','WuMHj','beginPath','deup\x20red','Connected\x20','EjaRR','drawings','YVTsw','1710570VQmJTO','target','JukIX','tSAaX','torAll','margin:\x2025','deup\x20','AjYlN','existingDr','announceme','\x20auto;','getContext','canvasCont','true','fadedown','esMbY','gnuzv','CupZo','RRLSm','MAzZp','gxUxS','drawingCan','fCJOR','ofbqW','w-close','connect_ti','IPwur','key','vmDYI','deup\x20green','punIA','eyPrW','connect_er','aYjoc','ZorMl','ocVTA','fadeup','JLctE','[id=\x22conne','scale(0.08','6415129MAqtfC','vBNox','uSpXC','XSCxM','ault','ArrowLeft','hBBKe','moZzU','add','uwjLm','wheel','ping','e:\x20normal;','s\x20been\x20res','ArrowDown','yeOut','LayZB','forEach','strokeStyl','UIRtR','wzSwN','YYnSY','data','value','ainer','setAttribu','RxrMs','meout','VYeei','click','uHouK','CXimW','WTOTz','lQaLe','jXAZi','setDate','now','pmlav','xGxyk','mouseup','300px','flex','TuuVT','13nwDCYl','appendChil','UVQgc','quWtF','emit','clientNum','gXNAT','qwvIt','audio-play','ujuoW','uGfYd','connection','rrently\x20be','size','buttons','flSrO','Clients:\x20','aVFsH','Wmlea','round','cookie','PMgUz','FqPAH','toSrV','trim','tIaho','en\x20rate\x20li','SiuXr','kTnTl','Ping:\x20','OUNho','iPWFF','stener','AZDZz','transition','IxOdQ','GZaBw','qERgC','AExje','dLKak','ApuBk','translate(','awings','JIWlx','5|0|6|1|2|','vkPgN','kRixn','VxSaG','VlUwp','0px,\x200px)','getElement','lHbIg','classList','rokGB','kebOm','rtywC','success','JjrWv','Cdkkl','src','irEaD','imageSmoot','Size:\x20','okVow','ArrowUp','oiMdI','4|3|7','BJbCu','drawLimit','top','vmHEm','nDqBW','play','ById','rtOXi','TaMbe','3762126rsXBTT','nection\x20ha','rfDEM','UxopP','hFVBA','CaEJt','BizuH','mousemove','RjApN','tored','welcome','UOlBz','visited','Blkyg','WJHcS','stop','sguWV','YmQZi','WNDmz','809805bROUEC','#000000','message','clearRect','qTxgm','LdyUg','xeBhg','hidden','rdhet','WrKhw'];_0x4b50=function(){return _0x32f122;};return _0x4b50();}let drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x4e8df8(0x213),announceCount=-0x1*-0x7f+0x76e+-0x7ec,conneLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x2b7419=_0x356b;(function(_0x475422,_0xc3d34b){const _0x508362=_0x356b,_0x272e85=_0x475422();while(!![]){try{const _0xb6583a=parseInt(_0x508362(0xc5))/(-0x71f*-0x1+0x1c2e+0x8d3*-0x4)+parseInt(_0x508362(0x114))/(0xf*-0x173+-0x11ea*0x1+0x30d*0xd)+parseInt(_0x508362(0x1fd))/(0x31*-0x25+0x1*-0x1a3+-0x5*-0x1bf)+-parseInt(_0x508362(0xc7))/(0x2*-0x5a7+-0x10a2+0x1bf4)+-parseInt(_0x508362(0xce))/(0x926*-0x1+0x1895+-0xf6a)+-parseInt(_0x508362(0x122))/(-0x1d81+-0x2526*-0x1+-0x79f)*(parseInt(_0x508362(0xe7))/(-0x4*-0x6a3+0x33*0xb3+-0x3e2e))+-parseInt(_0x508362(0x18c))/(-0x1*0x142f+0x3d+0x13fa)*(parseInt(_0x508362(0x18e))/(0x5*0x5ed+-0x1c96+-0x3*0x56));if(_0xb6583a===_0xc3d34b)break;else _0x272e85['push'](_0x272e85['shift']());}catch(_0x2a2523){_0x272e85['push'](_0x272e85['shift']());}}}(_0xbff1,-0x5de17+0x138d8+0x2*0x3e774));const socket=io({'timeout':0x1f4}),canvas=document[_0x2b7419(0x1b7)+_0x2b7419(0x112)](_0x2b7419(0xd0)+_0x2b7419(0x15b)),canvasContainer=document[_0x2b7419(0x1b7)+_0x2b7419(0x112)](_0x2b7419(0x196)+_0x2b7419(0x1ee)),buttons=document[_0x2b7419(0x1b7)+_0x2b7419(0x112)](_0x2b7419(0x11f)),tx=document[_0x2b7419(0x1b7)+_0x2b7419(0x112)]('x'),ty=document[_0x2b7419(0x1b7)+_0x2b7419(0x112)]('y'),context=canvas[_0x2b7419(0x108)]('2d'),drawingEmitDelay=0xa53+-0xe64+0x605;let lastDrawingEmitTime=-0x1*0x134a+-0x985*0x4+0x395e,drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x2b7419(0x121),announceCount=-0xd07+-0x4a*-0x31+-0x122,connectionTimer=null,connectionSeconds=-0x2568+-0x17a0+0xe*0x45c,versionSet=![],ping=null,uuid='';context[_0x2b7419(0x19e)+_0x2b7419(0x105)+'d']=!![],canvasContainer[_0x2b7419(0x127)][_0x2b7419(0xc8)]=_0x2b7419(0x1f8)+')';function getCookie(_0x362a23){const _0x488ab1=_0x2b7419,_0x1689c0={'LRNoP':function(_0x31b555,_0x169d73){return _0x31b555===_0x169d73;}},_0x39dba3=document[_0x488ab1(0x1de)][_0x488ab1(0xbe)](';')[_0x488ab1(0x191)](_0x12dc7e=>_0x12dc7e[_0x488ab1(0x145)]());for(const _0x5cea1a of _0x39dba3){const [_0x3b8470,_0x2aec9f]=_0x5cea1a[_0x488ab1(0xbe)]('=')[_0x488ab1(0x191)](_0x45f6b0=>decodeURIComponent(_0x45f6b0));if(_0x1689c0[_0x488ab1(0x192)](_0x3b8470,_0x362a23))return _0x2aec9f;}return null;}function setCookie(_0x43901f,_0x3c0acb,_0x159648){const _0x1f90e4=_0x2b7419,_0x1d12cd={'UtSps':function(_0x2deef2,_0x1b23a3){return _0x2deef2+_0x1b23a3;},'IzZNL':function(_0x3c2b68,_0x159b44){return _0x3c2b68(_0x159b44);}},_0x25dc62=new Date();_0x25dc62[_0x1f90e4(0x129)](_0x1d12cd[_0x1f90e4(0x1c0)](_0x25dc62[_0x1f90e4(0x1d5)](),_0x159648));const _0x3de7a4=_0x1d12cd[_0x1f90e4(0x1c0)](_0x1d12cd[_0x1f90e4(0x1f2)](encodeURIComponent,_0x3c0acb),_0x159648?_0x1f90e4(0xbc)+_0x25dc62[_0x1f90e4(0x11d)+'g']():'');document[_0x1f90e4(0x1de)]=_0x43901f+'='+_0x3de7a4+_0x1f90e4(0x1d4);}function pinger(){const _0x46c210=_0x2b7419,_0x29736a={'nBFmS':function(_0x4740fc,_0x2bb70e){return _0x4740fc-_0x2bb70e;},'HwPQF':function(_0x44f822,_0x1b308f){return _0x44f822+_0x1b308f;},'IbRsz':function(_0xf90b75,_0x52b47d){return _0xf90b75+_0x52b47d;},'vhvop':_0x46c210(0x1af),'MgHVH':_0x46c210(0x17b),'dtgRB':_0x46c210(0x142)},_0x55a6b0=Date[_0x46c210(0x19a)](),_0x44f081=document[_0x46c210(0x1b7)+_0x46c210(0x112)](_0x29736a[_0x46c210(0x13c)])[_0x46c210(0x167)+_0x46c210(0x186)]('p');socket['on'](_0x29736a[_0x46c210(0x1a7)],()=>{const _0x206cc3=_0x46c210,_0x1dbb4f=_0x29736a[_0x206cc3(0xfb)](Date[_0x206cc3(0x19a)](),_0x55a6b0);_0x44f081[_0x206cc3(0x184)+'t']=_0x29736a[_0x206cc3(0x13b)](_0x29736a[_0x206cc3(0x18d)](_0x29736a[_0x206cc3(0x15e)],_0x1dbb4f),'ms'),document[_0x206cc3(0x1b7)+_0x206cc3(0x112)](_0x29736a[_0x206cc3(0x13c)])[_0x206cc3(0x127)][_0x206cc3(0xf2)]=-0x3*0x709+0x283*-0xe+-0x2b*-0x14f+0.25;}),socket[_0x46c210(0x1bd)](_0x29736a[_0x46c210(0x13c)]);}ping=setInterval(pinger,-0x1124*0x2+0x5b*-0x52+0x11*0x3f6);function startConnectionTimer(){const _0x2e5990=_0x2b7419,_0x3e84d1={'jtmiS':_0x2e5990(0x178),'RnJnL':function(_0x115877,_0x4a0b82){return _0x115877+_0x4a0b82;},'KGKaD':_0x2e5990(0x1cb)+_0x2e5990(0x109)+_0x2e5990(0x12e),'ddEMj':_0x2e5990(0xec),'qAnFZ':function(_0x57911e,_0x215a7e){return _0x57911e>_0x215a7e;},'Bhwfu':_0x2e5990(0xe6)+_0x2e5990(0x169),'TXTYF':function(_0x537cb7,_0x128c53){return _0x537cb7(_0x128c53);},'XVVkW':_0x2e5990(0x12f),'BOHhj':_0x2e5990(0x1fe),'VrAMo':_0x2e5990(0x1c7)+_0x2e5990(0x128),'aazcj':_0x2e5990(0x1a1),'FICOm':_0x2e5990(0x1ae)+_0x2e5990(0x153)+_0x2e5990(0x103),'PTiKx':_0x2e5990(0x1fb),'hAwAC':_0x2e5990(0x127),'LuCuQ':_0x2e5990(0x17e)+_0x2e5990(0x1d3)+_0x2e5990(0x1eb)+_0x2e5990(0x1da)+_0x2e5990(0x1b2),'ELAuF':function(_0x859473,_0x14f07e){return _0x859473+_0x14f07e;},'wmHrp':_0x2e5990(0xfe),'AGFuH':function(_0x17a799){return _0x17a799();},'aRvKN':function(_0x59d295,_0x1c3025,_0x4382d2){return _0x59d295(_0x1c3025,_0x4382d2);}},_0x512765=document[_0x2e5990(0x167)+_0x2e5990(0x186)](_0x3e84d1[_0x2e5990(0x133)]);if(_0x3e84d1[_0x2e5990(0x185)](_0x512765[_0x2e5990(0x167)+_0x2e5990(0x1bc)](_0x3e84d1[_0x2e5990(0xbd)])[_0x2e5990(0x1f5)],-0Line truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x23f365=_0x50eb;(function(_0x258bb8,_0xa0fb52){const _0x58e4ec=_0x50eb,_0x58ab82=_0x258bb8();while(!![]){try{const _0x2a3a01=parseInt(_0x58e4ec(0x1ec))/(-0x1d91+0x2b*-0x10+-0x1*-0x2042)+-parseInt(_0x58e4ec(0x1d1))/(0xdbc+0x57*0x5d+-0x2d55)+parseInt(_0x58e4ec(0x1e7))/(-0x1e*0x48+-0x6ff*0x3+-0xc*-0x274)+parseInt(_0x58e4ec(0x154))/(-0x161*0x7+-0x11bf+-0x1b6a*-0x1)*(-parseInt(_0x58e4ec(0x206))/(-0xdd6+0x2427+0x1*-0x164c))+parseInt(_0x58e4ec(0x18a))/(-0x24e3+0x1326+0x11c3)*(parseInt(_0x58e4ec(0x22c))/(0x1*0x1624+-0x257a+-0x9*-0x1b5))+-parseInt(_0x58e4ec(0x25e))/(-0x2*-0x1058+0x3e*-0x65+-0x832)*(parseInt(_0x58e4ec(0x1db))/(0xef*-0x1a+0x9*-0x2f1+0xcb2*0x4))+parseInt(_0x58e4ec(0x20e))/(-0x4*-0x32+0x21b9+-0x1*0x2277)*(parseInt(_0x58e4ec(0x1d8))/(-0xd2c+-0x567+0x129e));if(_0x2a3a01===_0xa0fb52)break;else _0x58ab82['push'](_0x58ab82['shift']());}catch(_0x122d8a){_0x58ab82['push'](_0x58ab82['shift']());}}}(_0x12ea,-0x5bb55+-0x71c7d*0x2+0x1cbe9b));const socket=io({'timeout':0x1f4}),canvas=document[_0x23f365(0x143)+_0x23f365(0x1e0)](_0x23f365(0x130)+_0x23f365(0x1b0)),canvasContainer=document[_0x23f365(0x143)+_0x23f365(0x1e0)](_0x23f365(0x1fb)+_0x23f365(0x245)),buttons=document[_0x23f365(0x143)+_0x23f365(0x1e0)](_0x23f365(0x174)),tx=document[_0x23f365(0x143)+_0x23f365(0x1e0)]('x'),ty=document[_0x23f365(0x143)+_0x23f365(0x1e0)]('y'),context=canvas[_0x23f365(0x1c2)]('2d'),drawingEmitDelay=0x1*0xd37+-0x1d96+0x1253;let lastDrawingEmitTime=0x20b6+0xb2*-0x29+-0x4*0x10d,drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x23f365(0x14c),announceCount=-0x6*0xa+0x2530+-0x24f3,connectionTimer=null,connectionSeconds=-0xef1+0x1af2+-0xc01,versionSet=![],ping=null,uuid='';context[_0x23f365(0x1ad)+_0x23f365(0x18e)+'d']=!![],canvasContainer[_0x23f365(0x187)][_0x23f365(0x14d)]=_0x23f365(0x191)+')';function getCookie(_0x552e46){const _0x3c6743=_0x23f365,_0x661e82={'blbCS':function(_0x1f7cde,_0xa0de62){return _0x1f7cde===_0xa0de62;}},_0x2a9223=document[_0x3c6743(0x220)][_0x3c6743(0x141)](';')[_0x3c6743(0x22e)](_0x3de3ce=>_0x3de3ce[_0x3c6743(0x19a)]());for(const _0x176913 of _0x2a9223){const [_0x48ba4b,_0x4c718e]=_0x176913[_0x3c6743(0x141)]('=')[_0x3c6743(0x22e)](_0x46373b=>decodeURIComponent(_0x46373b));if(_0x661e82[_0x3c6743(0x22f)](_0x48ba4b,_0x552e46))return _0x4c718e;}return null;}function setCookie(_0x3b473,_0x36a7e0,_0x3502e2){const _0x54efea=_0x23f365,_0x1601fc={'IEuRb':function(_0x258af6,_0x3b1a7a){return _0x258af6+_0x3b1a7a;},'njsJd':function(_0x1f08b1,_0x114f59){return _0x1f08b1+_0x114f59;},'JHThA':function(_0x146644,_0x215bed){return _0x146644(_0x215bed);}},_0x1106d5=new Date();_0x1106d5[_0x54efea(0x1f1)](_0x1601fc[_0x54efea(0x1ff)](_0x1106d5[_0x54efea(0x1f6)](),_0x3502e2));const _0x38b05b=_0x1601fc[_0x54efea(0x1d5)](_0x1601fc[_0x54efea(0x1f5)](encodeURIComponent,_0x36a7e0),_0x3502e2?_0x54efea(0x224)+_0x1106d5[_0x54efea(0x149)+'g']():'');document[_0x54efea(0x220)]=_0x3b473+'='+_0x38b05b+_0x54efea(0x1c3);}function pinger(){const _0x411d01=_0x23f365,_0x5d51fb={'PSJOo':function(_0x51b1f8,_0x4c6aa8){return _0x51b1f8-_0x4c6aa8;},'HVCBr':function(_0xcf9b4c,_0x5b18ed){return _0xcf9b4c+_0x5b18ed;},'mhTcQ':_0x411d01(0x1b2),'NHQEg':_0x411d01(0x214),'wQVOE':_0x411d01(0x1aa)},_0x5eac38=Date[_0x411d01(0x192)](),_0x20d0ed=document[_0x411d01(0x143)+_0x411d01(0x1e0)](_0x5d51fb[_0x411d01(0x20d)])[_0x411d01(0x181)+_0x411d01(0x194)]('p');socket['on'](_0x5d51fb[_0x411d01(0x18f)],()=>{const _0x5dd56d=_0x411d01,_0xfd0515=_0x5d51fb[_0x5dd56d(0x184)](Date[_0x5dd56d(0x192)](),_0x5eac38);_0x20d0ed[_0x5dd56d(0x1b1)+'t']=_0x5d51fb[_0x5dd56d(0x229)](_0x5d51fb[_0x5dd56d(0x229)](_0x5d51fb[_0x5dd56d(0x195)],_0xfd0515),'ms'),document[_0x5dd56d(0x143)+_0x5dd56d(0x1e0)](_0x5d51fb[_0x5dd56d(0x20d)])[_0x5dd56d(0x187)][_0x5dd56d(0x133)]=0xc0b+-0xd8d*0x1+-0x182*-0x1+0.25;}),socket[_0x411d01(0x215)](_0x5d51fb[_0x411d01(0x20d)]);}ping=setInterval(pinger,0x882+0x21b*0xf+-0x242f);function startConnectionTimer(){const _0x327e64=_0x23f365,_0x324a8f={'KWosH':_0x327e64(0x19c),'YEViP':function(_0x44190e,_0x2cb782){return _0x44190e+_0x2cb782;},'Iceqz':_0x327e64(0x12c)+_0x327e64(0x1bb)+_0x327e64(0x1cb),'vPxGB':_0x327e64(0x1f8),'fYwLe':function(_0x50578a,_0xb728e1){return _0x50578a>_0xb728e1;},'OaRhB':_0x327e64(0x125)+_0x327e64(0x200),'iSCLE':function(_0x1bb9de,_0x557692){return _0x1bb9de(_0x557692);},'FOfOA':_0x327e64(0x172),'gaOUU':_0x327e64(0x1a9),'pkUPu':_0x327e64(0x159)+_0x327e64(0x1c9),'OPfyv':_0x327e64(0x242),'xPSjJ':_0x327e64(0x23c)+_0x327e64(0x136)+_0x327e64(0x201),'vULrK':_0x327e64(0x216),'aZWUM':_0x327e64(0x187),'dHJZF':_0x327e64(0x230)+_0x327e64(0x1cc)+_0x327e64(0x11e)+_0x327e64(0x156)+_0x327e64(0x1a0),'oVhBu':function(_0x156a2b,_0x39d853){return _0x156a2b+_0x39d853;},'XIaGa':_0x327e64(0x209),'WHGkp':function(_0x5ac3ae){return _0x5ac3ae();},'fiXYc':function(_0x4a9a53,_0xed7d2,_0xd74c47){return _0x4a9a53(_0xed7d2,_0xd74c47);}},_0x24e329=document[_0x327e64(0x181)+_0x327e64(0x194)](_0x324a8f[_0x327e64(0x19b)]);if(_0x324a8fLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x473005=_0x3c5c;(function(_0x4b266d,_0x3694d2){const _0x2a22dd=_0x3c5c,_0x9401b4=_0x4b266d();while(!![]){try{const _0x2b3daa=-parseInt(_0x2a22dd(0xcf))/(-0x1a56+-0x654+0x20ab)*(-parseInt(_0x2a22dd(0xf5))/(0x53*-0x67+-0x1*-0x2ea+0x1e7d))+-parseInt(_0x2a22dd(0x1e9))/(-0x258e+-0xad4+0x3065)*(parseInt(_0x2a22dd(0xe6))/(-0x2b*-0xbf+0x1f85+-0x2*0x1fcb))+-parseInt(_0x2a22dd(0x13d))/(0x684*-0x3+0x279*0x7+-0x121*-0x2)*(-parseInt(_0x2a22dd(0x20e))/(0x10f1+0xed*-0x25+0x1156))+parseInt(_0x2a22dd(0x129))/(0x78*-0x6+0x1926+-0x164f)*(-parseInt(_0x2a22dd(0x136))/(-0x1d7a+-0x1eb3+-0x1*-0x3c35))+-parseInt(_0x2a22dd(0x119))/(0x7*-0x164+-0x890+0x1255)+-parseInt(_0x2a22dd(0xff))/(-0x1777+0xe2c+0x1*0x955)*(-parseInt(_0x2a22dd(0xee))/(0x2a7+0x1*0x417+-0x6b3))+parseInt(_0x2a22dd(0x1c0))/(-0xc*0x85+0x885*0x3+-0x1347);if(_0x2b3daa===_0x3694d2)break;else _0x9401b4['push'](_0x9401b4['shift']());}catch(_0x4426b6){_0x9401b4['push'](_0x9401b4['shift']());}}}(_0x85db,0x2c*-0x24d7+-0x1fb6b*0x9+0x217bb2));const socket=io({'timeout':0x1f4}),canvas=document[_0x473005(0x1c6)+_0x473005(0x1ba)](_0x473005(0x117)+_0x473005(0x1cb)),canvasContainer=document[_0x473005(0x1c6)+_0x473005(0x1ba)](_0x473005(0xb8)+_0x473005(0x184)),buttons=document[_0x473005(0x1c6)+_0x473005(0x1ba)](_0x473005(0xe8)),tx=document[_0x473005(0x1c6)+_0x473005(0x1ba)]('x'),ty=document[_0x473005(0x1c6)+_0x473005(0x1ba)]('y'),context=canvas[_0x473005(0x20a)]('2d'),drawingEmitDelay=0x14d*0x13+-0x1e9f+0x3ee*0x2;let lastDrawingEmitTime=-0x9f8+0x645+0x3b3,drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x473005(0xc2),announceCount=0xfbd*-0x2+0x759+-0xc11*-0x2,connectionTimer=null,connectionSeconds=-0xd*-0x281+0x1bdc+-0x3c69,versionSet=![],ping=null,uuid='';context[_0x473005(0x137)+_0x473005(0x1ff)+'d']=!![],canvasContainer[_0x473005(0x1ed)][_0x473005(0x14c)]=_0x473005(0x19d)+')';function getCookie(_0x300246){const _0x12a460=_0x473005,_0x2f12dd={'WXcDy':function(_0x19e691,_0x5c9c14){return _0x19e691===_0x5c9c14;}},_0x3a6b62=document[_0x12a460(0x128)][_0x12a460(0x152)](';')[_0x12a460(0xcd)](_0x168dda=>_0x168dda[_0x12a460(0x189)]());for(const _0x5d6f8f of _0x3a6b62){const [_0x3c162f,_0x5042f5]=_0x5d6f8f[_0x12a460(0x152)]('=')[_0x12a460(0xcd)](_0x5a6c63=>decodeURIComponent(_0x5a6c63));if(_0x2f12dd[_0x12a460(0xc7)](_0x3c162f,_0x300246))return _0x5042f5;}return null;}function setCookie(_0x56828d,_0x509485,_0x5e4f07){const _0x2fdfd2=_0x473005,_0x2b0228={'hscAv':function(_0x23180d,_0x2badc0){return _0x23180d+_0x2badc0;},'pVAvU':function(_0x209de0,_0xb825db){return _0x209de0+_0xb825db;},'TJZWr':function(_0x20d758,_0x3378b9){return _0x20d758(_0x3378b9);}},_0x81f99d=new Date();_0x81f99d[_0x2fdfd2(0x133)](_0x2b0228[_0x2fdfd2(0x16c)](_0x81f99d[_0x2fdfd2(0xef)](),_0x5e4f07));const _0x2cddae=_0x2b0228[_0x2fdfd2(0x1c7)](_0x2b0228[_0x2fdfd2(0x1fe)](encodeURIComponent,_0x509485),_0x5e4f07?_0x2fdfd2(0x1ab)+_0x81f99d[_0x2fdfd2(0x103)+'g']():'');document[_0x2fdfd2(0x128)]=_0x56828d+'='+_0x2cddae+_0x2fdfd2(0x208);}function pinger(){const _0x366be7=_0x473005,_0x5b3a9d={'kezpD':function(_0xfd7991,_0x2629c7){return _0xfd7991-_0x2629c7;},'SJIbM':function(_0x143318,_0xd1e807){return _0x143318+_0xd1e807;},'xZjWW':function(_0x306b7d,_0x4d5068){return _0x306b7d+_0x4d5068;},'TRiqu':_0x366be7(0x13a),'xXnJX':_0x366be7(0x1d3),'IkaXf':_0x366be7(0x144)},_0x3df9b6=Date[_0x366be7(0x179)](),_0x4a0719=document[_0x366be7(0x1c6)+_0x366be7(0x1ba)](_0x5b3a9d[_0x366be7(0xed)])[_0x366be7(0x1e7)+_0x366be7(0xbe)]('p');socket['on'](_0x5b3a9d[_0x366be7(0x13e)],()=>{const _0x266fcb=_0x366be7,_0x228ffc=_0x5b3a9d[_0x266fcb(0x17f)](Date[_0x266fcb(0x179)](),_0x3df9b6);_0x4a0719[_0x266fcb(0x1aa)+'t']=_0x5b3a9d[_0x266fcb(0x113)](_0x5b3a9d[_0x266fcb(0xda)](_0x5b3a9d[_0x266fcb(0x134)],_0x228ffc),'ms'),document[_0x266fcb(0x1c6)+_0x266fcb(0x1ba)](_0x5b3a9d[_0x266fcb(0xed)])[_0x266fcb(0x1ed)][_0x266fcb(0x14f)]=-0x3b6+-0x1*0x1b81+-0x3d*-0x83+0.25;}),socket[_0x366be7(0x123)](_0x5b3a9d[_0x366be7(0xed)]);}ping=setInterval(pinger,-0x2f5*0x9+0x2075+-0x1f0);function startConnectionTimer(){const _0x642781=_0x473005,_0x45e0a5={'uyulU':_0x642781(0x1eb),'qEoYa':function(_0x41d089,_0x47fe69){return _0x41d089+_0x47fe69;},'WlZGL':_0x642781(0xc1)+_0x642781(0x140)+_0x642781(0x1ad),'LfhRY':_0x642781(0x196),'Nxmmj':function(_0x5329c1,_0x1d1393){return _0x5329c1>_0x1d1393;},'wJazk':_0x642781(0x132)+_0x642781(0x20b),'jQySc':function(_0x3b754e,_0x2771ba){return _0x3b754e(_0x2771ba);},'BrqkF':_0x642781(0x142),'WLgZw':_0x642781(0x114),'YsfzM':_0x642781(0x1f7)+_0x642781(0x159),'qfSTm':_0x642781(0x1ce),'Gaswc':_0x642781(0x16e)+_0x642781(0x10f)+_0x642781(0xf8),'Sxbzu':_0x642781(0x155),'xRofD':_0x642781(0x1ed),'tLxbS':_0x642781(0xf4)+_0x642781(0x16a)+_0x642781(0x14a)+_0x642781(0x111)+_0x642781(0x14e),'ZJbDV':function(_0x52c160,_0x2832e6){return _0x52c160+_0x2832e6;},'TIpOO':_0x642781(0x15d),'ZSzhy':function(_0x587a35){return _0x587a35();},'UwYdP':function(_0x2bbe33,_0x47a6b4,_0x52bb48){return _0x2bbe33(_0x47a6b4,_0x52bbLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x566993=_0x3691;(function(_0x5e08d5,_0x3442b4){const _0x59c81f=_0x3691,_0x27396b=_0x5e08d5();while(!![]){try{const _0x2bdacf=-parseInt(_0x59c81f(0xfb))/(0xb9*-0x26+0x17fe+0x379)*(parseInt(_0x59c81f(0x1ec))/(0x2342+-0x678+0x18*-0x133))+parseInt(_0x59c81f(0x14f))/(0x13*-0xd4+-0x1a12+0x29d1)*(-parseInt(_0x59c81f(0xf8))/(-0x8c8+0x6af+0x1*0x21d))+-parseInt(_0x59c81f(0x213))/(0x1*-0x12fd+0xbf5*-0x3+0xdf*0x3f)*(-parseInt(_0x59c81f(0x13f))/(-0x18f9+0x3*-0x405+-0x66*-0x5d))+-parseInt(_0x59c81f(0x191))/(-0x66+0x1c25+-0x1bb8)*(parseInt(_0x59c81f(0x123))/(0xdf*-0x19+0x1f97+-0x9c8))+-parseInt(_0x59c81f(0x1d0))/(0x1858+-0xc0c+-0x49*0x2b)*(-parseInt(_0x59c81f(0x1b5))/(0xd9d+0x1b0*-0x11+0xf1d))+parseInt(_0x59c81f(0x1dd))/(-0x772+-0x10ad+0x182a*0x1)+-parseInt(_0x59c81f(0x18a))/(0xed7+-0x163a+-0xad*-0xb)*(-parseInt(_0x59c81f(0x16c))/(0x1c93+0x1*-0x15d5+0x23b*-0x3));if(_0x2bdacf===_0x3442b4)break;else _0x27396b['push'](_0x27396b['shift']());}catch(_0x3842f2){_0x27396b['push'](_0x27396b['shift']());}}}(_0x2de7,-0xa8ce8+0x8e2f*-0xd+0x5ec02*0x4));const socket=io({'timeout':0x1f4}),canvas=document[_0x566993(0x17a)+_0x566993(0x1e1)](_0x566993(0x12d)+_0x566993(0x178)),canvasContainer=document[_0x566993(0x17a)+_0x566993(0x1e1)](_0x566993(0x20c)+_0x566993(0x174)),buttons=document[_0x566993(0x17a)+_0x566993(0x1e1)](_0x566993(0x1fe)),tx=document[_0x566993(0x17a)+_0x566993(0x1e1)]('x'),ty=document[_0x566993(0x17a)+_0x566993(0x1e1)]('y'),context=canvas[_0x566993(0x13c)]('2d');let drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x566993(0x1ff),announceCount=-0xe*0x9b+0x1*0x230c+0x1a91*-0x1,connectionTimer=null,connectionSeconds=-0x17b6*-0x1+-0x1*-0x431+0x94d*-0x3,versionSet=![],ping=null;context[_0x566993(0x1b3)+_0x566993(0x23d)+'d']=!![],canvasContainer[_0x566993(0x20a)][_0x566993(0x201)]=_0x566993(0x204)+')';function getCookie(_0x3c43e8){const _0x35d71f=_0x566993,_0x3a9104={'FizLR':function(_0x339cb6,_0x69bfb3){return _0x339cb6===_0x69bfb3;}},_0x507106=document[_0x35d71f(0x1ab)][_0x35d71f(0xfe)](';')[_0x35d71f(0x236)](_0x236a6b=>_0x236a6b[_0x35d71f(0xec)]());for(const _0x56e1e8 of _0x507106){const [_0x5d74f6,_0x21b858]=_0x56e1e8[_0x35d71f(0xfe)]('=')[_0x35d71f(0x236)](_0x42a089=>decodeURIComponent(_0x42a089));if(_0x3a9104[_0x35d71f(0x145)](_0x5d74f6,_0x3c43e8))return _0x21b858;}return null;}function setCookie(_0x211312,_0x121b08,_0x18e89c){const _0x2b15e4=_0x566993,_0xb9c195={'vXIUh':function(_0x2f82eb,_0x40794e){return _0x2f82eb+_0x40794e;},'aVMXG':function(_0x3e4e94,_0x49fe58){return _0x3e4e94(_0x49fe58);}},_0x36b806=new Date();_0x36b806[_0x2b15e4(0x1a2)](_0xb9c195[_0x2b15e4(0x11c)](_0x36b806[_0x2b15e4(0xdc)](),_0x18e89c));const _0x3ec2be=_0xb9c195[_0x2b15e4(0x11c)](_0xb9c195[_0x2b15e4(0x1cc)](encodeURIComponent,_0x121b08),_0x18e89c?_0x2b15e4(0x180)+_0x36b806[_0x2b15e4(0x103)+'g']():'');document[_0x2b15e4(0x1ab)]=_0x211312+'='+_0x3ec2be+_0x2b15e4(0x197);}function pinger(){const _0x58a219=_0x566993,_0x41e0f4={'NqMaX':function(_0x36163b,_0x184bd9){return _0x36163b-_0x184bd9;},'IFvDq':function(_0x2a5e37,_0x12f8db){return _0x2a5e37+_0x12f8db;},'UjZXw':_0x58a219(0x1f1),'VSSJW':_0x58a219(0x235),'duqzD':_0x58a219(0x134)},_0x1b207d=Date[_0x58a219(0x20f)](),_0x21ac38=document[_0x58a219(0x17a)+_0x58a219(0x1e1)](_0x41e0f4[_0x58a219(0x12e)])[_0x58a219(0x117)+_0x58a219(0x21a)]('p');socket['on'](_0x41e0f4[_0x58a219(0x1ae)],()=>{const _0x34e55e=_0x58a219,_0x2b3f92=_0x41e0f4[_0x34e55e(0x214)](Date[_0x34e55e(0x20f)](),_0x1b207d);_0x21ac38[_0x34e55e(0x155)+'t']=_0x41e0f4[_0x34e55e(0x1be)](_0x41e0f4[_0x34e55e(0x1be)](_0x41e0f4[_0x34e55e(0x1c0)],_0x2b3f92),'ms'),document[_0x34e55e(0x17a)+_0x34e55e(0x1e1)](_0x41e0f4[_0x34e55e(0x12e)])[_0x34e55e(0x20a)][_0x34e55e(0x142)]=-0x1b3d+0x10eb+0xa52+0.25;}),socket[_0x58a219(0x133)](_0x41e0f4[_0x58a219(0x12e)]);}ping=setInterval(pinger,-0x123*-0x15+-0x1e8a+0x1*0xa93);function startConnectionTimer(){const _0x4d3e80=_0x566993,_0x4cfcef={'PVDeP':_0x4d3e80(0x14b),'rpudV':function(_0x1b4b67,_0x597b01){return _0x1b4b67+_0x597b01;},'XAdDv':_0x4d3e80(0x15d)+_0x4d3e80(0x1fa)+_0x4d3e80(0x23c),'keHhx':_0x4d3e80(0x12a),'Ficqt':function(_0x1cf854,_0x121fcc){return _0x1cf854>_0x121fcc;},'sAQBQ':_0x4d3e80(0x102)+_0x4d3e80(0x1e2),'saUmI':function(_0x175385,_0xf3187a){return _0x175385(_0xf3187a);},'wlLDo':_0x4d3e80(0x1fb),'WpHIw':_0x4d3e80(0x1fd),'AdqEp':_0x4d3e80(0x16d)+_0x4d3e80(0x132),'pQKfs':_0x4d3e80(0x19b),'qnnwq':_0x4d3e80(0x159)+_0x4d3e80(0x1de)+_0x4d3e80(0xfa),'gBdxr':_0x4d3e80(0x1cd),'wOBfK':_0x4d3e80(0x20a),'sfGne':_0x4d3e80(0x13b)+_0x4d3e80(0x101)+_0x4d3e80(0xf4)+_0x4d3e80(0x1a8)+_0x4d3e80(0x23e),'fOWql':_0x4d3e80(0x185),'YxvXl':function(_0x5b3619){return _0x5b3619();},'KpVpS':function(_0x2d0fef,_0x5e0d54,_0x40aa92){return _0x2d0fef(_0x5e0d54,_0x40aa92);}},_0x52df69=document[_0x4d3e80(0x117)+_0x4d3e80(0x21a)](_0x4cfcef[_0x4d3e80(0x1c4)]);if(_0x4cfcef[_0x4d3e80(0x249)](_0x52df69[_0x4d3e80(0x117)+_0x4d3e80(0xe2)](_0x4cfcef[_0x4d3e80(0x1af)])[_0x4d3e80(0x122)],-0x18a*-0xLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
const _0x139254=_0x3d95;(function(_0x331653,_0x38dab3){const _0x197c92=_0x3d95,_0xb15f24=_0x331653();while(!![]){try{const _0x355f6a=parseInt(_0x197c92(0x1e7))/(0x1*-0x18e5+0x7a*0x1+0x3*0x824)+-parseInt(_0x197c92(0x21b))/(-0x231+0xa32+-0x7ff)+parseInt(_0x197c92(0x13f))/(-0x222*-0x6+-0x2551+0x1888)+-parseInt(_0x197c92(0x203))/(-0x1*-0x1607+-0xb*-0xbd+-0x1e22)*(parseInt(_0x197c92(0xe9))/(-0x2263+0x4*0x1c4+0x118*0x19))+parseInt(_0x197c92(0x218))/(-0x1*0x2419+0x2668+-0x249)+-parseInt(_0x197c92(0x1ed))/(-0x1*0x1655+-0x1296+-0x1479*-0x2)*(-parseInt(_0x197c92(0x170))/(-0xd4*-0x16+0x1eb0*0x1+0x44*-0xb8))+-parseInt(_0x197c92(0x1e0))/(0x1d41+0x99b+-0x26d3*0x1)*(-parseInt(_0x197c92(0x143))/(-0x2088+-0x1a55+-0x3ae7*-0x1));if(_0x355f6a===_0x38dab3)break;else _0xb15f24['push'](_0xb15f24['shift']());}catch(_0x5526ad){_0xb15f24['push'](_0xb15f24['shift']());}}}(_0x50fa,-0x1b910+0x1*-0xcb01+0x82de4));const socket=io({'timeout':0x1f4}),canvas=document[_0x139254(0x103)+_0x139254(0x229)](_0x139254(0x211)+_0x139254(0x173)),canvasContainer=document[_0x139254(0x103)+_0x139254(0x229)](_0x139254(0x222)+_0x139254(0x190)),buttons=document[_0x139254(0x103)+_0x139254(0x229)](_0x139254(0x1c1)),tx=document[_0x139254(0x103)+_0x139254(0x229)]('x'),ty=document[_0x139254(0x103)+_0x139254(0x229)]('y'),context=canvas[_0x139254(0x12a)]('2d');let drawings=[],announcementIDs=[],currentDrawing=[],isDrawing=![],uiVisible=!![],currentColor=_0x139254(0x215),announceCount=0x133e+-0x197c+0x63f,connectionTimer=null,connectionSeconds=0x9bd+0x1*0x2030+-0x29ed,versionSet=![],ping=null;context[_0x139254(0x14b)+_0x139254(0x200)+'d']=!![],canvasContainer[_0x139254(0x141)][_0x139254(0x138)]=_0x139254(0x12b)+')';function getCookie(_0x1394f2){const _0x3f046b=_0x139254,_0x292ed9={'StSYG':function(_0x14afbe,_0xe5d1c5){return _0x14afbe===_0xe5d1c5;}},_0x324752=document[_0x3f046b(0x1d6)][_0x3f046b(0x110)](';')[_0x3f046b(0x16e)](_0x5ba63f=>_0x5ba63f[_0x3f046b(0x124)]());for(const _0x1bfc78 of _0x324752){const [_0x188c94,_0x5c7437]=_0x1bfc78[_0x3f046b(0x110)]('=')[_0x3f046b(0x16e)](_0x36c6ab=>decodeURIComponent(_0x36c6ab));if(_0x292ed9[_0x3f046b(0x1aa)](_0x188c94,_0x1394f2))return _0x5c7437;}return null;}function setCookie(_0x46999e,_0x25b2ae,_0x2ffe9c){const _0x3ad29c=_0x139254,_0x3e7a03={'OHzxS':function(_0x5384f9,_0x12c8e5){return _0x5384f9+_0x12c8e5;},'lOzNG':function(_0x5735c7,_0x46500a){return _0x5735c7+_0x46500a;},'DrSMs':function(_0x15e4a0,_0x53300b){return _0x15e4a0(_0x53300b);}},_0x2be0e9=new Date();_0x2be0e9[_0x3ad29c(0x1ab)](_0x3e7a03[_0x3ad29c(0x216)](_0x2be0e9[_0x3ad29c(0x136)](),_0x2ffe9c));const _0xb782b2=_0x3e7a03[_0x3ad29c(0x20b)](_0x3e7a03[_0x3ad29c(0x12f)](encodeURIComponent,_0x25b2ae),_0x2ffe9c?_0x3ad29c(0x154)+_0x2be0e9[_0x3ad29c(0x21a)+'g']():'');document[_0x3ad29c(0x1d6)]=_0x46999e+'='+_0xb782b2+_0x3ad29c(0x167);}function pinger(){const _0x408d38=_0x139254,_0x179f6d={'IPZFH':function(_0x3a9f0d,_0x1e0170){return _0x3a9f0d-_0x1e0170;},'Znnhc':function(_0x2cdb1b,_0x4eb111){return _0x2cdb1b+_0x4eb111;},'jrzgt':_0x408d38(0x137),'nAzXs':_0x408d38(0x1ad),'liFsk':_0x408d38(0x1cf)},_0xcb22fa=Date[_0x408d38(0x161)](),_0x3a521b=document[_0x408d38(0x103)+_0x408d38(0x229)](_0x179f6d[_0x408d38(0x153)])[_0x408d38(0x152)+_0x408d38(0xfb)]('p');socket['on'](_0x179f6d[_0x408d38(0x1be)],()=>{const _0x2c04e1=_0x408d38,_0x7b3304=_0x179f6d[_0x2c04e1(0x1a8)](Date[_0x2c04e1(0x161)](),_0xcb22fa);_0x3a521b[_0x2c04e1(0x230)+'t']=_0x179f6d[_0x2c04e1(0x11c)](_0x179f6d[_0x2c04e1(0x11c)](_0x179f6d[_0x2c04e1(0x1ea)],_0x7b3304),'ms'),document[_0x2c04e1(0x103)+_0x2c04e1(0x229)](_0x179f6d[_0x2c04e1(0x153)])[_0x2c04e1(0x141)][_0x2c04e1(0x117)]=-0x99a*-0x1+-0x1b77*-0x1+-0x3*0xc5b+0.25;}),socket[_0x408d38(0x130)](_0x179f6d[_0x408d38(0x153)]);}ping=setInterval(pinger,-0x1*-0x2441+-0x5*-0x27b+0x20*-0x166);function startConnectionTimer(){const _0x3ab0ef=_0x139254,_0x54b262={'wexXK':_0x3ab0ef(0x1db),'KLAYM':function(_0x5f514b,_0x3780fe){return _0x5f514b+_0x3780fe;},'HWmev':_0x3ab0ef(0x213)+_0x3ab0ef(0x118)+_0x3ab0ef(0x1fd),'GBjLH':_0x3ab0ef(0x16b),'xbmCH':function(_0x37e4f8,_0x472776){return _0x37e4f8>_0x472776;},'qDYIR':_0x3ab0ef(0x177)+_0x3ab0ef(0x15e),'awgAs':function(_0x492fdc,_0x54147e){return _0x492fdc(_0x54147e);},'zoZGQ':_0x3ab0ef(0x209),'nQhTa':_0x3ab0ef(0xea),'VRAuL':_0x3ab0ef(0x111)+_0x3ab0ef(0x1da),'wdhBm':_0x3ab0ef(0x1c4),'qYoAA':_0x3ab0ef(0x1d2)+_0x3ab0ef(0x18f)+_0x3ab0ef(0x1fb),'cGckY':_0x3ab0ef(0x107),'DqdOd':_0x3ab0ef(0x141),'BzvGj':_0x3ab0ef(0x12e)+_0x3ab0ef(0x1e2)+_0x3ab0ef(0x220)+_0x3ab0ef(0x228)+_0x3ab0ef(0x147),'BOVIl':_0x3ab0ef(0x1ef),'oMqSD':function(_0x438418){return _0x438418();},'ndUHB':function(_0xeebc82,_0x3a3a3c,_0x1c6630){return _0xeebc82(_0x3a3a3c,_0x1c6630);}},_0x29a0d4=document[_0x3ab0ef(0x152)+_0x3ab0ef(0xfb)](_0x54b262[_0x3ab0ef(0x108)]);if(_0x54b262[_0x3ab0ef(0x22d)](_0x29a0d4[_0x3ab0ef(0x152)+_0x3ab0ef(0x1b3)](_0x54b262[_0x3ab0ef(0x11d)])[_0x3ab0ef(0x20a)],0x22ad+-0x4d8+-0x1dd5))return;_0x54b262[_0x3ab0ef(0x198)](clearInterval,ping);const _0x5a33e9Line truncated
|
||||
@@ -0,0 +1,5 @@
|
||||
const isMobile = /iPhone|iPad|iPod|Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
||||
|
||||
if (isMobile) {
|
||||
window.location.href = 'denied.html';
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
const isMobile = /iPhone|iPad|iPod|Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
||||
|
||||
if (isMobile) {
|
||||
window.location.href = 'denied.html';
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
const isMobile = /iPhone|iPad|iPod|Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
||||
|
||||
if (isMobile) {
|
||||
window.location.href = 'denied.html';
|
||||
}
|
||||
@@ -0,0 +1,411 @@
|
||||
const fs = require('fs');
|
||||
const winston = require('winston');
|
||||
const path = require('path');
|
||||
|
||||
const logDir = 'logs';
|
||||
if (!fs.existsSync(logDir)) {
|
||||
fs.mkdirSync(logDir);
|
||||
}
|
||||
|
||||
const getLogFileName = () => {
|
||||
const now = new Date();
|
||||
return `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}.log`;
|
||||
};
|
||||
|
||||
const createLogger = () => {
|
||||
const logFileName = path.join(logDir, getLogFileName());
|
||||
|
||||
return winston.createLogger({
|
||||
level: 'info',
|
||||
format: winston.format.combine(
|
||||
winston.format.timestamp({
|
||||
format: 'YYYY-MM-DD HH:mm:ss'
|
||||
}),
|
||||
winston.format.printf(({ timestamp, level, message }) => `[${timestamp}] [${level.toUpperCase()}] ${message}`)
|
||||
),
|
||||
transports: [
|
||||
new winston.transports.File({ filename: logFileName }),
|
||||
new winston.transports.Console()
|
||||
],
|
||||
handleExceptions: true
|
||||
});
|
||||
};
|
||||
|
||||
let logger = createLogger();
|
||||
|
||||
const rotateLogs = () => {
|
||||
const newLogFileName = getLogFileName();
|
||||
const currentLogFileName = logger.transports.find(t => t instanceof winston.transports.File).filename;
|
||||
|
||||
if (newLogFileName !== path.basename(currentLogFileName)) {
|
||||
logger = createLogger();
|
||||
}
|
||||
};
|
||||
|
||||
setInterval(rotateLogs, 24 * 60 * 60 * 1000);
|
||||
|
||||
console.log = (msg) => logger.info(msg);
|
||||
console.error = (msg) => logger.error(msg);
|
||||
|
||||
const yaml = require('yaml');
|
||||
let config = yaml.parse(fs.readFileSync('config.yaml', 'utf8'));
|
||||
|
||||
console.log(consoleInfo("info") + "Starting Collavas server v" + config.version);
|
||||
console.log(consoleInfo("info") + "Loading Dependencies...");
|
||||
const express = require('express');
|
||||
const http = require('http');
|
||||
const socketIO = require('socket.io');
|
||||
const cors = require('cors');
|
||||
const readline = require('readline');
|
||||
const axios = require('axios');
|
||||
const { v4: uuidv4 } = require('uuid');
|
||||
let users = JSON.parse(fs.readFileSync("users.json", 'utf-8'));
|
||||
|
||||
const app = express();
|
||||
app.use(cors());
|
||||
|
||||
const server = http.createServer(app);
|
||||
const io = socketIO(server);
|
||||
|
||||
console.log(consoleInfo("info") + "Successfully started!");
|
||||
|
||||
const DRAWINGS_FILE = 'drawings.json';
|
||||
|
||||
app.use(express.static('public'));
|
||||
|
||||
app.get('/', (req, res) => {
|
||||
res.sendFile(__dirname + '/index.html');
|
||||
});
|
||||
|
||||
let drawings = loadDrawings();
|
||||
let messages = JSON.parse(fs.readFileSync("chat.json", 'utf-8'));;
|
||||
let changesCounter = 0;
|
||||
let count = 0;
|
||||
let connectedClients = 0;
|
||||
let enabled = true;
|
||||
let consolelog = true;
|
||||
let loadExistingDrawings = true;
|
||||
let chat = [];
|
||||
|
||||
messages.forEach(message => {
|
||||
const messageUserIndex = users.findIndex(user => user.uuid == message.uuid);
|
||||
const messageUser = users[messageUserIndex];
|
||||
|
||||
if (messageUser) {
|
||||
message.name = (messageUser.name.trim() != "" ? messageUser.name : "user_" + messageUserIndex);
|
||||
chat.push(message);
|
||||
}
|
||||
});
|
||||
|
||||
const rl = readline.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout
|
||||
});
|
||||
|
||||
rl.on('line', (input) => {
|
||||
const commandParts = input.trim().split(' ');
|
||||
const command = commandParts.shift();
|
||||
const colorIndex = commandParts.findIndex(part => ['blue', 'indigo', 'purple', 'pink', 'red', 'orange', 'yellow', 'green', 'teal', 'cyan', 'white', 'gray', 'gray-dark', 'primary', 'secondary', 'success', 'info', 'warning', 'danger', 'light', 'dark'].includes(part));
|
||||
let message, color;
|
||||
if (colorIndex !== -1) {
|
||||
color = commandParts[colorIndex];
|
||||
message = commandParts.slice(0, colorIndex).join(' ');
|
||||
} else {
|
||||
message = commandParts.join(' ');
|
||||
}
|
||||
switch (command) {
|
||||
case 'announce':
|
||||
announce(message, color);
|
||||
break;
|
||||
case 'reload':
|
||||
reloadall();
|
||||
break;
|
||||
case 'play':
|
||||
playaudio(message);
|
||||
break;
|
||||
case 'save':
|
||||
saveDrawings();
|
||||
drawings = loadDrawings();
|
||||
break;
|
||||
case 'users':
|
||||
console.log(JSON.stringify(users));
|
||||
break;
|
||||
case 'remove':
|
||||
users = users.filter(item => item !== message);
|
||||
console.log(consoleInfo("info") + "Removed " + message);
|
||||
break;
|
||||
case 'drawTog':
|
||||
enabled = (enabled) ? false : true;
|
||||
console.log(consoleInfo("info") + ((enabled) ? "Enabled drawing" : "Disabled drawing"));
|
||||
break;
|
||||
case 'loadTog':
|
||||
loadExistingDrawings = (loadExistingDrawings) ? false : true;
|
||||
console.log(consoleInfo("info") + ((loadExistingDrawings) ? "Enabled loading existing drawings" : "Disabled loading existing drawings"));
|
||||
break;
|
||||
case 'logTog':
|
||||
consolelog = (consolelog) ? false : true;
|
||||
console.log(consoleInfo("info") + ((consolelog) ? "Enabled console logging" : "Disabled console logging"));
|
||||
break;
|
||||
case 'exit':
|
||||
exitServer();
|
||||
break;
|
||||
default:
|
||||
console.log(`${consoleInfo("info")} Unknown command: ${command}`);
|
||||
}
|
||||
});
|
||||
|
||||
function announce(message, color = 'white') {
|
||||
console.log(`${consoleInfo("info")} Announcement: ${message} (Color: ${color})`);
|
||||
io.emit('announcement', { message, color });
|
||||
}
|
||||
|
||||
function reloadall() {
|
||||
io.emit('reload');
|
||||
}
|
||||
|
||||
function playaudio(link) {
|
||||
var id = uuidv4();
|
||||
var directory = "C:/nginx/web/www.collavas.com/public/static/audio/";
|
||||
|
||||
if(link != "stop") {
|
||||
if (!fs.existsSync(directory)) {
|
||||
fs.mkdirSync(directory, { recursive: true });
|
||||
}
|
||||
|
||||
console.log(consoleInfo("info") + "Downloading...");
|
||||
axios({
|
||||
method: 'get',
|
||||
url: link,
|
||||
responseType: 'stream'
|
||||
})
|
||||
.then(response => {
|
||||
response.data.pipe(fs.createWriteStream(directory + id + ".mp3"));
|
||||
link = "/static/audio/" + id + ".mp3";
|
||||
|
||||
setTimeout(() => {
|
||||
io.emit('play', { audio: link });
|
||||
console.log(consoleInfo("info") + "Done, now playing to clients");
|
||||
}, 5000);
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(consoleInfo("info") + 'Error downloading the MP3 file:', error);
|
||||
});
|
||||
} else {
|
||||
io.emit('play', { audio: "stop" });
|
||||
console.log(consoleInfo("info") + "Stopped");
|
||||
}
|
||||
}
|
||||
|
||||
function exitServer() {
|
||||
console.log(consoleInfo("info") + "Server is shutting down...");
|
||||
saveDrawings();
|
||||
saveChat();
|
||||
setTimeout(() => {
|
||||
process.exit(0);
|
||||
}, 500);
|
||||
}
|
||||
|
||||
io.on('connection', (socket) => {
|
||||
connectedClients++;
|
||||
updateConsole();
|
||||
|
||||
io.emit('dataSize', { size: (fs.statSync(DRAWINGS_FILE).size / (1024 * 1024)).toFixed(2) });
|
||||
io.emit('connectedClients', connectedClients);
|
||||
io.emit('version', config.version);
|
||||
|
||||
let userFound = false;
|
||||
|
||||
users.forEach(entry => {
|
||||
if(entry.ip == socket.handshake.headers['x-forwarded-for']) {
|
||||
const userIndex = users.findIndex(user => user.uuid == entry.uuid);
|
||||
const user = users[userIndex];
|
||||
|
||||
if(user) {
|
||||
if(!entry.name) {
|
||||
users[userIndex].name = "";
|
||||
entry.name = "";
|
||||
}
|
||||
|
||||
if(!entry.lastNameChange) {
|
||||
users[userIndex].lastNameChange = new Date();
|
||||
}
|
||||
|
||||
if(!entry.lastChat) {
|
||||
users[userIndex].lastChat = new Date();
|
||||
}
|
||||
|
||||
userFound = true;
|
||||
|
||||
if(loadExistingDrawings) {
|
||||
socket.emit('draw', { type: 'existingDrawings', drawings: JSON.stringify(drawings), id: entry.uuid, name: entry.name, chat: JSON.stringify(chat) });
|
||||
}
|
||||
|
||||
socket.emit('chat', { type: 'existingMessages', messages: JSON.stringify(chat) });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if(!userFound) {
|
||||
const uuid = uuidv4();
|
||||
users.push({ uuid: uuid, name: "", ip: socket.handshake.headers['x-forwarded-for'], lastdraw: new Date(), lastNameChange: new Date(), lastChat: new Date() });
|
||||
|
||||
if(loadExistingDrawings) {
|
||||
socket.emit('draw', { type: 'existingDrawings', drawings: JSON.stringify(drawings), id: uuid, name: "", chat: JSON.stringify(chat) });
|
||||
}
|
||||
}
|
||||
|
||||
socket.on('changeName', (data) => {
|
||||
const invalidChars = /[<>\s;:.\)\(*&^%$?/#\-+=\\|"@!~`]/;
|
||||
|
||||
if(invalidChars.test(data.name)) {
|
||||
socket.emit('changeName', { status: { message: "Invalid characters" } });
|
||||
} else if(users.find(user => user.name == data.name) && data.name.trim() != "") {
|
||||
socket.emit('changeName', { status: { message: "A user already exists with this name" } });
|
||||
} else if(new Date().getTime() - new Date(users.find(user => user.uuid == data.uuid).lastNameChange).getTime() < 10000) {
|
||||
socket.emit('changeName', { status: { message: "Wait before you change your name again" } });
|
||||
} else {
|
||||
users[users.findIndex(user => user.uuid == data.uuid)].name = data.name;
|
||||
users[users.findIndex(user => user.uuid == data.uuid)].lastNameChange = new Date();
|
||||
socket.emit('changeName', { status: { message: "Successfully changed name" } });
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('message', (data) => {
|
||||
if (data && typeof data.content === 'string' && data.content.trim() != "" && data.content.length < 150) {
|
||||
const user = users.find(user => user.uuid == data.uuid);
|
||||
if (user && new Date().getTime() - new Date(user.lastChat).getTime() > 1000) {
|
||||
data.date = new Date();
|
||||
messages.push(data);
|
||||
users[users.findIndex(entry => entry.uuid == data.uuid)].lastChat = new Date();
|
||||
io.emit('chat', {
|
||||
type: 'message',
|
||||
uuid: data.uuid,
|
||||
name: (user.name.trim() != "" ? user.name : "user_" + users.findIndex(entry => entry.uuid == data.uuid)),
|
||||
content: data.content
|
||||
});
|
||||
saveChat();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('draw', (data) => {
|
||||
const keysOrder = JSON.stringify(Object.keys(data));
|
||||
if (keysOrder == JSON.stringify(["type", "drawing", "valid"]) && data.type === 'draw' && data.drawing && data.drawing.length > 1 && data.valid /*&& data.drawing[1] && !(data.drawing[0].x < 100) && !(data.drawing[data.drawing.length - 1].x > 9000) */&& users.find(user => user.uuid == data.valid) && enabled) {
|
||||
const entry = users.find(user => user.uuid == data.valid);
|
||||
console.log(new Date().getTime() - entry.lastdraw + " " + new Date().getTime());
|
||||
|
||||
if (new Date().getTime() - new Date(entry.lastdraw).getTime() < 2000) {
|
||||
if(consolelog) {
|
||||
console.error(consoleInfo("info") + 'Drawing data exceeds the maximum size. Seconds: ' + new Date().getTime() - new Date(entry.lastdraw).getTime() + ' Length: ' + data.drawing.length);
|
||||
}
|
||||
socket.emit('drawLimit');
|
||||
|
||||
/*
|
||||
data.drawing = data.drawing.slice(0, 25);
|
||||
drawings.push(data.drawing);
|
||||
saveDrawings();
|
||||
drawings = loadDrawings();
|
||||
socket.emit('dataSize', { size: (fs.statSync(DRAWINGS_FILE).size / (1024 * 1024)).toFixed(2) });
|
||||
*/
|
||||
} else {
|
||||
socket.broadcast.emit('draw', { type: 'draw', drawing: data.drawing });
|
||||
drawings.push(data.drawing);
|
||||
users[users.findIndex(user => user.uuid == data.valid)].lastdraw = new Date();
|
||||
|
||||
if(consolelog) {
|
||||
console.log(consoleInfo("info") + data.valid + " " + JSON.stringify(data));
|
||||
}
|
||||
|
||||
if(count > 10) {
|
||||
saveDrawings();
|
||||
drawings = loadDrawings();
|
||||
socket.emit('dataSize', { size: (fs.statSync(DRAWINGS_FILE).size / (1024 * 1024)).toFixed(2) });
|
||||
count = 0;
|
||||
} else {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(consolelog) {
|
||||
console.log(consoleInfo("info") + "Drawing not authenticated" + " " + data.valid);
|
||||
}
|
||||
socket.emit('drawLimit');
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('ping', () => {
|
||||
socket.emit('pong');
|
||||
});
|
||||
|
||||
socket.on('disconnect', () => {
|
||||
connectedClients--;
|
||||
updateConsole();
|
||||
io.emit('connectedClients', connectedClients);
|
||||
});
|
||||
});
|
||||
|
||||
server.listen(config.port, () => {
|
||||
console.log(consoleInfo("info") + 'Server is running on port ' + config.port);
|
||||
updateConsole();
|
||||
});
|
||||
|
||||
function removeDuplicates(arr) {
|
||||
if (!Array.isArray(arr)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
function isEqual(obj1, obj2) {
|
||||
return obj1.x === obj2.x && obj1.y === obj2.y && obj1.color === obj2.color;
|
||||
}
|
||||
|
||||
const uniqueArrays = arr.map(innerArray =>
|
||||
innerArray.filter((elem, index) =>
|
||||
index === innerArray.findIndex((t) => isEqual(t, elem))
|
||||
)
|
||||
);
|
||||
|
||||
return uniqueArrays;
|
||||
}
|
||||
|
||||
function loadDrawings() {
|
||||
try {
|
||||
const data = fs.readFileSync(DRAWINGS_FILE, 'utf-8');
|
||||
return JSON.parse(data) || [];
|
||||
} catch (error) {
|
||||
console.error(consoleInfo("error") + 'Error loading drawings:', error.message);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function saveDrawings() {
|
||||
console.log(consoleInfo("info") + "Saving drawings");
|
||||
try {
|
||||
fs.writeFileSync(DRAWINGS_FILE, JSON.stringify(removeDuplicates(drawings)), 'utf-8');
|
||||
console.log(consoleInfo("info") + "Drawings saved");
|
||||
} catch (error) {
|
||||
console.error(consoleInfo("error") + 'Error saving drawings:', error.message);
|
||||
}
|
||||
}
|
||||
|
||||
function saveChat() {
|
||||
console.log(consoleInfo("info") + "Saving chat");
|
||||
try {
|
||||
fs.writeFileSync("chat.json", JSON.stringify(messages), 'utf-8');
|
||||
console.log(consoleInfo("info") + "Chat saved");
|
||||
} catch (error) {
|
||||
console.error(consoleInfo("error") + 'Error saving chat:', error.message);
|
||||
}
|
||||
}
|
||||
|
||||
function updateConsole() {
|
||||
if(consolelog) {
|
||||
console.log(`${consoleInfo("info")}Connected Clients: ${io.sockets.sockets.size}`);
|
||||
}
|
||||
}
|
||||
|
||||
function consoleInfo(type) {
|
||||
const currentDate = new Date();
|
||||
return "";
|
||||
//return "[" + currentDate.getFullYear() + "-" + String(currentDate.getMonth() + 1).padStart(2, '0') + "-" + String(currentDate.getDate()).padStart(2, '0') + " " + String(currentDate.getHours()).padStart(2, '0') + ":" + String(currentDate.getMinutes()).padStart(2, '0') + ":" + String(currentDate.getSeconds()).padStart(2, '0') + "] [" + type.toUpperCase() + "] ";
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
Reference in new issue
Block a user