BetterLZT

Сделай свой жизнь на LolzTeam проще!

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         BetterLZT
// @namespace    hasanbet
// @version      v46
// @description  Сделай свой жизнь на LolzTeam проще!
// @author       https://zelenka.guru/lays (openresty)
// @match        https://zelenka.guru/*
// @match        https://lolz.live/*
// @match        https://lzt.market/*
// @match        https://zelenka.market/*
// @match        https://lolz.market/*
// @grant        GM_xmlhttpRequest
// @grant        GM.setValue
// @grant        GM.getValue
// @grant        unsafeWindow
// @connect      lzt.hasanbek.ru
// @connect      localhost
// @run-at       document-body
// @icon         https://www.google.com/s2/favicons?sz=64&domain=zelenka.guru
// @license MIT
// ==/UserScript==
 
// 5.0.1.1
const
    version         = "5.0 (beta 1)",
    blzt_link_tos   = "https://zelenka.guru/threads/5816508/",
    blzt_link_trust = "https://zelenka.guru/threads/5821466/",
    server          = "http://lzt.hasanbek.ru:8880",
    adlist_w        = ["zelenka.guru/threads/3649746", "http://proxysoxy.com", "zelenka.guru/threads/2770783", "https://t.me/talkthenews", "https://zelenka.guru/threads/5862277/", "zelenka.guru/threads/5802663/", "@UniServBot", "zelenka.guru/threads/5886612", "https://zelenka.guru/threads/5830418/", "zelenka.guru/angeldrainer/", "zelenka.guru/threads/5883557", "zelenka.guru/threads/5720998", "https://zelenka.guru/threads/5488501", "https://zelenka.guru/threads/4871985/", "zelenka.guru/threads/3649746", "zelenka.guru/threads/5402454", "zelenka.guru/threads/2630352", "https://t.me/poseidon_project", "https://zelenka.guru/threads/4826265/", "zelenka.guru/threads/4939541", "zelenka.guru/threads/4073607", "zelenka.guru/threads/5071761/", "https://zelenka.guru/threads/3695705/", "zelenka.guru/members/4177803", "@verif_ads", "verifteam", "SmmPanelUS.com", "lteboost.ru"],
    adlist_l        = ["threads", "members", "lolz.live", "zelenka.guru", "t.me"],
    adlist_white    = ["zelenka.guru/threads/5545248/", "https://zelenka.guru/extasystudio/"];
 
let usercfg,
    adblock,
    nickname,
    userid,
    cache,
    secure,
    hidelike,
    secretph,
    marketblock,
    theme,
    avamarket,
    avablock,
    contestblock,
    uniqstatus,
    reportbtns;
 
(async function() {
    usercfg      = await GM.getValue("usercfg") ? GM.getValue("usercfg") : `{'cfg': {}}`
    adblock     = await GM.getValue("adblock") ? GM.getValue("adblock") : 'null';
    avablock    = await GM.getValue("avablock") ? GM.getValue("avablock") : 'null';
    cache       = await GM.getValue("cache") ? GM.getValue("cache") : 'null';
    secure      = await GM.getValue("secure") ? GM.getValue("secure") : 'not';
    hidelike    = await GM.getValue("hidelike") ? GM.getValue("hidelike") : 'null';
    marketblock = await GM.getValue("marketblock") ? GM.getValue("marketblock") : 'null';
    secretph    = await GM.getValue("secretph") ? GM.getValue("secretph") : 'not';
    theme       = await GM.getValue("theme") ? GM.getValue("theme") : 'null';
    avamarket   = await GM.getValue("avamarket") ? GM.getValue("avamarket") : 'null';
    uniqstatus  = await GM.getValue("uniqstatus") ? GM.getValue("uniqstatus") : 'null';
    contestblock= await GM.getValue("contestblock") ? GM.getValue("contestblock") : 'null';
    reportbtns   = await GM.getValue("reportbtns") ? GM.getValue("reportbtns") : 'null';
    window.addEventListener("DOMContentLoaded",async (event) => {
        profileRender();
        usernames();
        themeRender();
        renderFunctions();
        userid   = document.querySelector("input[name=_xfToken").value.split(",")[0];
        nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
        cacheSync();
        marketRender();
        threadRender();
        checkupdate();
    })
    setInterval(async () => {
        adBlockDaemon();
        daemon();
    }, 0);
    setInterval(usernames, 500);
 
})();
 
async function threadRender() {
 
    if (!window.location.pathname.includes('threads')) {return;}
    // Быстрый репорт, спасибо Jack'у
    const buttons = {
        "Флуд / Оффтоп / Спам / Бесполезная тема": {
            name: 'Флуд',
        },
        "Создание темы не в соответствующем разделе": {
            name: 'Неверный раздел',
        },
        "Неправильное оформление темы": {
            name: 'Неверное оформление',
        },
    }
    const _xfToken = document.querySelector('input[name="_xfToken"]').value;
 
    async function postData(url = '', formData) {
        return await fetch(url, { method: 'POST', body: formData });
    }
 
    function addButtonToPosts() {
        const blocks = document.querySelectorAll('#messageList > li');
        for(let block of blocks) {
            if (block.querySelector(".custom-button")) {
                continue;
            }
 
            for(let key in buttons) {
                let name = buttons[key].name;
                let message = buttons[key].message;
                let span = document.createElement('span');
                span.innerText = name;
                span.className = "custom-button";
                span.setAttribute('style', 'font-weight: bold; padding: 3px 10px; background: #218e5d; border-radius: 50px; margin-right: 5px; cursor: pointer;')
                span.onclick = function() {
                    if(!confirm('Вы действительно хотите отправить жалобу?')) return false;
                    let formData = new FormData();
                    formData.append("message", key);
                    formData.append("is_common_reason", 1);
                    formData.append("_xfToken", _xfToken);
                    formData.append("_xfNoRedirect", 1);
                    formData.append("_xfToken", _xfToken);
                    formData.append("redirect", window.location.href);
                    postData('posts/' + block.id.split('-')[1] +'/report', formData);
                    XenForo.alert('Жалоба отправлена', '', 5000);
                }
                if(block.querySelector('.publicControls')) block.querySelector('.publicControls').prepend(span);
            }
        }
    }
 
 
    if (await reportbtns == 'on') {
        addButtonToPosts();
        const observer = new MutationObserver(function(mutations) {
            mutations.forEach(function(mutation) {
                if (mutation.type === 'childList') {
                    addButtonToPosts();
                }
            });
        });
        observer.observe(document.getElementById('messageList'), { childList: true });
    }
 
}
 
async function daemon() {
 
    let nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
    if (document.querySelector("input[name=secret_answer]:not(.completed)") && await secretph != 'null') {
        document.querySelector("input[name=secret_answer]:not(.completed)").value = await secretph;
        document.querySelector("input[name=secret_answer]:not(.completed)").classList.add("completed")
    }
 
    // Сканирование bb-кодов в треде (они должны быть самыми первыми)
    if (document.location.pathname.includes('threads') && document.querySelector("blockquote")) {
        if (document.querySelector("blockquote").innerHTML.trim().includes("betterfast")) return;
    }
    return;
}
 
async function themeRender() {
 
    let usernickt = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
    let data = await JSON.parse(await cache);
    data = data.users[usernickt];
    if (data) {
        if (data.profilebg != 'null') {
            if (!document.querySelector(".avatarScaler")) {
                document.querySelector("body").style = `
                background-size: cover;
                background-position: center;
                background-attachment: fixed;
                background-repeat: no-repeat;
                background-image: linear-gradient(rgba(54, 54, 54, 0.85), rgba(54, 54, 54, 0.85)), url('${data.profilebg}')`
            }
        }
    }
 
    // акцент профиля
    // .messageSimple .secondaryContent .darkBackground .tabs .simpleRedactor .pageNavLinkGroup
    if (data && data.maincolor) {
            if (!document.querySelector(".avatarScaler")) {
                styles = `#header, .messageSimple, .discussionList, .sidebar .sidebarWrapper, .secondaryContent, .darkBackground, .tabs, .simpleRedactor, .pageNavLinkGroup {background: ${data.maincolor};} .page_top {border-bottom: 0;} .counts_module {border-top: 0;}`
                let styleSheet = document.createElement("style")
                styleSheet.innerText = styles;
                document.head.appendChild(styleSheet);
            }
    }
 
    if(await theme != 'null') {
        var link = document.createElement( "link" );
        link.href = "https://lzt.hasanbek.ru/better/css/" + await theme + ".css";
        link.type = "text/css";
        link.rel = "stylesheet";
        document.getElementsByTagName( "head" )[0].appendChild( link );
    }
}
 
async function profileRender() {
    if (!document.querySelector(".avatarScaler")) return false;
    // ид юзера
    const id = /market\/user\/(\d+)\/items/.exec(document.querySelector('.userContentLinks .button[href^="market/"]').href)[1];
    idhtml = document.createElement("div");
    idhtml.innerHTML = `<div class="clear_fix profile_info_row"><div class="label fl_l">ID пользователя:</div><div class="labeled">${id}<span data-phr="ID скопирован в буфер обмена" onclick="Clipboard.copy(${id}, this)" class="copyButton Tooltip" title="" data-cachedtitle="Скопировать ID" tabindex="0"><i class="far fa-clone" aria-hidden="true"></i>
    </span></div></div>`;
    document.querySelector(".profile_info_row").prepend(idhtml)
 
    // фон профиля
 
    let usernickt = document.querySelector("h1.username span").innerHTML.replace(/ <i.*?>.*?<\/i>/ig,'');
    let data = await JSON.parse(await cache);
    data = data.users[usernickt];
    if (data && data.profilebg) {
            document.querySelector("body").style = `
            background-size: cover;
            background-position: center;
            background-attachment: fixed;
            background-repeat: no-repeat;
            background-image: linear-gradient(rgba(54, 54, 54, 0.85), rgba(54, 54, 54, 0.85)), url('${data.profilebg}')`;
    }
 
    // акцент профиля
    // .messageSimple .secondaryContent .darkBackground .tabs .simpleRedactor .pageNavLinkGroup
    if (data && data.maincolor) {
            styles = `#header, .messageSimple, .discussionList, .sidebar .sidebarWrapper, .secondaryContent, .darkBackground, .tabs, .simpleRedactor, .pageNavLinkGroup {background: ${data.maincolor};} .page_top {border-bottom: 0;} .counts_module {border-top: 0;}`
            let styleSheet = document.createElement("style")
            styleSheet.innerText = styles;
            document.head.appendChild(styleSheet);
    }
 
    // Скрытие лайков
    if (await hidelike=='on') document.querySelectorAll(".page_counter")[1].remove();
    // TrustFactor
   trustFactor();
}
 
async function trustFactor() {
    let usertrust = 0;
    let user_symps = parseInt(document.querySelector(".page_counter .count").innerHTML.replace(' ', '')),
        user_nick = document.querySelector("h1.username span").innerHTML.replace(/ <i.*?>.*?<\/i>/ig,''),
        user_role = document.querySelector("h1.username span").classList,
        user_insurance = parseInt(document.querySelector('h3.amount').innerHTML.replaceAll(' ','').replace('₽',''));
 
    const depositLevels = [
        { level: 10000, trustVal: 10 },
        { level: 20000, trustVal: 5 },
        { level: 50000, trustVal: 5 },
        { level: 100000, trustVal: 10 },
        { level: 200000, trustVal: 5 },
        { level: 300000, trustVal: 5 },
        { level: 500000, trustVal: 15 },
        { level: 700000, trustVal: 20 }
    ];
    const sympsLevels = [
        { level: 500, trustVal: 10 },
        { level: 1000, trustVal: 15 },
        { level: 1700, trustVal: 10 },
        { level: 3500, trustVal: 5 },
        { level: 5000, trustVal: 10 },
        { level: 7000, trustVal: 15 },
        { level: 10000, trustVal: 10 },
        { level: 20000, trustVal: 10 },
        { level: 30000, trustVal: 15 },
        { level: 40000, trustVal: 5 },
        { level: 50000, trustVal: 5 }
    ];
    const roleLevels = [
        { level: 3, trustVal: 85 },
        { level: 4, trustVal: 25 },
        { level: 30, trustVal: 35 },
        { level: 365, trustVal: 15 },
        { level: 353, trustVal: 40 },
        { level: 12, trustVal: 35 },
        { level: 349, trustVal: 20 },
        { level: 350, trustVal: 40 },
        { level: 354, trustVal: 35 },
        { level: 7, trustVal: 30 },
        { level: 26, trustVal: 1 }
    ];
 
    for (const level of depositLevels) {
        if (user_insurance > level.level) {
            usertrust += level.trustVal;
        }else break;
    }
    for (const level of sympsLevels) {
        if (user_symps > level.level) {
            usertrust += level.trustVal;
        }else break;
    }
    for (const level of roleLevels) {
        if (user_role.contains("banned")) {usertrust = 0; break;}
        if (user_role.contains("style"+level.level)) {
            usertrust += level.trustVal;
        }else break;
    }
 
    if(usertrust > 100) usertrust = 100;
    // переписать
    if (usertrust > 15 && usertrust < 35)
    {
        blzt_trust_text = 'Плохой (1/4)';
        blzt_trust_color = 'redc';
    }
    else if (usertrust >= 35 && usertrust < 65)
    {
        blzt_trust_text = 'Нормальный (2/4)';
        blzt_trust_color = 'mainc';
    }
    else if (usertrust >= 65 && usertrust < 84)
    {
        blzt_trust_text = 'Отличный (3/4)';
        blzt_trust_color = 'mainc';
    }
    else if (usertrust >= 84)
    {
        blzt_trust_text = 'Наивысший(4/4)';
        blzt_trust_color = 'mainc';
    }
    else {
        blzt_trust_text = 'Ужасный (0/4)';
        blzt_trust_color = 'redc';
    }
 
    let blzt_trust = document.querySelector(".insuranceDeposit");
 
    let blzt_trust_render = `
    <br>
    <div class="section insuranceDeposit">
        <div class="secondaryContent">
            <h3>
                <a href="${blzt_link_trust}" class="OverlayTrigger username" style="max-width: 200px; word-wrap: break-word;">
                    Уровень доверия к ${user_nick}
                </a>
            </h3>
 
            <h3 style="margin-bottom: 0px; font-size: 18px !important;" class="amount ${blzt_trust_color}" title="${usertrust}">
            ${blzt_trust_text}
            </h3>
            <div style="margin-top: 15px;  display: flex; gap: 5px;">
                <a class="button leftButton primary" onclick="goodTrust(${usertrust})">👍</a>
                <a class="button rightButton primary"  onclick="badTrust(${usertrust})">👎</a>
            </div>
        </div>
    </div>`;
 
    let blzt_trust_block = document.createElement("div");
        blzt_trust_block.innerHTML = blzt_trust_render;
 
    blzt_trust.append(blzt_trust_block);
    console.log(`[BetterLZT] Фактор доверия ${user_nick} = ${usertrust} (${blzt_trust_text})`)
}
function badTrust(trust) {
    let html = `
    <p>Почему вы считаете, что рейтинг завышен? Выберите один из вариантов (Кликните)</p>
    <div>
        <a class="container" style="color: rgb(34,142,93);" onclick="commitVote('scam', ${trust}, '-4points')">
            Пользователь занимался/занимается скамом, и это доказано
        </a>
        <a class="container" style="color: rgb(34,142,93);" onclick="commitVote('toxic', ${trust}, '-4points')">
            Этот пользователь оскорбил меня/другого человека без оснований
        </a>
        <a class="container" style="color: rgb(34,142,93);" onclick="commitVote('reporter', ${trust}, '-4points')">
            Этот пользователь занимается "Абузом жалоб"
        </a>
    </div>
    <p>Спасибо за Ваш вклад в BetterLZT</p>
    `;
    XenForo.alert(html, "BetterLZT > Фактор доверия");
}
 
function goodTrust(trust) {
    let html = `
    <p>Почему вы считаете, что рейтинг занижен? Выберите один из вариантов (Кликните)</p>
    <div>
        <a class="container" style="color: rgb(34,142,93);" onclick="commitVote('goodseller', ${trust}, '+3points')">
            Пользователь занимается торговлей на маркете/форуме и имеет более 90% положительных отзывов
        </a>
        <a class="container" style="color: rgb(34,142,93);" onclick="commitVote('helper', ${trust}, '+3points')">
            Этот пользователь помог мне (финансово/морально/физически)
        </a>
        <a class="container" style="color: rgb(34,142,93);" onclick="commitVote('inovator', ${trust}, '+3points')">
            Этот пользователь принес форуму что-то новое (Предложил функционал, как пример)
        </a>
    </div>
    <p>Спасибо за Ваш вклад в BetterLZT</p>
    `;
    XenForo.alert(html, "BetterLZT > Фактор доверия");
}
async function commitVote(reason, trust, type) {
    if (!reason) return XenForo.alert("Укажите комментарий!", 1, 10000);
    nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
    let blzt_puser_likes = parseInt(document.querySelector(".page_counter .count").innerHTML.replace(' ', ''));
    let blzt_puser_nick = document.querySelector("h1.username span"),
        blzt_puser_nick_val = blzt_puser_nick.innerHTML.replace(/ <i.*?>.*?<\/i>/ig,'').replace(/<img.*?>/g,''),
        blzt_puser_role = blzt_puser_nick.classList,
        blzt_puser_deposit = parseInt(document.querySelector('h3.amount').innerHTML.replaceAll(' ','').replace('₽',''));
    if (nickname == blzt_puser_nick_val) {
        return XenForo.alert("Остановись! Саморепорт карается баном в системе фактора доверия!", 1, 10000)
    }
    let response = await request(`${server}/v6/report?user=${nickname}&originuser=${blzt_puser_nick_val}&originurl=${window.location.pathname}&originaction=${type}&origintrust=${trust}&origindeposit=${blzt_puser_deposit}&originlikes=${blzt_puser_likes}&comment=${reason}`)
    if (response  == "200") {
        return XenForo.alert("Успех!", 1, 10000)
    }
    else if (response == "403") {
        return XenForo.alert("Доступ к функционалу ограничен. Свяжитесь с разработчиком", 1, 10000)
    }
    else {
        return XenForo.alert("Ошибка", 1, 10000)
    }
}
 
function request(url) {
    return new Promise((resolve, reject) => GM_xmlhttpRequest({
        method: "GET",
        url: url,
        onload: response => resolve(response.responseText),
        onerror: error => resolve(error)
    }));
}
 
function getUID() {
    return document.querySelector("input[name=_xfToken").value.split(",")[0];
}
async function uniqDel() {
    nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
    if (secure == 'null') {
        await setSecure(`${document.querySelector("input[name=_xfToken").value.split(",")[0]+document.querySelector("input[name=_xfToken").value.split(",")[1]}`);
    }
    let req = await request(`${server}/se/del?user=${nickname}&css=${css}&banner=${banner}&bannertxt=${bannertxt}&svgcss=${svgcss}&svg=${svg}`).catch(e => {
        XenForo.alert("Ошибка синхронизации с сервером, попробуйте еще раз", 1, 10000)
    });
    if (await req != '200' && req != '401') {
        XenForo.alert("Ошибка синхронизации с сервером, свяжитесь с разработчиком t.me/hasantigiev or zelenka.guru/lays", 1, 10000)
    }
    if (await req == '401') {
        XenForo.alert("Для вашего профиля не найдены ключи авторизации. Cвяжитесь с разработчиком t.me/hasantigiev or zelenka.guru/lays", 1, 10000)
    }
    if (await req == '200') {
        XenForo.alert("Успех", 1, 10000);
        cacheSync();
        location.reload();
    }
}
async function uniqChange() {
    nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
    if (secure == 'null') {
        await setSecure(`${document.querySelector("input[name=_xfToken").value.split(",")[0]+document.querySelector("input[name=_xfToken").value.split(",")[1]}`);
    }
    let req = await request(`${server}/v6/change?user=${nickname}`).catch(e => {
        XenForo.alert("Ошибка синхронизации с сервером, попробуйте еще раз", 1, 10000)
    });
    if (await req != '200' && req != '401') {
        XenForo.alert("Ошибка синхронизации с сервером, свяжитесь с разработчиком t.me/hasantigiev or zelenka.guru/lays", 1, 10000)
    }
    if (await req == '401') {
        XenForo.alert("Для вашего профиля не найдены ключи авторизации. Cвяжитесь с разработчиком t.me/hasantigiev or zelenka.guru/lays", 1, 10000)
    }
    if (await req == '200') {
        XenForo.alert("Уник выключен", 1, 10000);
        cacheSync();
    }
    if (await req == '201') {
        XenForo.alert("Уник включен", 1, 10000);
        cacheSync();
    }
}
async function uniqSave() {
    nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
    localcss = document.getElementsByClassName("UsernameCss")[0].value;
    banner = document.getElementsByClassName("BannerCss")[0].value;
    svgcss = document.getElementsByClassName("BannerCss")[0].value;
    bannertxt = document.querySelector("input[name='banner_text']").value;
    svg = document.querySelector("textarea[name=banner_icon]").value;
    css = encodeURIComponent(localcss.replace(/\n/g, "").replace(/; +/g, ";"));
    banner = encodeURIComponent(banner.replace(/\n/g, "").replace(/; +/g, ";"));
    bannertxt = encodeURIComponent(bannertxt.replace(/\n/g, "").replace(/; +/g, ";"));
    svgcss = encodeURIComponent(svgcss.replace(/\n/g, "").replace(/; +/g, ";"));
    svg = encodeURIComponent(svg)
 
    if (secure == 'null') {
        await setSecure(`${document.querySelector("input[name=_xfToken").value.split(",")[0]+document.querySelector("input[name=_xfToken").value.split(",")[1]}`);
    }
    let req = await request(`${server}/v5/new?user=${nickname}&css=${css}&banner=${banner}&bannertxt=${bannertxt}&svgcss=${svgcss}&svg=${svg}`).catch(e => {
        XenForo.alert("Ошибка синхронизации с сервером, попробуйте еще раз", 1, 10000)
    });
    if (await req != '200' && req != '401') {
        XenForo.alert("Ошибка синхронизации с сервером, свяжитесь с разработчиком t.me/hasantigiev or zelenka.guru/lays", 1, 10000)
    }
    if (await req == '401') {
        XenForo.alert("Для вашего профиля не найдены ключи авторизации. Cвяжитесь с разработчиком t.me/hasantigiev or zelenka.guru/lays", 1, 10000)
    }
    if (await req == '200') {
        XenForo.alert("Уник отправлен на проверку. Обычно это занимает 5-10 минут.", 1, 10000);
        cacheSync();
    }
    document.querySelector("input[type=submit]").click();
}
 
async function usernames() {
    let usernames = document.querySelectorAll(".username span:not(.custom)");
    try {
        for(let e of usernames) parseUsername(e);
    } catch {}
}
 
 
async function checkupdate() {
    try {
        nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
        let response = await request(`${server}/v6/support?ver=${version}&user=${nickname}`).catch(err => {});
        if (response == 'no' || response == 'dis') {
            let waterm = document.createElement('a')
            waterm.style = "position:fixed;bottom:5px;right:5px;opacity:0.5;z-index:99;color:white;font-size: 25px;";
            waterm.innerHTML = "Для обновления BetterLZT кликните сюда";
            waterm.href = "https://greasyfork.org/ru/scripts/470626-betterlzt"
            return document.body.append(waterm);
        }
        if (response == 'newbeta') {
            let waterm = document.createElement('h1')
            waterm.style = "position:fixed;bottom:5px;right:5px;opacity:0.5;z-index:99;color:white;font-size: 25px;";
            waterm.innerHTML = "Вы получили доступ к Beta-версии BetterLZT (t.me/hasantigiev)";
            return document.body.append(waterm);
        }
    } catch (error) {
        console.error("[BetterLZT] Failed to check update: "+error)
    }
 
}
 
async function cacheSync() {
    try {
        nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
        let response = await request(`${server}/v2/sync?user=${nickname}`).catch(err => {});
        if (response != cache && response != '') {
            cache = response;
            await setCache(response);
            console.log('OK')
        }
    } catch (error) {
        console.error("[BetterLZT] Sync error: "+error)
    }
}
 
async function setCache(e) {
    return await GM.setValue('cache', e);
}
 
async function setSecure(e) {
    return await GM.setValue('secure', e);
}
 
 
async function parseUsername(e) {
    let data = await JSON.parse(await cache);
    try {
        if (!data.users[e.innerHTML]) { e.classList.add("custom"); return; }
        data = data.users[e.innerHTML];
        if (data && !e.classList.contains("custom")) {
            if (data.css && data.uniq == "on" && await uniqstatus == 'on') {
                e.style = data.css;
            }
            e.classList.add("custom");
            if (data.status && await uniqstatus == 'on' && data.uniq == "on") {
                switch (data.status) {
                    case "js":
                        e.innerHTML += ` <i title="BetterLZT User" class="fab fa-js-square" style="-webkit-text-fill-color: gold;"></i>`
                        break;
                    case "python":
                        e.innerHTML += ` <i class="fab fa-python" style="-webkit-text-fill-color: gold;"></i>`
                        break;
                    case "server":
                        e.innerHTML += ` <i title="BetterLZT User" class="fa fa-hdd"></i>`
                        break;
                    case "bug":
                        e.innerHTML += ` <i title="BetterLZT User" class="fa fa-bug"></i>`
                        break;
                    case "code":
                        e.innerHTML += ` <i title="BetterLZT User" class="fas fa-code"></i>`
                        break;
                    case "verified":
                        e.innerHTML += ` <i title="BetterLZT User" class="far fa-badge-check"></i>`
                        break;
                    case "gold":
                        e.innerHTML += ` <i title="BetterLZT User" class="fas fa-spinner-third fa-spin" style="--fa-primary-color: #fe6906; --fa-secondary-color: #1a6eff; background: none; -webkit-text-fill-color: gold;"></i>`
                        break;
                    case "silver":
                        e.innerHTML += ` <i title="BetterLZT User" class="fas fa-spinner fa-spin"  style="--fa-primary-color: #c0c0c0; --fa-secondary-color: #1a72ff; background: none; -webkit-text-fill-color: #c0c0c0;"></i>`
                        break;
                    case "beta":
                        e.innerHTML += ` <i title="BetterLZT User" class="fa fa-heartbeat"></i>`
                        break;
                    case "cookie":
                        e.innerHTML += ` <i title="BetterLZT User" class="fas fa-cookie" style="-webkit-text-fill-color: #228e5d;"></i>`
                        break;
                    case "admin":
                        e.innerHTML += ` <i title="BetterLZT User" class="fas fa-wrench" style="-webkit-text-fill-color: rgb(150,68,72);"></i> `
                        break;
                    case "moderate":
                        e.innerHTML += ` <i title="BetterLZT User" class="fas fa-bolt" style="-webkit-text-fill-color: #12470D;"></i> `
                        break;
                    case "smoderate":
                        e.innerHTML += ` <i title="BetterLZT User" class="fas fa-bolt" style="-webkit-text-fill-color: rgb(46,162,74);"></i> `
                        break;
                    case "arbitr":
                        e.innerHTML += ` <i title="BetterLZT User" class="fas fa-gavel" style="-webkit-text-fill-color: rgb(255,154,252);"></i> `
                        break;
                    case "editor":
                        e.innerHTML += ` <i title="BetterLZT User" class="fas fa-pen" style="-webkit-text-fill-color: rgb(0,135,255);"></i> `
                        break;
                    case "designer":
                        e.innerHTML += ` <i title="BetterLZT User" class="fas fa-drafting-compass" style="-webkit-text-fill-color: #5c45ff;"></i>`
                        break;
                    case "designer2":
                        e.innerHTML += ` <i title="BetterLZT User" class="fas fa-drafting-compass" style="background: url('https://i.gifer.com/7HHu.gif');-webkit-background-clip: text;-webkit-text-fill-color: transparent;"></i>`
                        break;
                    case "walking":
                        e.innerHTML += ` <i title="BetterLZT User" class="fas fa-walking"></i>`
                        break;
                    case "usd":
                        e.innerHTML += `<i title="BetterLZT User" class="fas fa-badge-dollar" style="background: url('https://i.gifer.com/7HHu.gif');-webkit-background-clip: text;-webkit-text-fill-color: transparent;"></i>`
                        break;
                    case "custom":
                        e.innerHTML += ` ${data.statusCode}`
                        break;
                    case "bmoder":
                        e.innerHTML += `<i class="far fa-user-cog" title="BetterLZT Moderator" style="-webkit-text-fill-color: #810404;"></i>`;
                        break
                    case "sueta":
                        e.innerHTML += `<img src="https://nztcdn.com/files/310336b3-c10e-4ad1-8fdf-0bbe73835ca1.webp" height="13px" style="margin-left: 2px; margin-right: 1px;">`;
                        break
                    default:
                        e.innerHTML += ` <i title="BetterLZT User" class="fa fa-stars"></i>`
                        break;
                }
            }
        }
        if (e.parentElement.parentElement.parentElement.parentElement.parentElement.querySelector('.avatarHolder') && data.uniq == "on" && data.svgcss && await uniqstatus == 'on') {
            let svg = document.createElement('div');
            e.parentElement.parentElement.parentElement.parentElement.parentElement.querySelector(".avatarHolder:not(.custom)")
            svg.classList.add("avatarUserBadges");
            svg.innerHTML = `
            <span style="${data.svgcss}" class="avatarUserBadge  Tooltip ${!data.svg ? 'uniq_default' : ''}" title="${data.bannertxt}" tabindex="0" data-cachedtitle="${data.bannertxt}">
            <div class="customUniqIcon"> ${data.svg ? data.svg : ''} </div>
            </span>`;
            e.parentElement.parentElement.parentElement.parentElement.parentElement.querySelector(".avatarHolder").prepend(svg)
        }
 
        if (e.parentElement.parentElement.parentElement.parentElement.querySelector(".avatarHolder") && data.uniq == "on" && data.svgcss && await uniqstatus == 'on') {
            let svg = document.createElement('div');
            e.parentElement.parentElement.parentElement.parentElement.querySelector(".avatarHolder:not(.custom)").classList.add("custom")
            svg.classList.add("avatarUserBadges");
            svg.innerHTML = `
            <span style="${data.svgcss}" class="avatarUserBadge  Tooltip ${!data.svg ? 'uniq_default' : ''}" title="${data.bannertxt}" tabindex="0" data-cachedtitle="${data.bannertxt}">
            <div class="customUniqIcon"> ${data.svg ? data.svg : ''} </div>
            </span>`;
            e.parentElement.parentElement.parentElement.parentElement.querySelector(".avatarHolder").prepend(svg)
        }
        if (await uniqstatus == 'on' && data.uniq == "on") {
            if (document.querySelector(".avatarScaler") && data.banner && !document.querySelector(".customBanner") && document.querySelectorAll("h1.username")[0].innerHTML.includes(e.innerHTML)) {
                let banner = document.createElement('em');
                banner.classList.add("userBanner");
                banner.classList.add("customBanner");
                banner.classList.add("wrapped");
                banner.style = data.banner;
                banner.innerHTML = `<span class="before"></span><strong>${data.bannertxt}</strong><span class="after"></span>`;
                document.querySelector(".avatarScaler").append(banner);
            }
        }
    } catch {}
}
 
function setAdblock(e) {
    GM.setValue("adblock", e)
    adblock = e;
    XenForo.alert('AdBlock настроен', 1, 10000)
}
 
function setLike(e) {
    GM.setValue("hidelike", e)
    hidelike = e;
    XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
 
function setAva(e) {
    GM.setValue("avamarket", e)
    avamarket = e;
    XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
 
function setUniq(e) {
    GM.setValue("uniqstatus", e)
    uniqstatus = e;
    XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
 
function setContest(e) {
    GM.setValue("contestblock", e)
    contestblock = e;
    XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
 
function setReport(e) {
    GM.setValue("reportbtns", e)
    reportbtns = e;
    XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
 
 
function setSecretph(e) {
    GM.setValue("secretph", e)
    hidelike = e;
    XenForo.alert('BetterLZT> Успех!', 1, 10000);
}
 
 
 
function setMarketblock(e) {
    GM.setValue("marketblock", e)
    marketblock = e;
    XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
 
function setTheme(e) {
    GM.setValue("theme", e)
    marketblock = e;
    XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
 
 
function renderFunctions() {
    unsafeWindow.nickname = nickname;
    unsafeWindow.server = server;
    unsafeWindow.cache = cache;
    unsafeWindow.version = version;
    unsafeWindow.adblock = adblock;
    unsafeWindow.hidelike = hidelike;
    unsafeWindow.marketblock = marketblock;
    unsafeWindow.avamarket = avamarket;
    unsafeWindow.secure = secure;
    unsafeWindow.theme = theme;
    unsafeWindow.uniqstatus = uniqstatus
    unsafeWindow.reportbtns = reportbtns
    unsafeWindow.setAdblock = e => setAdblock(e);
    unsafeWindow.setMarketblock = e => setMarketblock(e);
    unsafeWindow.setCache = e => setCache(e);
    unsafeWindow.setSecure = e => setSecure(e);
    unsafeWindow.setSecretph = e => setSecretph(e);
    unsafeWindow.setLike = e => setLike(e);
    unsafeWindow.setTheme = e => setTheme(e);
    unsafeWindow.setAva = e => setAva(e);
    unsafeWindow.setUniq = e => setUniq(e);
    unsafeWindow.setContest = e => setContest(e);
    unsafeWindow.setReport = e => setReport(e);
    unsafeWindow.setGpt = e => setGpt(e);
    unsafeWindow.request = request;
    let torender = [uniqSave, uniqChange, secretSecurity, goodTrust, badTrust, trustFactor, commitVote, SecretSet, ColorSet, BgSet, dialogWindow, cacheSync, EmojiSet, getUID, usernames, parseUsername, cacheSync, BannerStyle, NickStyle];
    let funcs = torender.map(e => e.toString());
    let script = document.createElement('script');
    script.appendChild(document.createTextNode(funcs.join("")));
    document.head.appendChild(script);
    renderSettings();
}
 
function isAd(e) {
    if (adlist_w.some(o => e.innerHTML.toLowerCase().includes(o)) && !adlist_white.some(o => e.innerHTML.toLowerCase().includes(o))) {
        return true;
    }
    return false;
}
 
function isLink(e) {
    if (adlist_l.some(o => e.innerHTML.toLowerCase().includes(o)) && !adlist_white.some(o => e.innerHTML.toLowerCase().includes(o))) {
        return true;
    }
    return false;
}
 
async function adBlockDaemon() {
    if (await contestblock == 'on' && document.querySelector(".messageText.SelectQuoteContainer.ugc") && document.querySelector(".moneyContestWithValue")) {
        document.querySelector(".messageText.SelectQuoteContainer.ugc").remove()
    }
    adblock = await adblock;
    avablock = await avablock;
    if (window.location.pathname == '/' && document.querySelector(".text_Ads") && adblock == 'on') { document.querySelector(".text_Ads").remove(); return;}
    let users = document.querySelectorAll("span.userStatus:not(.blocked)");
 
    // удаление рекламы в алертах
    if (document.querySelector('[data-author="Реклама"]') && adblock == 'on')
    {
        let ads = document.querySelectorAll('[data-author="Реклама"]');
        ads.forEach(function (e){
            e.remove();
        })
	}
	// проверка на рекламу в минипрофиле
 
	if (document.querySelector(".userTitleBlurb h4") && adblock == 'on')
	{
		let e = document.querySelector(".userTitleBlurb h4");
		let img = document.querySelector(".avatarBox span.img");
		if (isAd(e)) {
			e.classList.add("blocked");
			e.innerHTML = "Реклама скрыта";
			img.style.backgroundImage = `url('https://placehold.co/600x600?text=%D0%A0%D0%B5%D0%BA%D0%BB%D0%B0%D0%BC%D0%B0%20%D1%81%D0%BA%D1%80%D1%8B%D1%82%D0%B0')`;
		}
	}
	if (document.querySelector(".userTitleBlurb h4") && adblock == 'on')
	{
		let e = document.querySelector(".userTitleBlurb h4");
		let img = document.querySelector(".avatarBox span.img");
		if (isLink(e)) {
			e.classList.add("blocked");
			e.innerHTML = "Реклама скрыта";
		}
	}
 
    // Проверка статуса на юзер пейдже
    if (document.querySelector(".current_text:not(.blocked)") && adblock == 'on')
    {
        let e = document.querySelector(".current_text:not(.blocked)");
        let img = document.querySelector(".avatarScaler img");
        if (isAd(e)) {
            e.classList.add("blocked");
            e.innerHTML = "Реклама скрыта";
            img.src = 'https://placehold.co/600x600?text=%D0%A0%D0%B5%D0%BA%D0%BB%D0%B0%D0%BC%D0%B0%20%D1%81%D0%BA%D1%80%D1%8B%D1%82%D0%B0';
        }
 
        if (isLink(e)) {
            e.classList.add("blocked");
            e.innerHTML = "Реклама скрыта";
        }
 
    }
 
    if (users.length < 1 && adblock != 'on') {return;}
 
    users.forEach(function (e) {
        // проверка на рекламу
        if (isAd(e) && adblock == 'on')
        {
            e.innerHTML = 'Реклама скрыта';
            e.classList.add("blocked");
            // такое говно в будущем стоит переписать =)
            $(e).parent().parent().parent().find(".img")[0].style.backgroundImage = `url('https://placehold.co/600x600?text=%D0%A0%D0%B5%D0%BA%D0%BB%D0%B0%D0%BC%D0%B0%20%D1%81%D0%BA%D1%80%D1%8B%D1%82%D0%B0')`;
            return;
        }
        if (isLink(e) && adblock == 'on')
        {
            e.innerHTML = 'Реклама скрыта';
            e.classList.add("blocked");
            return;
        }
        return;
    })
}
 
function BannerStyle(type) {
    switch (type) {
        case '1':
            document.getElementsByClassName("BannerCss")[0].value = `border-radius: 6px;background: url('https://media1.giphy.com/media/JtBZm3Getg3dqxK0zP/giphy.gif') center center;text-shadow: 0px 0px 3px #7a00ff, 0px 1px 0px #7a00ff, 1px 2px 0px red, 1px 3px 0px green;color: white`;
            document.getElementsByClassName("UserBannerStyle")[0].style = `border-radius: 6px;background: url('https://media1.giphy.com/media/JtBZm3Getg3dqxK0zP/giphy.gif') center center;text-shadow: 0px 0px 3px #7a00ff, 0px 1px 0px #7a00ff, 1px 2px 0px red, 1px 3px 0px green;color: white`;
            break;
        case '2':
            document.getElementsByClassName("BannerCss")[0].value = `border-radius: 6px;background: url('https://media1.giphy.com/media/3o7522WIg2FkHbCHvO/giphy.gif') center center;text-shadow: 0px 0px 3px #7a00ff, 0px 1px 0px gray, 1px 2px 0px lime, 1px 3px 0px blue;color: white`;
            document.getElementsByClassName("UserBannerStyle")[0].style = `border-radius: 6px;background: url('https://media1.giphy.com/media/3o7522WIg2FkHbCHvO/giphy.gif') center center;text-shadow: 0px 0px 3px #7a00ff, 0px 1px 0px gray, 1px 2px 0px lime, 1px 3px 0px blue;color: white`;
 
        default:
            break;
    }
}
 
function NickStyle(type) {
    switch (type) {
        case '1':
            document.getElementsByClassName("UsernameCss")[0].value = `background: url('https://media3.giphy.com/media/h5XENtRSEjj8tELOXW/giphy.gif');text-shadow: 0 0 5px #ff00f7;-webkit-background-clip: text;-webkit-text-fill-color: transparent`;
            document.getElementsByClassName("UsernameStyle")[0].style = `background: url('https://media3.giphy.com/media/h5XENtRSEjj8tELOXW/giphy.gif');text-shadow: 0 0 5px #ff00f7;-webkit-background-clip: text;-webkit-text-fill-color: transparent`;
            break;
        case '2':
            document.getElementsByClassName("UsernameCss")[0].value = `background: url('https://media4.giphy.com/media/dwaeIbBnF6HBu/giphy.gif');text-shadow: 0 0 5px #ff00f7;-webkit-background-clip: text;-webkit-text-fill-color: transparent`;
            document.getElementsByClassName("UsernameStyle")[0].style = `background: url('https://media4.giphy.com/media/dwaeIbBnF6HBu/giphy.gif');text-shadow: 0 0 5px #ff00f7;-webkit-background-clip: text;-webkit-text-fill-color: transparent`;
 
        default:
            break;
    }
}
 
async function renderSettings() {
 
    // Проверка на нахождение в профиле и наличие кнопки редактирования профиля
    if (document.querySelector(".secondaryContent a.button.block[href='account/personal-details']")) {
        let profileeditbtn = document.createElement('a')
        profileeditbtn.classList.add('block');
        profileeditbtn.classList.add('button');
        profileeditbtn.onclick = function () {
            dialogWindow();
        };
        profileeditbtn.innerHTML = 'Настроить BetterLZT';
        document.querySelector(".topblock .secondaryContent").append(profileeditbtn)
    }
    if(window.location.pathname == "/account/uniq/test" && await uniqstatus == 'on') {
        if (document.querySelector("[name=banner_text]").value == "Lolzteam") document.querySelector("[name=banner_text]").value = "BetterLZT";
        let adduniq = document.createElement("div");
        adduniq.style = "margin-bottom: 25px";
        adduniq.innerHTML = `
        <div class="menu">
 
        <div class="menu-header">
            <h1 class="menu-header-title">Настройки бесплатного "Уника"</h1>
 
        </div>
        <div class="menu-body">
            <a onclick="uniqSave();">Применить уник</a>
            <a onclick="uniqChange();" style="color: red;">Вкл/Выкл бесплатный уник</a>
        </div>
 
    </div><style>
    @keyframes pulse {
        0% {
            transform: scale(0.95);
            box-shadow: 0 0 0 0 white;
            border-radius: 100%;
            opacity: 0.5;
        }
 
        70% {
            transform: scale(1);
            box-shadow: 0 0 0 10px white;
            border-radius: 100%;
            opacity: 0.5;
        }
 
        100% {
            transform: scale(0.95);
            box-shadow: 0 0 0 0 white;
            border-radius: 100%;
            opacity: 0.5;
        }
    }
:root {
    --c-text-primary: #edeeef;
    --c-text-secondary: #d4d7e1;
    --c-border-primary: #323232;
    --c-bg-body: #000;
    --c-bg-primary: #1b1d23;
    --c-bg-secondary: #000001;
    --c-bg-button: #343844;
}
 
.menu {
  width: 90%;
  max-width: 320px;
  background-color: var(--c-bg-primary);
  transition: background-color .30s ease;
  border-radius: 15px;
}
 
/* header */
.menu-header {
  padding: 1rem;
}
 
.menu-heaser-title {
  font-size: 1.2rem;
  color: var(--c-text-secondary);
  font-weight: 700;
}
 
/* theme switcher */
.theme-switcher input {
  display: none;
}
 
.theme-switcher {
  position: relative;
  background-color: var(--c-bg-secondary);
  border-radius: 10px;
  display: flex;
  padding: 0 3px;
}
 
.theme-switcher label {
  position: relative;
  z-index: 2;
  width: calc(100% / 3);
  color: var(--c-text-secondary);
}
 
.theme-switcher label span {
  padding: 8px 0;
  display: flex;
  justify-content: center;
  font-weight: 600;
  opacity: 0.8;
}
 
.theme-switcher label span:hover {
  opacity: 1;
  cursor: pointer;
}
 
.theme-switcher .slider {
  position: absolute;
  z-index: 1;
  width: calc((100% - 6px) / 3);
  top: 3px;
  transform: translatex(-110%);
  bottom: 3px;
  border-radius: 8px;
  transition: .30s ease, transform 0.25s ease-out;
  background-color: var(--c-bg-button);
}
 
.theme-switcher input:nth-of-type(1):checked ~ .slider {
  transform: translateX(0);
}
.theme-switcher input:nth-of-type(2):checked ~ .slider {
  transform: translateX(100%);
}
.theme-switcher input:nth-of-type(3):checked ~ .slider {
  transform: translateX(200%);
}
 
/* Menu body */
.menu-body {
  padding: 1rem;
  border-top: 1px solid var(--c-border-primary);
  transition: border-color .30s ease;
}
 
.menu-body a {
  text-decoration: none;
  color: inherit;
  display: flex;
  padding: 0.6rem 0.5rem;
  border-radius: 4px;
  font-weight: 500;
  transition: .30s ease;
}
 
.menu-body a:hover {
  background-color: var(--c-bg-secondary);
}
 
ion-icon {
  margin-right: 5px;
  font-size: 20px;
  margin-top: 2px;
}</style>
`
        document.getElementsByClassName("ToggleTriggerAnchor")[0].prepend(adduniq);
    }else if(window.location.pathname == "/account/uniq/test" && await uniqstatus != 'on'){
        let adduniq = document.createElement("div");
        adduniq.style = "margin-bottom: 25px";
        adduniq.innerHTML = `
        <div style="background: rgb(54, 54, 54);
            margin: 5px 15px;
            padding: 10px 15px; border-radius: 10px;">
            ⚠️ у вас отключены уники от BetterLZT. Для сохранения бесплатного уника активируйте функцию в настройках
        </div>
        `
        document.querySelector("#UniqPanels").prepend(adduniq)
    }
}
 
 
async function dialogWindow() {
    nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim().replace(/<[^>]*>/g, ' ').replace(/\s{2,}/g, ' ').trim().replace(" Premium", "").trim();
    let data = await JSON.parse(await cache);
    data = data.users[nickname];
    if (!data) { 
        data = {
            "premium": false
        }
    }
    adblockt = false;
    marketblockt = false;
    hideliket = false;
    hideava = false;
    uniqstatust = false;
    uniqstatust = false;
    contestblockt = false;
    reportbtnst = false;
    if (await reportbtns == 'on') {
        reportbtnst = true;
    }
    if (await adblock == 'on') {
        adblockt = true;
    }
    if (await marketblock == 'on') {
        marketblockt = true;
    }
    if (await hidelike == 'on') {
        hideliket = true;
    }
    if (await avamarket == 'on') {
        hideava = true;
    }
    if (await uniqstatus == 'on') {
        uniqstatust = true;
    }
    if (await contestblock == 'on') {
        contestblockt = true;
    }
 
    let htmlall = `
 
 
    <details style="">
        <summary>Основные<br><span>Реклама, секретный вопрос</span></summary>
        <div>
 
            <div class='btns-l'><input onclick="setUniq('${uniqstatust ? 'off' : 'on'}');" type="checkbox" id="scales" name="scales" ${uniqstatust ? 'checked' : ''} /> Включить уники от BetterLZT</div> <div class='btns-l'><input onclick="setAdblock('${adblockt ? 'off' : 'on'}');" type="checkbox" id="scales" name="scales" ${adblockt ? 'checked' : ''} /> Блокировщик рекламы</div>
            <div class='btns-l'><input onclick="setMarketblock('${marketblockt ? 'off' : 'on'}');" type="checkbox" id="scales" name="scales" ${marketblockt ? 'checked' : ''} /> Скрывать продавцов в ЧС</div> <div class='btns-l'><input onclick="setLike('${hideliket ? 'off' : 'on'}');" type="checkbox" id="scales" name="scales" ${hideliket ? 'checked' : ''} /> Скрывать счетчик лайков в профиле</div>
            <div class='btns-l'><input onclick="setAva('${hideava ? 'off' : 'on'}');" type="checkbox" id="scales" name="scales" ${hideava ? 'checked' : ''} /> Скрывать аватарки на маркете</div> <div class='btns-l'><input onclick="setContest('${contestblockt ? 'off' : 'on'}');" type="checkbox" id="scales" name="scales" ${contestblockt ? 'checked' : ''} /> Скрывать контент в розыгрышах</div>
            <div class='btns-l'><input onclick="setReport('${reportbtnst ? 'off' : 'on'}');" type="checkbox" id="scales" name="scales" ${reportbtnst ? 'checked' : ''} /> Показывать кнопки для быстрой подачи жалоб</div>
            <hr style="border: solid 1px #363636;">
            <p class="main-text" onclick="secretSecurity()">Автоматический ввод секретной фразы: (кликабельно)</p>
 
            <input id="secretph" class="input" placeholder="Введите вашу секретную фразу"> <a onclick="SecretSet()" class="button leftButton primary">Сохранить</a>
 
            </div>
    </details>
 
    <details style="">
        <summary>Выбор иконки у ника<br><span>Для выбора просто кликните на понравившуюся иконку</span></summary>
        <div style="margin-top: -30px">
        <p><b>Бесплатные:</b></p>
        <button onclick="EmojiSet('walking')"><i class="fas fa-walking"></i></button><button onclick="EmojiSet('code')"><i class="fas fa-code"></i></button> <button onclick="EmojiSet('silver')"><i class="fas fa-spinner fa-spin"></i></button>
 
        ${data.premium ? '<p><b>Premium эмодзи</b></p>' : '<p><b>Доступные с Premium:</b></p>' }
        <button ${data.premium ? 'onclick="EmojiSet(`sueta`)"' : ''}"><img src="https://nztcdn.com/files/310336b3-c10e-4ad1-8fdf-0bbe73835ca1.webp" height="18px"></button><button ${data.premium ? 'onclick="EmojiSet(`cookie`)"' : ''}"><i class="fas fa-cookie" style="color: #228e5d;"></i></button><button ${data.premium ? 'onclick="EmojiSet(`gold`)"' : ''}><i title="BetterLZT User" class="fas fa-spinner-third fa-spin"  style="--fa-primary-color: #fe6906; --fa-secondary-color: #1a6eff; background: none; -webkit-text-fill-color: gold;"></i></button><button ${data.premium ? 'onclick="EmojiSet(`js`)"' : ''}"><i class="fab fa-js-square" style="-webkit-text-fill-color: gold;"></i></button><button ${data.premium ? 'onclick="EmojiSet(`python`)"' : ''}"><i class="fab fa-python" style="-webkit-text-fill-color: gold;"></i></button><button ${data.premium ? 'onclick="EmojiSet(`verified`)"' : ''}"><i class="fas fa-badge-check"></i></button>
        <button ${data.premium ? 'onclick="EmojiSet(`admin`)"' : ''}"><i class="fas fa-wrench" style="color: rgb(150,68,72);"></i></button><button ${data.premium ? 'onclick="EmojiSet(`moderate`)"' : ''}"><i class="fas fa-bolt" style="color: #12470D"></i></button><button ${data.premium ? 'onclick="EmojiSet(`smoderate`)"' : ''}"><i class="fas fa-bolt" style="color: rgb(46,162,74);"></i></button><button ${data.premium ? 'onclick="EmojiSet(`arbitr`)"' : ''}"><i class="fas fa-gavel" style="color: rgb(255,154,252);"></i></button><button ${data.premium ? 'onclick="EmojiSet(`editor`)"' : ''}"><i class="fas fa-pen" style="color: rgb(0,135,255);"></i></button><button ${data.premium ? 'onclick="EmojiSet(`designer`)"' : ''}"><i class="fas fa-drafting-compass" style="color: #5c45ff;"></i></button><button ${data.premium ? 'onclick="EmojiSet(`designer2`)"' : ''}"><i class="fas fa-drafting-compass" style="background: url('https://i.gifer.com/7HHu.gif');-webkit-background-clip: text;-webkit-text-fill-color: transparent;"></i></button><button ${data.premium ? 'onclick="EmojiSet(`usd`)"' : ''}"><i class="fas fa-badge-dollar" style="background: url('https://i.gifer.com/7HHu.gif');-webkit-background-clip: text;-webkit-text-fill-color: transparent;"></i></button>
        ${data.premium ? '<a class="button leftButton primary" target="_blank" href="https://hasantigiev.t.me">Установить свою</a> ' : ''}  <a class="button leftButton" onclick="EmojiSet('default')">Установить стандартное</a>
        </div>
    </details>
 
    <details style="">
        <summary>Кастомизация<br></summary>
        <div style="margin-top: -25px">
            <h3 style="display: inline; margin-bottom: 5px;">Фон</h3>
            <span>Данный фон Вы будете видеть на всех страницах форума и маркета.
            Так же, он будет виден посетителям Вашего форума (при использовании расширения)</span>
 
            <input class="input" id="bgurl" placeholder="Ссылка на картинку"> <a onclick="BgSet()" class="button leftButton primary OverlayTrigger">Сохранить</a>
 
            <hr style="border: solid 1px #363636;">
            <h3 style="display: inline; margin-bottom: 5px;">Своя тема (Нужен Premium)</h3>
            <span>Данную тему Вы будете видеть на всех страницах форума и маркета.
            Так же, она будет видна посетителям Вашего форума (при использовании расширения)</span>
 
            <input class="input" id="colorbg" placeholder="цвет в формате rgba()"> <a onclick="ColorSet()" class="button leftButton primary OverlayTrigger">Сохранить</a>
 
 
            </div>
    </details>
 
    <details style="">
        <summary>Готовые темы<br></summary>
        <div style="margin-top: -25px">
            <a class="button leftButton" onclick="setTheme('1')">Amoled</a> <a class="button leftButton" onclick="setTheme('2')">BetterLZT</a>  <a class="button leftButton" onclick="setTheme('3')">Lime</a> <a class="button leftButton" onclick="setTheme('4')">LZT Purple</a> <a class="button leftButton" onclick="setTheme('5')">Lzt Sakura</a>
 
            <a class="button leftButton primary" onclick="setTheme('null')">Отключить</a>
        </div>
    </details>
 
    <details style="">
        <summary>Новости и обновления<br></summary>
        <div style="margin-top: -25px">
        <iframe src="https://lzt.hasanbek.ru/better/exui/hub.php?user=${nickname}&version=${version}" frameborder="0" width="100%" height="500px"></iframe>
        </div>
    </details>
 
    <details style="">
        <summary>Цены на премиум<br></summary>
        <div style="margin-top: -45px">
            <iframe src="https://lzt.hasanbek.ru/better/exui/prem.php?user=${nickname}" frameborder="0" width="100%"></iframe>
            <i>Хочешь поддержать автора? Приобрети премиум =)</i>
            <a class="button leftButton primary" target="_blank" href="https://hasantigiev.t.me">Приобрести Premium</a>
        </div>
    </details>
    `
 
    let html_prem = `
    <iframe src="https://lzt.hasanbek.ru/better/ver.php?user=${nickname}&version=${version}" frameborder="0" width="100%" style="margin-top: -25px;" height="70px"></iframe>
 
    ${htmlall}
    <div style="display: flex;
    width: 598px;
    justify-content: space-between;
    align-items: flex-start;">
    Version ${version}
    <iframe src="https://lzt.hasanbek.ru/better/exui/premium.php?user=${nickname}" frameborder="0" width="360px" style="" height="50px"></iframe>
    </div>
    <a class="button leftButton primary" target="_blank" href="https://hasantigiev.t.me">Приобрести Premium</a> <a class="button leftButton" href="account/uniq/test">Настроить уник</a> <a class="button leftButton" href="https://greasyfork.org/ru/scripts/470626-betterlzt">Обновить расширение</a>
    <style>
    .main-text {
        font-size: 13px;
        font-style: normal;
        font-weight: 600;
        line-height: normal;
        display: inline;
    }
    .btns-l {
        margin-bottom: 10px;
        margin-right: 10px;
        border-radius: 6px;
        display: inline-block;
        padding: 7px 15px;
        background: #363636;
        justify-content: center;
        align-items: center;
        gap: 12px;
        font-size: 13px;
        font-style: normal;
        font-weight: 600;
    }
    details {
        width: 100%;
        background: #272727;
        border: solid 3px #363636;
        box-shadow: 0 0.1rem 1rem -0.5rem rgba(0, 0, 0, .4);
        border-radius: 8px;
        overflow: hidden;
        margin-top: -25px;
    }
    summary {
        padding: 12px 16px;
        display: block;
        background: #363636;
        position: relative;
        cursor: pointer;
 
        color: #D6D6D6;
        font-family: Open Sans;
        font-size: 14px;
        font-style: normal;
        font-weight: 600;
        line-height: normal;
    }
    summary span {
        color: #949494;
        font-size: 13px;
    }
    details span {
        color: #949494;
        font-size: 13px;
    }
    summary:after {
        font-family: "Font Awesome 5 Pro";
        color: rgb(148,148,148);
        content: '\\f077';
        position: absolute;
        left: 97%;
        top: 50%;
        transform: translate(-50%, -50%) rotate(180deg);
        transform-origin: 0.2rem 50%;
        transition: 0.25s transform ease;
    }
    details[open] > summary:after {
        transform: translate(-50%, -50%) rotate(360deg);
    }
    details[open] > div {
        padding: 0px 20px;
        margin-top: -25px;
    }
    details .leftButton {
        margin-right: 10px;
    }
    details button {
        width: 45px;
        height: 45px;
        padding: 5px;
        justify-content: center;
        align-items: center;
        color: rgb(34,142,93);
        border-radius: 6px;
        background: #363636;
        border: none;
        font-size: 25px;
        margin-bottom: 10px;
        margin-right: 10px;
    }
    details button.active {
        border: 1.6px solid #07C682;
        background: linear-gradient(180deg, rgba(7, 198, 130, 0.12) 0%, rgba(7, 198, 130, 0.00) 100%), #363636;
    }
    details input.input{
        width: 77%;
        padding: 6px;
        border-radius: 6px;
        height: 20px;
        background: #303030;
        color: white;
        border: 1px solid rgb(54, 54, 54);
    }
 
    details input[type=checkbox] {
        width: auto;
    }
    details input[type=checkbox]:after {
        border-radius: 4px;
    }
    </style>
    `;
    return  XenForo.alert(
        `${html_prem}`, 'BetterLZT (native) v.'+version
    )
}
 
async function EmojiSet(emoji) {
    nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
    request(`${server}/v5/emoji?user=${nickname}&emoji=${emoji}`).catch(e => {
        XenForo.alert("Ошибка синхронизации с сервером, попробуйте еще раз", 1, 10000)
    });
    cacheSync();
    location.reload();
}
 
async function BgSet() {
    nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
    bg = document.querySelector("#bgurl").value
    request(`${server}/v5/bg?user=${nickname}&bg=${bg}`).catch(e => {
        XenForo.alert("Ошибка синхронизации с сервером, попробуйте еще раз", 1, 10000)
    });
    cacheSync();
    location.reload();
}
 
async function SecretSet() {
    nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
    secretph = document.querySelector("#secretph").value;
    setSecretph(secretph);
}
 
 
async function ColorSet() {
    nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
    bg = document.querySelector("#colorbg").value
    request(`${server}/v5/color?user=${nickname}&color=${bg}`).catch(e => {
        XenForo.alert("Ошибка синхронизации с сервером, попробуйте еще раз", 1, 10000)
    });
    cacheSync();
    location.reload();
}
 
async function marketRender() {
    if (document.location.host != "lzt.market") {return false;}
    if(window.location.href.includes('goods/add')) {
        if(document.querySelector(".bbCodeSpoilerContainer")){
            document.querySelector(".bbCodeSpoilerContainer button").click()
        }
    }
 
     if (await marketblock == 'on') {
		alerts = document.querySelectorAll(".itemIgnored");
        alerts.forEach(function (e){
            e.remove();
        })
	}
 
    if(document.querySelector(".sidebarUserAvatar") && await avamarket == 'on') {
        document.querySelector(".sidebarUserAvatar").remove();
    }
}
 
function secretSecurity() {
    return XenForo.alert(`Сторонние расширения имеют доступ к пользовательским настройкам BetterLZT. и могут использовать это в корыстных целях
Если вы используете сторонние расширение от малоизвестных авторов - рекомендуем не пользоваться данной функцией ИЛИ
удалить сторонние расширения.
Имеются вопросы по сторонним расширениям? Свяжитесь со мной - t.me/hasantigiev`, "Безопасность превыше всего!")
}