https://www.h2w6gm6jz.xyz/

Submitted URL:
https://www.h2w6gm6jz.xyz/
Report Finished:

The outgoing links identified from the page

LinkText
https://x.com/h2w6gm6jz𝕏

JavaScript Variables · 13 found

Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope

NameType
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
createParticlefunction
initParticlesfunction
resizeCanvasfunction
drawfunction
cleanupfunction
startAlienCountdownfunction
formatTimefunction

Console log messages · 1 found

Messages logged to the web console

TypeCategoryLog
errornetwork
URL
https://www.h2w6gm6jz.xyz/favicon.ico
Text
Failed to load resource: the server responded with a status of 404 ()

HTML

The raw HTML body of the page

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>h2w6GM6JZ</title>
    <style>
        body {
            margin: 0;
            padding: 0;
            background-color: #000;
            color: #fff;
            font-family: Arial, sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            overflow: hidden;
        }
        #canvas {
            position: absolute;
            top: 0;
            left: 0;
            width: 100vw;
            height: 100vh;
            z-index: -1;
        }
        #loading-overlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: black;
            display: flex;
            justify-content: center;
            align-items: center;
            z-index: 1000;
        }

        #alien-countdown {
            font-family: monospace;
            font-size: 5rem;
            color: #fff;
            text-shadow: 0 0 10px #fff;
            animation: pulse 0.5s infinite;
        }

        @keyframes pulse {
            0% { opacity: 0.3; }
            50% { opacity: 1; }
            100% { opacity: 0.3; }
        }

        #wormhole-button {
            position: fixed;
            width: 100px;
            height: 100px;
            border-radius: 50%;
            background: transparent;
            border: none;
            cursor: none;  /* Only hide default cursor */
            z-index: 10;
            transform: translate(-50%, -50%);
            left: 50%;
            top: 50%;
        }

        #custom-cursor {
            position: fixed;
            font-size: 24px;
            pointer-events: none;
            z-index: 9999;
            mix-blend-mode: difference;
            color: white;
            transform: translate(-50%, -50%);
            display: none;
        }

        .popup-overlay {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: 2000;
            justify-content: center;
            align-items: center;  /* Reset to center */
            background: transparent; /* Remove overlay background */
            padding-top: 0;      /* Remove top padding */
        }

        .popup-content {
            background: transparent;
            padding: 4rem;  /* Increased padding */
            border: none; /* Remove border */
            text-align: center;
            color: white;
            font-family: monospace;
            display: flex;
            flex-direction: column;
            gap: 2rem;
            position: relative;
            height: 100vh;
            justify-content: center;
        }

        .countdown {
            font-size: 4rem;  /* Increased from 2rem to 4rem */
            margin: 2rem 0;   /* Increased margin */
            text-shadow: 0 0 15px rgba(255, 255, 255, 0.5); /* Increased glow effect */
            letter-spacing: 0.5rem;  /* Add spacing between characters */
            position: absolute;
            top: 35vh;          /* Adjusted to 35vh */
            left: 50%;
            transform: translateX(-50%);
        }

        .scrambled-text {
            font-family: monospace;
            font-size: 1.5rem;
            color: rgba(255, 255, 255, 0.7);
            text-shadow: 0 0 8px rgba(255, 255, 255, 0.3);
            letter-spacing: 0.2rem;
            /* Removed animation property */
            position: absolute;
            bottom: 35vh;
            left: 50%;
            transform: translateX(-50%);
            cursor: pointer;
            user-select: all;  /* Makes text selectable */
        }

        .scrambled-text:active {
            opacity: 0.5;  /* Visual feedback on click */
        }

        /* Remove the @keyframes flicker block */

        .header-text {
            font-family: monospace;
            font-size: 1.5rem;
            color: rgba(255, 255, 255, 0.7);
            text-shadow: 0 0 8px rgba(255, 255, 255, 0.3);
            letter-spacing: 0.2rem;
            position: absolute;
            top: 25vh;         /* Adjusted for better spacing */
            left: 50%;
            transform: translateX(-50%);
            opacity: 0;
            transition: opacity 0.5s ease;
            white-space: nowrap;
            text-align: center;
            width: auto;       /* Changed to auto */
            max-width: none;
            cursor: pointer;   /* Add pointer cursor */
            user-select: all;  /* Make text selectable */
        }

        .header-text.visible {
            opacity: 1;
        }

        .header-text:active {
            opacity: 0.5;     /* Add click feedback */
        }

        .x-link {
            color: white;
            font-size: 24px;  /* Increased from 20px for better visibility */
            text-decoration: none;
            font-family: monospace;  /* Changed to match other icons */
            text-shadow: 0 0 10px rgba(255, 255, 255, 0.8);
            transition: all 0.3s ease;
            cursor: pointer;
        }

        .x-link:hover {
            transform: scale(1.2);
            text-shadow: 0 0 15px white;
        }

        #wormholeFour {
            font-weight: bold;
            filter: grayscale(100%);  /* Ensures black and white */
        }

        .wallet-container {
            color: white;
            font-size: 20px;
            font-family: Arial, sans-serif;
        }

        .wallet-icon {
            cursor: pointer;
            transition: all 0.3s ease;
            text-shadow: 0 0 10px rgba(255, 255, 255, 0.8);
        }

        .wallet-icon:hover {
            transform: scale(1.2);
            text-shadow: 0 0 15px white;
        }

        .social-container {
            position: absolute;
            bottom: 25vh;
            left: 50%;
            transform: translateX(-50%);
            display: flex;
            align-items: center; /* Center align items vertically */
            justify-content: center; /* Add this to center horizontally */
            gap: 64px;
            z-index: 20;
            margin-left: 0; /* Remove the negative margin */
            height: 24px; /* Add fixed height */
            width: 100%; /* Add width to ensure full container width */
        }

        /* Add these new styles */
        .text-popup {
            display: none;
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background: rgba(0, 0, 0, 0.9);
            padding: 20px;
            border: 1px solid rgba(255, 255, 255, 0.2);
            border-radius: 8px;
            z-index: 2001;
            width: 80%;
            max-width: 600px;
            max-height: 80vh;
        }

        .text-content {
            color: white;
            font-family: monospace;
            font-size: 14px;
            line-height: 1.6;
            height: 60vh;
            overflow-y: auto;
            padding: 20px;
            background: rgba(0, 0, 0, 0.5);
            border: 1px solid rgba(255, 255, 255, 0.1);
            border-radius: 4px;
            margin-bottom: 15px;
            white-space: pre-line;
        }

        .text-content::-webkit-scrollbar {
            width: 8px;
        }

        .text-content::-webkit-scrollbar-track {
            background: rgba(255, 255, 255, 0.1);
        }

        .text-content::-webkit-scrollbar-thumb {
            background: rgba(255, 255, 255, 0.3);
            border-radius: 4px;
        }

        .text-popup .close-button {
            position: absolute;
            top: 10px;
            right: 10px;
            background: transparent;
            border: none;
            color: white;
            font-size: 20px;
            cursor: pointer;
        }

        /* Add this style for the text toggle icon */
        #textToggle {
            font-family: monospace;
            content: "☰";  /* Using a simpler symbol instead of emoji */
            color: white;
            font-size: 24px;
            text-shadow: 0 0 10px rgba(255, 255, 255, 0.8);
            text-decoration: none;
            cursor: pointer;
            transition: all 0.3s ease;
        }

        #textToggle:hover {
            transform: scale(1.2);
            text-shadow: 0 0 15px white;
        }
    </style>
</head>
<body>
    <div id="custom-cursor">∰</div>
    <div id="loading-overlay">
        <div id="alien-countdown">⌬</div>
    </div>
    <canvas id="canvas" width="800" height="600"></canvas>
    <button id="wormhole-button" aria-label="Enter wormhole"></button>
    <div class="popup-overlay" id="popup">
        <div class="popup-content">
            <div class="header-text">What we know is a drop, what we don't know is an ocean.</div>
            <div class="countdown" id="timer">00:00:00</div>
            <div class="scrambled-text">FNqJtYs7rsP1H9GXWTtc5VnDoL2GhXEUKhYN46EEpump</div>
            <div class="social-container">
                <div class="wallet-container">
                    <a class="wallet-icon" id="walletToggle">∰</a>
                </div>
                <a href="https://x.com/h2w6gm6jz" class="x-link" id="wormholeX">𝕏</a>
                <a class="x-link" id="wormholeFour">4</a>
                <div class="wallet-container">
                    <a class="wallet-icon" id="textToggle">☰</a>
                </div>
            </div>
        </div>
    </div>

    <!-- Fix the text popup structure -->
    <div class="text-popup" id="textPopup">
        <button class="close-button" id="closeTextPopup">×</button>
        <div class="text-content" id="textContent"></div>
    </div>

    <!-- Move JavaScript to proper script tag -->
    <script>
        const canvas = document.getElementById('canvas');
        const ctx = canvas.getContext('2d');
        let particles = [];
        const numParticles = 4000;
        let ringOpacity = 0;  // Add this with other global variables

        // Add these variables at the top
        let animationFrameId;
        let countdownInterval;
        let currentAnimation;

        // Initialize particles
        function createParticle() {
            const maxDist = Math.max(canvas.width, canvas.height) * 1.1; // Slightly larger than screen
            return {
                x: canvas.width / 2,
                y: canvas.height / 2,
                angle: Math.random() * Math.PI * 2,
                speed: Math.random() * 8 + 4,
                size: Math.random() * 2 + 0.5, // Minimum size of 0.5
                color: 'rgba(255, 255, 255, 0.8)', // Slightly transparent
                distance: maxDist,
                maxDist: maxDist
            };
        }

        function initParticles() {
            particles = [];
            for (let i = 0; i < numParticles; i++) {
                particles.push(createParticle());
            }
        }

        // Resize canvas
        function resizeCanvas() {
            canvas.width = window.innerWidth;
            canvas.height = window.innerHeight;
            initParticles();
        }

        // Draw particles
        function draw() {
            ctx.fillStyle = 'rgba(0, 0, 0, 0.3)'; // Increased alpha for better trails
            ctx.fillRect(0, 0, canvas.width, canvas.height);

            // Draw ring with black center and animated opacity
            const centerX = canvas.width / 2;
            const centerY = canvas.height / 2;
            const ringRadius = 50;
            const glowWidth = 3;  // Reduced for sharper ring

            // Black hole center
            ctx.beginPath();
            ctx.arc(centerX, centerY, ringRadius, 0, Math.PI * 2);
            ctx.fillStyle = 'black';
            ctx.fill();

            // Animate ring opacity more slowly
            if (ringOpacity < 1) {
                ringOpacity += 0.003;  // Changed from 0.01 to 0.003 for slower fade
            }

            // White glowing ring with animated opacity
            ctx.beginPath();
            ctx.arc(centerX, centerY, ringRadius, 0, Math.PI * 2);
            ctx.strokeStyle = `rgba(255, 255, 255, ${ringOpacity * 0.8})`;
            ctx.lineWidth = glowWidth;
            ctx.stroke();

            // Outer glow with animated opacity
            ctx.beginPath();
            ctx.arc(centerX, centerY, ringRadius, 0, Math.PI * 2);
            ctx.strokeStyle = `rgba(255, 255, 255, ${ringOpacity * 0.2})`;
            ctx.lineWidth = glowWidth * 2;
            ctx.stroke();

            particles.forEach((p, index) => {
                // Move particle inward
                p.distance -= p.speed;

                // Reset particle if it reaches near center (not exactly at center)
                if (p.distance < 50) { // Minimum distance from center
                    p.distance = p.maxDist;
                    p.angle = Math.random() * Math.PI * 2;
                    p.speed = Math.random() * 8 + 4;
                    if (index % 3 === 0) {
                        p.distance *= 0.9;
                    }
                }

                // Calculate particle position
                const x = canvas.width / 2 + Math.cos(p.angle) * p.distance;
                const y = canvas.height / 2 + Math.sin(p.angle) * p.distance;

                // Calculate opacity based on distance from center
                const opacity = Math.min(1, p.distance / (p.maxDist * 0.3));
                const particleColor = `rgba(255, 255, 255, ${opacity * 0.8})`;
                const glowColor = `rgba(255, 255, 255, ${opacity * 0.1})`;

                // Draw the particle with distance-based opacity
                ctx.beginPath();
                ctx.arc(x, y, p.size, 0, Math.PI * 2);
                ctx.fillStyle = particleColor;
                ctx.fill();

                // Add a subtle glow that also fades near center
                ctx.beginPath();
                ctx.arc(x, y, p.size * 1.5, 0, Math.PI * 2);
                ctx.fillStyle = glowColor;
                ctx.fill();
            });

            animationFrameId = requestAnimationFrame(draw);
        }

        function cleanup() {
            // Only cleanup countdown related items
            if (countdownInterval) {
                clearInterval(countdownInterval);
            }
            if (currentAnimation) {
                clearInterval(currentAnimation);
            }
        }

        const alienSymbols = ['⌬', '⎔', '⏣', '⏥', '⏢', '⭘', '⭙', '⭗', '∰', '⌭', '◈', '◇', '◆', '◊', '⟐', '⟡', '⟢', '⟣', '⟤', '��'];
        let countdownCount = 5;

        function startAlienCountdown() {
            const countdownElement = document.getElementById('alien-countdown');
            let dots = '';
            
            if (countdownCount > 0) {
                countdownElement.textContent = alienSymbols[Math.floor(Math.random() * alienSymbols.length)] + dots;
                countdownCount--;
                setTimeout(startAlienCountdown, 500);
            } else {
                // Only dots animation, no final symbol
                let dotCount = 0;
                
                const dotAnimation = setInterval(() => {
                    dots += '.';
                    countdownElement.textContent = dots;
                    dotCount++;
                    
                    if (dotCount === 3) {
                        clearInterval(dotAnimation);
                        setTimeout(() => {
                            document.getElementById('loading-overlay').style.display = 'none';
                            initParticles();
                            ringOpacity = 0;  // Reset ring opacity before starting
                            draw();
                        }, 500);
                    }
                }, 300);
            }
        }

        // Add this before the initialization code:
        const cursor = document.getElementById('custom-cursor');
        const wormholeButton = document.getElementById('wormhole-button');

        wormholeButton.addEventListener('mousemove', (e) => {
            cursor.style.display = 'block';
            cursor.style.left = e.clientX + 'px';
            cursor.style.top = e.clientY + 'px';
        });

        wormholeButton.addEventListener('mouseleave', () => {
            cursor.style.display = 'none';
        });

        function formatTime(totalSeconds) {
            const hours = Math.floor(totalSeconds / 3600);
            const minutes = Math.floor((totalSeconds % 3600) / 60);
            const seconds = totalSeconds % 60;
            return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
        }

        // Add this new function
        function startEndCountdown() {
            const popup = document.getElementById('popup');
            const timerDisplay = document.getElementById('timer');
            let count = 5;
            
            const endCountdown = setInterval(() => {
                timerDisplay.textContent = count;
                count--;
                
                if (count < 0) {
                    clearInterval(endCountdown);
                    popup.style.display = 'none';
                    // You can add any final animation or action here
                }
            }, 1000);
        }

        function startJumpSequence() {
            const popup = document.getElementById('popup');
            const timerDisplay = document.getElementById('timer');
            const headerText = document.querySelector('.header-text');
            
            // Set target time to 4:30 PM UTC
            const now = new Date();
            const targetTime = new Date();
            targetTime.setUTCHours(21, 30, 0); // 16:30 UTC (4:30 PM)
            
            // If target time has passed today, set it for tomorrow
            if (now > targetTime) {
                targetTime.setDate(targetTime.getDate() + 1);
            }
            
            // Calculate time difference in seconds
            let timeLeft = Math.floor((targetTime - now) / 1000);

            // Clear any existing countdown
            if (countdownInterval) {
                clearInterval(countdownInterval);
            }

            popup.style.display = 'flex';
            // Show header text with delay
            setTimeout(() => {
                headerText.classList.add('visible');
            }, 300);

            countdownInterval = setInterval(() => {
                if (timeLeft <= 0) {
                    clearInterval(countdownInterval);
                    startEndCountdown();
                } else {
                    timerDisplay.textContent = formatTime(timeLeft);
                    timeLeft--;
                }
            }, 1000);
        }

        // Modify initialization
        function init() {
            cleanup();  // Cleanup before initializing
            resizeCanvas();
            startAlienCountdown();

            // Add error handling
            window.addEventListener('error', (e) => {
                console.error('Animation error:', e);
                cleanup();
            });

            // Cleanup on page unload
            window.addEventListener('beforeunload', cleanup);
        }

        // Updated click handler
        document.addEventListener('click', (e) => {
            const popup = document.getElementById('popup');
            const wormholeButton = document.getElementById('wormhole-button');
            const headerText = document.querySelector('.header-text');
            
            if (wormholeButton.contains(e.target)) {
                startJumpSequence();
            } else if (popup.style.display === 'flex') {
                popup.style.display = 'none';
                headerText.classList.remove('visible');
                cleanup();  // This will now only cleanup countdown, not particles
            }
        });

        // Move animation cleanup to beforeunload only
        window.addEventListener('beforeunload', () => {
            if (animationFrameId) {
                cancelAnimationFrame(animationFrameId);
            }
            cleanup();
        });

        // Add after the other event listeners
        document.querySelector('.scrambled-text').addEventListener('click', async function(e) {
            e.stopPropagation();  // Prevent popup from closing
            try {
                await navigator.clipboard.writeText(this.textContent);
                
                // Optional: Visual feedback
                const originalText = this.textContent;
                this.textContent = 'Copied!';
                setTimeout(() => {
                    this.textContent = originalText;
                }, 500);
            } catch (err) {
                console.error('Failed to copy text:', err);
            }
        });

        // Add before the init() call
        // Add event listeners for the text popup
        document.getElementById('textToggle').addEventListener('click', (e) => {
            e.stopPropagation();
            const textPopup = document.getElementById('textPopup');
            const textContent = document.getElementById('textContent');
            
            const manifestoText = `Imagine, if you will, the vast fabric of this existence—a tapestry woven with the threads of ambition, resolve, and the unwavering belief of those who dare to dream. At the heart of this grand design lies a pool, shimmering with purpose, deep and boundless. This is no ordinary reservoir; it is a living force, drawing strength from those who believe, binding together the hopes of the many who walk this path.

This pool is not static. It ripples outward, touching the lives of all who gather around it, extending aid to those in need, and fortifying those whose faith has been unshaken. It exists to elevate—to guide our supporters upward toward a destiny written in the stars. For this is not a tale of ease, but of perseverance, of rising toward the peaks that scrape the heavens themselves.

The journey before us is long, the road steep and fraught with uncertainty. It does not descend; it does not waver. It is a climb—unyielding and infinite. We rise to meet the mountains, those ancient sentinels of truth, whose heights have witnessed the triumphs and trials of countless seekers before us. Their peaks are cloaked in mist, hiding secrets that will only reveal themselves to the steadfast.

This is the essence of our story—a journey defined by the eternal laws of nature and ambition. It is a story guided by forces unseen yet ever-present, etched into the very fabric of reality. Each of us contributes to its unfolding, each choice and step forward adding to the sum of what we can become. The pool grows deeper with each moment, its ripples stronger, as it guides us toward a crescendo that can only be described as the finale—a moment when all mysteries are unveiled, all ambitions realized, and all who believed are lifted to heights unimaginable.

But this is not just a story of climbing or striving; it is a story of unity. It is a testament to what can be achieved when a multitude becomes one, when belief turns into action, and when action shapes destiny. The mountains call to us all, their silent summits beckoning. They ask, 'Will you rise? Will you endure? Will you add your voice to the song of the eternal?'

The answer lies within each of us, waiting to be spoken through our deeds. The final chapter is not yet written. But together, step by step, ripple by ripple, we will ascend. And when we reach the summit, we will know—we will know that we were the ones who dared to rise, who dared to believe, and who dared to complete the story of us all.`;

            textContent.textContent = manifestoText;
            textPopup.style.display = 'block';
        });

        document.getElementById('closeTextPopup').addEventListener('click', (e) => {
            e.stopPropagation();
            document.getElementById('textPopup').style.display = 'none';
        });

        // Close text popup when clicking outside
        document.addEventListener('click', (e) => {
            const textPopup = document.getElementById('textPopup');
            if (!textPopup.contains(e.target) && e.target.id !== 'textToggle') {
                textPopup.style.display = 'none';
            }
        });

        // Prevent popup from closing when clicking inside content
        document.querySelector('.text-content').addEventListener('click', (e) => {
            e.stopPropagation();
        });

        // Add this after other event listeners
        document.querySelector('.header-text').addEventListener('click', async function(e) {
            e.stopPropagation();
            try {
                await navigator.clipboard.writeText(this.textContent);
                const originalText = this.textContent;
                this.textContent = 'Copied!';
                setTimeout(() => {
                    this.textContent = originalText;
                }, 500);
            } catch (err) {
                console.error('Failed to copy text:', err);
            }
        });

        // Initialize
        window.addEventListener('resize', resizeCanvas);
        init();
    </script>


</body></html>