1// allow chainloading of pgjs 2var pgjs_chainloaded = pgjs_chainloaded || false; 3var pgjs_chainload_config = location.search.split('pgjs=')[1]; 4 5if (!!pgjs_chainload_config && !pgjs_chainloaded) { 6 pgjs_chainloaded = true; 7 var end = pgjs_chainload_config.indexOf('&'); 8 if (end > 0) { 9 pgjs_chainload_config = pgjs_chainload_config.substring(0, end); 10 } 11 var src = ('https:' === document.location.protocol ? 'https:' : 'http:') + '//www.lightfield-forum.com/' + pgjs_chainload_config; 12 var scripts = document.getElementsByTagName("script"); 13 var chainload_found = false; 14 for (var i = 0; i < scripts.length; i++) { 15 if (scripts[i].src === src) { 16 chainload_found = true; 17 break; 18 } 19 } 20 if (!chainload_found) { 21 var script = document.createElement("script"); 22 script.async = true; 23 script.type = "text/javascript"; 24 script.src = src; 25 var target = document.getElementsByTagName("head")[0]; 26 target.insertBefore(script, target.firstChild); 27 throw "-- switching to config[" + pgjs_chainload_config + "]"; 28 } 29} 30 31window.pgjs = window.pgjs || {}; 32window.googletag = window.googletag || {}; 33window.googletag.cmd = window.googletag.cmd || []; 34var CONST_ADBLOCK_CATEGORY = 'pgjs adblock detection'; 35pgjs.kvps = pgjs.kvps || []; 36pgjs.publisher = pgjs.publisher || {}; 37pgjs.versioning = { 38 'gdpr' : '2018-06-03', // fixed callback for adblock detection, removed date check 39 'adblock-detection' : '2016-06-03', // fixed callback for adblock detection 40} 41 42//TraffiCop variables used 43pgjs.startTime = pgjs.startTime || (new Date()).getTime(); 44pgjs.coordinateArray = pgjs.coordinateArray || []; 45pgjs.onUnloadCheck=false, pgjs.scrollTracked = false; 46 47//Variables used across all user events 48pgjs.trafficEvents = function () { 49 var MAX_ALLOWED_PACKETS = 100,MAX_ALLOWED_PACKETS2 = 5; 50 var eventInterval = null; 51 var event_packets = []; 52 var mouseX, mouseY, prevX, prevY, mouse_counter, scroll_counter, resize_counter, event_counter, keypress_counter,mouse_counter2,touch_counter1,touch_counter2; 53 mouseX = mouseY = prevX = prevY = mouse_counter = mouse_counter2 = scroll_counter = event_counter = resize_counter = keypress_counter = touch_counter1 = touch_counter2= 0; 54 55 function addPacket(packet) { 56 event_packets.push(packet); 57 } 58 function getPackets() { 59 return event_packets; 60 } 61 function setMouseX(value) { 62 mouseX = value; 63 } 64 function getMouseX() { 65 return mouseX; 66 } 67 function setMouseY(value) { 68 mouseY = value; 69 } 70 function getMouseY() { 71 return mouseY; 72 } 73 function setPrevMouseX(value) { 74 prevX = value; 75 } 76 function getPrevMouseX() { 77 return prevX; 78 } 79 function setPrevMouseY(value) { 80 prevY = value; 81 } 82 function getPrevMouseY() { 83 return prevY; 84 } 85 function getMouseCounter() { 86 return mouse_counter; 87 } 88 function incrementMouseCounter() { 89 ++mouse_counter; 90 } 91 function getMouseCounter2() { 92 return mouse_counter2; 93 } 94 function incrementMouseCounter2() { 95 ++mouse_counter2; 96 } 97 function getEventCounter() { 98 return event_counter; 99 } 100 function incrementEventCounter() { 101 ++event_counter; 102 } 103 function getMaxEvents() { 104 return MAX_ALLOWED_PACKETS2; 105 } 106 function getMaxAllowedPackets() { 107 return MAX_ALLOWED_PACKETS; 108 } 109 function getMaxAllowedPackets2() { 110 return MAX_ALLOWED_PACKETS; 111 } 112 function cleanEventData() { 113 event_packets = []; 114 mouse_counter = 0; 115 } 116 function setEventInterval(interval) { 117 eventInterval = interval; 118 } 119 function getEventInterval() { 120 return eventInterval; 121 } 122 function incrementScrollCounter() { 123 ++scroll_counter; 124 } 125 function getScrollCounter() { 126 return scroll_counter; 127 } 128 function incrementResizeCounter() { 129 ++resize_counter; 130 } 131 function getResizeCounter() { 132 return resize_counter; 133 } 134 function incrementKeypressCounter() { 135 ++keypress_counter; 136 } 137 function getKeypressCounter() { 138 return keypress_counter; 139 } 140 function incrementTouchCounter1() { 141 ++touch_counter1; 142 } 143 function getTouchCounter1() { 144 return touch_counter1; 145 } 146 function incrementTouchCounter2() { 147 ++touch_counter2; 148 } 149 function getTouchCounter2() { 150 return touch_counter2; 151 } 152 153 return { 154 addPacket: addPacket, 155 getPackets: getPackets, 156 setMouseX: setMouseX, 157 getMouseX: getMouseX, 158 setMouseY: setMouseY, 159 getMouseY: getMouseY, 160 setPrevMouseX: setPrevMouseX, 161 getPrevMouseX: getPrevMouseX, 162 setPrevMouseY: setPrevMouseY, 163 getPrevMouseY: getPrevMouseY, 164 getMouseCounter: getMouseCounter, 165 incrementMouseCounter: incrementMouseCounter, 166 getMouseCounter2: getMouseCounter2, 167 incrementMouseCounter2: incrementMouseCounter2,
168 getEventCounter: getEventCounter, 169 incrementEventCounter: incrementEventCounter, 170 getMaxEvents: getMaxEvents, 171 cleanEventData: cleanEventData, 172 setEventInterval: setEventInterval, 173 getEventInterval: getEventInterval, 174 incrementScrollCounter: incrementScrollCounter, 175 getScrollCounter: getScrollCounter, 176 incrementResizeCounter: incrementResizeCounter, 177 getResizeCounter: getResizeCounter, 178 getKeypressCounter: getKeypressCounter, 179 incrementKeypressCounter: incrementKeypressCounter, 180 getTouchCounter1:getTouchCounter1, 181 incrementTouchCounter1: incrementTouchCounter1, 182 getTouchCounter2: getTouchCounter2, 183 incrementTouchCounter2: incrementTouchCounter2, 184 getMaxAllowedPackets: getMaxAllowedPackets, 185 getMaxAllowedPackets2: getMaxAllowedPackets2 186 }; 187}(); 188 189pgjs.loadJS = function(src, async) { 190 // load JS asynchronously, and only once 191 pgjs.loadedJS = pgjs.loadedJS || []; 192 src = src.replace(/^(https)/,""); 193 src = src.replace(/^(http)/,""); 194 src = src.replace(/^(:)/,""); 195 var found = false; 196 if (pgjs.loadedJS.indexOf(src) >= 0) { // don't reload the same script twice 197 pgjs.log('already loaded src[' + src + '], skipping load', 'chainload'); 198 } else { 199 var scripts = document.getElementsByTagName("script"); 200 for (var i = 0; i < scripts.length; i++) { 201// pgjs.log('checking loaded script[' + scripts[i].src + '] against src[' + src + ']'); 202 if ((scripts[i].src === src) || (scripts[i].src === 'http:' + src) || (scripts[i].src === 'https:' + src)) { 203 pgjs.log('found src[' + src + '] on page, skipping load', 'chainload'); 204 pgjs.loadedJS.push(src); 205 found = true; 206 break; 207 } 208 } 209 if (!found) { 210 // use array to track what's been loaded... DOM may not be available to permute 211 // at the time that this loads. 212 pgjs.loadedJS.push(src); 213 pgjs.ssl = pgjs.ssl || ('https:' === document.location.protocol); 214 (function() { 215 var script = document.createElement("script"); 216 script.async = true; 217 if (typeof async !== 'undefined') { // must code like this because async=false || true is always true 218 script.async = async; 219 } 220 script.type = "text/javascript"; 221 script.src = (pgjs.ssl ? 'https:' : 'http:') + src; 222 var target = document.getElementsByTagName("head")[0]; 223 target.insertBefore(script, target.firstChild); 224 pgjs.log('loading js[' + src + ']'); 225 })(); 226 return true; 227 } 228 } 229 return false; 230}; 231 232pgjs.get = function(key) { 233 if (typeof pgjs.getVariables === 'undefined') { 234 pgjs.getVariables = {}; 235 document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () { 236 function decode(s) {return decodeURIComponent(s.split("+").join(" "));} 237 var key = decode(arguments[1]); 238 var value = decode(arguments[2]); 239 if (!isNaN(parseFloat(value)) && isFinite(value)) { 240 value = parseFloat(value); 241 } 242 pgjs.getVariables[key] = value; 243 }); 244 } 245 if (!!pgjs.getVariables[key]) 246 return pgjs.getVariables[key]; 247 return false; 248}; 249 250pgjs.log = function(msg, section) { 251 if (pgjs.debug) { 252 var prefix = 'PG' + (!!section ? '.' + section : '') + ': '; 253 if (typeof msg == 'string') { 254 console.log(prefix + msg); 255 } else { 256 console.log(prefix); 257 console.log(msg); 258 } 259 }; 260} 261 262if (pgjs.get('pg_debug') || pgjs.get('pg_gdpr') || pgjs.get('pgdebug') || pgjs.get('m2debug') || pgjs.get('m2_debug') || pgjs.get('pgjs') || pgjs.get('pghb')) { 263 pgjs.debug = true; 264 // override console clearing functions. some bidders call these. 265 window.clear = function() { console.log('===== window.clear() called, ignoring ===== '); } 266 window.console.clear = function() { console.log('===== window.console.clear() called, ignoring ===== '); } 267 window.top.clear = function() { console.log('===== window.top.clear() called, ignoring ===== '); } 268} 269 270// // load DFP as soon as possible 271// pgjs.log('force loading gpt.js'); 272// window.googletag.cmd.push(function () { 273// window.googletag.pubads().disableInitialLoad(); 274// window.top.pgjs.disabledGptInitialLoad = true; 275// }); 276// pgjs.loadJS('//www.googletagservices.com/tag/js/gpt.js'); 277 278pgjs.cookie = function(key, value, days) { 279 if (value || (value === '') || (typeof value != 'undefined')) { 280 var expires; 281 if (days) { 282 var date = new Date(); 283 date.setTime(date.getTime()+(days*24*60*60*1000)); 284 expires = "; expires="+date.toGMTString(); 285 } else { 286 expires = ""; 287 } 288 document.cookie = key+"="+value+expires+"; path=/"; 289 return value; 290 } 291 var nameEQ = key + "="; 292 var ca = document.cookie.split(';'); 293 for(var i=0;i < ca.length;i++) { 294 var c = ca[i]; 295 while (c.charAt(0)===' ') { 296 c = c.substring(1,c.length); 297 } 298 if (c.indexOf(nameEQ) === 0) { 299 return c.substring(nameEQ.length,c.length); 300 } 301 } 302 return false;
303}; 304pgjs.deleteCookie = function (name) { 305 pgjs.cookie(name, "", -1); 306}; 307 308pgjs.getScreenWidth = function(win) { 309 var w = window.win || window._win || window; 310 var d = w.document; 311 312 if (w.innerWidth) { 313 return w.innerWidth; 314 } else if (d.body.clientWidth) { 315 return d.body.clientWidth; 316 } else if (d.documentElement.clientWidth) { 317 return d.documentElement.clientWidth; 318 } 319 return 0; 320} 321 322pgjs.isMobile = function() { 323 // detect whether the visitor is on a mobile device. some pubs have their own 324 // library for this, but we've found that some of them are failing to load 325 // before pgjs is loaded. 326 if (typeof window.isMobileDevice === 'function') { 327 return window.isMobileDevice(); 328 } else if (typeof window.isMobileDevice === 'boolean') { 329 return window.isMobileDevice; 330 } 331 if (typeof window.isMobile === 'function') { 332 return window.isMobile(); 333 } else if (typeof window.isMobile === 'boolean') { 334 return window.isMobile; 335 } 336 if (typeof window.pageMobile === 'function') { 337 return window.pageMobile(); 338 } else if (typeof window.pageMobile === 'boolean') { 339 return window.pageMobile; 340 } 341 if ((pgjs.getScreenWidth() > 0) && (pgjs.getScreenWidth() <= 800)) { return true; } 342 var mobile = false; 343 (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) mobile = true;})(navigator.userAgent||navigator.vendor||window.opera); 344 return mobile; 345}; 346 347pgjs.postObject = function(endpoint, object) { 348 try { 349 var xhr = new XMLHttpRequest(); 350 xhr.open('POST', endpoint, true); 351 xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8'); 352 xhr.send(JSON.stringify({'data' : object})); 353 } catch (e) { 354 pgjs.log('failed to post object to endpoint[' + endpoint + ']'); 355 pgjs.log(object); 356 } 357} 358 359pgjs.visitorHasAdBlock = function() { 360 if (typeof pgjs.adblocked == 'undefined') { 361 pgjs.adblocked = false; 362 var domElement = document.createElement('div'); 363 var adBlockId = 'ad-test-' + Math.random().toString(32); 364 domElement.setAttribute("class", "advertisement ad advertising ad_holder ad-placement bottom-ad adsbox") 365 domElement.setAttribute("id", adBlockId); 366 domElement.setAttribute("style", "width:300px;height:250px;background:#CCC;top:-500px;position:absolute;"); 367 document.body.appendChild(domElement); 368 var tag = document.getElementById(adBlockId); 369 if ((tag.length < 1) || (tag.clientHeight < 1) || tag.offsetHeight === 0) { 370 pgjs.adblocked = true; 371 } 372 tag.remove(); 373 } 374 return pgjs.adblocked; 375} 376 377pgjs.isNewSession = function() { 378 var sessionTracked = pgjs.cookie('sessionTracked'); 379 if (sessionTracked) { 380 pgjs.log('- existing session found in cookie', 'pageviews'); 381 } else { 382 try { 383 sessionTracked = window.sessionStorage.getItem('sessionTracked'); 384 if (sessionTracked) { 385 pgjs.log('- existing session found in sessionStorage', 'pageviews'); 386 } 387 } catch (e) { 388 pgjs.log('! fetching session tracking from localStorage failed for error[' + e + ']', 'pageviews'); 389 } 390 } 391 if (!sessionTracked) { 392 pgjs.log('+ new session found', 'pageviews'); 393 return true; 394 } 395 if (sessionTracked) { 396 pgjs.log('~ session already tracked, checking if UTMs changed', 'pageviews'); 397 var utmKeys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
398 utmKeys.forEach(function(key) { 399 if (pgjs.get(key) != '') { 400 if (pgjs.cookie(key) != get(key)) { 401 pgjs.log('+ new session, utm key[' + key + '] in get[' + pgjs.get('key') + '] doesn\'t match cookie[' + pgjs.cookie(key) + ']', 'pageviews'); 402 return true; 403 } 404 try { 405 if (window.sessionStorage.getItem(key) != pgjs.get(key)) { 406 pgjs.log('+ new session, utm key[' + key + '] in get[' + pgjs.get('key') + '] doesn\'t match sessionStorage[' + window.sessionStorage.getItem(key) + ']', 'pageviews'); 407 return true; 408 } 409 } catch (e) { 410 pgjs.log('! fetching session tracking from localStorage failed for key[' + key + '] error[' + e + ']', 'pageviews'); 411 } 412 } 413 }); 414 } 415 pgjs.log('- session has already been tracked', 'pageviews'); 416 return false; 417} 418 419 420// each pageview in a session is counted here. many bidders drop out throughout 421// the session and adops will sometimes enable more aggressive ads on later pageviews 422pgjs.getSessionDepth = function() { 423 if (typeof pgjs.sessionDepth == 'undefined') { 424 if (isNewSession()) { 425 pgjs.sessionDepth = 0; 426 } else { 427 pgjs.sessionDepth = parseInt(cookie('session_depth') || 0); 428 if (isNaN(pgjs.sessionDepth)) { 429 pgjs.sessionDepth = 0; 430 } 431 } 432 pgjs.sessionDepth++; 433 if (pgjs.sessionDepth == 1) { 434 try { 435 window.sessionStorage.setItem('sessionTracked', '1'); 436 } catch (e) { 437 cookie('sessionTracked', '1', 1); 438 } 439 } 440 cookie('session_depth', pgjs.sessionDepth, 1); 441 } 442 return pgjs.sessionDepth; 443} 444 445pgjs.publisher.getDfpNetworkCode = function() {
446 // included for compatibility with m2js functions 447 if (typeof pgjs.publisher.dfpNetworkCode == 'undefined') { 448 pgjs.publisher.dfpNetworkCode = ''; 449 try{ 450 var slots = window.googletag.pubads().getSlots(); 451 for (var i = 0; i < slots.length; i++) { 452 var parts = slots[i].getAdUnitPath().split('/'); 453 if (typeof parts[1] !== 'undefined') { 454 pgjs.publisher.dfpNetworkCode = parts[1]; 455 break; 456 } 457 } 458 } catch(e){ //let's just catch it if googletag is not present 459 } 460 } 461 return pgjs.publisher.dfpNetworkCode; 462} 463 464pgjs.getPublisher = function() { 465 // included for compatibility with pgjs functions 466 return pgjs.publisher; 467} 468 469//Domain name 470pgjs.getPublisherDomain2 = function () { 471 return window.location.host.replace(/^www\./,''); 472}; 473 474pgjs.postDfpKvps = function() { 475 // POST JSON to http://kvp.m2.ai 476 // `{'networkCode': {'keyname': ['val1', 'val2']}}` 477 // e.g. `{'73004400': {'key3': ['abc']}}` 478 var request = new XMLHttpRequest(); 479 request.open('POST', (pgjs.ssl ? 'https:' : 'http:') + '//kvp.m2.ai', true); 480 request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 481 var data = {}; 482 data[getDfpNetworkCode()] = {};
483 Object.keys(pgjs.kvps).forEach(function(key) { 484 if (typeof data[getDfpNetworkCode()][key] === 'undefined') { 485 data[getDfpNetworkCode()][key] = []; 486 } 487 data[getDfpNetworkCode()][key].push(pgjs.kvps[key]); 488 }); 489 request.send(JSON.stringify(data)); 490}; 491 492pgjs.setKvps = function(kvps) { 493 // set KVPs for tracking and multivariate testing 494 window.googletag.cmd.push(function () { 495 if (typeof window.googletag.pubads() !== 'undefined') { 496 var slots = window.googletag.pubads().getSlots(); 497 slots.forEach(function(slot) { 498 for (var key in kvps) { 499 var keyValue = String([kvps[key]]).substring(0, 40); // KVPs have a max length of 40 characters. any KVP that's set longer than that is completely ignored by DFP 500 pgjs.log('setting KVP key[' + key + '] to value[' + keyValue + '] for slot[' + slot.getAdUnitPath() + ']'); 501 slot.setTargeting(key, keyValue); 502 } 503 }); 504 } else { 505 pgjs.log('failed to set global KVPs because pubads isn\'t ready'); 506 } 507 }); 508}; 509 510pgjs.trackPageview = function() { 511 pgjs.log('tracking pageview', 'pageviews'); 512 if (typeof pgjs === 'undefined'){ return false; } 513 pgjs.pageviewTracked = (pgjs && pgjs.pageviewTracked) || false; 514 if (pgjs.pageviewTracked) { 515 return true; 516 }
517 window.googletag.pubads().getSlots().forEach(function(slot) { 518 if (!pgjs.pageviewTracked) { 519 var divId = slot.getSlotElementId(); 520 pgjs.log('+ checking unit[' + slot.getAdUnitPath() + '] div[' + divId + ']', 'pageviews'); 521 if ((typeof divId != 'undefined') && (divId) && !!document.getElementById(divId)) { 522 pgjs.log('+ tracking pageview', 'pageviews'); 523 slot.setTargeting('pageview', '1'); 524 if (getSessionDepth() == 1) { 525 slot.setTargeting('session', '1'); 526 } 527 pgjs.pageviewTracked = true; 528 return true; 529 } 530 } 531 }); 532 return false; 533} 534 535pgjs.getDeviceType = function() { 536 if (pgjs.isMobile()) 537 return 'mobile'; 538 return 'desktop'; 539} 540 541pgjs.getGoogleAnalyticsVersion = function() { 542 // this function returns the google analytics version used by publisher. 543 if (typeof pgjs.googleAnalyticsVersion == 'undefined') { 544 pgjs.googleAnalyticsVersion = false; 545 if (typeof window.ga != 'undefined') { 546 // ga() tracking in analytics.js... see https://developers.google.com/analytics/devguides/collection/analyticsjs/events 547 pgjs.googleAnalyticsVersion = 'ga'; 548 } else if (typeof window.GoogleAnalyticsObject != 'undefined') { 549 // found some renamed copies 550 pgjs.googleAnalyticsVersion = 'gao'; 551 } else if (typeof window._gaq != 'undefined') { 552 // some ultra-legacy implementations using ga.js weren't set up to use trackEvent() and need to gaq.push() instead. 553 pgjs.googleAnalyticsVersion = 'gaq'; 554 } else if (typeof window.trackEvent != 'function') { 555 // trackEvent tracking in ga.js... see https://developers.google.com/analytics/devguides/collection/gajs/eventTrackerGuide?hl=en 556 pgjs.googleAnalyticsVersion = 'trackEvent'; 557 } 558 if (pgjs.googleAnalyticsVersion) { 559 pgjs.log('support found for version[' + pgjs.googleAnalyticsVersion + ']', 'google analytics'); 560 } else { 561 pgjs.log('no support found', 'google analytics'); 562 } 563 } 564 return pgjs.googleAnalyticsVersion; 565} 566 567pgjs.logGaEvent = function(category, action, label) { 568 if (pgjs.getGoogleAnalyticsVersion() == 'ga') { 569 pgjs.log('version[' + pgjs.getGoogleAnalyticsVersion() + ']: category[' + category + '] action[' + action + '] label[' + label + ']', 'google analytics'); 570 window.ga('send', 'event', category, action, label); 571 } else if (pgjs.getGoogleAnalyticsVersion() == 'gao') { 572 pgjs.log('version[' + pgjs.getGoogleAnalyticsVersion() + ']: category[' + category + '] action[' + action + '] label[' + label + ']', 'google analytics'); 573 window[window.GoogleAnalyticsObject]('send', 'event', category, action, label); 574 } else if (pgjs.getGoogleAnalyticsVersion() == 'trackEvent') { 575 pgjs.log('version[' + pgjs.getGoogleAnalyticsVersion() + ']: category[' + category + '] action[' + action + '] label[' + label + ']', 'google analytics'); 576 trackEvent(category, action, label); 577 } else if (pgjs.getGoogleAnalyticsVersion() == 'gaq') { 578 pgjs.log('version[' + pgjs.getGoogleAnalyticsVersion() + ']: category[' + category + '] action[' + action + '] label[' + label + ']', 'google analytics'); 579 _gaq.push(['_trackEvent', category, action, label]); 580 } else { 581 pgjs.log('no valid version, failed to log category[' + category + '] action[' + action + '] label[' + label + ']', 'google analytics'); 582 } 583} 584 585pgjs.getJSON = function(url, callback) { 586 var xhr = new XMLHttpRequest(); 587 xhr.open('GET', url, true); 588 xhr.onload = function() { 589 var status = xhr.status; 590 if (status === 200) { 591 callback(null, JSON.parse(xhr.responseText)); 592 } else { 593 callback(status, xhr.response); 594 } 595 }; 596 xhr.send(); 597}; 598 599pgjs.getUtm = function(key) { 600 var keyValue = '/empty/'; 601 if (pgjs.get(key)) { 602 keyValue = pgjs.get(key); 603 } else if ((typeof window.sessionStorage !== 'undefined') && !!window.sessionStorage.getItem(key)) { 604 keyValue = window.sessionStorage.getItem(key); 605 } else if (pgjs.cookie(key)) { 606 keyValue = pgjs.cookie(key); 607 } 608 return keyValue; 609} 610 611pgjs.getGptSlotByAdUnitCode = function(adUnitCode) { 612 if (!!window.googletag && !!window.googletag.pubads()) { 613 var slots = window.googletag.pubads().getSlots(); 614 for (var i = 0; i < slots.length; i++) { 615 if (slots[i].getAdUnitPath() === adUnitCode) 616 return slots[i]; 617 } 618 } 619 return false;
620}; 621 622pgjs.gdpr = pgjs.gdpr || {}; 623 624pgjs.gdpr.consentDuration = pgjs.gdpr.consentDuration || 30*13; 625if (typeof pgjs.gdpr.roadBlock == 'undefined') { 626 pgjs.gdpr.roadBlock = true; 627} 628pgjs.gdpr.enableRoadBlock = function() { pgjs.gdpr.roadBlock = true; } 629pgjs.gdpr.disableRoadblock = function() { pgjs.gdpr.roadBlock = false; } 630pgjs.gdpr.partners = pgjs.gdpr.partners || []; 631pgjs.gdpr.gvlPartners = pgjs.gdpr.gvlPartners || []; 632pgjs.gdpr.gvlFeatures = pgjs.gdpr.gvlFeatures || []; 633pgjs.gdpr.gvlPurposes = pgjs.gdpr.gvlPurposes || []; 634pgjs.gdpr.design = pgjs.gdpr.design || 'icecap'; 635pgjs.gdprAnalytics = pgjs.gdprAnalytics || {}; 636 637pgjs.publisher = pgjs.publisher || {}; 638pgjs.publisher.name = pgjs.publisher.name || window.location.hostname.replace(/^(www\.)/,"").replace(/^(www2\.)/,"").replace(/^(ww2\.)/,""); 639pgjs.log('pub privacy[' + pgjs.publisher.privacy + '] policyUrl[' + pgjs.publisher.policyUrl + '] privacyPolicy[' + pgjs.publisher.privacyPolicy + ']'); 640pgjs.publisher.policyUrl = pgjs.publisher.policyUrl || pgjs.publisher.privacyPolicy || pgjs.publisher.privacy; 641if (!pgjs.publisher.policyUrl) { 642 pgjs.publisher.policyUrldefaulted = true; 643 pgjs.publisher.policyUrl = 'http://' + window.location.hostname + '/privacy-policy/'; 644} 645pgjs.publisher.isPublisher = true; 646pgjs.gdpr.partners.push(pgjs.publisher); 647pgjs.gdpr.partners = pgjs.gdpr.partners.concat([ 648 {'name': 'AtomX', 'policyUrl': 'https://www.atomx.com/privacy'}, 649 {'name': 'Beachfront', 'policyUrl': 'http://beachfrontmedia.com/privacy-policy/'}, 650 {'name': 'Brightcom / Ybrant', 'policyUrl': 'http://www.ybrantdigital.com/pt/privacy-policy.html'}, 651 {'name': 'C1xbid', 'policyUrl': 'http://c1exchange.com/policy'}, 652 {'name': 'Defy Media', 'policyUrl': 'http://defymedia.com/privacy-policy/'}, 653 {'name': 'Eplanning', 'policyUrl': 'https://www.e-planning.net/en/privacy.html'}, 654 {'name': 'Fidelity', 'policyUrl': 'https://fidelity-media.com/privacy-policy/'}, 655 {'name': 'Freewheel-SSP', 'policyUrl': 'http://freewheel.tv/privacy-policy/'}, 656 {'name': 'HeadBidding (NativeAds)', 'policyUrl': 'https://nativeads.com/privacy-policy.php'}, 657 {'name': 'HiroMedia', 'policyUrl': 'http://www.hiro-media.com/privacy.php'}, 658 {'name': 'Hudled Masses', 'policyUrl': 'https://img1.wsimg.com/blobby/go/df00bb8a-a61b-43af-a6da-3feb6a59c59a/downloads/1bq09pqem_107344.docx'}, 659 {'name': 'Imonomy', 'policyUrl': 'http://imonomy.com/privacy-policy/'}, 660 {'name': 'InvestingChannel', 'policyUrl': 'http://media.investingchannel.com/privacy-policy/'}, 661 {'name': 'J Carter Marketing', 'policyUrl': 'https://www.adfrontiers.com/policy.html'}, 662 {'name': 'Kargo', 'policyUrl': 'https://www.kargo.com/privacy/'}, 663 {'name': 'Komoona', 'policyUrl': 'https://www.komoona.com/privacy-policy'}, 664 {'name': 'KruxLink', 'policyUrl': 'https://www.salesforce.com/products/marketing-cloud/sfmc/salesforce-dmp-privacy/'}, 665 {'name': 'Madrivo Digital', 'policyUrl': 'http://www.madrivo.com/privacy.html'}, 666 {'name': 'Mantis', 'policyUrl': 'http://www.mantisadnetwork.com/privacy-policy/'}, 667 {'name': 'Matomy', 'policyUrl': 'http://www.matomy.com/global-privacy-policy/'}, 668 {'name': 'Media net', 'policyUrl': 'https://www.media.net/en/privacy-policy'}, 669 {'name': 'Pixfuture', 'policyUrl': 'https://www.pixfuture.com/privacy-policy/'}, 670 {'name': 'SmartyAds', 'policyUrl': 'https://smartyads.com/privacy-policy'}, 671 {'name': 'Stellar Media', 'policyUrl': 'http://stellar-media-solutions.com/privacy_policy.php'}, 672 {'name': 'StickyAdsTV', 'policyUrl': 'http://freewheel.tv/privacy-policy/'}, 673 {'name': 'Twenga', 'policyUrl': 'https://www.twenga-solutions.com/en/privacypolicy'}, 674 {'name': 'Velis Media', 'policyUrl': 'http://www.velismedia.com/PDF/PrivacyPolicy.pdf'}, 675 {'name': 'VertaMedia', 'policyUrl': 'https://adtelligent.com/privacy-policy/'}, 676 {'name': 'Vertoz', 'policyUrl': 'https://www.vertoz.com/privacy-policy'}, 677 {'name': 'WideOrbit', 'policyUrl': 'https://www.wideorbit.com/privacy/'}, 678 {'name': 'Yellow Hammer / PubSquared', 'policyUrl': 'https://springserve.com/privacy-policy/'}, 679 {'name': 'Yieldbot', 'policyUrl': 'https://www.yieldbot.com/website-privacy-policy/'},
680 {'name': 'Mobfox', 'policyUrl': 'https://www.mobfox.com/privacy-policy/'}, 681 {'name': 'Nas Media', 'policyUrl': 'http://mobile.nasmedia.co.kr/'}, 682 {'name': 'Optimatic', 'policyUrl': 'http://www.optimatic.com/wp-content/uploads/2016/11/Privacy_Policy11-16.pdf'}, 683 {'name': 'Peak 226', 'policyUrl': 'https://www.peak226.com/privacy-policy'}, 684 {'name': 'Platformio', 'policyUrl': 'https://platform.io/privacy_policy.txt'}, 685 {'name': 'Read Peak', 'policyUrl': 'https://www.readpeak.com/privacy-policy/'}, 686 {'name': 'Rock You', 'policyUrl': 'https://rockyou.com/privacy-policy/'}, 687 {'name': 'Rtb Demand', 'policyUrl': 'http://rtbdemand.com/privacy-policy'}, 688 {'name': 'Serverbid', 'policyUrl': 'https://www.serverbid.com/privacy/'}, 689 {'name': 'TrustX', 'policyUrl': 'https://trustx.org/rules/'}, 690 {'name': 'Ucfunnel', 'policyUrl': 'https://www.ucfunnel.com/privacy-policy'}, 691 {'name': 'Yield Lab', 'policyUrl': 'http://www.yieldlab.com/meta-navigation/data-protection/?L=1'}, 692 {'name': 'Yieldone', 'policyUrl': 'https://www.platform-one.co.jp/data/'}, 693 {'name': 'Consumable', 'policyUrl': 'http://consumable.com/privacy-policy.html'}, 694 {'name': 'LockerDome', 'policyUrl': 'https://lockerdome.com/privacy'}, 695 {'name': 'Moat', 'policyUrl': 'https://moat.com/privacy'}, 696 {'name': 'PubGuru / MonetizeMore / eSell Solutions', 'policyUrl': 'https://www.monetizemore.com/privacy-policy/'}, 697 {"name":"Google","policyUrl":"https://www.google.com/policies/technologies/partner-sites/"}, 698 {"name":"2KDirect Inc.","policyUrl":"https://www.ipromote.com/privacy-policy/"}, 699 {"name":"[24]7.ai (successor to EngageClick)","policyUrl":"https://www.247.ai/privacy-policy#gdpr_compliance"}, 700 {'name': '152 Media', 'policyUrl': 'https://reports.152media.com/guest/policy'}, 701 {"name":"1trn","policyUrl":"https://1trn.com/privacy.php"}, 702 {"name":"22-Visions","policyUrl":"http://www.universalmediasolutions.net/DataPrivacy"}, 703 {"name":"A1 Media Group","policyUrl":"http://www.a1mediagroup.jp/privacy-policy"}, 704 {"name":"A1platform","policyUrl":"https://www.a1platform.co.kr/privacy"}, 705 {'name': 'A4G', 'policyUrl': 'https://www.a4g.com/privacy'}, 706 {"name":"Aarki","policyUrl":"http://corp.aarki.com/privacy"}, 707 {"name":"abilicom","policyUrl":"https://contactimpact.de/datenschutz"}, 708 {"name":"activecore","policyUrl":"https://www.activecore.jp/privacy-policy/"}, 709 {"name":"Acuityads","policyUrl":"https://www.acuityads.com/privacy-policy/"}, 710 {"name":"Adacado","policyUrl":"https://www.adacado.com/privacy-policy-april-25-2018/"}, 711 {"name":"Adadyn","policyUrl":"http://www.adadyn.com/privacypolicy.html"}, 712 {"name":"Adara Media","policyUrl":"https://adara.com/2018/04/10/adara-gdpr-faq/"}, 713 {"name":"Adbalancer","policyUrl":"https://www.adbalancer.com/datenschutz/"}, 714 {"name":"Adblade","policyUrl":"https://www.adblade.com/doc/privacy"}, 715 {'name': 'AdButler', 'policyUrl': 'https://www.adbutler.com/agreements.spark?agreement=privacy'}, 716 {"name":"ADBOX","policyUrl":"http://www.adboxdigital.uk/privacy"}, 717 {"name":"Adcash","policyUrl":"https://adcash.com/legal/"}, 718 {"name":"AdClear","policyUrl":"https://www.adclear.de/datenschutzerklaerung/"}, 719 {"name":"Adclouds","policyUrl":"https://adclouds.io/data-gdpr/"}, 720 {"name":"AdColony","policyUrl":"https://www.adcolony.com/gdpr/"}, 721 {"name":"Addictive Mobility","policyUrl":"https://addictivemobility.com/privacy.html"}, 722 {"name":"Addition Plus","policyUrl":"http://additionplus.com/privacy-policy/"}, 723 {"name":"Addroid","policyUrl":"https://addroid.com/terms.html"}, 724 {"name":"AdElement","policyUrl":"http://adelement.com/privacy-policy.html"}, 725 {"name":"Adello","policyUrl":"http://www.adello.com/privacy-policy"}, 726 {"name":"ADEX","policyUrl":"http://theadex.com"}, 727 {'name': 'Adequant', 'policyUrl': 'http://adequant.com/privacy-policy/'}, 728 {"name":"Adform","policyUrl":"https://site.adform.com/uncategorized/product-and-services-privacy-policy/"}, 729 {"name":"AdGibbon BV","policyUrl":"http://www.agcs.works/legal/"}, 730 {'name': 'Adgorithms', 'policyUrl': 'https://albert.ai/terms-and-conditions/'}, 731 {"name":"adhood","policyUrl":"https://www.theadx.com/en/privacy.php"}, 732 {"name":"Adikteev","policyUrl":"https://www.adikteev.com/eu/privacy/"}, 733 {"name":"AdKernel","policyUrl":"https://adkernel.com/privacy-policy/"}, 734 {"name":"AdLedge","policyUrl":"https://adledge.com/data-privacy/"}, 735 {"name":"adlocal.net","policyUrl":"http://adlocal.net/privacy.php"}, 736 {"name":"Adloox","policyUrl":"http://adloox.com/disclaimer"}, 737 {"name":"Adludio","policyUrl":"https://adludio.com/termsandconditions"}, 738 {"name":"AdMaster/LnData","policyUrl":"http://www.admaster.com.cn/eng/index.php?c=abouts&a=content&code=useterms_en"}, 739 {"name":"AdMaxim","policyUrl":"http://www.admaxim.com/admaxim-privacy-policy/"}, 740 {"name":"Admedo","policyUrl":"https://www.admedo.com/privacy-policy"}, 741 {'name': 'AdMedia', 'policyUrl': 'http://admedia.com/privacy/'}, 742 {"name":"Admetrics","policyUrl":"https://admetrics.io/en/privacy_policy/"}, 743 {"name":"Admixer","policyUrl":"https://admixer.net/privacy"}, 744 {"name":"Adnami ApS","policyUrl":"https://adnami.io/privacy-policy.html"}, 745 {"name":"adnanny.com","policyUrl":"http://adserver01.de/"}, 746 {"name":"Adnetic","policyUrl":"https://adnetic.ru/policies/privacy"}, 747 {"name":"Adobe Advertising Cloud","policyUrl":"https://www.adobe.com/privacy/general-data-protection-regulation.html"}, 748 {'name': 'AdOcean', 'policyUrl': 'https://adocean-global.com/en/company/privacy-policy/'}, 749 {"name":"AdPlay","policyUrl":"https://rtb.adplay-mobile.com/privacy-policy"}, 750 {"name":"AdPredictive","policyUrl":"http://adpredictive.com/optout/"}, 751 {"name":"AdRetarget","policyUrl":"https://adretarget.me/privacy-policy/"}, 752 {"name":"Adriver","policyUrl":"https://www.adriver.ru/about/privacy-en/"}, 753 {"name":"AdRoll, Inc. ","policyUrl":"https://www.adroll.com/gdpr"}, 754 {"name":"adrule","policyUrl":"https://www.adrule.net/de/datenschutz/"}, 755 {"name":"Adsniper","policyUrl":"http://ad-sniper.com/docs/privacy-en.pdf"}, 756 {'name': 'AdSparc', 'policyUrl': 'http://www.adsparc.com/AdSparc-Privacy-Policy-9-2
756016.pdf'}, 757 {"name":"AdSpirit AdServer","policyUrl":"https://www.adspirit.de/datenschutz00.0.html"}, 758 {"name":"Adssets","policyUrl":"http://adssets.com/policy"}, 759 {"name":"adTarget.me","policyUrl":"https://adtarget.me/privacy.html"}, 760 {"name":"Adtelligence","policyUrl":"https://adtelligence.com/en/data-privacy/"}, 761 {"name":"Adtelligent Inc.","policyUrl":"https://adtelligent.com/terms-and-conditions/"}, 762 {"name":"AdTrader","policyUrl":"https://adtrader.com/privacy.html"}, 763 {"name":"AdTriba","policyUrl":"https://privacy.adtriba.com/"}, 764 {"name":"advanced STORE GmbH","policyUrl":"https://www.ad4mat.com/en/privacy/"}, 765 {"name":"Advanse","policyUrl":"http://advanseads.com/privacy-policy/"}, 766 {"name":"Adventive","policyUrl":"https://www.adventive.com/privacy-policy/"}, 767 {"name":"Adventori","policyUrl":"https://www.adventori.com/fr/avec-nous/mentions-legales/"}, 768 {"name":"Adverline","policyUrl":"https://www.adverline.com/privacy/privacy.html"}, 769 {"name":"Advertserve","policyUrl":"https://privacy.advertserve.com/"}, 770 {"name":"Advmaker","policyUrl":"https://advmaker.net/policy/"}, 771 {"name":"advolution.control","policyUrl":"http://advolution.de/privacy.php"}, 772 {"name":"Adways SAS","policyUrl":"http://www.adways.com/policy/"}, 773 {'name': 'AdXcg', 'policyUrl': 'https://www.adxcg.com/privacy-policy.html'}, 774 {"name":"Adzerk","policyUrl":"https://dev.adzerk.com/docs/privacy-policy-customers"}, 775 {"name":"Adzymic","policyUrl":"http://www.adzymic.co/privacy"}, 776 {"name":"AE Media","policyUrl":"http://www.aemedia.sg/privacy-policy/"}, 777 {"name":"Aedge Performance S.L.","policyUrl":"https://www.peakadx.com/privacy.php"}, 778 {"name":"AerServ","policyUrl":"https://www.aerserv.com/privacy-policy/"}, 779 {"name":"affilinet","policyUrl":"https://www.affili.net/uk/footeritem/privacy-policy"}, 780 {"name":"Aidata","policyUrl":"https://my.aidata.me/data/uploads/aidata.me-privacy-policy.pdf"}, 781 {"name":"Airtory","policyUrl":"https://airtory.com/privacy_policy.html"}, 782 {"name":"Akamai","policyUrl":"http://www.akamai.com/compliance/privacy"}, 783 {"name":"AKTYVUS SEKTORIUS","policyUrl":"http://business.eskimi.com/datacontrol"}, 784 {"name":"Alkemics","policyUrl":"https://www.alkemics.com/privacy/"}, 785 {"name":"All In Views LTD","policyUrl":"https://www.allinviews.com/privacy-policy"}, 786 {"name":"Alooma","policyUrl":"http://alooma.tv/privacypolicy.htm"}, 787 {"name":"Amazon","policyUrl":"https://www.amazon.co.uk/gp/help/customer/display.html?nodeId=201909010"}, 788 {'name': 'Amazon A9', 'policyUrl': 'https://www.a9.com/privacy'}, 789 {"name":"Amino Payments, Inc.","policyUrl":"https://www.aminopay.com/gdpr-compliance/"}, 790 {"name":"Amobee ","policyUrl":"https://www.amobee.com/trust/privacy-guidelines"}, 791 {"name":"Analights","policyUrl":"https://analights.com/docs/analights-consent-to-the-processing-of-personal-data-en.pdf"}, 792 {"name":"Aniview Inc.","policyUrl":"https://www.aniview.com/privacy-policy/"}, 793 {"name":"Answer Media","policyUrl":"http://www.answermedia.com/privacy"}, 794 {"name":"AntVoice","policyUrl":"https://www.antvoice.com/en/privacypolicy/"}, 795 {"name":"APNIC","policyUrl":"https://labs.apnic.net/privacy.shtml"}, 796 {"name":"AppGrowth Inc.","policyUrl":"https://s3.amazonaws.com/appgrowth-cloud/legal/Privacy-Policy-Appgrowth.pdf"}, 797 {"name":"Appier","policyUrl":"https://www.appier.com/privacy_policy/latest/privacy_policy.html"}, 798 {"name":"AppLift","policyUrl":"https://docs.google.com/document/d/1fdKB858jH_rrs2rwhaS0lzQwvB-JP-uMjfhONgzlZz4/edit"}, 799 {"name":"AppLovin Corp.","policyUrl":"https://www.applovin.com/privacy"}, 800 {"name":"AppNexus","policyUrl":"https://www.appnexus.com/en/company/platform-privacy-policy"}, 801 {"name":"Appreciate","policyUrl":"https://appreciate.mobi/page.html#/end-user-privacy-policy"}, 802 {"name":"AppsFlyer","policyUrl":"https://www.appsflyer.com/privacy-policy/"}, 803 {"name":"appTV","policyUrl":"https://www.apptv.com/privacy-policy"}, 804 {"name":"Arbigo Inc.","policyUrl":"http://www.arbigo.com/terms--policy.html"}, 805 {"name":"Arrivalist","policyUrl":"https://www.arrivalist.com/privacy#gdpr"}, 806 {"name":"Art of Click","policyUrl":"http://www.artofclick.com/privacy-policy/"}, 807 {'name': 'Arteebee', 'policyUrl': 'http://arteebee.com/dsp-terms/'}, 808 {"name":"Artsai","policyUrl":"http://www.artsai.com/home/privacy/"}, 809 {"name":"Audience2Media","policyUrl":"https://www.audience2media.com/privacy"}, 810 {"name":"AudienceProject","policyUrl":"http://privacy.audienceproject.com/for-users/"}, 811 {"name":"Audiencevalue","policyUrl":"https://www.audiencevalue.com/legal.php"},
812 {"name":"Aunica","policyUrl":"http://www.aunica.com/privacy/privacy.html"}, 813 {"name":"Avocet","policyUrl":"http://avocet.io/privacy-portal"}, 814 {"name":"Awin","policyUrl":"https://www.awin.com/gb/legal/privacy-policy-gb"}, 815 {"name":"Azameo","policyUrl":"http://www.azameo.fr/en/privacy-policy-notice/"}, 816 {"name":"BannerBuilder","policyUrl":"http://bannerbuilder.co.nz/privacy-policy/"}, 817 {"name":"Batch Media","policyUrl":"http://batch.ba/datenschutzerklarung/"}, 818 {"name":"BDSK Handels GmbH & Co. KG","policyUrl":"https://www.xxxlutz.de/ocms/privacy"}, 819 {"name":"Beeswax","policyUrl":"https://www.beeswax.com/privacy.html"}, 820 {"name":"Belboon","policyUrl":"https://www.belboon.com/en/about-us/datenschutz/"}, 821 {"name":"Betgenius","policyUrl":"http://betting.geniussports.com/connextra-service-terms-conditions/"}, 822 {"name":"Better Banners","policyUrl":"https://betterbanners.com/en/privacy"}, 823 {"name":"Bidease","policyUrl":"https://bidease.com/terms-of-use"}, 824 {"name":"BidMotion","policyUrl":"http://www.bidmotion.com/gdpr"}, 825 {"name":"Bidswitch","policyUrl":"http://www.bidswitch.com/privacy-policy/"}, 826 {"name":"Bidtheatre","policyUrl":"https://www.bidtheatre.com/privacy-policy"}, 827 {"name":"Bigabid","policyUrl":"http://www.bigabid.com/data-protection/gdpr"}, 828 {"name":"Bizible","policyUrl":"https://www.bizible.com/gdpr"}, 829 {"name":"Blismedia","policyUrl":"http://www.blis.com/privacy/"}, 830 {"name":"Blue","policyUrl":"http://getblue.io/privacy"}, 831 {"name":"Bluecore, Inc.","policyUrl":"https://www.bluecore.com/privacy-policy/"}, 832 {"name":"Blueworks","policyUrl":"https://hleb.agency/policy/eng/index.html"}, 833 {"name":"Bombora","policyUrl":"http://bombora.com/privacy"}, 834 {"name":"Bonzai","policyUrl":"https://www.bonzai.co/privacy2018.html"}, 835 {"name":"Booking.com","policyUrl":"https://www.booking.com/content/privacy.en-gb.html"}, 836 {"name":"Brainworkz","policyUrl":"http://brainworkz.eu"}, 837 {"name":"Branch","policyUrl":"https://branch.io/policies/"}, 838 {"name":"Bridgewell","policyUrl":"http://www.bridgewell.com.tw/privacy/"}, 839 {"name":"Bucksense","policyUrl":"https://www.bucksense.com/platform-privacy-policy/"}, 840 {"name":"C3 Metrics","policyUrl":"https://c3metrics.com/privacy"}, 841 {"name":"Cablato","policyUrl":"http://cablato.com/privacy"}, 842 {"name":"CapitalData","policyUrl":"https://www.capitaldata.fr/charte-vie-privee-display-personnalise/"}, 843 {"name":"Cauly","policyUrl":"https://www.cauly.net/index.html#/home/privacy4"}, 844 {"name":"Cedato","policyUrl":"https://www.cedato.com/privacy-policy/"}, 845 {"name":"Celtra","policyUrl":"https://www.celtra.com/privacy-policy/"}, 846 {"name":"Centro","policyUrl":"https://www.centro.net/privacy-policy/"}, 847 {"name":"Chalk Digital","policyUrl":"http://www.chalkdigital.com/privacy-policy-2/"}, 848 {"name":"Cheq","policyUrl":"https://www.cheq.ai/privacy"}, 849 {"name":"Chitika","policyUrl":"https://chitika.com/privacy-policy/"}, 850 {"name":"Cint","policyUrl":"https://www.cint.com/participant-privacy-notice/"}, 851 {"name":"Clearstream.TV, Inc","policyUrl":"https://www.clearstream.tv/privacy-policy"}, 852 {"name":"Clickagy","policyUrl":"https://www.clickagy.com/privacy/"}, 853 {"name":"ClickForce","policyUrl":"http://www.clickforce.com.tw/site/privacyPolicy"}, 854 {"name":"Clickonometrics","policyUrl":"https://www.clickonometrics.com/optout/"}, 855 {"name":"Clickpoint","policyUrl":"http://site.clickpoint.com/privacy"}, 856 {"name":"Clinch","policyUrl":"https://clinch.co/pages/privacy.html"}, 857 {"name":"Cloud Technologies","policyUrl":"http://green.erne.co/assets/PolicyCT.pdf"}, 858 {"name":"Cloudflare","policyUrl":"https://www.cloudflare.com/security-policy/"}, 859 {"name":"CoAdvertise","policyUrl":"http://www.coadvertise.com/en/gdpr/"}, 860 {"name":"CollegeHumor","policyUrl":"http://www.collegehumor.com/static/privacy/policy"}, 861 {"name":"Combell","policyUrl":"https://www.combell.com/nl/over-combell/privacy-policy"}, 862 {"name":"Commanders Act","policyUrl":"https://www.commandersact.com/en/privacy/"}, 863 {"name":"comScore","policyUrl":"https://www.comscore.com/About-comScore/Privacy-Policy"}, 864 {"name":"Connatix","policyUrl":"https://connatix.com/privacy-policy/"}, 865 {"name":"Connexity","policyUrl":"http://connexity.com/gb/privacy-policy/"}, 866 {"name":"Constant Contact","policyUrl":"https://www.constantcontact.com/legal/privacy-statement"}, 867 {"name":"Conversant/CJ Affiliate","policyUrl":"https://www.conversantmedia.eu/legal/privacy-policy"}, 868 {"name":"Conversion Logic","policyUrl":"http://www.conversionlogic.com/privacy-policy-overview/"}, 869 {"name":"Conversive","policyUrl":"https://conversive.nl/privacy/"}, 870 {"name":"Cortex","policyUrl":"http://www.heraldweekly.com/privacy-policy/"}, 871 {"name":"Credebat","policyUrl":"https://www.credebat.com/privacy-policy"}, 872 {"name":"Crimtan","policyUrl":"https://crimtan.com/privacy-ctl/"}, 873 {"name":"Criteo","policyUrl":"https://www.criteo.com/privacy/"}, 874 {"name":"CrossInstall, Inc","policyUrl":"https://www.crossinstall.com/data"}, 875 {"name":"Crucial Interactive Inc.","policyUrl":"https://www.crucialinteractive.com/privacy-policy/"}, 876 {"name":"Crutchfield","policyUrl":"https://www.crutchfield.com/support/privacy.aspx"}, 877 {"name":"CUBED","policyUrl":"http://cubed.ai/privacy-policy/gdpr/"}, 878 {"name":"Cuebiq","policyUrl":"https://www.cuebiq.com/privacypolicy/"}, 879 {"name":"CyberAgent","policyUrl":"https://adtech.cyberagent.io/privacy"}, 880 {"name":"d3media","policyUrl":"http://www.d3sv.net/privacy/"}, 881 {"name":"DAC","policyUrl":"http://www.dac.co.jp/english/utility/rule"}, 882 {"name":"Datafy","policyUrl":"http://www.datafy-software.com/cookie-policy/"}, 883 {"name":"Datalicious","policyUrl":"https://www.datalicious.com/privacy/"}, 884 {"name":"DataXu","policyUrl":"https://www.dataxu.com/gdpr/"}, 885 {"name":"DaVinci11","policyUrl":"http://www.adsfactor.com/gdpr.html"}, 886 {"name":"DeepIntent","policyUrl":"https://www.deepintent.com/datapolicy/"}, 887 {"name":"Delta Projects","policyUrl":"http://www.deltaprojects.com/data-collection-
887policy/"}, 888 {"name":"DeltaX","policyUrl":"http://www.deltax.com/gdpr.html"}, 889 {"name":"Demand Side Science, Inc.","policyUrl":"http://demand-side-science.jp/privacy"}, 890 {"name":"Demandbase","policyUrl":"https://www.demandbase.com/privacy-policy/"}, 891 {"name":"DENTSU","policyUrl":"http://www.dentsu.co.jp/terms/data_policy.html"}, 892 {"name":"Dentsu Aegis Network","policyUrl":"http://www.dentsu.com/termsofuse/data_policy.html"}, 893 {"name":"Digiseg","policyUrl":"http://www.digiseg.io/GDPR/"}, 894 {"name":"Digitec Galaxus AG","policyUrl":"https://www.digitec.ch/de/Wiki/2791"}, 895 {"name":"Digitize","policyUrl":"http://www.digitize.ie/online-privacy/"}, 896 {"name":"Display.direct","policyUrl":"https://display.direct/wp-content/uploads/2018/04/Privacy-Policy.pdf"}, 897 {"name":"DistroScale","policyUrl":"http://www.distroscale.com/about/privacy-policy/"}, 898 {"name":"DMA Institute","policyUrl":"https://www.dma-institute.com/privacy-compliancy/"}, 899 {"name":"Dochase","policyUrl":"http://www.dochase.com/privacy.html"}, 900 {"name":"Double Check","policyUrl":"https://adchex.com"}, 901 {"name":"DoubleVerify","policyUrl":"https://www.doubleverify.com/privacy/"}, 902 {"name":"Downstream.ai","policyUrl":"http://www.downstream.ai/privacy.html"}, 903 {"name":"DServe","policyUrl":"http://dserve.dentsu360th.com/privacy-policy"}, 904 {"name":"Dstillery","policyUrl":"https://dstillery.com/privacy-policy/"}, 905 {"name":"DTS","policyUrl":"https://client.adhslx.com/privacy.html"}, 906 {"name":"DYNADMIC","policyUrl":"http://eu.dynadmic.com/privacy-policy/"}, 907 {"name":"DynAdmic Corporation","policyUrl":"http://us.dynadmic.com/privacy-policy/"}, 908 {"name":"E-Contenta","policyUrl":"https://e-contenta.com/en/privacy/"}, 909 {"name":"E-Planning","policyUrl":"https://www.e-planning.net/en/privacy.html"}, 910 {"name":"Eacnur","policyUrl":"https://eacnur.org/es/politica-privacidad"}, 911 {"name":"EASYmedia","policyUrl":"https://www.rvty.net/gdpr"}, 912 {"name":"eBay","policyUrl":"https://www.ebay.com/help/policies/member-behaviour-policies/user-privacy-notice-privacy-policy?id=4260#section12"}, 913 {"name":"ebuilders","policyUrl":"http://ebuilders.nl/privacy"}, 914 {"name":"econda GmbH","policyUrl":"https://www.econda.de/service/datenschutz/"}, 915 {"name":"Effinity","policyUrl":"https://www.effiliation.com/politique-confidentialite.html"}, 916 {"name":"eMarketingSolutions","policyUrl":"https://emarketingsolutions.es/privacy-policy"}, 917 {"name":"Emerse","policyUrl":"https://www.emerse.com/privacy-policy/"}, 918 {"name":"emetriq","policyUrl":"https://www.emetriq.com/datenschutz/"}, 919 {"name":"Enbritely","policyUrl":"http://enbrite.ly/privacy-policy-2/"}, 920 {"name":"engageBDR","policyUrl":"http://engagebdr.com/terms/EngageBDR_Buyer_Addendum_December_2015.pdf"}, 921 {"name":"Ensighten","policyUrl":"https://www.ensighten.com/privacy-policy/"}, 922 {"name":"ENVISIONX LTD","policyUrl":"http://envisionx.co/privacy"}, 923 {"name":"Epic Combo","policyUrl":"http://adagnit.io/privacy-policy/"}, 924 {"name":"Erate","policyUrl":"http://www.eratead.com/privacy_policy.pdf"}, 925 {"name":"Essens","policyUrl":"https://essens.no/privacy-policy/"}, 926 {"name":"ESV","policyUrl":"https://www.wizaly.com/terms-of-use#privacy-policy"}, 927 {"name":"Etu Corporation","policyUrl":"https://www.etusolution.com/index.php/en/about/gdpr"}, 928 {"name":"Eulerian Technologies","policyUrl":"https://www.eulerian.com/en/privacy/"}, 929 {"name":"EVC","policyUrl":"http://morequalifiedleads.co.uk/privacy.html"}, 930 {"name":"Evidon","policyUrl":"https://www.evidon.com/resources/privacy-statement/"}, 931 {"name":"Exactag","policyUrl":"https://www.exactag.com/en/data-privacy/"}, 932 {"name":"Exponential","policyUrl":"http://exponential.com/privacy/"}, 933 {"name":"Exposebox","policyUrl":"http://www.exposebox.com/policy.html"}, 934 {"name":"Extreme Reach","policyUrl":"https://extremereach.com/privacy-policy/"}, 935 {"name":"Eyereturn Marketing","policyUrl":"https://eyereturnmarketing.com/privacy/"}, 936 {"name":"F Sharp","policyUrl":"https://fsharp.co/privacy-policy"}, 937 {"name":"F@N communications","policyUrl":"http://www.fancs.com/privacypolicy"}, 938 {"name":"Facebook","policyUrl":"https://www.facebook.com/about/privacy/update"}, 939 {"name":"Fiverr","policyUrl":"https://www.fiverr.com/privacy-policy"}, 940 {"name":"Flashtalking","policyUrl":"http://www.flashtalking.com/first-party-ad-serving/"}, 941 {"name":"FlixMobility","policyUrl":"https://www.flixbus.com/privacy-policy"}, 942 {"name":"fluct","policyUrl":"https://corp.fluct.jp/privacy/"}, 943 {"name":"Forbes","policyUrl":"https://www.forbes.com/fdc/privacy.html"}, 944 {"name":"Foursquare","policyUrl":"https://foursquare.com/legal/privacy"}, 945 {"name":"Fractional Media","policyUrl":"https://www.fractionalmedia.com/privacy-policy"}, 946 {"name":"Fraudlogix","policyUrl":"http://www.fraudlogix.com/privacy-policy/"}, 947 {"name":"Freckle IoT","policyUrl":"https://freckleiot.com/privacy-policy/"}, 948 {"name":"Fringe81","policyUrl":"http://www.fringe81.com/privacy/"}, 949 {"name":"FuelX","policyUrl":"http://www.fuelx.com/privacy"}, 950 {"name":"FUSIO BY S4M","policyUrl":"http://www.s4m.io/privacy-policy/"}, 951 {"name":"Fyber","policyUrl":"https://www.fyber.com/legal/gdpr-faqs/"}, 952 {"name":"GDM Services, Inc d/b/a Fiksu DSP","policyUrl":"https://fiksu.com/gdpr/"}, 953 {"name":"Gemius","policyUrl":"https://www.gemius.com/cookie-policy.html"}, 954 {"name":"GetIntent","policyUrl":"https://getintent.com/privacy/"}, 955 {"name":"GfK","policyUrl":"https://sensic.net/"}, 956 {"name":"Giantmedia","policyUrl":"http://giantmedia.com/about-giant/privacy-policy/"}, 957 {"name":"GlobalWebIndex","policyUrl":"http://legal.trendstream.net/non-panellist_privacy_policy"}, 958 {"name":"GO.PL","policyUrl":"https://go.pl/polityka-bezpieczenstwa-danych-osobowych/"}, 959 {"name":"GoldSpot Media","policyUrl":"https://corp.fluct.jp/privacy/gsm/"}, 960 {"name":"Goodway Group","policyUrl":"https://goodwaygroup.com/privacy-policy/"}, 961 {"name":"GP One","policyUrl":"http://www.gsi-one.org/templates/gsi/en/files/privacy_policy.pdf"}, 962 {"name":"Gridsum","policyUrl":"https://ad2.gridsumdissector.com/about-googleadwords-privacy?lang=en"}, 963 {"name":"GroovinAds","policyUrl":"http://www.groovinads.com/en#privacy_modal"}, 964 {"name":"GroundhogTech","policyUrl":"http://www.ghtinc.com/mi-dsp/privacy-policies/"}, 965 {"name":"GroundTruth","policyUrl":"https://www.groundtruth.com/privacy-policy/"}, 966 {"name":"GroupM","policyUrl":"https://www.groupm.com/privacy-policy"}, 967 {"name":"Gruuv Interactive","policyUrl":"https://www.gruuvinteractive.com/privacy-policy/"}, 968 {"name":"Gruvi","policyUrl":"http://www.gruvi.tv/gdpr"}, 969 {"name":"gskinner","policyUrl":"https://createjs.com/legal/privacy.html"}, 970 {"name":"Haensel AMS","policyUrl":"https://haensel-ams.com/data-privacy/"}, 971 {"name":"Happyfication inc","policyUrl":"https://happyfication.com/privacy-policy/"}, 972 {"name":"Hashtag'd","policyUrl":"https://hashtagd.net/about/privacy"}, 973 {"name":"Havas Media France - DBi","policyUrl":"http://www.centraltag.com/commercial/policy/index.action"}, 974 {"name":"hbfsTech","policyUrl":"http://www.hbfstech.com/fr/privacy.html"}, 975 {"name":"Herolens","policyUrl":"https://herolens.com/privacy.html"}, 976 {"name":"HockeyCurve","policyUrl":"http://hockeycurve.com/optout.html"}, 977 {"name":"Hotels.com L. P.","policyUrl":"https://uk.hotels.com/customer_care/privacy.html"}, 978 {"name":"Housing.com","policyUrl":"https://housing.com/terms.html"}, 979 {"name":"HQ GmbH","policyUrl":"https://www.hqgmbh.eu/datenschutz.html"}, 980 {"name":"hurra.com","policyUrl":"http://www.hurra.com/impressum"}, 981 {"name":"hybrid.ai","policyUrl":"https://hybrid.ai/data_protection_policy"}, 982 {"name":"iBILLBOARD","policyUrl":"http://www.ibillboard.com/privacymanagement/"}, 983 {"name":"IBM","policyUrl":"https://www.ibm.com/customer-engagement/digital-marketing/gdpr"}, 984 {"name":"IGAWorks","policyUrl":"http://www.igaworks.com/en/rule_user.html"}, 985 {"name":"Ignition One","policyUrl":"https://www.ignitionone.com/privacy-policy/gdpr-subject-access-requests/"}, 986 {"name":"Impact","policyUrl":"https://impact.com/privacy-policy/"}, 987 {"name":"Improve Digital","policyUrl":"https://www.improvedigital.com/privacy-policy/"}, 988 {"name":"INCUBIQ","policyUrl":"https://www.wootled.com/privacy"}, 989 {"name":"Index Exchange","policyUrl":"http://www.indexexchange.com/privacy/"}, 990 {"name":"Infectious Media","policyUrl":"https://impressiondesk.com/"}, 991 {"name":"INFINIA","policyUrl":"http://www.infiniamobile.com/privacy_policy"}, 992 {"name":"INFOnline","policyUrl":"https://www.infonline.de/datenschutz/"}, 993 {"name":"Ingenious Technologies","policyUrl":"https://www.ingenioustechnologies.com/privacy-policy/"}, 994 {"name":"Inmind","policyUrl":"https://opinion.com.ua/Default.aspx?p=confidential&l=1"}, 995 {"name":"InMobi","policyUrl":"https://www.inmobi.com/privacy-policy-for-eea"}, 996 {"name":"Innity","policyUrl":"https://www.innity.com/privacy-policy.php"}, 997 {"name":"Innovid","policyUrl":"http://www.innovid.com/privacy-policy"}, 998 {"name":"Inspired Mobile","policyUrl":"https://www.inspired-mobile.com/GDPR-how/"}, 999 {"name":"Instinctive","policyUrl":"https://instinctive.io/privacy"}, 1000 {"name":"Integral Ad Science","policyUrl":"http://www.integralads.com/privacy-policy"}, 1001 {"name":"intelliAd","policyUrl":"https://www.intelliad.de/datenschutz"}, 1002 {"name":"Interplus","policyUrl":"https://www.now-tracking.com/privacy.html"}, 1003 {"name":"Interpolls","policyUrl":"https://www.interpolls.com/privacy"}, 1004 {"name":"Interpublic Group ","policyUrl":"https://www.interpublic.com/privacy-notice"}, 1005 {"name":"Interrogare GmbH","policyUrl":"https://www.interrogare.de/en/contact/data-protection/"}, 1006 {"name":"Intimate Merger","policyUrl":"https://corp.intimatemerger.com/privacypolicy-en/"}, 1007 {"name":"IOTEC","policyUrl":"https://www.iotecglobal.com/privacy-policy/"}, 1008 {"name":"IQM","policyUrl":"https://iqm.com/privacy-policy"}, 1009 {"name":"Jampp","policyUrl":"https://jampp.com/privacy-policy/"}, 1010 {"name":"Jivox","policyUrl":"http://www.jivox.com/privacy/"}, 1011 {"name":"Joystick Interactive","policyUrl":"http://joystickinteractive.com/privacy.html"}, 1012 {"name":"JustWatch","policyUrl":"https://www.justwatch.com/uk/imprint"}, 1013 {"name":"Kadam","policyUrl":"https://www.kadam.net/ru/privacy-policy"}, 1014 {"name":"Kantar","policyUrl":"https://www.kantarmedia.com/global/privacy-statement"}, 1015 {"name":"KAYAK","policyUrl":"https://www.kayak.com/privacy"}, 1016 {"name":"KEEN","policyUrl":"http://www.ingenio.com/documents/help/privacypolicy.asp"}, 1017 {"name":"KeyCDN","policyUrl":"https://www.keycdn.com/gdpr"}, 1018 {"name":"Kimia Group","policyUrl":"https://kimiagroup.com/privacy-policy.html"}, 1019 {"name":"Knorex","policyUrl":"https://www.knorex.com/privacy"}, 1020 {"name":"Kochava","policyUrl":"https://www.kochava.com/support-privacy/"}, 1021 {"name":"KPI Solutions","policyUrl":"https://www.adv.admeme.net/en
1021/privacy/optout.html"}, 1022 {"name":"Kwanko","policyUrl":"http://www.kwanko.com/gdpr"}, 1023 {"name":"Kwanzoo","policyUrl":"http://www.kwanzoo.com/cms/gdpr-privacy-addendum/"}, 1024 {"name":"LANDS' END","policyUrl":"https://www.landsend.com/customerservice/legal_policies/privacy/"}, 1025 {"name":"Lifesight","policyUrl":"https://www.lifesight.io/privacy"}, 1026 {"name":"LifeStreet","policyUrl":"http://www.lifestreet.com/privacy"}, 1027 {"name":"Liftoff","policyUrl":"https://liftoff.io/privacy-policy/"}, 1028 {"name":"Ligatus","policyUrl":"https://www.ligatus.com/en/privacy-policy"}, 1029 {"name":"LINK Institut","policyUrl":"http://www.link.ch/privacy"}, 1030 {"name":"LinkedIn","policyUrl":"https://www.linkedin.com/legal/privacy-policy"}, 1031 {"name":"Linkstorm","policyUrl":"https://www.linkstorm.net/privacy/"}, 1032 {"name":"ListenLoop","policyUrl":"https://listenloop.com/user-consent-policy"}, 1033 {"name":"LiveIntent","policyUrl":"https://liveintent.com/services-privacy-policy/"}, 1034 {"name":"LivelyImpact","policyUrl":"http://www.livelyimpact.com/privacy-policy.html"}, 1035 {"name":"LiveRamp","policyUrl":"https://liveramp.com/service-privacy-policy/"}, 1036 {"name":"LKQD","policyUrl":"http://www.lkqd.com/privacy-policy/"}, 1037 {"name":"Localsensor","policyUrl":"https://www.localsensor.com/privacy.html"}, 1038 {"name":"Localstars","policyUrl":"https://www.localstars.com/localstars-privacy-policy"}, 1039 {"name":"Lockon","policyUrl":"https://www.ebis.ne.jp/gdpr_e/"}, 1040 {"name":"LOKA Research","policyUrl":"https://lokaplatform.com/privacy/"}, 1041 {"name":"LoopMe","policyUrl":"https://loopme.com/privacy/"}, 1042 {"name":"Lotame","policyUrl":"https://www.lotame.com/about-lotame/privacy/"}, 1043 {"name":"LotLinx®","policyUrl":"https://www.lotlinx.com/privacy-statement/"}, 1044 {"name":"Louder","policyUrl":"http://louder.com.au/privacy/"}, 1045 {"name":"Lucid","policyUrl":"https://drive.google.com/file/d/15XwJA8U1WixiYRIqz1dBq-gokgLLszpi/view?usp=sharing"}, 1046 {"name":"M,P,NEWMEDIA,","policyUrl":"https://www.mp-newmedia.com/datenschutz"}, 1047 {"name":"Macromill group","policyUrl":"https://www.metrixlab.com/privacy-statement/"}, 1048 {"name":"MADGIC","policyUrl":"https://www.madgic.com/privacy-and-protection-policy/"}, 1049 {"name":"Maelico LTD","policyUrl":"http://hyperadx.com/privacy_policy.html"}, 1050 {"name":"Mail.ru","policyUrl":"https://help.mail.ru/mail-help/UA"}, 1051 {"name":"MainADV","policyUrl":"http://www.mainad.com/privacy-policy"}, 1052 {"name":"Manage.com","policyUrl":"https://www.manage.com/privacy-policy/"}, 1053 {"name":"Market Points, Inc.","policyUrl":"http://www.marketpointsinc.com/privacy.html"}, 1054 {"name":"Marketing Science Consulting Group, Inc.","policyUrl":"http://mktsci.com/privacy_policy.htm"}, 1055 {"name":"Markit","policyUrl":"https://www.markitdigital.com/products/ads/privacy-policy/"}, 1056 {"name":"Mashero","policyUrl":"http://www.mashero.com/en/privacy-protection"}, 1057 {"name":"Maverick","policyUrl":"https://www.mvrck.co.jp/privacy/about-targeting-ad/"}, 1058 {"name":"MaxCDN","policyUrl":"https://www.maxcdn.com/gdpr/"}, 1059 {"name":"MBR Targeting Gmbh","policyUrl":"https://privacy.mbr-targeting.com"}, 1060 {"name":"Media Force","policyUrl":"http://www.mediaforce.com/privacy.html"}, 1061 {"name":"media.ventive GmbH","policyUrl":"http://www.contentspread.net/?page=privacy"}, 1062 {"name":"Mediahead","policyUrl":"http://mediahead.com"}, 1063 {"name":"MediaMath","policyUrl":"http://www.mediamath.com/privacy-policy/"}, 1064 {"name":"MEDIAN","policyUrl":"http://www.median.eu/en/privacy-policy/"}, 1065 {"name":"Mediarithmics","policyUrl":"https://www.mediarithmics.com/en/data-privacy.html"}, 1066 {"name":"mediasmart","policyUrl":"https://mediasmart.io/privacy/"}, 1067 {"name":"MediaWallah","policyUrl":"http://mediawallah.com/privacy-policy/"}, 1068 {"name":"Meetrics","policyUrl":"https://www.meetrics.com/en/data-privacy/"}, 1069 {"name":"Metalyzer","policyUrl":"https://metapeople.com/datenschutz/"}, 1070 {"name":"MGID","policyUrl":"https://www.mgid.com/privacy-policy"}, 1071 {"name":"Miaozhen Systems","policyUrl":"http://www.miaozhen.com/index.php/EN/Index/articontent/articleid/202.html"}, 1072 {"name":"MicroAd","policyUrl":"https://www.microad.co.jp/privacy/"}, 1073 {"name":"Millemedia","policyUrl":"https://www.millemedia.de/datenschutz/"}, 1074 {"name":"MindTake Research","policyUrl":"https://www.mindtake.com/en/reppublika-privacy-policy"}, 1075 {"name":"MiQ","policyUrl":"http://wearemiq.com/privacy-policy/"}, 1076 {"name":"Mixmarket Affiliate Network","policyUrl":"http://mixmarket.biz/confidential/"}, 1077 {"name":"Mixpo","policyUrl":"http://www.netsertive.com/privacy-policy/"},
1078 {"name":"Mobfox","policyUrl":"https://www.mobfox.com/privacy-policy/"}, 1079 {"name":"Mobile Innovations","policyUrl":"http://paypersale.ru/index/optout"}, 1080 {"name":"Mobitrans","policyUrl":"http://www.mobitrans.net/privacy-policy/"}, 1081 {"name":"Mobpro","policyUrl":"http://mobpro.com/privacy.html"}, 1082 {"name":"Mobusi","policyUrl":"https://www.mobusi.com/privacy.en.html"}, 1083 {"name":"Mobvista/Mintegral","policyUrl":"https://www.mintegral.com/en/privacy"}, 1084 {"name":"Moloco Ads","policyUrl":"http://www.molocoads.com/private-policy.html"}, 1085 {"name":"Momentum","policyUrl":"http://www.m0mentum.co.jp/privacy.html"}, 1086 {"name":"Mopedo","policyUrl":"http://mopedo.com/privacy-terms/"}, 1087 {"name":"MSI-ACI","policyUrl":"http://site.msi-aci.com/Home/FlexTrackPrivacy"}, 1088 {"name":"N2","policyUrl":"https://n2.fi/privacy-policy/"}, 1089 {"name":"Nano Interactive","policyUrl":"http://www.nanointeractive.com/privacy"}, 1090 {"name":"Naoplay","policyUrl":"http://www.digigladd.com/privacy.php"}, 1091 {"name":"Native Touch","policyUrl":"https://nativetouch.com/privacy-policy/"}, 1092 {"name":"NativeAds.com","policyUrl":"https://nativeads.com/privacy-policy.php"}, 1093 {"name":"Navegg","policyUrl":"https://www.navegg.com/en/privacy-policy/"}, 1094 {"name":"Neodata Group","policyUrl":"https://www.neodatagroup.com/en/security-policy"}, 1095 {"name":"NEORY GmbH","policyUrl":"https://www.neory.com/privacy.html"}, 1096 {"name":"Net Info","policyUrl":"https://www.netinfocompany.bg/privacy.php"}, 1097 {"name":"NET-Metrix AG","policyUrl":"https://www.net-metrix.ch/ueber-uns/datenschutzerklaerung"}, 1098 {"name":"Netflix","policyUrl":"http://www.netflix.com/google-3PAS-info"}, 1099 {"name":"Netquest","policyUrl":"https://www.nicequest.com/us/privacy"}, 1100 {"name":"Netscore","policyUrl":"http://netscore.pl/polityka-prywatnosci/"}, 1101 {"name":"NetSuccess","policyUrl":"https://www.inres.sk/optout/index_sk.html"}, 1102 {"name":"Neuralone","policyUrl":"https://web.neural.one/privacy-policy/"}, 1103 {"name":"Neustar","policyUrl":"https://www.home.neustar/privacy"}, 1104 {"name":"NEXD","policyUrl":"https://nexd.com/privacy-policy/"}, 1105 {"name":"Nexus Soft","policyUrl":"https://www.nexus-soft.org/index/privacy"}, 1106 {"name":"Nielsen","policyUrl":"http://www.nielsen.com/us/en/privacy-statement/digital-measurement.html"}, 1107 {"name":"NinthDecimal","policyUrl":"http://www.ninthdecimal.com/privacy-policy-terms-of-service/"}, 1108 {"name":"Nordic Factory Solutions AB","policyUrl":"https://www.bannerflow.com/privacy"}, 1109 {"name":"Norstat","policyUrl":"https://opinion-people.com/dataprotection"}, 1110 {"name":"Novem","policyUrl":"http://www.novem.pl/doc/Novem_polityka_prywatnosci.pdf"}, 1111 {"name":"nugg.ad","policyUrl":"https://nugg.ad/de/datenschutz/allgemeine-informationen.html"}, 1112 {"name":"numberly","policyUrl":"http://ads.1000mercis.com/us.html"}, 1113 {"name":"Oath","policyUrl":"https://policies.oath.com/xw/en/oath/privacy/enterprise/b2bprivacypolicy/"}, 1114 {"name":"Objective Partners","policyUrl":"https://www.objectivepartners.com/cookie-policy-and-privacy-statement/"}, 1115 {"name":"Omnicom Media Group","policyUrl":"https://www.omnicommediagroup.com/disclaimer.htm"}, 1116 {"name":"OmniVirt","policyUrl":"https://www.omnivirt.com/tos/privacy/"}, 1117 {"name":"On Device Research","policyUrl":"https://ondeviceresearch.com/GDPR"}, 1118 {"name":"OneDigitalAd Technologies","policyUrl":"https://www.onedigitalad.com/privacy/privacyPolicy.html"}, 1119 {"name":"OneTag","policyUrl":"https://www.onetag.net/privacy/"}, 1120 {"name":"Onseo","policyUrl":"http://onseo.biz/privacy.html"}, 1121 {"name":"OpenSlate","policyUrl":"https://www.openslate.com/general-data-protection-regulation-gdpr-compliance-statement/"}, 1122 {"name":"OpenX Technologies","policyUrl":"https://www.openx.com/legal/privacy-policy/"}, 1123 {"name":"OpinionAds","policyUrl":"https://opinionads.com/privacy"}, 1124 {"name":"Optimise","policyUrl":"https://www.optimisemedia.com/privacy_policy/"}, 1125 {"name":"Optimize LCC D.B.A Genius Monkey","policyUrl":"https://www.geniusmonkey.com/gdpr.php"}, 1126 {"name":"Optomaton","policyUrl":"http://optomaton.com/privacy.html"}, 1127 {"name":"Oracle Data Cloud","policyUrl":"https://www.oracle.com/legal/privacy/marketing-cloud-data-cloud-privacy-policy.html"}, 1128 {"name":"Orbis Video","policyUrl":"http://www.orbisvideo.com/privacy-policy/"}, 1129 {"name":"OTTO","policyUrl":"https://www.otto.de/shoppages/service/datenschutz"}, 1130 {"name":"OVC GmbH","policyUrl":"https://www.kissnofrog.com/legal/privacy"}, 1131 {"name":"Overstock","policyUrl":"https://help.overstock.com/help/s/article/PRIVACY-AND-SECURITY-POLICY"}, 1132 {"name":"Oxford BioChronometrics","policyUrl":"https://oxford-biochron.com/privacy-policy/"}, 1133 {"name":"Papayamobile","policyUrl":"https://affiliate.appflood.com/gdpr"}, 1134 {"name":"Parrable","policyUrl":"https://www.parrable.com/privacy"}, 1135 {"name":"Parship","policyUrl":"https://www.parship.de/privacypolicy/"}, 1136 {"name":"Pathmatics","policyUrl":"https://www.pathmatics.com/privacy#advertising"}, 1137 {"name":"PERMODO","policyUrl":"http://permodo.com/de/privacy.html"}, 1138 {"name":"Persona.ly","policyUrl":"http://persona.ly/privacy_policy"}, 1139 {"name":"Phaistos Networks","policyUrl":"http://adman.gr/gdpr"}, 1140 {"name":"Pi-rate / pubintl","policyUrl":"https://pi-rate.com.au/privacy.html"}, 1141 {"name":"Pixalate","policyUrl":"http://www.pixalate.com/privacypolicy/"}, 1142 {"name":"Piximedia","policyUrl":"https://piximedia.com/privacy/"}, 1143 {"name":"Placecast","policyUrl":"http://placecast.net/privacy_policy.html"}, 1144 {"name":"Placed","policyUrl":"https://www.placed.com/privacy-policy"}, 1145 {"name":"Platform161","policyUrl":"https://platform161.com/cookie-and-privacy-policy/"}, 1146 {"name":"Platform360","policyUrl":"http://platform360.co/privacy.html"}, 1147 {"name":"PlatformOne","policyUrl":"https://www.platform-one.co.jp/data/"}, 1148 {"name":"PMG","policyUrl":"https://www.pmg.com/privacy-policy/"}, 1149 {"name":"Polldaddy","policyUrl":"https://automattic.com/privacy/"}, 1150 {"name":"Polytab","policyUrl":"https://infernotions.com/privacy-notice/"}, 1151 {"name":"PopRule","policyUrl":"http://purposelab.com/privacy/"}, 1152 {"name":"ProData Media","policyUrl":"http://prodata.media/gdpr.html"}, 1153 {"name":"ProgSol.cz","policyUrl":"http://www.impressionmedia.cz/files/Zasady-ochrany-a-zpracovani-osobnich-udaju-IM.pdf"}, 1154 {"name":"Protected Media","policyUrl":"http://www.protected.media/privacy-policy/"}, 1155 {"name":"Publicis Groupe","policyUrl":"https://www.publicismedia.de/datenschutz/"},
1156 {"name":"PubMatic","policyUrl":"https://pubmatic.com/legal/privacy-policy/"}, 1157 {"name":"Pulpo (An Entravision Company)","policyUrl":"https://www.pulpo.com/en/privacy-policy/"}, 1158 {"name":"PulsePoint","policyUrl":"https://www.pulsepoint.com/privacy-policy"}, 1159 {"name":"Pure Cobalt","policyUrl":"https://www.purecobalt.com/policy/"}, 1160 {"name":"Qantas","policyUrl":"http://www.qantas.com/au/en/support/privacy-and-security.html#our-contact-details"}, 1161 {"name":"Quadas","policyUrl":"http://www.quadas.com/ys.php?gid=0"}, 1162 {"name":"Qualia","policyUrl":"https://bluecava.com/privacy-policy"}, 1163 {"name":"Qualtrics","policyUrl":"https://www.qualtrics.com/uk/platform/gdpr/"}, 1164 {"name":"Quantasy","policyUrl":"http://planqk.com"}, 1165 {"name":"Quantcast","policyUrl":"https://www.quantcast.com/privacy/"}, 1166 {"name":"QuarticON","policyUrl":"http://quarticon.com/privacy-statement/"}, 1167 {"name":"Quple","policyUrl":"http://quple.io/privacy.html"}, 1168 {"name":"Rackspace","policyUrl":"http://www.rackspace.com/gdpr"}, 1169 {"name":"Rakuten Marketing","policyUrl":"https://rakutenmarketing.com/legal-notices/services-privacy-policy"}, 1170 {"name":"RAM","policyUrl":"http://www.rampanel.com/ram_privacy_policy.html"}, 1171 {"name":"Reactive","policyUrl":"http://reactive-agency.ru/"}, 1172 {"name":"Realytics","policyUrl":"https://www.realytics.io/gdpr-and-how-realytics-is-getting-ready/"}, 1173 {"name":"Realzeit","policyUrl":"https://realzeit.io/privacy.html"}, 1174 {"name":"Reamp","policyUrl":"https://rmemx.reamp.com.br/2015/privacy-policy/privacy.html"}, 1175 {"name":"Recruit JP","policyUrl":"https://www.r-ad.ne.jp/optout/"}, 1176 {"name":"REES46","policyUrl":"https://docs.rees46.com/display/en/Legal"}, 1177 {"name":"Relay42","policyUrl":"https://relay42.com/privacy"}, 1178 {"name":"Remerge","policyUrl":"http://remerge.io/privacy-policy.html"}, 1179 {"name":"Resonate","policyUrl":"https://www.resonate.com/privacy-policy/"}, 1180 {"name":"RevenueMantra","policyUrl":"http://www.revenuemantra.com/privacy.html"}, 1181 {"name":"RevJet","policyUrl":"https://www.revjet.com/privacy"}, 1182 {"name":"Rezonence","policyUrl":"https://rezonence.com/privacy-policy/"}, 1183 {"name":"RhythmOne LLC","policyUrl":"https://www.rhythmone.com/landing/gdpr"}, 1184 {"name":"RichMedia Studio","policyUrl":"http://www.richmediastudio.com/privacy_policy/"}, 1185 {"name":"RIESENIA.com","policyUrl":"https://www.adboost.sk/gdpr.html"}, 1186 {"name":"RN SSI Group","policyUrl":"https://www.valuedopinions.co.uk/privacy"}, 1187 {"name":"ROMIR","policyUrl":"http://ssp.rmh.ru/files/privacy_policy_eng.pdf"}, 1188 {"name":"Rontar","policyUrl":"https://www.rontar.com/content/content-324"}, 1189 {"name":"Roq.ad","policyUrl":"https://www.roq.ad/privacy-policy"}, 1190 {"name":"Roy Morgan Research","policyUrl":"http://www.roymorgan.com/digital-privacy"}, 1191 {"name":"RTB House","policyUrl":"https://www.rtbhouse.com/gdpr/"}, 1192 {"name":"Rubicon Project","policyUrl":"http://rubiconproject.com/rubicon-project-yield-optimization-privacy-policy/"}, 1193 {"name":"Rutarget","policyUrl":"https://segmento.ru/en/gdpr"}, 1194 {"name":"Salesforce DMP","policyUrl":"https://www.salesforce.com/company/privacy/"}, 1195 {"name":"Sape","policyUrl":"https://traffic.sape.ru/policy.html"}, 1196 {"name":"SAS One Planet Only","policyUrl":"https://oneplanetonly.com/files/PRIVACY_POLICY.pdf"}, 1197 {"name":"Scenestealer","policyUrl":"http://www.scenestealer.tv/privacy-policy"}, 1198 {"name":"SCIBIDS TECHNOLOGY","policyUrl":"http://scibids.com/privacy"}, 1199 {"name":"Scigineer","policyUrl":"https://www.scigineer.co.jp/privacy/"}, 1200 {"name":"Scoota","policyUrl":"http://scoota.com/privacy-policy/"}, 1201 {"name":"Seenthis","policyUrl":"https://seenthis.co/privacy-notice-2018-04-18.pdf"}, 1202 {"name":"Sellpoints","policyUrl":"https://retargeter.com/legal-privacy/"}, 1203 {"name":"Semasio GmbH","policyUrl":"http://www.semasio.com/privacy-policy/"}, 1204 {"name":"SFR","policyUrl":"http://www.sfr.fr/securite-confidentialite.html"}, 1205 {"name":"Sharethrough, Inc.","policyUrl":"https://platform-cdn.sharethrough.com/privacy-policy"}, 1206 {"name":"Sift Media","policyUrl":"https://www.sift.co/privacy"}, 1207 {"name":"Signal","policyUrl":"https://www.signal.co/privacy-policy/"}, 1208 {"name":"Silver Egg Technology","policyUrl":"http://www.silveregg.co.jp/GDPR"},
1209 {"name":"Simplaex GmBH","policyUrl":"https://simplaex.com/advertising-privacy-policy/"}, 1210 {"name":"Simpli.fi","policyUrl":"https://www.simpli.fi/site-privacy-policy2/"}, 1211 {"name":"Sizmek","policyUrl":"https://www.sizmek.com/privacy-policy/"}, 1212 {"name":"Sketchfab, Inc.","policyUrl":"https://sketchfab.com/privacy"}, 1213 {"name":"Sled, Inc.","policyUrl":"http://www.parsec.media/privacy-policy/"}, 1214 {"name":"Smaato","policyUrl":"https://www.smaato.com/privacy/"}, 1215 {"name":"Smadex","policyUrl":"http://smadex.com/end-user-privacy-policy/"}, 1216 {"name":"Smart","policyUrl":"http://smartadserver.com/company/privacy-policy/"}, 1217 {"name":"Smart.bid ltd","policyUrl":"http://www.smart.bid/privacy/"}, 1218 {"name":"smartclip Holding AG","policyUrl":"http://privacy-portal.smartclip.net"}, 1219 {"name":"Smartology","policyUrl":"https://www.smartology.net/privacy-policy/"}, 1220 {"name":"SMARTSTREAM","policyUrl":"https://www.smartstream.tv/de/datenschutz"}, 1221 {"name":"Snitcher.com","policyUrl":"http://help.snitcher.com/general-information/does-snitcher-conform-to-the-gdpr"}, 1222 {"name":"So-net Media Networks","policyUrl":"http://www.so-netmedia.jp/cookie/index.html"}, 1223 {"name":"Sociomantic","policyUrl":"https://www.sociomantic.com/privacy/en/"}, 1224 {"name":"Sodel Software Solutions Pvt. Ltd.","policyUrl":"http://www.audience73.com/privacy.html"}, 1225 {"name":"Softcrylic","policyUrl":"https://softcrylic.com/privacy-policy/"}, 1226 {"name":"Softcube","policyUrl":"http://softcube.com/privacy-policy"}, 1227 {"name":"Sojern","policyUrl":"https://www.sojern.com/privacy/product-privacy-policy/"}, 1228 {"name":"Somo Audience","policyUrl":"https://somoaudience.com/legal/"}, 1229 {"name":"Somplo","policyUrl":"http://somplo.com/privacy-policy/"}, 1230 {"name":"SourceKnowledge","policyUrl":"http://www.sourceknowledge.com/privacy"}, 1231 {"name":"Sovrn ","policyUrl":"https://www.sovrn.com/privacy-policy/"}, 1232 {"name":"SPACE ADSERVER","policyUrl":"https://adx.space/policy.html"}, 1233 {"name":"Sparks47","policyUrl":"http://www.sparks47.com/privacy/"}, 1234 {"name":"Spartoo","policyUrl":"https://www.spartoo.co.uk/data_protection.php"}, 1235 {"name":"Splicky","policyUrl":"https://www.splicky.com/de/web/privacy"}, 1236 {"name":"Spotad","policyUrl":"http://www.spotad.co/privacy-policy/"}, 1237 {"name":"SpotX","policyUrl":"https://www.spotx.tv/privacy-policy/"}, 1238 {"name":"Spring Venture Group","policyUrl":"http://www.springventuregroup.com/privacy-policy/"}, 1239 {"name":"SpringServe","policyUrl":"https://springserve.com/consumer-privacy"}, 1240 {"name":"StackAdapt","policyUrl":"https://www.stackadapt.com/privacy"}, 1241 {"name":"Stage Flag","policyUrl":"http://stageflag.com/privacy/"}, 1242 {"name":"StartApp","policyUrl":"https://www.startapp.com/policy/privacy-policy/"}, 1243 {"name":"Stratio Big Data","policyUrl":"https://www.mutua.es/politica-cookies/"}, 1244 {"name":"StreamRail","policyUrl":"https://www.ironsrc.com/wp-content/uploads/2016/11/ironSourceDisplayPrivacyPolicy.pdf"}, 1245 {"name":"SUITE 66","policyUrl":"http://www.suite66.com/privacy-policy/"}, 1246 {"name":"Supership","policyUrl":"https://supership.jp/optout/"}, 1247 {"name":"Survata","policyUrl":"https://www.survata.com/respondent-privacy-policy/"}, 1248 {"name":"Suzumuchi","policyUrl":"http://suzuserver.dk/GDPR/"}, 1249 {"name":"Swaven","policyUrl":"http://www.swaven.com/cookie-policy/"}, 1250 {"name":"TabMo","policyUrl":"http://static.tabmo.io.s3.amazonaws.com/privacy-policy/index.html"}, 1251 {"name":"Taboola","policyUrl":"https://www.taboola.com/privacy-policy"}, 1252 {"name":"TACTIC™ Real-Time Marketing","policyUrl":"http://tacticrealtime.com/privacy/"}, 1253 {"name":"Tagtoo","policyUrl":"https://www.tagtoo.com.tw/privacy_en.html"}, 1254 {"name":"Tail","policyUrl":"https://www.tail.digital/#privacy"}, 1255 {"name":"Taiwan Mobile Co Ltd","policyUrl":"http://www.ghtinc.com/mi-dsp/privacy-policies/"}, 1256 {"name":"tapCLIQ","policyUrl":"https://www.tapcliq.com/privacy"}, 1257 {"name":"Tapjoy","policyUrl":"https://www.tapjoy.com/legal/#privacy-policy"}, 1258 {"name":"Tapklik","policyUrl":"https://www.tapklik.com/gdpr"}, 1259 {"name":"TapSense","policyUrl":"https://www.tapsense.com/company/privacy-policy"}, 1260 {"name":"Taptica","policyUrl":"https://www.taptica.com/privacy/"}, 1261 {"name":"Teads.TV","policyUrl":"https://teads.tv/privacy-policy/"}, 1262 {"name":"Tealium","policyUrl":"https://tealium.com/protecting-your-privacy-and-your-data/"}, 1263 {"name":"TEEMO","policyUrl":"https://teemo.co/fr/confidentialite/"}, 1264 {"name":"Telecoming","policyUrl":"http://www.telecoming.com/privacy-policy/"}, 1265 {"name":"TenMax","policyUrl":"https://www.tenmax.io/gdpr-privacy-policy"}, 1266 {"name":"The Bridge","policyUrl":"https://bridgecdi.com/privacy.php"}, 1267 {"name":"The Reach Group","policyUrl":"https://www.reachgroup.com/en/privacy-statement/"}, 1268 {"name":"The Trade Desk","policyUrl":"https://www.thetradedesk.com/general/privacy-policy"}, 1269 {"name":"Thomann GmbH","policyUrl":"https://www.thomann.de/de/compinfo_privacy.html"}, 1270 {"name":"ThoughtLeadr","policyUrl":"http://www.thoughtleadr.com/privacy-policy/"}, 1271 {"name":"Thunder","policyUrl":"https://makethunder.com/privacy"}, 1272 {"name":"TimeOne","policyUrl":"https://www.timeonegroup.com/privacy-policies/"}, 1273 {"name":"Tinkoff.ru","policyUrl":"https://static.tinkoff.ru/documents/docs/processing-personal-data.pdf"}, 1274 {"name":"TotalJobs Group Ltd","policyUrl":"https://www.totaljobs.com/privacy-policy"}, 1275 {"name":"Touch Ads","policyUrl":"https://touchads.com/company-index.html#privacy-policy"}, 1276 {"name":"TraceAd","policyUrl":"http://www.tracead.co.uk/230/gdpr-privacy-policy-gdpr"}, 1277 {"name":"Tradedoubler","policyUrl":"http://www.tradedoubler.com/en/privacy-policy/"}, 1278 {"name":"Trafmag","policyUrl":"http://trafmag.com/policy#gdpr"}, 1279 {"name":"travel audience – An Amadeus Company","policyUrl":"https://travelaudience.com/product-privacy-policy/"}, 1280 {"name":"Treepodia","policyUrl":"https://www.treepodia.com/En/docroot/Documents/Treepodia_Website_and_Platform_Privacy_Policy.pdf"}, 1281 {"name":"Trend Research","policyUrl":"https://trendfrage.de/?ID=135"}, 1282 {"name":"TreSensa","policyUrl":"http://tresensa.com/eu-privacy/index.html"}, 1283 {"name":"Tribes Research","policyUrl":"https://www.tribesresearch.co.uk/terms-conditions-cookie-and-privacy-policy/"}, 1284 {"name":"TripAdvisor","policyUrl":"https://tripadvisor.mediaroom.com/us-privacy-policy"}, 1285 {"name":"TripleLift ","policyUrl":"https://triplelift.com/privacy/"}, 1286 {"name":"TROVIT","policyUrl":"https://corporate.trovit.com/politica-de-privacidad"}, 1287 {"name":"True Wave Technologies Limited","policyUrl":"http://truewave.io/gdpr.html"}, 1288 {"name":"TruEffect","policyUrl":"https://trueffect.com/privacy-policy/"}, 1289 {"name":"TrustArc","policyUrl":"https://www.trustarc.com/privacy-policy/"}, 1290 {"name":"Turbobytes","policyUrl":"https://www.turbobytes.com/gdpr/"}, 1291 {"name":"TVadSync","policyUrl":"https://www.tvadsync.com/privacy-policy/"}, 1292 {"name":"Twinpine","policyUrl":"http://twinpinenetwork.com/privacy-policy/"}, 1293 {"name":"twyn","policyUrl":"http://www.twyn.com/datenschutz.html"}, 1294 {"name":"Ubimo","policyUrl":"http://www.ubimo.com/privacy/"}, 1295 {"name":"ucfunnel","policyUrl":"https://www.ucfunnel.com/privacy-policy"}, 1296 {"name":"UDG","policyUrl":"https://www.udg.de/wp-content/uploads/2018/04/privacy_policy_EN.pdf"}, 1297 {"name":"Umeng Plus Beijing Technology Limited Company","policyUrl":"https://dip.umeng.com/opt_out.html?spm=a211g2.181323.0.0.5c633604LjuRQc"}, 1298 {"name":"Underdog Media","policyUrl":"https://underdogmedia.com/privacy-policy/gdpr"}, 1299 {"name":"Undertone","policyUrl":"https://www.undertone.com/privacy/"}, 1300 {"name":"UNICORN","policyUrl":"https://uncn.jp/cup?lan=en"}, 1301 {"name":"Unisport","policyUrl":"https://www.unisport.dk/privacy/"}, 1302 {"name":"Unitymedia","policyUrl":"https://www.unitymedia.de/privatkunden/datenschutz/"}, 1303 {"name":"Universo Online","policyUrl":"http://www.dynad.net/"}, 1304 {"name":"Unruly","policyUrl":"https://unruly.co/privacy"}, 1305 {"name":"usemax (Emego GmbH)","policyUrl":"http://www.usemax.de/?l=privacy"}, 1306 {"name":"Ve Interactive","policyUrl":"https://www.ve.com/privacy-policy"}, 1307 {"name":"Vertoz","policyUrl":"https://www.vertoz.com/gdpr"}, 1308 {"name":"Vertriebswerk","policyUrl":"https://eazy.de/agb"}, 1309 {"name":"Verve","policyUrl":"https://www.verve.com/privacy-policy/"}, 1310 {"name":"Viant","policyUrl":"https://viantinc.com/privacy-policy/"}, 1311 {"name":"Vidazoo","policyUrl":"http://www.vidazoo.com/privacy"}, 1312 {"name":"Video Research Interactive","policyUrl":"https://www.videoi.co.jp/privacy/"}, 1313 {"name":"Videology","policyUrl":"https://videologygroup.com/en/privacy-policy/"}, 1314 {"name":"Viewbix","policyUrl":"http://corp.viewbix.com/cookie-policy/"}, 1315 {"name":"Vimeo","policyUrl":"https://vimeo.com/cookie_policy"}, 1316 {"name":"Virtual Minds","policyUrl":"https://virtualminds.de/datenschutz/"}, 1317 {"name":"VIVALU","policyUrl":"http://www.vivalu.com/downloads/de_DE/VIVALU_Datenschutz_2018.pdf"}, 1318 {"name":"Vizury","policyUrl":"https://www1.vizury.com/legal/privacy-policy"}, 1319 {"name":"Vodafone GmbH","policyUrl":"https://www.vodafone.de/unternehmen/datenschutz-privatsphaere.html"}, 1320 {"name":"VRTCAL","policyUrl":"https://vrtcal.com/docs/Terms.pdf"}, 1321 {"name":"Vserv","policyUrl":"https://www.vserv.com/privacy-policy/"}, 1322 {"name":"Vuble","policyUrl":"http://vuble.tv/privacy"}, 1323 {"name":"Vungle","policyUrl":"https://vungle.com/gdpr-faq/"}, 1324 {"name":"Walmart","policyUrl":"https://corporate.walmart.com/privacy-security/walmart-privacy-policy"}, 1325 {"name":"WAP.CO.UK","policyUrl":"http://www.wap.co.uk/privacy.html"}, 1326 {"name":"Wavenet","policyUrl":"https://www.wavenet.com.tw/privacy/"}, 1327 {"name":"Waystack","policyUrl":"https://www.wayfair.com/customerservice/general_info.php#privacy"}, 1328 {"name":"Webgains","policyUrl":"http://www.webgains.com/public/en/privacy/"}, 1329 {"name":"Weborama","policyUrl":"https://weborama.com/e-privacy/"}, 1330 {"name":"Whichit UK Ltd","policyUrl":"https://www.getwhichit.com/dataprotection"}, 1331 {"name":"White Ops","policyUrl":"https://www.whiteops.com/privacy"}, 1332 {"name":"Wider Planet","policyUrl":"http://info.jp.widerplanet.com/policy/privacy?lang=en"}, 1333 {"name":"Widespace","policyUrl":"https://www.widespace.com/legal/privacy-policy-notice/"}, 1334 {"name":"Wonderbly","policyUrl":"https://wonderbly.com/pages/privacy-policy"}, 1335 {"name":"X-Social","policyUrl":"http://www.xsocialgroup.com/PrivacyPolicy.html"}, 1336 {"name":"Yabbi","policyUrl":"http://dsp.yabbi.me/#popup-privacy"}, 1337 {"name":"Yandex","policyUrl":"https://yandex.ru/legal/confidential/"}, 1338 {"name":"YDigital Media","policyUrl":"http://ydigitalmedia.com/pt/privacy-policy"}, 1339 {"name":"YieldMo","policyUrl":"https://www.yieldmo.com/privacy/"}, 1340 {"name":"Yieldr","policyUrl":"https://www.yieldr.com/privacy/"}, 1341 {"name":"YOOSE","policyUrl":"https://www.yoose.com/privacy-policy"}, 1342 {"name":"YOptima","policyUrl":"http://www.yoptima.com/privacy-policy"}, 1343 {"name":"YouGov","policyUrl":"https://yougov.co.uk/about/terms-combined/#/terms"}, 1344 {"name":"Yusp","policyUrl":"http://www.yusp.com/yusp-privacy-policy/"}, 1345 {"name":"Zanox","policyUrl":"https://www.awin.com/de/rechtliches/privacy-policy"}, 1346 {"name":"Zebestof","policyUrl":"http://www.zebestof.com/en/about-us-2/privacy-en/"}, 1347 {"name":"Zentrick","policyUrl":"http://www.zentrick.com/platform-privacy-policy"}, 1348 {"name":"ZMS","policyUrl":"https://zms.zalando.com/#"}, 1349 {"name":"Zucks","policyUrl":"http://zucks.co.jp/en/privacy/"}, 1350 {"name":"Zuuvi","policyUrl":"http://zuuvi.com/en/privacy.php"}, 1351 {"name":"ZypMedia","policyUrl":"http://www.zypmedia.com/privacy-policy"}, 1352 {"name":"顶新","policyUrl":"http://www.360.cn/privacy/v3/bpsxy.html"}, 1353]); 1354pgjs.gdpr.gvlPartners = pgjs.gdpr.gvlPartners || []; 1355 1356pgjs.addModal = function(id, contents) { 1357 var modalCss = '<style>.pg-modal-blackout {' + 1358 'position: fixed;' + 1359 'top: 0;' + 1360 'left: 0;' + 1361 'bottom: 0;' + 1362 'right: 0;' + 1363 'overflow: auto;' + 1364 'background-color: #000000;' + 1365 'background-color: rgba(0, 0, 0, 0.5);' + 1366 'z-index: 9999;' + 1367 '}' + 1368 '.pg-modal {' + 1369 'position: relative;' + 1370 'background-color: #FFFFFF;' + 1371 'width: 95% !important;' + 1372 'max-width: 440px;' + 1373 'margin: 10% auto;' + 1374 'color:#000;' + 1375 'padding: 20px 20px 10px 20px;' + 1376 '}' + 1377 '.pg-modal-close {' + 1378 'float:right;' + 1379 'background: #0077ae;' + 1380 'cursor:pointer;' + 1381 'display: block;' + 1382 'padding: 0 20px !important;' + 1383 'margin: 0;' + 1384 'border-radius: 5px;' + 1385 'color: #fff;' + 1386 'font-size: 16px !important;' + 1387 'line-height: 35px;' + 1388 'border: 2px solid #0077ae;' + 1389 '}' + 1390 '.pg-modal, .pg-modal > * {' + 1391 'font-family: Helvetica, Arial, sans-serif;' + 1392 '}' + 1393'</style>'; 1394 var modalCssNode = document.getElementById('pg-modal-css'); 1395 if (modalCssNode) { 1396 pgjs.log('css modal already loaded, removing', 'modal') 1397 modalCssNode.parentNode.removeChild(modalCssNode); 1398 } 1399 modalCssNode = document.createElement("div"); 1400 modalCssNode.id = 'pg-modal-css'; 1401 modalCssNode.innerHTML = modalCss; 1402 document.body.appendChild(modalCssNode); 1403 var modal = document.getElementById(id); 1404 if (modal) { 1405 pgjs.log('already loaded id[' + id + '], removing', 'modal') 1406 modal.parentNode.removeChild(modal); 1407 } 1408 var modal = document.createElement("div"); 1409 modal.id = id; 1410 modal.classList.add("pg-modal-blackout"); 1411 modal.innerHTML = '<div class="pg-modal">' + contents + '</div>'; 1412 document.body.appendChild(modal); 1413 return modal; 1414}; 1415 1416pgjs.gdpr.findDefaultPrivacyUrl = function() { 1417 var foundPolicy = false;
1418 var links = []; 1419 [].push.apply(links, document.getElementsByTagName("a")); 1420 for (var i = links.length; i >= 0; i--) { // start from the bottom of the page 1421 var a = links[i]; 1422 if (a) { 1423 if ( 1424 (a.innerHTML.toLowerCase() == 'privacy') || 1425 (a.innerHTML.toLowerCase() == 'privacy policy') || 1426 (a.getAttribute('href') == 'privacy') 1427 ) { 1428 foundPolicy = a.getAttribute('href'); 1429 break; 1430 } 1431 } 1432 } 1433 if (foundPolicy) { 1434 pgjs.publisher.policyUrl = foundPolicy; 1435 var href = document.getElementById('pg-publisher-privacy-url'); 1436 if (href) { 1437 href.setAttribute('href', foundPolicy); 1438 pgjs.log('found policy[' + foundPolicy + '] with text[' + a.innerHTML + '], replacing'); 1439 } else { 1440 pgjs.log('found policy[' + foundPolicy + '] with text[' + a.innerHTML + '], but failed to find target, not replacing'); 1441 } 1442 } else { 1443 pgjs.log('publisher policy not found'); 1444 } 1445} 1446 1447pgjs.gdpr.requestGvl = function(force) { 1448 if (!pgjs.gdpr.gvlRequested || force) { 1449 pgjs.gdpr.gvlRequested = true; 1450 // pgjs.gdpr.gvl = 'https://vendorlist.consensu.org/vendorlist.json'; 1451// pgjs.gdpr.gvl = 'https://cdn.pubguru.com/vendorlist.json'; 1452 pgjs.gdpr.gvl = 'https://s3.amazonaws.com/cdn.pubguru.com/vendorlist.json'; 1453 pgjs.log('requesting gvl[' + pgjs.gdpr.gvl + ']'); 1454 pgjs.getJSON(pgjs.gdpr.gvl, function(err, data) { 1455 pgjs.log('gvl[' + pgjs.gdpr.gvl + '] retrieved'); 1456 pgjs.gdpr.gvlPartners = data.vendors; 1457 pgjs.gdpr.gvlFeatures = data.features; 1458 pgjs.gdpr.gvlPurposes = data.purposes; 1459 pgjs.gdpr.tryGvlRender(); 1460 }); 1461 } 1462} 1463 1464pgjs.gdpr.requestConsentOnDomReady = function() { 1465 pgjs.gdpr.requestGvl(); 1466 if ((document.readyState == "interactive") || (document.readyState == 'complete')) { 1467 if (pgjs.gdpr.geoIpOutsideEu) { 1468 pgjs.log('dom[' + document.readyState + '] is ready, geoIP outside EU, skipping', 'gdpr'); 1469 } else { 1470 pgjs.log('dom[' + document.readyState + '] is ready, requesting consent immediately', 'gdpr'); 1471 pgjs.gdpr.consentRequested = true; 1472 pgjs.gdpr.requestConsent(); 1473 pgjs.gdpr.findDefaultPrivacyUrl(); 1474 } 1475 } else { 1476 pgjs.log('dom[' + document.readyState + '] is not ready, requesting consent later', 'gdpr'); 1477 document.addEventListener('readystatechange', function () { 1478 if ((document.readyState == "interactive") || (document.readyState == 'complete')) { 1479 if (pgjs.gdpr.consentRequested) { 1480 pgjs.log('dom[' + document.readyState + '] delayed, ready late, consent already requested', 'gdpr'); 1481 } else if (pgjs.gdpr.geoIpOutsideEu) { 1482 pgjs.log('dom[' + document.readyState + '] delayed, geoIP outside EU, skipping', 'gdpr'); 1483 } else { 1484 pgjs.log('dom[' + document.readyState + '] delayed, ready late, requesting consent now', 'gdpr'); 1485 pgjs.gdpr.consentRequested = true; 1486 pgjs.gdpr.requestConsent(); 1487 pgjs.gdpr.findDefaultPrivacyUrl(); 1488 } 1489 } 1490 }); 1491 } 1492} 1493 1494if (!!pgjs.gdpr.rejectCallback) { // publisher set the function, wrap it 1495 pgjs.gdpr.rejectCallbackPublisher = function() {new Function(pgjs.gdpr.rejectCallback.toString());} 1496} 1497pgjs.gdpr.rejectCallbackPublisher = pgjs.gdpr.rejectCallbackPublisher || function() {} 1498pgjs.gdpr.rejectCallback = function() { 1499 pgjs.gdprAnalytics.popup_status='popup_rejected'; 1500 pgjs.gdpr.state = 'rejected'; 1501 pgjs.log('user rejected gdpr consent, doing nothing with PG ads', 'gdpr'); 1502 pgjs.addModal('gdpr-test', '<h1>GDPR Test</h1><p>Roadblock disabled, no ads loaded</p>'); 1503 pgjs.gdpr.rejectCallbackPublisher(); 1504}; 1505 1506if (!!pgjs.gdpr.consentCallback) { 1507 pgjs.gdpr.consentCallbackPublisher = function() {new Function(pgjs.gdpr.consentCallback.toString());} 1508} 1509pgjs.gdpr.consentCallbackPublisher = pgjs.gdpr.consentCallbackPublisher || function() {}; 1510pgjs.gdpr.consentCallback = function() { 1511 pgjs.gdpr.state = 'consented'; 1512 pgjs.cookie('gdpr', 'consented', pgjs.gdpr.consentDuration); 1513 pgjs.gdpr.consentRecord = { 1514 'id' : pgjs.gdpr.getConsentId(), 1515 'consentTimestamp' : (new Date()).getTime(), 1516 'consentDomain' : window.location.hostname, 1517 'ttl' : (new Date()).getTime() + 60*60*24*1000*pgjs.gdpr.consentDuration, 1518 'features' : [], 1519 'purposes' : [], 1520 'partners' : [], 1521 };
1522 pgjs.gdpr.gvlFeatures.forEach(function(entry) { 1523 pgjs.gdpr.consentRecord.features.push(entry.id); 1524 }); 1525 pgjs.gdpr.gvlPurposes.forEach(function(entry) { 1526 pgjs.gdpr.consentRecord.purposes.push(entry.id); 1527 }); 1528 pgjs.gdpr.partners.forEach(function(partner) { 1529 pgjs.gdpr.consentRecord.partners.push(partner.name); 1530 }); 1531 pgjs.gdpr.gvlPartners.forEach(function(partner) { 1532 pgjs.gdpr.consentRecord.partners.push(partner.name); 1533 }); 1534 pgjs.log('consented with ID[' + pgjs.gdpr.getConsentId() + ']', 'gdpr'); 1535 pgjs.log(pgjs.gdpr.consentRecord); 1536 try { 1537 localStorage.setItem('pg-dg-consent-id', pgjs.gdpr.consentId); 1538 localStorage.setItem('pg-dg-consent', JSON.stringify(pgjs.gdpr.consentRecord)); 1539 } catch (e) { 1540 pgjs.log('localStorage not supported'); 1541 }; 1542 pgjs.gdprAnalytics.popup_status='popup_accepted'; 1543// pgjs.postObject('https://pcy03mwwee.execute-api.us-east-1.amazonaws.com/Beta/consent', pgjs.gdpr.consentRecord); 1544 pgjs.gdpr.consentCallbackPublisher(); 1545 pgjs.publisherCookieWrapper(); 1546 pgjs.postGdprConsent(); 1547}; 1548 1549pgjs.getPageLanguage = function() { 1550 if (pgjs.get('pg_page_language')) { 1551 return pgjs.get('pg_page_language'); 1552 } 1553 if (document.documentElement.lang == 'es-ES') { return 'es'; } 1554 if (document.documentElement.lang == 'es') { return 'es'; } 1555 if (document.documentElement.lang == 'fr-FR') { return 'fr'; } 1556 if (document.documentElement.lang == 'fr') { return 'fr'; } 1557 return 'en'; 1558} 1559 1560pgjs.gdpr.languageMap = { 1561 'en' : { 1562 'disclosure-learn-more' : 'Learn more.', 1563 'disclosure-continue' : 'Ok. Let\'s GO!', 1564 'disclosure-reject' : 'Reject', 1565 'disclosure-body' : 'It takes a lot of work to build, maintain, and improve a site like this and all the wonderful content you\'re about to enjoy. We and third parties use tech like cookies to make this happen. <br><br>By continuing, you consent to the use of these technologies, and affirm you\'re at least 16 years old or have consent from a parent or guardian. ', 1566 'disclosure-title' : 'Trust and transparency is important to us.',
1567 'learn-more-partners' : 'Advertising and analytics that may load for you include the following companies:', 1568 'learn-more-features-purposes' : 'These technology partners intend to use analytics and behavioral data across sites and apps for the following features and purposes:', 1569 'learn-more-storage-duration' : 'Data can be stored up to ' + pgjs.gdpr.consentDuration + ' days. If you would like to have your data removed, please contact these companies. You can also modify your advertising personalization settings with <a href="https://adssettings.google.com/" target="_blank">Google</a> and <a href="http://optout.aboutads.info/?c=2#!/" target="_blank">AdChoices</a>.', 1570 'gvl-matching-offline' : 'Matching Data to Offline Sources: Combining data from offline sources that were initially collected in other contexts.', 1571 'gvl-linking-devices' : 'Linking Devices: Allow processing of a user\'s data to connect such user across multiple devices.', 1572 'gvl-geolocation' : 'Precise Geographic Location Data: Allow processing of a user\'s precise geographic location data in support of a purpose for which that certain third party has consent.', 1573 'gvl-info-storage' : 'Information storage and access: The storage of information, or access to information that is already stored, on your device such as advertising identifiers, device identifiers, cookies, and similar technologies.', 1574 'gvl-personalization' : 'Personalisation: The collection and processing of information about your use of this service to subsequently personalise advertising and/or content for you in other contexts, such as on other websites or apps, over time. Typically, the content of the site or app is used to make inferences about your interests, which inform future selection of advertising and/or content.', 1575 'gvl-ad-selection' : 'Ad selection, delivery, reporting: The collection of information, and combination with previously collected information, to select and deliver advertisements for you, and to measure the delivery and effectiveness of such advertisements. This includes using previously collected information about your interests to select ads, processing data about what advertisements were shown, how often they were shown, when and where they were shown, and whether you took any action related to the advertisement, including for example clicking an ad or making a purchase. This does not include personalisation, which is the collection and processing of information about your use of this service to subsequently personalise advertising and/or content for you in other contexts, such as websites or apps, over time.', 1576 'gvl-content-selection' : 'Content selection, delivery, reporting: The collection of information, and combination with previously collected information, to select and deliver content for you, and to measure the delivery and effectiveness of such content. This includes using previously collected information about your interests to select content, processing data about what content was shown, how often or how long it was shown, when and where it was shown, and whether the you took any action related to the content, including for example clicking on content. This does not include personalisation, which is the collection and processing of information about your use of this service to subsequently personalise content and/or advertising for you in other contexts, such as websites or apps, over time.', 1577 'gvl-measurement' : 'Measurement: The collection of information about your use of the content, and combination with previously collected information, used to measure, understand, and report on your usage of the service. This does not include personalisation, the collection of information about your use of this service to subsequently personalise content and/or advertising for you in other contexts, i.e. on other service, such as websites or apps, over time.', 1578 }, 1579 'es' : { 1580 'disclosure-learn-more' : 'Más información', 1581 'disclosure-continue' : 'Acepto.', 1582 'disclosure-reject' : 'Rechazo', 1583 'disclosure-body' : 'Esta página utiliza cookies y tecnologÃÂÂas similares (en adelante "Cookies"). Algunas Cookies permiten analizar y medir las visitas y el tráfico de la página web, mientras otras son necesarias para acceder a la página. También se utilizan para mostrar publicidad relevante para los intereses de nuestros usuarios. Para aceptar el uso de Cookies en esta página web, pulse "Acepto".', 1584 'disclosure-title' : 'Attencion', 1585 'learn-more-partners' : 'La publicidad y analÃÂÂticas que pueden aparecer en la página incluyen a las siguientes compañÃÂÂas.', 1586 'learn-more-features-purposes' : 'Estos terceros tratan de usar analÃÂÂticas y datos de comportamiento a través de diferentes sitios y aplicaciones para los siguientes propósitos:', 1587 'learn-more-storage-duration' : 'Los datos pueden mantenerse hasta ' + pgjs.gdpr.consentDuration + ' dÃÂÂas. Si quieres que tus datos sean eliminados, por favor, contacta con esas empresas. Puedes modificar tus opciones de publicidad con <a href="https://adssettings.google.com/" target="_blank">Google</a> y <a href="http://optout.aboutads.info/?c=2#!/" target="_blank">AdChoices</a>.', 1588 'gvl-matching-offline' : 'Comparar datos con fuentes sin conexión: Combinar datos de fuentes sin conexión que fueron recolectados inicialmente en otros contextos.', 1589 'gvl-linking-devices' : 'Conexión de dispositivos: Permitir que se procesen los datos de los usuarios para conectarlos a través de distintos dispositivos.', 1590 'gvl-geolocation' : 'Datos de localización geográfica precisos: Permitir que se procese la localización geográfica del usuario para apoyar algún propósito de terceros sobre el que tenga consentimiento previo.', 1591 'gvl-info-storage' : 'Almacenamiento de información y acceso: El almacenaje de información, o acceso a información que ya está almacenada, en tu dispositivo, como identificadores de publicidad, identificadores de dispositivos, cookies, y otras tecnologÃÂÂas similares.', 1592 'gvl-personalization' : 'Personalización: La recolección y procesamiento de la información de tu uso de este servicio para personalizar la publicidad y/o contenido para el usuario en otros contextos, como otros sitios webs o aplicaciones. TÃÂÂpicamente el contenido del sitio o aplicación se usa para detectar tus intereses, y asàofrecer posteriormente el mejor contenido disponible.', 1593 'gvl-ad-selection' : 'Selección de anuncios, distribución, informes: La recolección de la información, y su combinación con otra previamente recogida, para seleccionar y distribuir anuncios para el usuario, y medir la efectividad de la distribución de estos anuncios publicitarios. Esto
1593incluye el uso de información previamente recogida sobre tus intereses para seleccionar anuncios, procesar datos sobre qué anuncios ya fueron mostrados, con qué frecuencia se muestran, cuándo y dónde se mostraron, y si se realiza alguna acción sobre ese anuncio, incluyendo el hecho de hacer click o realizar una compra. Esto no incluye personalización, que es la recolección y procesamiento de la información sobre tu uso de este servicio para personalizar los anuncios o el contenido en otros contextos, como páginas web o aplicaciones.', 1594 'gvl-content-selection' : 'Selección de contenido, distribución, informes: La recolección de la información, y su combinación con otra previamente recogida, para seleccionar y distribuir contenidos para el usuario, y medir la efectividad de la distribución de este contenido. Esto incluye el uso de información previamente recogida sobre tus intereses para seleccionar contenido, procesar datos sobre qué contenido ya fue mostrado, con qué frecuencia o tiempo se mostró, cuándo y dónde se mostraron, y si se realiza alguna acción sobre ese contenido, incluyendo el hecho de hacer click en el contenido. Esto no incluye personalización, que es la recolección y procesamiento de la información sobre tu uso de este servicio para personalizar los anuncios o el contenido en otros contextos, como páginas web o aplicaciones.', 1595 'gvl-measurement' : 'Mediciones: La recolección de información sobre tu uso del contenido, y la combinación con información previamente recogida, para medir, entender y analizar en tu uso del servicio. Esto no incluye personalización, que es la recolección y procesamiento de la información sobre tu uso de este servicio para personalizar los anuncios o el contenido en otros contextos, como páginas web o aplicaciones.', 1596 }, 1597 'fr' : { 1598 'disclosure-learn-more' : 'En savoir plus.', 1599 'disclosure-continue' : 'Très bien. Allons-y!', 1600 'disclosure-reject' : 'Rejeter', 1601 'disclosure-body' : 'Concevoir, maintenir et améliorer un site comme celui-ci et tout le contenu dont vous allez profiter nécessite beaucoup de travail. Nous et des tiers utilisons des cookies technologiquement similaires pour que cela fonctionne. <br> <br> En continuant, vous acceptez l\'utilisation de ces technologies et déclarez être âgé d\'au moins 16 ans ou avoir le consentement d\'un parent ou d\'un tuteur légal.', 1602 'disclosure-title' : 'La confiance et la transparence sont très importantes pour nous.', 1603 'learn-more-partners' : 'Les annonces et analyses qui peuvent être disponibles pour vous incluent les sociétés suivantes.', 1604 'learn-more-features-purposes' : 'Ces partenaires technologiques tendent à faire usage de données analytiques et comportementales sur les sites et applications pour les fonctionnalités et aux fins suivantes :', 1605 'learn-more-storage-duration' : 'Les données peuvent être stockées jusqu’à ' + pgjs.gdpr.consentDuration + ' jours. Si vous souhaitez que vos données soient effacées, veuillez contacter ces sociétés. Vous pouvez également modifier vos paramètres de personnalisation de la publicité avec <a href="https://adssettings.google.com/" target="_blank">Google</a> et <a href="http://optout.aboutads.info/?c=2#!/" target="_blank">AdChoices</a>.', 1606 'gvl-matching-offline' : 'Comparaison des données avec des sources hors ligne : comparaison des données à des sources hors ligne collectées dans d’autres contextes.', 1607 'gvl-linking-devices' : 'Liaison des appareils : permet le traitement des données de l’utilisateur afin qu’il puisse se connecter sur plusieurs appareils.', 1608 'gvl-geolocation' : 'Données précises en matière de situation géographique : permet le traitement des données précises en matière de situation géographique d’un utilisateur afin d’appuyer une fin à laquelle un tiers donné a donné son consentement.', 1609 'gvl-info-storage' : 'Stockage et accès aux informations : le stockage des informations, ou l’accès aux informations déjà stockées, sur votre appareil comme les identificateurs publicitaires, les identificateurs d’appareil, les cookies, et les technologies similaires.', 1610 'gvl-personalization' : 'Personnalisation : la collecte et le traitement des informations sur votre utilisation de ce service pour personnaliser ensuite les publicités et/ou le contenu dans d’autres contextes, comme sur d’autres sites internet ou applications. Généralement, le contenu du site ou de l’application est utilisé pour faire des déductions sur vos centres d’intérêt, participant à la future sélection de publicités et/ou de contenu.', 1611 'gvl-ad-selection' : 'Sélection de publicités, prestation, signalement : la collecte d’informations, et l’association de celles-ci avec des informations collectées précédemment, pour sélectionner et vous fournir des publicités, et pour mesurer la prestation et l’efficacité de telles publicités. Cela inclut l’utilisation d’informations précédemment collectées sur vos centres d’intérêt pour sélectionner les publicités, le traitement des données sur les publicités qui vous ont été montrées, la fréquence, le moment et le lieu de ces affichages, et si vous avez effectué ou non une action en lien avec cette publicité, y compris par exemple le fait de cliquer sur l’annonce ou d’effectuer un achat. Cela n’inclut pas la personnalisation, qui est la collecte et le traitement des informations sur votre utilisation de ce service pour personnaliser ensuite les publicités et/ou le contenu dans d’autres contextes, comme sur des sites internet ou applications.', 1612 'gvl-content-selection' : 'Sélection du contenu, prestation, signalement : la collecte d’informations, et l’association de celles-ci avec des informations collectées précédemment, pour sélectionner et vous fournir du contenu, et pour mesurer la prestation et l’efficacité d’un tel contenu. Cela inclut l’utilisation d’informations précédemment collectées sur vos centres d’intérêt pour sélectionner le contenu, le traitement des données sur le contenu qui vous a été montré, la fréquence ou la durée, le moment et le lieu de ces affichages, et si vous avez effectué ou non une action en lien avec ce contenu, y compris par exemple le fait de cliquer sur le contenu. Cela n’inclut pas la personnalisation, qui est la collecte et le traitement des informations sur votre utilisation de ce service pour personnaliser ensuite le contenu et/ou les publicités dans d’autres contextes, comme sur des sites internet ou applications.', 1613 'gvl-measurement' : 'Évaluation : la collecte d’informations sur votre utilisation du contenu, et l’association de celles-ci à des informations précédemment collectées, utilisées pour évaluer, comprendre, et rendre compte de votre utilisation du service. Cela n’inclut pas la personnalisation, la collecte des informations sur votre utilisation de ce service pour personnaliser ensuite le contenu et/ou les publicités dans d’autres contextes, par ex. sur d’autres services, comme sur des sites internet ou applications.', 1614 }, 1615} 1616 1617pgjs.gdpr.getMappedLanguage = function(key) { 1618 if (pgjs.gdpr.languageMap[pgjs.getPageLanguage()] && pgjs.gdpr.languageMap[pgjs.getPageLanguage()[key]] && (pgjs.gdpr.languageMap[pgjs.getPageLanguage()[key]] != '')) { 1619 return pgjs.gdpr.languageMap[pgjs.getPageLanguage()[key]]; 1620 } 1621 if (pgjs.gdpr.languageMap[pgjs.getPageLanguage()] && pgjs.gdpr.languageMap[pgjs.getPageLanguage()][key] && (pgjs.gdpr.languageMap[pgjs.getPageLanguage()][key] != '')) { 1622 return pgjs.gdpr.languageMap[pgjs.getPageLanguage()][key]; 1623 } 1624 pgjs.log('unset language map for key[' + key + '] in language[' + pgjs.getPageLanguage() + ']'); 1625 return ''; 1626} 1627 1628pgjs.gdpr.requestConsent = pgjs.gdpr.requestConsent || function() { 1629 pgjs.log('showing consent popup with language[' + pgjs.getPageLanguage() + ']', 'gdpr') 1630 pgjs.gdpr.requestGvl(); 1631 1632 pgjs.gdpr.modal = pgjs.addModal('pg-gdpr', 1633 (pgjs.publisher.logo ? '<div style="text-align:center;"><img src="' + pgjs.publisher.logo + '" style="max-width:300px;max-height:100px;margin:0px auto 8px auto;"></div>' : '') + 1634 '<div style="font-size:14px;font-weight:bold;text-align:center;">' + (pgjs.gdpr.disclosureTitle || pgjs.gdpr.getMappedLanguage('disclosure-title')) + '</div>' + 1635 '<p style="font-size:12px;text-align: justify;">' + 1636 (pgjs.gdpr.disclosureBody || pgjs.gdpr.getMappedLanguage('disclosure-body')) + 1637 ' <span style="color:#666;font-size:12px;margin-top:5px;cursor:pointer;" id="pg-learn-more">' + 1638 (pgjs.gdpr.disclosureLearnMore || pgjs.gdpr.getMappedLanguage('disclosure-learn-more')) + 1639 '</span>' + 1640 '<div class="pg-modal-close" style="margin-left:20px;">' + 1641 (pgjs.gdpr.disclosureContinue || pgjs.gdpr.getMappedLanguage('disclosure-continue')) + 1642 '</div>' + 1643 (pgjs.gdpr.roadBlock ? '' : '<div style="float:left;color:#999;font-size:12px;margin-top:5px;cursor:pointer;" id="pg-reject">' + (pgjs.gdpr.disclosureReject || pgjs.gdpr.getMappedLanguage('disclosure-reject')) + '</div>') + 1644 '<div id="pg-partners" style="overflow:scroll;font-size:10px;display:none;"></div>' + 1645 '<div style="clear:both;"></div>' + 1646 '</p>'); 1647 var learnMoreNode = document.getElementById("pg-learn-more"); 1648 learnMoreNode.addEventListener("click", function() { 1649 learnMoreNode.style.display = 'none'; 1650 var partnersNode = document.getElementById("pg-partners"); 1651 partnersNode.style.border = '1px solid #DDD'; 1652 partnersNode.style.padding = '10px'; 1653 partnersNode.style.display = 'block'; 1654 partnersNode.style.height = '150px'; 1655 partnersNode.innerHTML = '<div style="margin-bottom:8px;">' + pgjs.gdpr.getMappedLanguage('learn-more-partners') + '</div>';
1656 pgjs.gdpr.partners.forEach(function(partner) { 1657 partnersNode.innerHTML += '<div><a href="' + (partner.policyUrl || partner.policy || partner.privacyPolicy) + '"' + (partner.isPublisher ? ' id="pg-publisher-privacy-url" ' : '') + ' target="_blank">' + partner.name + '</a></div>'; 1658 }); 1659 partnersNode.innerHTML += '<div id="pg-gvl-partners"></div>'; 1660 partnersNode.innerHTML += '<div id="pg-gvl-features-purposes">' + 1661 '<div style="margin-top:3px;"><p style="font-size:11px;">' + pgjs.gdpr.getMappedLanguage('learn-more-features-purposes') + '</p>' + 1662 '<p style="font-size:11px;">' + pgjs.gdpr.getMappedLanguage('gvl-matching-offline') + '</p>' + 1663 '<p style="font-size:11px;">' + pgjs.gdpr.getMappedLanguage('gvl-linking-devices') + '</p>' + 1664 '<p style="font-size:11px;">' + pgjs.gdpr.getMappedLanguage('gvl-geolocation') + '</p>' + 1665 '<p style="font-size:11px;">' + pgjs.gdpr.getMappedLanguage('gvl-info-storage') + '</p>' + 1666 '<p style="font-size:11px;">' + pgjs.gdpr.getMappedLanguage('gvl-personalization') + '</p>' + 1667 '<p style="font-size:11px;">' + pgjs.gdpr.getMappedLanguage('gvl-ad-selection') + '</p>' + 1668 '<p style="font-size:11px;">' + pgjs.gdpr.getMappedLanguage('gvl-content-selection') + '</p>' + 1669 '<p style="font-size:11px;">' + pgjs.gdpr.getMappedLanguage('gvl-measurement') + '</p>' + 1670 '</div>' + 1671 '<div style="margin-top:8px;font-size:11px;">' + pgjs.gdpr.getMappedLanguage('learn-more-storage-duration') + '</div>'; 1672 pgjs.gdpr.tryGvlRender(); 1673 }); 1674 var rejectNode = document.getElementById('pg-reject'); 1675 if (rejectNode) { 1676 var gdprNode = document.getElementById('pg-gdpr'); 1677 rejectNode.addEventListener("click", function() { 1678 gdprNode.parentNode.removeChild(modal); 1679 }); 1680 } 1681 var closeNode = document.querySelector(".pg-modal-close"); 1682 closeNode.addEventListener("click", function() { 1683 pgjs.log('popup closed', 'gdpr'); 1684 pgjs.gdpr.modal.parentNode.removeChild(pgjs.gdpr.modal); 1685 pgjs.gdpr.consentCallback(); 1686 }); 1687 if (pgjs.publisher.policyUrldefaulted) { 1688 pgjs.gdpr.findDefaultPrivacyUrl(); 1689 } 1690}; 1691 1692pgjs.publisherCookieWrapper = // pubs are massively messing up this override... pull any of them we can ... 1693 pgjs.gdpr.publisherCookieWrapper || 1694 pgjs.gdpr.publisherCookieWrap || 1695 pgjs.gdpr.publisherAnalytics || 1696 pgjs.publisherCookieWrapper || 1697 pgjs.publisherCookieWrap || 1698 pgjs.publisherAnalytics || 1699 function() { pgjs.log('publisher did not override pgjs.publisherCookieWrapper', 'gdpr'); }; 1700 1701pgjs.uuid4 = function() { 1702 return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { 1703 var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); 1704 return v.toString(16); 1705 }); 1706} 1707pgjs.gdpr.tryGvlRender = function() { 1708 if (pgjs.gdpr.gvlRendered) { 1709 pgjs.log('gvl data already rendered'); 1710 } else { 1711 var partnersNode = document.getElementById('pg-gvl-partners'); 1712 var featuresPurposesNode = document.getElementById('pg-gvl-features-purposes'); 1713 if (partnersNode && featuresPurposesNode) { 1714 pgjs.log('gvl data not already rendered, rendering'); 1715 pgjs.gdpr.gvlRendered = true; 1716 pgjs.gdpr.gvlPartners.forEach(function(partner) { 1717 partnersNode.innerHTML += '<div style="margin:0px;padding:0px;"><a href="' + partner.policyUrl + '" target="_blank">' + partner.name + '</a></div>'; 1718 }); 1719 } else { 1720 pgjs.log('gvl data not already rendered, but divs aren\'t ready, not rendering'); 1721 } 1722 } 1723} 1724 1725pgjs.gdpr.getConsentId = function() { 1726 if (pgjs.gdpr.getStatus() != 'consented') { 1727 return false; 1728 } 1729 if (pgjs.cookie('consentId')) 1730 return pgjs.cookie('consentId'); 1731 pgjs.gdpr.consentId = pgjs.uuid4(); 1732 pgjs.cookie('consentId', pgjs.gdpr.consentId, pgjs.gdpr.consentDuration); 1733 return pgjs.gdpr.consentId; 1734} 1735 1736pgjs.geolocate = function() { 1737 if (!pgjs.geo) { 1738 pgjs.geo = {}; 1739 if (!pgjs.geoRequested) { 1740 pgjs.geoRequested = true; 1741 pgjs.getJSON('https://analytics2.m2.ai/ml?device=' + pgjs.getDeviceType() + '&publisher=' + pgjs.publisher.getDfpNetworkCode(), function(err, data) { 1742 if (err) { 1743 pgjs.log('error fetching geo data') 1744 } else { 1745 pgjs.log('geo ip endpoint returning result'); 1746 pgjs.log(data); 1747 pgjs.geo = data; 1748 } 1749 }); 1750 } 1751 } 1752 return pgjs.geo; 1753} 1754 1755pgjs.sendDynamoPacket = function(){ 1756 try { 1757 pgjs.gdprAnalytics.id = pgjs.uuid4(); 1758 pgjs.gdprAnalytics.domain_name = pgjs.getPublisherDomain2(); 1759 pgjs.gdprAnalytics.timestamp = new Date().toISOString().split('T')[0]; // ISO without time 1760 pgjs.gdprAnalytics.design = pgjs.gdpr.design; 1761 1762 var gdprAnalyticsUrl = "https://irmqzlj2e9.execute-api.us-east-1.amazonaws.com/Beta/gdpranalytics"; 1763 var gdprPostRequest = new XMLHttpRequest(); 1764 gdprPostRequest.open('POST', gdprAnalyticsUrl, true); 1765 gdprPostRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); 1766 gdprPostRequest.send(JSON.stringify(pgjs.gdprAnalytics));
1767 pgjs.log('success sending GDPR analytics data!','gdprAnalytics'); 1768 } catch (e) { 1769 pgjs.log('failed to send gdpr analytics data with error[' + e.message + ']', 'gdprAnalytics'); 1770 } 1771} 1772 1773pgjs.gdpr.getStatus = function(state) { 1774 if (pgjs.cookie('gdpr') && (pgjs.cookie('gdpr') != '')) { return pgjs.cookie('gdpr'); } 1775 if (!!pgjs.gdpr.state) { return pgjs.gdpr.state; } 1776 if (!pgjs.geo && !pgjs.geoRequested) { 1777 pgjs.geoRequested = true; 1778 } 1779 // Gdpr state isn't set, so use fast checks. 1780 try { 1781 var utcOffset = Number(new Date().toString().match(/([-\+][0-9]+)\s/)[1]); 1782 if ((utcOffset < 0) || (utcOffset > 400)) { 1783 pgjs.gdpr.state = 'not-eu'; // do not set the cookie 1784 return pgjs.gdpr.state; 1785 } 1786 } catch (e) { 1787 pgjs.log('failed to fast check timezone with error[' + e.message + ']', 'gdpr'); 1788 } 1789 try { 1790 var euLanguages = [ 1791 'de-at', // german austrian - Austria 1792 'nl-be', // dutch belgian - Belgium 1793 'fr-be', // french belgian - Belgium 1794 'bg', // Bulgaria 1795 'hr', // Croatia 1796 // Republic of Cyprus - speaks turkish/greek 1797 'cs', // Czech Republic 1798 'da', // Denmark 1799 'et', // Estonia 1800 'fi', // Finland 1801 'fr', // french standard - France 1802 'fr-fr', // french french - France 1803 'de', // Germany 1804 'de-de', // Germany 1805 'el', // Greece 1806 'hu', // Hungary 1807 'ga', // Ireland 1808 'gd-ie', // gaelic irish - Ireland 1809 'it', // Italy 1810 'lv', // Latvia 1811 'lt', // Lithuania 1812 'fr-lu', // french lux - Luxembourg 1813 'de-lu', // german lux - Luxembourg 1814 'lb', // Luxembourg 1815 'mt', // Malta 1816 'nl', // Netherlands 1817 'pl', // Poland 1818 'pt', // Portugal 1819 'rm', // rhaeto romanic - Romania 1820 'ro', // Romania 1821 'sk', // Slovakia 1822 'sl', // Slovenia 1823 'es', // Spain 1824 'es-es', // Spain 1825 'sv', // Sweden 1826 'sv-fi', // Sweden 1827 'sv-sv', // Sweden 1828 'en-ie', // english ireland - UK 1829 'en-gb', // english british - UK 1830 ]; 1831 if (euLanguages.indexOf(navigator.language) >= 0) { 1832 pgjs.log('confirmed EU by timezone[' + utcOffset + '] and browser language[' + navigator.language + ']', 'gdpr'); 1833 // cannot set cookie without consent 1834 pgjs.gdpr.state = 'eu-no-consent'; 1835 return pgjs.gdpr.state; 1836 } 1837 } catch (e) { 1838 pgjs.log('failed to fast check language with error[' + e.message + ']'); 1839 } 1840 1841 if (pgjs.geolocate().country) { 1842 var countries = [ 1843 'GR', // Greece 1844 'IS', // Iceland 1845 'LI', // Liechtenstein 1846 'NO', // Norway 1847 'CY', // Cyprus 1848 'AT', // Austria 1849 'BE', // Belgium 1850 'BG', // Bulgaria 1851 'CZ', // Czechia 1852 'DE', // Germany 1853 'DK', // Denmark 1854 'EE', // Estonia 1855 'ES', // Spain 1856 'FI', // Finland 1857 'FR', // France 1858 'GB', // United Kingdom 1859 'HR', // Croatia 1860 'HU', // Hungary 1861 'IE', // Ireland 1862 'IT', // Italy 1863 'LT', // Republic of Lithuania 1864 'LU', // Luxembourg 1865 'LV', // Latvia 1866 'MT', // Malta 1867 'NL', // Netherlands 1868 'PL', // Poland 1869 'PT', // Portugal 1870 'RO', // Romania 1871 'SE', // Sweden 1872 'SI', // Slovenia 1873 'SK', // Slovakia 1874 ]; 1875 if (countries.indexOf(pgjs.geolocate().country) >= 0) { 1876 pgjs.log('confirmed EU by geo[' + pgjs.geolocate().country + ']', 'gdpr'); 1877 // cannot set cookie without consent 1878 pgjs.gdpr.state = 'eu-no-consent'; 1879 return pgjs.gdpr.state; 1880 } else { 1881 pgjs.cookie('gdpr', 'not-eu', 7); 1882 pgjs.log('confirmed EU by geo[' + pgjs.geolocate().country + ']', 'gdpr'); 1883 pgjs.gdpr.state = 'not-eu'; 1884 return pgjs.gdpr.state; 1885 } 1886 } 1887 1888 return 'unset'; 1889} 1890// 1891// window._cmp = function(command, parameter, callback) { 1892// if (command == 'getVendorConsents') { 1893// pgjs.gdpr.iabGetVendorConsents(parameter, callback); 1894// } else if (command == 'getConsentData') { 1895// pgjs.gdpr.iabGetConsentData(parameter, callback); 1896// } else if (command == 'ping') { 1897// pgjs.gdpr.iabPing(parameter, callback); 1898// } else if (command == 'getPublisherConsents') { 1899// pgjs.gdpr.iabGetPublisherConsents(parameter, callback); 1900// } else if (command == 'getVendorList') { 1901// pgjs.gdpr.iabGetVendorList(parameter, callback); 1902// } else { 1903// console.warn('unsupported _cmp call provided, command[' + command + '] parameter[' + ']') 1904// } 1905// } 1906 1907var dec2hex = []; 1908for (var i = 0; i <= 15; i++) { 1909 dec2hex[i] = i.toString(16); 1910} 1911 1912pgjs.uuid = function () { 1913 var uuid = ''; 1914 for (var i = 1; i <= 36; i++) { 1915 if (i === 9 || i === 14 || i === 19 || i === 24) { 1916 uuid += '-'; 1917 } else if (i === 15) { 1918 uuid += 4; 1919 } else if (i === 20) { 1920 uuid += dec2hex[(Math.random() * 4 | 0 + 8)]; 1921 } else { 1922 uuid += dec2hex[(Math.random() * 15 | 0)]; 1923 } 1924 } 1925 return uuid; 1926}; 1927 1928pgjs.getSessionId = function() { 1929 if (typeof pgjs.sessionId === 'undefined') { 1930 if (pgjs.cookie('m2session')) { 1931 pgjs.sessionId = pgjs.cookie('m2session'); 1932 } else { 1933 pgjs.sessionId = pgjs.uuid(); 1934 pgjs.cookie('m2session', pgjs.sessionId, 30); 1935 } 1936 } 1937 return pgjs.sessionId; 1938} 1939 1940//Domain name 1941pgjs.getPublisherDomain = function () { 1942 var host_name = window.location.hostname.split("."); 1943 var publisher = host_name.length == 2 ? host_name[0] : host_name[1]; 1944 return publisher; 1945}; 1946 1947//Fetch User Email if exists 1948pgjs.getUserEmail = function () { 1949 var email = 'na' 1950 if (pgjs.get('email')) { 1951 email = pgjs.get('email'); 1952 pgjs.cookie('email', email, 1); 1953 } else if(pgjs.cookie('email')) { 1954 email = pgjs.cookie('email'); 1955 } 1956 return email; 1957}; 1958 1959//Encode packet data | array 1960pgjs.getEncodedData = function (packets) { 1961 var base64Records = []; 1962 var total_packets = packets.length; 1963 for (var i = 0; i < total_packets; i++) { 1964 var singleRecord = {}; 1965 var singleRecordString = "\n" + JSON.stringify(packets[i]) + "\n"; 1966 singleRecord.Data = btoa(singleRecordString) || ''; 1967 base64Records.push(singleRecord); 1968 } 1969 return base64Records; 1970}; 1971 1972//Send given packets | Use async = false for unload/onunload events 1973pgjs.sendPacketData = function (packets, async) { 1974 try { 1975 var finalPacket = {}; 1976 finalPacket.DeliveryStreamName = "bot_detection"; 1977 finalPacket.Records = pgjs.getEncodedData(packets); 1978 var url = 'https://nhue03js3i.execute-api.us-east-1.amazonaws.com/Beta/request_packets'; 1979 var xhr = new XMLHttpRequest(); 1980 xhr.open('POST', url, async); 1981 xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); 1982 var myJSON = JSON.stringify(finalPacket); 1983 xhr.send(myJSON); 1984 } catch (e) { 1985 m2hb.log("Error sending request data","TrafficCop") 1986 return; 1987 } 1988}; 1989 1990pgjs.log('pgjs library loaded'); 1991 1992pgjs.log('defaulting publisher settings'); 1993if (typeof pgjs.publisher.trackUTMs == 'undefined') { pgjs.publisher.trackUTMs = true; } 1994if (typeof pgjs.publisher.trackURI == 'undefined') { pgjs.publisher.trackURI = true; } 1995if (typeof pgjs.publisher.utms == 'undefined') { pgjs.publisher.utms = []; } 1996if (typeof pgjs.publisher.adUnits == 'undefined') { pgjs.publisher.adUnits = []; } 1997if (typeof pgjs.publisher.adBlockToGaSampling == 'undefined') { pgjs.publisher.adBlockToGaSampling = 0; } 1998if (isNaN(pgjs.publisher.adBlockToGaSampling)) { 1999 pgjs.log('adBlockToGaSampling[' + pgjs.publisher.adBlockToGaSampling + '] is not a number, defaulting to zero'); 2000 pgjs.publisher.adBlockToGaSampling = 0; 2001} else { 2002 pgjs.publisher.adBlockToGaSampling = Number(pgjs.publisher.adBlockToGaSampling); 2003} 2004 2005//Create event packets 2006pgjs.createEventPacket = function(data, event_type, timestamp) { 2007 var eventPacket = { 2008 'mm2_cookieA': pgjs.getSessionId(), 2009 'mm2_cookieB': pgjs.cookie('mm2_cookieB') || '', 2010 'packet_type': 'event_packet', 2011 'event_type': event_type, 2012 'publisher': pgjs.getPublisherDomain(), 2013 'timestamp': timestamp || '' 2014 }; 2015 eventPacket.data = data; 2016 pgjs.trafficEvents.addPacket(eventPacket); 2017} 2018
2019//Modified cookie logic to store cookie only for 5 hours and send ip_packet as soon as it arrives 2020pgjs.setGeoMlcookie = function () { 2021 var ip_address = pgjs.cookie('ip_address'); 2022 var country = pgjs.cookie('country'); 2023 if (!ip_address && !country) { 2024 pgjs.getJSON('https://analytics2.m2.ai/ml?device=' + pgjs.getDeviceType() + '&publisher=' + pgjs.getPublisherDomain(), 2025 function (err, data) { 2026 if (err) { 2027 console.log('Error while fetching IP address'); 2028 } else { 2029 pgjs.cookie('country', data.country, 0.2); 2030 pgjs.cookie('region', data.region, 0.2); 2031 pgjs.cookie('ip_address', data.ip, 0.2); 2032 var ipData = { 2033 'country': data.country || 'na', 2034 'region': data.region || 'na', 2035 'ip_address': data.ip || 'na' 2036 }; 2037 pgjs.createEventPacket(ipData, 'ip_packet', pgjs.startTime); 2038 } 2039 }); 2040 } 2041}; 2042 2043if (pgjs.getPublisherDomain() === "famefocus" && !!window.forensiq_browser){ 2044pgjs.setGeoMlcookie(); 2045} 2046 2047//Adding handlers to document body + ad-unit 2048pgjs.initTrafficCopListners = function () { 2049 window.addEventListener('mousemove', pgjs.mouseMoveHandler, false); 2050 window.addEventListener('click', pgjs.mouseClickHandler, false); 2051 window.addEventListener('dblclick', pgjs.mouseDoubleClick, false); 2052 document.body.addEventListener('keypress', pgjs.keyPressHandler, false); 2053 window.addEventListener('scroll', pgjs.onScrollHandler, false); 2054 window.addEventListener('resize', pgjs.onResizeHandler); 2055 document.body.addEventListener('touchstart', pgjs.touchEvent1, false); 2056 document.body.addEventListener('touchmove', pgjs.touchEvent2, false); 2057 //Event packets sent -> Every 2 sec for 10sec. 2058 pgjs.trafficEvents.setEventInterval(window.setInterval(pgjs.sendEventPacket, 2000)); 2059 setInterval( function () { if (pgjs.scrollTracked) { 2060 pgjs.scrollTracked = false; 2061 } 2062 }, 200); 2063 setInterval( function () { if (pgjs.touchTracked) { 2064 pgjs.touchTracked = false; 2065 } 2066 }, 200); 2067 setInterval( function () { if (pgjs.mouseTracked) { 2068 pgjs.mouseTracked = false; 2069 } 2070 }, 200); 2071 window.onbeforeunload = function () { pgjs.onUnloadHandler(); }; 2072 window.onunload = function () { pgjs.onUnloadHandler(); }; 2073} 2074 2075//Send request data 2076pgjs.sendRequestData = function () { 2077 var mm2_cookieB = pgjs.cookie('mm2_cookieB'); 2078 if (!mm2_cookieB && mm2_cookieB !== '') { 2079 mm2_cookieB = 1; 2080 } else { 2081 var parsedCount = parseInt(mm2_cookieB, 10); 2082 if (isNaN(parsedCount)) { 2083 parsedCount = 0; 2084 } 2085 mm2_cookieB = parsedCount + 1; 2086 } 2087 pgjs.cookie('mm2_cookieB', mm2_cookieB, 1); 2088 2089 //fetching gpu details 2090 var debugInfo = ''; 2091 var gl=null; 2092 try{ 2093 var canvas = document.createElement('canvas'); 2094 gl = canvas.getContext('webgl'); 2095 if (gl) { 2096 debugInfo = gl.getExtension('WEBGL_debug_renderer_info'); 2097 } 2098 } catch(error){ 2099 debugInfo = 'na' 2100 } 2101 2102 //Browser Performance data 2103 var performance = window.performance || window.mozPerformance || window.msPerformance || window.webkitPerformance || {}; 2104 var bom_performance_count = ''; 2105 if (!!performance) { 2106 bom_performance_count = performance.length; 2107 } 2108 2109 var total_mime_types = navigator.mimeTypes.length || 0; 2110 var mime_type_set = []; 2111 for (var i = 0; i < total_mime_types; i++) { 2112 mime_type_set.push(navigator.mimeTypes[i].type); 2113 } 2114 2115 var plugin_count = navigator.plugins.length || 0; 2116 var installed_plugins = []; 2117 for (var z = 0; z < plugin_count; z++) { 2118 installed_plugins.push(navigator.plugins[z].name); 2119 } 2120 2121 // Fetching forensiq params and adding to request packet 2122 var fqa = (typeof fqa === 'undefined') ? 'na' : fqa; 2123 var fqp = (typeof fqp === 'undefined') ? 'na' : fqp; 2124 var fqcmp = (typeof fqcmp === 'undefined') ? 'na' : fqcmp; 2125 2126 var requestPacket = { 2127 'mm2_cookieA': pgjs.getSessionId(), 2128 'mm2_cookieB': mm2_cookieB || '', 2129 'packet_type': 'request_packet', 2130 'event_type': 'request', 2131 'publisher': pgjs.getPublisherDomain() || 'na', 2132 'timestamp': pgjs.startTime || '' 2133 }; 2134 var data = { 2135 'mtq' : window.mtq ? window.mtq :'na', //forensiq data 2136 'ftq' : window.forensiq_browser ? window.forensiq_browser :'na', 2137 'fqa' : fqa, 2138 'fqp' : fqp, 2139 'fqcmp' : fqcmp,
2140 'email': pgjs.getUserEmail(), 2141 'ip_address': pgjs.cookie('ip_address') || '', 2142 'country': pgjs.cookie('country') || '', 2143 'region': pgjs.cookie('region') || '', 2144 'width': window.screen.width || '', 2145 'height': window.screen.height || '', 2146 'available_width': window.screen.availWidth || '', 2147 'available_height': window.screen.availHeight || '', 2148 'current_url': window.location.href || '', 2149 'referrer': document.referrer || '', 2150 'web_port': window.location.port || '', 2151 'language': window.navigator.language || '', 2152 'color_depth': screen.colorDepth || '', 2153 'cpu_cores': window.navigator.hardwareConcurrency || '', 2154 'ram_size': window.navigator.deviceMemory || '', 2155 'history_count': window.history.length || '', 2156 'cookies_enabled': window.navigator.cookieEnabled ? true : false, 2157 'platform': window.navigator.platform || '', 2158 'gd_vendor': (debugInfo && gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL)) || '', 2159 'gd_renderer': (debugInfo && gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL)) || '', 2160 'gl_renderer': (gl && gl.getParameter(gl.RENDERER)) || '', 2161 'gl_vendor': (gl && gl.getParameter(gl.VENDOR)) || '', 2162 'user_agent': navigator.userAgent || navigator.vendor || window.opera || '', 2163 'bom_performance_count': bom_performance_count, 2164 'all_mime_types': mime_type_set.join() || '', 2165 'installed_plugins': installed_plugins.join() || '', 2166 }; 2167 requestPacket.data = data; 2168 pgjs.trafficEvents.addPacket(requestPacket); 2169 pgjs.sendPacketData(pgjs.trafficEvents.getPackets(), true); 2170 pgjs.trafficEvents.cleanEventData(); 2171}; 2172 2173pgjs.postGdprConsent = function() { 2174 pgjs.log('checking whether to run adblock detection'); 2175 if ((pgjs.getPublisher().adBlockToGaSampling > Math.floor(Math.random() * 100)) && pgjs.getGoogleAnalyticsVersion()) { 2176 if (pgjs.visitorHasAdBlock()) { 2177 pgjs.log('adblock is enabled'); 2178 var action = 'adblocked'; 2179 } else { 2180 pgjs.log('adblock is disabled'); 2181 var action = 'not adblocked'; 2182 } 2183 if (pgjs.getGoogleAnalyticsVersion == 'ga') { 2184 ga('send', 'event', CONST_ADBLOCK_CATEGORY, action, window.location.pathname); 2185 } else if (pgjs.getGoogleAnalyticsVersion == 'trackEvent') { 2186 trackEvent(CONST_ADBLOCK_CATEGORY, action, window.location.pathname); 2187 } else if (pgjs.getGoogleAnalyticsVersion == 'gaq') { 2188 _gaq.push(['_trackEvent', CONST_ADBLOCK_CATEGORY, action, window.location.pathname]); 2189 } 2190 } 2191 if (pgjs.hb) { 2192 pgjs.loadJS(pgjs.hb); 2193 } 2194 if(typeof pgjs.gdprAnalytics.postGdprData === 'undefined') { 2195 pgjs.gdprAnalytics.postGdprData = (Math.floor(Math.random() * 1000) == 1); 2196 }; 2197 if(pgjs.gdprAnalytics.postGdprData) { 2198 pgjs.gdprAnalytics.ttl = pgjs.gdprAnalytics.ttl || Math.floor((Date.now() / 1000 + 60 * 60 * 24 * 3)); 2199 pgjs.sendDynamoPacket(); 2200 }; 2201 //Send request data and add listners only for famefocus 2202 if (pgjs.getPublisherDomain() === "famefocus" && !!window.forensiq_browser){ 2203 window.pgjs.sendRequestData(); 2204 window.addEventListener("load", pgjs.initTrafficCopListners); 2205 pgjs.log("Request data sent and listners added","TraffiCop") 2206 } 2207} 2208 2209pgjs.log('checking gdpr status[' + pgjs.gdpr.getStatus() + ']'); 2210if (typeof ezConsentCategories == 'object' && typeof __ezconsent == 'object') { 2211 pgjs.log('ignoring gpdr and pghb because we found the ezoic CMP', 'gdpr'); 2212} else if (pgjs.get('pg_gdpr') == 'reset-cookies') { 2213 pgjs.log('resetting cookies', 'gdpr'); 2214 pgjs.deleteCookie('gdpr'); 2215 pgjs.deleteCookie('consentId'); 2216 pgjs.log('redirecting'); 2217 window.location.assign(window.location.href.replace('?pg_gdpr=reset-cookie
2217s', '?').replace('&pg_gdpr=reset-cookies', '&')); 2218} else if (pgjs.get('pg_gdpr') == 'popup') { 2219 pgjs.log('forcing popup', 'gdpr'); 2220 pgjs.gdpr.requestConsentOnDomReady(); 2221} else if ((pgjs.gdpr.getStatus() == 'not-eu') && (pgjs.get('pg_gdpr') != 'emulate-eu')) { 2222 pgjs.log('user is outside europe, skipping popup', 'gdpr'); 2223 pgjs.gdprAnalytics.popup_status ='suppressed_not_eu'; 2224 pgjs.publisherCookieWrapper(); 2225 pgjs.postGdprConsent(); 2226} else if (pgjs.gdpr.getStatus() == 'consented') { 2227 pgjs.log('user has consented, skipping popup', 'gdpr'); 2228 pgjs.gdprAnalytics.popup_status ='suppressed_consented'; 2229 pgjs.publisherCookieWrapper(); 2230 pgjs.postGdprConsent(); 2231} else { 2232 // Posting GDPR data on every 1k pageviews 2233 pgjs.gdprAnalytics.postGdprData = (Math.floor(Math.random() * 1000) == 1); 2234 if(pgjs.gdprAnalytics.postGdprData) { 2235 pgjs.gdprAnalytics.popup_status ='popup_shown'; 2236 pgjs.gdprAnalytics.ttl = Math.floor((Date.now() / 1000 + 60 * 60 * 24 * 3)); 2237 pgjs.sendDynamoPacket(); 2238 }; 2239 pgjs.gdpr.requestConsentOnDomReady(); 2240}; 2241 2242//Handle mouse move event 2243pgjs.mouseMoveHandler = function(event) { 2244 if (!pgjs.mouseTracked) { 2245 return; 2246 } 2247 pgjs.mouseTracked = false; 2248 pgjs.trafficEvents.incrementMouseCounter(); 2249 pgjs.trafficEvents.setMouseX(event.clientX || event.offsetX || ''); 2250 pgjs.trafficEvents.setMouseY(event.clientY || event.offsetY || ''); 2251 2252 // if (pgjs.trafficEvents.getMouseCounter() > pgjs.trafficEvents.getMaxAllowedPackets()) { 2253 // return; 2254 // } 2255 2256 if (Math.abs(pgjs.trafficEvents.getMouseX() - pgjs.trafficEvents.getPrevMouseX()) > 25 || Math.abs(pgjs.trafficEvents.getMouseY() - 2257 pgjs.trafficEvents.getPrevMouseY()) > 25) { 2258 var scrollY = window.pageYOffset >= 0 ? window.pageYOffset : '0'; 2259 var scrollX = window.pageXOffset >= 0 ? window.pageXOffset : '0'; 2260 var timestamp = new Date().getTime(); 2261 var data = { 2262 'mouseX': pgjs.trafficEvents.getMouseX() || '', 2263 'mouseY': pgjs.trafficEvents.getMouseY() || '', 2264 'scrollX': scrollX, 2265 'scrollY': scrollY 2266 }; 2267 pgjs.createEventPacket(data, 'mouse_move', timestamp); 2268 } 2269 pgjs.trafficEvents.setPrevMouseY(pgjs.trafficEvents.getMouseY()); 2270 pgjs.trafficEvents.setPrevMouseX(pgjs.trafficEvents.getMouseX()); 2271} 2272 2273//handle mouse click event 2274pgjs.mouseClickHandler = function (event) { 2275 // if (pgjs.trafficEvents.getMouseCounter2() > pgjs.trafficEvents.getMaxAllowedPackets2()) { 2276 // return; 2277 // } 2278 var scrollY = window.pageYOffset >= 0 ? window.pageYOffset : '0'; 2279 var scrollX = window.pageXOffset >= 0 ? window.pageXOffset : '0'; 2280 pgjs.trafficEvents.setMouseX(event.clientX || event.offsetX || ''); 2281 pgjs.trafficEvents.setMouseY(event.clientY || event.offsetY || ''); 2282 var timestamp = new Date().getTime(); 2283 var data = { 2284 'node_clicked': event.target.nodeName || '', 2285 'mouseX': pgjs.trafficEvents.getMouseX() || '', 2286 'mouseY': pgjs.trafficEvents.getMouseY() || '', 2287 'scrollX': scrollX, 2288 'scrollY': scrollY 2289 }; 2290 pgjs.createEventPacket(data, 'mouse_click', timestamp); 2291} 2292 2293//handle mouse double click event 2294pgjs.mouseDoubleClick = function (event) { 2295 var scrollY = window.pageYOffset >= 0 ? window.pageYOffset : '0'; 2296 var scrollX = window.pageXOffset >= 0 ? window.pageXOffset : '0'; 2297 pgjs.trafficEvents.setMouseX(event.clientX || event.offsetX || ''); 2298 pgjs.trafficEvents.setMouseY(event.clientY || event.offsetY || ''); 2299 var timestamp = new Date().getTime(); 2300 var data = { 2301 'node_clicked': event.target.nodeName || '', 2302 'mouseX': pgjs.trafficEvents.getMouseX() || '', 2303 'mouseY': pgjs.trafficEvents.getMouseY() || '', 2304 'scrollX': scrollX, 2305 'scrollY': scrollY 2306 }; 2307 pgjs.createEventPacket(data, 'mouse_dbl_click', timestamp); 2308} 2309 2310//Keypress event handler 2311pgjs.keyPressHandler = function (event) { 2312 //Limit down total resize packets 2313 // if (pgjs.trafficEvents.getKeypressCounter() > (pgjs.trafficEvents.getMaxAllowedPackets2())) { 2314 // return; 2315 // } 2316 pgjs.trafficEvents.incrementKeypressCounter(); 2317 2318 var scrollY = window.pageYOffset >= 0 ? window.pageYOffset : '0'; 2319 var scrollX = window.pageXOffset >= 0 ? window.pageXOffset : '0'; 2320 var timestamp = new Date().getTime(); 2321 var data = { 2322 'keypressed': event.key || '', 2323 'mouseX': pgjs.trafficEvents.getMouseX() || '', 2324 'mouseY': pgjs.trafficEvents.getMouseY() || '', 2325 'scrollX': scrollX, 2326 'scrollY': scrollY 2327 }; 2328 pgjs.createEventPacket(data, 'keypress', timestamp); 2329} 2330 2331//Scroll event on page 2332pgjs.onScrollHandler = function (event) {
2333 // if (pgjs.trafficEvents.getScrollCounter() > pgjs.trafficEvents.getMaxAllowedPackets2()) { 2334 // return; 2335 // } 2336 pgjs.trafficEvents.incrementScrollCounter(); 2337 if (!pgjs.scrollTracked) { 2338 pgjs.scrollTracked = true; 2339 var scrollY = window.pageYOffset >= 0 ? window.pageYOffset : '0'; 2340 var scrollX = window.pageXOffset >= 0 ? window.pageXOffset : '0'; 2341 var timestamp = new Date().getTime(); 2342 var data = { 2343 'mouseX': pgjs.trafficEvents.getMouseX() || '', 2344 'mouseY': pgjs.trafficEvents.getMouseY() || '', 2345 'scrollX': scrollX, 2346 'scrollY': scrollY 2347 }; 2348 pgjs.createEventPacket(data, 'scroll', timestamp); 2349 } 2350} 2351 2352pgjs.onResizeHandler = function (event) { 2353 // if (pgjs.trafficEvents.getResizeCounter() > pgjs.trafficEvents.getMaxAllowedPackets2()) { 2354 // return; 2355 // } 2356 pgjs.trafficEvents.incrementResizeCounter(); 2357 2358 var scrollY = window.pageYOffset >= 0 ? window.pageYOffset : '0'; 2359 var scrollX = window.pageXOffset >= 0 ? window.pageXOffset : '0'; 2360 var timestamp = new Date().getTime(); 2361 var data = { 2362 'mouseX': pgjs.trafficEvents.getMouseX() || '', 2363 'mouseY': pgjs.trafficEvents.getMouseY() || '', 2364 'scrollX': scrollX, 2365 'scrollY': scrollY 2366 }; 2367 pgjs.createEventPacket(data, 'screen_resize', timestamp); 2368} 2369 2370pgjs.touchEvent1 = function (event) { 2371 // if (pgjs.trafficEvents.getTouchCounter1() > pgjs.trafficEvents.getMaxAllowedPackets2()) { 2372 // return; 2373 // } 2374 var scrollY = window.pageYOffset >= 0 ? window.pageYOffset : '0'; 2375 var scrollX = window.pageXOffset >= 0 ? window.pageXOffset : '0'; 2376 var timestamp = new Date().getTime(); 2377 var data = { 2378 'mouseX': pgjs.trafficEvents.getMouseX() || '', 2379 'mouseY': pgjs.trafficEvents.getMouseY() || '', 2380 'scrollX': scrollX, 2381 'scrollY': scrollY 2382 }; 2383 pgjs.createEventPacket(data, 'touch_event', timestamp); 2384} 2385 2386pgjs.touchEvent2 = function (event) { 2387 if (!pgjs.touchTracked) { 2388 return; 2389 } 2390 pgjs.touchTracked = false; 2391 // if (pgjs.trafficEvents.getTouchCounter2() > pgjs.trafficEvents.getMaxAllowedPackets()) { 2392 // return; 2393 // } 2394 var scrollY = window.pageYOffset >= 0 ? window.pageYOffset : '0'; 2395 var scrollX = window.pageXOffset >= 0 ? window.pageXOffset : '0'; 2396 var timestamp = new Date().getTime(); 2397 var data = { 2398 'mouseX': pgjs.trafficEvents.getMouseX() || '', 2399 'mouseY': pgjs.trafficEvents.getMouseY() || '', 2400 'scrollX': scrollX, 2401 'scrollY': scrollY 2402 }; 2403 pgjs.createEventPacket(data, 'touch_move', timestamp); 2404} 2405 2406//OnUnload handler using sync call to send packet data 2407pgjs.onUnloadHandler = function (event) { 2408 if (pgjs.onUnloadCheck === false) { 2409 pgjs.onUnloadCheck=true; 2410 var scrollY = window.pageYOffset >= 0 ? window.pageYOffset : '0'; 2411 var scrollX = window.pageXOffset >= 0 ? window.pageXOffset : '0'; 2412 var timestamp = new Date().getTime(); 2413 var data = { 2414 'startTime': pgjs.startTime, 2415 'mouseX': pgjs.trafficEvents.getMouseX() || '', 2416 'mouseY': pgjs.trafficEvents.getMouseY() || '', 2417 'scrollX': scrollX, 2418 'scrollY': scrollY 2419 }; 2420 pgjs.createEventPacket(data, 'window_onunload', timestamp); 2421 pgjs.sendPacketData(pgjs.trafficEvents.getPackets(), false); 2422 } 2423} 2424 2425//Send event packet data | quickfix 2426pgjs.sendEventPacket = function() { 2427 pgjs.trafficEvents.incrementEventCounter(); 2428 if (pgjs.trafficEvents.getEventCounter() == pgjs.trafficEvents.getMaxEvents()) { 2429 clearInterval(pgjs.trafficEvents.getEventInterval()); 2430 pgjs.trafficEvents.setEventInterval(window.setInterval(pgjs.sendEventPacket, 5000)); 2431 } 2432 if(pgjs.trafficEvents.getEventCounter() > 10) { 2433 clearInterval(pgjs.trafficEvents.getEventInterval()); 2434 pgjs.removeEventListeners(); 2435 return; 2436 } else if (pgjs.trafficEvents.getPackets().length > 0) { 2437 pgjs.sendPacketData(pgjs.trafficEvents.getPackets(), true); 2438 } 2439 pgjs.trafficEvents.cleanEventData(); 2440} 2441 2442//Remove all event handlers 2443pgjs.removeEventListeners = function() { 2444 window.removeEventListener('mousemove', pgjs.mouseMoveHandler, false); 2445 window.removeEventListener('click', pgjs.mouseClickHandler, false); 2446 window.removeEventListener('dblclick', pgjs.mouseDoubleClick, false); 2447 window.removeEventListener('scroll', pgjs.onScrollHandler, false); 2448 window.removeEventListener('resize', pgjs.onResizeHandler, false); 2449 document.body.removeEventListener('keypress', pgjs.keyPressHandler, false); 2450 document.body.removeEventListener('touchstart', pgjs.touchEvent1, false); 2451 document.body.removeEventListener('touchmove', pgjs.touchEvent2, false); 2452}
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.