1'use strict'; 2 3(function () { 4 var copy = { 5 en: { 6 title: 'Your privacy choices', 7 text: 'We use Google Analytics and may use Google AdSense cookies to measure traffic and support this site. You can accept or reject optional cookies.', 8 accept: 'Accept', 9 reject: 'Reject', 10 privacy: 'Privacy Policy' 11 }, 12 'pt-br': { 13 title: 'Suas escolhas de privacidade', 14 text: 'Usamos o Google Analytics e podemos usar cookies do Google AdSense para medir o tráfego e manter este site. Você pode aceitar ou rejeitar cookies opcionais.', 15 accept: 'Aceitar', 16 reject: 'Rejeitar', 17 privacy: 'PolÃtica de Privacidade' 18 }, 19 nl: { 20 title: 'Uw privacykeuzes', 21 text: 'We gebruiken Google Analytics en mogelijk Google AdSense-cookies om verkeer te meten en deze site te ondersteunen. U kunt optionele cookies accepteren of weigeren.', 22 accept: 'Accepteren', 23 reject: 'Weigeren', 24 privacy: 'Privacybeleid' 25 }, 26 sv: { 27 title: 'Dina integritetsval', 28 text: 'Vi använder Google Analytics och kan använda Google AdSense-cookies för att mäta trafik och stödja webbplatsen. Du kan godkänna eller avvisa valfria cookies.', 29 accept: 'Godkänn', 30 reject: 'Avvisa', 31 privacy: 'Integritetspolicy' 32 }, 33 es: { 34 title: 'Tus opciones de privacidad', 35 text: 'Usamos Google Analytics y podemos usar cookies de Google AdSense para medir el tráfico y mantener este sitio. Puedes aceptar o rechazar las cookies opcionales.', 36 accept: 'Aceptar', 37 reject: 'Rechazar', 38 privacy: 'PolÃtica de Privacidad' 39 }, 40 fr: { 41 title: 'Vos choix de confidentialité', 42 text: 'Nous utilisons Google Analytics et pouvons utiliser des cookies Google AdSense pour mesurer le trafic et financer ce site. Vous pouvez accepter ou refuser les cookies facultatifs.', 43 accept: 'Accepter', 44 reject: 'Refuser', 45 privacy: 'Politique de confidentialité' 46 }, 47 de: { 48 title: 'Ihre Datenschutzauswahl', 49 text: 'Wir verwenden Google Analytics und möglicherweise Google-AdSense-Cookies, um Zugriffe zu messen und diese Website zu finanzieren. Sie können optionale Cookies akzeptieren oder ablehnen.', 50 accept: 'Akzeptieren', 51 reject: 'Ablehnen', 52 privacy: 'Datenschutzerklärung' 53 } 54 }; 55 56 var lang = (document.documentElement.lang || 'en').toLowerCase(); 57 var strings = copy[lang] || copy[lang.split('-')[0]] || copy.en; 58 var banner; 59 60 function updateConsent(value) { 61 var granted = value === 'granted'; 62 if (window.gtag) { 63 window.gtag('consent', 'update', { 64 ad_storage: granted ? 'granted' : 'denied', 65 analytics_storage: granted ? 'granted' : 'denied', 66 ad_user_data: granted ? 'granted' : 'denied', 67 ad_personalization: granted ? 'granted' : 'denied' 68 }); 69 } 70 try { window.localStorage.setItem('spacewaves_consent_v1', value); } catch (e) {} 71 window.__spacewavesConsentSaved = true; 72 if (banner) banner.hidden = true; 73 } 74 75 function showBanner() { 76 if (banner) banner.hidden = false; 77 } 78 79 function buildBanner() { 80 banner = document.createElement('section'); 81 banner.className = 'privacy-consent'; 82 banner.id = 'privacy-consent'; 83 banner.setAttribute('role', 'dialog'); 84 banner.setAttribute('aria-modal', 'false'); 85 banner.setAttribute('aria-labelledby', 'privacy-consent-title'); 86 banner.innerHTML = 87 '<h2 class="privacy-consent__title" id="privacy-consent-title"></h2>' + 88 '<p class="privacy-consent__text"><span></span> <a href="/privacy-policy/" target="_blank" rel="noopener noreferrer"></a></p>' + 89 '<div class="privacy-consent__actions">' + 90 '<button class="privacy-consent__button" type="button" data-consent="denied"></button>' + 91 '<button class="privacy-consent__button privacy-consent__button--accept" type="button" data-consent="granted"></button>' + 92 '</div>'; 93 banner.querySelector('.privacy-consent__title').textContent = strings.title; 94 banner.querySelector('.privacy-consent__text span').textContent = strings.text; 95 banner.querySelector('.privacy-consent__text a').textContent = strings.privacy; 96 banner.querySelector('[data-consent="denied"]').textContent = strings.reject; 97 banner.querySelector('[data-consent="granted"]').textContent = strings.accept; 98 banner.addEventListener('click', function (event) { 99 var button = event.target.closest('[data-consent]'); 100 if (button) updateConsent(button.getAttribute('data-consent')); 101 }); 102 document.body.appendChild(banner); 103 banner.hidden = !!window.__spacewavesConsentSaved; 104 } 105 106 document.addEventListener('click', function (event) { 107 if (event.target.closest('[data-open-privacy-settings]')) { 108 event.preventDefault(); 109 showBanner(); 110 } 111 }); 112 113 if (document.readyState === 'loading') { 114 document.addEventListener('DOMContentLoaded', buildBanner); 115 } else { 116 buildBanner(); 117 } 118})();
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.