1<!doctype html> 2<html lang="en"><head> 3 <meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"> 4 <title>Log in â Hotpot</title> 5 6 7<!-- Open Graph Tags BEGIN ------------------------------------------------------------------ --> 8<meta property="og:type" content="website"> 9<meta property="og:site_name" content="Hotpot.ai"> 10<meta property="og:title" content="Log in â Hotpot"> 11<meta property="og:description" content=""> 12<meta property="og:image" content="https://hotpot.ai/images/site/ogDefaultImage.jpg"> 13<meta property="og:locale" content="en"> 14<meta property="og:url" content="https://hotpot.ai/login"> 15 16 17<!-- Twitter Tags BEGIN --------------------------------------------------------------------- --> 18<meta name="twitter:card" content="summary_large_image"> 19<meta name="twitter:image" content="https://hotpot.ai/images/site/ogDefaultImage.jpg"> 20<meta name="twitter:site" content="@HotpotHelper"> 21<meta name="twitter:title" content="Log in â Hotpot"> 22<meta name="twitter:description" content=""> 23 24 25<!-- Apple Tags BEGIN ----------------------------------------------------------------------- --> 26<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" type="image/png"> 27<meta name="apple-mobile-web-app-capable" content="yes"> 28<meta name="apple-mobile-web-app-title" content="Hotpot.ai"> 29<meta name="apple-mobile-web-app-status-bar-style" content="default"> 30 31 32 <meta name="robots" content="noindex,nofollow"> 33 34 35<!-- Strucutred Data BEGIN -------------------------------------------------------- -->
36<script type="application/ld+json"> 37{ 38 "@context": "http://schema.org", 39 "@type": "Organization", 40 "legalName": "Panabee, LLC", 41 "name": "Hotpot.ai", 42 "url": "https://hotpot.ai", 43 "sameAs" : [ 44 "https://twitter.com/HotpotHelper", 45 "https://github.com/HotpotDesign", 46 "https://www.facebook.com/HotpotDesign" 47 ], 48 "brand": { 49 "@type": "Brand", 50 "name": "Hotpot.ai", 51 "alternateName": "Hotpot", 52 "logo": "https://hotpot.ai/images/apple-touch-icon.png" 53 }, 54 "contactPoint" : [ 55 { 56 "@type" : "ContactPoint", 57 "contactType" : "customer service", 58 "email": "[email protected]", 59 "url": "https://hotpot.ai" 60 } 61 ] 62} 63</script>
63 64<!-- Strucutred Data END -------------------------------------------------------- --> 65 66
66<script src="https://the.gatekeeperconsent.com/cmp.min.js" data-cfasync="false"></script>
66 67 <meta name="csrf-param" content="authenticity_token" /> 68<meta name="csrf-token" content="6XFeWNS2Te-GFMCMam7rc4zIDa_Q8-R93NxSrqmQfYafh228e7SBkHqDMARUCYKDCIXbhsBX3eGqKrjvgFa7Bg" /> 69 <link rel="icon" href="/images/logos/brandmark_purple.svg" type="image/svg+xml"> 70 <link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 71 <link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Fraunces:opsz,[email protected],400;9..144,500&display=swap" rel="stylesheet"> 72 <link rel="stylesheet" href="/assets/reset-05c44cf8428909649f0fc1436c3efe551a61163501a75f8f0103b768b3cd2596.css" /> 73<link rel="stylesheet" href="/assets/scaffold-78ab6c448fd9f4681431cc60c74bde6917cfd2a07429f21977713536c1d214cc.css" /> 74
74<script src="/assets/jquery.min-56a981c8f3080b80f66fcf27c928c1670f0434681478a3fdf46606110390da81.js"></script>
vendor: 1 bytes, line 74
74
75<script src="/assets/application-3467a6e706548758b0dc6978735f8295fb8704c65aca0a40bc72f1d9ff605bac.js"></script>
75 76 <!-- **************************** Firebase BEGIN ****************************************** --> 77 78 79<!--
79<script defer src="https://www.gstatic.com/firebasejs/8.10.1/firebase-app.js"></script>
vendor: 1 bytes, line 79
79
80<script defer src="https://www.gstatic.com/firebasejs/8.10.1/firebase-storage.js"></script>
vendor: 1 bytes, line 80
80
81<script defer src="https://www.gstatic.com/firebasejs/8.10.1/firebase-firestore.js"></script>
vendor: 1 bytes, line 81
81
82<script defer src="https://www.gstatic.com/firebasejs/8.10.1/firebase-auth.js"></script>
82 --> 83 84
85<script src="/assets/firebase-app.min-64b2a3c2e511dae3d94ebf515af93a09632b663eae3ed251ed302bbf86d604f9.js" defer="defer"></script>
vendor: 1 bytes, line 85
85
86<script src="/assets/firebase-storage.min-fdbc3fdf9a8bd3f2b6ca663b6b6d49e4a08c0201cd904c3ad3ebe5d8cc55f95c.js" defer="defer"></script>
vendor: 1 bytes, line 86
86
87<script src="/assets/firebase-firestore.min-2f75ac675d8a4e14be62735c3d05ffd12564967a3b01f4b0022c3c84a587a32a.js" defer="defer"></script>
vendor: 1 bytes, line 87
87
88<script src="/assets/firebase-auth.min-cba571615cc848b9a65bbee42fd292d141ade16544b116b26b7fd0e63a21661b.js" defer="defer"></script>
88 89 90 91
92<script src="/assets/file_deletion_client-e3d9eb8a57ffae17bbbe0eedc5815021542989e429d7a624cdea42041052e85f.js" defer="defer"></script>
vendor: 1 bytes, line 92
92
93<script src="/assets/hotpotFirebaseClass-2f4487a880020ad8e26667198ee76bf7d33040254e034cdadc69db3b4c611900.js" defer="defer"></script>
93 94<!-- **************************** Firebase END ******************************************** --> 95 96 <link rel="stylesheet" href="/assets/marketing_tokens-60f70232900adbd82774c7b637e32028f0374ccfc04d06449b8b8b41c6872b1b.css" /> 97<link rel="stylesheet" href="/assets/landing_pages-e23e68a9d874ca0f9975b5e0e492457ab864868b059417abb4b2273c6e223084.css" /> 98<link rel="stylesheet" href="/assets/terms_summary-913cef7b4c26dbcf67ed1b67fdc7d5e96eb6d45a8ea29b47388f8dc6872d590c.css" />
99<script src="/assets/landing_pages-08a1bdd6be44f61c72a5fdff8a1661deb637e43e09182026d277eb5e11c5a69c.js" defer="defer"></script>
99 100 101 <link rel="stylesheet" href="/assets/local_site_pages-61da92ae630fda7289d3f9353a8acf5e5719901f5923088fcc3459191907e16b.css" /> 102<link rel="stylesheet" href="/assets/local_content_pages-bbe3128d000515b45bd6d6703cea12baf3eec4323fb730e37149a99f8f7d5a44.css" /> 103<link rel="stylesheet" href="/assets/local_contact-49927ac14e3f431cc740e60017c43516b0f8a56cccadf6c9a896526664c7a08d.css" /> 104<link rel="stylesheet" href="/assets/local_redesign-1e4de7ccb6a287983689928e332d05e22df0470f7b0b5750c5bf7bef69f47907.css" /> 105
105<script src="/assets/local_redesign-3bd0575e8d8ecd461e8e953f3a177c75751c2efcd26915b2a35ec5f84109a91a.js" defer="defer"></script>
105 106</head><body class="marketing local-redesign local-auth"> 107 <a class="skip" href="#main">Skip to content</a> 108 <header class="site-header"> 109 <div class="wrap header-inner"> 110 <a class="brand" href="/" aria-label="Hotpot home"><img src="/images/logos/brandmark_purple.svg?v=20260922-filled" height="32" alt=""><span class="wordmark" aria-hidden="true"></span></a> 111 112 <div class="desktop-nav-slot"> 113 <nav class="product-nav" aria-label="Main navigation"> 114 <ul class="nav-groups"> 115 <li class="nav-group" data-nav-group="images"> 116 <button type="button" class="nav-trigger" id="nav-trigger-images" aria-expanded="false" aria-controls="nav-panel-images"> 117 <span>AI Image</span><span class="nav-chevron"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="m7 9 5 5 5-5"/></svg></span> 118 </button> 119 <div class="nav-panel" id="nav-panel-images" hidden> 120 <p class="nav-description">Spark imagination with AI</p> 121 <ul class="nav-links"> 122 <li><a href="/art-generator"><span>Image Generator</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 123 <li><a href="/ai-character-generator"><span>AI Characters</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 124 <li><a href="/logo-generator"><span>AI Logos</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 125 <li><a href="/anime-generator"><span>AI Anime</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 126 </ul> 127 </div> 128</li> <li class="nav-group" data-nav-group="headshots"> 129 <button type="button" class="nav-trigger" id="nav-trigger-headshots" aria-expanded="false" aria-controls="nav-panel-headshots"> 130 <span>AI Headshot</span><span class="nav-chevron"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="m7 9 5 5 5-5"/></svg></span> 131 </button> 132 <div class="nav-panel" id="nav-panel-headshots" hidden> 133 <p class="nav-description">Reimagine yourself with AI</p> 134 <ul class="nav-links"> 135 <li><a href="/headshots/create"><span>General Headshot</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 136 <li><a href="/headshots/create"><span>Corporate Headshot</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 137 <li><a href="/headshots/create"><span>Lunar New Year Headshot</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 138 <li><a href="/headshots/create"><span>Avatar</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 139 <li><a href="/headshots/create"><span>Cosplay Headshot</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 140 <li><a href="/headshots/create"><span>Real Estate Headshot</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 141 <li><a href="/headshots/create"><span>Medical Headshot</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 142 <li><a href="/headshots/create"><span>Xmas Headshot</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 143 </ul> 144 </div> 145</li> <li class="nav-group" data-nav-group="editing"> 146 <button type="button" class="nav-trigger" id="nav-trigger-editing" aria-expanded="false" aria-controls="nav-panel-editing"> 147 <span>AI Editing</span><span class="nav-chevron"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="m7 9 5 5 5-5"/></svg></span> 148 </button> 149 <div class="nav-panel" id="nav-panel-editing" hidden> 150 <p class="nav-description">Transform photos with AI</p> 151 <ul class="nav-links"> 152 <li><a href="/ai-editor"><span>AI Editor</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 153 <li><a href="/upscale-photo"><span>Photo Upscaler</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 154 <li><a href="/colorize-picture"><span>Photo Colorizer</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 155 <li><a href="/restore-picture"><span>Photo Restorer</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 156 <li><a href="/remove-background"><span>
156Background Remover</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 157 </ul> 158 </div> 159</li> <li class="nav-group" data-nav-group="game" hidden="hidden"> 160 <button type="button" class="nav-trigger" id="nav-trigger-game" aria-expanded="false" aria-controls="nav-panel-game"> 161 <span>AI Game</span><span class="nav-chevron"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="m7 9 5 5 5-5"/></svg></span> 162 </button> 163 <div class="nav-panel" id="nav-panel-game" hidden> 164 <p class="nav-description">Create game content with AI</p> 165 <ul class="nav-links"> 166 <li><a href="/game-tools"><span>AI Game Tools</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 167 <li><a href="/ai-character-generator"><span>AI Game Characters</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 168 <li><a href="/background-generator"><span>
168AI Game Background</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 169 <li><a href="/sparkwriter"><span>AI Game Copywriter</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 170 <li><a href="/logo-generator"><span>AI Game Logo</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 171 <li><a href="/dnd-generator"><span>AI DnD Generator</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 172 </ul> 173 </div> 174</li> <li class="nav-group" data-nav-group="writing" hidden="hidden"> 175 <button type="button" class="nav-trigger" id="nav-trigger-writing" aria-expanded="false" aria-controls="nav-panel-writing"> 176 <span>AI Writing</span><span class="nav-chevron"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="m7 9 5 5 5-5"/></svg></span> 177 </button> 178 <div class="nav-panel" id="nav-panel-writing" hidden> 179 <p class="nav-description">Elevate writing with AI</p> 180 <ul class="nav-links"> 181 <li><a href="/sparkwriter"><span>Content Brainstorming</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 182 <li><a href="/sparkwriter"><span>Art & NFT Idea</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 183 <li><a href="/sparkwriter"><span>Copywriting</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 184 <li><a href="/sparkwriter"><span>Song Writing</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 185 <li><a href="/sparkwriter"><span>Book Writing</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 186 <li><a href="/sparkwriter"><span>Professional Writing</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 187 <li><a href="/sparkwriter"><span>Product Writing</span><span class="nav-arrow" aria-hidden="true">â</span></a></li> 188 </ul> 189 </div> 190</li> </ul> 191 </nav> 192 </div> 193 <a class="nav-icon-button desktop-account" href="/account" aria-label="Account" title="Account"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="12" cy="8" r="3.5"/><path d="M5 21v-2a7 7 0 0 1 14 0v2"/></svg></a> 194 <button type="button" class="nav-icon-button menu-toggle" aria-label="Open menu" aria-expanded="false" aria-controls="mobile-menu"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M3 6h18M3 12h18M3 18h18"/></svg></button> 195 </div> 196 <dialog class="mobile-menu" id="mobile-menu" aria-label="Site navigation"> 197 <div class="mobile-menu-header"> 198 <a class="brand" href="/" aria-label="Hotpot home"><img src="/images/logos/brandmark_purple.svg?v=20260922-filled" height="32" alt=""><span class="wordmark" aria-hidden="true"></span></a> 199 200 <button type="button" class="nav-icon-button menu-close" aria-label="Close menu"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="m3 3 18 18M3 21 21 3"/></svg></button> 201 </div> 202 <div class="mobile-utilities"> 203 <a class="nav-icon-button" href="/" aria-label="Home" title="Home"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="m3 10 9-7 9 7M5 9v12h5v-7h4v7h5V9"/></svg></a> 204 <a class="nav-icon-button" href="/account" aria-label="Account" title="Account"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="12" cy="8" r="3.5"/><path d="M5 21v-2a7 7 0 0 1 14 0v2"/></svg></a> 205 <a class="nav-icon-button" href="/contact" target="_blank" rel="noopener" aria-label="Support (opens in a new tab)" title="Support (opens in a new tab)"><svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.65" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="9"/><path d="M9.5 9c0-3.3 5.2-3.3 5.2-.1 0 2-2.7 1.9-2.7 4.1M12 17h.01"/></svg> 206</a> 207 </div> 208 <div class="mobile-menu-body"><div class="mobile-nav-slot"></div></div> 209 </dialog> 210</header> 211 212 213<main id="main" class="contact-layout" tabindex="-1"><section class="contact-panel"><div class="contact-inner" id="pageBox"> 214<h1>Log in</h1> 215<a class="auth-alternate" href="/signup">Or create account</a> 216<div id="preAuthBox"><div class="formBox"> 217<label for="account-email">Email address</label><input id="account-email" type="email" class="email" required autocomplete="email"> 218<label for="account-password">Password</label><div class="password-field"><input id="account-password" type="password" class="password" required autocomplete="current-password"><button type="button" class="password-toggle" aria-label="Show password" aria-pressed="false">Show</button></div> 219<div class="passwordReset"><button type="button" class="button link text-button">Reset password</button></div> 220<div id="messageBox" role="alert" style="display:none"></div> 221<button type="button" id="submitButton" class="primary">Log In</button> 222</div></div></div></section><aside class="picture-panel" aria-labelledby="picture-title"> 223 <div class="picture-inner"> 224 <h2 id="picture-title">Spark imagination</h2> 225 <div class="picture-mosaic"> 226 <img class="mosaic-a" src="/images/site/ai/image_generator/art_maker/style_catalog/watercolor_1.jpg" alt="Watercolor city in warm pinks and greens"> 227 <img src="/images/site/ai/image_generator/art_maker/style_catalog/japanese_art.jpg" alt="Japanese-style dragon above ocean waves"> 228 <img src="/images/site/ai/image_generator/art_maker/style_catalog/oil_painting_1.jpg" alt="Oil painting of an elderly man beside flowers"> 229 </div> 230 </div> 231 </aside> 232</main>
233<script> 234 235// ================================================================================ 236// Global Vars 237// ================================================================================ 238// Data variables 239let LogCategoryName = 'Login'; 240let Db = null; 241 242// View variables 243let MessageBox = null; 244 245 246// ================================================================================ 247// Init Functions 248// ================================================================================ 249function initPreAuthBox() { 250 // Handle clicks on submit button. 251 $('#submitButton').on('click', function() { 252 didClickSubmitButton(); 253 }); 254 255 // Handle password resets. 256 $('.passwordReset .button').on('click', function() { 257 didClickPasswordResetButton(); 258 }); 259 260 261 // Pre-fill email input? 262 let email = getURLParameter('email'); 263 if (email) { 264 $('.formBox .email').val(email); 265 } 266} 267 268 269async function didClickPasswordResetButton() { 270 const email = getEmail(); 271 let text = `<p>Please check ${email}, both spam and inbox.</p> <p>Important: if you get multiple reset emails, only use the latest one. Earlier ones will not work.</p>`; 272 let title = 'Check your email'; 273 274 if (isValidEmail(email)) { 275 const result = await Db.resetUserPassword(email); 276 if (result.statusCode !== 200) { 277 title = 'Reset error'; 278 text = `<p>${result.statusText}</p>`; 279 } 280 } else { 281 title = 'Invalid email'; 282 text = `<p>Please check your email and try again.</p>`; 283 } 284 285 window.localResetFeedback(title, text); 286} 287 288 289async function didClickSubmitButton() { 290 // Get form values. 291 let email = getEmail(); 292 let password = getPassword(); 293 294 295 // Exit early if @email is invalid. 296 if (!isValidEmail(email)) { 297 showPageMessage('Please enter a valid email address'); 298 return; 299 } 300 301 // Login user? 302 let loginResult = await Db.loginUser(email, password); 303 304 if (loginResult.statusCode === 200) { 305 loginDidSucceed(); 306 } else { 307 showPageMessage(loginResult.statusText); 308 } 309} 310 311 312function loginDidSucceed() { 313 window.location = '/account'; 314} 315 316 317function showPageMessage(message) { 318 MessageBox.text(message); 319 MessageBox.show(); 320} 321 322 323function hidePageMessage() { 324 MessageBox.hide(); 325} 326 327 328function getEmail() { 329 return $('.formBox .email').val(); 330} 331 332 333function getPassword() { 334 return $('.formBox .password').val(); 335} 336 337 338function initKeyboardEvents() { 339 $(document).keydown(function(event) { 340 didKeyboardEvent(event); 341 }); 342} 343 344 345function didKeyboardEvent(event) { 346 // Return pressed? Submit form. 347 if (event.keyCode === 13 && !event.target.closest("button")) { 348 didClickSubmitButton(); 349 } 350} 351 352 353function initFirebase() { 354 Db = new HotpotFirebaseClass(); 355} 356 357 358function initGlobals() { 359 MessageBox = $('#messageBox'); 360} 361 362 363function initPage() { 364 initGlobals(); 365 366 initFirebase(); 367 368 initPreAuthBox(); 369 370 initKeyboardEvents(); 371 372 // Prefill email field? 373 const email = getUrlParameter('email'); 374 if (email) { 375 document.querySelector("input[type=email]").value = email; 376 } 377 378 const success = getUrlParameter("success"); 379 if (success) { 380 MessageClass.showMessage("Payment success. Please register/login to finalize the purchase."); 381 } 382 383 if (email && success) { 384 document.querySelector("input[type=email]").disabled = true; 385 } 386 387 debug(LogCategoryName + ' ready'); 388} 389 390 391$(document).ready(function() { 392 initPage(); 393}); 394 395 396</script>
396 397 398 399 <footer class="site-footer"><div class="wrap"> 400 <div class="footer-brandline"> 401 <a class="brand" href="/" aria-label="Hotpot home"><img src="/images/logos/brandmark_paper.svg" height="32" alt=""><span class="wordmark" aria-hidden="true"></span></a> 402 <p>Imagine freely</p> 403 </div> 404 <nav class="footer-columns" aria-label="Footer"> 405 <div><h3>AI Images</h3><a href="/art-generator">Image Generator</a><a href="/ai-character-generator">AI Characters</a><a href="/logo-generator">AI Logos</a><a href="/anime-generator">AI Anime</a></div> 406 <div><h3>AI Headshots</h3><a href="/headshots/create">General Headshot</a><a href="/headshots/create">Corporate Headshot</a><a href="/headshots/create">Lunar New Year Headshot</a><a href="/headshots/create">Avatar</a><a href="/headshots/create">Cosplay Headshot</a><a href="/headshots/create">Real Estate Headshot</a><a href="/headshots/create">Medical Headshot</a><a href="/headshots/create">Xmas Headshot</a></div> 407 <div><h3>AI Editing</h3><a href="/ai-editor">AI Editor</a><a href="/upscale-photo">Photo Upscaler</a><a href="/colorize-picture">Photo Colorizer</a><a href="/restore-picture">Photo Restorer</a><a href="/remove-background">Background Remover</a></div> 408 <div><h3>More Hotpot</h3><a href="/help">Help</a><a href="/about">About</a><a href="/blog/ai-thoughts">AI Misinformation</a><a href="https://x.com/panabee/status/2096357777434374638">Curing Cancer</a></div> 409 </nav> 410 <div class="footer-legal"> 411 <span>© 2026 Panabee, LLC. All rights reserved.</span> 412 <div><a href="/terms">Terms</a><a href="/privacy">Privacy</a><a href="/credits">Credits</a></div> 413 </div> 414</div></footer> 415
416<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a4409cf3fd331477',t:'MTc5MDkxMTY2NQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
416</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.