1!function(){"use strict";const e=document.getElementById("pubForm");if(!e)return;const t=e.getAttribute("data-contact-email")||"[email protected]",n=e.getAttribute("data-form-endpoint")||"/api/contact",a=e.querySelector(".pub-submit"),i=a?a.innerHTML:"";function s(e){a&&(a.disabled=e,a.innerHTML=e?"â« SENDING... â«":i)}function o(e,t){const n=document.createElement("div");n.className="pixel-toast"+(t?" pixel-toast-"+t:""),n.textContent=e,document.body.appendChild(n),requestAnimationFrame(()=>n.classList.add("pixel-toast-show")),setTimeout(()=>{n.classList.remove("pixel-toast-show"),setTimeout(()=>n.remove(),400)},3800)}e.addEventListener("submit",async function(a){a.preventDefault();const i=(e.elements.name&&e.elements.name.value||"").trim(),r=(e.elements.email&&e.elements.email.value||"").trim(),l=(e.elements.reason&&e.elements.reason.value||"").trim(),c=(e.elements.subject&&e.elements.subject.value||"").trim(),m=(e.elements.message&&e.elements.message.value||"").trim();if(!i||!r||!m)return void o("Fill in name, email and message first","err");const u={name:i,email:r,reason:l||"",subject:c||"",message:m};s(!0);try{const t=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(u)}),a=await t.json().catch(()=>({}));if(!t.ok||!a.success)throw new Error(a.error||"HTTP "+t.status);if(o("Message sent! Weâll get back to you â«","ok"),e.reset(),window.Sound&&"function"==typeof window.Sound.play)try{window.Sound.play("liberty")}catch(e){}}catch(e){o(await(d=t,navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(d).then(()=>!0).catch(()=>!1):Promise.resolve(!1))?"Send failed · email copied: "+t:"Send failed · email us: "+t,"err")}finally{s(!1)}var d})}();
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.