{"version":3,"file":"wpm-public.p1.min.js","mappings":"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CA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,sBACA,wBACA,wBACA,mBACA,mBACA,kBACA,iBACA,mBACA,oBACA,oBACA,mBACA,kBACA,oBACA,kBACA,mBACA,mBACA,mBACA,iBACA,mBACA,iBACA,iBACA,iBACA,kBACA,kBACA,oBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,kBACA,kBACA,iBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBAGgB,CAChB,iBACA,kBACA,kBACA,iBACA,iBACA,iBACA,kBACA,kBACA,kBACA,kBACA,gBACA,kBACA,gBACA,gBACA,kBACA,kBACA,kBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,kBACA,iBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,gBACA,kBACA,kBACA,kBACA,kBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,kBACA,iBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,mBACA,mBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,kBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,iBACA,iBACA,iBACA,kBACA,iBACA,mBACA,iBACA,sBACA,sBACA,mBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,iBACA,iBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,mBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,iBACA,iBACA,mBACA,mBACA,mBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,sBACA,sBACA,sBACA,mBACA,mBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,mBACA,mBACA,sBACA,sBACA,sBACA,sBACA,oBACA,mBACA,oBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,oBACA,oBACA,oBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,oBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,oBACA,yBACA,kBAGe,CACf,kBACA,kBACA,mBAGY,CACZ,iBACA,iBACA,iBACA,iBACA,iBACA,kBACA,iBACA,kBACA,mBACA,kBACA,qBACA,kBACA,kBACA,mBACA,mBACA,kBACA,mBACA,iBACA,mBACA,iBACA,iBACA,iBACA,iBACA,iBACA,kBAGiB,CACjB,gBACA,gBACA,gBACA,gBACA,iBACA,iBACA,iBACA,mBAGc,CACd,eACA,iBACA,iBAGa,CACb,kBACA,kBAGc,CACd,iBACA,eAGa,CACb,iBACA,kBACA,mBACA,kBACA,kBACA,kBACA,gBACA,gBACA,gBACA,kBACA,mBACA,kBACA,kBACA,oBACA,oBACA,kBACA,mBACA,mBACA,mBACA,mBACA,iBACA,kBACA,mBACA,mBACA,mBAGkB,CAClB,gBACA,eACA,gBACA,cACA,eACA,gBACA,eACA,gBACA,gBACA,eACA,gBACA,iBAGa,CACb,iBACA,eACA,iBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,iBACA,iBACA,iBACA,iBACA,gBACA,cACA,eACA,eACA,eACA,eACA,eACA,gBACA,eACA,gBACA,kBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,iBACA,iBACA,mBACA,kBAGc,CACd,iBACA,gBACA,kBACA,gBACA,gBACA,gBACA,gBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,oBACA,kBACA,kBACA,iBACA,kBACA,iBACA,mBACA,qBACA,iBACA,kBACA,mBACA,mBACA,mBACA,mBACA,cACA,eACA,iBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,iBACA,gBACA,iBACA,kBACA,kBACA,iBACA,iBACA,iBACA,iBACA,qBACA,qBACA,qBACA,qBAGa,CACb,mBACA,mBACA,mBACA,gBACA,gBACA,iBAGc,CACd,oBACA,qBAyBAm2B,EACA,CAGF,CAn2CA,CAm2CCzoB,OAAOpB,IAAMoB,OAAOpB,KAAO,CAAC,EAAGR,O,WCz0CjC0oB,GAAGC,MAAM6B,UACR,iDACA,iCACAxnB,IAKCxC,IAAIka,iBAAiB1X,EAAKiD,QAAQ3C,GAAI,EAAE,IAO1ColB,GAAGC,MAAM6B,UACR,0DACA,iCACAxnB,IAGKA,EAAK0D,SAAW1D,EAAKiD,QAAQS,UAChClG,IAAIka,iBAAiB1X,EAAKiD,QAAQ3C,GAAIN,EAAK0D,SAAW1D,EAAKiD,QAAQS,UAGhE1D,EAAK0D,SAAW1D,EAAKiD,QAAQS,UAChClG,IAAIoX,sBAAsB5U,EAAKiD,QAAQ3C,GAAIN,EAAKiD,QAAQS,SAAW1D,EAAK0D,SACzE,IAOFgiB,GAAGC,MAAM6B,UACR,oDACA,iCACAxnB,IAECxC,IAAIoX,sBAAsB5U,EAAKiD,QAAQ3C,GAAIN,EAAK0D,SAAS,IAoB3DgiB,GAAGC,MAAM6B,UACR,mDACA,iCACA,KAECxqB,OAAOC,UAAU2H,QAAQ,gBAAiB,CAAC,EAAE,G,GC7F3C6iB,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBluB,IAAjBmuB,EACH,OAAOA,EAAat7B,QAGrB,IAAIqG,EAAS80B,EAAyBE,GAAY,CAGjDr7B,QAAS,CAAC,GAOX,OAHAu7B,EAAoBF,GAAUlxB,KAAK9D,EAAOrG,QAASqG,EAAQA,EAAOrG,QAASo7B,GAGpE/0B,EAAOrG,OACf,CCrBAo7B,EAAoBttB,EAAI,CAAC9N,EAASw7B,KACjC,IAAI,IAAI5iB,KAAO4iB,EACXJ,EAAoB/a,EAAEmb,EAAY5iB,KAASwiB,EAAoB/a,EAAErgB,EAAS4Y,IAC5EnX,OAAOmK,eAAe5L,EAAS4Y,EAAK,CAAElX,YAAY,EAAMC,IAAK65B,EAAW5iB,IAE1E,ECNDwiB,EAAoBK,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOp1B,MAAQ,IAAIq1B,SAAS,cAAb,EAChB,CAAE,MAAO9oB,GACR,GAAsB,iBAAXP,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB8oB,EAAoB/a,EAAI,CAAC8Z,EAAKyB,IAAUn6B,OAAO8F,UAAUs0B,eAAe1xB,KAAKgwB,EAAKyB,GCClFR,EAAoBza,EAAK3gB,IACH,oBAAX87B,QAA0BA,OAAOC,aAC1Ct6B,OAAOmK,eAAe5L,EAAS87B,OAAOC,YAAa,CAAE5yB,MAAO,WAE7D1H,OAAOmK,eAAe5L,EAAS,aAAc,CAAEmJ,OAAO,GAAO,ECDjDkK,WAEZtT,EAAQ,KACRA,EAAQ,WAGFmR,IAAIynB,qBAGJznB,IAAI8nB,0BAMVj5B,EAAQ,KAGR2Q,OAAOC,UAAUC,GAAG,aAAa,KAChC7Q,EAAQ,IAAiC,IAI1CA,EAAQ,KAERmR,IAAIooB,uBAGJpoB,IAAIqmB,oBAIArmB,IAAIimB,8BAGRp3B,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KAuBR4Q,SAAS0V,cAAc,IAAIC,MAAM,qBAGjC3V,SAAS0V,cAAc,IAAIC,MAAM,kBAG3BpV,IAAI8kB,aACV9kB,IAAI4mB,uBAGJ5mB,IAAI4P,sBAAqB,EAI1Bkb,E","sources":["webpack://Pixel-Manager-for-WooCommerce/../../src/index.ts","webpack://Pixel-Manager-for-WooCommerce/../../src/ipRange.ts","webpack://Pixel-Manager-for-WooCommerce/../../src/ipv4.ts","webpack://Pixel-Manager-for-WooCommerce/../../src/ipv6.ts","webpack://Pixel-Manager-for-WooCommerce/../../src/util.ts","webpack://Pixel-Manager-for-WooCommerce/../node_modules/ipaddr.js/lib/ipaddr.js","webpack://Pixel-Manager-for-WooCommerce/../node_modules/ip6/ip6.js","webpack://Pixel-Manager-for-WooCommerce/../src/range-check.ts","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/facebook/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/facebook/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/facebook/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/ads/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/ads/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/ads/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/analytics/ga4/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/analytics/ga4/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/analytics/ga4/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/analytics/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/base/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/base/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/base/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/optimize/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/optimize/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/google/optimize/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/hotjar/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/hotjar/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/hotjar/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/version.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/wpm/cookie_consent.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/wpm/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/wpm/event_listeners_on_ready.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/wpm/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/wpm/functions_loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/wpm/functions_main.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/wpm/ip_check.js","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/wpm/wc_hooks.js","webpack://Pixel-Manager-for-WooCommerce/webpack/bootstrap","webpack://Pixel-Manager-for-WooCommerce/webpack/runtime/define property getters","webpack://Pixel-Manager-for-WooCommerce/webpack/runtime/global","webpack://Pixel-Manager-for-WooCommerce/webpack/runtime/hasOwnProperty shorthand","webpack://Pixel-Manager-for-WooCommerce/webpack/runtime/make namespace object","webpack://Pixel-Manager-for-WooCommerce/./src/js-src/public/main.js"],"sourcesContent":[null,null,null,null,null,"(function() {\n var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root, zoneIndex;\n\n ipaddr = {};\n\n root = this;\n\n if ((typeof module !== \"undefined\" && module !== null) && module.exports) {\n module.exports = ipaddr;\n } else {\n root['ipaddr'] = ipaddr;\n }\n\n matchCIDR = function(first, second, partSize, cidrBits) {\n var part, shift;\n if (first.length !== second.length) {\n throw new Error(\"ipaddr: cannot match CIDR for objects with different lengths\");\n }\n part = 0;\n while (cidrBits > 0) {\n shift = partSize - cidrBits;\n if (shift < 0) {\n shift = 0;\n }\n if (first[part] >> shift !== second[part] >> shift) {\n return false;\n }\n cidrBits -= partSize;\n part += 1;\n }\n return true;\n };\n\n ipaddr.subnetMatch = function(address, rangeList, defaultName) {\n var k, len, rangeName, rangeSubnets, subnet;\n if (defaultName == null) {\n defaultName = 'unicast';\n }\n for (rangeName in rangeList) {\n rangeSubnets = rangeList[rangeName];\n if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) {\n rangeSubnets = [rangeSubnets];\n }\n for (k = 0, len = rangeSubnets.length; k < len; k++) {\n subnet = rangeSubnets[k];\n if (address.kind() === subnet[0].kind()) {\n if (address.match.apply(address, subnet)) {\n return rangeName;\n }\n }\n }\n }\n return defaultName;\n };\n\n ipaddr.IPv4 = (function() {\n function IPv4(octets) {\n var k, len, octet;\n if (octets.length !== 4) {\n throw new Error(\"ipaddr: ipv4 octet count should be 4\");\n }\n for (k = 0, len = octets.length; k < len; k++) {\n octet = octets[k];\n if (!((0 <= octet && octet <= 255))) {\n throw new Error(\"ipaddr: ipv4 octet should fit in 8 bits\");\n }\n }\n this.octets = octets;\n }\n\n IPv4.prototype.kind = function() {\n return 'ipv4';\n };\n\n IPv4.prototype.toString = function() {\n return this.octets.join(\".\");\n };\n\n IPv4.prototype.toNormalizedString = function() {\n return this.toString();\n };\n\n IPv4.prototype.toByteArray = function() {\n return this.octets.slice(0);\n };\n\n IPv4.prototype.match = function(other, cidrRange) {\n var ref;\n if (cidrRange === void 0) {\n ref = other, other = ref[0], cidrRange = ref[1];\n }\n if (other.kind() !== 'ipv4') {\n throw new Error(\"ipaddr: cannot match ipv4 address with non-ipv4 one\");\n }\n return matchCIDR(this.octets, other.octets, 8, cidrRange);\n };\n\n IPv4.prototype.SpecialRanges = {\n unspecified: [[new IPv4([0, 0, 0, 0]), 8]],\n broadcast: [[new IPv4([255, 255, 255, 255]), 32]],\n multicast: [[new IPv4([224, 0, 0, 0]), 4]],\n linkLocal: [[new IPv4([169, 254, 0, 0]), 16]],\n loopback: [[new IPv4([127, 0, 0, 0]), 8]],\n carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]],\n \"private\": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]],\n reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]]\n };\n\n IPv4.prototype.range = function() {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n IPv4.prototype.toIPv4MappedAddress = function() {\n return ipaddr.IPv6.parse(\"::ffff:\" + (this.toString()));\n };\n\n IPv4.prototype.prefixLengthFromSubnetMask = function() {\n var cidr, i, k, octet, stop, zeros, zerotable;\n zerotable = {\n 0: 8,\n 128: 7,\n 192: 6,\n 224: 5,\n 240: 4,\n 248: 3,\n 252: 2,\n 254: 1,\n 255: 0\n };\n cidr = 0;\n stop = false;\n for (i = k = 3; k >= 0; i = k += -1) {\n octet = this.octets[i];\n if (octet in zerotable) {\n zeros = zerotable[octet];\n if (stop && zeros !== 0) {\n return null;\n }\n if (zeros !== 8) {\n stop = true;\n }\n cidr += zeros;\n } else {\n return null;\n }\n }\n return 32 - cidr;\n };\n\n return IPv4;\n\n })();\n\n ipv4Part = \"(0?\\\\d+|0x[a-f0-9]+)\";\n\n ipv4Regexes = {\n fourOctet: new RegExp(\"^\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"$\", 'i'),\n longValue: new RegExp(\"^\" + ipv4Part + \"$\", 'i')\n };\n\n ipaddr.IPv4.parser = function(string) {\n var match, parseIntAuto, part, shift, value;\n parseIntAuto = function(string) {\n if (string[0] === \"0\" && string[1] !== \"x\") {\n return parseInt(string, 8);\n } else {\n return parseInt(string);\n }\n };\n if (match = string.match(ipv4Regexes.fourOctet)) {\n return (function() {\n var k, len, ref, results;\n ref = match.slice(1, 6);\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(parseIntAuto(part));\n }\n return results;\n })();\n } else if (match = string.match(ipv4Regexes.longValue)) {\n value = parseIntAuto(match[1]);\n if (value > 0xffffffff || value < 0) {\n throw new Error(\"ipaddr: address outside defined range\");\n }\n return ((function() {\n var k, results;\n results = [];\n for (shift = k = 0; k <= 24; shift = k += 8) {\n results.push((value >> shift) & 0xff);\n }\n return results;\n })()).reverse();\n } else {\n return null;\n }\n };\n\n ipaddr.IPv6 = (function() {\n function IPv6(parts, zoneId) {\n var i, k, l, len, part, ref;\n if (parts.length === 16) {\n this.parts = [];\n for (i = k = 0; k <= 14; i = k += 2) {\n this.parts.push((parts[i] << 8) | parts[i + 1]);\n }\n } else if (parts.length === 8) {\n this.parts = parts;\n } else {\n throw new Error(\"ipaddr: ipv6 part count should be 8 or 16\");\n }\n ref = this.parts;\n for (l = 0, len = ref.length; l < len; l++) {\n part = ref[l];\n if (!((0 <= part && part <= 0xffff))) {\n throw new Error(\"ipaddr: ipv6 part should fit in 16 bits\");\n }\n }\n if (zoneId) {\n this.zoneId = zoneId;\n }\n }\n\n IPv6.prototype.kind = function() {\n return 'ipv6';\n };\n\n IPv6.prototype.toString = function() {\n return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/, '::');\n };\n\n IPv6.prototype.toRFC5952String = function() {\n var bestMatchIndex, bestMatchLength, match, regex, string;\n regex = /((^|:)(0(:|$)){2,})/g;\n string = this.toNormalizedString();\n bestMatchIndex = 0;\n bestMatchLength = -1;\n while ((match = regex.exec(string))) {\n if (match[0].length > bestMatchLength) {\n bestMatchIndex = match.index;\n bestMatchLength = match[0].length;\n }\n }\n if (bestMatchLength < 0) {\n return string;\n }\n return string.substring(0, bestMatchIndex) + '::' + string.substring(bestMatchIndex + bestMatchLength);\n };\n\n IPv6.prototype.toByteArray = function() {\n var bytes, k, len, part, ref;\n bytes = [];\n ref = this.parts;\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n bytes.push(part >> 8);\n bytes.push(part & 0xff);\n }\n return bytes;\n };\n\n IPv6.prototype.toNormalizedString = function() {\n var addr, part, suffix;\n addr = ((function() {\n var k, len, ref, results;\n ref = this.parts;\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(part.toString(16));\n }\n return results;\n }).call(this)).join(\":\");\n suffix = '';\n if (this.zoneId) {\n suffix = '%' + this.zoneId;\n }\n return addr + suffix;\n };\n\n IPv6.prototype.toFixedLengthString = function() {\n var addr, part, suffix;\n addr = ((function() {\n var k, len, ref, results;\n ref = this.parts;\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(part.toString(16).padStart(4, '0'));\n }\n return results;\n }).call(this)).join(\":\");\n suffix = '';\n if (this.zoneId) {\n suffix = '%' + this.zoneId;\n }\n return addr + suffix;\n };\n\n IPv6.prototype.match = function(other, cidrRange) {\n var ref;\n if (cidrRange === void 0) {\n ref = other, other = ref[0], cidrRange = ref[1];\n }\n if (other.kind() !== 'ipv6') {\n throw new Error(\"ipaddr: cannot match ipv6 address with non-ipv6 one\");\n }\n return matchCIDR(this.parts, other.parts, 16, cidrRange);\n };\n\n IPv6.prototype.SpecialRanges = {\n unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128],\n linkLocal: [new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10],\n multicast: [new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8],\n loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128],\n uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7],\n ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96],\n rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96],\n rfc6052: [new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96],\n '6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16],\n teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32],\n reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]]\n };\n\n IPv6.prototype.range = function() {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n IPv6.prototype.isIPv4MappedAddress = function() {\n return this.range() === 'ipv4Mapped';\n };\n\n IPv6.prototype.toIPv4Address = function() {\n var high, low, ref;\n if (!this.isIPv4MappedAddress()) {\n throw new Error(\"ipaddr: trying to convert a generic ipv6 address to ipv4\");\n }\n ref = this.parts.slice(-2), high = ref[0], low = ref[1];\n return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]);\n };\n\n IPv6.prototype.prefixLengthFromSubnetMask = function() {\n var cidr, i, k, part, stop, zeros, zerotable;\n zerotable = {\n 0: 16,\n 32768: 15,\n 49152: 14,\n 57344: 13,\n 61440: 12,\n 63488: 11,\n 64512: 10,\n 65024: 9,\n 65280: 8,\n 65408: 7,\n 65472: 6,\n 65504: 5,\n 65520: 4,\n 65528: 3,\n 65532: 2,\n 65534: 1,\n 65535: 0\n };\n cidr = 0;\n stop = false;\n for (i = k = 7; k >= 0; i = k += -1) {\n part = this.parts[i];\n if (part in zerotable) {\n zeros = zerotable[part];\n if (stop && zeros !== 0) {\n return null;\n }\n if (zeros !== 16) {\n stop = true;\n }\n cidr += zeros;\n } else {\n return null;\n }\n }\n return 128 - cidr;\n };\n\n return IPv6;\n\n })();\n\n ipv6Part = \"(?:[0-9a-f]+::?)+\";\n\n zoneIndex = \"%[0-9a-z]{1,}\";\n\n ipv6Regexes = {\n zoneIndex: new RegExp(zoneIndex, 'i'),\n \"native\": new RegExp(\"^(::)?(\" + ipv6Part + \")?([0-9a-f]+)?(::)?(\" + zoneIndex + \")?$\", 'i'),\n transitional: new RegExp((\"^((?:\" + ipv6Part + \")|(?:::)(?:\" + ipv6Part + \")?)\") + (ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part) + (\"(\" + zoneIndex + \")?$\"), 'i')\n };\n\n expandIPv6 = function(string, parts) {\n var colonCount, lastColon, part, replacement, replacementCount, zoneId;\n if (string.indexOf('::') !== string.lastIndexOf('::')) {\n return null;\n }\n zoneId = (string.match(ipv6Regexes['zoneIndex']) || [])[0];\n if (zoneId) {\n zoneId = zoneId.substring(1);\n string = string.replace(/%.+$/, '');\n }\n colonCount = 0;\n lastColon = -1;\n while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) {\n colonCount++;\n }\n if (string.substr(0, 2) === '::') {\n colonCount--;\n }\n if (string.substr(-2, 2) === '::') {\n colonCount--;\n }\n if (colonCount > parts) {\n return null;\n }\n replacementCount = parts - colonCount;\n replacement = ':';\n while (replacementCount--) {\n replacement += '0:';\n }\n string = string.replace('::', replacement);\n if (string[0] === ':') {\n string = string.slice(1);\n }\n if (string[string.length - 1] === ':') {\n string = string.slice(0, -1);\n }\n parts = (function() {\n var k, len, ref, results;\n ref = string.split(\":\");\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(parseInt(part, 16));\n }\n return results;\n })();\n return {\n parts: parts,\n zoneId: zoneId\n };\n };\n\n ipaddr.IPv6.parser = function(string) {\n var addr, k, len, match, octet, octets, zoneId;\n if (ipv6Regexes['native'].test(string)) {\n return expandIPv6(string, 8);\n } else if (match = string.match(ipv6Regexes['transitional'])) {\n zoneId = match[6] || '';\n addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6);\n if (addr.parts) {\n octets = [parseInt(match[2]), parseInt(match[3]), parseInt(match[4]), parseInt(match[5])];\n for (k = 0, len = octets.length; k < len; k++) {\n octet = octets[k];\n if (!((0 <= octet && octet <= 255))) {\n return null;\n }\n }\n addr.parts.push(octets[0] << 8 | octets[1]);\n addr.parts.push(octets[2] << 8 | octets[3]);\n return {\n parts: addr.parts,\n zoneId: addr.zoneId\n };\n }\n }\n return null;\n };\n\n ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string) {\n return this.parser(string) !== null;\n };\n\n ipaddr.IPv4.isValid = function(string) {\n var e;\n try {\n new this(this.parser(string));\n return true;\n } catch (error1) {\n e = error1;\n return false;\n }\n };\n\n ipaddr.IPv4.isValidFourPartDecimal = function(string) {\n if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){3}$/)) {\n return true;\n } else {\n return false;\n }\n };\n\n ipaddr.IPv6.isValid = function(string) {\n var addr, e;\n if (typeof string === \"string\" && string.indexOf(\":\") === -1) {\n return false;\n }\n try {\n addr = this.parser(string);\n new this(addr.parts, addr.zoneId);\n return true;\n } catch (error1) {\n e = error1;\n return false;\n }\n };\n\n ipaddr.IPv4.parse = function(string) {\n var parts;\n parts = this.parser(string);\n if (parts === null) {\n throw new Error(\"ipaddr: string is not formatted like ip address\");\n }\n return new this(parts);\n };\n\n ipaddr.IPv6.parse = function(string) {\n var addr;\n addr = this.parser(string);\n if (addr.parts === null) {\n throw new Error(\"ipaddr: string is not formatted like ip address\");\n }\n return new this(addr.parts, addr.zoneId);\n };\n\n ipaddr.IPv4.parseCIDR = function(string) {\n var maskLength, match, parsed;\n if (match = string.match(/^(.+)\\/(\\d+)$/)) {\n maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 32) {\n parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function() {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n throw new Error(\"ipaddr: string is not formatted like an IPv4 CIDR range\");\n };\n\n ipaddr.IPv4.subnetMaskFromPrefixLength = function(prefix) {\n var filledOctetCount, j, octets;\n prefix = parseInt(prefix);\n if (prefix < 0 || prefix > 32) {\n throw new Error('ipaddr: invalid IPv4 prefix length');\n }\n octets = [0, 0, 0, 0];\n j = 0;\n filledOctetCount = Math.floor(prefix / 8);\n while (j < filledOctetCount) {\n octets[j] = 255;\n j++;\n }\n if (filledOctetCount < 4) {\n octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8);\n }\n return new this(octets);\n };\n\n ipaddr.IPv4.broadcastAddressFromCIDR = function(string) {\n var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets;\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 4) {\n octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255);\n i++;\n }\n return new this(octets);\n } catch (error1) {\n error = error1;\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n ipaddr.IPv4.networkAddressFromCIDR = function(string) {\n var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets;\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 4) {\n octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10));\n i++;\n }\n return new this(octets);\n } catch (error1) {\n error = error1;\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n ipaddr.IPv6.parseCIDR = function(string) {\n var maskLength, match, parsed;\n if (match = string.match(/^(.+)\\/(\\d+)$/)) {\n maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 128) {\n parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function() {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n throw new Error(\"ipaddr: string is not formatted like an IPv6 CIDR range\");\n };\n\n ipaddr.isValid = function(string) {\n return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string);\n };\n\n ipaddr.parse = function(string) {\n if (ipaddr.IPv6.isValid(string)) {\n return ipaddr.IPv6.parse(string);\n } else if (ipaddr.IPv4.isValid(string)) {\n return ipaddr.IPv4.parse(string);\n } else {\n throw new Error(\"ipaddr: the address has neither IPv6 nor IPv4 format\");\n }\n };\n\n ipaddr.parseCIDR = function(string) {\n var e;\n try {\n return ipaddr.IPv6.parseCIDR(string);\n } catch (error1) {\n e = error1;\n try {\n return ipaddr.IPv4.parseCIDR(string);\n } catch (error1) {\n e = error1;\n throw new Error(\"ipaddr: the address has neither IPv6 nor IPv4 CIDR format\");\n }\n }\n };\n\n ipaddr.fromByteArray = function(bytes) {\n var length;\n length = bytes.length;\n if (length === 4) {\n return new ipaddr.IPv4(bytes);\n } else if (length === 16) {\n return new ipaddr.IPv6(bytes);\n } else {\n throw new Error(\"ipaddr: the binary input is neither an IPv6 nor IPv4 address\");\n }\n };\n\n ipaddr.process = function(string) {\n var addr;\n addr = this.parse(string);\n if (addr.kind() === 'ipv6' && addr.isIPv4MappedAddress()) {\n return addr.toIPv4Address();\n } else {\n return addr;\n }\n };\n\n}).call(this);\n","/**\n * Created by elgs on 3/5/16.\n */\nconst normalize = function (a) {\n if (!_validate(a)) {\n throw new Error('Invalid address: ' + a);\n }\n a = a.toLowerCase()\n\n const nh = a.split(/\\:\\:/g);\n if (nh.length > 2) {\n throw new Error('Invalid address: ' + a);\n }\n\n let sections = [];\n if (nh.length == 1) {\n // full mode\n sections = a.split(/\\:/g);\n if (sections.length !== 8) {\n throw new Error('Invalid address: ' + a);\n }\n } else if (nh.length == 2) {\n // compact mode\n const n = nh[0];\n const h = nh[1];\n const ns = n.split(/\\:/g);\n const hs = h.split(/\\:/g);\n for (let i in ns) {\n sections[i] = ns[i];\n }\n for (let i = hs.length; i > 0; --i) {\n sections[7 - (hs.length - i)] = hs[i - 1];\n }\n }\n for (let i = 0; i < 8; ++i) {\n if (sections[i] === undefined) {\n sections[i] = '0000';\n }\n sections[i] = _leftPad(sections[i], '0', 4);\n }\n return sections.join(':');\n};\n\nconst abbreviate = function (a) {\n if (!_validate(a)) {\n throw new Error('Invalid address: ' + a);\n }\n a = normalize(a);\n a = a.replace(/0000/g, 'g');\n a = a.replace(/\\:000/g, ':');\n a = a.replace(/\\:00/g, ':');\n a = a.replace(/\\:0/g, ':');\n a = a.replace(/g/g, '0');\n const sections = a.split(/\\:/g);\n let zPreviousFlag = false;\n let zeroStartIndex = -1;\n let zeroLength = 0;\n let zStartIndex = -1;\n let zLength = 0;\n for (let i = 0; i < 8; ++i) {\n const section = sections[i];\n let zFlag = (section === '0');\n if (zFlag && !zPreviousFlag) {\n zStartIndex = i;\n }\n if (!zFlag && zPreviousFlag) {\n zLength = i - zStartIndex;\n }\n if (zLength > 1 && zLength > zeroLength) {\n zeroStartIndex = zStartIndex;\n zeroLength = zLength;\n }\n zPreviousFlag = (section === '0');\n }\n if (zPreviousFlag) {\n zLength = 8 - zStartIndex;\n }\n if (zLength > 1 && zLength > zeroLength) {\n zeroStartIndex = zStartIndex;\n zeroLength = zLength;\n }\n //console.log(zeroStartIndex, zeroLength);\n //console.log(sections);\n if (zeroStartIndex >= 0 && zeroLength > 1) {\n sections.splice(zeroStartIndex, zeroLength, 'g');\n }\n //console.log(sections);\n a = sections.join(':');\n //console.log(a);\n a = a.replace(/\\:g\\:/g, '::');\n a = a.replace(/\\:g/g, '::');\n a = a.replace(/g\\:/g, '::');\n a = a.replace(/g/g, '::');\n //console.log(a);\n return a;\n};\n\n// Basic validation\nconst _validate = function (a) {\n return /^[a-f0-9\\\\:]+$/ig.test(a);\n};\n\nconst _leftPad = function (d, p, n) {\n const padding = p.repeat(n);\n if (d.length < padding.length) {\n d = padding.substring(0, padding.length - d.length) + d;\n }\n return d;\n};\n\nconst _hex2bin = function (hex) {\n return parseInt(hex, 16).toString(2)\n};\nconst _bin2hex = function (bin) {\n return parseInt(bin, 2).toString(16)\n};\n\nconst _addr2bin = function (addr) {\n const nAddr = normalize(addr);\n const sections = nAddr.split(\":\");\n let binAddr = '';\n for (const section of sections) {\n binAddr += _leftPad(_hex2bin(section), '0', 16);\n }\n return binAddr;\n};\n\nconst _bin2addr = function (bin) {\n const addr = [];\n for (let i = 0; i < 8; ++i) {\n const binPart = bin.substr(i * 16, 16);\n const hexSection = _leftPad(_bin2hex(binPart), '0', 4);\n addr.push(hexSection);\n }\n return addr.join(':');\n};\n\nconst divideSubnet = function (addr, mask0, mask1, limit, abbr) {\n if (!_validate(addr)) {\n throw new Error('Invalid address: ' + addr);\n }\n mask0 *= 1;\n mask1 *= 1;\n limit *= 1;\n mask1 = mask1 || 128;\n if (mask0 < 1 || mask1 < 1 || mask0 > 128 || mask1 > 128 || mask0 > mask1) {\n throw new Error('Invalid masks.');\n }\n const ret = [];\n const binAddr = _addr2bin(addr);\n const binNetPart = binAddr.substr(0, mask0);\n const binHostPart = '0'.repeat(128 - mask1);\n const numSubnets = Math.pow(2, mask1 - mask0);\n for (let i = 0; i < numSubnets; ++i) {\n if (!!limit && i >= limit) {\n break;\n }\n const binSubnet = _leftPad(i.toString(2), '0', mask1 - mask0);\n const binSubAddr = binNetPart + binSubnet + binHostPart;\n const hexAddr = _bin2addr(binSubAddr);\n if (!!abbr) {\n ret.push(abbreviate(hexAddr));\n } else {\n ret.push(hexAddr);\n }\n\n }\n // console.log(numSubnets);\n // console.log(binNetPart, binSubnetPart, binHostPart);\n // console.log(binNetPart.length, binSubnetPart.length, binHostPart.length);\n // console.log(ret.length);\n return ret;\n};\n\nconst range = function (addr, mask0, mask1, abbr) {\n if (!_validate(addr)) {\n throw new Error('Invalid address: ' + addr);\n }\n mask0 *= 1;\n mask1 *= 1;\n mask1 = mask1 || 128;\n if (mask0 < 1 || mask1 < 1 || mask0 > 128 || mask1 > 128 || mask0 > mask1) {\n throw new Error('Invalid masks.');\n }\n const binAddr = _addr2bin(addr);\n const binNetPart = binAddr.substr(0, mask0);\n const binHostPart = '0'.repeat(128 - mask1);\n const binStartAddr = binNetPart + '0'.repeat(mask1 - mask0) + binHostPart;\n const binEndAddr = binNetPart + '1'.repeat(mask1 - mask0) + binHostPart;\n if (!!abbr) {\n return {\n start: abbreviate(_bin2addr(binStartAddr)),\n end: abbreviate(_bin2addr(binEndAddr)),\n size: Math.pow(2, mask1 - mask0)\n };\n } else {\n return {\n start: _bin2addr(binStartAddr),\n end: _bin2addr(binEndAddr),\n size: Math.pow(2, mask1 - mask0)\n };\n }\n};\n\nconst randomSubnet = function (addr, mask0, mask1, limit, abbr) {\n if (!_validate(addr)) {\n throw new Error('Invalid address: ' + addr);\n }\n mask0 *= 1;\n mask1 *= 1;\n limit *= 1;\n mask1 = mask1 || 128;\n limit = limit || 1;\n if (mask0 < 1 || mask1 < 1 || mask0 > 128 || mask1 > 128 || mask0 > mask1) {\n throw new Error('Invalid masks.');\n }\n const ret = [];\n const binAddr = _addr2bin(addr);\n const binNetPart = binAddr.substr(0, mask0);\n const binHostPart = '0'.repeat(128 - mask1);\n const numSubnets = Math.pow(2, mask1 - mask0);\n for (let i = 0; i < numSubnets && i < limit; ++i) {\n // generate an binary string with length of mask1 - mask0\n let binSubnet = '';\n for (let j = 0; j < mask1 - mask0; ++j) {\n binSubnet += Math.floor(Math.random() * 2);\n }\n const binSubAddr = binNetPart + binSubnet + binHostPart;\n const hexAddr = _bin2addr(binSubAddr);\n if (!!abbr) {\n ret.push(abbreviate(hexAddr));\n } else {\n ret.push(hexAddr);\n }\n }\n // console.log(numSubnets);\n // console.log(binNetPart, binSubnetPart, binHostPart);\n // console.log(binNetPart.length, binSubnetPart.length, binHostPart.length);\n // console.log(ret.length);\n return ret;\n};\n\nconst ptr = function (addr, mask) {\n if (!_validate(addr)) {\n throw new Error('Invalid address: ' + addr);\n }\n mask *= 1;\n if (mask < 1 || mask > 128 || Math.floor(mask / 4) != mask / 4) {\n throw new Error('Invalid masks.');\n }\n const fullAddr = normalize(addr);\n const reverse = fullAddr.replace(/:/g, '').split('').reverse();\n return reverse.slice(0, (128 - mask) / 4).join('.');\n};\n\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n exports.normalize = normalize;\n exports.abbreviate = abbreviate;\n exports.divideSubnet = divideSubnet;\n exports.range = range;\n exports.randomSubnet = randomSubnet;\n exports.ptr = ptr;\n} else {\n window.normalize = normalize;\n window.abbreviate = abbreviate;\n window.divideSubnet = divideSubnet;\n window.range = range;\n window.randomSubnet = randomSubnet;\n window.ptr = ptr;\n}\n","import ipaddr from 'ipaddr.js';\n// @ts-ignore: Can't find a @types/ip6 package\nimport ip6 from 'ip6';\n\nexport function isIP(addr: string) {\n return ipaddr.isValid(addr);\n}\n\nexport function version(addr: string): number {\n try {\n const parse_addr = ipaddr.parse(addr);\n const kind = parse_addr.kind();\n\n if (kind === 'ipv4') {\n return 4; //IPv4\n } else if (kind === 'ipv6') {\n return 6; //IPv6\n } else {\n /* istanbul ignore next */\n return 0; //not 4 or 6\n }\n } catch (err) {\n return 0; //not 4 or 6\n }\n}\n\nexport function isV4(addr: string) {\n return version(addr) === 4;\n}\n\nexport function isV6(addr: string) {\n return version(addr) === 6;\n}\n\nexport function isRange(range: string) {\n try {\n const cidr = ipaddr.parseCIDR(range);\n return true;\n } catch (err) {\n return false;\n }\n}\n\nexport function inRange(addr: string, range: string | string[]) {\n if (typeof range === 'string') {\n if (range.indexOf('/') !== -1) {\n try {\n const range_data = range.split('/');\n\n const parse_addr = ipaddr.parse(addr);\n const parse_range = ipaddr.parse(range_data[0]);\n\n //@ts-ignore: It works.\n return parse_addr.match(parse_range, range_data[1]);\n } catch (err) {\n return false;\n }\n } else {\n addr = isV6(addr) ? ip6.normalize(addr) : addr; //v6 normalize addr\n range = isV6(range) ? ip6.normalize(range) : range; //v6 normalize range\n\n return isIP(range as string) && addr === range;\n }\n } else if (range && typeof range === 'object') {\n //list\n for (const check_range in range) {\n if (inRange(addr, range[check_range]) === true) {\n return true;\n }\n }\n return false;\n } else {\n return false;\n }\n}\n\nexport function storeIP(addr: string) {\n try {\n var parse_addr = ipaddr.parse(addr);\n var kind = parse_addr.kind();\n\n if (kind === 'ipv4') {\n //is a plain v4 address\n return addr;\n } else if (kind === 'ipv6') {\n //@ts-ignore: it exists!\n if (parse_addr.isIPv4MappedAddress()) {\n //convert v4 mapped to v6 addresses to a v4 in it's original format\n //@ts-ignore: it exists!\n return parse_addr.toIPv4Address().toString();\n } //is a v6, abbreviate it\n else {\n return ip6.abbreviate(addr);\n }\n } else {\n return null; //invalid IP address\n }\n } catch (err) {\n return null; //invalid IP address\n }\n}\n\n// searchIP is a aliases of storeIP\nexport { storeIP as searchIP };\n\nexport function displayIP(addr: string) {\n try {\n var parse_addr = ipaddr.parse(addr);\n var kind = parse_addr.kind();\n\n if (kind === 'ipv4') {\n //is a plain v4 address\n return addr;\n } else if (kind === 'ipv6') {\n //@ts-ignore: it exists!\n if (parse_addr.isIPv4MappedAddress()) {\n //convert v4 mapped to v6 addresses to a v4 in it's original format\n //@ts-ignore: it exists!\n return parse_addr.toIPv4Address().toString();\n } //is a v6, normalize it\n else {\n return ip6.normalize(addr);\n }\n } else {\n return ''; //invalid IP address\n }\n } catch (err) {\n return ''; //invalid IP address\n }\n}\n","/**\n * All event listeners\n *\n * https://developers.facebook.com/docs/meta-pixel/reference\n * */\n\n// Load pixel event\njQuery(document).on(\"wpmLoadPixels\", () => {\n\n\tif (\n\t\twpmDataLayer?.pixels?.facebook?.pixel_id\n\t\t&& !wpmDataLayer?.pixels?.facebook?.loaded\n\t\t&& !wpm.doesUrlContainPatterns(wpmDataLayer?.pixels?.facebook?.exclusion_patterns)\n\t) {\n\t\tif (wpm.canIFire(\"ads\", \"facebook-ads\")) wpm.loadFacebookPixel()\n\t}\n})\n\n// AddToCart event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideAddToCart\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"AddToCart\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t\twpm.consoleLog(\"Facebook Pixel: AddToCart event sent\", payload.facebook)\n\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// InitiateCheckout event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideBeginCheckout\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"InitiateCheckout\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t\twpm.consoleLog(\"Facebook Pixel: InitiateCheckout event sent\", payload.facebook)\n\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// AddToWishlist event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideAddToWishlist\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"AddToWishlist\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t\twpm.consoleLog(\"Facebook Pixel: AddToWishlist event sent\", payload.facebook)\n\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// ViewContent event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideViewItem\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"ViewContent\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t\twpm.consoleLog(\"Facebook Pixel: ViewContent event sent\", payload.facebook)\n\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n\n// view search event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideSearch\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Search\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t\twpm.consoleLog(\"Facebook Pixel: Search event sent\", payload.facebook)\n\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// load always event\njQuery(document).on(\"wpmLoadAlways\", () => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\twpm.setFbUserData()\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// view order received page event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideOrderReceivedPage\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Purchase\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t\twpm.consoleLog(\"Facebook Pixel: Purchase event sent\", payload.facebook)\n\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n","/**\n * Add functions for Facebook\n * */\n\n(function (wpm, $, undefined) {\n\n\tlet fbUserData\n\n\twpm.fbeventsJsUrl = () => {\n\n\t\tlet searchParams = new URLSearchParams(window.location.search)\n\n\t\tif (searchParams.has(\"fbevents-version\")) {\n\t\t\treturn `https://connect.facebook.net/en_US/fbevents.js?v=${searchParams.get(\"fbevents-version\")}`\n\t\t}\n\n\t\treturn wpmDataLayer?.pixels?.facebook?.fbevents_js_url\n\t}\n\n\twpm.loadFacebookPixel = () => {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.facebook.loaded = true\n\n\t\t\t// @formatter:off\n\t\t\t!function(f,b,e,v,n,t,s)\n\t\t\t{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n\t\t\t\tn.callMethod.apply(n,arguments):n.queue.push(arguments)};\n\t\t\t\tif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n\t\t\t\tn.queue=[];t=b.createElement(e);t.async=!0;\n\t\t\t\tt.src=v;s=b.getElementsByTagName(e)[0];\n\t\t\t\ts.parentNode.insertBefore(t,s)}(window, document,'script',\n\t\t\t\twpm.fbeventsJsUrl());\n\t\t\t// @formatter:on\n\n\t\t\tlet data = {}\n\n\t\t\t// Add user identifiers to data,\n\t\t\t// and only if fbp was set\n\t\t\tif (wpm.isFbpSet() && wpm.isFbAdvancedMatchingEnabled()) {\n\t\t\t\tdata = {...wpm.getUserIdentifiersForFb()}\n\t\t\t}\n\n\t\t\t// https://developers.facebook.com/docs/meta-pixel/advanced/#automatic-configuration\n\t\t\t// fbq(\"set\", \"autoConfig\", false, wpmDataLayer.pixels.facebook.pixel_id)\n\n\t\t\t// Initialize the Facebook Pixel and send the first PageView event\n\t\t\tfbq(\"init\", wpmDataLayer.pixels.facebook.pixel_id, data)\n\n\t\t\tif (wpmDataLayer?.pixels?.facebook?.mobile_bridge_app_id) {\n\t\t\t\tfbq(\"set\", \"mobileBridge\", wpmDataLayer.pixels.facebook.pixel_id, wpmDataLayer?.pixels?.facebook?.mobile_bridge_app_id)\n\t\t\t}\n\n\t\t\tfbq(\"track\", \"PageView\")\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// https://developers.facebook.com/docs/meta-pixel/advanced/advanced-matching\n\twpm.getUserIdentifiersForFb = () => {\n\n\t\tlet data = {}\n\n\t\t// external ID\n\t\tif (wpmDataLayer?.user?.id?.raw) data.external_id = wpmDataLayer.user.id.raw\n\t\tif (wpmDataLayer?.order?.user_id) data.external_id = wpmDataLayer.order.user_id\n\n\t\t// email\n\t\tif (wpmDataLayer?.user?.email?.facebook) data.em = wpmDataLayer.user.email.facebook\n\t\tif (wpmDataLayer?.order?.billing_email_hashed) data.em = wpmDataLayer.order.billing_email_hashed\n\n\t\t// first name\n\t\tif (wpmDataLayer?.user?.first_name?.facebook) data.fn = wpmDataLayer.user.first_name.facebook\n\t\tif (wpmDataLayer?.order?.billing_first_name) data.fn = wpmDataLayer.order.billing_first_name.toLowerCase()\n\n\t\t// last name\n\t\tif (wpmDataLayer?.user?.last_name?.facebook) data.ln = wpmDataLayer.user.last_name.facebook\n\t\tif (wpmDataLayer?.order?.billing_last_name) data.ln = wpmDataLayer.order.billing_last_name.toLowerCase()\n\n\t\t// phone\n\t\tif (wpmDataLayer?.user?.phone?.facebook) data.ph = wpmDataLayer.user.phone.facebook\n\t\tif (wpmDataLayer?.order?.billing_phone) data.ph = wpmDataLayer.order.billing_phone.replace(\"+\", \"\")\n\n\t\t// city\n\t\tif (wpmDataLayer?.user?.city?.facebook) data.ct = wpmDataLayer.user.city.facebook\n\t\tif (wpmDataLayer?.order?.billing_city) data.ct = wpmDataLayer.order.billing_city.toLowerCase().replace(/ /g, \"\")\n\n\t\t// state\n\t\tif (wpmDataLayer?.user?.state?.facebook) data.st = wpmDataLayer.user.state.facebook\n\t\tif (wpmDataLayer?.order?.billing_state) data.st = wpmDataLayer.order.billing_state.toLowerCase().replace(/[a-zA-Z]{2}-/, \"\")\n\n\t\t// postcode\n\t\tif (wpmDataLayer?.user?.postcode?.facebook) data.zp = wpmDataLayer.user.postcode.facebook\n\t\tif (wpmDataLayer?.order?.billing_postcode) data.zp = wpmDataLayer.order.billing_postcode\n\n\t\t// country\n\t\tif (wpmDataLayer?.user?.country?.facebook) data.country = wpmDataLayer.user.country.facebook\n\t\tif (wpmDataLayer?.order?.billing_country) data.country = wpmDataLayer.order.billing_country.toLowerCase()\n\n\t\treturn data\n\t}\n\n\twpm.getFbRandomEventId = () => (Math.random() + 1).toString(36).substring(2)\n\n\twpm.getFbUserData = () => {\n\n\t\t/**\n\t\t * We need to cache the FB user data for InitiateCheckout\n\t\t * where getting the user data from the browser is too slow\n\t\t * using wpm.getCookie().\n\t\t *\n\t\t * And we need the object merge because the ViewContent hit happens too fast\n\t\t * after adding a variation to the cart because the function to cache\n\t\t * the user data is too slow.\n\t\t *\n\t\t * But we can get the user_data using wpm.getCookie()\n\t\t * because we don't move away from the page and can wait for the browser\n\t\t * to get it.\n\t\t *\n\t\t * Also, the merge ensures that new data will be added to fbUserData if new\n\t\t * data is being added later, like user ID, or fbc.\n\t\t */\n\n\t\tfbUserData = {...fbUserData, ...wpm.getFbUserDataFromBrowser()}\n\n\t\treturn fbUserData\n\t}\n\n\twpm.isFbAdvancedMatchingEnabled = () => {\n\t\tif (wpmDataLayer?.pixels?.facebook?.advanced_matching) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\twpm.setFbUserData = () => {\n\t\tfbUserData = wpm.getFbUserDataFromBrowser()\n\t}\n\n\twpm.getFbUserDataFromBrowser = () => {\n\n\t\tlet\n\t\t\tdata = {}\n\n\t\tif (wpm.getCookie(\"_fbp\") && wpm.isValidFbp(wpm.getCookie(\"_fbp\"))) {\n\t\t\tdata.fbp = wpm.getCookie(\"_fbp\")\n\t\t}\n\n\t\tif (wpm.getCookie(\"_fbc\") && wpm.isValidFbc(wpm.getCookie(\"_fbc\"))) {\n\t\t\tdata.fbc = wpm.getCookie(\"_fbc\")\n\t\t}\n\n\t\tif (wpm.isFbAdvancedMatchingEnabled()) {\n\t\t\tif (wpmDataLayer?.user?.id?.raw) data.external_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\tif (navigator.userAgent) data.client_user_agent = navigator.userAgent\n\n\t\t// If a IPv6 address is available in the data store, add it to the user data\n\t\tif (wpm.retrieveData(\"ipv6\")) data.client_ip_address = wpm.retrieveData(\"ipv6\")\n\n\t\treturn data\n\t}\n\n\twpm.isFbpSet = () => {\n\t\treturn !!wpm.getCookie(\"_fbp\")\n\t}\n\n\t// https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc/\n\twpm.isValidFbp = fbp => {\n\n\t\tlet re = new RegExp(/^fb\\.[0-2]\\.\\d{13}\\.\\d{8,20}$/)\n\n\t\treturn re.test(fbp)\n\t}\n\n\t// https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc/\n\twpm.isValidFbc = fbc => {\n\n\t\tlet re = new RegExp(/^fb\\.[0-2]\\.\\d{13}\\.[\\da-zA-Z_-]{8,}/)\n\n\t\treturn re.test(fbc)\n\t}\n\n\t// wpm.fbViewContent = (product = null) => {\n\t//\n\t// \ttry {\n\t// \t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\t//\n\t// \t\tlet eventId = wpm.getFbRandomEventId()\n\t//\n\t// \t\tlet data = {}\n\t//\n\t// \t\tif (product) {\n\t// \t\t\tdata.content_type = \"product\"\n\t// \t\t\tdata.content_name = product.name\n\t// \t\t\t// data.content_category = product.category\n\t// \t\t\tdata.content_ids = product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]\n\t// \t\t\tdata.currency = wpmDataLayer.shop.currency\n\t// \t\t\tdata.value = product.price\n\t// \t\t}\n\t//\n\t// \t\tfbq(\"track\", \"ViewContent\", data, {\n\t// \t\t\teventID: eventId,\n\t// \t\t})\n\t//\n\t// \t\tlet capiData = {\n\t// \t\t\tevent_name : \"ViewContent\",\n\t// \t\t\tevent_id : eventId,\n\t// \t\t\tuser_data : wpm.getFbUserData(),\n\t// \t\t\tevent_source_url: window.location.href,\n\t// \t\t}\n\t//\n\t// \t\tif (product) {\n\t// \t\t\tproduct[\"currency\"] = wpmDataLayer.shop.currency\n\t// \t\t\tcapiData.custom_data = wpm.fbGetProductDataForCapiEvent(product)\n\t// \t\t}\n\t//\n\t// \t\tjQuery(document).trigger(\"wpmFbCapiEvent\", capiData)\n\t// \t} catch (e) {\n\t// \t\tconsole.error(e)\n\t// \t}\n\t// }\n\n\twpm.fbGetProductDataForCapiEvent = product => {\n\t\treturn {\n\t\t\tcontent_type: \"product\",\n\t\t\tcontent_name: product.name,\n\t\t\tcontent_ids : [\n\t\t\t\tproduct.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\t],\n\t\t\tvalue : parseFloat(product.quantity * product.price),\n\t\t\tcurrency : product.currency,\n\t\t}\n\t}\n\n\twpm.facebookContentIds = () => {\n\t\tlet prodIds = []\n\n\t\tObject.values(wpmDataLayer.order.items).forEach(item => {\n\t\t\tif (wpmDataLayer?.shop?.variations_output && 0 !== item.variation_id) {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t} else {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t}\n\t\t})\n\n\t\treturn prodIds\n\t}\n\n\twpm.trackCustomFacebookEvent = (eventName, customData = {}) => {\n\t\ttry {\n\t\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\t\tlet eventId = wpm.getFbRandomEventId()\n\n\t\t\tfbq(\"trackCustom\", eventName, customData, {\n\t\t\t\teventID: eventId,\n\t\t\t})\n\n\t\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\t\tevent_name : eventName,\n\t\t\t\tevent_id : eventId,\n\t\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\t\tevent_source_url: window.location.href,\n\t\t\t\tcustom_data : customData,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fbGetContentIdsFromCart = () => {\n\n\t\tlet content_ids = []\n\n\t\tfor (const key in wpmDataLayer.cart) {\n\t\t\tcontent_ids.push(wpmDataLayer.products[key].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])\n\t\t}\n\n\t\treturn content_ids\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Facebook loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// if (wpm.canLoadPremiumFeatures()) {\n// \trequire(\"./functions_premium\")\n// \trequire(\"./event_listeners_premium\")\n// }\n// #endif\n\n","/**\n * Load Google Ads event listeners\n * */\n\n// view_item_list event\njQuery(document).on(\"wpmViewItemList\", (event, product) => {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tif (\n\t\t\twpmDataLayer?.shop?.variations_output &&\n\t\t\tproduct.is_variable &&\n\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t) return\n\n\t\t// try to prevent that WC sends cached hits to Google\n\t\tif (!product) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\titems : [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}],\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"view_item_list\", data)\n\t\t\twpm.consoleLog(\"Google Ads: view_item_list event sent\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// add_to_cart event\njQuery(document).on(\"wpmAddToCart\", (event, product) => {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\tvalue : product.quantity * product.price,\n\t\t\titems : [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tquantity : product.quantity,\n\t\t\t\tprice : product.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}],\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"add_to_cart\", data)\n\t\t\twpm.consoleLog(\"Google Ads: add_to_cart event sent\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view_item event\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t}\n\n\t\tif (product) {\n\t\t\tdata.value = (product.quantity ? product.quantity : 1) * product.price\n\t\t\tdata.items = [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tquantity : (product.quantity ? product.quantity : 1),\n\t\t\t\tprice : product.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}]\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"view_item\", data)\n\t\t\twpm.consoleLog(\"Google Ads: view_item event sent\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view search event\njQuery(document).on(\"pmwEvent:Search\", () => {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tlet products = []\n\n\t\tObject.values(wpmDataLayer.products).forEach(product => {\n\n\t\t\tif (\n\t\t\t\twpmDataLayer?.shop?.variations_output &&\n\t\t\t\tproduct.is_variable &&\n\t\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t\t) return\n\n\t\t\tproducts.push({\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t})\n\t\t})\n\n\t\t// console.log(products);\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t// value : 1 * product.price,\n\t\t\titems: products,\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"view_search_results\", data)\n\t\t\twpm.consoleLog(\"Google Ads: view_search_results event sent\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// user log in event\njQuery(document).on(\"wpmLogin\", () => {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"login\", data)\n\t\t\twpm.consoleLog(\"Google Ads: login event sent\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n/**\n * Google Ads remarketing purchase\n *\n * https://support.google.com/google-ads/answer/7305793\n */\njQuery(document).on(\"wpmOrderReceivedPage\", () => {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpm.getGoogleAdsConversionIdentifiersWithLabel())) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\tvalue : wpmDataLayer.order.value.marketing,\n\t\t\t// currency: wpmDataLayer.order.currency,\n\t\t\titems: wpm.getGoogleAdsRegularOrderItems(),\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"purchase\", data)\n\t\t\twpm.consoleLog(\"Google Ads: purchase event sent (for remarketing lists)\", data)\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n/**\n * Google Ads conversion event\n *\n * new_customer parameter: https://support.google.com/google-ads/answer/9917012\n * cart data: https://support.google.com/google-ads/answer/9028614\n * customer_lifetime_value is undocumented, but available in gtag.js\n */\njQuery(document).on(\"wpmOrderReceivedPage\", () => {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpm.getGoogleAdsConversionIdentifiersWithLabel())) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to : wpm.getGoogleAdsConversionIdentifiersWithLabel(),\n\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\tvalue : wpmDataLayer.order.value.marketing,\n\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\tnew_customer : wpmDataLayer.order.new_customer,\n\t\t}\n\n\t\tif (wpmDataLayer?.order?.value?.ltv?.marketing) {\n\t\t\tdata.customer_lifetime_value = wpmDataLayer.order.value.ltv.marketing\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\t// https://support.google.com/google-ads/answer/9028614\n\t\tif (wpmDataLayer?.order?.aw_merchant_id) {\n\t\t\tdata.discount = wpmDataLayer.order.discount\n\t\t\tdata.aw_merchant_id = wpmDataLayer.order.aw_merchant_id\n\t\t\tdata.aw_feed_country = wpmDataLayer.order.aw_feed_country\n\t\t\tdata.aw_feed_language = wpmDataLayer.order.aw_feed_language\n\t\t\tdata.items = wpm.getGoogleAdsRegularOrderItems()\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\t// Event needs to be \"purchase\" (not \"conversion\") in order to be able to track cart data:\n\t\t\t// https://support.google.com/google-ads/answer/9028614\n\t\t\tgtag(\"event\", \"purchase\", data)\n\t\t\twpm.consoleLog(\"Google Ads: conversion event sent\", data)\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load Google Ads functions\n * */\n\n(function (wpm, $, undefined) {\n\n\n\twpm.getGoogleAdsConversionIdentifiersWithLabel = () => {\n\n\t\tlet conversionIdentifiers = []\n\n\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds) {\n\t\t\tObject.entries(wpmDataLayer.pixels.google.ads.conversionIds).forEach(([key, item]) => {\n\t\t\t\tif (item) {\n\t\t\t\t\tconversionIdentifiers.push(key + \"/\" + item)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsConversionIdentifiers = () => {\n\n\t\tlet conversionIdentifiers = []\n\n\t\tObject.keys(wpmDataLayer.pixels.google.ads.conversionIds).forEach((key) => {\n\t\t\tconversionIdentifiers.push(key)\n\t\t})\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsRegularOrderItems = () => {\n\n\t\tlet orderItems = []\n\n\t\tObject.values(wpmDataLayer.order.items).forEach((item) => {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.shop?.variations_output && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t})\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google Ads\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load GA4 event listeners\n * */\n\n// view_item_list event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#view_item_list\njQuery(document).on(\"wpmViewItemList\", (event, product) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tconst data = {\n\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\titems : [wpm.ga4GetFullProductItemData(product)],\n\t\t\titem_list_name: wpmDataLayer.shop.list_name, // doesn't make sense on mini_cart\n\t\t\titem_list_id : wpmDataLayer.shop.list_id, // doesn't make sense on mini_cart\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"view_item_list\", data)\n\t\t\twpm.consoleLog(\"Google Analytics: view_item_list event sent\".data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// select_item event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#select_item\njQuery(document).on(\"wpmSelectItem\", (event, product) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tconst data = {\n\t\t\tsend_to: wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\titems : [wpm.ga4GetFullProductItemData(product)],\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"select_item\", data)\n\t\t\twpm.consoleLog(\"Google Analytics: select_item event sent\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// add_to_cart event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#add_to_cart\njQuery(document).on(\"wpmAddToCart\", (event, product) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tconst data = {\n\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\tcurrency: wpmDataLayer.shop.currency,\n\t\t\tvalue : product.price * product.quantity,\n\t\t\titems : [wpm.ga4GetFullProductItemData(product)],\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"add_to_cart\", data)\n\t\t\twpm.consoleLog(\"Google Analytics: add_to_cart event sent\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view_item event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#view_item\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t}\n\n\t\tif (product) {\n\t\t\tdata.currency = wpmDataLayer.shop.currency\n\t\t\t// data.value = 0\n\t\t\tdata.items = [wpm.ga4GetFullProductItemData(product)]\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"view_item\", data)\n\t\t\twpm.consoleLog(\"Google Analytics: view_item event sent\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// add_to_wishlist event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#add_to_wishlist\njQuery(document).on(\"wpmAddToWishlist\", (event, product) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tconst data = {\n\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\tcurrency: wpmDataLayer.shop.currency,\n\t\t\tvalue : product.price * product.quantity,\n\t\t\titems : [wpm.ga4GetFullProductItemData(product)],\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"add_to_wishlist\", data)\n\t\t\twpm.consoleLog(\"Google Analytics: add_to_wishlist event sent\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// remove_from_cart event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#remove_from_cart\njQuery(document).on(\"wpmRemoveFromCart\", (event, product) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tconst data = {\n\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\tcurrency: wpmDataLayer.shop.currency,\n\t\t\tvalue : product.price * product.quantity,\n\t\t\titems : [wpm.ga4GetFullProductItemData(product)],\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"remove_from_cart\", data)\n\t\t\twpm.consoleLog(\"Google Analytics: remove_from_cart event sent\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// begin_checkout event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#begin_checkout\njQuery(document).on(\"wpmBeginCheckout\", () => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tconst data = {\n\t\t\tsend_to: wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\t// coupon: \"\",\n\t\t\tcurrency: wpmDataLayer.shop.currency,\n\t\t\tvalue : wpm.getCartValue(),\n\t\t\titems : wpm.getCartItemsGa4(),\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"begin_checkout\", data)\n\t\t\twpm.consoleLog(\"Google Analytics: begin_checkout event sent\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view_cart event\n// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag#view_cart\njQuery(document).on(\"wpmViewCart\", () => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tif (jQuery.isEmptyObject(wpmDataLayer.cart)) return\n\n\t\tlet products = []\n\t\tlet cartValue = null\n\n\t\tObject.values(wpmDataLayer.cart).forEach(product => {\n\t\t\tproducts.push(wpm.ga4GetFullProductItemData(product))\n\t\t\tcartValue = cartValue + product.quantity * product.price\n\t\t})\n\t\t\n\t\tconst data = {\n\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\tcurrency: wpmDataLayer.shop.currency,\n\t\t\tvalue : cartValue.toFixed(2),\n\t\t\titems : products,\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"view_cart\", data)\n\t\t\twpm.consoleLog(\"Google Analytics: view_cart event sent\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view search event\njQuery(document).on(\"pmwEvent:Search\", () => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.eec) return\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tlet products = []\n\n\t\tObject.values(wpmDataLayer.products).forEach(product => {\n\t\t\tproducts.push(wpm.ga4GetFullProductItemData(product))\n\t\t})\n\n\t\tconst data = {\n\t\t\tsend_to : wpmDataLayer.pixels.google.analytics.ga4.measurement_id,\n\t\t\tsearch_term: wpm.getSearchTermFromUrl(),\n\t\t\titems : products,\n\t\t}\n\n\t\twpm.gtagLoaded().then(() => {\n\t\t\tgtag(\"event\", \"view_search_results\", data)\n\t\t\twpm.consoleLog(\"Google Analytics: view_search_results event sent\", data)\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\n\t\t// ga4_server_and_browser_tracking experiment\n\t\t// https://app.asana.com/0/1110999795232049/1204453591507565\n\t\t// ga4e: if (wpmDataLayer?.pixels?.google?.analytics?.ga4?.mp_active) {\n\t\t// \tif (wpmDataLayer?.experiments?.ga4_server_and_browser_tracking) {\n\t\t// \t\tbreak ga4e\n\t\t// \t}\n\t\t// \treturn\n\t\t// }\n\n\t\t// Deactivated for the ga4_server_and_browser_tracking experiment\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\tconst data = {\n\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.ga4.measurement_id],\n\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\tvalue : wpmDataLayer.order.value.total,\n\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\titems : wpm.getGA4OrderItems(),\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", data)\n\t\t\twpm.consoleLog(\"Google Analytics: purchase event sent\", data)\n\t\t})\n\n\t\t// wpm.gtagLoaded().then(function () {\n\t\t// \tgtag(\"get\", wpmDataLayer.pixels.google.analytics.ga4.measurement_id, \"client_id\", (client_id) => {\n\t\t// \t\tconsole.log(\"transaction_id: \" + wpmDataLayer.order.number + \" client_id: \" + client_id)\n\t\t// \t})\n\t\t// })\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load GA4 functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGA4OrderItems = function () {\n\n\t\t// \"item_id\" : \"34\",\n\t\t// \"item_name\" : \"Hoodie\",\n\t\t// \"quantity\" : 1,\n\t\t// \"item_brand\" : \"\",\n\t\t// \"item_variant\" : \"Color: blue | Logo: yes\",\n\t\t// \"price\" : 45,\n\t\t// \"currency\" : \"CHF\",\n\t\t// \"item_category\": \"Hoodies\"\n\n\n\t\tlet orderItems = []\n\n\t\tObject.values(wpmDataLayer.order.items).forEach((item) => {\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\titem_name : item.name,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\titem_category: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (0 !== item.variation_id) {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItems.push(orderItem)\n\t\t})\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * GA4 loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// if (wpm.canLoadPremiumFeatures()) {\n// \trequire(\"./functions_premium\")\n// \trequire(\"./event_listeners_premium\")\n// }\n// #endif\n","/**\n * Google Analytics loader\n */\n\nrequire(\"./ga4/loader\")\n","/**\n * Load Google base event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") {\n\t\tif (wpm.canGoogleLoad()) {\n\t\t\twpm.loadGoogle()\n\t\t} else {\n\t\t\twpm.logPreventedPixelLoading(\"google\", \"analytics / ads\")\n\t\t}\n\t}\n})\n","/**\n * Load Google base functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.googleConfigConditionsMet = (type) => {\n\n\t\t// always returns true if Google Consent Mode is active\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.is_active) {\n\t\t\treturn true\n\t\t} else if (wpm.getConsentValues().mode === \"category\") {\n\t\t\treturn wpm.getConsentValues().categories[type] === true\n\t\t} else if (wpm.getConsentValues().mode === \"pixel\") {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-\" + type)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings = (google_consent_settings) => {\n\n\t\tif (wpm.getConsentValues().mode === \"category\") {\n\n\t\t\tif (wpm.getConsentValues().categories.analytics) google_consent_settings.analytics_storage = \"granted\"\n\t\t\tif (wpm.getConsentValues().categories.ads) {\n\t\t\t\tgoogle_consent_settings.ad_storage = \"granted\"\n\t\t\t\tgoogle_consent_settings.ad_user_data = \"granted\"\n\t\t\t\tgoogle_consent_settings.ad_personalization = \"granted\"\n\t\t\t}\n\t\t} else if ((wpm.getConsentValues().mode === \"pixel\")) {\n\n\t\t\tgoogle_consent_settings.analytics_storage = wpm.getConsentValues().pixels.includes(\"google-analytics\") ? \"granted\" : \"denied\"\n\t\t\tgoogle_consent_settings.ad_storage = wpm.getConsentValues().pixels.includes(\"google-ads\") ? \"granted\" : \"denied\"\n\t\t\tgoogle_consent_settings.ad_user_data = wpm.getConsentValues().pixels.includes(\"google-ads\") ? \"granted\" : \"denied\"\n\t\t\tgoogle_consent_settings.ad_personalization = wpm.getConsentValues().pixels.includes(\"google-ads\") ? \"granted\" : \"denied\"\n\t\t}\n\n\t\treturn google_consent_settings\n\t}\n\n\twpm.fireGtagGoogleAds = () => {\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.ads.state = \"loading\"\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.enhanced_conversions?.active) {\n\t\t\t\tObject.keys(wpmDataLayer.pixels.google.ads.conversionIds).forEach((key) => {\n\t\t\t\t\tgtag(\"config\", key, {\"allow_enhanced_conversions\": true})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tObject.keys(wpmDataLayer.pixels.google.ads.conversionIds).forEach((key) => {\n\t\t\t\t\tgtag(\"config\", key)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_label && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_number) {\n\t\t\t\tgtag(\"config\", Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0] + \"/\" + wpmDataLayer.pixels.google.ads.phone_conversion_label, {\n\t\t\t\t\tphone_conversion_number: wpmDataLayer.pixels.google.ads.phone_conversion_number,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// https://support.google.com/google-ads/answer/9888145#zippy=%2Cvalidate-your-implementation-using-chrome-developer-tools\n\t\t\tif (\n\t\t\t\twpmDataLayer?.shop?.page_type\n\t\t\t\t&& \"order_received_page\" === wpmDataLayer.shop.page_type\n\t\t\t\t&& wpmDataLayer?.order?.google?.ads?.enhanced_conversion_data\n\t\t\t) {\n\t\t\t\tgtag(\"set\", \"user_data\", wpmDataLayer.order.google.ads.enhanced_conversion_data)\n\t\t\t}\n\n\t\t\twpmDataLayer.pixels.google.ads.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// https://developers.google.com/tag-platform/gtagjs/reference\n\twpm.fireGtagGoogleAnalyticsGA4 = () => {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"loading\"\n\n\t\t\tlet parameters = wpmDataLayer.pixels.google.analytics.ga4.parameters\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.debug_mode) {\n\t\t\t\tparameters.debug_mode = true\n\t\t\t}\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.ga4.measurement_id, parameters)\n\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.isGoogleActive = () => {\n\n\t\tif (\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.universal?.property_id ||\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id ||\n\t\t\t!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)\n\t\t) {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getGoogleGtagId = () => {\n\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.ga4.measurement_id\n\t\t}\n\n\t\tif (\n\t\t\twpmDataLayer?.pixels?.google?.ads?.conversionIds\n\t\t\t&& Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]\n\t\t) {\n\t\t\treturn Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]\n\t\t}\n\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) {\n\t\t\tconsole.log(\"UA analytics ID\")\n\t\t\treturn wpmDataLayer.pixels.google.analytics.universal.property_id\n\t\t}\n\n\t\treturn \"\"\n\t}\n\n\n\twpm.loadGoogle = () => {\n\n\t\tif (!wpm.isGoogleActive()) {\n\t\t\treturn\n\t\t}\n\n\t\twpmDataLayer.pixels.google.state = \"loading\"\n\n\t\twpm.loadScriptAndCacheIt(\"https://www.googletagmanager.com/gtag/js?id=\" + wpm.getGoogleGtagId())\n\t\t\t.then((script, textStatus) => {\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// If Google TCF is active, output the TCF script\n\t\t\t\t\t// https://developers.google.com/tag-platform/security/guides/implement-TCF-strings\n\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.tcf_support) {\n\t\t\t\t\t\twindow[\"gtag_enable_tcf_support\"] = true\n\t\t\t\t\t}\n\n\t\t\t\t\t// Initiate Google dataLayer and gtag\n\t\t\t\t\twindow.dataLayer = window.dataLayer || []\n\t\t\t\t\twindow.gtag = function gtag() {\n\t\t\t\t\t\tdataLayer.push(arguments)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Google Consent Mode\n\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.is_active) {\n\n\t\t\t\t\t\tlet google_consent_settings = {\n\t\t\t\t\t\t\t\"ad_storage\" : wpmDataLayer.pixels.google.consent_mode.ad_storage,\n\t\t\t\t\t\t\t\"analytics_storage\" : wpmDataLayer.pixels.google.consent_mode.analytics_storage,\n\t\t\t\t\t\t\t\"ad_user_data\" : wpmDataLayer.pixels.google.consent_mode.ad_user_data,\n\t\t\t\t\t\t\t\"ad_personalization\": wpmDataLayer.pixels.google.consent_mode.ad_personalization,\n\t\t\t\t\t\t\t\"wait_for_update\" : wpmDataLayer.pixels.google.consent_mode.wait_for_update,\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.region) {\n\t\t\t\t\t\t\tgoogle_consent_settings.region = wpmDataLayer.pixels.google.consent_mode.region\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgoogle_consent_settings = wpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings(google_consent_settings)\n\n\t\t\t\t\t\tgtag(\"consent\", \"default\", google_consent_settings)\n\t\t\t\t\t\tgtag(\"set\", \"ads_data_redaction\", wpmDataLayer.pixels.google.consent_mode.ads_data_redaction)\n\t\t\t\t\t\tgtag(\"set\", \"url_passthrough\", wpmDataLayer.pixels.google.consent_mode.url_passthrough)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Google Linker\n\t\t\t\t\t// https://developers.google.com/gtagjs/devguide/linker\n\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.linker?.settings) {\n\t\t\t\t\t\tgtag(\"set\", \"linker\", wpmDataLayer.pixels.google.linker.settings)\n\t\t\t\t\t}\n\n\t\t\t\t\tgtag(\"js\", new Date())\n\t\t\t\t\tgtag(\"set\", \"developer_id.dNDI5Yz\", true)\n\n\t\t\t\t\t// Google Ads loader\n\t\t\t\t\tif (!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) { // Only run if the pixel has set up\n\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"ads\")) { \t\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\twpm.fireGtagGoogleAds()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-ads\", \"ads\")\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// GA4 loader\n\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) { \t\t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsGA4()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"ga4\", \"analytics\")\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\twpmDataLayer.pixels.google.state = \"ready\"\n\n\t\t\t\t\twpm.triggerQueuedEvents(\"gtag\")\n\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error(e)\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\twpm.canGoogleLoad = () => {\n\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.is_active) {\n\t\t\treturn true\n\t\t} else if (\"category\" === wpm.getConsentValues().mode) {\n\t\t\treturn !!(wpm.getConsentValues().categories[\"ads\"] || wpm.getConsentValues().categories[\"analytics\"])\n\t\t} else if (\"pixel\" === wpm.getConsentValues().mode) {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-ads\") || wpm.getConsentValues().pixels.includes(\"google-analytics\")\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid load condition for Google mode in wpmConsentValues\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.gtagLoaded = () => {\n\t\treturn new Promise((resolve, reject) => {\n\n\t\t\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") reject()\n\n\t\t\tlet startTime = 0\n\t\t\tlet timeout = 5000\n\t\t\tlet frequency = 200;\n\n\t\t\t(function wait() {\n\t\t\t\tif (wpmDataLayer?.pixels?.google?.state === \"ready\") return resolve()\n\t\t\t\tif (startTime >= timeout) {\n\t\t\t\t\twpm.consoleError(\"Google gtag failed to load. Probably a third party script is blocking it.\")\n\t\t\t\t\treturn reject()\n\t\t\t\t}\n\t\t\t\tstartTime += frequency\n\t\t\t\tsetTimeout(wait, frequency)\n\t\t\t})()\n\t\t})\n\t}\n\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google base\n */\n\n// Load base\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// if (wpm.canLoadPremiumFeatures()) {\n// \trequire(\"./functions_premium\")\n// \trequire(\"./event_listeners_premium\")\n// }\n// #endif\n","/**\n * Load Google\n */\n\n// Load base\nrequire(\"./base/loader\")\n\n//Load additional Google libraries\nrequire(\"./ads/loader\")\nrequire(\"./analytics/loader\")\nrequire(\"./optimize/loader\")\n\n\n","/**\n * Load Google Optimize event listeners\n */\n\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.google?.optimize?.container_id && !wpmDataLayer?.pixels?.google?.optimize?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"google-optimize\")) wpm.load_google_optimize_pixel()\n\t}\n})\n","/**\n * Load Google Optimize functions\n */\n\n\n(function (wpm, $, undefined) {\n\n\twpm.load_google_optimize_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.optimize.loaded = true\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googleoptimize.com/optimize.js?id=\" + wpmDataLayer.pixels.google.optimize.container_id)\n\t\t\t// .then(function (script, textStatus) {\n\t\t\t// \t\tconsole.log('Google Optimize loaded')\n\t\t\t// });\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google Optimize\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Hotjar event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.hotjar?.site_id && !wpmDataLayer?.pixels?.hotjar?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"hotjar\") && !wpmDataLayer?.pixels?.hotjar?.loaded) wpm.load_hotjar_pixel()\n\t}\n})\n","/**\n * Load Hotjar functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.load_hotjar_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.hotjar.loaded = true;\n\n\t\t\t// @formatter:off\n\t\t\t(function(h,o,t,j,a,r){\n\t\t\t\th.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};\n\t\t\t\th._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6};\n\t\t\t\ta=o.getElementsByTagName('head')[0];\n\t\t\t\tr=o.createElement('script');r.async=1;\n\t\t\t\tr.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;\n\t\t\t\ta.appendChild(r);\n\t\t\t})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');\n\t\t\t// @formatter:on\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Hotjar loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","(function (wpm, $, undefined) {\n\n\tconst PMW_LIBRARY_VERSION = \"1.40.1\"\n\n\twpm.getLibraryVersion = () => {\n\t\treturn PMW_LIBRARY_VERSION\n\t}\n\n\twpm.checkLibraryVersion = () => {\n\n\t\tif (wpm.getLibraryVersion() !== wpmDataLayer?.version?.number) {\n\t\t\tconsole.error(`Pixel Manager: ${wpm.getLibraryVersion()} and wpmDataLayer.version.number ${wpmDataLayer.version.number} do not match. Delete the server-side cache and try again.`)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n\n","/**\n * Consent Mode functions\n */\n\n(function (wpm, $, undefined) {\n\n\t/**\n\t * Handle Cookie Management Platforms\n\t */\n\n\tconst getComplianzCookies = () => {\n\n\t\tlet cmplz_statistics = wpm.getCookie(\"cmplz_statistics\")\n\t\tlet cmplz_marketing = wpm.getCookie(\"cmplz_marketing\")\n\t\tlet cmplz_consent_status = wpm.getCookie(\"cmplz_consent_status\") || wpm.getCookie(\"cmplz_banner-status\")\n\n\t\tif (cmplz_consent_status) {\n\t\t\treturn {\n\t\t\t\tanalytics : cmplz_statistics === \"allow\",\n\t\t\t\tads : cmplz_marketing === \"allow\",\n\t\t\t\tvisitorHasChosen: true,\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\tconst getCookieYesCookies = () => {\n\n\t\t/**\n\t\t * Process the new cookieyes-consent cookie that contains all the information\n\t\t */\n\n\t\tlet cookie = wpm.getCookie(\"cookieyes-consent\")\n\n\t\tif (cookie) {\n\n\t\t\t// This cookie has the following structure:\n\t\t\t// consentid:OERmMEJCSVQxRk1SRWVwZkJTUjFBZTJHSEhkdjhLbUI,consent:yes,action:yes,necessary:yes,functional:yes,analytics:yes,performance:yes,advertisement:yes\n\t\t\t// First split the comma-separated values into an array\n\t\t\t// Then split each array item into a key value pair. The key and the value are separated by a colon.\n\t\t\t// Then create an object from the key value pairs.\n\t\t\t// Then console.log the object to see what it looks like.\n\n\t\t\tcookie = cookie\n\t\t\t\t.split(\",\")\n\t\t\t\t.map(item => item.split(\":\"))\n\t\t\t\t.reduce((acc, [key, value]) => ({\n\t\t\t\t\t...acc,\n\t\t\t\t\t[key]: value,\n\t\t\t\t}), {})\n\n\t\t\t// console.log(\"new cookie\", cookie)\n\n\t\t\treturn {\n\t\t\t\tanalytics : cookie.analytics && cookie.analytics === \"yes\",\n\t\t\t\tads : cookie.advertisement && cookie.advertisement === \"yes\",\n\t\t\t\tvisitorHasChosen: cookie.advertisement && cookie.advertisement === \"yes\",\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Process the old cookieyes-* cookies\n\t\t *\n\t\t * @param cookieNames\n\t\t * @returns {string|string|boolean}\n\t\t */\n\n\t\tfunction checkCookie(cookieNames) {\n\t\t\tfor (let name of cookieNames) {\n\n\t\t\t\tconst cookieValue = wpm.getCookie(name)\n\n\t\t\t\tif (cookieValue) {\n\t\t\t\t\treturn cookieValue\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\n\t\tlet analyticsCookieNames = [\n\t\t\t\"cookielawinfo-checkbox-analytics\",\n\t\t\t\"cookielawinfo-checkbox-analytiques\",\n\t\t\t\"cookieyes-analytics\",\n\t\t]\n\n\t\tconst adsCookieNames = [\n\t\t\t\"cookielawinfo-checkbox-advertisement\",\n\t\t\t\"cookielawinfo-checkbox-performance\",\n\t\t\t\"cookielawinfo-checkbox-publicite\",\n\t\t\t\"cookieyes-advertisement\",\n\t\t]\n\n\t\tconst visitorHasChosenCookieNames = [\n\t\t\t\"CookieLawInfoConsent\",\n\t\t\t\"cky-action\",\n\t\t]\n\n\t\t// let analyticsCookie = wpm.getCookie(\"cookielawinfo-checkbox-analytics\") || wpm.getCookie(\"cookielawinfo-checkbox-analytiques\")\n\t\t// let adsCookie = wpm.getCookie(\"cookielawinfo-checkbox-advertisement\") || wpm.getCookie(\"cookielawinfo-checkbox-performance\") || wpm.getCookie(\"cookielawinfo-checkbox-publicite\")\n\t\t// let visitorHasChosen = wpm.getCookie(\"CookieLawInfoConsent\")\n\n\t\tconst analyticsCookie = checkCookie(analyticsCookieNames)\n\t\tconst adsCookie = checkCookie(adsCookieNames)\n\t\tconst visitorHasChosen = checkCookie(visitorHasChosenCookieNames)\n\n\t\tif (analyticsCookie || adsCookie) {\n\n\t\t\treturn {\n\t\t\t\tanalytics : analyticsCookie === \"yes\",\n\t\t\t\tads : adsCookie === \"yes\",\n\t\t\t\tvisitorHasChosen: !!visitorHasChosen,\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\t/**\n\t * Get the Iubenda cookie.\n\t * Then parse it and return the analytics and marketing values.\n\t *\n\t * 1 = Necessary\n\t * 2 = Functionality\n\t * 3 = n/a\n\t * 4 = Measurement\n\t * 5 = Marketing\n\t */\n\tconst getIubendaCookieInfo = () => {\n\n\t\t// Regex that matches _iub_cs-59340121 but not _iub_cs-59340121-granular\n\n\t\tlet regex = new RegExp(\"_iub_cs-\\\\d{8,}\")\n\n\t\t// let cookie = wpm.getCookieThatContainsRegex(\"_iub_cs-\")\n\t\tlet cookie = wpm.getCookieThatContainsRegex(regex)\n\n\t\t// Parse the cookie into an object\n\t\t// The structure looks like this:\n\t\t// %7B%22timestamp%22%3A%222023-07-11T06%3A43%3A40.886Z%22%2C%22version%22%3A%221.48.0%22%2C%22purposes%22%3A%7B%221%22%3Atrue%2C%222%22%3Atrue%2C%224%22%3Atrue%2C%225%22%3Atrue%7D%2C%22id%22%3A63374232%7D\n\n\t\tif (cookie) {\n\n\t\t\tcookie = decodeURIComponent(cookie)\n\n\t\t\t// Now the structure looks like this:\n\t\t\t// _iub_cs-63374232={\"timestamp\":\"2023-07-11T06:43:40.886Z\",\"version\":\"1.48.0\",\"purposes\":{\"1\":true,\"2\":true,\"4\":true,\"5\":true},\"id\":63374232}\n\t\t\t// Remove the _iub_cs- prefix until and with the equal sign. The rest is the object we want to keep and parse.\n\t\t\tcookie = cookie.replace(/_iub_cs-.*=/, \"\")\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\treturn {\n\t\t\t\tanalytics : cookie.purposes[\"4\"],\n\t\t\t\tads : cookie.purposes[\"5\"],\n\t\t\t\tvisitorHasChosen: true,\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\tconst getTermlyCookies = () => {\n\n\t\t// Get Termly cookies from localStorage from termly_gtm_template_default_consents for ad_storage and for analytics_storage\n\t\tlet termlyConsent = localStorage.getItem(\"termly_gtm_template_default_consents\")\n\n\t\tif (termlyConsent) {\n\t\t\ttermlyConsent = JSON.parse(termlyConsent)\n\n\t\t\treturn {\n\t\t\t\tanalytics : termlyConsent.analytics_storage === \"granted\",\n\t\t\t\tads : termlyConsent.ad_storage === \"granted\",\n\t\t\t\tvisitorHasChosen: true,\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\n\t/**\n\t * Initialize and set default values\n\t */\n\n\tlet\n\t\twpmConsentValues = {}\n\twpmConsentValues.categories = {}\n\twpmConsentValues.pixels = []\n\twpmConsentValues.mode = \"category\"\n\twpmConsentValues.visitorHasChosen = false\n\n\t// Return current consent values\n\twpm.getConsentValues = () => wpmConsentValues\n\n\twpm.setConsentValueCategories = (analytics = false, ads = false) => {\n\t\twpmConsentValues.categories.analytics = analytics\n\t\twpmConsentValues.categories.ads = ads\n\t}\n\n\t// Update the PMW consent values with values coming from a CMP\n\twpm.updateConsentCookieValues = (analytics = null, ads = null, explicitConsent = false) => {\n\n\t\t// ad_storage\n\t\t// analytics_storage\n\t\t// functionality_storage\n\t\t// personalization_storage\n\t\t// security_storage\n\n\t\tlet cookie\n\n\t\t/**\n\t\t * Setup defaults\n\t\t */\n\n\t\t// consentValues.categories.analytics = true\n\t\t// consentValues.categories.ads = true\n\n\t\twpmConsentValues.categories.analytics = !explicitConsent\n\t\twpmConsentValues.categories.ads = !explicitConsent\n\n\n\t\tif (analytics || ads) {\n\n\t\t\tif (analytics) {\n\t\t\t\twpmConsentValues.categories.analytics = !!analytics\n\t\t\t}\n\n\t\t\tif (ads) {\n\t\t\t\twpmConsentValues.categories.ads = !!ads\n\t\t\t}\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * PMW Cookie Consent\n\t\t *\n\t\t * Must be processed before every other CMP for the case that one of the included CMPs\n\t\t * decides to implement the PMW cookie consent API. In that case\n\t\t * the PMW consent cookie must take precedence.\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"pmw_cookie_consent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookiebot\n\t\t * https://wordpress.org/plugins/cookiebot/\n\t\t * https://support.cookiebot.com/hc/en-us/articles/360016047000-Cookiebot-and-Google-Consent-Mode\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"CookieConsent\")) {\n\n\t\t\tcookie = decodeURI(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.indexOf(\"statistics:true\") >= 0\n\t\t\twpmConsentValues.categories.ads = cookie.indexOf(\"marketing:true\") >= 0\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * WP Consent API\n\t\t * https://github.com/rlankhorst/wp-consent-level-api\n\t\t * https://wordpress.org/plugins/wp-consent-api/\n\t\t */\n\n\t\t// if a at least one cookie exists that starts with wp_consent_ then the visitor has chosen\n\t\tif (wpm.getCookieThatContainsRegex(/^wp_consent_/)) {\n\t\t\t// console.log(\"WP Consent API settings detected\")\n\n\t\t\t// if the cookie wp_consent_statistics exists and is set to allow, then analytics is true\n\t\t\t// If it is set to deny, then analytics is false\n\t\t\twpmConsentValues.categories.analytics = wpm.getCookie(\"wp_consent_statistics\") === \"allow\"\n\t\t\twpmConsentValues.categories.ads = wpm.getCookie(\"wp_consent_marketing\") === \"allow\"\n\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\t// console log the consent values\n\t\t\t// console.log(\"WP Consent API settings detected: \", wpmConsentValues)\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Script\n\t\t * https://wordpress.org/plugins/cookie-script-com/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"CookieScriptConsent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\t// if cookie.categories is not an array, but a string, parse it\n\t\t\tif (typeof cookie.categories === \"string\") cookie.categories = JSON.parse(cookie.categories)\n\n\t\t\tif (\n\t\t\t\tcookie.action\n\t\t\t\t&& cookie.action === \"reject\"\n\t\t\t) {\n\t\t\t\twpmConsentValues.categories.analytics = false\n\t\t\t\twpmConsentValues.categories.ads = false\n\t\t\t} else if (\n\t\t\t\tcookie.categories\n\t\t\t\t&& cookie.categories.length > 0\n\t\t\t) {\n\t\t\t\twpmConsentValues.categories.analytics = cookie.categories.indexOf(\"performance\") >= 0\n\t\t\t\twpmConsentValues.categories.ads = cookie.categories.indexOf(\"targeting\") >= 0\n\t\t\t} else {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t}\n\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Borlabs Cookie\n\t\t * https://borlabs.io/borlabs-cookie/\n\t\t */\n\t\tif (cookie = wpm.getCookie(\"borlabs-cookie\")) {\n\n\t\t\tcookie = decodeURI(cookie)\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie?.consents?.statistics\n\t\t\twpmConsentValues.categories.ads = !!cookie?.consents?.marketing\n\t\t\twpmConsentValues.visitorHasChosen = true\n\t\t\twpmConsentValues.pixels = [...cookie?.consents?.statistics || [], ...cookie?.consents?.marketing || []]\n\t\t\twpmConsentValues.mode = \"pixel\"\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Complianz Cookie\n\t\t * https://wordpress.org/plugins/complianz-gdpr/\n\t\t */\n\n\t\tif (cookie = getComplianzCookies()) {\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Compliance (free version)\n\t\t * https://wordpress.org/plugins/cookie-notice/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"cookie_notice_accepted\")) {\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Compliance (pro version)\n\t\t * https://wordpress.org/plugins/cookie-notice/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"hu-consent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie.categories[\"3\"]\n\t\t\twpmConsentValues.categories.ads = !!cookie.categories[\"4\"]\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * CookieYes, GDPR Cookie Consent (Cookie Law Info)\n\t\t * https://wordpress.org/plugins/cookie-law-info/\n\t\t */\n\n\t\tif (cookie = getCookieYesCookies()) {\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen === true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * GDPR Cookie Compliance Plugin by Moove Agency\n\t\t * https://wordpress.org/plugins/gdpr-cookie-compliance/\n\t\t *\n\t\t * TODO write documentation on how to set up the plugin in order for this to work properly\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"moove_gdpr_popup\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.thirdparty === \"1\"\n\t\t\twpmConsentValues.categories.ads = cookie.advanced === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Iubenda\n\t\t * https://www.iubenda.com\n\t\t */\n\n\t\tif (cookie = getIubendaCookieInfo()) {\n\n\t\t\tcookie = cookie\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\t// console.log(\"Iubenda settings detected: \", wpmConsentValues)\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * WP AutoTerms\n\t\t * https://wordpress.org/plugins/auto-terms-of-service-and-privacy-policy/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"wpautoterms-cookies-notice\")) {\n\n\t\t\tif (cookie !== \"1\") return\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Usercentrics\n\t\t *\n\t\t * https://usercentrics.com/\n\t\t * https://docs.usercentrics.com/#/cmp-v2-ui-api\n\t\t * https://docs.usercentrics.com/#/cmp-v2-ui-api?id=getservicesbaseinfo\n\t\t */\n\n\t\tif (window.localStorage && window.localStorage.getItem(\"uc_settings\")) {\n\n\t\t\twpm.consoleLog(\"Usercentrics settings detected\")\n\n\t\t\tif (typeof UC_UI === \"undefined\") {\n\n\t\t\t\t// register event to block unblock after UC_UI library is loaded\n\t\t\t\twindow.addEventListener(\"UC_UI_INITIALIZED\", (event) => {\n\t\t\t\t\twpm.ucUiProcessConsent()\n\t\t\t\t})\n\n\t\t\t\t// Don't continue because in here the UC_UI library is not loaded yet\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (UC_UI.areAllConsentsAccepted()) {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\twpm.ucUiProcessConsent()\n\t\t}\n\n\t\t/**\n\t\t * OneTrust\n\t\t *\n\t\t * https://www.onetrust.com/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"OptanonConsent\")) {\n\n\t\t\t// console.log(\"OneTrust settings detected\")\n\n\t\t\tlet params = new URLSearchParams(cookie)\n\t\t\tlet groups = params.get(\"groups\").split(\",\")\n\n\t\t\t// Groups is an array like this ['1:1', '2:0', '3:1', '4:1']. Make it an object with key value pairs\n\t\t\tlet groupsObject = {}\n\t\t\tgroups.forEach((group) => {\n\n\t\t\t\tlet groupArray = group.split(\":\")\n\t\t\t\tgroupsObject[groupArray[0]] = groupArray[1]\n\t\t\t})\n\n\t\t\t// group mapping\n\t\t\t// 1 = necessary\n\t\t\t// 2 = analytics\n\t\t\t// 3 = functional\n\t\t\t// 4 = ads\n\n\t\t\twpmConsentValues.categories.analytics = groupsObject[\"2\"] === \"1\"\n\t\t\twpmConsentValues.categories.ads = groupsObject[\"4\"] === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Termly\n\t\t *\n\t\t * https://www.termly.io/\n\t\t */\n\n\t\tif (cookie = getTermlyCookies()) {\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen === true\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Real Cookie Banner\n\t\t *\n\t\t * https://devowl.io/wordpress-real-cookie-banner/\n\t\t */\n\t\tif (wpm.doesACookieForTheRealCookieBannerExist()) {\n\n\t\t\t// console.log(\"Real Cookie Banner settings detected\")\n\n\t\t\twpmConsentValues.mode = \"pixel\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\twpm.waitForLibrary(\"consentApi\")\n\n\t\t\t// console.log(\"Real Cookie Banner consentApi loaded\")\n\n\t\t\tif (!window.consentApi) {\n\t\t\t\twpm.consoleError(\"window.consentApi is not available\")\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst settings = [\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"adroll-ads\",\n\t\t\t\t\t\"type\" : \"marketing\",\n\t\t\t\t\t\"cookies\": [\"__adroll_fpc\", \"_ar_v4\", \"_adroll\"],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"bing-ads\",\n\t\t\t\t\t\"type\" : \"marketing\",\n\t\t\t\t\t\"cookies\": [\"_uetsid\", \"_uetvid\"],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"facebook-ads\",\n\t\t\t\t\t\"type\" : \"marketing\",\n\t\t\t\t\t\"cookies\": [\"_fbp\"],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"google-analytics\",\n\t\t\t\t\t\"type\" : \"statistics\",\n\t\t\t\t\t\"cookies\": [\"_ga\", \"_gid\", \"_gat\", \"_gat_gtag_UA_*\"],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"google-optimize\",\n\t\t\t\t\t\"type\" : \"statistics\",\n\t\t\t\t\t\"cookies\": [\"_ga\", \"_gid\", \"_gat\", \"_gat_gtag_UA_*\"],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"google-ads\",\n\t\t\t\t\t\"type\" : \"marketing\",\n\t\t\t\t\t\"cookies\": [\"_gcl_au\", \"_gcl_aw\", \"_gcl_dc\", \"_gac_*\"],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"hotjar\",\n\t\t\t\t\t\"type\" : \"statistics\",\n\t\t\t\t\t\"cookies\": [\"_hj*\", \"_hjid\"],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"linkedin-ads\",\n\t\t\t\t\t\"type\" : \"marketing\",\n\t\t\t\t\t\"cookies\": [\"_li_ss\", \"_li_id\", \"_li_mk_*\"],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"microsoft-ads\",\n\t\t\t\t\t\"type\" : \"marketing\",\n\t\t\t\t\t\"cookies\": [\"_uetsid\", \"_uetvid\"],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"outbrain-ads\",\n\t\t\t\t\t\"type\" : \"marketing\",\n\t\t\t\t\t\"cookies\": [],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"pinterest-ads\",\n\t\t\t\t\t\"type\" : \"marketing\",\n\t\t\t\t\t\"cookies\": [\"_pinterest_ct_ua\", \"_pinterest_ct_rt\", \"_pin_unauth\", \"_derived_epik\", \"_pinterest_sess\"],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"reddit-ads\",\n\t\t\t\t\t\"type\" : \"marketing\",\n\t\t\t\t\t\"cookies\": [\"_rdt_uuid\"],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"snapchat-ads\",\n\t\t\t\t\t\"type\" : \"marketing\",\n\t\t\t\t\t\"cookies\": [\"sc_at\", \"sc_anonymous_id\", \"sc_id\", \"_scid\", \"_scid_r\"],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"taboola-ads\",\n\t\t\t\t\t\"type\" : \"marketing\",\n\t\t\t\t\t\"cookies\": [],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"tiktok-ads\",\n\t\t\t\t\t\"type\" : \"marketing\",\n\t\t\t\t\t\"cookies\": [\"_ttp\", \"_ttclid\", \"ttwid\"],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"service\": \"twitter-ads\",\n\t\t\t\t\t\"type\" : \"marketing\",\n\t\t\t\t\t\"cookies\": [\"twitter_ads_id\", \"twid\", \"_twclid\", \"muc_ads\"],\n\t\t\t\t},\n\t\t\t]\n\n\n\t\t\t// For each service in settings\n\t\t\t// and each cookie in service.cookies\n\t\t\t// check if consentApi.consentSync(\"http\", cookie, \"*\") returns an object that contains a not empty object called \"cookie\"\n\t\t\t// If one of the cookies returns true, then push service.service to wpmConsentValues.pixels\n\t\t\tsettings.forEach((service) => {\n\n\t\t\t\tservice.cookies.forEach((cookie) => {\n\n\t\t\t\t\tlet consent = window.consentApi.consentSync(\"http\", cookie, \"*\")\n\n\t\t\t\t\tif (consent?.cookie && consent?.cookieOptIn) {\n\n\t\t\t\t\t\twpmConsentValues.pixels.push(service.service)\n\n\t\t\t\t\t\tif (service.type === \"statistics\") {\n\t\t\t\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (service.type === \"marketing\") {\n\t\t\t\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// continue with the next service\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\n\t\t\treturn\n\t\t}\n\t}\n\n\twpm.doesACookieForTheRealCookieBannerExist = () => {\n\n\t\t// Find a cookie that has a prefix of real_cookie_banner\n\t\t// If one is found, then return true\n\t\t// If none is found, then return false\n\n\t\tlet cookies = document.cookie.split(\";\")\n\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tlet cookie = cookies[i].trim()\n\n\t\t\tif (cookie.startsWith(\"real_cookie_banner\")) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\t// Only run after having made sure that the UC_UI library is loaded\n\twpm.ucUiProcessConsent = () => {\n\n\t\tif (typeof UC_UI === \"undefined\") return\n\n\t\tif (UC_UI.areAllConsentsAccepted()) {\n\t\t\tpmw.consentAcceptAll()\n\t\t}\n\n\t\tconst ucStatisticsSlug = UC_UI.getSettingsLabels().categories.filter(data => data.label === \"Statistics\")[0].slug\n\n\t\tpmw.consentAdjustSelectively(\n\t\t\t{\n\t\t\t\tanalytics: !UC_UI.getServicesBaseInfo().filter(data => data.categorySlug === ucStatisticsSlug && data.consent.status === false).length > 0,\n\t\t\t\tads : !UC_UI.getServicesBaseInfo().filter(data => data.categorySlug === \"marketing\" && data.consent.status === false).length > 0,\n\t\t\t},\n\t\t)\n\t}\n\n\twpm.updateConsentCookieValues()\n\n\twpm.setConsentDefaultValuesToExplicit = () => {\n\t\twpmConsentValues.categories = {\n\t\t\tanalytics: false,\n\t\t\tads : false,\n\t\t}\n\t}\n\n\twpm.canIFire = (category, pixelName) => {\n\n\t\tlet canIFireMode\n\n\t\tif (\"category\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = !!wpmConsentValues.categories[category]\n\t\t} else if (\"pixel\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(pixelName)\n\n\t\t\t// If a user sets \"bing-ads\" in Borlabs Cookie instead of\n\t\t\t// \"microsoft-ads\" in the Borlabs settings, we need to check\n\t\t\t// for that too.\n\t\t\tif (false === canIFireMode && \"microsoft-ads\" === pixelName) {\n\t\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(\"bing-ads\")\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid consent mode in wpmConsentValues\")\n\t\t\tcanIFireMode = false\n\t\t}\n\n\t\tif (canIFireMode) {\n\t\t\treturn true\n\t\t} else {\n\t\t\tif (true || wpm.urlHasParameter(\"debugConsentMode\")) {\n\t\t\t\twpm.logPreventedPixelLoading(pixelName, category)\n\t\t\t}\n\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.logPreventedPixelLoading = (pixelName, category) => {\n\n\t\tif (wpmDataLayer?.general?.cookie_consent_mgmt?.explicit_consent) {\n\t\t\twpm.consoleLog(\"The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have not given consent for it yet. (PMW is in explicit consent mode.)\")\n\t\t} else {\n\t\t\twpm.consoleLog(\"The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have removed consent for this pixel. (PMW is in implicit consent mode.)\")\n\t\t}\n\t}\n\n\t/**\n\t * Runs through each script in
and blocks / unblocks it according to the plugin settings\n\t * and user consent.\n\t */\n\n\t// https://stackoverflow.com/q/65453565/4688612\n\twpm.scriptTagObserver = new MutationObserver((mutations) => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif ($(node).data(\"wpm-cookie-category\")) {\n\n\t\t\t\t\t\t// If the pixel category has been approved > unblock\n\t\t\t\t\t\t// If the pixel belongs to more than one category, then unblock if one of the categories has been approved\n\t\t\t\t\t\t// If no category has been approved, but the Google Consent Mode is active, then only unblock the Google scripts\n\n\t\t\t\t\t\tif (wpm.shouldScriptBeActive(node)) {\n\t\t\t\t\t\t\twpm.unblockScript(node)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twpm.blockScript(node)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\twpm.scriptTagObserver.observe(document.head, {childList: true, subtree: true})\n\t// jQuery(document).on(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\tdocument.addEventListener(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\n\twpm.shouldScriptBeActive = node => {\n\n\t\tif (\n\t\t\twpmDataLayer.general.cookie_consent_mgmt.explicit_consent ||\n\t\t\twpmConsentValues.visitorHasChosen\n\t\t) {\n\n\t\t\tif (wpmConsentValues.mode === \"category\" && $(node).data(\"wpm-cookie-category\").split(\",\").some(element => wpmConsentValues.categories[element])) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && wpmConsentValues.pixels.includes($(node).data(\"wpm-pixel-name\"))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && $(node).data(\"wpm-pixel-name\") === \"google\" && [\"google-analytics\", \"google-ads\"].some(element => wpmConsentValues.pixels.includes(element))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmDataLayer?.pixels?.google?.consent_mode?.is_active && $(node).data(\"wpm-pixel-name\") === \"google\") {\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\n\twpm.unblockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tlet wpmSrc = $(scriptNode).data(\"wpm-src\")\n\t\tif (wpmSrc) $(scriptNode).attr(\"src\", wpmSrc)\n\n\t\tscriptNode.type = \"text/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.blockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tif ($(scriptNode).attr(\"src\")) $(scriptNode).removeAttr(\"src\")\n\t\tscriptNode.type = \"blocked/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\t}\n\n\twpm.unblockAllScripts = (analytics = true, ads = true) => {\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\twpm.setConsentValueCategories(analytics, ads)\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.unblockSelectedPixels = () => {\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.explicitConsentStateAlreadySet = () => {\n\n\t\tif (wpmConsentValues.explicitConsentStateAlreadySet) {\n\t\t\treturn true\n\t\t} else {\n\t\t\twpmConsentValues.explicitConsentStateAlreadySet = true\n\t\t}\n\t}\n\n\twpm.updatePixelConsentForPixelTypeCMPs = () => {\n\n\t\twpm.updateConsentCookieValues()\n\n\t\tif (wpmConsentValues.mode === \"pixel\") {\n\n\t\t\twpm.unblockSelectedPixels()\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.pixels.includes(\"google-analytics\"), wpmConsentValues.pixels.includes(\"google-ads\"))\n\t\t} else {\n\n\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t}\n\t}\n\n\n\t/**\n\t * Block or unblock scripts for each CMP immediately after cookie consent has been updated\n\t * by the visitor.\n\t */\n\n\t/**\n\t * Borlabs Cookie\n\t * If the visitor accepts cookies in Borlabs Cookie unblock the scripts.\n\t */\n\tdocument.addEventListener(\"borlabs-cookie-consent-saved\", () => {\n\t\twpm.updatePixelConsentForPixelTypeCMPs()\n\t})\n\n\t/**\n\t * Real Cookie Banner\n\t * If the visitor accepts cookies in Real Cookie Banner unblock the scripts.\n\t */\n\n\tdocument.addEventListener(\"RCB/OptIn/All\", () => {\n\t\twpm.consoleLog(\"consent given or changed, check again with consentSync...\")\n\n\t\twpm.updatePixelConsentForPixelTypeCMPs()\n\t})\n\n\n\t/**\n\t * Cookiebot\n\t * \tIf visitor accepts cookies in Cookiebot unblock the scripts\n\t * \thttps://www.cookiebot.com/en/developer/\n\t */\n\twindow.addEventListener(\"CookiebotOnAccept\", () => {\n\t\tif (Cookiebot.consent.statistics) wpmConsentValues.categories.analytics = true\n\t\tif (Cookiebot.consent.marketing) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\n\t}, false)\n\n\t/**\n\t * WP Consent API\n\t * https://github.com/rlankhorst/wp-consent-level-api\n\t * https://wordpress.org/plugins/wp-consent-api/\n\t */\n\n\tdocument.addEventListener(\"wp_listen_for_consent_change\", e => {\n\n\t\tconst changedConsentCategory = e.detail\n\n\t\tfor (const key in changedConsentCategory) {\n\n\t\t\t// console.log(\"consent given or changed, check again with consentSync...\", key, changedConsentCategory[key])\n\n\t\t\t// if the key is marketing\n\t\t\tif (key === \"marketing\") {\n\t\t\t\twpmConsentValues.categories.ads = changedConsentCategory[key] === \"allow\"\n\t\t\t}\n\n\t\t\t// if the key is statistics\n\t\t\tif (key === \"statistics\") {\n\t\t\t\twpmConsentValues.categories.analytics = changedConsentCategory[key] === \"allow\"\n\t\t\t}\n\n\t\t}\n\n\t\t// console log the consent values\n\t\t// console.log(\"WP Consent API settings detected: \", wpmConsentValues)\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/article/20-custom-events\n\t */\n\t// jQuery(document).on(\"CookieScriptAccept\", e => {\n\tdocument.addEventListener(\"CookieScriptAccept\", e => {\n\n\t\tif (e.detail.categories.includes(\"performance\")) wpmConsentValues.categories.analytics = true\n\t\tif (e.detail.categories.includes(\"targeting\")) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/\n\t */\n\t// jQuery(document).on(\"CookieScriptAcceptAll\", () => {\n\tdocument.addEventListener(\"CookieScriptAcceptAll\", () => {\n\n\t\twpm.setConsentValueCategories(true, true)\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t})\n\n\t/**\n\t * Complianz Cookie\n\t *\n\t * If visitor accepts cookies in Complianz unblock the scripts\n\t */\n\n\twpm.cmplzStatusChange = (cmplzConsentData) => {\n\n\t\tif (cmplzConsentData.detail.categories.includes(\"statistics\")) wpm.updateConsentCookieValues(true, null)\n\t\tif (cmplzConsentData.detail.categories.includes(\"marketing\")) wpm.updateConsentCookieValues(null, true)\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t}\n\n\t// jQuery(document).on(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\tdocument.addEventListener(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\t// jQuery(document).on(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\tdocument.addEventListener(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\n\t// Cookie Compliance by hu-manity.co (free and pro)\n\t// If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (free version)\n\t// https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t// jQuery(document).on(\"setCookieNotice\", () => {\n\tdocument.addEventListener(\"setCookieNotice\", () => {\n\t\twpm.updateConsentCookieValues()\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Compliance by hu-manity.co (free and pro)\n\t * If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (pro version)\n\t * https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t * Because Cookie Notice has no documented API or event that is being triggered on consent save or update\n\t * we have to solve this by using a mutation observer.\n\t *\n\t * @type {MutationObserver}\n\t */\n\n\twpm.huObserver = new MutationObserver(mutations => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif (node.id === \"hu\") {\n\n\t\t\t\t\t\t// jQuery(\".hu-cookies-save\").on(\"click\", function () {\n\t\t\t\t\t\t// jQuery(\".hu-cookies-save\") in pure JavaScript\n\t\t\t\t\t\tdocument.querySelector(\".hu-cookies-save\").addEventListener(\"click\", () => {\n\t\t\t\t\t\t\twpm.updateConsentCookieValues()\n\t\t\t\t\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\tif (window.hu) {\n\t\twpm.huObserver.observe(document.documentElement || document.body, {childList: true, subtree: true})\n\t}\n\n\t/**\n\t * Iubenda CMP\n\t *\n\t * https://www.iubenda.com/en/help/1205-how-to-configure-your-cookie-solution-advanced-guide\n\t *\n\t * If visitor accepts cookies in Iubenda CMP unblock the scripts\n\t *\n\t * This might not work as of now (11.07.2023) the Iubenda CMP does not trigger any events.\n\t *\n\t * We might have to use a mutation observer to detect changes in the DOM.\n\t * This is also risky because we might read out the values faster than Iubenda can update them.\n\t */\n\n\t// Load after the document is fully loaded\n\t// Check if a button with one of the following classes was clicked\n\t// iubenda-cs-btn-primary\n\t// If it was clicked, recheck the cookies and unblock the scripts\n\t// jQuery(document).ready(() => {\n\t//\n\t// \tjQuery(document).on(\"click\", \".iubenda-cs-btn-primary\", () => {\n\t// \t\twpm.updateConsentCookieValues()\n\t// \t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t// \t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t// \t})\n\t//\n\t// \t// if the event save-button-clicked is triggered, recheck the cookies and unblock the scripts\n\t// \tjQuery(document).on(\"iubenda-cs-btn-primary\", () => {\n\t// \t\t// wpm.updateConsentCookieValues()\n\t// \t\t// wpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t// \t\t// wpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t// \t\tconsole.log(\"iubenda-cs-btn-primary clicked\")\n\t// \t})\n\t//\n\t// })\n\t//\n\t// wpm.iubObserver = new MutationObserver(mutations => {\n\t// \tmutations.forEach(({addedNodes}) => {\n\t// \t\t[...addedNodes]\n\t// \t\t\t.forEach(node => {\n\t//\n\t// \t\t\t\t// console.log(node)\n\t//\n\t// \t\t\t\tif (node.id === \"iubenda-cs-banner\") {\n\t//\n\t// \t\t\t\t\t// jQuery(\".hu-cookies-save\").on(\"click\", function () {\n\t// \t\t\t\t\t// jQuery(\".hu-cookies-save\") in pure JavaScript\n\t// \t\t\t\t\tdocument.querySelector(\".iubenda-cs-btn-primary\").addEventListener(\"click\", () => {\n\t// \t\t\t\t\t\t// wpm.updateConsentCookieValues()\n\t// \t\t\t\t\t\t// wpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t// \t\t\t\t\t\t// wpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t//\n\t// \t\t\t\t\t\tconsole.log(\"iubenda-cs-btn-primary clicked\")\n\t// \t\t\t\t\t})\n\t// \t\t\t\t}\n\t// \t\t\t})\n\t// \t})\n\t// })\n\t//\n\t// if (window._iub) {\n\t// \twpm.iubObserver.observe(document.documentElement || document.body, {childList: true, subtree: true})\n\t// }\n\n\t// doesn't work if the PMW is lazy loaded\n\t// checkIubendaLoaded = setInterval(function() {\n\t// \tif (window?._iub && window?._iub?.csConfiguration) {\n\t// \t\twindow._iub.csConfiguration.callback = {\n\t// \t\t\tonPreferenceExpressed: function (preference) {\n\t// \t\t\t\tconsole.log('onPreferenceExpressed after load', preference);\n\t// \t\t\t}\n\t// \t\t};\n\t// \t\tclearInterval(checkIubendaLoaded);\n\t// \t}\n\t// }, 100);\n\n\t// if (window?._iub && window?._iub?.csConfiguration) {\n\t// \twindow._iub.csConfiguration.callback = {\n\t// \t\tonPreferenceExpressed: function (preference) {\n\t// \t\t\tconsole.log('onPreferenceExpressed after load X', preference);\n\t// \t\t}\n\t// \t};\n\t// }\n\t//\n\t// console.log('iubenda loaded');\n\n\n\t/**\n\t * Usercentrics Event Listeners\n\t *\n\t * https://docs.usercentrics.com/#/v2-events?id=usage-as-window-event\n\t */\n\n\twindow.addEventListener(\"ucEvent\", e => {\n\t\tif (e.detail && e.detail.event == \"consent_status\") {\n\t\t\t// check for consent status of service \"Google Ads Remarketing\"\n\t\t\tif (e.detail[\"Google Ads Remarketing\"] === true) {\n\t\t\t\twpm.consoleLog(\"Google Ads Remarketing has consent\")\n\t\t\t} else {\n\t\t\t\twpm.consoleLog(\"Google Ads Remarketing has no consent\")\n\t\t\t}\n\t\t}\n\t})\n\n\t// https://docs.usercentrics.com/#/v2-events?id=uc_ui_cmp_event\n\twindow.addEventListener(\"UC_UI_CMP_EVENT\", event => {\n\n\t\tif (event.detail.type === \"ACCEPT_ALL\") {\n\t\t\t// console.log('accept all');\n\n\t\t\tpmw.consentAcceptAll()\n\t\t}\n\n\t\tif (event.detail.type === \"DENY_ALL\") {\n\t\t\tpmw.consentRevokeAll()\n\t\t}\n\n\t\tif (event.detail.type === \"SAVE\") {\n\t\t\twpm.consoleLog(\"event.detail\", event.detail)\n\t\t}\n\t})\n\n\n\t/**\n\t * OneTrust Event Listeners\n\t *\n\t * CookiePro by OneTrust doesn't emit any events when the user accepts or declines cookies.\n\t */\n\n\t// There are two accept all buttons. One in the first banner and one in the settings window. Both have different identifiers.\n\tjQuery(\"#accept-recommended-btn-handler, #onetrust-accept-btn-handler\").on(\"click\", () => {\n\n\t\t// If OneTrust is not loaded, return\n\t\tif (typeof window.OneTrust === \"undefined\") return\n\n\t\tpmw.consentAcceptAll()\n\t})\n\n\t// There are two revoke all buttons. One in the first banner and one in the settings window. Both have different identifiers.\n\tjQuery(\".ot-pc-refuse-all-handler, #onetrust-reject-all-handler\").on(\"click\", () => {\n\t\tpmw.consentRevokeAll()\n\t})\n\n\t// There is one save button that saves mixed consent. It is in the settings window. We reload the page after saving to reflect the changes.\n\tjQuery(\".save-preference-btn-handler.onetrust-close-btn-handler\").on(\"click\", () => {\n\t\tlocation.reload()\n\n\t\t// OneTrust.OnConsentChanged(function (e) {\n\t\t// \tpmw.consentAdjustSelectively({\n\t\t// \t\tanalytics: e.detail.includes(\"2\"),\n\t\t// \t\tads : e.detail.includes(\"4\"),\n\t\t// \t})\n\t\t// })\n\t})\n\n\t/**\n\t * Termly Event Listeners\n\t *\n\t * The event listener is within /sources/termly_web/resource-blocker/src/constants/lifeCycle.js\n\t */\n\n\tdocument.addEventListener(\"termlyConsent\", function (e) {\n\n\t\tconst consent = e.detail\n\n\t\tif (consent.advertising && consent.analytics) {\n\t\t\tpmw.consentAcceptAll()\n\t\t} else if (!consent.advertising && !consent.analytics) {\n\t\t\tpmw.consentRevokeAll()\n\t\t} else {\n\t\t\tpmw.consentAdjustSelectively({\n\t\t\t\tanalytics: consent.analytics,\n\t\t\t\tads : consent.advertising,\n\t\t\t})\n\t\t}\n\t})\n\n\twpm.updateGoogleConsentMode = (analytics = true, ads = true) => {\n\n\t\ttry {\n\t\t\tif (\n\t\t\t\t!window.gtag ||\n\t\t\t\t!wpmDataLayer.general.cookie_consent_mgmt.explicit_consent\n\t\t\t) return\n\n\t\t\tgtag(\"consent\", \"update\", {\n\t\t\t\tanalytics_storage : analytics ? \"granted\" : \"denied\",\n\t\t\t\tad_storage : ads ? \"granted\" : \"denied\",\n\t\t\t\tad_user_data : ads ? \"granted\" : \"denied\",\n\t\t\t\tad_personalization: ads ? \"granted\" : \"denied\",\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n\n\n(function (pmw, $, undefined) {\n\n\t/**\n\t * Pixel Manager Cookie Consent API\n\t */\n\n\t// Accept consent for all cookies\n\tpmw.consentAcceptAll = (settings = {}) => {\n\n\t\tsettings.duration = settings.duration || 365\n\n\t\tpmw.consentSetCookie(true, true, settings.duration)\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t}\n\n\t// Accept consent selectively\n\tpmw.consentAdjustSelectively = (settings) => {\n\n\t\t// if settings.marketing is set\n\t\t// write its value to settings.ads\n\t\t// and delete settings.marketing\n\t\tif (settings.marketing !== undefined) {\n\t\t\tsettings.ads = settings.marketing\n\t\t\tdelete settings.marketing\n\t\t}\n\n\t\t// If settings.analytics is set, keep it, otherwise set it to wpm.getConsentValues().categories.analytics\n\t\tsettings.analytics = settings.analytics !== undefined ? settings.analytics : wpm.getConsentValues().categories.analytics\n\t\tsettings.ads = settings.ads !== undefined ? settings.ads : wpm.getConsentValues().categories.ads\n\t\tsettings.duration = settings.duration || 365\n\n\t\t// console.log(\"settings\", settings)\n\n\t\tpmw.consentSetCookie(settings.analytics, settings.ads, settings.duration)\n\t\twpm.unblockAllScripts(settings.analytics, settings.ads)\n\t\twpm.updateGoogleConsentMode(settings.analytics, settings.ads)\n\t}\n\n\t// Remove consent for all cookies\n\tpmw.consentRevokeAll = (settings = {}) => {\n\n\t\tsettings.duration = settings.duration || 365\n\n\t\twpm.setConsentValueCategories(false, false)\n\t\tpmw.consentSetCookie(false, false, settings.duration)\n\t\twpm.updateGoogleConsentMode(false, false)\n\t}\n\n\t// Set a cookie called pmw_cookie_consent with the value of pmw_cookie_consent\n\t// and set the default expiration date to 1 year from now\n\tpmw.consentSetCookie = (analytics, ads, duration = 365) => {\n\t\twpm.setCookie(\"pmw_cookie_consent\", JSON.stringify({analytics, ads}), duration)\n\t}\n\n\tpmw.triggerPmwCookieConsentManagementLoaded = () => {\n\t\t// Trigger an event once the PMW consent management has been loaded\n\t\tdocument.dispatchEvent(new Event(\"pmw_cookie_consent_management_loaded\"))\n\t\tdocument.dispatchEvent(new Event(\"pmwCookieConsentManagementLoaded\"))\n\t}\n\n\tpmw.triggerPmwCookieConsentManagementLoaded()\n\n\t// Get that state for the statistics or marketing cookies\n\tpmw.getConsentValues = () => {\n\t\treturn wpm.getConsentValues()\n\t}\n\n}(window.pmw = window.pmw || {}, jQuery))\n","/**\n * remove_from_cart event\n *\n * Cannot be attached directly because the mini cart doesn't necessarily contain the remove button on page load.\n */\njQuery(document).on(\"click\", \".remove_from_cart_button, .remove\", (event) => {\n\n\t// console.log(\"remove_from_cart event\" + new Date().getTime())\n\n\ttry {\n\n\t\tlet url = new URL(jQuery(event.currentTarget).attr(\"href\"))\n\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\t\twpm.removeProductFromCart(productId)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * begin_checkout event\n *\n * Cannot be attached directly because the mini cart doesn't necessarily contain the remove button on page load.\n */\nlet checkoutButtonClasses = [\n\t// \".checkout\", // this is too generic. It triggers on the checkout page on some themes fore each interaction with the checkout form.\n\t\".checkout-button\",\n\t\".cart-checkout-button\",\n\t\".button.checkout\",\n\t\".xoo-wsc-ft-btn-checkout\", // https://xootix.com/side-cart-for-woocommerce/\n\t\".elementor-button--checkout\",\n\t\".xt_woofc-checkout\", // https://wordpress.org/plugins/woo-floating-cart-lite/\n\t\".fkcart-checkout--text\", // https://funnelkit.com/\n]\n\nconst checkoutButtonSelectors = wpm.prepareSelectors(checkoutButtonClasses, \"beginCheckout\")\n\n// https://wordpress.stackexchange.com/a/352171/68337\njQuery(document).on(\"click init_checkout\", checkoutButtonSelectors, () => {\n\n\tjQuery(document).trigger(\"wpmBeginCheckout\")\n})\n\njQuery(document).on(\"updated_cart_totals\", () => {\n\tjQuery(document).trigger(\"wpmViewCart\")\n})\n\n/**\n * Set up PWM events\n */\n\n// track checkout option event: purchase click\n// https://wordpress.stackexchange.com/a/352171/68337\njQuery(document).on(\"wpmLoad\", (event) => {\n\tjQuery(document).on(\"payment_method_selected\", () => {\n\n\t\tif (false === wpm.paymentMethodSelected) {\n\t\t\twpm.fireCheckoutProgress(3)\n\t\t}\n\n\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t\twpm.paymentMethodSelected = true\n\t})\n})\n\n// populate the wpmDataLayer with the cart items\njQuery(document).on(\"wpmLoad\", () => {\n\n\ttry {\n\t\twpm.initCart()\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// get all add-to-cart= products from backend\njQuery(document).on(\"wpmLoad\", () => {\n\n\twpmDataLayer.products = wpmDataLayer.products || {}\n\n\t// scan page for add-to-cart= links\n\tlet productIds = wpm.getAddToCartLinkProductIds()\n\n\twpm.getProductsFromBackend(productIds)\n})\n\n/**\n * Save the referrer into a cookie\n */\n\njQuery(document).on(\"wpmLoad\", () => {\n\n\t// If the referrer is already stored, then return\n\tif (wpm.retrieveData(\"referrer\")) {\n\t\treturn\n\t}\n\n\tif (document.referrer) {\n\t\tlet referrerUrl = new URL(document.referrer)\n\t\tlet referrerHostname = referrerUrl.hostname\n\n\t\tif (referrerHostname !== window.location.host) {\n\t\t\twpm.storeData(\"referrer\", referrerHostname)\n\t\t}\n\t}\n})\n\n\n/**\n * Create our own load event in order to better handle script flow execution when JS \"optimizers\" shuffle the code.\n */\njQuery(document).on(\"wpmLoad\", () => {\n\t// document.addEventListener(\"wpmLoad\", function () {\n\ttry {\n\t\tif (typeof wpmDataLayer != \"undefined\" && !wpmDataLayer?.pmw_loaded) {\n\n\t\t\tjQuery(document).trigger(\"wpmLoadAlways\")\n\n\t\t\tif (wpmDataLayer?.shop) {\n\t\t\t\tif (\n\t\t\t\t\t\"product\" === wpmDataLayer.shop.page_type &&\n\t\t\t\t\t\"variable\" !== wpmDataLayer.shop.product_type &&\n\t\t\t\t\twpm.getMainProductIdFromProductPage()\n\t\t\t\t) {\n\t\t\t\t\tlet product = wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage())\n\t\t\t\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\t\t\t\t} else if (\"product_category\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmCategory\")\n\t\t\t\t} else if (\"search\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"pmwEvent:Search\")\n\t\t\t\t} else if (\"cart\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmViewCart\")\n\t\t\t\t} else if (\"order_received_page\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tif (wpmDataLayer?.order && !wpm.isOrderIdStored(wpmDataLayer.order.id)) {\n\t\t\t\t\t\tjQuery(document).trigger(\"wpmOrderReceivedPage\")\n\t\t\t\t\t\twpm.writeOrderIdToStorage(wpmDataLayer.order.id, wpmDataLayer.order.key)\n\t\t\t\t\t\tif (typeof wpm.acrRemoveCookie === \"function\") wpm.acrRemoveCookie()\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.user?.id && !wpm.hasLoginEventFired()) {\n\t\t\t\tjQuery(document).trigger(\"wpmLogin\")\n\t\t\t\twpm.setLoginEventFired()\n\t\t\t}\n\n\t\t\twpmDataLayer.pmw_loaded = true\n\t\t}\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\njQuery(document).on(\"wpmLoad\", async () => {\n\tif (wpm.retrieveData(\"restEndpointAvailable\") === false) wpm.consoleError(\"REST endpoint is not available. Using admin-ajax.php instead.\")\n})\n\n\n/**\n * Load all pixels\n */\njQuery(document).on(\"wpmPreLoadPixels\", () => {\n\n\tif (wpmDataLayer?.general?.cookie_consent_mgmt?.explicit_consent && !wpm.explicitConsentStateAlreadySet()) {\n\t\twpm.updateConsentCookieValues(null, null, true)\n\t}\n\n\tjQuery(document).trigger(\"wpmLoadPixels\", {})\n})\n\n\n/**\n * All ecommerce events\n */\n\n/**\n * Add to cart event\n */\njQuery(document).on(\"wpmAddToCart\", (event, product) => {\n\n\twpm.consoleLog(\"wpmAddToCart event fired\", {event, product})\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"addToCart\",\n\t\tproduct: product,\n\t}\n\n\t// Facebook\n\t// If Facebook pixel is loaded, add Facebook server to server event data to the payload\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"AddToCart\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : wpm.fbGetProductDataForCapiEvent(product),\n\t\t}\n\t}\n\n\t// Pinterest\n\t// https://developers.pinterest.com/docs/conversions/best/\n\t// https://developers.pinterest.com/docs/api/v5/#operation/events/create\n\t// https://developers.pinterest.com/docs/conversions/event/\n\tif (wpmDataLayer?.pixels?.pinterest?.loaded) {\n\n\t\tpayload.pinterest = wpm.getPinterestS2SBaseData()\n\n\t\tpayload.pinterest.event_name = \"addtocart\"\n\t\tpayload.pinterest.custom_data = wpm.pinterestGetProductDataForCapiEvent(product)\n\t}\n\n\t// TikTok\n\t// https://ads.tiktok.com/gateway/docs/index?identify_key=c0138ffadd90a955c1f0670a56fe348d1d40680b3c89461e09f78ed26785164b&language=ENGLISH&doc_id=1739585702922241#item-link-Adding%20parameters%20to%20event%20code\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"AddToCart\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tvalue : product.price * product.quantity,\n\t\t\t\tcurrency: product.currency,\n\t\t\t\tcontents: [{\n\t\t\t\t\tcontent_id : product.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],\n\t\t\t\t\tcontent_type: \"product\",\n\t\t\t\t\tcontent_name: product.name,\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t}],\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideAddToCart\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\twpm.sendEventPayloadToServer(payload)\n})\n\n/**\n * Begin checkout event\n */\njQuery(document).on(\"wpmBeginCheckout\", (event) => {\n\n\twpm.consoleLog(\"wpmBeginCheckout event fired\", {event})\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"beginCheckout\",\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"InitiateCheckout\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {},\n\t\t}\n\n\t\tif (wpmDataLayer?.cart && !jQuery.isEmptyObject(wpmDataLayer.cart)) {\n\t\t\tpayload.facebook.custom_data = {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tcontent_ids : wpm.fbGetContentIdsFromCart(),\n\t\t\t\tvalue : wpm.getCartValue(),\n\t\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\t}\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"InitiateCheckout\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: wpm.tiktokGetPropertiesFromCart(),\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideBeginCheckout\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\twpm.sendEventPayloadToServer(payload)\n})\n\n/**\n * Add to wishlist event\n */\njQuery(document).on(\"wpmAddToWishlist\", (event, product) => {\n\n\twpm.consoleLog(\"wpmAddToWishlist event fired\", {event, product})\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"addToWishlist\",\n\t\tproduct: product,\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"AddToWishlist\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : wpm.fbGetProductDataForCapiEvent(product),\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"AddToWishlist\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tvalue : product.price * product.quantity,\n\t\t\t\tcurrency: product.currency,\n\t\t\t\tcontents: [{\n\t\t\t\t\tcontent_id : product.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],\n\t\t\t\t\tcontent_type: \"product\",\n\t\t\t\t\tcontent_name: product.name,\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t}],\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideAddToWishlist\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\twpm.sendEventPayloadToServer(payload)\n})\n\n/**\n * View Item event\n */\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\twpm.consoleLog(\"wpmViewItem event fired\", {event, product})\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"viewItem\",\n\t\tproduct: product,\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"ViewContent\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {},\n\t\t}\n\n\t\tif (product) {\n\t\t\tpayload.facebook.custom_data = wpm.fbGetProductDataForCapiEvent(product)\n\t\t}\n\t}\n\n\t// Pinterest\n\t// https://developers.pinterest.com/docs/conversions/best/\n\t// https://developers.pinterest.com/docs/api/v5/#operation/events/create\n\t// https://developers.pinterest.com/docs/conversions/event/\n\tif (wpmDataLayer?.pixels?.pinterest?.loaded) {\n\n\t\tpayload.pinterest = wpm.getPinterestS2SBaseData()\n\n\t\tpayload.pinterest.event_name = \"pagevisit\"\n\n\t\tif (product) {\n\t\t\tpayload.pinterest.custom_data = wpm.pinterestGetProductDataForCapiEvent(product)\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"ViewContent\",\n\t\t\tevent_id: wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t}\n\n\t\tif (product) {\n\t\t\tpayload.tiktok.properties = {\n\t\t\t\tvalue : product.price * product.quantity,\n\t\t\t\tcurrency: product.currency,\n\t\t\t\tcontents: [{\n\t\t\t\t\tcontent_id : product.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],\n\t\t\t\t\tcontent_type: \"product\",\n\t\t\t\t\tcontent_name: product.name,\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t}],\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideViewItem\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\twpm.sendEventPayloadToServer(payload)\n})\n\n/**\n * View category event\n */\njQuery(document).on(\"wpmCategory\", (event, product = null) => {\n\n\twpm.consoleLog(\"wpmCategory event fired\", {event, product})\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"viewCategory\",\n\t}\n\n\t// Pinterest\n\t// https://developers.pinterest.com/docs/conversions/best/\n\t// https://developers.pinterest.com/docs/api/v5/#operation/events/create\n\t// https://developers.pinterest.com/docs/conversions/event/\n\tif (wpmDataLayer?.pixels?.pinterest?.loaded) {\n\n\t\tpayload.pinterest = wpm.getPinterestS2SBaseData()\n\n\t\tpayload.pinterest.event_name = \"viewcategory\"\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideViewCategory\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\twpm.sendEventPayloadToServer(payload)\n})\n\n/**\n * Search event\n */\njQuery(document).on(\"pmwEvent:Search\", (event) => {\n\n\twpm.consoleLog(\"pmwEvent:Search event fired\", {event})\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"search\",\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"Search\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {\n\t\t\t\tsearch_string: wpm.getSearchTermFromUrl(),\n\t\t\t},\n\t\t}\n\t}\n\n\t// Pinterest\n\t// https://developers.pinterest.com/docs/conversions/best/\n\t// https://developers.pinterest.com/docs/api/v5/#operation/events/create\n\t// https://developers.pinterest.com/docs/conversions/event/\n\tif (wpmDataLayer?.pixels?.pinterest?.loaded) {\n\n\t\tpayload.pinterest = wpm.getPinterestS2SBaseData()\n\n\t\tpayload.pinterest.event_name = \"search\"\n\t\tpayload.pinterest.custom_data = {\n\t\t\tsearch_string: wpm.getSearchTermFromUrl(),\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"Search\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tquery: wpm.getSearchTermFromUrl(),\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideSearch\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\twpm.sendEventPayloadToServer(payload)\n})\n\n/**\n * Place order event\n */\njQuery(document).on(\"wpmPlaceOrder\", (event) => {\n\n\twpm.consoleLog(\"wpmPlaceOrder event fired\", {event})\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"placeOrder\",\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"PlaceAnOrder\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: wpm.tiktokGetPropertiesFromCart(),\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientPlaceOrder\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\twpm.sendEventPayloadToServer(payload)\n})\n\n/**\n * Order received event\n */\njQuery(document).on(\"wpmOrderReceivedPage\", (event) => {\n\n\twpm.consoleLog(\"wpmOrderReceivedPage event fired\", {event})\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"orderReceived\",\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"Purchase\",\n\t\t\tevent_id : wpmDataLayer.order.id.toString(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tvalue : wpmDataLayer.order.value.marketing,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tcontent_ids : wpm.facebookContentIds(),\n\t\t\t},\n\t\t}\n\t}\n\n\t// Pinterest\n\t// https://developers.pinterest.com/docs/conversions/best/\n\t// https://developers.pinterest.com/docs/api/v5/#operation/events/create\n\t// https://developers.pinterest.com/docs/conversions/event/\n\tif (wpmDataLayer?.pixels?.pinterest?.loaded) {\n\n\t\tpayload.pinterest = wpm.getPinterestS2SBaseData()\n\n\t\tpayload.pinterest.event_name = \"checkout\"\n\t}\n\n\t// TikTok\n\t// https://ads.tiktok.com/help/article/standard-events-parameters\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"CompletePayment\",\n\t\t\tevent_id : wpmDataLayer.order.id.toString(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tvalue : wpmDataLayer.order.value.marketing,\n\t\t\t\tcurrency: wpmDataLayer.order.currency,\n\t\t\t\tcontents: wpm.getTikTokOrderItemIds(),\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideOrderReceivedPage\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// ! No server-to-server event is sent for this event because it is compiled and sent from the server directly\n})\n\njQuery(document).on(\"pmw:ready\", async () => {\n\n\t/**\n\t * Run as soon as wpm namespace is loaded\n\t */\n\n\t// Watch for products visible in viewport\n\twpm.startIntersectionObserverToWatch()\n\n\t// Watch for lazy loaded products\n\twpm.startProductsMutationObserverToWatch()\n})\n","/**\n * Register event listeners\n */\n\n\n/**\n * add_to_cart event\n *\n * WC is inconsistent with events that emit add-to-cart events.\n * adding_to_cart and added_to_are legacy events. Also, they only work\n * on Ajax buttons on shop pages.\n *\n * Never add document or body selectors.\n * The document selector doesn't work.\n * The body selector will cause the events to fire twice and other erratic behavior if used along with other selectors.\n */\nconst addToCartSelectorsArray = [\n\t// \"document\",\n\t// \"body\",\n\t\".add_to_cart_button:not(.product_type_variable)\",\n\t\".ajax_add_to_cart\",\n\t\".single_add_to_cart_button\",\n]\n\nconst addToCartSelectors = wpm.prepareSelectors(addToCartSelectorsArray, \"addToCart\")\n\njQuery(addToCartSelectors).on(\"click adding_to_cart\", (event, data) => {\n\n\t// console.log(\"add_to_cart event fired at: \" + new Date().getTime())\n\t// console.log('add to cart data', data)\n\t// console.log('add to cart event', event)\n\t// console.log('add to cart jQuery(event.target.dataset)', jQuery(event.target.dataset))\n\t// console.log(\"add to cart event.target.dataset\", event.target.dataset)\n\t// console.log(\"add to cart event.target.dataset.quantity\", event.target.dataset.quantity)\n\t// console.log(\"add to cart event.target.dataset.product_id\", event.target.dataset.product_id)\n\n\ttry {\n\n\t\t// console.log(\"add_to_cart event detected\")\n\n\t\tlet quantity = event?.target?.dataset?.quantity ? event.target.dataset.quantity : null\n\t\tlet productId = event?.target?.dataset?.product_id ? event.target.dataset.product_id : null\n\n\t\t// let quantity = event.target.dataset.quantity ? event.target.dataset.quantity : 1\n\t\t// let productId = event.target.dataset.product_id ? event.target.dataset.product_id : null\n\n\t\t// Only process on product pages\n\t\tif (wpmDataLayer.shop.page_type === \"product\") {\n\n\t\t\t// First process related and upsell products\n\t\t\tif (\n\t\t\t\ttypeof jQuery(event.currentTarget).attr(\"href\") !== \"undefined\"\n\t\t\t\t&& jQuery(event.currentTarget).attr(\"href\").includes(\"add-to-cart\")\n\t\t\t) {\n\n\t\t\t\tif (!productId) {\n\t\t\t\t\tproductId = jQuery(event.currentTarget).data(\"product_id\")\n\t\t\t\t}\n\n\t\t\t\twpm.addProductToCart(productId, 1)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If is simple product\n\t\t\tif (wpmDataLayer.shop.product_type === \"simple\") {\n\n\t\t\t\tif (quantity === null) {\n\t\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val()) ? Number(jQuery(\".input-text.qty\").val()) : 1\n\t\t\t\t}\n\n\t\t\t\tif (!productId) {\n\t\t\t\t\tproductId = jQuery(event.currentTarget).val()\n\t\t\t\t}\n\n\t\t\t\t// Fallback if the body selector is used\n\t\t\t\tif (!productId) {\n\t\t\t\t\t// get the product ID from the element that has the class .product\n\t\t\t\t\t// that element will also have an ID that start with product- and ends with the product ID\n\t\t\t\t\t// example: product-123\n\t\t\t\t\t// save the product ID in the variable productId\n\t\t\t\t\tproductId = jQuery(\".product\").attr(\"id\").replace(\"product-\", \"\")\n\t\t\t\t}\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If is variable product or variable-subscription\n\t\t\tif ([\"variable\", \"variable-subscription\"].indexOf(wpmDataLayer.shop.product_type) >= 0) {\n\n\t\t\t\tif (quantity === null) {\n\t\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val()) ? Number(jQuery(\".input-text.qty\").val()) : 1\n\t\t\t\t}\n\n\t\t\t\tif (!productId) {\n\t\t\t\t\tproductId = jQuery(\"[name='variation_id']\").val()\n\t\t\t\t}\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If is grouped product\n\t\t\tif (wpmDataLayer.shop.product_type === \"grouped\") {\n\n\t\t\t\tjQuery(\".woocommerce-grouped-product-list-item\").each((index, element) => {\n\n\t\t\t\t\t// Can't rely on event.target.dataset as it always is sent with the parent product ID and the quantity 1\n\n\t\t\t\t\tquantity = Number(jQuery(element).find(\".input-text.qty\").val()) ? Number(jQuery(element).find(\".input-text.qty\").val()) : 1\n\n\t\t\t\t\tlet classes = jQuery(element).attr(\"class\")\n\t\t\t\t\tproductId = wpm.getPostIdFromString(classes)\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If is bundle product\n\t\t\tif (wpmDataLayer.shop.product_type === \"bundle\") {\n\n\t\t\t\tif (quantity === null) {\n\t\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val()) ? Number(jQuery(\".input-text.qty\").val()) : 1\n\t\t\t\t}\n\n\t\t\t\tif (!productId) {\n\t\t\t\t\tproductId = jQuery(\"input[name=add-to-cart]\").val()\n\t\t\t\t}\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// everything else\n\t\t\tif (quantity === null) {\n\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val()) ? Number(jQuery(\".input-text.qty\").val()) : 1\n\t\t\t}\n\n\t\t\twpm.addProductToCart(productId, quantity)\n\n\t\t} else {\n\n\t\t\tif (quantity === null) {\n\t\t\t\tquantity = 1\n\t\t\t}\n\n\t\t\tif (!productId) {\n\t\t\t\t// console.log(\"add to cart event.currentTarget\", event.currentTarget)\n\t\t\t\tproductId = jQuery(event.currentTarget).data(\"product_id\") ? jQuery(event.currentTarget).data(\"product_id\") : null\n\t\t\t}\n\n\t\t\t// Another fallback to retrieve the product ID in case the ID is saved in the value attribute\n\t\t\tif (!productId) {\n\t\t\t\tproductId = jQuery(event.currentTarget).val() ? jQuery(event.currentTarget).val() : null\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tproductId\n\t\t\t\t&& quantity\n\t\t\t) {\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\t\t}\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * If someone clicks anywhere on a custom /?add-to-cart=123 link\n * trigger the add to cart event\n */\n\n// jQuery(document).one(\"click\", \"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\", (event) => {\njQuery(\"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\").one(\"click\", (event) => {\n\n\ttry {\n\t\tif (jQuery(event.target).closest(\"a\").attr(\"href\")) {\n\n\t\t\tlet url = new URL(jQuery(event.currentTarget).attr(\"href\"), window.location.origin)\n\n\t\t\tif (url.searchParams.has(\"add-to-cart\")) {\n\n\t\t\t\tlet productId = url.searchParams.get(\"add-to-cart\")\n\t\t\t\twpm.addProductToCart(productId, 1)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// select item event\n// jQuery(document).on(\"click\", \".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product\", (event) => {\njQuery(\".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product\").on(\"click\", (event) => {\n\n\ttry {\n\n\t\t/**\n\t\t * On some pages the event fires multiple times, and on product pages\n\t\t * even on page load. Using e.stopPropagation helps to prevent this,\n\t\t * but I don't know why. We don't even have to use this, since only a real\n\t\t * product click yields a valid productId. So we filter the invalid click\n\t\t * events out later down in the code. I'll keep it that way because this is\n\t\t * the most compatible way across shops.\n\t\t *\n\t\t * e.stopPropagation();\n\t\t * */\n\n\t\tlet productId = jQuery(event.currentTarget).nextAll(\".wpmProductId:first\").data(\"id\")\n\n\t\t/**\n\t\t * On product pages, for some reason, the click event is triggered on the main product on page load.\n\t\t * In that case no ID is found. But we can discard it, since we only want to trigger the event on\n\t\t * related products, which are found below.\n\t\t */\n\n\t\tif (productId) {\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (wpmDataLayer.products && wpmDataLayer.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\t\t\tjQuery(document).trigger(\"wpmSelectContentGaUa\", product)\n\t\t\t\tjQuery(document).trigger(\"wpmSelectItem\", product)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// checkout_progress event\n// track checkout option event: entered valid billing email\n// jQuery(document).on(\"input\", \"#billing_email\", (event) => {\njQuery(\"#billing_email\").on(\"input\", (event) => {\n\n\tif (wpm.isEmail(jQuery(event.currentTarget).val())) {\n\t\t// wpm.fireCheckoutOption(2);\n\t\twpm.fireCheckoutProgress(2)\n\t\twpm.emailSelected = true\n\t}\n})\n\n\n/**\n * Place order button\n *\n * Track checkout option event: purchase click\n * https://stackoverflow.com/a/34112407/4688612\n * jQuery(document).one(\"click\", \"#place_order\", () => {\n *\n * Has to be hooked after document ready !\n */\njQuery(\"form.checkout\").on(\"checkout_place_order_success\", () => {\n\n\t// console log current time\n\t// console.log(\"checkout_place_order_success event fired at: \" + new Date().getTime())\n\n\tif (false === wpm.emailSelected) {\n\t\twpm.fireCheckoutProgress(2)\n\t}\n\n\tif (false === wpm.paymentMethodSelected) {\n\t\twpm.fireCheckoutProgress(3)\n\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t}\n\n\twpm.fireCheckoutProgress(4)\n\n\tjQuery(document).trigger(\"wpmPlaceOrder\", {})\n})\n\n/**\n * Update cart event\n *\n * Has to be hooked after document ready !\n */\njQuery(\"[name='update_cart']\").on(\"click\", () => {\n\n\t// console.log(\"update_cart event fired at: \" + new Date().getTime())\n\n\ttry {\n\t\tjQuery(\".cart_item\").each((index, element) => {\n\n\t\t\tconst productId = wpm.getProductIdByCartItemElement(element)\n\n\t\t\tif (!productId) {\n\t\t\t\tconsole.error(\"Pixel Manager: Wasn't able to retrieve a productId\")\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst quantity = wpm.getProductQuantityByCartItemElement(element)\n\n\t\t\tif (!quantity) {\n\t\t\t\tconsole.error(\"Pixel Manager: Wasn't able to retrieve a quantity\")\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// console.log(\"productId\", productId)\n\t\t\t// console.log(\"quantity\", quantity)\n\n\t\t\tif (quantity === 0) {\n\t\t\t\twpm.removeProductFromCart(productId)\n\t\t\t} else if (quantity < wpmDataLayer.cart[productId].quantity) {\n\t\t\t\twpm.removeProductFromCart(productId, wpmDataLayer.cart[productId].quantity - quantity)\n\t\t\t} else if (quantity > wpmDataLayer.cart[productId].quantity) {\n\t\t\t\twpm.addProductToCart(productId, quantity - wpmDataLayer.cart[productId].quantity)\n\t\t\t}\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t\twpm.getCartItemsFromBackend()\n\t}\n})\n\n// add_to_wishlist\njQuery(\".add_to_wishlist,.wl-add-to\").on(\"click\", event => {\n\n\ttry {\n\n\t\tlet productId\n\n\t\tif (jQuery(event.currentTarget).data(\"productid\")) { // for the WooCommerce wishlist plugin\n\n\t\t\tproductId = jQuery(event.currentTarget).data(\"productid\")\n\t\t} else if (jQuery(event.currentTarget).data(\"product-id\")) { // for the YITH wishlist plugin\n\n\t\t\tproductId = jQuery(event.currentTarget).data(\"product-id\")\n\t\t}\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\n\t\tjQuery(document).trigger(\"wpmAddToWishlist\", product)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * Called when the user selects all the required dropdowns / attributes\n *\n * Has to be hooked after document ready !\n *\n * https://stackoverflow.com/a/27849208/4688612\n * https://stackoverflow.com/a/65065335/4688612\n */\n\njQuery(\".single_variation_wrap\").on(\"show_variation\", (event, variation) => {\n\n\ttry {\n\t\tlet productId = wpm.getIdBasedOndVariationsOutputSetting(variation.variation_id)\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\twpm.triggerViewItemEventPrep(productId)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * Called on variable products when no selection has been done yet\n * or when the visitor deselects his choice.\n *\n * Has to be hooked after document ready !\n */\n\n// jQuery(function () {\n//\n// \tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n//\n// \t\ttry {\n// \t\t\tlet classes = jQuery(\"body\").attr(\"class\")\n// \t\t\tlet productId = classes.match(/(postid-)(\\d+)/)[2]\n//\n// \t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n//\n// \t\t\t/**\n// \t\t\t * If we have a variable product with no preset,\n// \t\t\t * and variations output is enabled,\n// \t\t\t * then we send a viewItem event with the first\n// \t\t\t * variation we find for the parent.\n// \t\t\t * If variations output is disabled,\n// \t\t\t * we just send the parent ID.\n// \t\t\t *\n// \t\t\t * And if Facebook microdata is active, use the\n// \t\t\t * microdata product ID.\n// \t\t\t */\n//\n// \t\t\tif (\n// \t\t\t\t\"variable\" === wpmDataLayer.shop.product_type &&\n// \t\t\t\twpmDataLayer?.shop?.variations_output\n// \t\t\t) {\n// \t\t\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n// \t\t\t\t\tif (\"parent_id\" in product) {\n//\n// \t\t\t\t\t\tproductId = product.id\n// \t\t\t\t\t\tbreak\n// \t\t\t\t\t}\n// \t\t\t\t}\n//\n// \t\t\t\tif (wpmDataLayer?.pixels?.facebook?.microdata_product_id) {\n// \t\t\t\t\tproductId = wpmDataLayer.pixels.facebook.microdata_product_id\n// \t\t\t\t}\n// \t\t\t}\n//\n// \t\t\t// console.log(\"hmm\")\n// \t\t\twpm.triggerViewItemEventPrep(productId)\n//\n// \t\t} catch (e) {\n// \t\t\tconsole.error(e)\n// \t\t}\n// \t})\n// })\n\n// jQuery(function () {\n//\n// \tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n// \t\tjQuery(document).trigger(\"wpmviewitem\")\n// \t})\n// })\n","/**\n * Create a wpm namespace under which all functions are declared\n */\n\n// https://stackoverflow.com/a/5947280/4688612\n\n(function (wpm, $, undefined) {\n\n\tconst wpmDeduper = {\n\t\tkeyName : \"_wpm_order_ids\",\n\t\tcookieExpiresDays: 365,\n\t}\n\n\tconst wpmRestSettings = {\n\t\t// cookiesAvailable : '_wpm_cookies_are_available',\n\t\tcookiePmwRestEndpointAvailable: \"restEndpointAvailable\",\n\t\trestEndpointPost : \"pmw/v1/test/\",\n\t\trestFails : 0,\n\t\trestFailsThreshold : 10,\n\t}\n\n\twpm.emailSelected = false\n\twpm.paymentMethodSelected = false\n\n\twpm.isBelowRestErrorThreshold = () => wpm.retrieveData(wpmRestSettings.restFails) <= wpmRestSettings.restFailsThreshold\n\n\twpm.isRestEndpointAvailable = async () => {\n\n\t\t// If we already tested the endpoint and have a stored value, return it\n\t\tif (wpm.retrieveData(wpmRestSettings.cookiePmwRestEndpointAvailable)) {\n\t\t\treturn wpm.retrieveData(wpmRestSettings.cookiePmwRestEndpointAvailable)\n\t\t}\n\n\t\treturn await wpm.testEndpoint()\n\t}\n\n\t/**\n\t * Tests a given endpoint by sending a POST request. If the response status is 200, it stores `true` in the dataStorage with given cookie name; else it stores `false`.\n\t *\n\t * @param {string} url - The URL of the endpoint to test. Defaults to concatenation of `wpm.root` and `wpmRestSettings.restEndpointPost`.\n\t * @param {string} cookieName - The name of the cookie where the test result will be stored. Defaults to `wpmRestSettings.cookiePmwRestEndpointAvailable`.\n\t * @returns {Promise