- ID de l'analyse :
- 8adde940-898a-4e64-93cc-97f18f9ab6deTerminée
- URL soumise :
- https://www.h2w6gm6jz.xyz/
- Fin du rapport :
Liens : 1 trouvé(s)
Liens sortants identifiés à partir de la page
Lien | texte |
---|---|
https://x.com/h2w6gm6jz | 𝕏 |
Variables JavaScript : 13 trouvée(s)
Les variables JavaScript globales chargées dans l'objet fenêtre d'une page sont des variables déclarées en dehors des fonctions et accessibles depuis n'importe quel endroit du code au sein du champ d'application actuel
Nom | Type |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
createParticle | function |
initParticles | function |
resizeCanvas | function |
draw | function |
cleanup | function |
startAlienCountdown | function |
formatTime | function |
Messages de journal de console : 1 trouvé(s)
Messages consignés dans la console web
Type | Catégorie | Enregistrement |
---|---|---|
error | network |
|
HTML
Le corps HTML de la page en données brutes
<!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>