1(function () { 2 let conversionTriggered = false; 3 let conversionRunning = false; 4 5 if (!params.eventId) { 6 return; 7 } 8 9 const cookieName = params.eventId.cookie; 10 11 const cookieValue = getCookie(cookieName); 12 if (cookieValue) { 13 return; 14 } 15 16 const tryMakeConversion = async () => { 17 if (conversionTriggered || conversionRunning) return; 18 conversionRunning = true; 19 20 try { 21 const EF = window.EF; 22 if (!EF || typeof EF.urlParameter !== 'function') return; 23 24 const offerId = EF.urlParameter('oid'); 25 const transactionId = EF.urlParameter('transaction_id'); 26 if (!offerId || !transactionId) return; 27 28 if (EF.customParamProvider instanceof Promise) { 29 await EF.customParamProvider; 30 } 31 EF.customParamProvider = null; 32 33 const conversion = await EF.conversion({ 34 offer_id: offerId, 35 tracking_domain: 'https://www.csszp8trk.com', 36 adv_event_id: params.eventId.id, 37 transaction_id: transactionId, 38 }); 39 40 const txId = conversion?.transaction_id; 41 const convId = conversion?.conversion_id; 42 43 if (txId && convId) { 44 conversionTriggered = true; 45 setCookie(cookieName, true); 46 observer.disconnect(); 47 } 48 } catch (err) { 49 console.error('Conversion error:', err); 50 } finally { 51 conversionRunning = false; 52 } 53 }; 54 55 const observer = new MutationObserver(() => tryMakeConversion()); 56 observer.observe(document.body, { childList: true, subtree: true }); 57 58 tryMakeConversion(); 59})(); 60 61function setCookie(name, value, days = 1, path = '/') { 62 let expires = ''; 63 if (days) { 64 const date = new Date(); 65 date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); 66 expires = '; expires=' + date.toUTCString(); 67 } 68 document.cookie = `${name}=${encodeURIComponent(value)}${expires}; path=${path}`; 69} 70 71function getCookie(name) { 72 const cookies = document.cookie.split('; ').map((c) => c.split('=')); 73 for (const [key, value] of cookies) { 74 if (key === name) return decodeURIComponent(value); 75 } 76 return null; 77}
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.