{"version":3,"file":"v2/trcking.min.js","mappings":"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8CAEf,CAAE,KAAQ,QAAS,UAAa,wBAChC,CACE,KAAQ,aACR,UAAa,sCAEf,CACE,KAAQ,WACR,UAAa,wCAEf,CACE,KAAQ,OACR,UAAa,2CAEf,CACE,KAAQ,gBACR,UACE,sEAEJ,CACE,KAAQ,UACR,UAAa,4CAEf,CAAE,KAAQ,UAAW,UAAa,4BAClC,CACE,KAAQ,YACR,UAAa,kDAEf,CACE,KAAQ,UACR,UACE,8GAEJ,CACE,KAAQ,SACR,UACE,sEAEJ,CACE,KAAQ,eACR,UAAa,mDAEf,CACE,KAAQ,UACR,UACE,kEAEJ,CACE,KAAQ,YACR,UAAa,+CAEf,CAAE,KAAQ,QAAS,UAAa,sCAGpC,CACE,MAAS,CACP,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,OAAU,KACV,aAAgB,CACd,UAAa,yDACb,MAAS,0BACT,SACE,sRACF,eACE,wRACF,mBACE,4LACF,gBACE,qIACF,oBACE,yHACF,eACE,8JACF,oBACE,gLACF,UAAa,sCACb,uBAA0B,wCAC1B,mBAAsB,qCACtB,sBACE,+IACF,kBACE,uOACF,wBAA2B,qBAC3B,oBAAuB,4BACvB,uBACE,gIACF,mBACE,mLACF,uBAA0B,YAC1B,mBAAsB,0BACtB,sBACE,yQACF,mBACE,8JACF,mBACE,6SACF,mBACE,sEACF,mBACE,yFACF,mBACE,gFACF,mBACE,+DACF,mBACE,qFACF,mBACE,gEACF,mBACE,wKACF,qBAAwB,kDACxB,iBAAoB,wBACpB,iBAAoB,UACpB,kBAAqB,kCACrB,cAAiB,0BACjB,aAAgB,eAChB,aAAgB,gBAChB,mBAAsB,wBACtB,SAAY,cACZ,SAAY,qBACZ,gBAAmB,kBACnB,QAAW,UACX,aAAgB,yBAChB,aAAgB,kBAElB,iBACE,uaACF,aAAgB,kDAChB,iBACE,kgBACF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AE,KAAQ,QAAS,UAAa,oCAChC,CACE,KAAQ,cACR,UACE,0EAEJ,CACE,KAAQ,oBACR,UAAa,0DAInB,CACE,MAAS,CAAC,MACV,OAAU,KACV,aAAgB,CACd,UAAa,wDACb,MAAS,6BACT,SACE,0QACF,eACE,kLACF,gBACE,sHACF,eACE,0MACF,oBACE,6JACF,UAAa,0DACb,uBAA0B,wCAC1B,mBAAsB,4CACtB,sBACE,mIACF,kBACE,mOACF,wBAA2B,2BAC3B,oBAAuB,yBACvB,uBACE,+HACF,mBACE,mMACF,uBAA0B,aAC1B,mBAAsB,4BACtB,sBACE,2OACF,mBACE,+JACF,mBACE,oQACF,mBACE,kEACF,mBACE,wFACF,mBACE,mFACF,mBACE,qEACF,mBACE,2EACF,mBACE,kEACF,mBACE,8JACF,qBAAwB,+CACxB,iBAAoB,qBACpB,iBAAoB,UACpB,kBAAqB,8CACrB,cAAiB,gBACjB,aAAgB,gBAChB,aAAgB,gBAChB,mBAAsB,iBACtB,SAAY,UACZ,SAAY,mBACZ,gBAAmB,UACnB,QAAW,UACX,aAAgB,mCAChB,aAAgB,kBAElB,iBAAoB,kDACpB,aAAgB,kDAChB,iBACE,kgBACF,KAAQ,CACN,WACE,kEACF,UAAa,iDACb,aAAgB,+CAChB,cACE,4DACF,mBAAsB,uCACtB,aAAgB,0CAChB,iBAAoB,kCACpB,aAAgB,oCAChB,UAAa,iBACb,YAAe,4BAEjB,cAAiB,IAEnB,CACE,SAAW,EACX,MAAS,CACP,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,OAAU,KACV,aAAgB,CACd,UAAa,2CACb,MAAS,kBACT,SACE,4OACF,eACE,gQACF,mBACE,uKACF,gBACE,oIACF,oBACE,2GACF,eACE,sJACF,mBACE,8IACF,oBACE,4KACF,wBACE,qJAC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","sources":["webpack://@canalplus/tracking-tool/../../node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@canalplus/tracking-tool/./v2/src/PrivacyManager/Popin/popin.css","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/typeof.js","webpack://@canalplus/tracking-tool/./v2/src/PrivacyManager/Popin/_colors.css","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/regenerator/index.js","webpack://@canalplus/tracking-tool/../../node_modules/css-loader/dist/runtime/api.js","webpack://@canalplus/tracking-tool/webpack/bootstrap","webpack://@canalplus/tracking-tool/webpack/runtime/compat get default export","webpack://@canalplus/tracking-tool/webpack/runtime/define property getters","webpack://@canalplus/tracking-tool/webpack/runtime/hasOwnProperty shorthand","webpack://@canalplus/tracking-tool/webpack/runtime/make namespace object","webpack://@canalplus/tracking-tool/./v2/src/PrivacyManager/lang.js","webpack://@canalplus/tracking-tool/./v2/src/PrivacyManager/Constants.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://@canalplus/tracking-tool/./v2/src/Utils.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@canalplus/tracking-tool/../../node_modules/ua-parser-js/src/main/ua-parser.mjs","webpack://@canalplus/tracking-tool/./v2/src/PrivacyManager/campaignHelpers.js","webpack://@canalplus/tracking-tool/./v2/src/DataLayer/EnrichDataLayer.js","webpack://@canalplus/tracking-tool/./v2/src/Integrations/Tealium.js","webpack://@canalplus/tracking-tool/./v2/src/Actions/TrackingActions.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://@canalplus/tracking-tool/./v2/src/PrivacyManager/handlePrivacyManager.js","webpack://@canalplus/tracking-tool/./v2/src/PrivacyManager/Popin/popinRenderer.js","webpack://@canalplus/tracking-tool/./v2/src/Actions/ReceiveFromIframe.js","webpack://@canalplus/tracking-tool/./v2/src/Actions/PrivacyActions.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://@canalplus/tracking-tool/./node_modules/redux/es/redux.js","webpack://@canalplus/tracking-tool/./v2/src/Actions/Middleware.js","webpack://@canalplus/tracking-tool/./v2/src/Actions/store.js","webpack://@canalplus/tracking-tool/./v2/src/Actions/Reducers.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://@canalplus/tracking-tool/../../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@canalplus/tracking-tool/./v2/src/DataLayer/DataLayer.js","webpack://@canalplus/tracking-tool/./v2/src/DataLayer/QueueManagerForLoadEvent.js","webpack://@canalplus/tracking-tool/./v2/src/PrivacyManager/helper.js","webpack://@canalplus/tracking-tool/./v2/src/EntryPoint/main.js","webpack://@canalplus/tracking-tool/./v2/src/Actions/ConfigActions.js"],"sourcesContent":["\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../../../../../node_modules/css-loader/dist/cjs.js!./_colors.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#privacy-manager-popin {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n\\n#pm-overlay {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 99999;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n height: 100vh;\\n text-align: center;\\n background-color: rgb(0 0 0 / 80%);\\n}\\n\\n.pm-popin-content {\\n position: relative;\\n box-sizing: content-box;\\n display: flex;\\n flex-direction: column;\\n width: calc(640px - 2 * 30px);\\n max-height: min(calc(900px - 2 * 60px), (100vh - 100px));\\n padding: 30px;\\n overflow: auto;\\n font-family: Hind, Arial, Helvetica, sans-serif;\\n font-size: 16px;\\n color: var(--trackingtool-color_popin-fg);\\n text-align: left;\\n outline: none;\\n background-color: var(--trackingtool-color_popin-bg);\\n}\\n\\n.pm-popin-content *,\\n.pm-popin-content ::before,\\n.pm-popin-content ::after {\\n box-sizing: border-box;\\n}\\n\\n.pm-header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n margin-bottom: 30px;\\n}\\n\\n.pm-body {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.pm-toggle-button {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n width: fit-content;\\n font-size: 17px;\\n cursor: pointer;\\n background-color: var(--trackingtool-color_toggle-button-bg);\\n border: none;\\n}\\n\\n.pm-toggle-button:hover {\\n color: var(--trackingtool-color_primary-hover-focus);\\n background-color: var(--trackingtool-color_toggle-button-bg);\\n border: none;\\n}\\n\\n.pm-toggle-button:hover .arrow {\\n fill: var(--trackingtool-color_primary-hover-focus);\\n}\\n\\n.pm-toggle-button-text {\\n padding-right: 3px;\\n color: var(--trackingtool-color_primary);\\n text-align: left;\\n}\\n\\n#pm-optout-display {\\n padding: 0;\\n margin-top: 10px;\\n line-height: 1.35;\\n}\\n\\n.arrow {\\n fill: var(--trackingtool-color_primary);\\n}\\n\\n#right-arrow {\\n width: 26px;\\n height: 13px;\\n}\\n\\n.optout-arrow {\\n width: 26px;\\n height: 26px;\\n}\\n\\n#optout-arrow-up {\\n display: none;\\n}\\n\\n#optout-arrow-up.options-opened {\\n display: block;\\n}\\n\\n#optout-arrow-down.options-opened {\\n display: none;\\n}\\n\\n.vendor-arrow {\\n width: 23px;\\n height: 23px;\\n}\\n\\n#vendor-arrow-up {\\n display: none;\\n}\\n\\n#vendor-arrow-up.vendor-opened {\\n display: block;\\n}\\n\\n#vendor-arrow-down.vendor-opened {\\n display: none;\\n}\\n\\n#pm-vendor-list {\\n display: none;\\n max-height: 200px;\\n padding: 1px;\\n margin-top: 10px;\\n overflow: auto;\\n text-align: left;\\n}\\n\\n#pm-vendor-list.vendor-opened {\\n display: block;\\n}\\n\\n#pm-vendor-list table {\\n width: 100%;\\n border-collapse: collapse;\\n}\\n\\n#pm-vendor-list table td,\\n#pm-vendor-list table th {\\n padding: 5px 15px;\\n color: var(--trackingtool-color_popin-fg);\\n border: 1px solid var(--trackingtool-color_popin-fg-secondary);\\n}\\n\\n.vendors {\\n color: var(--trackingtool-color_primary);\\n text-decoration: underline;\\n}\\n\\n.vendors:hover {\\n color: var(--trackingtool-color_primary-hover-focus);\\n text-decoration: underline;\\n}\\n\\n#pm-popin h1 {\\n margin: 0 0 20px;\\n font-family: Hind, Arial, Helvetica, sans-serif;\\n font-size: 26px;\\n font-weight: 400;\\n line-height: 1.08;\\n color: var(--trackingtool-color_white);\\n text-align: left;\\n}\\n\\n#pm-popin h2 {\\n margin-top: 0;\\n font-size: 18px;\\n font-weight: 400;\\n color: var(--trackingtool-color_white);\\n text-decoration: none;\\n}\\n\\n#pm-popin h3 {\\n color: var(--trackingtool-color_white);\\n}\\n\\n#pm-optout-block {\\n display: none;\\n margin-top: 20px;\\n}\\n\\n.pm-optout {\\n display: flex;\\n flex-direction: row;\\n align-items: flex-start;\\n padding: 20px 0;\\n border-top: 1px solid var(--trackingtool-color_border);\\n}\\n\\n.pm-optout-description {\\n display: flex;\\n flex-direction: column;\\n margin-right: 45px;\\n}\\n\\n.pm-optout-title {\\n margin-bottom: 12px;\\n}\\n\\n.pm-optout-title-label {\\n display: block;\\n}\\n\\n.pm-optout-text ul {\\n padding: 12px 0 12px 40px;\\n list-style: disc;\\n}\\n\\n.pm-optout-text p,\\n.pm-optout-text li {\\n margin: 0;\\n line-height: 1.35;\\n color: var(--trackingtool-color_popin-fg-secondary);\\n}\\n\\n.pm-optout-text li:not(:last-child) {\\n margin-bottom: 20px;\\n}\\n\\n.pm-head-text {\\n margin-top: 0;\\n margin-bottom: 10px;\\n font-size: 16px;\\n line-height: 1.31;\\n color: var(--trackingtool-color_popin-fg-secondary);\\n}\\n\\n.pm-switch-label {\\n display: block;\\n}\\n\\n.pm-switch-checkbox {\\n width: 0;\\n height: 0;\\n margin: 0;\\n opacity: 0;\\n}\\n\\n.pm-switch-toggle {\\n position: relative;\\n float: left;\\n display: block;\\n width: 57px;\\n height: 30px;\\n vertical-align: middle;\\n cursor: pointer;\\n user-select: none;\\n outline: none;\\n border-radius: 30px;\\n transition: background 400ms;\\n}\\n\\n.pm-switch-toggle::before,\\n.pm-switch-toggle::after {\\n position: absolute;\\n display: block;\\n content: '';\\n}\\n\\n.pm-switch-toggle::before {\\n top: 2px;\\n right: 2px;\\n bottom: 2px;\\n left: 2px;\\n background-color: var(--trackingtool-color_switch-unchecked-bg);\\n border-radius: 30px;\\n transition: background 400ms;\\n}\\n\\n.pm-switch-toggle::after {\\n top: 4px;\\n bottom: 4px;\\n left: 4px;\\n width: 23px;\\n background-color: var(--trackingtool-color_white);\\n border-radius: 23px;\\n transition:\\n margin 400ms,\\n background 400ms;\\n}\\n\\n.pm-switch-checkbox:checked + .pm-switch-toggle::before {\\n background-color: var(--trackingtool-color_switch-checked-bg);\\n}\\n\\n.pm-switch-checkbox:checked + .pm-switch-toggle::after {\\n margin-left: 26px;\\n}\\n\\n.pm-switch-checkbox:disabled + .pm-switch-toggle::before {\\n background-color: var(--trackingtool-color_switch-disabled-bg);\\n}\\n\\n.pm-switch-checkbox:disabled + .pm-switch-toggle::after {\\n background-color: var(--trackingtool-color_switch-disabled-fg);\\n}\\n\\n.pm-switch-checkbox:disabled + .pm-switch-toggle {\\n cursor: default;\\n}\\n\\n.pm-switch-checkbox:focus + .pm-switch-toggle {\\n outline: 1px solid var(--trackingtool-color_white);\\n box-shadow: 0 0 8px var(--trackingtool-color_white);\\n}\\n\\n.consent-btn {\\n display: flex;\\n justify-content: center;\\n width: calc(50% + 30px);\\n padding: 10px 20px;\\n margin: 5px;\\n font-family: Hind, Arial, Helvetica, sans-serif;\\n font-size: 18px;\\n line-height: 1.56;\\n color: var(--trackingtool-color_button-fg);\\n cursor: pointer;\\n background-color: var(--trackingtool-color_primary);\\n border: none;\\n border-radius: 3px;\\n}\\n\\n.consent-btn:hover,\\n.consent-btn:focus {\\n color: var(--trackingtool-color_button-fg);\\n background-color: var(--trackingtool-color_primary-hover-focus);\\n}\\n\\n.consent-btn-secondary {\\n color: var(--trackingtool-color_button-secondary-fg);\\n background-color: var(--trackingtool-color_button-secondary-bg);\\n}\\n\\n.consent-btn-secondary:hover,\\n.consent-btn-secondary:focus {\\n color: var(--trackingtool-color_button-secondary-fg-hover);\\n background-color: var(--trackingtool-color_button-secondary-bg-hover);\\n}\\n\\n.footer-btn-container {\\n align-items: center;\\n width: 100%;\\n padding: 20px 0;\\n}\\n\\n#decline-btn {\\n position: absolute;\\n top: 30px;\\n right: 30px;\\n display: flex;\\n align-items: center;\\n width: auto;\\n padding: 6px 12px;\\n font-family: Hind, Arial, Helvetica, sans-serif;\\n font-size: 17px;\\n line-height: 1.35;\\n color: var(--trackingtool-color_primary);\\n cursor: pointer;\\n background-color: var(--trackingtool-color_toggle-button-bg);\\n border: none;\\n border-radius: 3px;\\n}\\n\\n[data-theme~='telecomitalia'] #decline-btn span {\\n text-decoration: underline;\\n}\\n\\n#decline-btn:hover,\\n#decline-btn:focus {\\n color: var(--trackingtool-color_primary-hover-focus);\\n background-color: var(--trackingtool-color_toggle-button-bg);\\n}\\n\\n#decline-btn:hover .arrow {\\n fill: var(--trackingtool-color_primary-hover-focus);\\n}\\n\\n#accept-refuse-container {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n#save-exit-container {\\n display: none;\\n border-bottom: 1px solid var(--trackingtool-color_border);\\n}\\n\\n.vendors-container {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n}\\n\\n#pm-ads-vendors {\\n padding: 0;\\n margin-top: 20px;\\n font-size: 16px;\\n line-height: 1.31;\\n text-align: left;\\n}\\n\\n#pm-ads-vendors:hover {\\n color: var(--trackingtool-color_primary-hover-focus);\\n}\\n\\n.pm-footer {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.paragraph-link,\\n.paragraph-link:focus {\\n color: var(--trackingtool-color_popin-fg-secondary);\\n text-decoration: underline;\\n}\\n\\n.paragraph-link:hover {\\n color: var(--trackingtool-color_popin-fg-secondary);\\n text-decoration: underline;\\n}\\n\\n.canalplus-logo,\\n.logo {\\n height: 34px;\\n margin: 0;\\n}\\n\\n#pm-optout-block.options-opened {\\n display: block;\\n}\\n\\n#decline-btn.options-opened {\\n display: none;\\n}\\n\\n#save-exit-container.options-opened {\\n display: flex;\\n justify-content: center;\\n}\\n\\n#refuse-btn {\\n display: none;\\n}\\n\\n#refuse-btn.options-opened {\\n display: flex;\\n margin-top: 20px;\\n}\\n\\n.pm-focusable:focus {\\n outline-width: 1px;\\n outline-style: auto;\\n outline-color: #005fcc;\\n outline-offset: 1px;\\n}\\n\\n@media (width <= 699px) {\\n .pm-popin-content {\\n width: calc(100% - 2 * 15px);\\n padding: 15px;\\n }\\n\\n .canalplus-logo {\\n height: 30px;\\n }\\n\\n .consent-btn {\\n width: 100%;\\n font-size: 18px;\\n }\\n\\n #decline-btn {\\n top: 15px;\\n right: 15px;\\n font-size: 16px;\\n }\\n\\n #right-arrow {\\n width: 20px;\\n height: 10px;\\n }\\n\\n #optout-arrow-up,\\n #optout-arrow-down {\\n width: 20px;\\n height: 20px;\\n }\\n\\n #save-exit-btn {\\n width: 100%;\\n }\\n\\n #vendor-arrow-up,\\n #vendor-arrow-down {\\n width: 18px;\\n height: 18px;\\n }\\n\\n #pm-ads-vendors {\\n font-size: 16px;\\n }\\n\\n .pm-head-text {\\n margin-bottom: 5px;\\n font-size: 16px;\\n line-height: 20px;\\n }\\n\\n .pm-optout-description {\\n margin-right: 0;\\n }\\n\\n .pm-optout-text {\\n margin: 12px -57px 0 0;\\n }\\n\\n .pm-optout-text p,\\n .pm-optout-text li {\\n font-size: 16px;\\n line-height: 20px;\\n }\\n\\n #pm-optout-display {\\n margin-top: 12px;\\n font-size: 16px;\\n }\\n\\n #pm-popin h1 {\\n margin-bottom: 10px;\\n font-size: 22px;\\n }\\n\\n #pm-popin h2 {\\n font-size: 18px;\\n }\\n\\n .pm-header {\\n margin-bottom: 20px;\\n }\\n}\\n\\n/* TIM colors */\\n[data-theme~='telecomitalia'] {\\n /* colors */\\n --trackingtool-color_gold-kumera: hsl(37.9deg 62.6% 36.7%); /* #986d23 */\\n --trackingtool-color_gold-dark-secondary: hsl(\\n 37.7deg 62.7% 29.4%\\n ); /* #7a571c */\\n --trackingtool-color_gold-dark-tertiary: hsl(38deg 63.1% 25.5%); /* #6a4c18 */\\n --trackingtool-color_primary: var(--trackingtool-color_white);\\n --trackingtool-color_primary-hover-focus: var(--trackingtool-color_white-70);\\n --trackingtool-color_white-10: hsl(\\n 0deg 0% 100% / 10%\\n ); /* #ffffff opacity 10% */\\n --trackingtool-color_white-70: hsl(\\n 0deg 0% 100% / 70%\\n ); /* #ffffff opacity 70% */\\n --trackingtool-color_black: hsl(0deg 0% 0%); /* #000000 */\\n --trackingtool-color_black-50: hsl(\\n 0deg 0% 0% / 50%\\n ); /* #000000 opacity 50% */\\n\\n /* popin content colors */\\n --trackingtool-color_popin-bg: var(--trackingtool-color_gold-kumera);\\n --trackingtool-color_popin-fg-secondary: hsl(240deg 5.3% 96.3%); /* #f5f5f6 */\\n\\n /* border colors */\\n --trackingtool-color_border: var(--trackingtool-color_white-10);\\n\\n /* button colors */\\n --trackingtool-color_button-fg: var(--trackingtool-color_black);\\n --trackingtool-color_button-secondary-bg: var(\\n --trackingtool-color_gold-dark-secondary\\n );\\n --trackingtool-color_button-secondary-bg-hover: var(\\n --trackingtool-color_gold-dark-tertiary\\n );\\n --trackingtool-color_button-secondary-fg: var(--trackingtool-color_white);\\n --trackingtool-color_button-secondary-fg-hover: var(\\n --trackingtool-color_white\\n );\\n\\n /* switch colors */\\n --trackingtool-color_switch-unchecked-bg: var(--trackingtool-color_black-50);\\n --trackingtool-color_switch-disabled-fg: var(--trackingtool-color_white-80);\\n}\\n\\n/* CANALBOX colors */\\n[data-theme~='canalbox'] {\\n --trackingtool-color_amaranth: hsl(336.1deg 80.7% 51.2%); /* #e71e6e */\\n --trackingtool-color_primary: var(--trackingtool-color_amaranth);\\n --trackingtool-color_primary-hover-focus: var(--trackingtool-color_amaranth);\\n}\\n\\n/* Ma Maison CANALBOX colors */\\n[data-theme~='mmcanalbox'] {\\n --trackingtool-color_amaranth: hsl(336.1deg 80.7% 51.2%); /* #e71e6e */\\n --trackingtool-color_primary: var(--trackingtool-color_amaranth);\\n --trackingtool-color_primary-hover-focus: var(--trackingtool-color_amaranth);\\n\\n /* button colors */\\n --trackingtool-color_button-secondary-bg: var(--trackingtool-color_amaranth);\\n --trackingtool-color_button-secondary-bg-hover: var(\\n --trackingtool-color_amaranth\\n );\\n}\\n\\n/* TVCaraibes colors */\\n[data-theme~='tvcaraibes'] {\\n --trackingtool-color_alizarin-crimson: hsl(353.5deg 79.6% 52%); /* #e62338 */\\n --trackingtool-color_cerulean-blue: hsl(214.3deg 60.2% 43.3%); /* #2c65b1 */\\n --trackingtool-color_primary: var(--trackingtool-color_alizarin-crimson);\\n --trackingtool-color_primary-hover-focus: var(\\n --trackingtool-color_alizarin-crimson\\n );\\n\\n /* popin content colors */\\n --trackingtool-color_popin-bg: var(--trackingtool-color_cerulean-blue);\\n\\n /* button colors */\\n --trackingtool-color_button-secondary-bg: var(\\n --trackingtool-color_alizarin-crimson\\n );\\n --trackingtool-color_button-secondary-bg-hover: var(\\n --trackingtool-color_alizarin-crimson\\n );\\n}\\n\\n[data-theme~='tvcaraibes'] .pm-toggle-button-text,\\n[data-theme~='tvcaraibes'] .vendors {\\n color: var(--trackingtool-color_white);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./v2/src/PrivacyManager/Popin/popin.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@import url('_colors.css');\\n\\n#privacy-manager-popin {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n\\n#pm-overlay {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 99999;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n height: 100vh;\\n text-align: center;\\n background-color: rgb(0 0 0 / 80%);\\n}\\n\\n.pm-popin-content {\\n position: relative;\\n box-sizing: content-box;\\n display: flex;\\n flex-direction: column;\\n width: calc(640px - 2 * 30px);\\n max-height: min(calc(900px - 2 * 60px), (100vh - 100px));\\n padding: 30px;\\n overflow: auto;\\n font-family: Hind, Arial, Helvetica, sans-serif;\\n font-size: 16px;\\n color: var(--trackingtool-color_popin-fg);\\n text-align: left;\\n outline: none;\\n background-color: var(--trackingtool-color_popin-bg);\\n}\\n\\n.pm-popin-content *,\\n.pm-popin-content ::before,\\n.pm-popin-content ::after {\\n box-sizing: border-box;\\n}\\n\\n.pm-header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n margin-bottom: 30px;\\n}\\n\\n.pm-body {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.pm-toggle-button {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n width: fit-content;\\n font-size: 17px;\\n cursor: pointer;\\n background-color: var(--trackingtool-color_toggle-button-bg);\\n border: none;\\n}\\n\\n.pm-toggle-button:hover {\\n color: var(--trackingtool-color_primary-hover-focus);\\n background-color: var(--trackingtool-color_toggle-button-bg);\\n border: none;\\n}\\n\\n.pm-toggle-button:hover .arrow {\\n fill: var(--trackingtool-color_primary-hover-focus);\\n}\\n\\n.pm-toggle-button-text {\\n padding-right: 3px;\\n color: var(--trackingtool-color_primary);\\n text-align: left;\\n}\\n\\n#pm-optout-display {\\n padding: 0;\\n margin-top: 10px;\\n line-height: 1.35;\\n}\\n\\n.arrow {\\n fill: var(--trackingtool-color_primary);\\n}\\n\\n#right-arrow {\\n width: 26px;\\n height: 13px;\\n}\\n\\n.optout-arrow {\\n width: 26px;\\n height: 26px;\\n}\\n\\n#optout-arrow-up {\\n display: none;\\n}\\n\\n#optout-arrow-up.options-opened {\\n display: block;\\n}\\n\\n#optout-arrow-down.options-opened {\\n display: none;\\n}\\n\\n.vendor-arrow {\\n width: 23px;\\n height: 23px;\\n}\\n\\n#vendor-arrow-up {\\n display: none;\\n}\\n\\n#vendor-arrow-up.vendor-opened {\\n display: block;\\n}\\n\\n#vendor-arrow-down.vendor-opened {\\n display: none;\\n}\\n\\n#pm-vendor-list {\\n display: none;\\n max-height: 200px;\\n padding: 1px;\\n margin-top: 10px;\\n overflow: auto;\\n text-align: left;\\n}\\n\\n#pm-vendor-list.vendor-opened {\\n display: block;\\n}\\n\\n#pm-vendor-list table {\\n width: 100%;\\n border-collapse: collapse;\\n}\\n\\n#pm-vendor-list table td,\\n#pm-vendor-list table th {\\n padding: 5px 15px;\\n color: var(--trackingtool-color_popin-fg);\\n border: 1px solid var(--trackingtool-color_popin-fg-secondary);\\n}\\n\\n.vendors {\\n color: var(--trackingtool-color_primary);\\n text-decoration: underline;\\n}\\n\\n.vendors:hover {\\n color: var(--trackingtool-color_primary-hover-focus);\\n text-decoration: underline;\\n}\\n\\n#pm-popin h1 {\\n margin: 0 0 20px;\\n font-family: Hind, Arial, Helvetica, sans-serif;\\n font-size: 26px;\\n font-weight: 400;\\n line-height: 1.08;\\n color: var(--trackingtool-color_white);\\n text-align: left;\\n}\\n\\n#pm-popin h2 {\\n margin-top: 0;\\n font-size: 18px;\\n font-weight: 400;\\n color: var(--trackingtool-color_white);\\n text-decoration: none;\\n}\\n\\n#pm-popin h3 {\\n color: var(--trackingtool-color_white);\\n}\\n\\n#pm-optout-block {\\n display: none;\\n margin-top: 20px;\\n}\\n\\n.pm-optout {\\n display: flex;\\n flex-direction: row;\\n align-items: flex-start;\\n padding: 20px 0;\\n border-top: 1px solid var(--trackingtool-color_border);\\n}\\n\\n.pm-optout-description {\\n display: flex;\\n flex-direction: column;\\n margin-right: 45px;\\n}\\n\\n.pm-optout-title {\\n margin-bottom: 12px;\\n}\\n\\n.pm-optout-title-label {\\n display: block;\\n}\\n\\n.pm-optout-text ul {\\n padding: 12px 0 12px 40px;\\n list-style: disc;\\n}\\n\\n.pm-optout-text p,\\n.pm-optout-text li {\\n margin: 0;\\n line-height: 1.35;\\n color: var(--trackingtool-color_popin-fg-secondary);\\n}\\n\\n.pm-optout-text li:not(:last-child) {\\n margin-bottom: 20px;\\n}\\n\\n.pm-head-text {\\n margin-top: 0;\\n margin-bottom: 10px;\\n font-size: 16px;\\n line-height: 1.31;\\n color: var(--trackingtool-color_popin-fg-secondary);\\n}\\n\\n.pm-switch-label {\\n display: block;\\n}\\n\\n.pm-switch-checkbox {\\n width: 0;\\n height: 0;\\n margin: 0;\\n opacity: 0;\\n}\\n\\n.pm-switch-toggle {\\n position: relative;\\n float: left;\\n display: block;\\n width: 57px;\\n height: 30px;\\n vertical-align: middle;\\n cursor: pointer;\\n user-select: none;\\n outline: none;\\n border-radius: 30px;\\n transition: background 400ms;\\n}\\n\\n.pm-switch-toggle::before,\\n.pm-switch-toggle::after {\\n position: absolute;\\n display: block;\\n content: '';\\n}\\n\\n.pm-switch-toggle::before {\\n top: 2px;\\n right: 2px;\\n bottom: 2px;\\n left: 2px;\\n background-color: var(--trackingtool-color_switch-unchecked-bg);\\n border-radius: 30px;\\n transition: background 400ms;\\n}\\n\\n.pm-switch-toggle::after {\\n top: 4px;\\n bottom: 4px;\\n left: 4px;\\n width: 23px;\\n background-color: var(--trackingtool-color_white);\\n border-radius: 23px;\\n transition:\\n margin 400ms,\\n background 400ms;\\n}\\n\\n.pm-switch-checkbox:checked + .pm-switch-toggle::before {\\n background-color: var(--trackingtool-color_switch-checked-bg);\\n}\\n\\n.pm-switch-checkbox:checked + .pm-switch-toggle::after {\\n margin-left: 26px;\\n}\\n\\n.pm-switch-checkbox:disabled + .pm-switch-toggle::before {\\n background-color: var(--trackingtool-color_switch-disabled-bg);\\n}\\n\\n.pm-switch-checkbox:disabled + .pm-switch-toggle::after {\\n background-color: var(--trackingtool-color_switch-disabled-fg);\\n}\\n\\n.pm-switch-checkbox:disabled + .pm-switch-toggle {\\n cursor: default;\\n}\\n\\n.pm-switch-checkbox:focus + .pm-switch-toggle {\\n outline: 1px solid var(--trackingtool-color_white);\\n box-shadow: 0 0 8px var(--trackingtool-color_white);\\n}\\n\\n.consent-btn {\\n display: flex;\\n justify-content: center;\\n width: calc(50% + 30px);\\n padding: 10px 20px;\\n margin: 5px;\\n font-family: Hind, Arial, Helvetica, sans-serif;\\n font-size: 18px;\\n line-height: 1.56;\\n color: var(--trackingtool-color_button-fg);\\n cursor: pointer;\\n background-color: var(--trackingtool-color_primary);\\n border: none;\\n border-radius: 3px;\\n}\\n\\n.consent-btn:hover,\\n.consent-btn:focus {\\n color: var(--trackingtool-color_button-fg);\\n background-color: var(--trackingtool-color_primary-hover-focus);\\n}\\n\\n.consent-btn-secondary {\\n color: var(--trackingtool-color_button-secondary-fg);\\n background-color: var(--trackingtool-color_button-secondary-bg);\\n}\\n\\n.consent-btn-secondary:hover,\\n.consent-btn-secondary:focus {\\n color: var(--trackingtool-color_button-secondary-fg-hover);\\n background-color: var(--trackingtool-color_button-secondary-bg-hover);\\n}\\n\\n.footer-btn-container {\\n align-items: center;\\n width: 100%;\\n padding: 20px 0;\\n}\\n\\n#decline-btn {\\n position: absolute;\\n top: 30px;\\n right: 30px;\\n display: flex;\\n align-items: center;\\n width: auto;\\n padding: 6px 12px;\\n font-family: Hind, Arial, Helvetica, sans-serif;\\n font-size: 17px;\\n line-height: 1.35;\\n color: var(--trackingtool-color_primary);\\n cursor: pointer;\\n background-color: var(--trackingtool-color_toggle-button-bg);\\n border: none;\\n border-radius: 3px;\\n}\\n\\n[data-theme~='telecomitalia'] #decline-btn span {\\n text-decoration: underline;\\n}\\n\\n#decline-btn:hover,\\n#decline-btn:focus {\\n color: var(--trackingtool-color_primary-hover-focus);\\n background-color: var(--trackingtool-color_toggle-button-bg);\\n}\\n\\n#decline-btn:hover .arrow {\\n fill: var(--trackingtool-color_primary-hover-focus);\\n}\\n\\n#accept-refuse-container {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n#save-exit-container {\\n display: none;\\n border-bottom: 1px solid var(--trackingtool-color_border);\\n}\\n\\n.vendors-container {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n}\\n\\n#pm-ads-vendors {\\n padding: 0;\\n margin-top: 20px;\\n font-size: 16px;\\n line-height: 1.31;\\n text-align: left;\\n}\\n\\n#pm-ads-vendors:hover {\\n color: var(--trackingtool-color_primary-hover-focus);\\n}\\n\\n.pm-footer {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.paragraph-link,\\n.paragraph-link:focus {\\n color: var(--trackingtool-color_popin-fg-secondary);\\n text-decoration: underline;\\n}\\n\\n.paragraph-link:hover {\\n color: var(--trackingtool-color_popin-fg-secondary);\\n text-decoration: underline;\\n}\\n\\n.canalplus-logo,\\n.logo {\\n height: 34px;\\n margin: 0;\\n}\\n\\n#pm-optout-block.options-opened {\\n display: block;\\n}\\n\\n#decline-btn.options-opened {\\n display: none;\\n}\\n\\n#save-exit-container.options-opened {\\n display: flex;\\n justify-content: center;\\n}\\n\\n#refuse-btn {\\n display: none;\\n}\\n\\n#refuse-btn.options-opened {\\n display: flex;\\n margin-top: 20px;\\n}\\n\\n.pm-focusable:focus {\\n outline-width: 1px;\\n outline-style: auto;\\n outline-color: #005fcc;\\n outline-offset: 1px;\\n}\\n\\n@media (width <= 699px) {\\n .pm-popin-content {\\n width: calc(100% - 2 * 15px);\\n padding: 15px;\\n }\\n\\n .canalplus-logo {\\n height: 30px;\\n }\\n\\n .consent-btn {\\n width: 100%;\\n font-size: 18px;\\n }\\n\\n #decline-btn {\\n top: 15px;\\n right: 15px;\\n font-size: 16px;\\n }\\n\\n #right-arrow {\\n width: 20px;\\n height: 10px;\\n }\\n\\n #optout-arrow-up,\\n #optout-arrow-down {\\n width: 20px;\\n height: 20px;\\n }\\n\\n #save-exit-btn {\\n width: 100%;\\n }\\n\\n #vendor-arrow-up,\\n #vendor-arrow-down {\\n width: 18px;\\n height: 18px;\\n }\\n\\n #pm-ads-vendors {\\n font-size: 16px;\\n }\\n\\n .pm-head-text {\\n margin-bottom: 5px;\\n font-size: 16px;\\n line-height: 20px;\\n }\\n\\n .pm-optout-description {\\n margin-right: 0;\\n }\\n\\n .pm-optout-text {\\n margin: 12px -57px 0 0;\\n }\\n\\n .pm-optout-text p,\\n .pm-optout-text li {\\n font-size: 16px;\\n line-height: 20px;\\n }\\n\\n #pm-optout-display {\\n margin-top: 12px;\\n font-size: 16px;\\n }\\n\\n #pm-popin h1 {\\n margin-bottom: 10px;\\n font-size: 22px;\\n }\\n\\n #pm-popin h2 {\\n font-size: 18px;\\n }\\n\\n .pm-header {\\n margin-bottom: 20px;\\n }\\n}\\n\\n/* TIM colors */\\n[data-theme~='telecomitalia'] {\\n /* colors */\\n --trackingtool-color_gold-kumera: hsl(37.9deg 62.6% 36.7%); /* #986d23 */\\n --trackingtool-color_gold-dark-secondary: hsl(\\n 37.7deg 62.7% 29.4%\\n ); /* #7a571c */\\n --trackingtool-color_gold-dark-tertiary: hsl(38deg 63.1% 25.5%); /* #6a4c18 */\\n --trackingtool-color_primary: var(--trackingtool-color_white);\\n --trackingtool-color_primary-hover-focus: var(--trackingtool-color_white-70);\\n --trackingtool-color_white-10: hsl(\\n 0deg 0% 100% / 10%\\n ); /* #ffffff opacity 10% */\\n --trackingtool-color_white-70: hsl(\\n 0deg 0% 100% / 70%\\n ); /* #ffffff opacity 70% */\\n --trackingtool-color_black: hsl(0deg 0% 0%); /* #000000 */\\n --trackingtool-color_black-50: hsl(\\n 0deg 0% 0% / 50%\\n ); /* #000000 opacity 50% */\\n\\n /* popin content colors */\\n --trackingtool-color_popin-bg: var(--trackingtool-color_gold-kumera);\\n --trackingtool-color_popin-fg-secondary: hsl(240deg 5.3% 96.3%); /* #f5f5f6 */\\n\\n /* border colors */\\n --trackingtool-color_border: var(--trackingtool-color_white-10);\\n\\n /* button colors */\\n --trackingtool-color_button-fg: var(--trackingtool-color_black);\\n --trackingtool-color_button-secondary-bg: var(\\n --trackingtool-color_gold-dark-secondary\\n );\\n --trackingtool-color_button-secondary-bg-hover: var(\\n --trackingtool-color_gold-dark-tertiary\\n );\\n --trackingtool-color_button-secondary-fg: var(--trackingtool-color_white);\\n --trackingtool-color_button-secondary-fg-hover: var(\\n --trackingtool-color_white\\n );\\n\\n /* switch colors */\\n --trackingtool-color_switch-unchecked-bg: var(--trackingtool-color_black-50);\\n --trackingtool-color_switch-disabled-fg: var(--trackingtool-color_white-80);\\n}\\n\\n/* CANALBOX colors */\\n[data-theme~='canalbox'] {\\n --trackingtool-color_amaranth: hsl(336.1deg 80.7% 51.2%); /* #e71e6e */\\n --trackingtool-color_primary: var(--trackingtool-color_amaranth);\\n --trackingtool-color_primary-hover-focus: var(--trackingtool-color_amaranth);\\n}\\n\\n/* Ma Maison CANALBOX colors */\\n[data-theme~='mmcanalbox'] {\\n --trackingtool-color_amaranth: hsl(336.1deg 80.7% 51.2%); /* #e71e6e */\\n --trackingtool-color_primary: var(--trackingtool-color_amaranth);\\n --trackingtool-color_primary-hover-focus: var(--trackingtool-color_amaranth);\\n\\n /* button colors */\\n --trackingtool-color_button-secondary-bg: var(--trackingtool-color_amaranth);\\n --trackingtool-color_button-secondary-bg-hover: var(\\n --trackingtool-color_amaranth\\n );\\n}\\n\\n/* TVCaraibes colors */\\n[data-theme~='tvcaraibes'] {\\n --trackingtool-color_alizarin-crimson: hsl(353.5deg 79.6% 52%); /* #e62338 */\\n --trackingtool-color_cerulean-blue: hsl(214.3deg 60.2% 43.3%); /* #2c65b1 */\\n --trackingtool-color_primary: var(--trackingtool-color_alizarin-crimson);\\n --trackingtool-color_primary-hover-focus: var(\\n --trackingtool-color_alizarin-crimson\\n );\\n\\n /* popin content colors */\\n --trackingtool-color_popin-bg: var(--trackingtool-color_cerulean-blue);\\n\\n /* button colors */\\n --trackingtool-color_button-secondary-bg: var(\\n --trackingtool-color_alizarin-crimson\\n );\\n --trackingtool-color_button-secondary-bg-hover: var(\\n --trackingtool-color_alizarin-crimson\\n );\\n}\\n\\n[data-theme~='tvcaraibes'] .pm-toggle-button-text,\\n[data-theme~='tvcaraibes'] .vendors {\\n color: var(--trackingtool-color_white);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root {\\n /* colors */\\n --trackingtool-color_primary: hsl(350.1deg 82.7% 56.9%); /* #ec3654 */\\n --trackingtool-color_primary-50: hsl(\\n 350.1deg 82.7% 56.9% / 50%\\n ); /* #ec3654 opacity 50% */\\n --trackingtool-color_primary-hover-focus: hsl(\\n 350.1deg 67.4% 45.7%\\n ); /* #c32640 */\\n --trackingtool-color_primary-dark: hsl(217.5deg 10.8% 14.5%); /* #212429 */\\n --trackingtool-color_secondary-dark: hsl(214.3deg 7.4% 18.6%); /* #2c2f33 */\\n --trackingtool-color_tertiary-dark: hsl(233deg 8% 23%); /* #373840 */\\n --trackingtool-color_tertiary-dark-hover: hsl(0deg 0% 22.7%); /* #3A3A3A */\\n --trackingtool-color_white: hsl(0deg 0% 100%); /* #ffffff */\\n --trackingtool-color_white-80: hsl(\\n 0deg 0% 100% / 80%\\n ); /* #ffffff opacity 80% */\\n --trackingtool-color_valid: hsl(156.8deg 88.3% 40.2%); /* #0CC17B */\\n --trackingtool-color_valid-50: hsl(\\n 156.8deg 88.3% 40.2% / 50%\\n ); /* #0CC17B opacity 50% */\\n\\n /* popin content colors */\\n --trackingtool-color_popin-bg: hsl(210deg 12% 9.8%); /* #16191c */\\n --trackingtool-color_popin-fg: var(--trackingtool-color_white);\\n --trackingtool-color_popin-fg-secondary: var(--trackingtool-color_white-80);\\n\\n /* border colors */\\n --trackingtool-color_border: var(--trackingtool-color_primary-dark);\\n\\n /* button colors */\\n --trackingtool-color_button-fg: var(--trackingtool-color_white);\\n --trackingtool-color_button-secondary-bg: var(\\n --trackingtool-color_secondary-dark\\n );\\n --trackingtool-color_button-secondary-bg-hover: var(\\n --trackingtool-color_tertiary-dark\\n );\\n --trackingtool-color_button-secondary-fg: var(--trackingtool-color_white);\\n --trackingtool-color_button-secondary-fg-hover: var(\\n --trackingtool-color_white\\n );\\n --trackingtool-color_toggle-button-bg: transparent;\\n\\n /* switch colors */\\n --trackingtool-color_switch-checked-bg: var(--trackingtool-color_valid);\\n --trackingtool-color_switch-unchecked-bg: var(\\n --trackingtool-color_tertiary-dark-hover\\n );\\n --trackingtool-color_switch-disabled-bg: var(--trackingtool-color_valid-50);\\n --trackingtool-color_switch-disabled-fg: var(--trackingtool-color_white-80);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./v2/src/PrivacyManager/Popin/_colors.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,WAAW;EACX,uDAAuD,EAAE,YAAY;EACrE;;GAEC,EAAE,wBAAwB;EAC3B;;GAEC,EAAE,YAAY;EACf,4DAA4D,EAAE,YAAY;EAC1E,6DAA6D,EAAE,YAAY;EAC3E,sDAAsD,EAAE,YAAY;EACpE,4DAA4D,EAAE,YAAY;EAC1E,6CAA6C,EAAE,YAAY;EAC3D;;GAEC,EAAE,wBAAwB;EAC3B,qDAAqD,EAAE,YAAY;EACnE;;GAEC,EAAE,wBAAwB;;EAE3B,yBAAyB;EACzB,mDAAmD,EAAE,YAAY;EACjE,8DAA8D;EAC9D,2EAA2E;;EAE3E,kBAAkB;EAClB,mEAAmE;;EAEnE,kBAAkB;EAClB,+DAA+D;EAC/D;;GAEC;EACD;;GAEC;EACD,yEAAyE;EACzE;;GAEC;EACD,kDAAkD;;EAElD,kBAAkB;EAClB,uEAAuE;EACvE;;GAEC;EACD,2EAA2E;EAC3E,2EAA2E;AAC7E\",\"sourcesContent\":[\":root {\\n /* colors */\\n --trackingtool-color_primary: hsl(350.1deg 82.7% 56.9%); /* #ec3654 */\\n --trackingtool-color_primary-50: hsl(\\n 350.1deg 82.7% 56.9% / 50%\\n ); /* #ec3654 opacity 50% */\\n --trackingtool-color_primary-hover-focus: hsl(\\n 350.1deg 67.4% 45.7%\\n ); /* #c32640 */\\n --trackingtool-color_primary-dark: hsl(217.5deg 10.8% 14.5%); /* #212429 */\\n --trackingtool-color_secondary-dark: hsl(214.3deg 7.4% 18.6%); /* #2c2f33 */\\n --trackingtool-color_tertiary-dark: hsl(233deg 8% 23%); /* #373840 */\\n --trackingtool-color_tertiary-dark-hover: hsl(0deg 0% 22.7%); /* #3A3A3A */\\n --trackingtool-color_white: hsl(0deg 0% 100%); /* #ffffff */\\n --trackingtool-color_white-80: hsl(\\n 0deg 0% 100% / 80%\\n ); /* #ffffff opacity 80% */\\n --trackingtool-color_valid: hsl(156.8deg 88.3% 40.2%); /* #0CC17B */\\n --trackingtool-color_valid-50: hsl(\\n 156.8deg 88.3% 40.2% / 50%\\n ); /* #0CC17B opacity 50% */\\n\\n /* popin content colors */\\n --trackingtool-color_popin-bg: hsl(210deg 12% 9.8%); /* #16191c */\\n --trackingtool-color_popin-fg: var(--trackingtool-color_white);\\n --trackingtool-color_popin-fg-secondary: var(--trackingtool-color_white-80);\\n\\n /* border colors */\\n --trackingtool-color_border: var(--trackingtool-color_primary-dark);\\n\\n /* button colors */\\n --trackingtool-color_button-fg: var(--trackingtool-color_white);\\n --trackingtool-color_button-secondary-bg: var(\\n --trackingtool-color_secondary-dark\\n );\\n --trackingtool-color_button-secondary-bg-hover: var(\\n --trackingtool-color_tertiary-dark\\n );\\n --trackingtool-color_button-secondary-fg: var(--trackingtool-color_white);\\n --trackingtool-color_button-secondary-fg-hover: var(\\n --trackingtool-color_white\\n );\\n --trackingtool-color_toggle-button-bg: transparent;\\n\\n /* switch colors */\\n --trackingtool-color_switch-checked-bg: var(--trackingtool-color_valid);\\n --trackingtool-color_switch-unchecked-bg: var(\\n --trackingtool-color_tertiary-dark-hover\\n );\\n --trackingtool-color_switch-disabled-bg: var(--trackingtool-color_valid-50);\\n --trackingtool-color_switch-disabled-fg: var(--trackingtool-color_white-80);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const configs = [\n {\n 'zones': ['fr'],\n 'locale': 'fr',\n 'privacyPopin': {\n 'OLD_title': 'Paramétrage des cookies sur les Sites de GROUPE CANAL+',\n 'title': 'À propos de vos données',\n 'mainText':\n 'Des cookies sont déposés sur les Sites de GROUPE CANAL+, qui fait partie du groupe VIVENDI, notamment pour garantir leur bon fonctionnement et personnaliser votre expérience, vos contenus ou publicités. Vous pouvez, si vous le souhaitez, désactiver les cookies par catégorie.',\n 'firstParagraph':\n \"Groupe CANAL+ et ses filiales et nos %partners%, notamment les sociétés du %vivendiGroup%, utilisons des traceurs pour mesurer l'utilisation et les performances de nos services et vous proposer des publicités plus pertinentes sur la base de votre navigation et de votre profil.\",\n 'OLD_firstParagraph':\n 'Groupe CANAL+ et ses filiales (membres du %vivendiGroup%) et nos %partners% utilisons des traceurs pour gérer et améliorer nos services et vous proposer des publicités plus pertinentes.',\n 'secondParagraph':\n 'Vous pouvez en savoir plus sur l’utilisation de vos données et mettre à jour vos choix à tout moment via notre rubrique %cookies%.',\n 'OLD_secondParagraph':\n 'Vous pouvez paramétrer vos choix par finalité et les mettre à jour à tout moment via notre rubrique %confidentiality%.',\n 'thirdParagraph':\n 'Parce que vous êtes connecté à votre compte CANAL+, votre choix sera valable sur l’ensemble des supports numériques du Groupe CANAL+ connectés à ce compte.',\n 'thirdParagraphUnlog':\n 'Votre choix ne sera valable que sur le support numérique actuellement utilisé. Si vous vous connectez à votre compte CANAL+, vos choix exprimés en mode connecté prévaudront.',\n 'learnMore': 'En savoir + et paramétrer mes choix',\n 'OLD_firstCategoryTitle': 'Cookies nécessaires au fonctionnement',\n 'firstCategoryTitle': 'Fonctionnement du service (requis)',\n 'OLD_firstCategoryText':\n 'Il s’agit des cookies de session d’utilisateur, d’authentification, de sécurité qui sont strictement nécessaires au fonctionnement du Site.',\n 'firstCategoryText':\n \"Ces identifiants permettent d'assurer le fonctionnement du service, en permettant l'authentification des utilisateurs, la sécurité et la supervision technique (anonyme) du service. Il n'est pas possible de désactiver ce réglage.\",\n 'OLD_secondCategoryTitle': 'Analyse d’audience',\n 'secondCategoryTitle': 'Analyse de la performance',\n 'OLD_secondCategoryText':\n 'Les cookies statistiques permettent de mesurer l’utilisation et les performances du Site et d’en améliorer le fonctionnement.',\n 'secondCategoryText':\n \"Ces identifiants permettent de mesurer l'utilisation et les performances de nos services (à l'exclusion de la mesure d'audience anonyme) pour mieux nous adapter à vos attentes.\",\n 'OLD_thirdCategoryTitle': 'Publicité',\n 'thirdCategoryTitle': 'Publicité personnalisée',\n 'OLD_thirdCategoryText':\n 'Les cookies publicitaires nous permettent, avec nos partenaires publicitaires, de vous proposer des publicités adaptées à vos centres d’intérêt. La désactivation de ces cookies n’aura pas d’impact sur le volume de publicités, mais uniquement sur leur pertinence.',\n 'thirdCategoryText1':\n \"Ces identifiants permettent, avec nos partenaires, de vous proposer des publicités adaptées à vos centres d'intérêt. Plus précisément, nous pourrons :\",\n 'thirdCategoryItem1':\n 'adapter les contenus publicitaires selon la navigation de votre terminal ou les données personnelles que vous avez fournies, notamment en utilisant des fonctionnalités de ciblage (retargeting) pour vous présenter des publicités ou des contacts email suite à votre utilisation de nos services ;',\n 'thirdCategoryItem2':\n 'suivre la navigation ultérieure effectuée par votre terminal ;',\n 'thirdCategoryItem3':\n \"adapter les espaces publicitaires aux préférences d'affichage de votre terminal ;\",\n 'thirdCategoryItem4':\n 'adapter la présentation du service auquel mène un contenu publicitaire ;',\n 'thirdCategoryItem5':\n 'limiter le nombre de fois où vous voyez une publicité ;',\n 'thirdCategoryItem6':\n 'calculer les sommes dues aux acteurs de la chaîne de diffusion publicitaire ;',\n 'thirdCategoryItem7':\n \"mesurer l'efficacité et l'impact d'une campagne publicitaire.\",\n 'thirdCategoryText2':\n \"En désactivant ces identifiants, vous ne serez pas exposés à moins de publicités, mais à des publicités ne correspondant pas nécessairement à vos centres d'intérêts.\",\n 'OLD_vendorListButton': 'Afficher la liste des partenaires publicitaires',\n 'vendorListButton': 'Liste des partenaires',\n 'vendorTableTitle': 'Société',\n 'cookiePolicyLabel': 'Afficher notre politique cookie',\n 'declineButton': 'Continuer sans accepter',\n 'refuseButton': 'Tout refuser',\n 'acceptButton': 'Tout accepter',\n 'saveAndCloseButton': 'Enregistrer et fermer',\n 'partners': 'partenaires',\n 'services': 'liste des supports',\n 'confidentiality': 'Confidentialité',\n 'cookies': 'Cookies',\n 'cookiePolicy': 'notre politique cookie',\n 'vivendiGroup': 'groupe Vivendi',\n },\n 'cookiePolicyLink':\n 'https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.canalplus.com%2Fcookies%2F&data=05%7C01%7Caccessibility%40canal-plus.com%7C823c1ca48f0e4aa5619308dadeb8aac0%7Cbf5c5de16a544091a72f90e32801628c%7C0%7C0%7C638067181957704103%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=%2F%2BOBIfCLeee%2BxzL4ssnB0cc3iyHR0g6Fv%2BPCECmayZM%3D&reserved=0',\n 'partnersLink': 'https://static.canalplus.com/legal/liste-partenaires.html',\n 'vivendiGroupLink':\n 'https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.vivendi.com%2Fwp-content%2Fuploads%2F2022%2F11%2FVivendi-Organigramme-simplifie-au-30-septembre-2022-version-accessible.pdf&data=05%7C01%7Caccessibility%40canal-plus.com%7C823c1ca48f0e4aa5619308dadeb8aac0%7Cbf5c5de16a544091a72f90e32801628c%7C0%7C0%7C638067181957704103%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=h18CFEGAfLnvVqBZ6jHQ0%2BArXmAtDUznsj152kEoXHY%3D&reserved=0',\n 'a11y': {\n 'popinTitle':\n 'Groupe Canal Plus, le respect de votre vie privée est une priorité',\n 'learnMore': 'En savoir plus et paramétrer vos consentements',\n 'acceptButton': 'Accepter notre traitement des données',\n 'declineButton': 'Continuer sans accepter notre traitement des données',\n 'saveAndCloseButton': 'Enregistrer vos paramètres et continuer',\n 'refuseButton': 'Refuser notre traitement des données',\n 'vivendiGroupLink': 'Groupe Vivendi - nouvelle fenêtre',\n 'partnersLink': 'Nos partenaires - nouvelle fenêtre',\n 'newWindow': 'nouvelle fenêtre',\n 'cookiesLink': 'Cookies - nouvelle fenêtre',\n },\n 'customVendors': [\n {\n 'name': 'Vivendi',\n 'policyUrl': 'https://www.vivendi.com/footer/cookies-policy/',\n },\n {\n 'name': 'Dailymotion',\n 'policyUrl': 'https://www.dailymotion.com/legal/privacy',\n },\n {\n 'name': 'Gameloft',\n 'policyUrl': 'https://www.gameloft.com/fr/legal/showcase-cookie-policy',\n },\n {\n 'name': 'Editis',\n 'policyUrl': 'https://www.editis.com/gestion-des-cookies/',\n },\n {\n 'name': 'Vivendi Village',\n 'policyUrl': 'https://www.vivendi.com/footer/cookies-policy/',\n },\n {\n 'name': 'Mediarithmics',\n 'policyUrl':\n 'https://www.mediarithmics.com/fr-fr/content/charte-de-protection-des-donnees-personnelles',\n },\n {\n 'name': 'Betasérie',\n 'policyUrl': 'https://www.betaseries.com/conditions',\n },\n {\n 'name': 'Facebook',\n 'policyUrl': 'https://www.facebook.com/policies/cookies/',\n },\n { 'name': 'Mozoo', 'policyUrl': 'http://www.mozoo.fr/' },\n {\n 'name': 'Powerspace',\n 'policyUrl': 'https://powerspace.com/fr/privacy/',\n },\n {\n 'name': 'Snapchat',\n 'policyUrl': 'https://snap.com/fr-FR/cookie-policy',\n },\n {\n 'name': 'Adot',\n 'policyUrl': 'https://we-are-adot.com/privacy-policy/',\n },\n {\n 'name': 'CCM Benchmark',\n 'policyUrl':\n 'http://www.ccmbenchmark.com/donnees-personnelles?origin=s_institut',\n },\n {\n 'name': 'Emoteev',\n 'policyUrl': 'https://www.emoteev.io/fr/page-daccueil/',\n },\n { 'name': 'Horyzon', 'policyUrl': 'https://www.horyzon.com/' },\n {\n 'name': 'Pinterest',\n 'policyUrl': 'https://policy.pinterest.com/fr/privacy-policy',\n },\n {\n 'name': 'Reworld',\n 'policyUrl':\n 'https://www.reworldmedia.com/wp-content/uploads/2020/09/Politique-donn%C3%A9es-personnelles-et-cookies.pdf',\n },\n {\n 'name': 'Tiktok',\n 'policyUrl':\n 'https://www.tiktok.com/legal/tiktok-website-cookies-policy?lang=fr',\n },\n {\n 'name': 'Tradedoubler',\n 'policyUrl': 'https://www.tradedoubler.com/fr/privacy-policy/',\n },\n {\n 'name': 'Twitter',\n 'policyUrl':\n 'https://help.twitter.com/fr/rules-and-policies/twitter-cookies',\n },\n {\n 'name': 'Freewheel',\n 'policyUrl': 'https://www.freewheel.com/privacy-policy-fr',\n },\n { 'name': 'Acast', 'policyUrl': 'https://www.acast.com/en/privacy' },\n ],\n },\n {\n 'zones': [\n 'bf',\n 'bi',\n 'bj',\n 'bl',\n 'cd',\n 'cf',\n 'cg',\n 'ch',\n 'ci',\n 'cm',\n 'cv',\n 'dj',\n 'ga',\n 'gf',\n 'gh',\n 'gm',\n 'gn',\n 'gp',\n 'gq',\n 'gw',\n 'ht',\n 'km',\n 'kn',\n 'mc',\n 'mf',\n 'mg',\n 'ml',\n 'mq',\n 'mr',\n 'mu',\n 'nc',\n 'ne',\n 'ng',\n 're',\n 'rw',\n 'sl',\n 'sn',\n 'td',\n 'tg',\n 'wf',\n 'yt',\n 'pf',\n ],\n 'locale': 'fr',\n 'privacyPopin': {\n 'OLD_title': 'Paramétrage des cookies sur les Sites de GROUPE CANAL+',\n 'title': 'À propos de vos données',\n 'mainText':\n 'Des cookies sont déposés sur les Sites de GROUPE CANAL+, qui fait partie du groupe VIVENDI, notamment pour garantir leur bon fonctionnement et personnaliser votre expérience, vos contenus ou publicités. Vous pouvez, si vous le souhaitez, désactiver les cookies par catégorie.',\n 'firstParagraph':\n \"Groupe CANAL+ et ses filiales et nos %partners%, notamment les sociétés du %vivendiGroup%, utilisons des traceurs pour mesurer l'utilisation et les performances de nos services et vous proposer des publicités plus pertinentes sur la base de votre navigation et de votre profil.\",\n 'OLD_firstParagraph':\n 'Groupe CANAL+ et ses filiales (membres du %vivendiGroup%) et nos %partners% utilisons des traceurs pour gérer et améliorer nos services et vous proposer des publicités plus pertinentes.',\n 'secondParagraph':\n 'Vous pouvez en savoir plus sur l’utilisation de vos données et mettre à jour vos choix à tout moment via notre rubrique %cookies%.',\n 'OLD_secondParagraph':\n 'Vous pouvez paramétrer vos choix par finalité et les mettre à jour à tout moment via notre rubrique %confidentiality%.',\n 'thirdParagraph':\n 'Parce que vous êtes connecté à votre compte CANAL+, votre choix sera valable sur l’ensemble des supports numériques du Groupe CANAL+ connectés à ce compte.',\n 'thirdParagraphUnlog':\n 'Votre choix ne sera valable que sur le support numérique actuellement utilisé. Si vous vous connectez à votre compte CANAL+, vos choix exprimés en mode connecté prévaudront.',\n 'learnMore': 'En savoir + et paramétrer mes choix',\n 'OLD_firstCategoryTitle': 'Cookies nécessaires au fonctionnement',\n 'firstCategoryTitle': 'Fonctionnement du service (requis)',\n 'OLD_firstCategoryText':\n 'Il s’agit des cookies de session d’utilisateur, d’authentification, de sécurité qui sont strictement nécessaires au fonctionnement du Site.',\n 'firstCategoryText':\n \"Ces identifiants permettent d'assurer le fonctionnement du service, en permettant l'authentification des utilisateurs, la sécurité et la supervision technique (anonyme) du service. Il n'est pas possible de désactiver ce réglage.\",\n 'OLD_secondCategoryTitle': 'Analyse d’audience',\n 'secondCategoryTitle': 'Analyse de la performance',\n 'OLD_secondCategoryText':\n 'Les cookies statistiques permettent de mesurer l’utilisation et les performances du Site et d’en améliorer le fonctionnement.',\n 'secondCategoryText':\n \"Ces identifiants permettent de mesurer l'utilisation et les performances de nos services (à l'exclusion de la mesure d'audience anonyme) pour mieux nous adapter à vos attentes.\",\n 'OLD_thirdCategoryTitle': 'Publicité',\n 'thirdCategoryTitle': 'Publicité personnalisée',\n 'OLD_thirdCategoryText':\n 'Les cookies publicitaires nous permettent, avec nos partenaires publicitaires, de vous proposer des publicités adaptées à vos centres d’intérêt. La désactivation de ces cookies n’aura pas d’impact sur le volume de publicités, mais uniquement sur leur pertinence.',\n 'thirdCategoryText1':\n \"Ces identifiants permettent, avec nos partenaires, de vous proposer des publicités adaptées à vos centres d'intérêt. Plus précisément, nous pourrons :\",\n 'thirdCategoryItem1':\n 'adapter les contenus publicitaires selon la navigation de votre terminal ou les données personnelles que vous avez fournies, notamment en utilisant des fonctionnalités de ciblage (retargeting) pour vous présenter des publicités ou des contacts email suite à votre utilisation de nos services ;',\n 'thirdCategoryItem2':\n 'suivre la navigation ultérieure effectuée par votre terminal ;',\n 'thirdCategoryItem3':\n \"adapter les espaces publicitaires aux préférences d'affichage de votre terminal ;\",\n 'thirdCategoryItem4':\n 'adapter la présentation du service auquel mène un contenu publicitaire ;',\n 'thirdCategoryItem5':\n 'limiter le nombre de fois où vous voyez une publicité ;',\n 'thirdCategoryItem6':\n 'calculer les sommes dues aux acteurs de la chaîne de diffusion publicitaire ;',\n 'thirdCategoryItem7':\n \"mesurer l'efficacité et l'impact d'une campagne publicitaire.\",\n 'thirdCategoryText2':\n \"En désactivant ces identifiants, vous ne serez pas exposés à moins de publicités, mais à des publicités ne correspondant pas nécessairement à vos centres d'intérêts.\",\n 'OLD_vendorListButton': 'Afficher la liste des partenaires publicitaires',\n 'vendorListButton': 'Liste des partenaires',\n 'vendorTableTitle': 'Société',\n 'cookiePolicyLabel': 'Afficher notre politique cookie',\n 'declineButton': 'Continuer sans accepter',\n 'refuseButton': 'Tout refuser',\n 'acceptButton': 'Tout accepter',\n 'saveAndCloseButton': 'Enregistrer et fermer',\n 'partners': 'partenaires',\n 'services': 'liste des supports',\n 'confidentiality': 'Confidentialité',\n 'cookies': 'Cookies',\n 'cookiePolicy': 'notre politique cookie',\n 'vivendiGroup': 'groupe Vivendi',\n },\n 'cookiePolicyLink':\n 'https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.canalplus.com%2Fcookies%2F&data=05%7C01%7Caccessibility%40canal-plus.com%7C823c1ca48f0e4aa5619308dadeb8aac0%7Cbf5c5de16a544091a72f90e32801628c%7C0%7C0%7C638067181957704103%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=%2F%2BOBIfCLeee%2BxzL4ssnB0cc3iyHR0g6Fv%2BPCECmayZM%3D&reserved=0',\n 'partnersLink': 'https://static.canalplus.com/legal/cookies.html',\n 'vivendiGroupLink':\n 'https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.vivendi.com%2Fwp-content%2Fuploads%2F2022%2F11%2FVivendi-Organigramme-simplifie-au-30-septembre-2022-version-accessible.pdf&data=05%7C01%7Caccessibility%40canal-plus.com%7C823c1ca48f0e4aa5619308dadeb8aac0%7Cbf5c5de16a544091a72f90e32801628c%7C0%7C0%7C638067181957704103%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=h18CFEGAfLnvVqBZ6jHQ0%2BArXmAtDUznsj152kEoXHY%3D&reserved=0',\n 'a11y': {\n 'popinTitle':\n 'Groupe Canal Plus, le respect de votre vie privée est une priorité',\n 'learnMore': 'En savoir plus et paramétrer vos consentements',\n 'acceptButton': 'Accepter notre traitement des données',\n 'declineButton': 'Continuer sans accepter notre traitement des données',\n 'saveAndCloseButton': 'Enregistrer vos paramètres et continuer',\n 'refuseButton': 'Refuser notre traitement des données',\n 'vivendiGroupLink': 'Groupe Vivendi - nouvelle fenêtre',\n 'partnersLink': 'Nos partenaires - nouvelle fenêtre',\n 'newWindow': 'nouvelle fenêtre',\n 'cookiesLink': 'Cookies - nouvelle fenêtre',\n },\n 'customVendors': [\n {\n 'name': 'Vivendi',\n 'policyUrl': 'https://www.vivendi.com/footer/cookies-policy/',\n },\n {\n 'name': 'Dailymotion',\n 'policyUrl': 'https://www.dailymotion.com/legal/privacy',\n },\n {\n 'name': 'Gameloft',\n 'policyUrl': 'https://www.gameloft.com/fr/legal/showcase-cookie-policy',\n },\n {\n 'name': 'Editis',\n 'policyUrl': 'https://www.editis.com/gestion-des-cookies/',\n },\n {\n 'name': 'Vivendi Village',\n 'policyUrl': 'https://www.vivendi.com/footer/cookies-policy/',\n },\n {\n 'name': 'Mediarithmics',\n 'policyUrl':\n 'https://www.mediarithmics.com/fr-fr/content/charte-de-protection-des-donnees-personnelles',\n },\n {\n 'name': 'Betasérie',\n 'policyUrl': 'https://www.betaseries.com/conditions',\n },\n {\n 'name': 'Facebook',\n 'policyUrl': 'https://www.facebook.com/policies/cookies/',\n },\n { 'name': 'Mozoo', 'policyUrl': 'http://www.mozoo.fr/' },\n {\n 'name': 'Powerspace',\n 'policyUrl': 'https://powerspace.com/fr/privacy/',\n },\n {\n 'name': 'Snapchat',\n 'policyUrl': 'https://snap.com/fr-FR/cookie-policy',\n },\n {\n 'name': 'Adot',\n 'policyUrl': 'https://we-are-adot.com/privacy-policy/',\n },\n {\n 'name': 'CCM Benchmark',\n 'policyUrl':\n 'http://www.ccmbenchmark.com/donnees-personnelles?origin=s_institut',\n },\n {\n 'name': 'Emoteev',\n 'policyUrl': 'https://www.emoteev.io/fr/page-daccueil/',\n },\n { 'name': 'Horyzon', 'policyUrl': 'https://www.horyzon.com/' },\n {\n 'name': 'Pinterest',\n 'policyUrl': 'https://policy.pinterest.com/fr/privacy-policy',\n },\n {\n 'name': 'Reworld',\n 'policyUrl':\n 'https://www.reworldmedia.com/wp-content/uploads/2020/09/Politique-donn%C3%A9es-personnelles-et-cookies.pdf',\n },\n {\n 'name': 'Tiktok',\n 'policyUrl':\n 'https://www.tiktok.com/legal/tiktok-website-cookies-policy?lang=fr',\n },\n {\n 'name': 'Tradedoubler',\n 'policyUrl': 'https://www.tradedoubler.com/fr/privacy-policy/',\n },\n {\n 'name': 'Twitter',\n 'policyUrl':\n 'https://help.twitter.com/fr/rules-and-policies/twitter-cookies',\n },\n {\n 'name': 'Freewheel',\n 'policyUrl': 'https://www.freewheel.com/privacy-policy-fr',\n },\n { 'name': 'Acast', 'policyUrl': 'https://www.acast.com/en/privacy' },\n ],\n },\n {\n 'zones': ['pl'],\n 'locale': 'pl',\n 'privacyPopin': {\n 'OLD_title': 'Ustawienia plików cookies na stronach serwisu CANAL+',\n 'title': 'Dotyczy Twoich danych',\n 'mainText':\n 'Pliki cookies są stosowane w Serwisie CANAL+ między innymi w celu zagwarantowania jego poprawnego działania i dostosowania do Twoich potrzeb poprzez personalizację treści i reklam. Zawsze możesz wyłączyć pliki cookies według poniższych kategorii.',\n 'firstParagraph':\n 'Grupa CANAL+, jej spółki zależne (w tym CANAL+ Polska S.A. i członkowie %vivendiGroup%) oraz nasi %partners% (listę znajdziesz poniżej) używają plików cookies i podobnych technologii do zarządzania usługami i ich ulepszania oraz dostosowywania reklam do Twoich preferencji.',\n 'learnMore':\n 'Dowiedz się więcej i skonfiguruj wybrane ustawienia plików cookies. Możesz je aktualizować w dowolnym momencie w zakładce Ustawienia.',\n 'OLD_firstCategoryTitle':\n 'Pliki cookies obowiązkowe dla poprawnego działania usługi.',\n 'firstCategoryTitle': 'Poprawne działanie usługi (niezbędne)',\n 'OLD_firstCategoryText':\n 'Sesyjne pliki cookies Użytkownika, weryfikacyjne, uwierzytelniające, bezpieczeństwa oraz identyfikacyjne są konieczne dla poprawnego działania Serwisu CANAL+.',\n 'firstCategoryText':\n 'Te pliki cookies zapewniają działanie usługi, umożliwiając uwierzytelnianie użytkowników, bezpieczeństwo oraz (anonimowy) nadzór techniczny nad usługą. Nie można wyłączyć tego ustawienia.',\n 'OLD_secondCategoryTitle': 'Mierzenie oglądalności',\n 'secondCategoryTitle': 'Analiza wydajności',\n 'OLD_secondCategoryText':\n 'Statystyczne pliki cookies umożliwiają tworzenie anonimowych, zagregowanych statystyk w celu ulepszenia struktury i zawartości Serwisu CANAL+.',\n 'secondCategoryText':\n 'Te pliki cookies umożliwiają nam mierzenie wykorzystania oraz wydajności naszych usług (z wyłączeniem anonimowego pomiaru oglądalności) w celu lepszego dostosowania się do Twoich oczekiwań oraz zarządzania usługami.',\n 'OLD_thirdCategoryTitle': 'Reklama',\n 'thirdCategoryTitle': 'Spersonalizowana reklama',\n 'OLD_thirdCategoryText':\n 'Reklamowe pliki cookies pozwalają Partnerom na wyświetlanie reklam dostosowanych do Twoich zainteresowań. Wyłączenie tych plików cookies nie będzie miało wpływu na liczbę wyświetlanych reklam, ale na ich trafność.',\n 'thirdCategoryText':\n 'Reklamowe pliki cookie pozwalają nam, wraz z naszymi partnerami reklamowymi, oferować Ci reklamy dostosowane do Twoich zainteresowań, w oparciu o Twoje przeglądanie i profil oraz mierzyć ich oglądalność / skuteczność. Wyłączenie tych plików cookie nie będzie miało wpływu na liczbę reklam, a jedynie na ich trafność.',\n 'thirdCategoryText1':\n 'Te pliki cookies pozwalają nam oraz naszym partnerom oferować reklamy dostosowane do Twoich zainteresowań. Dokładniej oznacza to, że będziemy mogli:',\n 'thirdCategoryItem1':\n 'dostosowywać treści reklamowe do działań wykonywanych na Twoim urządzeniu lub do danych osobowych, które nam podałeś(-aś) w szczególności poprzez wykorzystanie funkcji targetowania reklam lub kontaktów e-mailowych na podstawie historii Twojego korzystania z naszych usług;',\n 'thirdCategoryItem2':\n 'monitorować kolejne działania wykonywane na Twoim urządzeniu;',\n 'thirdCategoryItem3':\n 'dostosowywać obszary reklamowe do preferencji wyświetleń na Twoim urządzeniu;',\n 'thirdCategoryItem4':\n 'dostosowywać prezentację usług, z którymi powiązane są treści reklamowe;',\n 'thirdCategoryItem5': 'ograniczyć liczbę wyświetlanych reklam;',\n 'thirdCategoryItem6':\n 'obliczać kwoty należne podmiotom w łańcuchu dystrybucji reklam;',\n 'thirdCategoryItem7': 'mierzyć skuteczność i wpływ kampanii reklamowych;',\n 'thirdCategoryItem8':\n 'analizować Twoje aktywności również jako niezalogowanego użytkownika na potrzeby retargetingu produktów lub usług pozostawionych w „porzuconym koszyku”.',\n 'thirdCategoryText2':\n 'Wyłączając te pliki cookies, nie będziesz otrzymywać mniejszej ilości materiałów reklamowych, ale będą pojawiały się reklamy nie zawsze odpowiadające Twoim zainteresowaniom.',\n 'vendorListButton': 'Lista partnerów',\n 'vendorTableTitle': 'Firma',\n 'cookiePolicyLabel': 'Zobacz naszą politykę plików cookies',\n 'declineButton': 'Odrzuć wszystko',\n 'refuseButton': 'Odrzuć wszystko',\n 'acceptButton': 'Akceptuj wszystko',\n 'saveAndCloseButton': 'Zapisz i zamknij',\n 'partners': 'partnerzy',\n 'services': 'lista usług',\n 'confidentiality': 'Ustawienia plików cookies',\n 'cookies': 'Ustawienia plików cookies',\n 'cookiePolicy': 'naszej polityki plików cookie',\n 'vivendiGroup': 'grupy Vivendi',\n },\n 'cookiePolicyLink': 'https://www.canalplus.com/pl/cookies/',\n 'partnersLink': 'https://www.canalplus.com/pl/cookies/',\n 'vivendiGroupLink':\n 'https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.vivendi.com%2Fwp-content%2Fuploads%2F2022%2F11%2FVivendi-Organigramme-simplifie-au-30-septembre-2022-version-accessible.pdf&data=05%7C01%7Caccessibility%40canal-plus.com%7C823c1ca48f0e4aa5619308dadeb8aac0%7Cbf5c5de16a544091a72f90e32801628c%7C0%7C0%7C638067181957704103%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=h18CFEGAfLnvVqBZ6jHQ0%2BArXmAtDUznsj152kEoXHY%3D&reserved=0',\n 'a11y': {\n 'popinTitle':\n 'Dla Grupy Canal Plus poszanowanie Twojej prywatności jest priorytetem',\n 'learnMore': 'Dowiedz się więcej i skonfiguruj swoje zgody',\n 'acceptButton': 'Zgoda na przetwarzanie danych przez nas',\n 'declineButton': 'Kontynuuj bez zgody na przetwarzanie danych przez nas',\n 'saveAndCloseButton': 'Zapisz ustawienia i kontynuuj',\n 'refuseButton': 'Rezygnacja z przetwarzania danych przez nas',\n 'vivendiGroupLink': 'Grupy Vivendi - nowe okno',\n 'partnersLink': 'Nasi partnerzy - nowe okno',\n 'newWindow': 'nowe okno',\n 'cookiesLink': 'Cookies - nowe okno',\n },\n 'customVendors': [\n {\n 'name': 'Vivendi',\n 'policyUrl': 'https://www.vivendi.com/footer/cookies-policy/',\n },\n {\n 'name': 'Dailymotion',\n 'policyUrl': 'https://www.dailymotion.com/legal/privacy',\n },\n {\n 'name': 'Gameloft',\n 'policyUrl': 'https://www.gameloft.com/fr/legal/showcase-cookie-policy',\n },\n {\n 'name': 'Editis',\n 'policyUrl': 'https://www.editis.com/gestion-des-cookies/',\n },\n {\n 'name': 'Vivendi Village',\n 'policyUrl': 'https://www.vivendi.com/footer/cookies-policy/',\n },\n { 'name': 'WP', 'policyUrl': 'https://onas.wp.pl/poufnosc.html' },\n {\n 'name': 'RASP',\n 'policyUrl': 'https://polityka-prywatnosci.onet.pl/index.html',\n },\n {\n 'name': 'Interia',\n 'policyUrl': 'https://prywatnosc.interia.pl/polityka-prywatnosci',\n },\n { 'name': 'ZPR', 'policyUrl': 'https://rodo.grupazpr.pl/' },\n {\n 'name': 'Adtraction',\n 'policyUrl': 'https://adtraction.com/about-us/privacy-policy',\n },\n {\n 'name': 'Bankier',\n 'policyUrl': 'https://apps.bonnier.pl/img/polityka_plikow_cookies.pdf',\n },\n {\n 'name': 'BlueLead',\n 'policyUrl': 'https://bluepartner.eu/pl/dokumenty/',\n },\n {\n 'name': 'CityAds',\n 'policyUrl': 'https://cityads.com/main/cookiePolicy',\n },\n {\n 'name': 'eBroker',\n 'policyUrl':\n 'https://www.ebroker.pl/canal_plus_polityka_prywatnosci.pdf',\n },\n {\n 'name': 'Inis',\n 'policyUrl': 'https://www.inis.pl/polityka-prywatnosci/',\n },\n {\n 'name': 'LeadStar',\n 'policyUrl': 'https://leadstar.pl/politykaprywatnosci',\n },\n {\n 'name': 'Tradetracker',\n 'policyUrl': 'https://tradetracker.com/privacy-policy/',\n },\n {\n 'name': 'Glob360 (Natemat)',\n 'policyUrl': 'https://natemat.pl/info/polityka-prywatnosci ',\n },\n {\n 'name': 'Antyweb',\n 'policyUrl': 'https://antyweb.pl/polityka-prywatnosci/',\n },\n {\n 'name': 'NaEkranie',\n 'policyUrl': 'https://naekranie.pl/polityka-prywatnosci ',\n },\n {\n 'name': 'USŁUGI INTERNETOWO REKLAMOWE HDTV PIOTR GMEREK',\n 'policyUrl': 'https://hdtvpolska.com/polityka-prywatnosci/',\n },\n { 'name': 'Filmweb', 'policyUrl': 'https://www.filmweb.pl/privacy' },\n {\n 'name': 'Spider’s Web - PROBIZ PRZEMYSŁAW PAJĄK',\n 'policyUrl': 'https://spidersweb.pl/polityka-prywatnosci-spiders-web/',\n },\n {\n 'name': 'TVN Media',\n 'policyUrl': 'https://konto.tvn.pl/pdf/polityka_prywatnosci',\n },\n {\n 'name': 'Mobile B2B',\n 'policyUrl': 'http://www.mobileb2b.pl/polityka-prywatnosci/',\n },\n {\n 'name': 'Email Network',\n 'policyUrl':\n 'https://emailnetwork.pl/wp-content/uploads/2019/04/Polityka-prywatnosci-i-cookies-Email-Network.pdf',\n },\n {\n 'name': 'Justtag',\n 'policyUrl': 'https://www.justtag.com/privacy-policy.html',\n },\n {\n 'name': 'Adrino Mobile',\n 'policyUrl':\n 'https://adrino.pl/wp-content/uploads/2020/05/POLITYKA-PRYWATNOS%CC%81CI-Adrino-Mobile.pdf',\n },\n {\n 'name': 'Listonic',\n 'policyUrl': 'https://listonic.com/pl/polityka-prywatnosci/',\n },\n {\n 'name': 'NetSalesMedia',\n 'policyUrl': 'https://netsalesmedia.pl/polityka-prywatnosci.html',\n },\n {\n 'name': 'Agora',\n 'policyUrl': 'https://www.agora.pl/polityka-prywatnosci ',\n },\n {\n 'name': 'Grupa Interia',\n 'policyUrl': 'https://prywatnosc.interia.pl/polityka-prywatnosci',\n },\n { 'name': 'Scoop', 'policyUrl': 'https://nextclick.pl/privacy-policy' },\n {\n 'name': 'Polsat Media Biuro Reklamy',\n 'policyUrl':\n 'https://www.polsatmedia.pl/bin/acc6798ced78762703e9a13750f6467a.pdf',\n },\n {\n 'name': 'HTTPool Slovenia (Twitter)',\n 'policyUrl': 'https://www.httpool.pl/privacy/ ',\n },\n {\n 'name': 'Freewheel',\n 'policyUrl': 'https://www.freewheel.com/privacy-policy',\n },\n { 'name': 'Acast', 'policyUrl': 'https://www.acast.com/en/privacy' },\n {\n 'name': 'UseItBetter',\n 'policyUrl':\n 'https://help.useitbetter.com/en/terms-and-policies/privacy-policy.html',\n },\n {\n 'name': 'Microsoft Clarity',\n 'policyUrl': 'https://privacy.microsoft.com/pl-pl/privacystatement',\n },\n ],\n },\n {\n 'zones': ['it'],\n 'locale': 'it',\n 'privacyPopin': {\n 'OLD_title': 'Impostazioni dei cookie sui siti web di GROUPE CANAL+',\n 'title': 'Informazioni sui tuoi dati',\n 'mainText':\n 'I cookie vengono inviati ai Siti di GROUPE CANAL+, che fa parte del gruppo VIVENDI, in particolare per garantirne il corretto funzionamento e per personalizzare la tua esperienza, i contenuti o la pubblicità. Se desideri, puoi disabilitare i cookie per categoria.',\n 'firstParagraph':\n 'Groupe CANAL+ e i suoi affiliati (membri del %vivendiGroup%) e %partners% utilizzano traccianti per gestire e migliorare i nostri servizi e offrirti pubblicità più pertinenti.',\n 'secondParagraph':\n 'Puoi configurare le tue scelte per finalità e aggiornarle in qualsiasi momento tramite la nostra sezione %cookies%.',\n 'thirdParagraph':\n \"Se hai effettuato l'accesso con il tuo account CANAL+, la scelta sarà valida per l'utilizzo e la navigazione della home su tutte le applicazioni e media digitali del gruppo Canal+ (elenco dei media).\",\n 'thirdParagraphUnlog':\n 'La vostra scelta sarà valida solo sul dispositivo corrente. Se accedete al vostro account CANAL+, le vostre scelte espresse in modalità login prevarranno.',\n 'learnMore': 'Maggiori informazioni e configurazione delle mie scelte',\n 'OLD_firstCategoryTitle': 'Cookie necessari per il funzionamento',\n 'firstCategoryTitle': 'Funzionamento del servizio (obbligatorio)',\n 'OLD_firstCategoryText':\n \"Si tratta di cookie di sessione dell'utente, di autenticazione e sicurezza strettamente necessari per il funzionamento del Sito.\",\n 'firstCategoryText':\n \"Questi identificatori rendono possibile il funzionamento del servizio, consentendo l'autenticazione dell'utente, la sicurezza e la supervisione tecnica (anonima) del servizio. Non è possibile disattivare questa impostazione.\",\n 'OLD_secondCategoryTitle': 'Misurazione del pubblico',\n 'secondCategoryTitle': 'Analisi di prestazione',\n 'OLD_secondCategoryText':\n \"I cookie statistici vengono utilizzati per misurare l'utilizzo e le prestazioni del Sito e per migliorarne il funzionamento.\",\n 'secondCategoryText':\n \"Questi identificatori consentono di misurare l'utilizzo e le prestazioni dei nostri servizi (ad esclusione della misurazione anonima del pubblico) per adattarsi al meglio alle tue aspettative.\",\n 'OLD_thirdCategoryTitle': 'Pubblicità',\n 'thirdCategoryTitle': 'Pubblicità personalizzata',\n 'OLD_thirdCategoryText':\n 'I cookie pubblicitari consentono ai nostri partner pubblicitari di proporre pubblicità su misura per i tuoi interessi. La disattivazione di questi cookie non avrà alcun impatto sul volume degli annunci, ma solo sulla loro rilevanza.',\n 'thirdCategoryText1':\n 'Questi identificatori ci consentono, insieme ai nostri partner, di offrirti pubblicità su misura per i tuoi interessi. Più precisamente, saremo in grado di:',\n 'thirdCategoryItem1':\n 'adattare i contenuti pubblicitari in base alla navigazione del tuo dispositivo o ai dati personali che ci hai fornito, in particolare utilizzando funzionalità di retargeting per presentarti pubblicità o contatti email dopo aver usufruito dei nostri servizi;',\n 'thirdCategoryItem2':\n 'seguire la successiva navigazione effettuata dal tuo terminale;',\n 'thirdCategoryItem3':\n 'adattare gli spazi pubblicitari alle preferenze di visualizzazione del tuo terminale;',\n 'thirdCategoryItem4':\n 'adattare la presentazione del servizio a cui rimanda un contenuto pubblicitario;',\n 'thirdCategoryItem5':\n 'limitare il numero di volte in cui vedi un annuncio pubblicitario;',\n 'thirdCategoryItem6':\n 'calcolare gli importi spettanti agli attori della filiera pubblicitaria;',\n 'thirdCategoryItem7':\n \"misurare l'efficacia e l'impatto di una campagna pubblicitaria.\",\n 'thirdCategoryText2':\n 'Disattivando questi identificatori, non visualizzerai un minor numero di annunci pubblicitari, ma annunci non necessariamente pertinenti ai tuoi interessi.',\n 'OLD_vendorListButton': \"Visualizza l'elenco dei partner pubblicitari\",\n 'vendorListButton': 'Elenco dei partner',\n 'vendorTableTitle': 'Azienda',\n 'cookiePolicyLabel': 'Visualizza la nostra informativa sui cookie',\n 'declineButton': 'Rifiuta tutto',\n 'refuseButton': 'Rifiuta tutto',\n 'acceptButton': 'Accetta tutto',\n 'saveAndCloseButton': 'Salva e chiudi',\n 'partners': 'partner',\n 'services': 'elenco dei media',\n 'confidentiality': 'Privacy',\n 'cookies': 'Cookies',\n 'cookiePolicy': 'la nostra informativa sui cookie',\n 'vivendiGroup': 'gruppo Vivendi',\n },\n 'cookiePolicyLink': 'https://static.canalplus.com/legal/cookies.html',\n 'partnersLink': 'https://static.canalplus.com/legal/cookies.html',\n 'vivendiGroupLink':\n 'https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.vivendi.com%2Fwp-content%2Fuploads%2F2022%2F11%2FVivendi-Organigramme-simplifie-au-30-septembre-2022-version-accessible.pdf&data=05%7C01%7Caccessibility%40canal-plus.com%7C823c1ca48f0e4aa5619308dadeb8aac0%7Cbf5c5de16a544091a72f90e32801628c%7C0%7C0%7C638067181957704103%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=h18CFEGAfLnvVqBZ6jHQ0%2BArXmAtDUznsj152kEoXHY%3D&reserved=0',\n 'a11y': {\n 'popinTitle':\n 'Gruppo Canal Plus, il rispetto della sua privacy è una priorità',\n 'learnMore': 'Per saperne di più e impostare i tuoi consensi',\n 'acceptButton': 'Accettazione del nostro trattamento dei dati',\n 'declineButton':\n 'Continuare senza accettare il nostro trattamento dei dati',\n 'saveAndCloseButton': 'Salvare le impostazioni e continuare',\n 'refuseButton': 'Rinuncia al nostro trattamento dei dati',\n 'vivendiGroupLink': 'Gruppo Vivendi - nuova finestra',\n 'partnersLink': 'I nostri partner - nuova finestra',\n 'newWindow': 'nuova finestra',\n 'cookiesLink': 'Cookies - nuova finestra',\n },\n 'customVendors': [],\n },\n {\n 'default': true,\n 'zones': [\n 'bf',\n 'bi',\n 'bj',\n 'bl',\n 'cd',\n 'cf',\n 'cg',\n 'ch',\n 'ci',\n 'cm',\n 'cv',\n 'dj',\n 'fr',\n 'ga',\n 'gf',\n 'gh',\n 'gm',\n 'gn',\n 'gp',\n 'gq',\n 'gw',\n 'mc',\n 'mf',\n 'mg',\n 'ml',\n 'mq',\n 'mr',\n 'mu',\n 'nc',\n 'ne',\n 'ng',\n 'pl',\n 're',\n 'rw',\n 'sl',\n 'sn',\n 'tg',\n 'td',\n 'wf',\n 'yt',\n 'pf',\n ],\n 'locale': 'en',\n 'privacyPopin': {\n 'OLD_title': 'Cookie setting on GROUPE CANAL+ websites',\n 'title': 'About your data',\n 'mainText':\n 'We use cookies on websites of GROUPE CANAL+, which is part of VIVENDI group, in order to ensure their proper functioning and to personalize your experience, contents or adverts. You may, if you wish, deactivate categories of cookies.',\n 'firstParagraph':\n 'CANAL+ Group and its subsidiaries and our %partners%, including %vivendiGroup% affiliates, use tracers to measure the use and the performance of our services and to offer you more relevant advertisements on the basis of your navigation and your profile.',\n 'OLD_firstParagraph':\n 'CANAL+ Group and its subsidiaries (members of the %vivendiGroup%) and our %partners% use tracers to manage and improve our services and offer you more relevant ads.',\n 'secondParagraph':\n 'You can learn more about the use of your data, set your choices by purpose and update them at any time via our %cookies% section.',\n 'OLD_secondParagraph':\n 'You can configure your choices by purpose and update them at any time via our %confidentiality% section.',\n 'thirdParagraph':\n 'Because you are connected to your CANAL+ account, your choice will be valid on all the digital media of the CANAL+ Group connected to this account.',\n 'OLD_thirdParagraph':\n 'Because you are logged in to your CANAL+ account, your choice will apply to all of Groupe CANAL+’s digital media connected to your account.',\n 'thirdParagraphUnlog':\n 'Your choice will only be valid on the device you are currently using. If you are connected to your CANAL+ account, your choices expressed in connected mode will prevail.',\n 'OLD_thirdParagraphUnlog':\n 'Your choice will be valid only on the current device. If you log in to your CANAL+ account, your choices expressed in logged-in mode will prevail.',\n 'learnMore': 'Learn more and configure my choices',\n 'OLD_firstCategoryTitle': 'Strictly necessary',\n 'firstCategoryTitle': 'Functioning of service (required)',\n 'OLD_firstCategoryText':\n 'These are user session, authentication and security cookies, which are strictly necessary to the website functioning.',\n 'firstCategoryText':\n 'These identifiers make it possible to ensure functioning of the service, allowing user authentication, security and technical supervision (anonymous) of the service. You cannot disable this setting.',\n 'OLD_secondCategoryTitle': 'Audience measurements',\n 'secondCategoryTitle': 'Performance analysis',\n 'OLD_secondCategoryText':\n 'Cookies used for statistical purposes enable us to measure the use and performance of our website and to improve its functioning.',\n 'secondCategoryText':\n 'These identifiers make it possible to measure the use and performance of our services (excluding anonymous audience measurement) in order to better adapt to your expectations.',\n 'OLD_thirdCategoryTitle': 'Advertising',\n 'thirdCategoryTitle': 'Personalised ads',\n 'OLD_thirdCategoryText':\n 'Advertising cookies enable us and our advertising partners to provide you with adverts which are adapted to your interests. Deactivating those cookies will not have an impact on the adverts volume, but only on their relevance.',\n 'thirdCategoryText':\n 'Advertising cookies enable us and our advertising partners to provide you with advertisements which are adapted to your interests, according to your navigation and profile, and to measure their efficacity. Deactivating those cookies will not have an impact on the amount of advertisements, but only on their relevance.',\n 'thirdCategoryText1':\n 'These identifiers allow us, together with our partners, to offer you ads tailored to your areas of interest. More precisely, we will be able to:',\n 'thirdCategoryItem1':\n 'adapt the advertising content according to browsing on your terminal or the personal data you have provided, in particular by using targeting functions (retargeting) to offer you ads or email contacts following your use of our services;',\n 'thirdCategoryItem2':\n 'follow subsequent browsing carried out on your terminal;',\n 'thirdCategoryItem3':\n 'adapt advertising spaces to the display preferences of your terminal;',\n 'thirdCategoryItem4':\n 'adapt presentation of the service to which advertising content leads;',\n 'thirdCategoryItem5': 'limit the number of times you see an ad;',\n 'thirdCategoryItem6':\n 'calculate the sums due to the players in the advertising distribution chain;',\n 'thirdCategoryItem7':\n 'measure the effectiveness and impact of an advertising campaign.',\n 'thirdCategoryText2':\n 'By disabling these identifiers, you will not be exposed to fewer ads, but rather to ads that do not necessarily correspond to your interests.',\n 'OLD_vendorListButton': 'Show list of advertising partners',\n 'vendorListButton': 'List of partners',\n 'vendorTableTitle': 'Company',\n 'cookiePolicyLabel': 'Show our cookie policy',\n 'declineButton': 'Refuse all',\n 'refuseButton': 'Refuse all',\n 'acceptButton': 'Accept all',\n 'saveAndCloseButton': 'Save and close',\n 'partners': 'partners',\n 'services': 'list of services',\n 'confidentiality': 'Confidentiality',\n 'cookies': 'Cookies',\n 'cookiePolicy': 'our cookie policy',\n 'vivendiGroup': 'Vivendi group',\n },\n 'cookiePolicyLink':\n 'https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.canalplus.com%2Fcookies%2F&data=05%7C01%7Caccessibility%40canal-plus.com%7C823c1ca48f0e4aa5619308dadeb8aac0%7Cbf5c5de16a544091a72f90e32801628c%7C0%7C0%7C638067181957704103%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=%2F%2BOBIfCLeee%2BxzL4ssnB0cc3iyHR0g6Fv%2BPCECmayZM%3D&reserved=0',\n 'partnersLink': 'https://static.canalplus.com/legal/cookies.html',\n 'vivendiGroupLink':\n 'https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.vivendi.com%2Fwp-content%2Fuploads%2F2022%2F11%2FVivendi-Organigramme-simplifie-au-30-septembre-2022-version-accessible.pdf&data=05%7C01%7Caccessibility%40canal-plus.com%7C823c1ca48f0e4aa5619308dadeb8aac0%7Cbf5c5de16a544091a72f90e32801628c%7C0%7C0%7C638067181957704103%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=h18CFEGAfLnvVqBZ6jHQ0%2BArXmAtDUznsj152kEoXHY%3D&reserved=0',\n 'a11y': {\n 'popinTitle': 'Canal Plus Group, respecting your privacy is a priority',\n 'learnMore': 'Learn more and configure your consents',\n 'acceptButton': 'Agree to our data processing',\n 'declineButton': 'Continue without accepting our data processing',\n 'saveAndCloseButton': 'Save your settings and continue',\n 'refuseButton': 'Opt out of our data processing',\n 'vivendiGroupLink': 'Vivendi Group - new window',\n 'partnersLink': 'Our partners - new window',\n 'newWindow': 'new window',\n 'cookiesLink': 'Cookies - new window',\n },\n 'customVendors': [\n {\n 'name': 'Vivendi',\n 'policyUrl': 'https://www.vivendi.com/footer/cookies-policy/',\n },\n {\n 'name': 'Dailymotion',\n 'policyUrl': 'https://www.dailymotion.com/legal/privacy',\n },\n {\n 'name': 'Gameloft',\n 'policyUrl': 'https://www.gameloft.com/en/legal/showcase-cookie-policy',\n },\n {\n 'name': 'Editis',\n 'policyUrl': 'https://www.editis.com/gestion-des-cookies/',\n },\n {\n 'name': 'Vivendi Village',\n 'policyUrl': 'https://www.vivendi.com/footer/cookies-policy/',\n },\n {\n 'name': 'Mediarithmics',\n 'policyUrl':\n 'https://www.mediarithmics.com/en-us/content/privacy-policy',\n },\n {\n 'name': 'Betasérie',\n 'policyUrl': 'https://www.betaseries.com/conditions',\n },\n {\n 'name': 'Facebook',\n 'policyUrl': 'https://www.facebook.com/policies/cookies/',\n },\n { 'name': 'Mozoo', 'policyUrl': 'http://www.mozoo.fr/' },\n {\n 'name': 'Powerspace',\n 'policyUrl': 'https://powerspace.com/fr/privacy/',\n },\n {\n 'name': 'Snapchat',\n 'policyUrl': 'https://snap.com/en-US/cookie-settings',\n },\n {\n 'name': 'Adot',\n 'policyUrl': 'https://we-are-adot.com/privacy-policy/',\n },\n {\n 'name': 'CCM Benchmark',\n 'policyUrl':\n 'http://www.ccmbenchmark.com/donnees-personnelles?origin=s_institut',\n },\n { 'name': 'Emoteev', 'policyUrl': 'https://www.emoteev.io/' },\n { 'name': 'Horyzon', 'policyUrl': 'https://www.horyzon.com/' },\n {\n 'name': 'Pinterest',\n 'policyUrl': 'https://policy.pinterest.com/en/privacy-policy',\n },\n {\n 'name': 'Reworld',\n 'policyUrl':\n 'https://www.reworldmedia.com/wp-content/uploads/2020/09/Politique-donn%C3%A9es-personnelles-et-cookies.pdf',\n },\n {\n 'name': 'Tiktok',\n 'policyUrl':\n 'https://www.tiktok.com/legal/tiktok-website-cookies-policy',\n },\n {\n 'name': 'Tradedoubler',\n 'policyUrl': 'https://www.tradedoubler.com/en/privacy-policy/',\n },\n {\n 'name': 'Twitter',\n 'policyUrl':\n 'https://help.twitter.com/en/rules-and-policies/twitter-cookies',\n },\n {\n 'name': 'Freewheel',\n 'policyUrl': 'https://www.freewheel.com/privacy-policy',\n },\n { 'name': 'Acast', 'policyUrl': 'https://www.acast.com/en/privacy' },\n ],\n },\n];\n\nexport const getLangConfig = (choosenZone, choosenLocale) => {\n const filteredConfigs = configs.filter((el) =>\n el.zones.includes(choosenZone),\n );\n\n if (filteredConfigs.length > 0) {\n const configForZoneAndLocale = filteredConfigs.filter(\n (el) => el.locale === choosenLocale,\n );\n return configForZoneAndLocale.length > 0\n ? configForZoneAndLocale[0]\n : filteredConfigs[0]; // Default is any locale for this zone\n }\n\n // If we haven't found any config for the choosenZone, we need to try by locale\n const configForLocale = filteredConfigs.filter(\n (el) => el.locale === choosenLocale,\n );\n return configForLocale.length > 0\n ? configForLocale[0]\n : configs.filter((locale) => locale.default === true)[0]; // Default config is \"EN\" locale\n};\n","export const ABTEST_COOKIE_NAME = 'abTestingPopulation';\nexport const ABTEST_DURATION_DAYS = 1 / 24; /* 1 hour in days */\nexport const ABTEST_STORE_COOKIE_NAME = 'abTestPopulationStore';\nexport const AFFILIATION = 'Affiliation';\nexport const BANNER = 'Banner';\nexport const BRAND_ORANGE = 'orange';\nexport const BRAND_CANALBOX = 'canalbox';\nexport const BRAND_AFRIQUE = 'cplusafrique';\nexport const BRAND_CALEDONIE = 'cpluscaledonie';\nexport const BRAND_CARAIBES = 'cpluscaraibes';\nexport const BRAND_ETHIOPIA = 'cplusethiopia';\nexport const BRAND_HAITI = 'cplushaiti';\nexport const BRAND_MADAGASCAR = 'cplusmadagascar';\nexport const BRAND_MAURICE = 'cplusmaurice';\nexport const BRAND_REUNION = 'cplusreunion';\nexport const BRAND_MYANMAR = 'cplusmyanmar';\nexport const BRAND_MMC = 'ma-maison-canalbox';\nexport const BRAND_MYCANAL = 'mycanal';\nexport const BRAND_TIMVISION = 'timvision';\nexport const BRAND_TNTSAT = 'tntsat';\nexport const BRAND_TVCARAIBES = 'tvcaraibes';\nexport const COOKIE_NAME_ADS = 'adsAllowed';\nexport const COOKIE_NAME_ANONYMOUS = 'anonymousAllowed';\nexport const COOKIE_NAME_DEVICE_ID = 'deviceId';\nexport const COOKIE_NAME_SESSION_ID = 'sessionId';\nexport const COOKIE_NAME_STATS = 'statsAllowed';\nexport const CPLUS_DOMAINS = 'CANAL+ domains';\nexport const DATA_API_DOMAIN = 'data.api.canalplus.com';\nexport const DATA_API_DOMAIN_TIMVISION = 'data.api.timvision.it';\nexport const DATA_API_DOMAIN_TV = 'data.api.tv.canalplus.com';\nexport const DATA_API_DOMAIN_ORANGE = 'canal.vct.pgw.orange.fr/data-tracking';\nexport const DATA_DOMAIN = 'data.canalplus.com';\nexport const DATA_DOMAIN_AFRIQUE = 'data.canalplus-afrique.com';\nexport const DATA_DOMAIN_CALEDONIE = 'data.canalplus-caledonie.com';\nexport const DATA_DOMAIN_CANALBOX = 'data.canalbox.com';\nexport const DATA_DOMAIN_CARAIBES = 'data.canalplus-caraibes.com';\nexport const DATA_DOMAIN_ETHIOPIA = 'data.canalplus-ethiopia.com';\nexport const DATA_DOMAIN_HAITI = 'data.canalplus-haiti.com';\nexport const DATA_DOMAIN_MADAGASCAR = 'data.canalplus-madagascar.com';\nexport const DATA_DOMAIN_MAURICE = 'data.canalplus-maurice.com';\nexport const DATA_DOMAIN_MYANMAR = 'data.canalplus-myanmar.com';\nexport const DATA_DOMAIN_REUNION = 'data.canalplus-reunion.com';\nexport const DATA_DOMAIN_TIMVISION = 'data.timvision.it';\nexport const DATA_DOMAIN_TNTSAT = 'data.tntsat.tv';\nexport const DATA_DOMAIN_TV = 'data.tv.canalplus.com';\nexport const DATA_DOMAIN_TVCARAIBES = 'data.tvcaraibes.tv';\nexport const DATA_DOMAIN_ORANGE = 'canal.vct.pgw.orange.fr/trackingtool';\n/** default cookie duration is 6 months */\nexport const DEFAULT_COOKIE_DURATION = 182;\n/** device id cookie duration is 13 months */\nexport const DEVICE_ID_COOKIE_DURATION = 395;\nexport const DIRECT = 'Direct';\nexport const DISPLAY = 'Display';\nexport const EMAIL = 'Email';\nexport const IFRAME_ID = 'pm-cookie-sync-frame';\nexport const IFRAME_PATH_LOCAL = '/v2/cookie-sync.html';\nexport const IFRAME_PATH_PROD = '/production/v2/cookie-sync.html';\nexport const INTERN_CAMPAIGN = 'Intern campaign';\nexport const NATURAL_SEARCH = 'Natural Search';\nexport const OPEN_PARTNER = 'Open partner';\nexport const OTHER_REF_DOMAINS = 'Other referring domains';\nexport const PAID_SEARCH = 'Paid search';\nexport const PARTNERSHIP = 'Partnership';\nexport const PATH_CANALBOX_LOCAL = '/v2/assets/icons/canalbox.svg';\nexport const PATH_CANALBOX_PROD = '/production/v2/assets/icons/canalbox.svg';\nexport const PATH_MMC_LOCAL = '/v2/assets/icons/mmc.svg';\nexport const PATH_MMC_PROD = '/production/v2/assets/icons/mmc.svg';\nexport const PATH_PANTON_FONT_LOCAL = '/v2/assets/fonts/PantonItalic.otf';\nexport const PATH_PANTON_FONT_PROD =\n '/production/v2/assets/fonts/PantonItalic.otf';\nexport const PATH_TVCARAIBES_LOCAL = '/v2/assets/icons/tvcaraibes.svg';\nexport const PATH_TVCARAIBES_PROD =\n '/production/v2/assets/icons/tvcaraibes.svg';\nexport const PUSH_NOTIF = 'Push notification';\nexport const SESSION_ID_DURATION_DAYS = 1 / 24 / 2; /* 30 minutes */\nexport const SMS = 'SMS';\nexport const SOCIAL_NETWORK = 'Social Network';\nexport const SOCIAL_ORGANIC = 'Organic Social';\nexport const SOCIAL_PAID = 'Paid Social';\nexport const THEME_CANALBOX = 'canalbox';\nexport const THEME_DEFAULT = 'default';\nexport const THEME_MMC = 'mmcanalbox';\nexport const THEME_TIMVISION = 'telecomitalia';\nexport const THEME_TVCARAIBES = 'tvcaraibes';\nexport const TV_BRANDS = [\n 'lgtv',\n 'playstation',\n 'stb',\n 'philipstv',\n 'samsungtv',\n 'firetvreact',\n 'g10',\n 'g10lcpi',\n 'g11',\n 'g9',\n 'g9lcpi',\n 'g9lcpisat',\n 'g9mini',\n 'g9sat',\n 'hisensetv',\n 'sfr',\n 'upc',\n];\n\nexport const VENDORLIST_PATH_LOCAL = '/v2/vendorList.json';\nexport const VENDORLIST_PATH_PROD = '/production/v2/vendorList.json';\nexport const VIDEO = 'Video';\nexport const PAY_VOD = 'pay vod';\nexport const LAUNCH_APP = 'launch app';\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import {\n BRAND_AFRIQUE,\n BRAND_CALEDONIE,\n BRAND_CANALBOX,\n BRAND_CARAIBES,\n BRAND_ETHIOPIA,\n BRAND_HAITI,\n BRAND_MADAGASCAR,\n BRAND_MAURICE,\n BRAND_MYANMAR,\n BRAND_MYCANAL,\n BRAND_ORANGE,\n BRAND_REUNION,\n BRAND_TIMVISION,\n BRAND_TNTSAT,\n BRAND_TVCARAIBES,\n DATA_API_DOMAIN,\n DATA_API_DOMAIN_ORANGE,\n DATA_API_DOMAIN_TIMVISION,\n DATA_API_DOMAIN_TV,\n DATA_DOMAIN,\n DATA_DOMAIN_AFRIQUE,\n DATA_DOMAIN_CALEDONIE,\n DATA_DOMAIN_CANALBOX,\n DATA_DOMAIN_CARAIBES,\n DATA_DOMAIN_ETHIOPIA,\n DATA_DOMAIN_HAITI,\n DATA_DOMAIN_MADAGASCAR,\n DATA_DOMAIN_MAURICE,\n DATA_DOMAIN_MYANMAR,\n DATA_DOMAIN_ORANGE,\n DATA_DOMAIN_REUNION,\n DATA_DOMAIN_TIMVISION,\n DATA_DOMAIN_TNTSAT,\n DATA_DOMAIN_TV,\n DATA_DOMAIN_TVCARAIBES,\n TV_BRANDS,\n} from './PrivacyManager/Constants';\n\nexport const extractDeviceInfos = (value) => {\n const cookieSplit = value.split(':');\n const authenticatedFlag =\n cookieSplit.length > 1 && cookieSplit[1] ? cookieSplit[1] : '';\n const trackingKey =\n cookieSplit.length > 2 && cookieSplit[2] ? cookieSplit[2] : '';\n return { deviceId: cookieSplit[0], authenticatedFlag, trackingKey };\n};\n\nconst generateRandomAlphaNum = () => {\n return Math.floor((1 + Math.random()) * Number.MAX_SAFE_INTEGER)\n .toString(16)\n .substring(2);\n};\n\nexport const generateUID = () => {\n return `${new Date().getTime().toString()}-${generateRandomAlphaNum()}`;\n};\n\nexport const isPassIncluded = () => {\n return (\n window.waitForPassJSON &&\n typeof window.waitForPassJSON === 'function' &&\n window.isPassForm !==\n true /* We need to exclude Pass form where the waitForPassJSON will never be called */\n );\n};\n\nexport const isPassAuthenticated = () => {\n return (\n typeof passJSON !== 'undefined' &&\n passJSON &&\n ((passJSON.subscriberId && passJSON.subscriberId > 0) ||\n (passJSON.accountId && passJSON.accountId > 0) ||\n passJSON.isAuthenticated === true)\n );\n};\n\nexport const isUserCentricConsentModeActivated = () =>\n passJSON.askForConsent !== undefined;\n\n// get the query of an url or path\nexport const getQueryParam = (param, pathParam) => {\n const qd = {};\n const path = pathParam || window.location.search;\n\n if (path) {\n path\n .substr(1)\n .split('&')\n .forEach((item) => {\n const s = item.split('=');\n const k = s[0];\n const v = s[1] && decodeURIComponent(s[1]); // null-coalescing / short-circuit\n // (k in qd) ? qd[k].push(v) : qd[k] = [v]\n (qd[k] = qd[k] || []).push(v); // null-coalescing / short-circuit\n });\n }\n return qd[param] ? qd[param][0] : '';\n};\n\n// Credit : https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript\nexport const getAllQueryParams = (query) => {\n if (!query) {\n return {};\n }\n\n // Remove the initial '?' if present\n const normalizedQuery = query.startsWith('?') ? query.slice(1) : query;\n\n return normalizedQuery.split('&').reduce((params, param) => {\n const [key, value] = param.split('=');\n params[key] = value ? decodeURIComponent(value.replace(/\\+/g, ' ')) : '';\n return params;\n }, {});\n};\n\n/* Plugins from Adobe s.c_r() => don't try to debug this */\n\nexport const readCookie = (cookieName) => {\n cookieName = escape(cookieName);\n var b = ' ' + document.cookie,\n cookieFound = b.indexOf(' ' + cookieName + '='),\n f = 0 > cookieFound ? cookieFound : b.indexOf(';', cookieFound);\n cookieName =\n 0 > cookieFound\n ? ''\n : unescape(\n b.substring(\n cookieFound + 2 + cookieName.length,\n 0 > f ? b.length : f,\n ),\n );\n return '[[B]]' != cookieName ? cookieName : '';\n};\n\n/*\n * Parameters : cookieName, value, duration [default: session]\n * Plugins from Adobe s.c_w() => don't try to debug this\n */\n/* eslint-disable */\nexport const writeCookie = (c, b, d, e) => {\n var l = location.hostname.indexOf('.');\n var f = l >= 0 ? location.hostname.slice(l) : location.hostname, // we write cookie on the domain level\n g;\n b = '' + b;\n e = e ? ('' + e).toUpperCase() : '';\n d &&\n 'SESSION' != e &&\n 'NONE' != e &&\n ((g = '' != b ? parseInt(e ? e : 0) : -60)\n ? ((d = new Date()), d.setTime(d.getTime() + 1e3 * g))\n : 1 == d &&\n ((d = new Date()),\n (g = d.getYear()),\n d.setYear(g + 5 + (1900 > g ? 1900 : 0))));\n return c && 'NONE' != e\n ? ((document.cookie =\n escape(c) +\n '=' +\n escape('' != b ? b : '[[B]]') +\n '; SameSite=None; secure; path=/;' +\n (d && 'SESSION' != e ? ' expires=' + d.toGMTString() + ';' : '') +\n (f ? ' domain=' + f + ';' : '')),\n readCookie(c) == b)\n : 0;\n};\n/* eslint-enable */\n\n// Source : stackoverflow https://stackoverflow.com/questions/4373018/sort-array-of-numeric-alphabetical-elements-natural-sort\n// The idea is to sort in natural way. Example: prop2 is before prop10\nexport const naturalSort = (as, bs) => {\n let a;\n let b;\n let a1;\n let b1;\n const rx = /(\\d+)|(\\D+)/g;\n const rd = /\\d/;\n const rz = /^0/;\n\n if (typeof as === 'number' || typeof bs === 'number') {\n if (Number.isNaN(as)) {\n return 1;\n }\n if (Number.isNaN(bs)) {\n return -1;\n }\n return as - bs;\n }\n\n a = String(as).toLowerCase();\n b = String(bs).toLowerCase();\n\n if (a === b) {\n return 0;\n }\n\n if (!(rd.test(a) && rd.test(b))) {\n return a > b ? 1 : -1;\n }\n\n a = a.match(rx);\n b = b.match(rx);\n\n while (a.length && b.length) {\n a1 = a.shift();\n b1 = b.shift();\n if (a1 !== b1) {\n if (rd.test(a1) && rd.test(b1)) {\n return a1.replace(rz, '.0') - b1.replace(rz, '.0');\n } else {\n return a1 > b1 ? 1 : -1;\n }\n }\n }\n return a.length - b.length;\n};\n\nconst accentMap = {\n 'á': 'a',\n 'à': 'a',\n 'â': 'a',\n 'é': 'e',\n 'ê': 'e',\n 'è': 'e',\n 'ë': 'e',\n 'î': 'i',\n 'ï': 'i',\n 'ô': 'o',\n 'ù': 'u',\n 'û': 'u',\n 'ü': 'u',\n 'ç': 'c',\n 'œ': 'oe',\n 'Á': 'A',\n 'À': 'A',\n 'Â': 'A',\n 'É': 'E',\n 'Ê': 'E',\n 'È': 'E',\n 'Ë': 'E',\n 'Î': 'I',\n 'Ï': 'I',\n 'Ô': 'O',\n 'Ù': 'U',\n 'Û': 'U',\n 'Ü': 'U',\n 'Ç': 'C',\n 'Œ': 'OE',\n};\n\nexport const replaceDiacritics = (str) => {\n if (typeof str !== 'string') {\n return str;\n }\n\n let ret = '';\n\n for (let i = 0; i < str.length; i += 1) {\n ret += accentMap[str.charAt(i)] || str.charAt(i);\n }\n\n return ret;\n};\n\n/**\n * Get the top domain part of a hostname\n * Ex 1: hostname=\"www.canalplus.com\" -> domain=\".canalplus.com\"\n * Ex 2: hostname=\"skelp.pl.canalplus.com\" -> domain=\".canalplus.com\"\n * @param {string} hostName name of the host\n */\nconst getTopDomain = (hostName = '') => {\n const nameSplit = hostName.replace('www.', '').split('.');\n return `${nameSplit[nameSplit.length - 2]}.${nameSplit[nameSplit.length - 1]}`;\n};\n\nexport const isThirdPartyWebsite = () => {\n const hostname = window?.location?.hostname;\n const domain = getTopDomain(hostname);\n const dataTopLevelDomain = getTopDomain(DATA_DOMAIN);\n\n return domain !== dataTopLevelDomain;\n};\n\n/**\n * Simple function to read the value of a given cookie\n * @param {string} cookiename The **name** of the cookie\n * @returns {string} The **value** of the cookie\n */\nexport const getCookie = (cookiename) => {\n const cookiestring = RegExp(`${cookiename}[^;]+`).exec(document.cookie);\n return decodeURIComponent(\n cookiestring ? cookiestring.toString().replace(/^[^=]+./, '') : '',\n );\n};\n\n/**\n * Simple function to write a cookie\n * @param {string} name The **name** of the cookie\n * @param {string} value The **value** of the cookie\n * @param {number} days The **duration** of the cookie, in days\n * @param {string} [domain] The **domain** of the cookie\n */\nexport const setCookie = (name, value, days, domain = '') => {\n let expires = '';\n const cookieDomain = domain !== '' ? `domain=${domain}; ` : '';\n\n if (days) {\n const date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = `expires=${date.toUTCString()}; `;\n }\n\n document.cookie = `${name}=${value}; ${expires}${cookieDomain}path=/; SameSite=None; secure;`; // eslint-disable-line unicorn/no-document-cookie\n};\n\n/**\n * Simple function to clean some cookies\n * @param {string[]} cookies The **names** of the cookies to clean\n */\nexport const cleanCookies = (cookies = []) => {\n cookies.forEach((cookie) => {\n document.cookie = `${cookie}=; domain=canalplus.com; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT;`; // eslint-disable-line unicorn/no-document-cookie\n });\n};\n\n/**\n * Adds a specific class to some HTMLElements\n * @param {HTMLElement[]} elements The elements that will receive the class\n * @param {string} classToAdd The class to add\n */\nexport const addClass = (elements, classToAdd) => {\n elements.forEach((element) => {\n const elementClasses = element.getAttribute('class') || '';\n const classes = elementClasses.split(' ');\n\n if (classes.indexOf(classToAdd) === -1) {\n if (classes.length === 1 && classes[0] === '') {\n element.setAttribute('class', `${classToAdd}`);\n } else {\n element.setAttribute('class', `${elementClasses} ${classToAdd}`);\n }\n }\n });\n};\n\n/**\n * Remove a specific class from some HTMLElements\n * @param {HTMLElement[]} elements The elements from which the class will be removed\n * @param {string} classToRemove The class to remove\n */\nexport const removeClass = (elements, classToRemove) => {\n elements.forEach((element) => {\n element.setAttribute(\n 'class',\n element.getAttribute('class').replace(classToRemove, ''),\n );\n });\n};\n\n/**\n * Returns the right iframe domain depending on the app\n * @param {string} brand Name of the app that instantiates the script\n */\nexport const getDataDomain = (brand) => {\n if (TV_BRANDS.includes(brand)) {\n return DATA_DOMAIN_TV;\n } else {\n switch (brand) {\n case BRAND_TIMVISION:\n return DATA_DOMAIN_TIMVISION;\n case BRAND_ORANGE:\n return DATA_DOMAIN_ORANGE;\n case BRAND_TNTSAT:\n return DATA_DOMAIN_TNTSAT;\n case BRAND_AFRIQUE:\n return DATA_DOMAIN_AFRIQUE;\n case BRAND_CALEDONIE:\n return DATA_DOMAIN_CALEDONIE;\n case BRAND_CANALBOX:\n return DATA_DOMAIN_CANALBOX;\n case BRAND_CARAIBES:\n return DATA_DOMAIN_CARAIBES;\n case BRAND_ETHIOPIA:\n return DATA_DOMAIN_ETHIOPIA;\n case BRAND_HAITI:\n return DATA_DOMAIN_HAITI;\n case BRAND_MADAGASCAR:\n return DATA_DOMAIN_MADAGASCAR;\n case BRAND_MAURICE:\n return DATA_DOMAIN_MAURICE;\n case BRAND_MYANMAR:\n return DATA_DOMAIN_MYANMAR;\n case BRAND_REUNION:\n return DATA_DOMAIN_REUNION;\n case BRAND_TVCARAIBES:\n return DATA_DOMAIN_TVCARAIBES;\n case BRAND_MYCANAL:\n default:\n return DATA_DOMAIN;\n }\n }\n};\n\n/**\n * Returns the right Tealium domain depending on the app\n * @param {string} brand Name of the app that instantiates the script\n */\nexport const getDataApiDomain = (brand) => {\n if (TV_BRANDS.includes(brand)) {\n return DATA_API_DOMAIN_TV;\n } else {\n switch (brand) {\n case BRAND_TIMVISION:\n return DATA_API_DOMAIN_TIMVISION;\n case BRAND_ORANGE:\n return DATA_API_DOMAIN_ORANGE;\n default:\n return DATA_API_DOMAIN;\n }\n }\n};\n\n/**\n * Get the `brand` query string value of an URL\n * @param {*} src The URL to search\n */\nexport const getBrandQueryString = (src) => {\n const queryStrings = src.substring(src.lastIndexOf('?') + 1);\n const params = new URLSearchParams(queryStrings);\n return params.get('brand');\n};\n","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","// Generated ESM version of ua-parser-js\n// DO NOT EDIT THIS FILE!\n// Source: /src/main/ua-parser.js\n\n/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v2.0.2\n Copyright © 2012-2024 Faisal Salman \n AGPLv3 License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://uaparser.dev\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n/* jshint esversion: 6 */ \n/* globals window */\n\n\n \n //////////////\n // Constants\n /////////////\n\n var LIBVERSION = '2.0.2',\n UA_MAX_LENGTH = 500,\n USER_AGENT = 'user-agent',\n EMPTY = '',\n UNKNOWN = '?',\n\n // typeof\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n\n // properties\n UA_BROWSER = 'browser',\n UA_CPU = 'cpu',\n UA_DEVICE = 'device',\n UA_ENGINE = 'engine',\n UA_OS = 'os',\n UA_RESULT = 'result',\n \n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n MAJOR = 'major',\n MODEL = 'model',\n\n // device types\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n XR = 'xr',\n EMBEDDED = 'embedded',\n\n // browser types\n INAPP = 'inapp',\n\n // client hints\n BRANDS = 'brands',\n FORMFACTORS = 'formFactors',\n FULLVERLIST = 'fullVersionList',\n PLATFORM = 'platform',\n PLATFORMVER = 'platformVersion',\n BITNESS = 'bitness',\n CH_HEADER = 'sec-ch-ua',\n CH_HEADER_FULL_VER_LIST = CH_HEADER + '-full-version-list',\n CH_HEADER_ARCH = CH_HEADER + '-arch',\n CH_HEADER_BITNESS = CH_HEADER + '-' + BITNESS,\n CH_HEADER_FORM_FACTORS = CH_HEADER + '-form-factors',\n CH_HEADER_MOBILE = CH_HEADER + '-' + MOBILE,\n CH_HEADER_MODEL = CH_HEADER + '-' + MODEL,\n CH_HEADER_PLATFORM = CH_HEADER + '-' + PLATFORM,\n CH_HEADER_PLATFORM_VER = CH_HEADER_PLATFORM + '-version',\n CH_ALL_VALUES = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS],\n\n // device vendors\n AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LENOVO = 'Lenovo',\n HONOR = 'Honor',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n NVIDIA = 'Nvidia',\n ONEPLUS = 'OnePlus',\n OPPO = 'OPPO',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n\n // browsers\n CHROME = 'Chrome',\n CHROMIUM = 'Chromium',\n CHROMECAST = 'Chromecast',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n OPERA = 'Opera',\n FACEBOOK = 'Facebook',\n SOGOU = 'Sogou',\n\n PREFIX_MOBILE = 'Mobile ',\n SUFFIX_BROWSER = ' Browser',\n\n // os\n WINDOWS = 'Windows';\n \n var isWindow = typeof window !== UNDEF_TYPE,\n NAVIGATOR = (isWindow && window.navigator) ? \n window.navigator : \n undefined,\n NAVIGATOR_UADATA = (NAVIGATOR && NAVIGATOR.userAgentData) ? \n NAVIGATOR.userAgentData : \n undefined;\n\n ///////////\n // Helper\n //////////\n\n var extend = function (defaultRgx, extensions) {\n var mergedRgx = {};\n var extraRgx = extensions;\n if (!isExtensions(extensions)) {\n extraRgx = {};\n for (var i in extensions) {\n for (var j in extensions[i]) {\n extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []);\n }\n }\n }\n for (var k in defaultRgx) {\n mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k];\n }\n return mergedRgx;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n for (var i in str1) {\n if (lowerize(str1[i]) == lowerize(str2)) return true;\n }\n return false;\n }\n return isString(str1) ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n },\n isExtensions = function (obj, deep) {\n for (var prop in obj) {\n return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false);\n }\n },\n isString = function (val) {\n return typeof val === STR_TYPE;\n },\n itemListToArray = function (header) {\n if (!header) return undefined;\n var arr = [];\n var tokens = strip(/\\\\?\\\"/g, header).split(',');\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].indexOf(';') > -1) {\n var token = trim(tokens[i]).split(';v=');\n arr[i] = { brand : token[0], version : token[1] };\n } else {\n arr[i] = trim(tokens[i]);\n }\n }\n return arr;\n },\n lowerize = function (str) {\n return isString(str) ? str.toLowerCase() : str;\n },\n majorize = function (version) {\n return isString(version) ? strip(/[^\\d\\.]/g, version).split('.')[0] : undefined;\n },\n setProps = function (arr) {\n for (var i in arr) {\n var propName = arr[i];\n if (typeof propName == OBJ_TYPE && propName.length == 2) {\n this[propName[0]] = propName[1];\n } else {\n this[propName] = undefined;\n }\n }\n return this;\n },\n strip = function (pattern, str) {\n return isString(str) ? str.replace(pattern, EMPTY) : str;\n },\n stripQuotes = function (str) {\n return strip(/\\\\?\\\"/g, str); \n },\n trim = function (str, len) {\n if (isString(str)) {\n str = strip(/^\\s\\s*/, str);\n return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n if(!ua || !arrays) return;\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n if (!regex[j]) { break; }\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n var windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n },\n \n formFactorsMap = {\n 'embedded' : 'Automotive',\n 'mobile' : 'Mobile',\n 'tablet' : ['Tablet', 'EInk'],\n 'smarttv' : 'TV',\n 'wearable' : 'Watch',\n 'xr' : ['VR', 'XR'],\n '?' : ['Desktop', 'Unknown'],\n '*' : undefined\n };\n\n //////////////\n // Regex map\n /////////////\n\n var defaultRegexes = {\n\n browser : [[\n\n // Most common regardless engine\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(heytap|ovi|115)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UCBrowser']], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart ' + LENOVO + SUFFIX_BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, SOGOU + ' Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, SOGOU + ' Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq)/i // LieBao Browser/Rekonq\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /(daum)apps[\\/ ]([\\w\\.]+)/i, // Daum App\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Instagram/Snapchat\n ], [NAME, VERSION, [TYPE, INAPP]], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME, [TYPE, INAPP]], [\n\n /(chromium)[\\/ ]([-\\w\\.]+)/i // Chromium\n ], [NAME, VERSION], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android' + SUFFIX_BROWSER]], [\n\n /chrome\\/([\\w\\.]+) mobile/i // Chrome Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile(?:\\/\\w+ | ?)safari/i // Safari Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [\n /iphone .*mobile(?:\\/\\w+ | ?)safari/i\n ], [[NAME, PREFIX_MOBILE + 'Safari']], [\n /version\\/([\\w\\.\\,]+) .*(safari)/i // Safari\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, '1']], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(?:mobile|tablet);.*(firefox)\\/([\\w\\.-]+)/i // Firefox Mobile\n ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n /\\b(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /[^\\d\\.]+./, EMPTY]]\n ],\n\n cpu : [[\n\n /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i, // IA32 (quicktime)\n /\\b((i[346]|x)86)(pc)?\\b/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((ppc|powerpc)(64)?)( mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n / sun4\\w[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr])[-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Honor\n /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n /honor([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n /\\b((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i, // Xiaomi Mi\n / ([\\w ]+) miui\\/v?\\d/i\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [\n /\\b(opd2(\\d{3}a?))(?: bui|\\))/i\n ], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['304', '403', '203'], '*' : OPPO }], [TYPE, TABLET]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto(?! 360)[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv|watch)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [\n\n // Nokia\n /(nokia) (t[12][01])/i\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n /nokia[-_ ]?(([-\\w\\. ]*))/i\n ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n // Google\n /(pixel (c|tablet))\\b/i // Google Pixel C/Tablet\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // TCL\n /tcl (xess p17aa)/i,\n /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n /droid [\\w\\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(?:015|06[35]|142p?))/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // MIXED\n /(imo) (tab \\w+)/i, // IMO\n /(infinix) (x1101b?)/i // Infinix XPad\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan\n /; (hmd|imo) ([\\w ]+?)(?: bui|\\))/i, // HMD/IMO\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i, // Lenovo\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i // Kindle\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i // Nvidia Tablets\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/chromecast/i // Google Chromecast Third Generation\n ], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/([^/]*)/i // Google Chromecast with specific device type\n ], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /fuchsia.*crkey/i // Google Chromecast Nest Hub\n ], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast, Linux-based or unknown\n ], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /(shield \\w+ tv)/i // Nvidia Shield TV\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mi(tv|box)-?\\w+) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n // SmartTV from Unidentified Vendors\n /droid.+; ([\\w- ]+) (?:android tv|smart[- ]?tv)/i\n ], [MODEL, [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) (\\w+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield)( bui|\\))/i // Nvidia Portable\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, CONSOLE]], [\n /(playstation \\w+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i, // Pebble\n /(asus|google|lg|oppo) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i // Asus ZenWatch / LG Watch / Pixel Watch\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(ow(?:19|20)?we?[1-3]{1,3})/i // Oppo Watch\n ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /(opwwe\\d{3})/i // OnePlus Watch\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n /(moto 360)/i // Motorola 360\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n /(smartwatch 3)/i // Sony SmartWatch\n ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n /(g watch r)/i // LG G Watch R\n ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [\n /(pico) (4|neo3(?: link|pro)?)/i // Pico\n ], [VENDOR, MODEL, [TYPE, XR]], [\n /; (quest( \\d| pro)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n /(homepod).+mac os/i // Apple HomePod\n ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n /windows iot/i\n ], [[TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+?(mobile|vr|\\d) safari/i\n ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : TABLET }]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /droid .+?; ([\\w\\. -]+)( bui|\\))/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n\n /\\b(libweb)/i // LibWeb\n ], [NAME, VERSION], [\n /ladybird\\//i\n ], [[NAME, 'LibWeb']], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile|iot))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, WINDOWS]], [\n\n // iOS/macOS\n /[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [\n\n // Google Chromecast\n /android ([\\d\\.]+).*crkey/i // Google Chromecast, Android-based\n ], [VERSION, [NAME, CHROMECAST + ' Android']], [\n /fuchsia.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Fuchsia-based\n ], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [\n /crkey\\/([\\d\\.]+).*devicetype\\/smartspeaker/i // Google Chromecast, Linux-based Smart Speaker\n ], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [\n /linux.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Legacy Linux-based\n ], [VERSION, [NAME, CHROMECAST + ' Linux']], [\n /crkey\\/([\\d\\.]+)/i // Google Chromecast, unknown\n ], [VERSION, [NAME, CHROMECAST]], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ \n /(ubuntu) ([\\w\\.]+) like android/i // Ubuntu Touch\n ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\\w*[-\\/; ]?([\\d\\.]*)/i\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google ChromeOS\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, \"Chrome OS\"], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) (\\w+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n /(pico) .+os([\\w\\.]+)/i, // Pico\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux)(?: arm\\w*| x86\\w*| ?)([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Factories\n ////////////////\n\n var defaultProps = (function () {\n var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};\n setProps.call(props.init, [\n [UA_BROWSER, [NAME, VERSION, MAJOR, TYPE]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [TYPE, MODEL, VENDOR]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n setProps.call(props.isIgnore, [\n [UA_BROWSER, [VERSION, MAJOR]],\n [UA_ENGINE, [VERSION]],\n [UA_OS, [VERSION]]\n ]);\n setProps.call(props.isIgnoreRgx, [\n [UA_BROWSER, / ?browser$/i],\n [UA_OS, / ?os$/i]\n ]);\n setProps.call(props.toString, [\n [UA_BROWSER, [NAME, VERSION]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [VENDOR, MODEL]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n return props;\n })();\n\n var createIData = function (item, itemType) {\n\n var init_props = defaultProps.init[itemType],\n is_ignoreProps = defaultProps.isIgnore[itemType] || 0,\n is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0,\n toString_props = defaultProps.toString[itemType] || 0;\n\n function IData () {\n setProps.call(this, init_props);\n }\n\n IData.prototype.getItem = function () {\n return item;\n };\n\n IData.prototype.withClientHints = function () {\n\n // nodejs / non-client-hints browsers\n if (!NAVIGATOR_UADATA) {\n return item\n .parseCH()\n .get();\n }\n\n // browsers based on chromium 85+\n return NAVIGATOR_UADATA\n .getHighEntropyValues(CH_ALL_VALUES)\n .then(function (res) {\n return item\n .setCH(new UACHData(res, false))\n .parseCH()\n .get();\n });\n };\n\n IData.prototype.withFeatureCheck = function () {\n return item.detectFeature().get();\n };\n\n if (itemType != UA_RESULT) {\n IData.prototype.is = function (strToCheck) {\n var is = false;\n for (var i in this) {\n if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) {\n is = true;\n if (strToCheck != UNDEF_TYPE) break;\n } else if (strToCheck == UNDEF_TYPE && is) {\n is = !is;\n break;\n }\n }\n return is;\n };\n IData.prototype.toString = function () {\n var str = EMPTY;\n for (var i in toString_props) {\n if (typeof(this[toString_props[i]]) !== UNDEF_TYPE) {\n str += (str ? ' ' : EMPTY) + this[toString_props[i]];\n }\n }\n return str || UNDEF_TYPE;\n };\n }\n\n if (!NAVIGATOR_UADATA) {\n IData.prototype.then = function (cb) { \n var that = this;\n var IDataResolve = function () {\n for (var prop in that) {\n if (that.hasOwnProperty(prop)) {\n this[prop] = that[prop];\n }\n }\n };\n IDataResolve.prototype = {\n is : IData.prototype.is,\n toString : IData.prototype.toString\n };\n var resolveData = new IDataResolve();\n cb(resolveData);\n return resolveData;\n };\n }\n\n return new IData();\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n function UACHData (uach, isHttpUACH) {\n uach = uach || {};\n setProps.call(this, CH_ALL_VALUES);\n if (isHttpUACH) {\n setProps.call(this, [\n [BRANDS, itemListToArray(uach[CH_HEADER])],\n [FULLVERLIST, itemListToArray(uach[CH_HEADER_FULL_VER_LIST])],\n [MOBILE, /\\?1/.test(uach[CH_HEADER_MOBILE])],\n [MODEL, stripQuotes(uach[CH_HEADER_MODEL])],\n [PLATFORM, stripQuotes(uach[CH_HEADER_PLATFORM])],\n [PLATFORMVER, stripQuotes(uach[CH_HEADER_PLATFORM_VER])],\n [ARCHITECTURE, stripQuotes(uach[CH_HEADER_ARCH])],\n [FORMFACTORS, itemListToArray(uach[CH_HEADER_FORM_FACTORS])],\n [BITNESS, stripQuotes(uach[CH_HEADER_BITNESS])]\n ]);\n } else {\n for (var prop in uach) {\n if(this.hasOwnProperty(prop) && typeof uach[prop] !== UNDEF_TYPE) this[prop] = uach[prop];\n }\n }\n }\n\n function UAItem (itemType, ua, rgxMap, uaCH) {\n\n this.get = function (prop) {\n if (!prop) return this.data;\n return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n };\n\n this.set = function (prop, val) {\n this.data[prop] = val;\n return this;\n };\n\n this.setCH = function (ch) {\n this.uaCH = ch;\n return this;\n };\n\n this.detectFeature = function () {\n if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {\n switch (this.itemType) {\n case UA_BROWSER:\n // Brave-specific detection\n if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == FUNC_TYPE) {\n this.set(NAME, 'Brave');\n }\n break;\n case UA_DEVICE:\n // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData\n if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== UNDEF_TYPE && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {\n this.set(MODEL, 'iPad')\n .set(TYPE, TABLET);\n }\n break;\n case UA_OS:\n // Chrome-specific detection: check for 'platform' value of navigator.userAgentData\n if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {\n this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);\n }\n break;\n case UA_RESULT:\n var data = this.data;\n var detect = function (itemType) {\n return data[itemType]\n .getItem()\n .detectFeature()\n .get();\n };\n this.set(UA_BROWSER, detect(UA_BROWSER))\n .set(UA_CPU, detect(UA_CPU))\n .set(UA_DEVICE, detect(UA_DEVICE))\n .set(UA_ENGINE, detect(UA_ENGINE))\n .set(UA_OS, detect(UA_OS));\n }\n }\n return this;\n };\n\n this.parseUA = function () {\n if (this.itemType != UA_RESULT) {\n rgxMapper.call(this.data, this.ua, this.rgxMap);\n }\n if (this.itemType == UA_BROWSER) {\n this.set(MAJOR, majorize(this.get(VERSION)));\n }\n return this;\n };\n\n this.parseCH = function () {\n var uaCH = this.uaCH,\n rgxMap = this.rgxMap;\n \n switch (this.itemType) {\n case UA_BROWSER:\n case UA_ENGINE:\n var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;\n if (brands) {\n for (var i in brands) {\n var brandName = brands[i].brand || brands[i],\n brandVersion = brands[i].version;\n if (this.itemType == UA_BROWSER && !/not.a.brand/i.test(brandName) && (!prevName || (/chrom/i.test(prevName) && brandName != CHROMIUM))) {\n brandName = strMapper(brandName, {\n 'Chrome' : 'Google Chrome',\n 'Edge' : 'Microsoft Edge',\n 'Chrome WebView' : 'Android WebView',\n 'Chrome Headless' : 'HeadlessChrome'\n });\n this.set(NAME, brandName)\n .set(VERSION, brandVersion)\n .set(MAJOR, majorize(brandVersion));\n prevName = brandName;\n }\n if (this.itemType == UA_ENGINE && brandName == CHROMIUM) {\n this.set(VERSION, brandVersion);\n }\n }\n }\n break;\n case UA_CPU:\n var archName = uaCH[ARCHITECTURE];\n if (archName) {\n if (archName && uaCH[BITNESS] == '64') archName += '64';\n rgxMapper.call(this.data, archName + ';', rgxMap);\n }\n break;\n case UA_DEVICE:\n if (uaCH[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n if (uaCH[MODEL]) {\n this.set(MODEL, uaCH[MODEL]);\n if (!this.get(TYPE) || !this.get(VENDOR)) {\n var reParse = {};\n rgxMapper.call(reParse, 'droid 9; ' + uaCH[MODEL] + ')', rgxMap);\n if (!this.get(TYPE) && !!reParse.type) {\n this.set(TYPE, reParse.type);\n }\n if (!this.get(VENDOR) && !!reParse.vendor) {\n this.set(VENDOR, reParse.vendor);\n }\n }\n }\n if (uaCH[FORMFACTORS]) {\n var ff;\n if (typeof uaCH[FORMFACTORS] !== 'string') {\n var idx = 0;\n while (!ff && idx < uaCH[FORMFACTORS].length) {\n ff = strMapper(uaCH[FORMFACTORS][idx++], formFactorsMap);\n }\n } else {\n ff = strMapper(uaCH[FORMFACTORS], formFactorsMap);\n }\n this.set(TYPE, ff);\n }\n break;\n case UA_OS:\n var osName = uaCH[PLATFORM];\n if(osName) {\n var osVersion = uaCH[PLATFORMVER];\n if (osName == WINDOWS) osVersion = (parseInt(majorize(osVersion), 10) >= 13 ? '11' : '10');\n this.set(NAME, osName)\n .set(VERSION, osVersion);\n }\n // Xbox-Specific Detection\n if (this.get(NAME) == WINDOWS && uaCH[MODEL] == 'Xbox') {\n this.set(NAME, 'Xbox')\n .set(VERSION, undefined);\n } \n break;\n case UA_RESULT:\n var data = this.data;\n var parse = function (itemType) {\n return data[itemType]\n .getItem()\n .setCH(uaCH)\n .parseCH()\n .get();\n };\n this.set(UA_BROWSER, parse(UA_BROWSER))\n .set(UA_CPU, parse(UA_CPU))\n .set(UA_DEVICE, parse(UA_DEVICE))\n .set(UA_ENGINE, parse(UA_ENGINE))\n .set(UA_OS, parse(UA_OS));\n }\n return this;\n };\n\n setProps.call(this, [\n ['itemType', itemType],\n ['ua', ua],\n ['uaCH', uaCH],\n ['rgxMap', rgxMap],\n ['data', createIData(this, itemType)]\n ]);\n\n return this;\n }\n\n function UAParser (ua, extensions, headers) {\n\n if (typeof ua === OBJ_TYPE) {\n if (isExtensions(ua, true)) {\n if (typeof extensions === OBJ_TYPE) {\n headers = extensions; // case UAParser(extensions, headers) \n }\n extensions = ua; // case UAParser(extensions)\n } else {\n headers = ua; // case UAParser(headers)\n extensions = undefined;\n }\n ua = undefined;\n } else if (typeof ua === STR_TYPE && !isExtensions(extensions, true)) {\n headers = extensions; // case UAParser(ua, headers)\n extensions = undefined;\n }\n\n // Convert Headers object into a plain object\n if (headers && typeof headers.append === FUNC_TYPE) {\n var kv = {};\n headers.forEach(function (v, k) { kv[k] = v; });\n headers = kv;\n }\n \n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions, headers).getResult();\n }\n\n var userAgent = typeof ua === STR_TYPE ? ua : // Passed user-agent string\n (headers && headers[USER_AGENT] ? headers[USER_AGENT] : // User-Agent from passed headers\n ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent\n EMPTY)), // empty string\n\n httpUACH = new UACHData(headers, true),\n regexMap = extensions ? \n extend(defaultRegexes, extensions) : \n defaultRegexes,\n\n createItemFunc = function (itemType) {\n if (itemType == UA_RESULT) {\n return function () {\n return new UAItem(itemType, userAgent, regexMap, httpUACH)\n .set('ua', userAgent)\n .set(UA_BROWSER, this.getBrowser())\n .set(UA_CPU, this.getCPU())\n .set(UA_DEVICE, this.getDevice())\n .set(UA_ENGINE, this.getEngine())\n .set(UA_OS, this.getOS())\n .get();\n };\n } else {\n return function () {\n return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)\n .parseUA()\n .get();\n };\n }\n };\n \n // public methods\n setProps.call(this, [\n ['getBrowser', createItemFunc(UA_BROWSER)],\n ['getCPU', createItemFunc(UA_CPU)],\n ['getDevice', createItemFunc(UA_DEVICE)],\n ['getEngine', createItemFunc(UA_ENGINE)],\n ['getOS', createItemFunc(UA_OS)],\n ['getResult', createItemFunc(UA_RESULT)],\n ['getUA', function () { return userAgent; }],\n ['setUA', function (ua) {\n if (isString(ua))\n userAgent = ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n }]\n ])\n .setUA(userAgent);\n\n return this;\n }\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR, TYPE]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n export {UAParser};","import {\n AFFILIATION,\n DISPLAY,\n EMAIL,\n IFRAME_ID,\n NATURAL_SEARCH,\n OPEN_PARTNER,\n OTHER_REF_DOMAINS,\n PAID_SEARCH,\n PARTNERSHIP,\n SMS,\n SOCIAL_NETWORK,\n SOCIAL_PAID,\n VIDEO,\n} from '../PrivacyManager/Constants';\n\n// Attribution types constants\nconst EXTERNAL_ATTRIBUTION_TYPES = [\n DISPLAY,\n AFFILIATION,\n PAID_SEARCH,\n OPEN_PARTNER,\n SOCIAL_NETWORK,\n NATURAL_SEARCH,\n EMAIL,\n OTHER_REF_DOMAINS,\n PARTNERSHIP,\n SMS,\n VIDEO,\n SOCIAL_PAID,\n];\nconst PAID_ATTRIBUTION_TYPES = [\n DISPLAY,\n AFFILIATION,\n PAID_SEARCH,\n PARTNERSHIP,\n SOCIAL_PAID,\n VIDEO,\n];\n\n// Attribution expiration constants\nconst thirtyDays = 1000 * 60 * 60 * 24 * 30;\nconst tenDays = 1000 * 60 * 60 * 24 * 10;\n\n/** Campaign Manager\n * Stores campaign information in localStorage, ensuring that the same campaign isn't stored multiple times consecutively.\n *\n * Attribution rules:\n * 1. Campaigns are stored in localStorage as a Last In, First Out (LIFO) array.\n * 2. Only the first campaign is used for attribution.\n * 3. Campaigns expire after 30 days.\n * @param {Object} formatedCampaign campaign, campaignType, campaignThematic, campaignEntity\n */\nexport function setCampaignInLocalStorage({\n campaign,\n campaignType,\n campaignThematic,\n campaignEntity,\n}) {\n // Ensure that the campaign is not empty\n if (!campaign) {\n return;\n }\n\n // Retrieve the existing trackingCampaigns from localStorage (if any)\n let existingCampaigns = [];\n const storedCampaigns = localStorage.getItem('trackingCampaign');\n\n // Parse stored campaigns from localStorage\n if (storedCampaigns) {\n try {\n existingCampaigns = JSON.parse(storedCampaigns);\n if (!Array.isArray(existingCampaigns)) {\n existingCampaigns = []; // Reset to empty array if data is not an array\n }\n } catch (error) {\n console.error('Error parsing trackingCampaign from localStorage:', error);\n existingCampaigns = [];\n }\n }\n\n // Check if the first campaign in the array matches the new one\n const firstCampaign =\n existingCampaigns.length > 0 ? existingCampaigns[0] : null;\n\n const isSameAsFirstCampaign =\n firstCampaign && firstCampaign.campaign === campaign;\n\n // If the first campaign is the same, update only the timestamp\n if (isSameAsFirstCampaign) {\n existingCampaigns[0].timestamp = Date.now();\n } else {\n // Create the new campaign object if it's not the same as the first one\n const newCampaign = {\n ...(campaign && { campaign }),\n ...(campaignType && { campaignType }),\n ...(campaignThematic && { thematic: campaignThematic }),\n ...(campaignEntity && { entity: campaignEntity }),\n timestamp: Date.now(), // Add a timestamp for expiration tracking\n };\n\n existingCampaigns.unshift(newCampaign); // Add the new campaign to the beginning of the array\n }\n\n // Filter out campaigns older than 30 days and limit to the most recent 10\n const trackingCampaignFiltered = existingCampaigns.filter((item) => {\n return Date.now() - item.timestamp < thirtyDays;\n });\n const trackingCampaignSliced = trackingCampaignFiltered.slice(0, 10);\n\n // Update localStorage with the modified campaigns\n localStorage.setItem(\n 'trackingCampaign',\n JSON.stringify(trackingCampaignSliced),\n );\n}\n\n/** Retrieves the stored tracking campaigns from localStorage.\n *\n * This helper ensures that the data is a valid array and catches any errors\n * during parsing.\n *\n * @returns {Array} An array of campaign objects from localStorage, or an empty array if none are found or if parsing fails.\n */\nfunction getCampaignFromLocalStorage() {\n try {\n const storedCampaigns = localStorage.getItem('trackingCampaign');\n const campaigns = storedCampaigns ? JSON.parse(storedCampaigns) : [];\n\n // Ensure it's an array\n if (Array.isArray(campaigns)) {\n return campaigns;\n } else {\n console.warn(\n 'trackingCampaign in localStorage is not an array:',\n campaigns,\n );\n return [];\n }\n } catch (error) {\n console.error(\n 'Error retrieving trackingCampaign from localStorage:',\n error,\n );\n return [];\n }\n}\n\n/** Attribution Manager\n * Calculates the external and paid attributions based on the campaigns stored in localStorage.\n *\n * Attribution rules:\n * 1. External attribution: Last external source (not Intern campaign or Email) within 30 days.\n * 2. Paid attribution: Any external attribution source minus Social Network and Natural Search (free sources) within 10 days.\n * 3. Iteration over campaigns is done in reverse (LIFO) to respect recent campaign attribution.\n *\n * @returns {Object} An object containing external and paid attributions.\n */\nexport function getAttributions() {\n let externalAttribution = {};\n let paidAttribution = {};\n\n // Retrieve trackingCampaign from localStorage\n const trackingCampaign = getCampaignFromLocalStorage();\n\n // If trackingCampaign is empty, return default values\n if (trackingCampaign.length === 0) {\n console.warn('No valid trackingCampaign found in localStorage.');\n return { externalAttribution, paidAttribution };\n }\n\n // Iterate over the campaigns array in reverse (LIFO), starting from the most recent\n for (let i = trackingCampaign.length - 1; i >= 0; i -= 1) {\n const campaign = trackingCampaign[i];\n\n // Check for external attribution: Last external source within 30 days\n if (\n EXTERNAL_ATTRIBUTION_TYPES.includes(campaign.campaignType) &&\n Date.now() - campaign.timestamp < thirtyDays\n ) {\n // Keep only the most recent external attribution\n if (\n !externalAttribution.timestamp ||\n campaign.timestamp > externalAttribution.timestamp\n ) {\n externalAttribution = campaign;\n }\n }\n\n // Check for paid attribution: External attribution minus free sources within 10 days\n if (\n PAID_ATTRIBUTION_TYPES.includes(campaign.campaignType) &&\n Date.now() - campaign.timestamp < tenDays\n ) {\n // Keep only the most recent paid attribution\n if (\n !paidAttribution.timestamp ||\n campaign.timestamp > paidAttribution.timestamp\n ) {\n paidAttribution = campaign;\n }\n }\n }\n\n return { externalAttribution, paidAttribution };\n}\n\n/**\n * Synchronizes the tracking campaign data with the iframe by sending a message\n * containing the trackingCampaign array from localStorage.\n *\n * This function retrieves the `trackingCampaign` data from localStorage,\n * then locates the iframe element by ID. If the iframe is present, it sends\n * a postMessage containing the trackingCampaign to the iframe for cross-domain\n * synchronization.\n *\n * Usage:\n * This function should be called whenever the trackingCampaign data needs to\n * be updated in the iframe to ensure both the iframe and main domain have consistent data.\n * @param {Object} trackingCampaign - The trackingCampaign data to send to the iframe.\n */\nexport const syncTrackingCampaignToIframe = (trackingCampaign) => {\n const iframe = document.getElementById(IFRAME_ID);\n if (iframe) {\n iframe.contentWindow.postMessage(\n {\n type: 'updateTrackingCampaign',\n trackingCampaign,\n },\n '*',\n );\n }\n};\n","import { UAParser } from 'ua-parser-js';\nimport {\n ABTEST_COOKIE_NAME,\n ABTEST_STORE_COOKIE_NAME,\n AFFILIATION,\n BANNER,\n CPLUS_DOMAINS,\n DIRECT,\n DISPLAY,\n EMAIL,\n INTERN_CAMPAIGN,\n NATURAL_SEARCH,\n OPEN_PARTNER,\n OTHER_REF_DOMAINS,\n PAID_SEARCH,\n PARTNERSHIP,\n PUSH_NOTIF,\n SMS,\n SOCIAL_NETWORK,\n SOCIAL_ORGANIC,\n SOCIAL_PAID,\n VIDEO,\n} from '../PrivacyManager/Constants';\nimport {\n getAllQueryParams,\n getQueryParam,\n isPassAuthenticated,\n readCookie,\n} from '../Utils';\nimport {\n getAttributions,\n setCampaignInLocalStorage,\n syncTrackingCampaignToIframe,\n} from '../PrivacyManager/campaignHelpers';\n\n/**\n * Enriches the tracking data layer with various information including environment, session, device,\n * and campaign data. Merges custom tracking data as needed.\n *\n * @param {Object} store - Redux store to access the application state.\n * @param {Object} trackingObject - Custom tracking data that needs to be merged into the data layer.\n */ export const enrichDataLayer = (store, trackingObject = { data: {} }) => {\n const state = store.getState();\n\n ttDataLayer.add('anonymousTracking', 'true');\n ttDataLayer.add('environment', state.config.environment);\n\n // Override pageName (and therefore page_name) definition if there isn't any\n if (!ttDataLayer.get('pageName')) {\n if (trackingObject.data.pageName) {\n ttDataLayer.add('pageName', trackingObject.data.pageName);\n } else {\n ttDataLayer.add('pageName', trackingObject.name);\n }\n }\n\n // If there are props and eVar to override\n // Override channel definition if provided\n if (trackingObject.data && trackingObject.data.channel) {\n ttDataLayer.add('channel', trackingObject.data.channel);\n }\n\n if (state.VID && state.VID !== '') {\n ttDataLayer.add('device_key', state.VID);\n }\n\n if (state.trackingKey && state.trackingKey !== '') {\n ttDataLayer.add('tracking_key', state.trackingKey);\n }\n\n if (state.sessionId && state.sessionId !== '') {\n ttDataLayer.add('sessionId', state.sessionId);\n // Copy of the session attribute because we want to unify the attribute name with the mobile\n ttDataLayer.add('id_session_app', state.sessionId);\n }\n\n if (ttDataLayer.isFirstEventSinceSessionStart()) {\n ttDataLayer.add('session_start', true);\n }\n\n // Change pageURL manually because of SPA.\n // But we don't want to overide a previously defined url.\n // For example, the app might have stacked couple of pageView before the tracking tool loads and fires them.\n // All the events would have the same url if we override it here.\n if (window && window.location && !ttDataLayer.get('pageURL')) {\n ttDataLayer.add('pageURL', window.location.href);\n }\n\n addSearchInfo(ttDataLayer, trackingObject);\n\n // Add authent info on the dataLayer\n addPassInfo(store, ttDataLayer);\n\n // Add custom infos about the browser\n addBrowserInfo(ttDataLayer);\n\n // Add custom props & evar into the dataLayer\n ttDataLayer.mergeObjectInDataLayer(trackingObject.data);\n\n // Add campaign and referrer data\n addReferrerAndCampaignSource(store, {\n hostname: window.location.hostname,\n ...getAllQueryParams(window.location.search),\n ...state.campaignData,\n });\n\n // Add custom infos based on previous datalayer.\n // Need to be AFTER merge custom props & eVar because it uses them.\n addCustomInfo(store, ttDataLayer);\n};\n\n// We need to specifictly fill the dataLayer for the first event after the library has loaded\nexport const initDataLayerAfterLoad = ({ store, pageURL }) => {\n const state = store.getState();\n ttDataLayer.setFirstEventSinceLoad();\n ttDataLayer.add('pageURL', pageURL);\n ttDataLayer.add('referrer_type', DIRECT); // No referrer, no campaign so it should be direct\n addReferrerAndCampaignSource(store, {\n hostname: window.location.hostname,\n ...getAllQueryParams(window.location.search),\n ...state.campaignData,\n });\n};\n\n/*\n * Source tracking (campaign & referrer)\n */\nconst addReferrerAndCampaignSource = (store, queries) => {\n const referrer = queries.origref ? queries.origref : document.referrer; // Referrer's override\n let referringDomain = '';\n\n // Add referrer infos\n if (referrer !== '') {\n ttDataLayer.add('referrer', referrer);\n try {\n // Because IE 11 doesn't support new URL\n referringDomain = new URL(referrer).hostname;\n\n // Sometimes, the referrer is the site itself so we reset it to avoid counting it as a true external referring domain\n if (referringDomain.indexOf(queries.hostname) > -1) {\n referringDomain = '';\n }\n\n ttDataLayer.add('referring_domain', referringDomain);\n } catch (e) {\n console.log(e);\n }\n }\n\n // Get all query parameters\n const partners = getQueryParam('aff', queries.aff); // Legacy affiliation, should be called partners\n let campaignAttributionType = '';\n let campaign = '';\n let campaignThematic = '';\n let campaignEntity = '';\n\n const campaignData = extractCampaignDataFromQueryParams(queries);\n campaign = campaignData.name ? campaignData.name : ''; // LEGACY => default value for campaign is simply the name\n\n // `cmp` fields are deprecated but we're keeping them for retrocompatibility. `utm` fields will replace them.\n const cmpChannel = campaignData.channel;\n\n if (cmpChannel && campaignData.entity) {\n // mandatory field\n ttDataLayer.add('cmp_channel', campaignData.channel);\n ttDataLayer.add('cmp_entity', campaignData.entity);\n ttDataLayer.add('cmp_type', campaignData.campaignType);\n ttDataLayer.add('cmp_thematic', campaignData.thematic);\n ttDataLayer.add('cmp_target', campaignData.target);\n ttDataLayer.add('cmp_date', campaignData.date);\n ttDataLayer.add('cmp_name', campaignData.name);\n ttDataLayer.add('cmp_support', campaignData.support);\n ttDataLayer.add('cmp_crea', campaignData.crea);\n ttDataLayer.add('cmp_placement', campaignData.placement);\n\n const {\n entity,\n campaignType,\n thematic,\n target,\n date,\n name,\n support,\n crea,\n placement,\n } = campaignData;\n const campaignParts = [\n entity,\n cmpChannel,\n campaignType,\n thematic,\n target,\n date,\n name,\n support,\n crea,\n placement,\n ];\n\n campaign = campaignParts\n .filter((part) => part) // Remove undefined or empty parts\n .join(':');\n\n campaignThematic = campaignData.thematic || '';\n campaignEntity = campaignData.entity || '';\n }\n\n const utmMedium = ttDataLayer.get('utm_medium') || queries.utm_medium;\n const utmSource = ttDataLayer.get('utm_source') || queries.utm_source;\n const utmContent = ttDataLayer.get('utm_content') || queries.utm_content;\n const utmCampaign = ttDataLayer.get('utm_campaign') || queries.utm_campaign;\n\n if (utmMedium) {\n ttDataLayer.add('utm_medium', utmMedium);\n }\n\n if (utmSource) {\n ttDataLayer.add('utm_source', utmSource);\n }\n\n if (utmContent) {\n ttDataLayer.add('utm_content', utmContent);\n }\n\n if (utmCampaign) {\n ttDataLayer.add('utm_campaign', utmCampaign);\n }\n\n // Email -------------------------------------------\n if (\n cmpChannel === 'EMAIL' ||\n utmMedium === 'EMAIL' ||\n 'sc_cmpid' in queries\n ) {\n ttDataLayer.add('referrer_type', EMAIL);\n campaignAttributionType = EMAIL;\n\n // Affiliation ------------------------------------------------\n } else if (\n cmpChannel === 'AFFILIATE' ||\n utmMedium === 'AFFILIATE' ||\n 'clkid' in queries\n ) {\n ttDataLayer.add('referrer_type', AFFILIATION);\n campaignAttributionType = AFFILIATION;\n\n // Display campaign ------------------------------------------------------\n } else if (\n cmpChannel === 'DISPLAY' ||\n utmMedium === 'DISPLAY' ||\n 'cpmid' in queries\n ) {\n ttDataLayer.add('referrer_type', DISPLAY);\n campaignAttributionType = DISPLAY;\n\n // Paid search (SEM) -------------------------------------------\n } else if (\n cmpChannel === 'PAID_SEARCH' ||\n utmMedium === 'PAID_SEARCH' ||\n cmpChannel === 'SEA' ||\n utmMedium === 'SEA' ||\n 'kwid' in queries\n ) {\n ttDataLayer.add('referrer_type', PAID_SEARCH);\n campaignAttributionType = PAID_SEARCH;\n\n // SMS ---------------------------------------------\n } else if (cmpChannel === 'SMS' || utmMedium === 'SMS') {\n ttDataLayer.add('referrer_type', SMS);\n campaignAttributionType = SMS;\n\n // Video ---------------------------------------------\n } else if (cmpChannel === 'VIDEO' || utmMedium === 'VIDEO') {\n ttDataLayer.add('referrer_type', VIDEO);\n campaignAttributionType = VIDEO;\n\n // Paid social ---------------------------------------------\n } else if (cmpChannel === 'SOCIAL_PAID' || utmMedium === 'SOCIAL_PAID') {\n ttDataLayer.add('referrer_type', SOCIAL_PAID);\n campaignAttributionType = SOCIAL_PAID;\n\n // Partnership ---------------------------------------------\n } else if (cmpChannel === 'PARTNERSHIP' || utmMedium === 'PARTNERSHIP') {\n ttDataLayer.add('referrer_type', PARTNERSHIP);\n campaignAttributionType = PARTNERSHIP;\n\n // Open partners ---------------------------------------------\n } else if (\n cmpChannel === 'OPEN_PARTNER' ||\n utmMedium === 'OPEN_PARTNER' ||\n 'sc_openpartner' in queries\n ) {\n ttDataLayer.add('referrer_type', OPEN_PARTNER);\n campaignAttributionType = OPEN_PARTNER;\n\n // Intern campaign ---------------------------------------------\n } else if (\n cmpChannel === 'INTERN' ||\n utmMedium === 'INTERN' ||\n 'sc_intcmp' in queries\n ) {\n ttDataLayer.add('referrer_type', INTERN_CAMPAIGN);\n ttDataLayer.add('internal_campaign', campaign);\n campaignAttributionType = INTERN_CAMPAIGN;\n\n // Push notification ---------------------------------------------\n } else if (cmpChannel === 'PUSH_NOTIF' || utmMedium === 'PUSH_NOTIF') {\n ttDataLayer.add('referrer_type', PUSH_NOTIF);\n campaignAttributionType = PUSH_NOTIF;\n\n // Banner ---------------------------------------------\n } else if (cmpChannel === 'BANNER' || utmMedium === 'BANNER') {\n ttDataLayer.add('referrer_type', BANNER);\n campaignAttributionType = BANNER;\n\n // Organic social ---------------------------------------------\n } else if (\n cmpChannel === 'SOCIAL_ORGANIC' ||\n utmMedium === 'SOCIAL_ORGANIC'\n ) {\n ttDataLayer.add('referrer_type', SOCIAL_ORGANIC);\n campaignAttributionType = SOCIAL_ORGANIC;\n\n // Social Network, Natural Search & Others --------------------------------\n } else if (typeof referringDomain !== 'undefined' && referringDomain !== '') {\n // We do not have a value for campaign so we add the referring domain instead with the target page\n const defaultCampaignValueForReferrer = `${referringDomain}|${ttDataLayer\n .get('pageURL')\n .replace(/https?:\\/\\//, '')}`;\n\n // Social Network -----------------------------------------------------------\n if (\n referringDomain.indexOf('facebook') > -1 ||\n referringDomain.indexOf('instagram') > -1 ||\n referringDomain.indexOf('twitter') > -1 ||\n referringDomain.indexOf('youtube') > -1 ||\n referringDomain.indexOf('dailymotion') > -1 ||\n referringDomain.indexOf('snapchat') > -1 ||\n referringDomain.indexOf('pinterest') > -1 ||\n referringDomain.indexOf('twitch') > -1 ||\n referringDomain.indexOf('tiktok') > -1 ||\n referringDomain === 't.co' // Twitter's short url\n ) {\n ttDataLayer.add('referrer_type', SOCIAL_NETWORK);\n campaignAttributionType = SOCIAL_NETWORK;\n campaign = defaultCampaignValueForReferrer;\n\n // Natural Search -----------------------------------------------------------\n } else if (\n referringDomain.indexOf('google') > -1 ||\n referringDomain.indexOf('bing') > -1 ||\n referringDomain.indexOf('yahoo') > -1 ||\n referringDomain.indexOf('qwant') > -1 ||\n referringDomain.indexOf('ask') > -1 ||\n referringDomain.indexOf('duckduckgo') > -1 ||\n referringDomain.indexOf('ecosia') > -1 ||\n referringDomain.indexOf('yandex') > -1 ||\n referringDomain.indexOf('baidu') > -1 ||\n referringDomain.indexOf('aol') > -1 ||\n referringDomain.indexOf('lycos') > -1 ||\n referringDomain.indexOf('wolframalpha') > -1 ||\n referringDomain.indexOf('archive.org') > -1\n ) {\n ttDataLayer.add('referrer_type', NATURAL_SEARCH);\n campaignAttributionType = NATURAL_SEARCH;\n campaign = defaultCampaignValueForReferrer;\n\n // CANAL+ domains -----------------------------------------------------------\n } else if (referringDomain.indexOf('canal') > -1) {\n ttDataLayer.add('referrer_type', CPLUS_DOMAINS);\n\n // Other referring domains -----------------------------------------------------------\n } else {\n ttDataLayer.add('referrer_type', OTHER_REF_DOMAINS);\n campaignAttributionType = OTHER_REF_DOMAINS;\n campaign = defaultCampaignValueForReferrer;\n }\n }\n\n ttDataLayer.add('eVar13', referrer);\n ttDataLayer.add('campaign', campaign);\n\n if (campaign) {\n const formatedCampaign = {\n campaign,\n campaignType: campaignAttributionType,\n campaignThematic,\n campaignEntity,\n };\n // Store campaign data in localStorage\n setCampaignInLocalStorage(formatedCampaign);\n const { externalAttribution, paidAttribution } = getAttributions();\n\n store.dispatch({\n 'type': 'SET_SOURCE',\n campaign,\n campaignAttributionType,\n campaignEntity,\n campaignThematic,\n externalAttribution,\n paidAttribution,\n referrer,\n partners,\n });\n\n syncTrackingCampaignToIframe(formatedCampaign);\n // reset campaign data in store after setting it in localStorage\n store.dispatch({ type: 'RESET_CAMPAIGN_DATA' });\n }\n};\n\n/*\n * Utils\n */\nconst extractCampaignDataFromQueryParams = (queryParams) => {\n let campaignData = {};\n\n /* LEGACY */\n if ('sc_cmpid' in queryParams) {\n campaignData = { 'name': queryParams.sc_cmpid };\n } else if ('clkid' in queryParams) {\n campaignData = { 'name': queryParams.clkid };\n } else if ('cpmid' in queryParams) {\n campaignData = { 'name': queryParams.cpmid };\n } else if ('kwid' in queryParams) {\n campaignData = { 'name': queryParams.kwid };\n } else if ('sc_intcmp' in queryParams) {\n campaignData = { 'name': queryParams.sc_intcmp };\n } else if ('sc_openpartner' in queryParams) {\n campaignData = { 'name': queryParams.sc_openpartner };\n }\n /* END LEGACY */\n // add cmp params if they exist for Amplitude campaign\n if ('cmp_channel' in queryParams) {\n campaignData = { ...campaignData, 'channel': queryParams.cmp_channel };\n }\n if ('cmp_entity' in queryParams) {\n campaignData = { ...campaignData, 'entity': queryParams.cmp_entity };\n }\n if ('cmp_type' in queryParams) {\n campaignData = { ...campaignData, 'type': queryParams.cmp_type };\n }\n if ('cmp_thematic' in queryParams) {\n campaignData = { ...campaignData, 'thematic': queryParams.cmp_thematic };\n }\n if ('cmp_target' in queryParams) {\n campaignData = { ...campaignData, 'target': queryParams.cmp_target };\n }\n if ('cmp_date' in queryParams) {\n campaignData = { ...campaignData, 'date': queryParams.cmp_date };\n }\n if ('cmp_name' in queryParams) {\n campaignData = { ...campaignData, 'name': queryParams.cmp_name };\n }\n if ('cmp_support' in queryParams) {\n campaignData = { ...campaignData, 'support': queryParams.cmp_support };\n }\n if ('cmp_crea' in queryParams) {\n campaignData = { ...campaignData, 'crea': queryParams.cmp_crea };\n }\n if ('cmp_placement' in queryParams) {\n campaignData = { ...campaignData, 'placement': queryParams.cmp_placement };\n }\n\n // add utm params if they exist for Google Analytics 360 campaign\n if ('utm_campaign' in queryParams && !campaignData.name) {\n campaignData = { ...campaignData, 'name': queryParams.utm_campaign };\n }\n if ('utm_medium' in queryParams) {\n campaignData = { ...campaignData, 'channel': queryParams.utm_medium };\n }\n if ('utm_source' in queryParams) {\n campaignData = { ...campaignData, 'support': queryParams.utm_source };\n }\n if ('utm_content' in queryParams) {\n campaignData = { ...campaignData, 'crea': queryParams.utm_content };\n }\n return campaignData;\n};\n\nconst addSearchInfo = (ttDataLayer, trackingObject) => {\n // Fill prop1 with search if provided\n if (trackingObject.search && trackingObject.search.keyword) {\n ttDataLayer.add(\n 'prop1',\n trackingObject.search.keyword.toLowerCase().trim(),\n );\n\n // Add result count to prop2\n if (trackingObject.search.count) {\n ttDataLayer.add('prop2', trackingObject.search.count);\n }\n\n // Add search event\n ttDataLayer.addEvent('event1');\n }\n};\n\nexport const addLevelInfo = (ttDataLayer, trackingObject) => {\n // Add value for prop4, 5 ... 9 based on level hierarchy\n if (trackingObject.level1) {\n const hierarchicalArray = [\n trackingObject.level2,\n trackingObject.level3,\n trackingObject.level4,\n trackingObject.level5,\n ];\n let currentIndex = 4; // We start with prop4 because prop1, 2 and 3 are already used\n let nextIndex = 5;\n ttDataLayer.add(\n 'prop4',\n `${ttDataLayer.get('channel')} - ${trackingObject.level1}`,\n );\n\n hierarchicalArray.forEach((item) => {\n if (item) {\n ttDataLayer.add(\n `prop${nextIndex}`,\n `${ttDataLayer.get(`prop${currentIndex}`)} - ${item}`,\n );\n currentIndex += 1;\n nextIndex += 1;\n }\n });\n\n ttDataLayer.add(\n `prop${nextIndex}`,\n `${ttDataLayer.get(`prop${currentIndex}`)} - ${trackingObject.name}`,\n ); // Last prop always contains the pageName\n ttDataLayer.add('pageName', ttDataLayer.get(`prop${nextIndex}`));\n } else {\n // No level1\n ttDataLayer.add(\n 'prop4',\n `${ttDataLayer.get('channel')} - ${trackingObject.name}`,\n );\n ttDataLayer.add('pageName', ttDataLayer.get('prop4'));\n }\n};\n\nconst addPassInfo = (store, ttDataLayer) => {\n // It's assumed that pass is loaded before this script since it's in async mode and called after waitForPassJSON...\n if (window.passJSON && window.passJSON !== null) {\n const micros = passJSON.microEligibility || '';\n\n // if the user is connected (has a subscriberId)\n if (isPassAuthenticated()) {\n ttDataLayer.add('login_status', 'Logged-in');\n ttDataLayer.add('eVar16', 'Identifie');\n ttDataLayer.add('eVar36', passJSON.partner ? passJSON.partner : 'CANAL'); // Account's source (FREE, Orange, Facebook, Canal...)\n ttDataLayer.add('preferences_reco', passJSON.collectUserData.toString()); // Only valid for logged-in user\n ttDataLayer.add(\n 'customer_type',\n (passJSON.subscriberType && passJSON.subscriberType === 'PRO') ||\n micros.indexOf('R_ABO_PRO') > -1\n ? 'B2B'\n : 'B2C',\n );\n } else {\n ttDataLayer.add('eVar19', 'Aucun');\n ttDataLayer.add('login_status', 'Not-logged-in');\n ttDataLayer.add('eVar16', 'Inconnu');\n }\n\n // Add the id_advertising and id_analytics if defined by passJSON\n if (\n typeof passJSON.id_advertising !== 'undefined' &&\n passJSON.id_advertising !== ''\n ) {\n ttDataLayer.add('id_advertising', passJSON.id_advertising);\n }\n\n if (\n typeof passJSON.id_analytics !== 'undefined' &&\n passJSON.id_analytics !== ''\n ) {\n ttDataLayer.add('id_analytics', passJSON.id_analytics);\n }\n\n const offerMatches = micros.match(/.*(OFFER:\\[([^\\]]+)\\])/) || '';\n const offers =\n typeof offerMatches[2] !== 'undefined' ? offerMatches[2] : '';\n ttDataLayer.add('eVar20', offers !== '' ? offers : 'Unknown');\n\n if (micros.indexOf('O_ABO') >= 0 || passJSON.isSubscriber === true) {\n ttDataLayer.add('subscriber_status', 'Subscriber');\n ttDataLayer.add('eVar17', 'Abonne'); // legacy\n\n // With or without commitment subscription\n if (micros.indexOf('OAE') >= 0) {\n ttDataLayer.add('eVar57', 'With commitment (OAE)');\n } else if (micros.indexOf('OSE') >= 0) {\n ttDataLayer.add('eVar57', 'Without commitment (OSE)');\n }\n } else if (isPassAuthenticated()) {\n ttDataLayer.add('subscriber_status', 'Prospect');\n ttDataLayer.add('eVar17', 'Prospect'); // legacy\n } else {\n // Should be an error case\n ttDataLayer.add('subscriber_status', 'Unknown');\n ttDataLayer.add('eVar17', 'Inconnu'); // legacy\n }\n } else {\n // If there is no passJSON, user is not logged-in\n ttDataLayer.add('login_status', 'Not-logged-in');\n ttDataLayer.add('eVar16', 'Inconnu');\n ttDataLayer.add('subscriber_status', 'Unknown');\n ttDataLayer.add('eVar17', 'Inconnu');\n }\n};\n\nconst addBrowserInfo = (ttDataLayer) => {\n ttDataLayer.add('server', window.location.hostname);\n\n const uap = new UAParser();\n // Since Apple froze its user agent in version 10.15.7, we haven't yet find a reliable solution that can be derived from\n // only the user agent data (as in the Chrome Dev Tools case). However, if we are using a real browser in iPad\n // we use an additional check for iPad-specific browser features:\n const uaparser = uap.getResult().withFeatureCheck();\n\n // userAgent information\n ttDataLayer.add('browser_name', uaparser.browser.name);\n ttDataLayer.add('browser_version', uaparser.browser.version);\n ttDataLayer.add('os_name', uaparser.os.name);\n ttDataLayer.add('os_version', uaparser.os.version);\n ttDataLayer.add('device_name', uaparser.device.model || '');\n\n let deviceBrand = uaparser.device.vendor;\n let deviceCategory = uaparser.device.type;\n\n // Fallback for device brand if not detected by ua-parser-js\n if (!deviceBrand) {\n deviceBrand = 'unknown';\n if (uaparser.os && uaparser.os.name) {\n const osName = uaparser.os.name.toLowerCase();\n if (osName.includes('mac') || osName.includes('ios')) {\n deviceBrand = 'Apple';\n } else if (osName.includes('windows')) {\n deviceBrand = 'Microsoft';\n } else if (osName.includes('android')) {\n deviceBrand = 'Google';\n } else if (osName.includes('linux')) {\n deviceBrand = 'Linux';\n }\n }\n }\n\n // Fallback for device category if not detected by ua-parser-js\n if (!deviceCategory) {\n const viewportWidth = Math.max(\n document.documentElement.clientWidth || 0,\n window.innerWidth || 0,\n );\n\n // Retrieve and normalize the operating system name\n let osName = '';\n if (uaparser.os && uaparser.os.name) {\n osName = uaparser.os.name.toLowerCase();\n }\n\n // Determine device category using OS information\n if (\n osName.includes('mac') ||\n osName.includes('windows') ||\n osName.includes('linux')\n ) {\n // Assume desktop for macOS, Windows, and Linux devices\n deviceCategory = 'desktop';\n } else {\n // Use viewport width for other operating systems\n if (viewportWidth <= 640) {\n deviceCategory = 'mobile';\n } else if (viewportWidth <= 1024) {\n deviceCategory = 'tablet';\n } else {\n deviceCategory = 'desktop';\n }\n }\n }\n\n ttDataLayer.add('device_brand', deviceBrand);\n ttDataLayer.add('device_category', deviceCategory);\n};\n\nconst addCustomInfo = (store, ttDataLayer) => {\n const state = store.getState();\n\n // Add attribution info\n if (\n state.source.paidAttribution?.campaign &&\n state.source.paidAttribution?.campaignType\n ) {\n ttDataLayer.add(\n 'paid_attribution_campaign',\n state.source.paidAttribution.campaign,\n );\n ttDataLayer.add(\n 'paid_attribution_type',\n state.source.paidAttribution.campaignType,\n );\n ttDataLayer.add(\n 'paid_attribution_entity',\n state.source.paidAttribution.entity,\n );\n ttDataLayer.add(\n 'paid_attribution_thematic',\n state.source.paidAttribution.thematic,\n );\n }\n\n if (\n state.source.externalAttribution?.campaign &&\n state.source.externalAttribution?.campaignType\n ) {\n ttDataLayer.add(\n 'external_attribution_campaign',\n state.source.externalAttribution.campaign,\n );\n ttDataLayer.add(\n 'external_attribution_type',\n state.source.externalAttribution.campaignType,\n );\n ttDataLayer.add(\n 'external_attribution_entity',\n state.source.externalAttribution.entity,\n );\n ttDataLayer.add(\n 'external_attribution_thematic',\n state.source.externalAttribution.thematic,\n );\n }\n\n // Add resolution info\n const browserHeight = window.innerHeight; // Real available space (window)\n const browserWidth = window.innerWidth; // Real available space (window)\n const resolution = `${window.screen.width}x${window.screen.height}`; // Screen resolution\n\n ttDataLayer.add('browser_height', browserHeight);\n ttDataLayer.add('browser_width', browserWidth);\n ttDataLayer.add('device_resolution', resolution);\n\n ttDataLayer.add('country', state.config.zone); // Legacy\n ttDataLayer.add('app_zone', state.config.zone);\n\n // AB TESTING\n // Is there a param that overrides the population in cookie?\n // Sometimes, the user jumps from a website to another and we cannot store in cookie so we use parameter in url\n // Does the cookie exist and have a valid value? There is a cookie sync from the iframe that is pushed to the store.\n // That's why we check also from the store. It's used for compute conversion rate when the user jumps from a website to another.\n const abTestingPopulation =\n getQueryParam('ab_test_pop') ||\n readCookie(ABTEST_COOKIE_NAME) ||\n store.getState().abTestingPopulation;\n if (Number.parseInt(abTestingPopulation, 10) >= 0) {\n ttDataLayer.add('ab_test_population', abTestingPopulation);\n store.dispatch({ 'type': 'SET_AB_TESTING', abTestingPopulation });\n }\n\n // Duplication of the abTestingPopulation cookie used on boutique.canalplus.com and client.canalplus.com\n // to not mix AB test values conducted on these websites and on any other.\n // TEMPORARY solution because of Amplitude mix-up for these values, the data team are looking for a better one for the future\n const abTestingPopulationStore =\n readCookie(ABTEST_STORE_COOKIE_NAME) ||\n store.getState().abTestingPopulationStore;\n if (Number.parseInt(abTestingPopulationStore, 10) >= 0) {\n ttDataLayer.add('ab_test_population_store', abTestingPopulationStore);\n store.dispatch({\n 'type': 'SET_AB_TESTING_STORE',\n abTestingPopulationStore,\n });\n }\n\n // Generate a number between 0 and 100 to downsample if needed (ex: select only event from 0 to 50 for half of them)\n ttDataLayer.addSampling();\n\n // Copy pageName in eVar10 and add event3 to event's list if pageView\n if (ttDataLayer.get('pageName')) {\n ttDataLayer.add('eVar10', ttDataLayer.get('pageName'));\n ttDataLayer.addEvent('event3');\n }\n\n ttDataLayer.add('preferences_analytics', state.statsAllowed.toString());\n ttDataLayer.add('preferences_ads', state.adsAllowed.toString());\n\n // LEGACY: we receive purchased products with this format: \"categories;product name;quantity;price\"\n // ex: SSEngag;ESS_CS100NFX;1;34.9\n // So we want to split them\n if (ttDataLayer.get('products')) {\n const productArray = ttDataLayer.get('products').split(';');\n if (productArray.length > 3) {\n ttDataLayer.add('product_category', productArray[0]);\n ttDataLayer.add('product_code', productArray[1]);\n ttDataLayer.add('product_price', Number.parseFloat(productArray[3]));\n }\n }\n};\n","/**\n * Tealium tools\n */\nimport { BRAND_ORANGE, PAY_VOD, LAUNCH_APP } from '../PrivacyManager/Constants';\nimport { getDataApiDomain, readCookie } from '../Utils';\n\nwindow.utag_data = {};\nwindow.utag_cfg_ovrd = {\n noview: true, // This flag disables the auto send when the script is loaded load because we need to wait for user consent\n nocookie: true,\n};\n\nconst updateUtagData = (ttDataLayer) => {\n window.utag_data = {};\n window.utag_data = ttDataLayer.clone();\n\n // We need to add the didomiVendorsEnabled to the utag_data object every time we send a request\n if (window.utag_data && window.didomiState?.didomiVendorsEnabled) {\n window.utag_data.didomiVendorsEnabled =\n window.didomiState?.didomiVendorsEnabled;\n }\n\n if (window.utag) {\n // This means we can call the utag.view function.\n // If we can't, when the Tealium script loads, it will send everything in the utag_data's variable.\n window.utag.view(window.utag_data);\n } else {\n // If utag is not defined then we need to fire tags when the tealium script loads so we disable the no autosend flag\n window.utag_cfg_ovrd = { noview: false };\n }\n};\n\n// Tealium support events as a list but we need to map it to a particular field set in tealium EventStream\nconst addEvents = (ttDataLayer) => {\n if (ttDataLayer.get('events') && ttDataLayer.get('events') instanceof Array) {\n ttDataLayer.add('eventList', ttDataLayer.get('events'));\n }\n};\n\nexport const sendTracking = async (store, ttDataLayer) => {\n const state = store.getState();\n window.utag_data = {};\n\n // We need to add the didomiVendorsEnabled to the utag_data object every time we send a request\n if (window.utag_data && window.didomiState?.didomiVendorsEnabled) {\n window.utag_data.didomiVendorsEnabled =\n window.didomiState?.didomiVendorsEnabled;\n }\n\n addEvents(ttDataLayer);\n // Using this only for launch app event and keep same event name for all view page\n if (ttDataLayer.get('pageName').includes(LAUNCH_APP)) {\n ttDataLayer.add('tealium_event', `${LAUNCH_APP}`);\n } else {\n ttDataLayer.add('tealium_event', 'view page');\n }\n\n // Send analytics request\n await sendRequest(ttDataLayer);\n\n // Fire tags\n if (state.adsAllowed && state.config.tealiumKey) {\n // Tealium adds a lot of stuff and we don't want to mess with the dataLayer\n updateUtagData(ttDataLayer);\n }\n};\n\nconst sendRequest = async (ttDataLayer) => {\n // For debugging purpose only, \"Trace\" is a feature from Tealium that filters events based on a trace id\n // Trace Id cookie is set by the Tealium's browser extension (but it could work with any string)\n const traceId = readCookie('trace_id');\n\n const event = {\n 'tealium_account': 'canalplus',\n 'tealium_profile': 'main',\n 'tealium_visitor_id': ttDataLayer.get('device_key'),\n 'tealium_trace_id': traceId,\n 'tealium_datasource': '4qrdb9',\n 'tealium_timestamp_epoch': Math.floor(Date.now() / 1000),\n 'user_event_time': Date.now(),\n ...ttDataLayer.clone(),\n };\n\n const store = window.ttStore;\n const state = store.getState();\n const domain = getDataApiDomain(state.config.brand);\n\n await fetch(`https://${domain}/event`, {\n method: 'POST',\n body: JSON.stringify(event),\n });\n};\n\nexport const sendEvent = async (ttDataLayer, callback) => {\n ttDataLayer.add(\n 'tealium_event',\n ttDataLayer\n .get('event_name')\n ?.toLowerCase() /* lowercase = TEMP fix, we need to agree on a convention and it's lower case in Tealium */,\n );\n addEvents(ttDataLayer);\n\n if (ttDataLayer.get('event_name') === PAY_VOD) {\n updateUtagData(ttDataLayer);\n }\n\n await sendRequest(ttDataLayer);\n\n if (callback) {\n callback(); // Sadly no real callback after the utag link event\n }\n};\n\nexport const addTealiumScript = (store) => {\n const state = store.getState();\n const isOrange = state?.config?.brand === BRAND_ORANGE;\n const baseUrl = 'https://tags.tiqcdn.com/utag/canalplus/';\n const orangeTealiumUrl = 'https://canal.vct.pgw.orange.fr/tealium/';\n\n // If we have an item DTMstaging in the sessionStorage,\n // We want to add staging scripts instead of production's\n // Build the final script url\n const src = `${!isOrange ? baseUrl : orangeTealiumUrl}${state.config.tealiumKey}/${state.config.env}/utag.js`;\n\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.src = src;\n document.body.appendChild(script);\n};\n","import {\n setAdsOptOut,\n setAnonymous,\n setStatsOptOut,\n syncUserPrefWithIframe,\n updateDeviceIdCookieAction,\n} from '../Actions/PrivacyActions';\nimport { addLevelInfo, enrichDataLayer } from '../DataLayer/EnrichDataLayer';\nimport * as tealium from '../Integrations/Tealium';\nimport {\n COOKIE_NAME_ADS,\n COOKIE_NAME_ANONYMOUS,\n COOKIE_NAME_STATS,\n DEFAULT_COOKIE_DURATION,\n} from '../PrivacyManager/Constants';\nimport {\n generateUID,\n isPassAuthenticated,\n isThirdPartyWebsite,\n isUserCentricConsentModeActivated,\n setCookie,\n writeCookie,\n} from '../Utils';\n\nexport const sendPageView = async (trackingObject, initParam) => {\n const store = window.ttStore;\n const state = store.getState();\n if (!state.anonymousAllowed) {\n return;\n }\n\n // pageName field is deprecated, we're keeping it for retrocompatibility\n const name =\n trackingObject?.name ||\n trackingObject?.data?.pageName ||\n trackingObject?.data?.page_name;\n\n // Name field is optionnal if there is a pageName provided in data (see below)\n if (name) {\n const init = typeof initParam !== 'undefined' ? initParam : false; // Not an init by default\n\n if (!trackingObject.name) {\n trackingObject.name = name;\n }\n\n // We need to keep the dataLayer for the first event because it has been initialized with some information\n // See function initDataLayerWithSessionStart\n if (!ttDataLayer.isFirstEventSinceLoad()) {\n ttDataLayer.reset();\n }\n\n // Add level in props. This is specific to page view.\n addLevelInfo(ttDataLayer, trackingObject);\n\n enrichDataLayer(store, trackingObject);\n\n await tealium.sendTracking(store, ttDataLayer);\n\n if (state.config.logs) {\n ttDataLayer.printDataLayerInConsole();\n }\n\n // Add the tracking to queue because we need to trace every action for async scripts (DTM & queuemanager)\n if (\n !init &&\n typeof queueManagerForLoadEvent !==\n 'undefined' /* Some entrypoints don't use this feature */\n ) {\n // Exec functions in the queue (mostly from the DTM)\n try {\n trackingQueue.push(trackingObject);\n trackingQueue = trackingQueue.slice(-1); // Only keep the last element of navigation\n queueManagerForLoadEvent.exec();\n } catch (e) {\n console.error(`Error in queueManagerForLoadEvent. ${e}`);\n }\n }\n\n // We need to reset from the dataLayer the first session property AFTER having sent the data\n ttDataLayer.unsetFirstEventSinceLoad();\n ttDataLayer.unsetFirstEventSinceSessionStart();\n\n store.dispatch({ type: 'SEND_PAGE_VIEW' }); // Log, doesn't actually change state\n } else {\n console.error('Tracking Object not supplied on sendPageView function');\n }\n};\n\nexport const sendEvent = async (event) => {\n const store = window.ttStore;\n const state = store.getState();\n if (!state.anonymousAllowed) {\n return;\n }\n\n if (event && event.name) {\n ttDataLayer.reset();\n\n ttDataLayer.add('event_name', event.name);\n ttDataLayer.add('linkName', event.name);\n\n // Check if there is a callback, set it to null otherwise\n const callback =\n event.callback && {}.toString.call(event.callback) === '[object Function]'\n ? event.callback\n : null;\n\n // If there are props and eVar to override\n event.data = event.data ? event.data : null;\n\n // Add events to dataLayer\n if (event.data) {\n const events = event.data.events;\n if (events) {\n ttDataLayer.addEvent(events);\n }\n }\n\n ttDataLayer.add('eVar11', event.name); // We need to manually populate evar11\n ttDataLayer.addEvent('event11');\n\n if (event.type) {\n ttDataLayer.add('linkType', event.type.toLowerCase());\n } else {\n ttDataLayer.add('linkType', 'custom');\n }\n\n enrichDataLayer(store, event);\n\n await tealium.sendEvent(ttDataLayer, callback);\n\n if (store.getState().config.logs) {\n ttDataLayer.printDataLayerInConsole();\n }\n store.dispatch({ type: 'SEND_EVENT' }); // Log, doesn't actually change state\n } else {\n console.error('Event Object not supplied on sendEvent function');\n }\n};\n\nconst waitForUserConsent = (callback) => {\n const store = window.ttStore;\n callback(store.getState());\n};\n\n// Write cookie session on the main domain (in addition to the iframe's cookies)\nexport const storeUserChoiceOnTopDomainCookie = (store) => {\n const data = store.getState();\n\n // Extend the cookie duration only if the host domain is .canalplus.com, to be able to use it\n // to limit createToken calls in prospect mode\n if (!isThirdPartyWebsite()) {\n setCookie(COOKIE_NAME_ADS, data.adsAllowed, DEFAULT_COOKIE_DURATION);\n setCookie(COOKIE_NAME_STATS, data.statsAllowed, DEFAULT_COOKIE_DURATION);\n setCookie(\n COOKIE_NAME_ANONYMOUS,\n data.anonymousAllowed,\n DEFAULT_COOKIE_DURATION,\n );\n } else {\n // If the domain is not .canalplus.com, write these cookies only for the current session\n writeCookie(COOKIE_NAME_ADS, data.adsAllowed);\n writeCookie(COOKIE_NAME_STATS, data.statsAllowed);\n writeCookie(COOKIE_NAME_ANONYMOUS, data.anonymousAllowed);\n }\n};\n\n// CANAL+ respects the GDPR regulation\n// We add the tracking ONLY if the user expressed their consent with a clic\nexport const initAfterUserConsent = (store, hasAlreadyConsented = false) => {\n const state = store.getState();\n\n // Replace \"empty\" function defined on the window's object by the host with new one that actually really send tracking or data about user consent\n // Only if anonymous measurement is allowed! Otherwise the sendPageView and sendEvent functions should still be disabled\n if (state.anonymousAllowed) {\n window.sendPageView = sendPageView;\n window.sendEvent = sendEvent;\n }\n window.waitForUserConsent = waitForUserConsent;\n\n syncUserPrefWithIframe(store);\n // Write cookie session on the main domain (in addition to the iframe's cookies)\n storeUserChoiceOnTopDomainCookie(store);\n\n try {\n const { VID } = state;\n let { trackingKey } = state;\n const newTrackingKey = generateUID();\n\n // If trackingKey is undefined, which could be dramatic for analytics\n if (trackingKey === 'undefined' || trackingKey === '') {\n trackingKey = newTrackingKey;\n store.dispatch({ type: 'UPDATE_TRACKING_KEY', trackingKey });\n }\n\n if (\n isPassAuthenticated() &&\n isUserCentricConsentModeActivated() &&\n hasAlreadyConsented\n ) {\n let needsIframeSync = false;\n if (\n window.passJSON?.analytics !== undefined &&\n window.passJSON?.analytics !== state.statsAllowed\n ) {\n setStatsOptOut(store, window.passJSON?.analytics);\n needsIframeSync = true;\n }\n if (\n window.passJSON?.trackingPub !== undefined &&\n window.passJSON?.trackingPub !== state.adsAllowed\n ) {\n setAdsOptOut(store, window.passJSON?.trackingPub);\n needsIframeSync = true;\n }\n if (\n window.passJSON?.anonymousTracking !== undefined &&\n window.passJSON?.anonymousTracking !== state.anonymousAllowed\n ) {\n setAnonymous(store, window.passJSON?.anonymousTracking);\n needsIframeSync = true;\n }\n if (needsIframeSync) {\n syncUserPrefWithIframe(store);\n storeUserChoiceOnTopDomainCookie(store);\n }\n }\n\n // We need to be sure we can store some data in cookies first\n if (state.statsAllowed && state.anonymousAllowed) {\n // If there is a desynchro between what is stored in the cookie and the user's login status,\n // it means that the user has logout!\n // We need to update deviceId cookie with the correct authenticated flag and renew trackingKey.\n if (\n state.authenticatedFlagFromCookie === '1' &&\n isPassAuthenticated() === false\n ) {\n store.dispatch({\n type: 'UPDATE_TRACKING_KEY',\n trackingKey: newTrackingKey,\n });\n store.dispatch({\n type: 'UPDATE_AUTHENTICATE_FLAG',\n authenticatedFlagFromCookie: '0',\n });\n updateDeviceIdCookieAction(VID, '0', newTrackingKey);\n } else {\n // In all other case, we update the deviceId cookie but we keep the actual trackingKey\n store.dispatch({\n type: 'UPDATE_AUTHENTICATE_FLAG',\n authenticatedFlagFromCookie: isPassAuthenticated() ? '1' : '0',\n });\n updateDeviceIdCookieAction(\n VID,\n isPassAuthenticated() ? '1' : '0',\n trackingKey,\n );\n }\n }\n\n execTrackingQueueAndDispatchConsent(store);\n } catch (e) {\n console.log(e);\n execTrackingQueueAndDispatchConsent(store);\n }\n\n store.dispatch({ type: 'SEND_TRACKING_AFTER_CONSENT' }); // It's just a log. No state diff\n};\n\nconst execTrackingQueueAndDispatchConsent = (store) => {\n const state = store.getState();\n\n if (\n typeof trackingQueue !== 'undefined' &&\n trackingQueue &&\n trackingQueue.length > 0\n ) {\n // ensure that the dataLayer is reset before sending the page view to avoid duplicate data inside payload\n ttDataLayer.reset();\n // Send all the tracking that has been stored in the queue\n trackingQueue.forEach((item) => sendPageView(item, true));\n trackingQueue = [];\n }\n\n if (\n typeof eventQueue !== 'undefined' &&\n eventQueue &&\n eventQueue.length > 0\n ) {\n eventQueue.forEach((item) => sendEvent(item));\n } // We don't reset the queue because it's used by the QueueManager.\n\n // Fire callback after the user chooses to consent\n if (\n typeof consentCallbackQueue !== 'undefined' &&\n consentCallbackQueue &&\n consentCallbackQueue.length > 0\n ) {\n consentCallbackQueue.forEach((item) => item.call(null, state));\n }\n\n document.dispatchEvent(\n new CustomEvent('userChangedConsent', { detail: state }),\n );\n};\n","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","/*\n * PrivacyManager's popin Management\n */\nimport css from '!!css-loader!./Popin/popin.css'; // eslint-disable-line import/no-unresolved\nimport {\n setAdsOptOut,\n setStatsAndAnonymousOptOut,\n} from '../Actions/PrivacyActions';\nimport { initAfterUserConsent } from '../Actions/TrackingActions';\nimport {\n DATA_DOMAIN,\n VENDORLIST_PATH_LOCAL,\n VENDORLIST_PATH_PROD,\n} from '../PrivacyManager/Constants';\nimport { addClass, removeClass } from '../Utils';\nimport { renderPopin } from './Popin/popinRenderer';\n\nconst vendorListSrc = __LOCAL__\n ? VENDORLIST_PATH_LOCAL\n : `https://${DATA_DOMAIN}${VENDORLIST_PATH_PROD}`;\n\nwindow.getVendorList = async () => {\n const store = window.ttStore;\n const state = store.getState();\n\n try {\n return await fetch(vendorListSrc)\n .then((res) => res.json())\n .then((vendors) => [...state.config.lang.customVendors, ...vendors]);\n } catch (e) {\n console.error('Error during fetch,', e);\n }\n};\n\nconst renderVendors = (currentLang, vendorList = []) => {\n let rows = '';\n vendorList.forEach((vendor) => {\n rows += `\n \n ${vendor.name}\n \n `;\n });\n\n return `\n \n \n \n \n ${rows}\n
${currentLang.privacyPopin.vendorTableTitle}
\n `;\n};\n\nexport const addPrivacyManager = () => {\n // Do not add the popin if one already exists\n if (document.getElementById('privacy-manager-popin')) {\n return;\n }\n\n const store = window.ttStore;\n const state = store.getState();\n store.dispatch({ type: 'OPEN_PRIVACY_SETTINGS' }); // Log, doesn't change the state\n\n // Add the style\n const style = document.createElement('style');\n style.innerHTML = `${css[0][1]}\\n${css[1][1]}`;\n document.head.appendChild(style);\n\n // Add the popin to the document\n const pmElement = document.createElement('div');\n pmElement.id = 'privacy-manager-popin';\n pmElement.setAttribute('data-nosnippet', '');\n pmElement.innerHTML = renderPopin(state.config.lang, state.config.brand);\n document.body.insertBefore(pmElement, document.body.firstChild);\n\n // Here we send a tracking event at the display of the popin\n // Note that in case of first visit, the event will only be sent after user's interaction with the popin\n // This is due to the fact that we don't have user's tracking consent on their first visit\n sendPopinDisplayEvent(state.statsAllowed, state.adsAllowed);\n\n // Set the initial state of the checkboxes and bind the onclick on them\n const displayOptoutOptions = document.getElementById('pm-optout-display');\n const optoutBtnArrowDown = document.getElementById('optout-arrow-down');\n const optoutBtnArrowUp = document.getElementById('optout-arrow-up');\n const optoutOptionsBlock = document.getElementById('pm-optout-block');\n const cbOptoutStats = document.getElementById('cb-optout-stats');\n const cbOptoutAds = document.getElementById('cb-optout-ads');\n const displayVendorsButton = document.getElementById('pm-ads-vendors');\n const vendorList = document.getElementById('pm-vendor-list');\n const vendorListBtnArrowDown = document.getElementById('vendor-arrow-down');\n const vendorListBtnArrowUp = document.getElementById('vendor-arrow-up');\n const declineBtn = document.getElementById('decline-btn');\n const refuseBtn = document.getElementById('refuse-btn');\n const acceptBtn = document.getElementById('accept-btn');\n const exitBtn = document.getElementById('save-exit-btn');\n const exitContainer = document.getElementById('save-exit-container');\n\n displayOptoutOptions.setAttribute('aria-expanded', false);\n displayVendorsButton.setAttribute('aria-expanded', false);\n\n // Focus the popin so voiceOver cannot exit it\n document.getElementById('popin-content')?.focus();\n\n const trapFocus = (e) => {\n const focusableEls = document.querySelectorAll('.pm-focusable');\n const firstFocusableElement = focusableEls[0];\n const lastFocusableElement =\n document.querySelector('#refuse-btn.options-opened') ??\n focusableEls[focusableEls.length - 1] ??\n declineBtn;\n const isTabPressed = e.key === 'Tab';\n\n if (!isTabPressed) {\n return;\n }\n\n /* Pressing TAB */\n if (isTabPressed && document.activeElement === lastFocusableElement) {\n firstFocusableElement.focus();\n e.preventDefault();\n }\n\n /* Pressing SHIFT + TAB */\n if (e.shiftKey && document.activeElement === firstFocusableElement) {\n lastFocusableElement.focus();\n e.preventDefault();\n }\n };\n\n // Trap the focus inside the GDPR popin\n document.addEventListener('keydown', trapFocus);\n\n cbOptoutStats.checked = state.statsAllowed;\n cbOptoutAds.checked = state.adsAllowed;\n\n // When the user presses on the \"Enter\" key on the \"Stats\" toggle\n cbOptoutStats.onkeydown = (event) => {\n if (event.key === 'Enter') {\n cbOptoutStats.checked = !cbOptoutStats.checked;\n }\n };\n\n // When the user presses on the \"Enter\" key on the \"Ads\" toggle\n cbOptoutAds.onkeydown = (event) => {\n if (event.key === 'Enter') {\n cbOptoutAds.checked = !cbOptoutAds.checked;\n }\n };\n\n const handlePopinButtonClick = (statsAllowed, adsAllowed) => {\n sendPopinInteractionEvent(statsAllowed, adsAllowed);\n setStatsAndAnonymousOptOut(store, statsAllowed);\n setAdsOptOut(store, adsAllowed);\n cbOptoutStats.checked = statsAllowed;\n cbOptoutAds.checked = adsAllowed;\n initAfterUserConsent(store);\n document.removeEventListener('keydown', trapFocus);\n closePrivacyManager();\n };\n\n // When the user clicks on the \"Refuse all\" button at the top right of the popin (with options closed)\n declineBtn.onclick = () => {\n handlePopinButtonClick(false, false);\n };\n\n // When the user clicks on the \"Refuse all\" button next to the \"Accept all\" button (with options opened)\n refuseBtn.onclick = () => {\n handlePopinButtonClick(false, false);\n };\n\n // When the user clicks on the \"Accept all\" button\n acceptBtn.onclick = () => {\n handlePopinButtonClick(true, true);\n };\n\n // When the user clicks on the \"Save & exit\" button\n exitBtn.onclick = () => {\n handlePopinButtonClick(cbOptoutStats.checked, cbOptoutAds.checked);\n };\n\n // When the user clicks on the \"Learn more\" button\n displayOptoutOptions.onclick = () => {\n if (optoutOptionsBlock.className.includes('options-opened')) {\n displayOptoutOptions.setAttribute('aria-expanded', false);\n removeClass(\n [\n optoutBtnArrowDown,\n optoutBtnArrowUp,\n optoutOptionsBlock,\n declineBtn,\n exitContainer,\n refuseBtn,\n ],\n 'options-opened',\n );\n } else {\n displayOptoutOptions.setAttribute('aria-expanded', true);\n addClass(\n [\n optoutBtnArrowDown,\n optoutBtnArrowUp,\n optoutOptionsBlock,\n declineBtn,\n exitContainer,\n refuseBtn,\n ],\n 'options-opened',\n );\n }\n };\n\n // When the user clicks on the \"Show vendor list\" button\n displayVendorsButton.onclick = () => {\n // Fetch the IAB vendor list when the user clicks on \"our partners\" button if it isn't already loaded\n if (!vendorList.innerHTML) {\n getVendorList().then((vendors) => {\n vendorList.innerHTML = renderVendors(state.config.lang, vendors);\n });\n }\n\n if (vendorList.className.includes('vendor-opened')) {\n displayVendorsButton.setAttribute('aria-expanded', false);\n removeClass(\n [vendorListBtnArrowDown, vendorListBtnArrowUp, vendorList],\n 'vendor-opened',\n );\n } else {\n displayVendorsButton.setAttribute('aria-expanded', true);\n addClass(\n [vendorListBtnArrowDown, vendorListBtnArrowUp, vendorList],\n 'vendor-opened',\n );\n }\n };\n};\n\nconst sendPopinDisplayEvent = (stats = false, ads = false) => {\n // In case of window.sendEvent not being rightly initialized\n // OR when using privacyManager standalone library (provides only the popin, not the tracking part)\n if (window.sendEvent !== undefined) {\n sendEvent({\n name: 'viewed preferences popin',\n data: {\n 'preferences_analytics': stats.toString(),\n 'preferences_ads': ads.toString(),\n },\n });\n }\n};\n\nconst sendPopinInteractionEvent = (stats = false, ads = false) => {\n // In case of window.sendEvent not being rightly initialized\n // OR when using privacyManager standalone library (provides only the popin, not the tracking part)\n if (window.sendEvent !== undefined) {\n sendEvent({\n name: 'submit preferences popin',\n data: {\n 'preferences_analytics_chosen': stats.toString(),\n 'preferences_ads_chosen': ads.toString(),\n },\n });\n }\n};\n\nconst closePrivacyManager = () => {\n const store = window.ttStore;\n // Basically remove the HTML\n const privacyManager = document.getElementById('privacy-manager-popin');\n\n // dispatch Event before remove privacyManager dom element to give possibility to restore focus manuelly\n window.dispatchEvent(new Event('CLOSE_PRIVACY_SETTINGS'));\n\n if (privacyManager) {\n privacyManager.parentNode.removeChild(privacyManager);\n }\n\n store.dispatch({ type: 'CLOSE_PRIVACY_SETTINGS' }); // Log, doesn't change the state\n};\n\nwindow.launchPrivacyManager = () => addPrivacyManager();\nwindow.sendPopinDisplayEvent = (stats, ads) =>\n sendPopinDisplayEvent(stats, ads);\nwindow.sendPopinInteractionEvent = (stats, ads) =>\n sendPopinInteractionEvent(stats, ads);\n\nexport const removePrivacyManager = () => {\n document.getElementById('privacy-manager-popin')?.remove();\n};\n","import {\n BRAND_CANALBOX,\n BRAND_MMC,\n BRAND_MYCANAL,\n BRAND_TIMVISION,\n BRAND_TVCARAIBES,\n DATA_DOMAIN,\n PATH_CANALBOX_LOCAL,\n PATH_CANALBOX_PROD,\n PATH_MMC_LOCAL,\n PATH_MMC_PROD,\n PATH_PANTON_FONT_LOCAL,\n PATH_PANTON_FONT_PROD,\n PATH_TVCARAIBES_LOCAL,\n PATH_TVCARAIBES_PROD,\n THEME_CANALBOX,\n THEME_DEFAULT,\n THEME_MMC,\n THEME_TIMVISION,\n THEME_TVCARAIBES,\n} from '../../PrivacyManager/Constants';\nimport {\n isPassAuthenticated,\n isPassIncluded,\n isUserCentricConsentModeActivated,\n} from '../../Utils';\n\nconst getTheme = (brand) => {\n switch (brand) {\n case BRAND_CANALBOX:\n return THEME_CANALBOX;\n case BRAND_MMC:\n return THEME_MMC;\n case BRAND_TIMVISION:\n return THEME_TIMVISION;\n case BRAND_TVCARAIBES:\n return THEME_TVCARAIBES;\n case BRAND_MYCANAL:\n default:\n return THEME_DEFAULT;\n }\n};\n\nconst getLogo = (brand) => {\n switch (brand) {\n case BRAND_CANALBOX: {\n const canalBoxLogoSrc = __LOCAL__\n ? PATH_CANALBOX_LOCAL\n : `https://${DATA_DOMAIN}${PATH_CANALBOX_PROD}`;\n return `\"CANALBOX\"`;\n }\n case BRAND_MMC: {\n const mmcLogoSrc = __LOCAL__\n ? PATH_MMC_LOCAL\n : `https://${DATA_DOMAIN}${PATH_MMC_PROD}`;\n return `\"Ma`;\n }\n case BRAND_TIMVISION:\n return `\"TIMVISION\"`;\n case BRAND_TVCARAIBES: {\n const tvCaraibesLogoSrc = __LOCAL__\n ? PATH_TVCARAIBES_LOCAL\n : `https://${DATA_DOMAIN}${PATH_TVCARAIBES_PROD}`;\n return `\"TVCaraibes\"`;\n }\n case BRAND_MYCANAL:\n default:\n return '\"CANAL+\"'; /* TODO: delete canalplus-logo class once CANALBOX uses the brand to switch logos */\n }\n};\n\nconst addPantonFont = (classnames = []) => {\n classnames.forEach((classname) => {\n const elements = document.getElementsByClassName(classname);\n for (let i = 0; i < elements.length; i += 1) {\n elements[i].style.fontFamily = 'Panton Italic';\n }\n });\n};\n\nexport const renderPopin = (currentLang, currentBrand) => {\n if (currentBrand === BRAND_TVCARAIBES) {\n const pantonFontSrc = __LOCAL__\n ? PATH_PANTON_FONT_LOCAL\n : `https://${DATA_DOMAIN}${PATH_PANTON_FONT_PROD}`;\n const pantonFont = new FontFace(\n 'Panton Italic',\n `url(${pantonFontSrc}) format('opentype')`,\n );\n pantonFont\n .load()\n .then((loadedFont) => {\n document.fonts.add(loadedFont);\n document.getElementById('pm-title').style.fontFamily = 'Panton Italic';\n addPantonFont(['pm-head-text', 'pm-optout-description']);\n })\n .catch((e) =>\n console.error('Something went wrong with the load of the font: ', e),\n );\n }\n\n const firstParagraph = currentLang.privacyPopin.firstParagraph\n .replace(\n '%partners%',\n `${currentLang.privacyPopin.partners}`,\n )\n .replace(\n '%vivendiGroup%',\n `${currentLang.privacyPopin.vivendiGroup}`,\n );\n const secondParagraph =\n currentLang?.privacyPopin?.secondParagraph?.replace(\n '%cookies%',\n `${currentLang.privacyPopin.cookies}`,\n ) || '';\n const thirdParagraph =\n (isPassIncluded() &&\n isPassAuthenticated() &&\n isUserCentricConsentModeActivated()\n ? currentLang.privacyPopin.thirdParagraph &&\n `

${currentLang.privacyPopin.thirdParagraph}

`\n : currentLang.privacyPopin.thirdParagraphUnlog &&\n `

${currentLang.privacyPopin.thirdParagraphUnlog}

`) ||\n '';\n\n const logo = getLogo(currentBrand);\n const theme = getTheme(currentBrand);\n\n const thirdCategoryItemsHTML = Object.entries(currentLang.privacyPopin)\n .filter(([key]) => key.startsWith('thirdCategoryItem'))\n .map(([key, value]) => `
  • ${value}
  • `)\n .join('');\n\n return `\n
    \n
    \n
    \n
    \n ${logo}\n
    \n
    \n

    ${currentLang.privacyPopin.title}

    \n

    ${firstParagraph}

    \n

    ${secondParagraph}

    \n ${thirdParagraph}\n \n
    \n
    \n
    \n

    ${currentLang.privacyPopin.firstCategoryTitle}

    \n
    \n

    \n ${currentLang.privacyPopin.firstCategoryText}\n

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n

    \n ${currentLang.privacyPopin.secondCategoryText}\n

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n

    \n ${currentLang.privacyPopin.thirdCategoryText1}\n

    \n
      \n ${thirdCategoryItemsHTML}\n
    \n

    \n ${currentLang.privacyPopin.thirdCategoryText2}\n

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n \n
    \n \n
    \n
    \n
    \n
    `;\n};\n","import { initAfterUserConsent } from '../Actions/TrackingActions';\nimport { BRAND_TIMVISION } from '../PrivacyManager/Constants';\nimport {\n addPrivacyManager,\n removePrivacyManager,\n} from '../PrivacyManager/handlePrivacyManager';\nimport { isPassAuthenticated, isPassIncluded } from '../Utils';\nimport { setAdsOptOut, setAnonymous, setStatsOptOut } from './PrivacyActions';\n\nexport const handlePopinDisplay = (\n store,\n displayPopinFromCookies,\n urlChange,\n) => {\n // Do not display the popin on the cookie policy page BUT do not make any consent choice\n if (window.location.href.includes('/cookies/')) {\n removePrivacyManager();\n return;\n }\n\n // Do not do anything if the Didomi user consent should not be collected\n if (window.Didomi?.shouldUserStatusBeCollected()) {\n return;\n }\n\n // Remove urlChange listener before making a consent choice so it is not triggered\n // after interacting with the popin\n if (urlChange) {\n urlChange.disconnect();\n }\n\n const state = store.getState();\n let displayPopin = displayPopinFromCookies;\n\n // if on TIM, don't display popin and set corresponding values of tracking cookies\n if (state.config.brand === BRAND_TIMVISION) {\n displayPopin = false;\n setAnonymous(store, true);\n setStatsOptOut(store, true);\n setAdsOptOut(store, false);\n }\n if (isPassIncluded()) {\n let waitForPassJSONExecuted = false;\n\n if (!waitForPassJSONExecuted) {\n window.waitForPassJSON(() => {\n waitForPassJSONExecuted = true;\n\n // If the user is logged in, use the value from their askForConsent to handle the popin display\n if (\n isPassAuthenticated() &&\n window.passJSON?.askForConsent !== undefined\n ) {\n displayPopin = window.passJSON?.askForConsent;\n }\n\n if (displayPopin && !state.config.forceHidePopin) {\n addPrivacyManager();\n } else {\n // The user previously agreed so fire all the tags!\n initAfterUserConsent(store, true);\n }\n });\n }\n } else if (displayPopin && !state.config.forceHidePopin) {\n addPrivacyManager();\n } else {\n // The user previously agreed so fire all the tags!\n initAfterUserConsent(store, true);\n }\n};\n","// @ts-check\nimport {\n COOKIE_NAME_ADS,\n COOKIE_NAME_ANONYMOUS,\n COOKIE_NAME_DEVICE_ID,\n COOKIE_NAME_SESSION_ID,\n COOKIE_NAME_STATS,\n IFRAME_ID,\n IFRAME_PATH_LOCAL,\n IFRAME_PATH_PROD,\n} from '../PrivacyManager/Constants';\nimport {\n cleanCookies,\n extractDeviceInfos,\n getCookie,\n getDataDomain,\n isPassAuthenticated,\n isThirdPartyWebsite,\n} from '../Utils';\nimport { handlePopinDisplay } from './ReceiveFromIframe';\n\nconst handleReceiveMessageFromIframe = (\n store,\n iframeHost,\n callbackAfterCookieSync,\n) => {\n // Listen for message from the iframe and initialize data\n window.addEventListener('message', (event) => {\n if (event.origin === iframeHost && !__LOCAL__) {\n return;\n }\n\n const {\n abTestingPopulation,\n abTestingPopulationStore,\n adsAllowed,\n anonymousAllowed,\n campaign,\n campaignType,\n externalAttribution,\n isNewSession,\n paidAttribution,\n pmSessionId,\n pmVID,\n sessionId,\n statsAllowed,\n type,\n } = event.data;\n\n let { displayPopin } = event.data;\n\n // We need to set a flag in the dataLayer to add event attributes for the first event in the session\n // In standalone mode, the dataLayer is not available\n if (\n event.data &&\n typeof ttDataLayer !== 'undefined' &&\n (type === 'cookieSync' || type === 'updateSessionId')\n ) {\n if (isNewSession) {\n ttDataLayer.setFirstEventSinceSessionStart();\n } else {\n ttDataLayer.unsetFirstEventSinceSessionStart();\n }\n }\n\n /* RECEIVE: COOKIE SYNC */\n if (event.data && type === 'cookieSync') {\n const isThirdParty = isThirdPartyWebsite();\n\n // If we are on a third party website,\n // display the popin according to the cookies stored on the host domain\n // and update the store with the right value from cookies\n const data = {\n statsAllowed: isThirdParty\n ? getCookie(COOKIE_NAME_STATS) === 'true'\n : statsAllowed,\n adsAllowed: isThirdParty\n ? getCookie(COOKIE_NAME_ADS) === 'true'\n : adsAllowed,\n anonymousAllowed: isThirdParty\n ? getCookie(COOKIE_NAME_ANONYMOUS) !== 'false'\n : anonymousAllowed,\n };\n\n if (isThirdParty) {\n displayPopin =\n !getCookie(COOKIE_NAME_STATS) &&\n !getCookie(COOKIE_NAME_ADS) &&\n !getCookie(COOKIE_NAME_ANONYMOUS);\n }\n\n const { deviceId, authenticatedFlag, trackingKey } =\n extractDeviceInfos(pmVID);\n\n // Init all variables from the iframe\n store.dispatch({\n type: 'COOKIE_SYNC',\n data,\n VID: deviceId,\n trackingKey,\n authenticatedFlagFromCookie: authenticatedFlag,\n sessionId: pmSessionId,\n campaign,\n campaignType,\n abTestingPopulation,\n abTestingPopulationStore,\n externalAttribution,\n paidAttribution,\n });\n\n // Listen to URL changes to display the popin after navigating from the cookies policy page\n let lastUrl = window.location.href;\n const urlChangeConfig = { subtree: true, childList: true };\n const urlChange = new MutationObserver(() => {\n const url = window.location.href;\n if (url !== lastUrl) {\n lastUrl = url;\n handlePopinDisplay(store, displayPopin, urlChange);\n }\n });\n\n urlChange.observe(document, urlChangeConfig);\n\n if (document.readyState === 'complete') {\n handlePopinDisplay(store, displayPopin, urlChange);\n } else {\n const currentOnload = window.onload;\n window.onload = () => {\n if (typeof currentOnload === 'function') {\n currentOnload();\n }\n\n handlePopinDisplay(store, displayPopin, urlChange);\n };\n }\n\n callbackAfterCookieSync();\n } else if (event.data && type === 'updateSessionId' && sessionId !== '') {\n /* RECEIVE: UPDATE SESSION ID */\n store.dispatch({ type: 'UPDATE_SESSION_ID', sessionId });\n }\n });\n};\n\nexport const addIframeForCookieSync = (store, callbackAfterCookieSync) => {\n const state = store.getState();\n const campaignType = state.source.campaignType;\n const campaign = state.source.campaign;\n const campaignEntity = state.source.campaignEntity;\n const campaignThematic = state.source.campaignThematic;\n /* Add iframe for cookie sync */\n // eslint-disable-next-line react/iframe-missing-sandbox\n const cookieSyncIframe = document.createElement('iframe');\n const domain = getDataDomain(state.config.brand);\n const iframeSrc = __LOCAL__\n ? IFRAME_PATH_LOCAL\n : `https://${domain}${IFRAME_PATH_PROD}`;\n let params = '';\n\n // IE 11 doesn't support this\n try {\n params = new URLSearchParams();\n if (campaignType && campaign) {\n params.append('campaign', encodeURI(campaign));\n params.append('campaignType', encodeURI(campaignType));\n params.append('campaignEntity', encodeURI(campaignEntity));\n params.append('campaignThematic', encodeURI(campaignThematic));\n }\n if (state.abTestingPopulation) {\n params.append('abTestPop', state.abTestingPopulation);\n }\n if (state.abTestingPopulationStore) {\n params.append('abTestPopStore', state.abTestingPopulationStore);\n }\n } catch (e) {\n console.log(e);\n }\n\n cookieSyncIframe.id = IFRAME_ID;\n cookieSyncIframe.src = `${iframeSrc}?${params}`;\n cookieSyncIframe.style.cssText =\n 'border: 0px; width: 0px; height: 0px; display: none; position: absolute; clip: rect(0px 0px 0px 0px);';\n cookieSyncIframe.setAttribute('aria-hidden', true);\n document.body.appendChild(cookieSyncIframe);\n\n store.dispatch({ type: 'ADD_IFRAME' }); // kind of log, no store diff\n handleReceiveMessageFromIframe(store, domain, callbackAfterCookieSync);\n};\n\nexport const setStatsOptOut = (store, statsAllowed) => {\n store.dispatch({ type: 'SET_STATS_PREF', statsAllowed: !!statsAllowed });\n};\n\nexport const setAdsOptOut = (store, adsAllowed) => {\n store.dispatch({ type: 'SET_ADS_PREF', adsAllowed: !!adsAllowed });\n};\n\nexport const setAnonymous = (store, anonymousAllowed) => {\n store.dispatch({\n type: 'SET_ANONYMOUS_PREF',\n anonymousAllowed: !!anonymousAllowed,\n });\n};\n\nexport const setStatsAndAnonymousOptOut = (store, statsAllowed) => {\n setStatsOptOut(store, statsAllowed);\n if (statsAllowed) {\n setAnonymous(store, true);\n }\n};\n\nexport const updateSessionId = (store, sessionId) => {\n store.dispatch({ type: 'UPDATE_SESSION_ID', sessionId });\n};\n\nexport const updateDeviceKey = (store, deviceKey) => {\n store.dispatch({ type: 'UPDATE_DEVICE_KEY', deviceKey });\n};\n\nexport const syncUserPrefWithIframe = (store) => {\n const state = store.getState();\n\n const data = {\n type: 'cookieSync',\n statsAllowed: state.statsAllowed,\n adsAllowed: state.adsAllowed,\n anonymousAllowed: state.anonymousAllowed,\n deviceId: state.VID,\n sessionId: state.sessionId,\n trackingKey: state.trackingKey,\n authenticatedFlag: isPassAuthenticated() ? '1' : '0',\n };\n\n if (!state.anonymousAllowed) {\n cleanCookies([COOKIE_NAME_DEVICE_ID, COOKIE_NAME_SESSION_ID]);\n }\n\n store.dispatch({ type: 'SYNC_PREF_WITH_IFRAME' });\n document.getElementById(IFRAME_ID).contentWindow.postMessage(data, '*');\n};\n\n// Extend or renew the user session when the page is visible every X minutes\n// Use case: a user is playing a video for 2 hours, we need to extend his session\nexport const handleExtendOrRenewSession = (store) => {\n const state = store.getState();\n\n if (typeof document.hidden !== 'undefined') {\n setInterval(\n () => {\n if (!document.hidden && state.anonymousAllowed) {\n extendOrRenewSessionAction();\n }\n },\n 5 * 60 * 1000 /* every 5 minutes */,\n );\n\n // Use case: when the user closes their laptop (standby mode)\n // The next morning, when they open it again, we need to renew their sessionId and not use the previous one\n document.addEventListener('visibilitychange', () => {\n if (!document.hidden && state.anonymousAllowed) {\n extendOrRenewSessionAction();\n }\n });\n }\n};\n\nexport const extendOrRenewSessionAction = () => {\n const iframe = document.getElementById(IFRAME_ID);\n if (iframe) {\n iframe.contentWindow.postMessage({ type: 'extendOrRenewSession' }, '*');\n }\n};\n\nexport const updateDeviceIdCookieAction = (\n deviceId,\n authenticatedFlag,\n trackingKey,\n) => {\n const iframe = document.getElementById(IFRAME_ID);\n if (iframe) {\n iframe.contentWindow.postMessage(\n {\n type: 'updateDeviceIdCookie',\n deviceId,\n authenticatedFlag,\n trackingKey,\n },\n '*',\n );\n }\n};\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","import { extendOrRenewSessionAction } from '../Actions/PrivacyActions';\n\n// If there is a change in consent settings, we want to synchronize it with the iframe (cookies)\nexport const consentChangeMiddleware = (_store) => (next) => (action) => {\n if (\n typeof action.statsAllowed === 'undefined' &&\n typeof action.adsAllowed === 'undefined' &&\n typeof action.anonymousAllowed === 'undefined'\n ) {\n return next(action);\n }\n next(action);\n};\n\n// Extend the sessionId's cookie with each tracking hit\nexport const extendOrRenewSessionMiddleware = (store) => (next) => (action) => {\n const state = store.getState();\n if (\n (action.type === 'SEND_PAGE_VIEW' || action.type === 'SEND_EVENT') &&\n state.anonymousAllowed\n ) {\n extendOrRenewSessionAction();\n }\n next(action);\n};\n","import { applyMiddleware, compose, createStore } from 'redux';\nimport {\n consentChangeMiddleware,\n extendOrRenewSessionMiddleware,\n} from '../Actions/Middleware';\nimport reducers from '../Actions/Reducers';\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: 'TrackingTool',\n })\n : compose;\nconst store = createStore(\n reducers,\n composeEnhancers(\n applyMiddleware(consentChangeMiddleware, extendOrRenewSessionMiddleware),\n ),\n);\n\nexport default store;\n","/*\n1st case: New visitor\n--------------------\nINIT_CONFIG\nSET_SOURCE\nADD_IFRAME\nCOOKIE_SYNC\nOPEN_PRIVACY_SETTINGS\nSET_STATS_PREF / SET_ADS_PREF then SYNC_PREF_WITH_IFRAME\nCLOSE_PRIVACY_SETTINGS\nUSER_HAS_CHOSEN\nSYNC_PREF_WITH_IFRAME\nSEND_TRACKING_AFTER_CONSENT\nSEND_TRACKING\n\n2nd case: Returning visitor\n----------------------------\nINIT_CONFIG\nSET_SOURCE\nCOOKIE_SYNC\nADD_IFRAME\nSEND_TRACKING_AFTER_CONSENT\nSEND_TRACKING\n\nOTHERS ACTION\n-------------\nTOGGLE_ENV\nTOGGLE_LOGS\n*/\n\nexport default (state, action) => {\n if (typeof state === 'undefined') {\n return {\n VID: '', // Visitor Id\n sessionId: '',\n trackingKey: '',\n abTestingPopulation: '',\n abTestingPopulationStore: '',\n config: {\n env: 'prod',\n tealiumKey: '',\n logs: false, // Log dataLayer in console\n forceHidePopin: false,\n locale: 'fr',\n zone: 'fr',\n lang: {},\n },\n statsAllowed: false,\n adsAllowed: false,\n anonymousAllowed: true,\n vendorList: {},\n source: {\n campaign: '', // Id of the campaign (channel + entity + name + date, ...)\n campaignType: '', // Internal, external, advertising, ...\n campaignEntity: '', // MARKETING, SALES, BRANDING, ...\n campaignThematic: '', // SPORTS, MOVIES, ...\n referrer: '', // document.referrer basically\n partners: '',\n externalAttribution: {},\n paidAttribution: {},\n },\n campaignData: {}, // New state for storing campaign data\n };\n }\n\n switch (action.type) {\n case 'UPDATE_TEALIUM_KEY':\n return {\n ...state,\n config: { ...state.config, tealiumKey: action.tealiumKey },\n };\n case 'INIT_CONFIG':\n return { ...state, config: action.config };\n case 'SET_SOURCE':\n return {\n ...state,\n source: {\n ...state.source,\n campaign: action.campaign,\n campaignType: action.campaignAttributionType,\n campaignEntity: action.campaignEntity,\n campaignThematic: action.campaignThematic,\n referrer: action.referrer,\n partners: action.partners,\n externalAttribution: action.externalAttribution,\n paidAttribution: action.paidAttribution,\n },\n };\n case 'COOKIE_SYNC':\n return {\n ...state,\n ...action.data,\n VID: action.VID,\n sessionId: action.sessionId,\n trackingKey: action.trackingKey,\n abTestingPopulation: action.abTestingPopulation,\n abTestingPopulationStore: action.abTestingPopulationStore,\n authenticatedFlagFromCookie: action.authenticatedFlagFromCookie,\n source: {\n ...state.source,\n campaignType: action.campaignType,\n campaign: action.campaign,\n campaignEntity: action.campaignEntity,\n campaignThematic: action.campaignThematic,\n externalAttribution: action.externalAttribution,\n paidAttribution: action.paidAttribution,\n },\n };\n case 'SET_ANONYMOUS_PREF':\n return { ...state, anonymousAllowed: action.anonymousAllowed };\n case 'SET_ADS_PREF':\n return { ...state, adsAllowed: action.adsAllowed };\n case 'SET_STATS_PREF':\n return { ...state, statsAllowed: action.statsAllowed };\n case 'TOGGLE_ENV':\n return { ...state, config: { ...state.config, env: action.env } };\n case 'TOGGLE_LOGS':\n return { ...state, config: { ...state.config, logs: action.value } };\n case 'UPDATE_SESSION_ID':\n return { ...state, sessionId: action.sessionId };\n case 'UPDATE_DEVICE_KEY':\n return { ...state, VID: action.deviceKey };\n case 'UPDATE_TRACKING_KEY':\n return { ...state, trackingKey: action.trackingKey };\n case 'UPDATE_AUTHENTICATE_FLAG':\n return {\n ...state,\n authenticatedFlagFromCookie: action.authenticatedFlagFromCookie,\n };\n case 'SET_AB_TESTING':\n return { ...state, abTestingPopulation: action.abTestingPopulation };\n case 'SET_AB_TESTING_STORE':\n return {\n ...state,\n abTestingPopulationStore: action.abTestingPopulationStore,\n };\n case 'SET_CAMPAIGN_DATA':\n return {\n ...state,\n campaignData: action.campaignData,\n };\n case 'RESET_CAMPAIGN_DATA':\n return {\n ...state,\n campaignData: {},\n };\n\n case 'ADD_IFRAME':\n case 'SEND_PAGE_VIEW':\n case 'SEND_EVENT':\n case 'SYNC_PREF_WITH_IFRAME':\n case 'OPEN_PRIVACY_SETTINGS':\n case 'CLOSE_PRIVACY_SETTINGS':\n case 'SEND_TRACKING_AFTER_CONSENT':\n default:\n return state;\n }\n};\n","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","import { naturalSort, replaceDiacritics } from '../Utils';\n\n/**\n * Constructor - Initialize the dataLayer\n */\nexport default class TtDataLayer {\n constructor(channel) {\n // DataLayer initialisation\n this.dl = {\n channel,\n };\n }\n\n reset() {\n this.dl = {\n channel: this.dl.channel,\n };\n }\n\n printDataLayerInConsole() {\n if (typeof console.table === 'function') {\n // convert DataLayer to array for a better console.table\n const dataLayer = this.dl; // we use a ref because the this is not the same in map function\n const dataLayerInArray = Object.keys(dataLayer).map((key) => {\n // stringify events only for display and return new sub array\n return [\n key,\n key === 'events' ? dataLayer.events.join(',') : dataLayer[key],\n ];\n });\n // sort by alphanum\n dataLayerInArray.sort(naturalSort);\n\n console.table(dataLayerInArray);\n } else {\n console.log(this.dl);\n }\n }\n\n add(property, value) {\n if (value) {\n this.dl[property] = replaceDiacritics(value); // we need to remove accents for every field\n }\n }\n\n addOrRemoveIfEmpty(property, value) {\n if (value) {\n this.add(property, value);\n } else {\n this.remove(property);\n }\n }\n\n remove(property) {\n if (this.dl[property]) {\n delete this.dl[property];\n }\n }\n\n mergeObjectInDataLayer(object) {\n if (object) {\n // For retro compatibility issues. Website used to pass string joined with coma.\n if (typeof object.events === 'string') {\n object.events = object.events === '' ? [] : object.events.split(',');\n }\n // Merge all object into the dataLayer\n Object.keys(object).forEach((key) => {\n this.add(key, object[key]);\n });\n }\n }\n\n get(property) {\n if (property && this.dl[property]) {\n return this.dl[property];\n }\n return null;\n }\n\n getAll() {\n return this.dl;\n }\n\n clone() {\n const clonedObject = {};\n const dataLayer = this.getAll();\n // Copy everyVar into the dataLayer object.\n Object.keys(dataLayer).forEach((key) => {\n clonedObject[key] = dataLayer[key];\n });\n\n return clonedObject;\n }\n\n addEvent(eventsToAdd) {\n let events = this.get('events') || [];\n let newEventsToAdd = [];\n\n if (!eventsToAdd || eventsToAdd.length === 0) {\n return events;\n }\n\n // For retro compatibility issues. Website used to pass string joined with coma.\n if (typeof events === 'string') {\n events = events.split(',');\n }\n if (typeof eventsToAdd === 'string') {\n newEventsToAdd = eventsToAdd.split(',');\n }\n\n events = events.concat(newEventsToAdd);\n\n // Add the event to the array\n this.add('events', events);\n\n return events;\n }\n\n // Generate a number between 0 and 100 to downsample if needed (ex: select only event from 0 to 50 for half of them)\n addSampling() {\n this.add('sampling', Math.floor(Math.random() * 100) + 1);\n }\n\n // Set a flag to identify if the current dataLayer is the first event after the library has loaded\n setFirstEventSinceLoad() {\n this.firstEventSinceLoad = true;\n }\n\n // Unset a flag to identify if the current dataLayer is the first event after the library has loaded\n unsetFirstEventSinceLoad() {\n this.firstEventSinceLoad = false;\n }\n\n // Get whether the current dataLayer is for the first event after the library has loaded\n isFirstEventSinceLoad() {\n return !!this.firstEventSinceLoad;\n }\n\n // Set a flag to identify if the current dataLayer is the first event of the current SESSION\n setFirstEventSinceSessionStart() {\n this.firstEventSinceSessionStart = true;\n }\n\n // Unset a flag to identify if the current dataLayer is the first event the current SESSION\n unsetFirstEventSinceSessionStart() {\n this.firstEventSinceSessionStart = false;\n }\n\n // Get whether the current dataLayer is for the first event of the current SESSION or not\n isFirstEventSinceSessionStart() {\n return !!this.firstEventSinceSessionStart;\n }\n}\n","export default class QueueManagerForLoadEvent {\n /**\n * Constructor - Initialize the TMS queue manager\n */\n constructor() {\n this.queue = [];\n }\n\n /**\n * Flush the array with the queue\n */\n resetQueue() {\n this.queue = [];\n }\n\n /**\n * A function can subscribe to the queue\n */\n addToQueue(fn) {\n if (fn) {\n this.queue.push(fn);\n\n // We call the function for each pageView sent before the callback was added\n if (trackingQueue && trackingQueue.length > 0) {\n trackingQueue.forEach(() => fn());\n }\n }\n }\n\n /**\n * A function can trigger the queued functions\n * Use a \"setTimeout\" to perform a \"process.nextTick\"\n */\n exec() {\n setTimeout(\n function () {\n this.queue.forEach(function (fn) {\n fn();\n });\n }.bind(this),\n );\n }\n}\n","/**\n * PrivacyManager's total optout function\n */\nimport {\n setAdsOptOut,\n setAnonymous,\n setStatsOptOut,\n syncUserPrefWithIframe,\n updateDeviceIdCookieAction,\n updateDeviceKey,\n updateSessionId,\n} from '../Actions/PrivacyActions';\nimport {\n initAfterUserConsent,\n sendEvent,\n sendPageView,\n storeUserChoiceOnTopDomainCookie,\n} from '../Actions/TrackingActions';\nimport {\n COOKIE_NAME_ADS,\n COOKIE_NAME_ANONYMOUS,\n COOKIE_NAME_DEVICE_ID,\n COOKIE_NAME_SESSION_ID,\n COOKIE_NAME_STATS,\n DEFAULT_COOKIE_DURATION,\n SESSION_ID_DURATION_DAYS,\n} from '../PrivacyManager/Constants';\nimport { cleanCookies, getCookie, setCookie } from '../Utils';\n\n/**\n * Initializes tracking tools and assigns functions to the `window` object for global access.\n */\nexport const initTrackingtoolHelper = () => {\n Object.assign(window, {\n getAnonymousMeasure,\n getTealiumKey,\n setAdsConsent,\n setAnonymousMeasure,\n setStatsConsent,\n setTealiumKey,\n ttSetUserConsent,\n ttSetSessionId,\n ttSetDeviceKey,\n });\n};\n\n/**\n * Sets the user's anonymous measurement value\n * - If **anonymousAllowed=true** then we can send anonymous data for analytics\n * - If **anonymousAllowed=false** then we do not send any data\n * @param {boolean} anonymousAllowed - The anonymous measurement value\n */\nconst setAnonymousMeasure = (anonymousAllowed) => {\n const store = window.ttStore;\n\n if (anonymousAllowed) {\n Object.assign(window, {\n sendPageView,\n sendEvent,\n });\n } else {\n window.sendPageView = () => {};\n window.sendEvent = () => {};\n cleanCookies([COOKIE_NAME_DEVICE_ID, COOKIE_NAME_SESSION_ID]);\n }\n\n setCookie(\n COOKIE_NAME_ANONYMOUS,\n anonymousAllowed.toString(),\n DEFAULT_COOKIE_DURATION,\n );\n setAnonymous(store, anonymousAllowed);\n if (!anonymousAllowed) {\n setStatsOptOut(store, false);\n }\n\n syncUserPrefWithIframe(store);\n // Write cookie session on the main domain (in addition to the iframe's cookies)\n storeUserChoiceOnTopDomainCookie(store);\n\n const state = store.getState();\n document.dispatchEvent(\n new CustomEvent('userChangedConsent', { detail: state }),\n );\n};\n\n/**\n * Returns the user's anonymous value stored in the **anonymous** cookie, or **true** if there isn't any cookie stored.\n * @returns {boolean} - Returns true if anonymous tracking is allowed, false otherwise.\n */\nconst getAnonymousMeasure = () => getCookie(COOKIE_NAME_ANONYMOUS) !== 'false';\n\n/**\n * Retrieves the Tealium key from the tracking store state.\n * @returns {string|undefined} - Returns the Tealium key or undefined if not available.\n */\nconst getTealiumKey = () => {\n const store = window.ttStore;\n const state = store.getState();\n\n return state.config.tealiumKey;\n};\n\n/**\n * Sets the user's Tealium key in the store state.\n * @param {string} tealiumKey - The Tealium key to be set.\n */\nconst setTealiumKey = (tealiumKey) => {\n const store = window.ttStore;\n return store.dispatch({ type: 'UPDATE_TEALIUM_KEY', tealiumKey });\n};\n\n/**\n * Sets the user's stats consent value.\n * @param {boolean} statsAllowed - True to allow analytics measurement, false to disallow.\n */\nconst setStatsConsent = (statsAllowed) => {\n const store = window.ttStore;\n setCookie(\n COOKIE_NAME_STATS,\n statsAllowed.toString(),\n DEFAULT_COOKIE_DURATION,\n );\n setStatsOptOut(store, statsAllowed);\n\n syncUserPrefWithIframe(store);\n // Write cookie session on the main domain (in addition to the iframe's cookies)\n storeUserChoiceOnTopDomainCookie(store);\n\n const state = store.getState();\n document.dispatchEvent(\n new CustomEvent('userChangedConsent', { detail: state }),\n );\n};\n\n/**\n * Sets the user's ads consent value.\n * @param {boolean} adsAllowed - True to allow ads, false to disallow.\n */\nconst setAdsConsent = (adsAllowed) => {\n const store = window.ttStore;\n setCookie(COOKIE_NAME_ADS, adsAllowed.toString(), DEFAULT_COOKIE_DURATION);\n setAdsOptOut(store, adsAllowed);\n\n syncUserPrefWithIframe(store);\n // Write cookie session on the main domain (in addition to the iframe's cookies)\n storeUserChoiceOnTopDomainCookie(store);\n\n const state = store.getState();\n document.dispatchEvent(\n new CustomEvent('userChangedConsent', { detail: state }),\n );\n};\n\n/**\n * Sets the user's session ID.\n * @param {string} sessionId - The session ID to set.\n */\nconst ttSetSessionId = (sessionId) => {\n const store = window.ttStore;\n\n if (sessionId) {\n // clean session ID cookies and set the new session ID\n cleanCookies([COOKIE_NAME_SESSION_ID]);\n setCookie(\n COOKIE_NAME_SESSION_ID,\n sessionId,\n SESSION_ID_DURATION_DAYS,\n window.location.host.replace('www.', '.'),\n );\n\n updateSessionId(store, sessionId);\n }\n};\n\n/**\n * Sets the user's Device Key.\n * @param {string} deviceKey - The Device Key to set.\n */\nconst ttSetDeviceKey = (deviceKey) => {\n const store = window.ttStore;\n const state = store.getState();\n\n const { authenticatedFlag, trackingKey } = state;\n updateDeviceKey(store, deviceKey);\n updateDeviceIdCookieAction(deviceKey, authenticatedFlag, trackingKey);\n};\n\n/**\n * Sets the user's consent values.\n * @param {Object} consentData - An object containing `anonymousAllowed`, `statsAllowed`, and `adsAllowed` flags.\n */\nconst ttSetUserConsent = ({ anonymousAllowed, statsAllowed, adsAllowed }) => {\n const store = window.ttStore;\n\n // Set the user's consent values analytics, trackingPub, and anonymousTracking\n setAnonymousMeasure(anonymousAllowed);\n setAdsConsent(adsAllowed);\n setStatsConsent(statsAllowed);\n\n // Send Popin display and interaction events\n sendPopinDisplayEvent(statsAllowed, statsAllowed);\n sendPopinInteractionEvent(statsAllowed, adsAllowed);\n\n // CANAL+ respects the GDPR regulation\n // We add the tracking ONLY if the user expressed their consent\n initAfterUserConsent(store, true);\n};\n\n/**\n * Sets campaign information for tracking purposes.\n * @param {Object} campaignData - An object containing campaign details (e.g., `utm_source`, `utm_medium`, `utm_campaign`, `hostname`, `origref`).\n */\nconst ttSetCampaign = (campaignData = {}) => {\n const store = window.ttStore;\n // dispatch action to update campaign data in the store\n store.dispatch({ type: 'SET_CAMPAIGN_DATA', campaignData });\n};\n\n/**\n * Sets tracking data with specific actions based on the type of data.\n * @param {Object|string} payload - Data payload for the tracking action.\n * - If `type` is `\"campaign\"`, `payload` should be an object containing campaign details:\n * - `{string} utm_source` - The source of the campaign (e.g., \"google\").\n * - `{string} utm_medium` - The medium of the campaign (e.g., \"cpc\").\n * - `{string} utm_campaign` - The name of the campaign.\n * - If `type` is `\"sessionId\"`, `payload` should be a `{string}` representing the session ID.\n * - If `type` is `\"userConsent\"`, `payload` should be an object containing consent flags:\n * - `{boolean} anonymousAllowed` - Indicates if anonymous measurement is allowed.\n * - `{boolean} statsAllowed` - Indicates if analytics measurement is allowed.\n * - `{boolean} adsAllowed` - Indicates if ads are allowed.\n * @param {string} [type] - Optional type to specify the kind of data update. Options: \"campaign\", \"sessionId\", \"userConsent\".\n */\nwindow.ttSetTrackingData = (payload, type) => {\n switch (type) {\n case 'campaign':\n if (\n typeof payload !== 'object' ||\n !payload.utm_source ||\n !payload.utm_medium ||\n !payload.utm_campaign\n ) {\n console.warn(\n 'Invalid payload for \"campaign\" type. Expected an object with mandatory properties: utm_source, utm_medium, utm_campaign.',\n );\n return;\n }\n ttSetCampaign(payload);\n break;\n\n case 'sessionId':\n if (typeof payload !== 'string') {\n console.warn(\n 'Invalid payload for \"sessionId\" type. Expected a string representing the session ID.',\n );\n return;\n }\n ttSetSessionId(payload);\n break;\n\n case 'deviceKey':\n if (typeof payload !== 'string') {\n console.warn(\n 'Invalid payload for \"deviceKey\" type. Expected a string representing the Device Key.',\n );\n return;\n }\n ttSetDeviceKey(payload);\n break;\n\n case 'userConsent':\n if (\n typeof payload !== 'object' ||\n typeof payload.anonymousAllowed !== 'boolean' ||\n typeof payload.statsAllowed !== 'boolean' ||\n typeof payload.adsAllowed !== 'boolean'\n ) {\n console.warn(\n 'Invalid payload for \"userConsent\" type. Expected an object with boolean properties: anonymousAllowed, statsAllowed, adsAllowed.',\n );\n return;\n }\n ttSetUserConsent(payload);\n break;\n\n default:\n console.warn('Unknown tracking data type:', type);\n console.warn(\n 'You can use one of the following types: campaign, sessionId, userConsent',\n );\n }\n};\n","/**\n * Tracking Tool for CANAL+ Group\n */\nimport {\n initConfig,\n toggleLogs,\n toggleStaging,\n} from '../Actions/ConfigActions';\nimport {\n addIframeForCookieSync,\n handleExtendOrRenewSession,\n setAdsOptOut,\n setStatsAndAnonymousOptOut,\n} from '../Actions/PrivacyActions';\nimport store from '../Actions/store';\nimport DataLayer from '../DataLayer/DataLayer';\nimport { initDataLayerAfterLoad } from '../DataLayer/EnrichDataLayer';\nimport QueueManagerForLoadEvent from '../DataLayer/QueueManagerForLoadEvent';\nimport { addTealiumScript } from '../Integrations/Tealium';\nimport { initTrackingtoolHelper } from '../PrivacyManager/helper';\nimport { getBrandQueryString } from '../Utils';\n\nconst queueManagerForLoadEvent = new QueueManagerForLoadEvent();\n\n/**\n * Get config from script tag included in host page\n */\nconst scriptTag =\n document.currentScript ||\n document.getElementById('tt-script') ||\n document.getElementById('om-tracking'); // 'om-tracking' is for retrocompatibility\nconst channel = scriptTag?.getAttribute('data-channel') || '';\nconst tealiumKey = scriptTag?.getAttribute('data-tealium-key');\nconst locale = scriptTag?.getAttribute('data-locale') || 'fr'; // Default value set to FR for retrocompatibility\nconst zone = scriptTag?.getAttribute('data-zone') || 'fr'; // Default value set to FR for retrocompatibility\nconst includePopin = scriptTag?.getAttribute('data-include-cnil') !== null;\nconst src = scriptTag?.getAttribute('src');\nconst brandQueryString = getBrandQueryString(src);\nconst brand = scriptTag?.getAttribute('data-brand') || brandQueryString || '';\nconst environment = scriptTag?.getAttribute('data-environment') || 'prod';\n\n// Check if the conf is a copy-paste from the doc ;)\nif (tealiumKey === 'EXAMPLE' || channel === 'EXAMPLE') {\n throw new Error('Config is missing or example value used for configuration.');\n}\n// Check if the user has already given his consent and if it's Didomi\n\n/*\n 1- Website fills up an array of tracking objects and events (window.trackingQueue, window.eventQueue, window.consentCallbackQueue)\n 2- Config, store and dataLayer are intialized\n 3- Iframe is added to sync user prefs stored in cookies and store is initialized\n 4- We wait for the user's consent expressed with an interaction (click). Once the user has interacted, we define new function sendPageView & sendEvent\n 5- Tealium scripts are loaded but not fired\n 6- Extend or renew the user session when the page is visible every X minutes\n*/\n\n// 2- Config, store and dataLayer are intialized\nconst ttDataLayer = new DataLayer(channel);\n\ninitConfig(store, includePopin, tealiumKey, zone, locale, brand, environment);\n\n// Expose actions on window to be called by user in the console or by the app whenever they want\nwindow.ttStore = store;\nwindow.ttToggleLogs = toggleLogs;\nwindow.ttToggleStaging = toggleStaging;\nwindow.setPreferenceAnalytics = (value) =>\n setStatsAndAnonymousOptOut(store, value);\nwindow.setPreferenceAds = (value) => setAdsOptOut(store, value);\nwindow.queueManagerForLoadEvent = queueManagerForLoadEvent; // The queue will be executed at each sendPageView\nwindow.ttDataLayer = ttDataLayer;\n\ninitDataLayerAfterLoad({ store, pageURL: window.location.href });\ninitTrackingtoolHelper();\n\n// 3- Iframe is added to sync user prefs stored in cookies\naddIframeForCookieSync(store, () => {\n // 4- Stop the script if the user has not given his consent only for Didomi\n if (window.Didomi && window.Didomi?.shouldUserStatusBeCollected()) {\n return;\n }\n\n // 5- Tealium scripts are loaded even without the user's consent BUT not fired\n if (tealiumKey) {\n addTealiumScript(store);\n }\n\n // 6- Extend or renew the user session when the page is visible every X minutes\n // Use case: a user is playing a video for 2 hours, we need to extend his session\n handleExtendOrRenewSession(store);\n});\n","import { getLangConfig } from '../PrivacyManager/lang';\n\nexport const initConfig = (\n store,\n includePopin,\n tealiumKey,\n zone,\n locale,\n brand,\n environment,\n) => {\n let logs;\n let stagingEnv;\n\n // Init the staging config. Try / catch because we don't trust sessionStorage\n try {\n logs = sessionStorage.getItem('TMSdebugLogs') || false;\n stagingEnv = sessionStorage.getItem('TMSstaging') || false;\n } catch (e) {\n logs = false;\n stagingEnv = false;\n }\n\n const config = {\n env: stagingEnv ? 'dev' : 'prod',\n logs: logs === 'true',\n tealiumKey,\n forceHidePopin: !includePopin,\n zone,\n locale,\n lang: getLangConfig(zone, locale),\n brand,\n environment,\n };\n\n store.dispatch({ type: 'INIT_CONFIG', config });\n};\n\nexport const toggleLogs = () => {\n if (!sessionStorage.getItem('TMSdebugLogs')) {\n sessionStorage.setItem('TMSdebugLogs', true);\n console.warn('Logs enabled');\n window.ttStore.dispatch({ type: 'TOGGLE_LOGS', value: true });\n } else {\n sessionStorage.removeItem('TMSdebugLogs');\n console.warn('Logs disabled');\n window.ttStore.dispatch({ type: 'TOGGLE_LOGS', value: false });\n }\n};\n\nexport const toggleStaging = () => {\n if (!sessionStorage.getItem('TMSstaging')) {\n sessionStorage.setItem('TMSstaging', true);\n console.warn(\n 'Staging enabled for the TMS. Please, reload the page for immediate effect.',\n );\n window.ttStore.dispatch({ type: 'TOGGLE_ENV', value: true });\n } else {\n sessionStorage.removeItem('TMSstaging');\n console.warn(\n 'Staging disabled for the TMS. Please, reload the page for immediate effect.',\n );\n window.ttStore.dispatch({ type: 'TOGGLE_ENV', value: false });\n }\n};\n"],"names":["module","exports","item","content","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","concat","sourceMapping","join","_typeof","_regeneratorRuntime","e","__esModule","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","this","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","___CSS_LOADER_EXPORT___","id","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","cssWithMappingToString","list","toString","map","needLayer","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","key","get","obj","prop","configs","getLangConfig","choosenZone","choosenLocale","filteredConfigs","filter","el","zones","includes","configForZoneAndLocale","locale","configForLocale","AFFILIATION","BANNER","BRAND_ORANGE","BRAND_CANALBOX","BRAND_MMC","BRAND_TIMVISION","BRAND_TVCARAIBES","COOKIE_NAME_ADS","COOKIE_NAME_ANONYMOUS","COOKIE_NAME_DEVICE_ID","COOKIE_NAME_SESSION_ID","COOKIE_NAME_STATS","DATA_DOMAIN","DEFAULT_COOKIE_DURATION","DISPLAY","EMAIL","IFRAME_ID","INTERN_CAMPAIGN","NATURAL_SEARCH","OPEN_PARTNER","OTHER_REF_DOMAINS","PAID_SEARCH","PARTNERSHIP","PUSH_NOTIF","SESSION_ID_DURATION_DAYS","SMS","SOCIAL_NETWORK","SOCIAL_ORGANIC","SOCIAL_PAID","TV_BRANDS","VIDEO","LAUNCH_APP","_arrayLikeToArray","Array","_unsupportedIterableToArray","from","test","_slicedToArray","isArray","isPassIncluded","window","waitForPassJSON","isPassForm","isPassAuthenticated","passJSON","subscriberId","accountId","isAuthenticated","isUserCentricConsentModeActivated","askForConsent","getQueryParam","param","pathParam","qd","path","location","search","substr","split","decodeURIComponent","getAllQueryParams","query","startsWith","reduce","params","_param$split2","replace","readCookie","cookieName","escape","b","document","cookie","cookieFound","indexOf","substring","writeCookie","hostname","toUpperCase","parseInt","Date","setTime","getTime","getYear","setYear","toGMTString","naturalSort","as","bs","a1","b1","rx","rd","rz","Number","String","toLowerCase","match","shift","accentMap","getTopDomain","hostName","nameSplit","isThirdPartyWebsite","_window","getCookie","cookiename","cookiestring","RegExp","exec","setCookie","days","domain","expires","cookieDomain","date","toUTCString","cleanCookies","cookies","addClass","elements","classToAdd","element","elementClasses","getAttribute","classes","setAttribute","removeClass","classToRemove","getDataApiDomain","brand","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","_extends","assign","bind","props","USER_AGENT","EMPTY","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","UA_BROWSER","UA_CPU","UA_DEVICE","UA_ENGINE","UA_OS","UA_RESULT","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","MAJOR","MODEL","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","XR","EMBEDDED","INAPP","BRANDS","FORMFACTORS","FULLVERLIST","PLATFORM","PLATFORMVER","BITNESS","CH_HEADER","CH_HEADER_FULL_VER_LIST","CH_HEADER_ARCH","CH_HEADER_BITNESS","CH_HEADER_FORM_FACTORS","CH_HEADER_MOBILE","CH_HEADER_MODEL","CH_HEADER_PLATFORM","CH_HEADER_PLATFORM_VER","CH_ALL_VALUES","AMAZON","APPLE","ASUS","BLACKBERRY","GOOGLE","HUAWEI","LENOVO","HONOR","LG","MICROSOFT","MOTOROLA","NVIDIA","ONEPLUS","OPPO","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","CHROME","CHROMIUM","CHROMECAST","FIREFOX","OPERA","FACEBOOK","SOGOU","PREFIX_MOBILE","SUFFIX_BROWSER","WINDOWS","NAVIGATOR","navigator","NAVIGATOR_UADATA","userAgentData","enumerize","arr","enums","has","str1","str2","lowerize","isString","isExtensions","deep","val","itemListToArray","header","tokens","strip","token","trim","version","str","majorize","setProps","propName","pattern","stripQuotes","len","rgxMapper","ua","arrays","j","q","matches","regex","strMapper","windowsVersionMap","formFactorsMap","defaultRegexes","browser","cpu","device","engine","EDGE","os","defaultProps","init","isIgnore","isIgnoreRgx","createIData","itemType","init_props","is_ignoreProps","is_ignoreRgx","toString_props","IData","getItem","withClientHints","getHighEntropyValues","res","setCH","UACHData","parseCH","withFeatureCheck","detectFeature","is","strToCheck","cb","that","IDataResolve","resolveData","uach","isHttpUACH","UAItem","rgxMap","uaCH","set","ch","userAgent","brave","isBrave","standalone","maxTouchPoints","detect","parseUA","prevName","brands","brandName","brandVersion","archName","reParse","vendor","ff","idx","osName","osVersion","parse","UAParser","extensions","headers","append","kv","getResult","httpUACH","regexMap","defaultRgx","mergedRgx","extraRgx","extend","createItemFunc","getBrowser","getCPU","getDevice","getEngine","getOS","setUA","BROWSER","CPU","DEVICE","ENGINE","OS","EXTERNAL_ATTRIBUTION_TYPES","PAID_ATTRIBUTION_TYPES","thirtyDays","enrichDataLayer","store","trackingObject","state","getState","ttDataLayer","add","config","environment","pageName","channel","VID","trackingKey","sessionId","isFirstEventSinceSessionStart","href","addSearchInfo","addPassInfo","addBrowserInfo","mergeObjectInDataLayer","addReferrerAndCampaignSource","campaignData","addCustomInfo","queries","referrer","origref","referringDomain","URL","console","log","partners","aff","campaignAttributionType","campaign","campaignThematic","campaignEntity","extractCampaignDataFromQueryParams","cmpChannel","entity","campaignType","thematic","target","support","crea","placement","part","trackingCampaign","iframe","utmMedium","utm_medium","utmSource","utm_source","utmContent","utm_content","utmCampaign","utm_campaign","defaultCampaignValueForReferrer","formatedCampaign","_ref","existingCampaigns","storedCampaigns","localStorage","error","firstCampaign","timestamp","now","newCampaign","unshift","trackingCampaignSliced","setItem","setCampaignInLocalStorage","_getAttributions","externalAttribution","paidAttribution","campaigns","warn","getCampaignFromLocalStorage","getAttributions","dispatch","getElementById","contentWindow","postMessage","queryParams","sc_cmpid","clkid","cpmid","kwid","sc_intcmp","sc_openpartner","cmp_channel","cmp_entity","cmp_type","cmp_thematic","cmp_target","cmp_date","cmp_name","cmp_support","cmp_crea","cmp_placement","keyword","count","addEvent","addLevelInfo","level1","hierarchicalArray","level2","level3","level4","level5","currentIndex","nextIndex","micros","microEligibility","partner","collectUserData","subscriberType","id_advertising","id_analytics","offerMatches","offers","isSubscriber","uaparser","model","deviceBrand","deviceCategory","viewportWidth","Math","max","documentElement","clientWidth","innerWidth","_state$source$paidAtt","_state$source$paidAtt2","_state$source$externa","_state$source$externa2","source","browserHeight","innerHeight","browserWidth","resolution","screen","width","height","zone","abTestingPopulation","abTestingPopulationStore","addSampling","statsAllowed","adsAllowed","productArray","parseFloat","utag_data","utag_cfg_ovrd","noview","nocookie","updateUtagData","_window$didomiState","_window$didomiState2","clone","didomiState","didomiVendorsEnabled","utag","view","addEvents","sendTracking","_callee","_window$didomiState3","_window$didomiState4","_context","sendRequest","tealiumKey","_x","_x2","_ref2","_callee2","traceId","event","_context2","floor","ttStore","fetch","body","_x3","sendEvent","_ref3","_callee3","callback","_ttDataLayer$get","_context3","_x4","_x5","sendPageView","initParam","_trackingObject$data","_trackingObject$data2","anonymousAllowed","page_name","isFirstEventSinceLoad","tealium","logs","printDataLayerInConsole","queueManagerForLoadEvent","trackingQueue","unsetFirstEventSinceLoad","unsetFirstEventSinceSessionStart","events","waitForUserConsent","storeUserChoiceOnTopDomainCookie","initAfterUserConsent","hasAlreadyConsented","syncUserPrefWithIframe","newTrackingKey","random","MAX_SAFE_INTEGER","_window$passJSON","_window$passJSON2","_window$passJSON4","_window$passJSON5","_window$passJSON7","_window$passJSON8","_window$passJSON3","_window$passJSON6","_window$passJSON9","needsIframeSync","analytics","setStatsOptOut","trackingPub","setAdsOptOut","anonymousTracking","setAnonymous","authenticatedFlagFromCookie","updateDeviceIdCookieAction","execTrackingQueueAndDispatchConsent","eventQueue","consentCallbackQueue","dispatchEvent","CustomEvent","detail","_toConsumableArray","vendorListSrc","getVendorList","json","vendors","lang","customVendors","t0","addPrivacyManager","_document$getElementB","style","createElement","innerHTML","css","head","appendChild","pmElement","currentLang","currentBrand","_currentLang$privacyP","FontFace","load","loadedFont","classnames","fonts","fontFamily","classname","getElementsByClassName","firstParagraph","privacyPopin","partnersLink","a11y","vivendiGroupLink","vivendiGroup","secondParagraph","cookiePolicyLink","cookiesLink","thirdParagraph","thirdParagraphUnlog","logo","getLogo","theme","getTheme","thirdCategoryItemsHTML","_objectEntries","_ref4","popinTitle","title","learnMore","firstCategoryTitle","firstCategoryText","secondCategoryTitle","secondCategoryText","thirdCategoryTitle","thirdCategoryText1","thirdCategoryText2","vendorListButton","saveAndCloseButton","acceptButton","refuseButton","declineButton","renderPopin","insertBefore","firstChild","sendPopinDisplayEvent","displayOptoutOptions","optoutBtnArrowDown","optoutBtnArrowUp","optoutOptionsBlock","cbOptoutStats","cbOptoutAds","displayVendorsButton","vendorList","vendorListBtnArrowDown","vendorListBtnArrowUp","declineBtn","refuseBtn","acceptBtn","exitBtn","exitContainer","focus","trapFocus","_document$querySelect","focusableEls","querySelectorAll","firstFocusableElement","lastFocusableElement","querySelector","isTabPressed","activeElement","preventDefault","shiftKey","addEventListener","checked","onkeydown","handlePopinButtonClick","sendPopinInteractionEvent","setStatsAndAnonymousOptOut","removeEventListener","closePrivacyManager","onclick","className","rows","policyUrl","newWindow","vendorTableTitle","renderVendors","stats","ads","privacyManager","Event","parentNode","removeChild","launchPrivacyManager","handlePopinDisplay","displayPopinFromCookies","urlChange","_window$Didomi","_document$getElementB2","remove","Didomi","shouldUserStatusBeCollected","disconnect","displayPopin","waitForPassJSONExecuted","forceHidePopin","deviceId","authenticatedFlag","extendOrRenewSessionAction","toPropertyKey","toPrimitive","_defineProperty","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","defineProperties","formatProdErrorMessage","code","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","compose","_len","funcs","_key","createStore","reducer","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","subscribe","listener","isSubscribed","index","splice","action","proto","isPlainObject","listeners","replaceReducer","nextReducer","outerSubscribe","observer","observeState","unsubscribe","env","deviceKey","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","middlewares","_dispatch","middlewareAPI","chain","middleware","applyMiddleware","_store","_classCallCheck","_defineProperties","_createClass","TtDataLayer","dl","table","dataLayer","dataLayerInArray","sort","property","ret","replaceDiacritics","object","_this","clonedObject","getAll","eventsToAdd","newEventsToAdd","firstEventSinceLoad","firstEventSinceSessionStart","QueueManagerForLoadEvent","queue","fn","setTimeout","setAnonymousMeasure","setStatsConsent","setAdsConsent","ttSetSessionId","host","updateSessionId","ttSetDeviceKey","updateDeviceKey","ttSetUserConsent","ttSetTrackingData","payload","src","queryStrings","scriptTag","currentScript","includePopin","brandQueryString","lastIndexOf","URLSearchParams","DataLayer","stagingEnv","sessionStorage","initConfig","ttToggleLogs","removeItem","ttToggleStaging","setPreferenceAnalytics","setPreferenceAds","pageURL","setFirstEventSinceLoad","initDataLayerAfterLoad","getAnonymousMeasure","getTealiumKey","setTealiumKey","cookieSyncIframe","getDataDomain","iframeSrc","encodeURI","cssText","iframeHost","callbackAfterCookieSync","origin","_event$data","isNewSession","pmSessionId","pmVID","setFirstEventSinceSessionStart","isThirdParty","_extractDeviceInfos","cookieSplit","extractDeviceInfos","lastUrl","MutationObserver","url","observe","subtree","childList","readyState","currentOnload","onload","handleReceiveMessageFromIframe","_state$config","script","addTealiumScript","hidden","setInterval","handleExtendOrRenewSession","addIframeForCookieSync"],"sourceRoot":""}