1var S=t=>{throw TypeError(t)};var x=(t,e,o)=>e.has(t)||S("Cannot "+o);var v=(t,e,o)=>(x(t,e,"read from private field"),o?o.call(t):e.get(t)),E=(t,e,o)=>e.has(t)?S("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,o),A=(t,e,o,r)=>(x(t,e,"write to private field"),r?r.call(t,o):e.set(t,o),o),T=(t,e,o)=>(x(t,e,"access private method"),o);function I(t){for(let e of Object.keys(t).filter(o=>t[o])){let o=document.querySelectorAll(`script[type ="text/plain"][data-cookie-category="${e}"]`);for(let r of o){let i=document.createElement("script");i.textContent=r.innerHTML,i.setAttribute("type","text/javascript");for(let a of r.attributes){let n=a.nodeName;n!=="type"&&i.setAttribute(n,r[n]||r.getAttribute(n))}r.parentNode.replaceChild(i,r)}}}function F(t){document.body.classList.add("cookie-consent-opened"),t.tagName.toLowerCase()==="dialog"?t.showModal():(t.setAttribute("open",""),t.parentNode.setAttribute("open",""))}function M(t){t.tagName.toLowerCase()==="dialog"?t.close():(t.removeAttribute("open"),t.parentNode.removeAttribute("open")),document.body.classList.remove("cookie-consent-opened")}function k(t,e){for(;t.firstChild;)t.firstChild.remove();t.appendChild(document.createTextNode(e))}async function B(t){let e=document.documentElement.getAttribute("lang")||"en";return await(await fetch(`${document.baseURI}_/site-application/site/${t}/cookie-consent`,{headers:{"Accept-Language":e}})).json()}class N{constructor(e){this.permissions=e}hasPermission(e){return!!this.permissions[e]}}class j extends HTMLElement{constructor(){super(),this.didFirstRender=!1,this.categories={},this.dialogSummary="",this.dialogTitle="",this.dialogHeader="",this.dialogFooter="",this.saveText="save",this.expandText="expand",this.acceptAllText="accept all",this.promiseQueue=[],this.submitted=null,this.initialRender=()=>{let e=window.localStorage.getItem("cookie-consent");e?this.cookieConsent=JSON.parse(e):this.cookieConsent={};let o=this.attachShadow({mode:"open"}),r=document.createElement("style");r.innerHTML=` 2 :host { 3 --color-primary: var(--cookie-consent-color-primary, var(--theme-color-primary, #4681f4)); 4 --color-success: hsl(141, 41%, 56%); 5 --color-success-hover: hsl(141, 41%, 61%); 6 color: #333; 7 font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif; 8 font-size: .875rem; 9 line-height: 1.6; 10 } 11 12 dialog, 13 dialog * { 14 box-sizing: border-box; 15 max-inline-size: 60ch; 16 } 17 18 form, summary, details, ul, li, p, a, h1, h2, h3, h4 { 19 margin: 0; 20 padding: 0; 21 } 22 23 .dialog-polyfill-wrapper { 24 --dialog-poly-fill-pad: 1rem; 25 background: rgba(0,0,0,0.6); 26 display: none; 27 justify-content: center; 28 height: 100vh; 29 left: 0; 30 padding: var(--dialog-poly-fill-pad); 31 position: fixed; 32 top: 0; 33 width: calc(100vw - var(--dialog-poly-fill-pad) * 2); 34 z-index: 99999; 35 } 36 37 .dialog-polyfill-wrapper[open] { 38 display: flex; 39 } 40 41 .dialog-polyfill[open] { 42 --dialog-polyfill-bottom-offset: 8rem; 43 --dialog-polyfill-max-height: calc(100vh - calc(var(--dialog-poly-fill-pad) * 2) - var(--dialog-polyfill-bottom-offset)); 44 margin-bottom: var(--dialog-polyfill-bottom-offset); 45 margin-top: auto; 46 max-height: var(--dialog-polyfill-max-height); 47 position: relative; 48 } 49 50 .dialog-polyfill[open], 51 dialog[open] { 52 --pad: calc(1rem + 1.5vw); 53 background: #fff; 54 border: none !important; 55 border-radius: 1rem; 56 box-shadow: 0 0 #0000, 0 0 #0000, 0 25px 50px -12px rgba(0, 0, 0, 0.25); 57 margin-inline: clamp(1rem, auto, 50%); 58 max-inline-size: none; 59 padding: var(--pad) calc(var(--pad) / 2) calc(var(--pad) * 6 + 1rem) var(--pad); 60 width: clamp(288px, calc(100% - 2rem), 60ch); 61 } 62 63 @media screen and (min-width: 400px) { 64 .dialog-polyfill[open], 65 dialog[open] { 66 padding-block-end: calc(var(--pad) * 2 + 2.5rem); 67 } 68 } 69 70 h1 { 71 display: flex; 72 flex-direction: column; 73 font-size: 1.25rem; 74 margin-right: 1rem; 75 position: sticky; 76 top: 0; 77 } 78 79 h1:after { 80 align-self: stretch; 81 background: linear-gradient(180deg, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); 82 content: ""; 83 height: 2rem; 84 } 85 86 p { 87 color: #555; 88 } 89 90 a { 91 color: var(--color-primary); 92 text-decoration: underline; 93 } 94 95 input[type="submit"] { 96 -webkit-appearance: none; 97 -webkit-border-radius: 0; 98 } 99 100 button.show-settings, 101 input[type="submit"] { 102 --bg-color: #333; 103 --border-color: var(--bg-color); 104 --color: #fff; 105 background-color: var(--bg-color); 106 border: thin solid var(--border-color); 107 border-radius: .25em; 108 color: var(--color); 109 cursor: pointer; 110 font-weight: bolder; 111 font-size: 1rem; 112 padding: .75rem 1rem; 113 transition-duration: 200ms; 114 transition-property: background, border, color; 115 } 116 117 button.show-settings, 118 input[type=submit].save, 119 input[type=submit].save-all { 120 bottom: var(--pad); 121 position: absolute; 122 right: var(--pad); 123 width: calc(100% - var(--pad) * 2); 124 } 125 126 @media screen and (min-width: 400px) { 127 button.show-settings, 128 input[type=submit].save, 129 input[type=submit].save-all { 130 width: calc(50% - var(--pad) - .5rem); 131 } 132 } 133 134 input[type=submit].save, 135 button.show-settings { 136 --bg-color: #fff; 137 --border-color: #333; 138 --color: #333; 139 bottom: 5rem; 140 } 141 142 @media screen and (min-width: 400px) { 143 input[type=submit].save, 144 input[type=submit].save-all, 145 button.show-settings { 146 bottom: var(--pad); 147 } 148 } 149 150 input[type=submit].save-all { 151 --bg-color: var(--color-primary); 152 --border-color: var(--color-primary); 153 position: absolute; 154 left: var(--pad); 155 } 156 157 button.show-settings:hover, 158 input[type="submit"]:hover { 159 --bg-color: #333; 160 --border-color: #333; 161 --color: #fff; 162 } 163 164 input[type="checkbox"] { 165 display: none; 166 } 167 168 header, 169 footer { 170 color: #555; 171 } 172 173 footer { 174 margin-top: 1rem; 175 } 176 177 header:empty, 178 footer:empty { 179 display: none; 180 } 181 182 form { 183 display: flex; 184 flex-direction: column; 185 gap: 1rem; 186 } 187 188 p.summary { 189 margin-top: -1rem; 190 } 191 192 .settings { 193 margin-top: -2rem; 194 } 195 196 form.summary .settings { 197 display: none; 198 } 199 200 form:not(.summary) .summary { 201 display: none; 202 } 203 204 form.summary, 205 .settings article { 206 display: flex; 207 flex-direction: column; 208 gap: .5rem; 209 max-height: calc(var(--dialog-polyfill-max-height, 100vh) - 15rem); 210 padding-right: calc(var(--pad) / 2); 211 overflow: auto; 212 } 213 214 .category-list { 215 border-top: 1px solid #ccc; 216 margin-top: 1rem; 217 } 218 219 .category-list li { 220 display: flex; 221 list-style: none; 222 } 223 224 .category { 225 border-bottom: 1px solid #ccc; 226 display: flex; 227 flex-direction: column; 228 padding: .5rem 0 .5rem .5rem; 229 position: relative; 230 transition: all 200ms; 231 width: 100%; 232 } 233 234 button.collapse { 235 --color: #333; 236 background: none; 237 border: none; 238 cursor: pointer; 239 height: 2.5rem; 240 padding: 0; 241 position: absolute; 242 right: 0; 243 top: 0; 244 width: 3rem; 245 } 246 247 button.collapse:hover { 248 --color: var(--color-primary); 249 } 250 251 button.collapse:after, 252 button.collapse:before { 253 background-color: var(--color); 254 border-radius: 0.03em; 255 content: ""; 256 height: .16em; 257 pointer-events: none; 258 position: absolute; 259 right: .75rem; 260 top: 1.625rem; 261 transition: 200ms ease-in-out all; 262 width: 1em; 263 } 264 265 button.collapse:after { 266 transform: rotate(90deg); 267 } 268 269 .category.collapsed button.collapse:after { 270 transform: rotate(180deg); 271 } 272 273 .category label { 274 cursor: pointer; 275 display: flex; 276 padding: .5rem .5rem .5rem 3rem; 277 gap: .5rem; 278 position: relative; 279 width: calc(100% - 3rem); 280 } 281 282 .category label:after, 283 .category label:before { 284 left: 0; 285 position: absolute; 286 top: .6666rem; 287 } 288 289 .category label:hover:before { 290 background-color: #555; 291 } 292 293 .category input:checked + label:before { 294 background-color: var(--color-success); 295 } 296 297 .category input:checked + label:hover:before { 298 background-color: var(--color-success-hover); 299 } 300 301 .category input:checked + label:after { 302 transform: translateX(125%); 303 } 304 305 .category label h4 { 306 color: #777; 307 transition: inherit; 308 } 309 310 .category label:hover h4 { 311 color: #333; 312 text-decoration: underline; 313 } 314 315 .category input:checked + label h4 { 316 color: #333; 317 } 318 319 .category input:checked + label:hover h4 { 320 color: #777; 321 } 322 323 .category label:before { 324 background-color: #777; 325 border-radius: .7rem; 326 content: ""; 327 height: 1.2rem; 328 width: 2.25rem; 329 z-index: 1; 330 } 331 332 .category label:after { 333 background-color: #fff; 334 border-radius: 50%; 335 box-shadow: 0 0 .25em rgba(0, 0, 0, .25); 336 content: ""; 337 height: .8rem; 338 left: .2rem; 339 top: .89583rem; 340 transition: transform 200ms ease; 341 width: .8rem; 342 z-index: 2; 343 } 344 345 .category label:hover:after { 346 box-shadow: none; 347 } 348 349 .category > p { 350 display: none; 351 margin-block-end: .5rem; 352 padding-inline: 3rem 1rem; 353 } 354 355 .category.collapsed > p { 356 display: block; 357 font-size: smaller; 358 } 359 `.replace(/\s\s+/g," ").trim(),o.appendChild(r);let i;if(typeof HTMLDialogElement=="function")i=document.createElement("dialog"),o.appendChild(i);else{i=document.createElement("div"),i.classList.add("dialog-polyfill");let f=document.createElement("div");f.classList.add("dialog-polyfill-wrapper"),f.appendChild(i),o.appendChild(f)}i.setAttribute("id","dialog");let a=document.createElement("h1"),n=document.createElement("header"),c=document.createElement("footer"),l=document.createElement("p");k(a,this.dialogTitle),k(l,this.dialogSummary),k(n,this.dialogHeader),k(c,this.dialogFooter);let s=document.createElement("form");s.id="form",s.setAttribute("action","post"),s.addEventListener("submit",f=>{f.preventDefault(),this.cookieConsent={};let w=new FormData(s);for(let L of Object.keys(this.categories))this.cookieConsent[L]=w.get(`category[${L}]`)==="1";for(window.localStorage.setItem("cookie-consent",JSON.stringify(this.cookieConsent)),this.submitted=new N(this.cookieConsent);this.promiseQueue.length>0;)this.promiseQueue.shift().call(null,this.submitted);I(this.cookieConsent),M(i)});let m=document.createElement("ul");m.id="category-list",m.classList.add("category-list"),s.appendChild(m),s.classList.add("summary");let h=document.createElement("p"),p=document.createElement("div"),g=document.createElement("article");h.classList.add("summary"),p.classList.add("settings");let b=document.createElement("input");b.setAttribute("type","submit"),b.setAttribute("value",this.saveText),b.classList.add("save");let d=document.createElement("input");d.setAttribute("type","submit"),d.setAttribute("value",this.acceptAllText),d.classList.add("save-all"),d.autofocus=!0,d.addEventListener("click",()=>{let f=s.getElementsByTagName("input");for(let w of f)w.type==="checkbox"&&(w.checked=!0)});let y=document.createElement("button");y.setAttribute("type","button"),y.appendChild(document.createTextNode(this.expandText)),y.addEventListener("click",()=>{s.classList.remove("summary")}
359),y.classList.add("show-settings"),h.appendChild(l),h.appendChild(y),s.appendChild(a),s.appendChild(h),s.appendChild(p),s.appendChild(d),g.appendChild(n),g.appendChild(m),g.appendChild(c),p.appendChild(g),p.appendChild(b),i.appendChild(s),Object.keys(this.cookieConsent).length>0&&I(this.cookieConsent)},this.render=(e,o)=>{let r=this.shadowRoot.getElementById("dialog"),i=this.shadowRoot.getElementById("category-list"),a=this.shadowRoot.getElementById("form");if(e==="close"){M(r);return}let n=Object.keys(this.cookieConsent).length>0;if(e!=="open"&&n){for(this.submitted=new N(this.cookieConsent);this.promiseQueue.length>0;)this.promiseQueue.shift().call(null,this.submitted);return}if(Object.keys(this.categories).length===0)return;if(!n)for(let l of Object.keys(this.categories))this.cookieConsent[l]=!0;for(o==="settings"&&a.classList.remove("summary");i.firstChild;)i.firstChild.remove();let c=Object.keys(this.categories);c.sort((l,s)=>this.categories[l].name.localeCompare(this.categories[s].name));for(let l of c){let s=document.createElement("li"),m=document.createElement("div"),h=document.createElement("label"),p=document.createElement("button"),g=document.createElement("h4"),b=document.createElement("p"),d=document.createElement("input");p.setAttribute("type","button"),p.classList.add("collapse"),p.addEventListener("click",()=>m.classList.toggle("collapsed")),g.appendChild(document.createTextNode(this.categories[l].name)),b.appendChild(document.createTextNode(this.categories[l].description)),h.setAttribute("for",`category[${l}]`),h.appendChild(g),d.setAttribute("type","checkbox"),d.setAttribute("name",`category[${l}]`),d.setAttribute("id",`category[${l}]`),d.setAttribute("value","1"),m.appendChild(d),m.appendChild(h),m.appendChild(p),m.appendChild(b),m.classList.add("category"),s.appendChild(m),i.appendChild(s),this.cookieConsent[l]&&(d.checked=!0)}F(r)}}connectedCallback(){B(this.siteId).then(e=>{this.dialogTitle=e.title,this.dialogSummary=e.summary,this.dialogHeader=e.header,this.dialogFooter=e.footer,this.categories=e.categories,this.acceptAllText=e.accept_all,this.saveText=e.save,this.expandText=e.expand,this.initialRender(),this.render(),this.didFirstRender=!0})}attributeChangedCallback(){this.didFirstRender&&this.render()}get siteId(){return this.getAttribute("siteId")}static get observedAttributes(){return["siteId"]}open(e){this.submitted=null,this.render("open",e)}hide(){this.render("close")}permissions(){return this.submitted?Promise.resolve(this.submitted):new Promise(e=>this.promiseQueue.push(e))}}const P={"www.youtube-nocookie.com":()=>!0,"player.vimeo.com":t=>t.searchParams.get("dnt")==="1"},D='<svg version="1.1" id="svg8" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 24 24" xml:space="preserve"><style>.st0{fill:none;stroke:#000;stroke-linecap:round;stroke-linejoin:round}</style><path class="st0" d="M18 13.2c-.6 2.7-3 4.8-5.9 4.8C8.7 18 6 15.3 6 12c0-3.1 2.4-5.7 5.5-6"/><path class="st0" d="M8.7 10.8c-.2 0-.3-.1-.3-.3 0-.2.1-.3.3-.3s.3.1.3.3c0 .2-.1.3-.3.3zM17.2 7.2c-.2 0-.3-.1-.3-.3s.1-.3.3-.3.3.1.3.3-.1.3-.3.3zM12.1 16.2c-.3 0-.6-.3-.6-.6s.3-.6.6-.6.6.3.6.6-.3.6-.6.6zM9 13.8h0M15.1 13.8h0M11.5 12h0M17.5 10.2h0M15.1 8.4h0M11.5 6c-.3.9.3 1.8 1.3 1.8-1.3 2.1-.1 4.2 3 3.9 0 1.5 1.5 1.8 2.2 1.5"/><g id="g1439" transform="translate(0 -290.65)"><path id="path1433" d="M12 290.6c-6.6 0-12 5.4-12 12s5.4 12 12 12 12-5.4 12-12-5.4-12-12-12zm0 2.4c2.2 0 4.3.8 5.9 2L4.4 308.5c-1.3-1.6-2-3.7-2-5.9 0-5.3 4.3-9.6 9.6-9.6zm7.6 3.8c1.3 1.6 2 3.7 2 5.9 0 5.3-4.3 9.6-9.6 9.6-2.2 0-4.3-.8-5.9-2l13.5-13.5z" fill="#666"/></g></svg>';function H(t){document.readyState!=="loading"?t():window.addEventListener("DOMContentLoaded",t)}function $(t){let e=P[t.host];return e?e(t):!1}class U extends HTMLElement{constructor(){super(),this.rendered=!1,this.createRoot=()=>{let e;if(this.rendered)for(;this.firstChild;)this.firstChild.remove();e=document.createElement("div"),this.appendChild(e);let o=document.createElement("style");return o.innerHTML=` 360 iframe-consent iframe:not([width]) { 361 width: 100%; 362 } 363 364 figure.iframe-consent { 365 all: unset; 366 background-color: #eee; 367 background-repeat: no-repeat; 368 background-size: 2rem; 369 background-position: center center; 370 cursor: pointer; 371 outline: medium solid #ccc; 372 box-sizing: border-box; 373 display: inline-block; 374 margin: 0; 375 text-align: center; 376 } 377 378 figure.iframe-consent:hover { 379 filter: invert(15%); 380 } 381 `.replace(/\s\s+/g," ").trim(),e.appendChild(o),this.rendered=!0,e},this.renderIframe=()=>{let e=this.createRoot(),o=document.createElement("iframe");for(let r of this.attributes)r.nodeName!=="cookieless"&&o.setAttribute(r.nodeName,this.getAttribute(r.nodeName));e.appendChild(o)},this.renderError=()=>{let e=this.createRoot(),o=document.createElement("figure"),r=document.createElement("img");for(let i of["width","height"])this.hasAttribute(i)&&r.setAttribute(i,this.getAttribute(i));r.setAttribute("style","visibility:hidden"),o.classList.add("iframe-consent"),o.addEventListener("click",()=>{let i=document.getElementsByTagName("cookie-consent").item(0);i&&(i.open("settings"),i.permissions().then(a=>{a.hasPermission("third_party")&&this.renderIframe()}))}),o.setAttribute("style",`background-image: url("data:image/svg+xml;base64,${btoa(D)}");`),e.appendChild(o),o.appendChild(r)}}connectedCallback(){let e=new URL(document.baseURI),o=new URL(this.getAttribute("src"),e);if(e.origin===o.origin){this.renderIframe();return}if(this.getAttribute("cookieless")==="cookieless"||$(o)){this.renderIframe();return}H(()=>{const r=document.getElementsByTagName("cookie-consent").item(0);r&&r.permissions().then(i=>{i.hasPermission("third_party")?this.renderIframe():this.renderError()})})}}async function R(t,e,o,r,i){const a=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identifier:e,platform:o,application:r,push:i})});if(!a.ok)throw new Error(`Failed to register device, got response code ${a.status}, with ${await a.text()}`)}function O(){var r,i,a,n,c,l,s;const t=window.navigator.userAgent;let e="Unknown",o="";return t.includes("Firefox")?(e="Firefox",o=(r=t.match(/Firefox\/([\d.]+)/))==null?void 0:r[1]):t.includes("Edg")?(e="Edge",o=(i=t.match(/Edg\/([\d.]+)/))==null?void 0:i[1]):t.includes("OPR")||t.includes("Opera")?(e="Opera",o=(a=t.match(/(OPR|Opera)\/([\d.]+)/))==null?void 0:a[2]):t.includes("Chrome")&&!t.includes("Edg")?(e="Chrome",o=(n=t.match(/Chrome\/([\d.]+)/))==null?void 0:n[1]):t.includes("Safari")&&!t.includes("Chrome")?(e="Safari",o=(c=t.match(/Version\/([\d.]+)/))==null?void 0:c[1]):(t.includes("MSIE")||t.includes("Trident"))&&(e="Explorer",o=((l=t.match(/MSIE ([\d.]+)/))==null?void 0:l[1])||((s=t.match(/rv:([\d.]+)/))==null?void 0:s[1])),{name:e,version:o}}var u,C,z;class Q extends HTMLElement{constructor(){super();E(this,C);E(this,u);A(this,u,localStorage.getItem("deviceId")),v(this,u)||(A(this,u,crypto.randomUUID()),localStorage.setItem("deviceId",v(this,u)))}connectedCallback(){T(this,C,z).call(this)}}u=new WeakMap,C=new WeakSet,z=async function(){const o=this.shadowRoot.querySelector(".wrapper");let r=Notification.permission;
381if(r==="granted")try{r=await(await navigator.serviceWorker.getRegistration(this.getAttribute("service-worker"))).pushManager.getSubscription()===null?"unsubscribed":"subscribed"}catch{r="unsubscribed"}o.dataset.state=r,this.shadowRoot.querySelectorAll(":where(.state-default, .state-unsubscribed) button").forEach(i=>i.addEventListener("click",async()=>{const a=await navigator.serviceWorker.register(this.getAttribute("service-worker")),n=await Notification.requestPermission();if(n!=="granted"){o.dataset.state=n;return}const c=await a.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:this.getAttribute("application-server-key")}),l=O();await R(this.getAttribute("endpoint"),v(this,u),{name:"web",model:l.name,version:l.version},{},{token:c.toJSON(),platform:"web"}),o.dataset.state="subscribed"})),this.shadowRoot.querySelectorAll(".state-subscribed button").forEach(i=>i.addEventListener("click",async()=>{const n=await(await navigator.serviceWorker.getRegistration(this.getAttribute("service-worker"))).pushManager.getSubscription();n&&await n.unsubscribe();const c=O();await R(this.getAttribute("endpoint"),v(this,u),{name:"web",model:c.name,version:c.version},{},null),o.dataset.state="unsubscribed"}))};customElements.define("g2site-cookie-consent",j);customElements.define("g2site-iframe-consent",U);customElements.define("g2site-feed-push-subscription",Q);
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.