/*pako 1.0.10 nodeca/pako */ !function(t) { if ("object" == typeof exports && "undefined" != typeof module) module.exports = t(); else if ("function" == typeof define && define.amd) define([], t); else { ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).pako = t() } }(function() { return function i(s, h, l) { function o(e, t) { if (!h[e]) { if (!s[e]) { var a = "function" == typeof require && require; if (!t && a) return a(e, !0); if (_) return _(e, !0); var n = new Error("Cannot find module '" + e + "'"); throw n.code = "MODULE_NOT_FOUND", n } var r = h[e] = { exports: {} }; s[e][0].call(r.exports, function(t) { return o(s[e][1][t] || t) }, r, r.exports, i, s, h, l) } return h[e].exports } for (var _ = "function" == typeof require && require, t = 0; t < l.length; t++) o(l[t]); return o }({ 1: [function(t, e, a) { "use strict"; var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; a.assign = function(t) { for (var e, a, n = Array.prototype.slice.call(arguments, 1); n.length; ) { var r = n.shift(); if (r) { if ("object" != typeof r) throw new TypeError(r + "must be non-object"); for (var i in r) e = r, a = i, Object.prototype.hasOwnProperty.call(e, a) && (t[i] = r[i]) } } return t } , a.shrinkBuf = function(t, e) { return t.length === e ? t : t.subarray ? t.subarray(0, e) : (t.length = e, t) } ; var r = { arraySet: function(t, e, a, n, r) { if (e.subarray && t.subarray) t.set(e.subarray(a, a + n), r); else for (var i = 0; i < n; i++) t[r + i] = e[a + i] }, flattenChunks: function(t) { var e, a, n, r, i, s; for (e = n = 0, a = t.length; e < a; e++) n += t[e].length; for (s = new Uint8Array(n), e = r = 0, a = t.length; e < a; e++) i = t[e], s.set(i, r), r += i.length; return s } } , i = { arraySet: function(t, e, a, n, r) { for (var i = 0; i < n; i++) t[r + i] = e[a + i] }, flattenChunks: function(t) { return [].concat.apply([], t) } }; a.setTyped = function(t) { t ? (a.Buf8 = Uint8Array, a.Buf16 = Uint16Array, a.Buf32 = Int32Array, a.assign(a, r)) : (a.Buf8 = Array, a.Buf16 = Array, a.Buf32 = Array, a.assign(a, i)) } , a.setTyped(n) } , {}], 2: [function(t, e, a) { "use strict"; var l = t("./common") , r = !0 , i = !0; try { String.fromCharCode.apply(null, [0]) } catch (t) { r = !1 } try { String.fromCharCode.apply(null, new Uint8Array(1)) } catch (t) { i = !1 } for (var o = new l.Buf8(256), n = 0; n < 256; n++) o[n] = 252 <= n ? 6 : 248 <= n ? 5 : 240 <= n ? 4 : 224 <= n ? 3 : 192 <= n ? 2 : 1; function _(t, e) { if (e < 65534 && (t.subarray && i || !t.subarray && r)) return String.fromCharCode.apply(null, l.shrinkBuf(t, e)); for (var a = "", n = 0; n < e; n++) a += String.fromCharCode(t[n]); return a } o[254] = o[254] = 1, a.string2buf = function(t) { var e, a, n, r, i, s = t.length, h = 0; for (r = 0; r < s; r++) 55296 == (64512 & (a = t.charCodeAt(r))) && r + 1 < s && 56320 == (64512 & (n = t.charCodeAt(r + 1))) && (a = 65536 + (a - 55296 << 10) + (n - 56320), r++), h += a < 128 ? 1 : a < 2048 ? 2 : a < 65536 ? 3 : 4; for (e = new l.Buf8(h), r = i = 0; i < h; r++) 55296 == (64512 & (a = t.charCodeAt(r))) && r + 1 < s && 56320 == (64512 & (n = t.charCodeAt(r + 1))) && (a = 65536 + (a - 55296 << 10) + (n - 56320), r++), a < 128 ? e[i++] = a : (a < 2048 ? e[i++] = 192 | a >>> 6 : (a < 65536 ? e[i++] = 224 | a >>> 12 : (e[i++] = 240 | a >>> 18, e[i++] = 128 | a >>> 12 & 63), e[i++] = 128 | a >>> 6 & 63), e[i++] = 128 | 63 & a); return e } , a.buf2binstring = function(t) { return _(t, t.length) } , a.binstring2buf = function(t) { for (var e = new l.Buf8(t.length), a = 0, n = e.length; a < n; a++) e[a] = t.charCodeAt(a); return e } , a.buf2string = function(t, e) { var a, n, r, i, s = e || t.length, h = new Array(2 * s); for (a = n = 0; a < s; ) if ((r = t[a++]) < 128) h[n++] = r; else if (4 < (i = o[r])) h[n++] = 65533, a += i - 1; else { for (r &= 2 === i ? 31 : 3 === i ? 15 : 7; 1 < i && a < s; ) r = r << 6 | 63 & t[a++], i--; 1 < i ? h[n++] = 65533 : r < 65536 ? h[n++] = r : (r -= 65536, h[n++] = 55296 | r >> 10 & 1023, h[n++] = 56320 | 1023 & r) } return _(h, n) } , a.utf8border = function(t, e) { var a; for ((e = e || t.length) > t.length && (e = t.length), a = e - 1; 0 <= a && 128 == (192 & t[a]); ) a--; return a < 0 ? e : 0 === a ? e : a + o[t[a]] > e ? a : e } } , { "./common": 1 }], 3: [function(t, e, a) { "use strict"; e.exports = function(t, e, a, n) { for (var r = 65535 & t | 0, i = t >>> 16 & 65535 | 0, s = 0; 0 !== a; ) { for (a -= s = 2e3 < a ? 2e3 : a; i = i + (r = r + e[n++] | 0) | 0, --s; ) ; r %= 65521, i %= 65521 } return r | i << 16 | 0 } } , {}], 4: [function(t, e, a) { "use strict"; var h = function() { for (var t, e = [], a = 0; a < 256; a++) { t = a; for (var n = 0; n < 8; n++) t = 1 & t ? 3988292384 ^ t >>> 1 : t >>> 1; e[a] = t } return e }(); e.exports = function(t, e, a, n) { var r = h , i = n + a; t ^= -1; for (var s = n; s < i; s++) t = t >>> 8 ^ r[255 & (t ^ e[s])]; return -1 ^ t } } , {}], 5: [function(t, e, a) { "use strict"; var l, u = t("../utils/common"), o = t("./trees"), f = t("./adler32"), c = t("./crc32"), n = t("./messages"), _ = 0, d = 4, p = 0, g = -2, m = -1, b = 4, r = 2, v = 8, w = 9, i = 286, s = 30, h = 19, y = 2 * i + 1, k = 15, z = 3, x = 258, B = x + z + 1, A = 42, C = 113, S = 1, j = 2, E = 3, U = 4; function D(t, e) { return t.msg = n[e], e } function I(t) { return (t << 1) - (4 < t ? 9 : 0) } function O(t) { for (var e = t.length; 0 <= --e; ) t[e] = 0 } function q(t) { var e = t.state , a = e.pending; a > t.avail_out && (a = t.avail_out), 0 !== a && (u.arraySet(t.output, e.pending_buf, e.pending_out, a, t.next_out), t.next_out += a, e.pending_out += a, t.total_out += a, t.avail_out -= a, e.pending -= a, 0 === e.pending && (e.pending_out = 0)) } function T(t, e) { o._tr_flush_block(t, 0 <= t.block_start ? t.block_start : -1, t.strstart - t.block_start, e), t.block_start = t.strstart, q(t.strm) } function L(t, e) { t.pending_buf[t.pending++] = e } function N(t, e) { t.pending_buf[t.pending++] = e >>> 8 & 255, t.pending_buf[t.pending++] = 255 & e } function R(t, e) { var a, n, r = t.max_chain_length, i = t.strstart, s = t.prev_length, h = t.nice_match, l = t.strstart > t.w_size - B ? t.strstart - (t.w_size - B) : 0, o = t.window, _ = t.w_mask, d = t.prev, u = t.strstart + x, f = o[i + s - 1], c = o[i + s]; t.prev_length >= t.good_match && (r >>= 2), h > t.lookahead && (h = t.lookahead); do { if (o[(a = e) + s] === c && o[a + s - 1] === f && o[a] === o[i] && o[++a] === o[i + 1]) { i += 2, a++; do {} while (o[++i] === o[++a] && o[++i] === o[++a] && o[++i] === o[++a] && o[++i] === o[++a] && o[++i] === o[++a] && o[++i] === o[++a] && o[++i] === o[++a] && o[++i] === o[++a] && i < u); if (n = x - (u - i), i = u - x, s < n) { if (t.match_start = e, h <= (s = n)) break; f = o[i + s - 1], c = o[i + s] } } } while ((e = d[e & _]) > l && 0 != --r); return s <= t.lookahead ? s : t.lookahead } function H(t) { var e, a, n, r, i, s, h, l, o, _, d = t.w_size; do { if (r = t.window_size - t.lookahead - t.strstart, t.strstart >= d + (d - B)) { for (u.arraySet(t.window, t.window, d, d, 0), t.match_start -= d, t.strstart -= d, t.block_start -= d, e = a = t.hash_size; n = t.head[--e], t.head[e] = d <= n ? n - d : 0, --a; ) ; for (e = a = d; n = t.prev[--e], t.prev[e] = d <= n ? n - d : 0, --a; ) ; r += d } if (0 === t.strm.avail_in) break; if (s = t.strm, h = t.window, l = t.strstart + t.lookahead, o = r, _ = void 0, _ = s.avail_in, o < _ && (_ = o), a = 0 === _ ? 0 : (s.avail_in -= _, u.arraySet(h, s.input, s.next_in, _, l), 1 === s.state.wrap ? s.adler = f(s.adler, h, _, l) : 2 === s.state.wrap && (s.adler = c(s.adler, h, _, l)), s.next_in += _, s.total_in += _, _), t.lookahead += a, t.lookahead + t.insert >= z) for (i = t.strstart - t.insert, t.ins_h = t.window[i], t.ins_h = (t.ins_h << t.hash_shift ^ t.window[i + 1]) & t.hash_mask; t.insert && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[i + z - 1]) & t.hash_mask, t.prev[i & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = i, i++, t.insert--, !(t.lookahead + t.insert < z)); ) ; } while (t.lookahead < B && 0 !== t.strm.avail_in) } function F(t, e) { for (var a, n; ; ) { if (t.lookahead < B) { if (H(t), t.lookahead < B && e === _) return S; if (0 === t.lookahead) break } if (a = 0, t.lookahead >= z && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + z - 1]) & t.hash_mask, a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), 0 !== a && t.strstart - a <= t.w_size - B && (t.match_length = R(t, a)), t.match_length >= z) if (n = o._tr_tally(t, t.strstart - t.match_start, t.match_length - z), t.lookahead -= t.match_length, t.match_length <= t.max_lazy_match && t.lookahead >= z) { for (t.match_length--; t.strstart++, t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + z - 1]) & t.hash_mask, a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart, 0 != --t.match_length; ) ; t.strstart++ } else t.strstart += t.match_length, t.match_length = 0, t.ins_h = t.window[t.strstart], t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + 1]) & t.hash_mask; else n = o._tr_tally(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++; if (n && (T(t, !1), 0 === t.strm.avail_out)) return S } return t.insert = t.strstart < z - 1 ? t.strstart : z - 1, e === d ? (T(t, !0), 0 === t.strm.avail_out ? E : U) : t.last_lit && (T(t, !1), 0 === t.strm.avail_out) ? S : j } function K(t, e) { for (var a, n, r; ; ) { if (t.lookahead < B) { if (H(t), t.lookahead < B && e === _) return S; if (0 === t.lookahead) break } if (a = 0, t.lookahead >= z && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + z - 1]) & t.hash_mask, a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), t.prev_length = t.match_length, t.prev_match = t.match_start, t.match_length = z - 1, 0 !== a && t.prev_length < t.max_lazy_match && t.strstart - a <= t.w_size - B && (t.match_length = R(t, a), t.match_length <= 5 && (1 === t.strategy || t.match_length === z && 4096 < t.strstart - t.match_start) && (t.match_length = z - 1)), t.prev_length >= z && t.match_length <= t.prev_length) { for (r = t.strstart + t.lookahead - z, n = o._tr_tally(t, t.strstart - 1 - t.prev_match, t.prev_length - z), t.lookahead -= t.prev_length - 1, t.prev_length -= 2; ++t.strstart <= r && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + z - 1]) & t.hash_mask, a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), 0 != --t.prev_length; ) ; if (t.match_available = 0, t.match_length = z - 1, t.strstart++, n && (T(t, !1), 0 === t.strm.avail_out)) return S } else if (t.match_available) { if ((n = o._tr_tally(t, 0, t.window[t.strstart - 1])) && T(t, !1), t.strstart++, t.lookahead--, 0 === t.strm.avail_out) return S } else t.match_available = 1, t.strstart++, t.lookahead-- } return t.match_available && (n = o._tr_tally(t, 0, t.window[t.strstart - 1]), t.match_available = 0), t.insert = t.strstart < z - 1 ? t.strstart : z - 1, e === d ? (T(t, !0), 0 === t.strm.avail_out ? E : U) : t.last_lit && (T(t, !1), 0 === t.strm.avail_out) ? S : j } function M(t, e, a, n, r) { this.good_length = t, this.max_lazy = e, this.nice_length = a, this.max_chain = n, this.func = r } function P() { this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = v, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new u.Buf16(2 * y), this.dyn_dtree = new u.Buf16(2 * (2 * s + 1)), this.bl_tree = new u.Buf16(2 * (2 * h + 1)), O(this.dyn_ltree), O(this.dyn_dtree), O(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new u.Buf16(k + 1), this.heap = new u.Buf16(2 * i + 1), O(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new u.Buf16(2 * i + 1), O(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0 } function G(t) { var e; return t && t.state ? (t.total_in = t.total_out = 0, t.data_type = r, (e = t.state).pending = 0, e.pending_out = 0, e.wrap < 0 && (e.wrap = -e.wrap), e.status = e.wrap ? A : C, t.adler = 2 === e.wrap ? 0 : 1, e.last_flush = _, o._tr_init(e), p) : D(t, g) } function J(t) { var e, a = G(t); return a === p && ((e = t.state).window_size = 2 * e.w_size, O(e.head), e.max_lazy_match = l[e.level].max_lazy, e.good_match = l[e.level].good_length, e.nice_match = l[e.level].nice_length, e.max_chain_length = l[e.level].max_chain, e.strstart = 0, e.block_start = 0, e.lookahead = 0, e.insert = 0, e.match_length = e.prev_length = z - 1, e.match_available = 0, e.ins_h = 0), a } function Q(t, e, a, n, r, i) { if (!t) return g; var s = 1; if (e === m && (e = 6), n < 0 ? (s = 0, n = -n) : 15 < n && (s = 2, n -= 16), r < 1 || w < r || a !== v || n < 8 || 15 < n || e < 0 || 9 < e || i < 0 || b < i) return D(t, g); 8 === n && (n = 9); var h = new P; return (t.state = h).strm = t, h.wrap = s, h.gzhead = null, h.w_bits = n, h.w_size = 1 << h.w_bits, h.w_mask = h.w_size - 1, h.hash_bits = r + 7, h.hash_size = 1 << h.hash_bits, h.hash_mask = h.hash_size - 1, h.hash_shift = ~~((h.hash_bits + z - 1) / z), h.window = new u.Buf8(2 * h.w_size), h.head = new u.Buf16(h.hash_size), h.prev = new u.Buf16(h.w_size), h.lit_bufsize = 1 << r + 6, h.pending_buf_size = 4 * h.lit_bufsize, h.pending_buf = new u.Buf8(h.pending_buf_size), h.d_buf = 1 * h.lit_bufsize, h.l_buf = 3 * h.lit_bufsize, h.level = e, h.strategy = i, h.method = a, J(t) } l = [new M(0,0,0,0,function(t, e) { var a = 65535; for (a > t.pending_buf_size - 5 && (a = t.pending_buf_size - 5); ; ) { if (t.lookahead <= 1) { if (H(t), 0 === t.lookahead && e === _) return S; if (0 === t.lookahead) break } t.strstart += t.lookahead, t.lookahead = 0; var n = t.block_start + a; if ((0 === t.strstart || t.strstart >= n) && (t.lookahead = t.strstart - n, t.strstart = n, T(t, !1), 0 === t.strm.avail_out)) return S; if (t.strstart - t.block_start >= t.w_size - B && (T(t, !1), 0 === t.strm.avail_out)) return S } return t.insert = 0, e === d ? (T(t, !0), 0 === t.strm.avail_out ? E : U) : (t.strstart > t.block_start && (T(t, !1), t.strm.avail_out), S) } ), new M(4,4,8,4,F), new M(4,5,16,8,F), new M(4,6,32,32,F), new M(4,4,16,16,K), new M(8,16,32,32,K), new M(8,16,128,128,K), new M(8,32,128,256,K), new M(32,128,258,1024,K), new M(32,258,258,4096,K)], a.deflateInit = function(t, e) { return Q(t, e, v, 15, 8, 0) } , a.deflateInit2 = Q, a.deflateReset = J, a.deflateResetKeep = G, a.deflateSetHeader = function(t, e) { return t && t.state ? 2 !== t.state.wrap ? g : (t.state.gzhead = e, p) : g } , a.deflate = function(t, e) { var a, n, r, i; if (!t || !t.state || 5 < e || e < 0) return t ? D(t, g) : g; if (n = t.state, !t.output || !t.input && 0 !== t.avail_in || 666 === n.status && e !== d) return D(t, 0 === t.avail_out ? -5 : g); if (n.strm = t, a = n.last_flush, n.last_flush = e, n.status === A) if (2 === n.wrap) t.adler = 0, L(n, 31), L(n, 139), L(n, 8), n.gzhead ? (L(n, (n.gzhead.text ? 1 : 0) + (n.gzhead.hcrc ? 2 : 0) + (n.gzhead.extra ? 4 : 0) + (n.gzhead.name ? 8 : 0) + (n.gzhead.comment ? 16 : 0)), L(n, 255 & n.gzhead.time), L(n, n.gzhead.time >> 8 & 255), L(n, n.gzhead.time >> 16 & 255), L(n, n.gzhead.time >> 24 & 255), L(n, 9 === n.level ? 2 : 2 <= n.strategy || n.level < 2 ? 4 : 0), L(n, 255 & n.gzhead.os), n.gzhead.extra && n.gzhead.extra.length && (L(n, 255 & n.gzhead.extra.length), L(n, n.gzhead.extra.length >> 8 & 255)), n.gzhead.hcrc && (t.adler = c(t.adler, n.pending_buf, n.pending, 0)), n.gzindex = 0, n.status = 69) : (L(n, 0), L(n, 0), L(n, 0), L(n, 0), L(n, 0), L(n, 9 === n.level ? 2 : 2 <= n.strategy || n.level < 2 ? 4 : 0), L(n, 3), n.status = C); else { var s = v + (n.w_bits - 8 << 4) << 8; s |= (2 <= n.strategy || n.level < 2 ? 0 : n.level < 6 ? 1 : 6 === n.level ? 2 : 3) << 6, 0 !== n.strstart && (s |= 32), s += 31 - s % 31, n.status = C, N(n, s), 0 !== n.strstart && (N(n, t.adler >>> 16), N(n, 65535 & t.adler)), t.adler = 1 } if (69 === n.status) if (n.gzhead.extra) { for (r = n.pending; n.gzindex < (65535 & n.gzhead.extra.length) && (n.pending !== n.pending_buf_size || (n.gzhead.hcrc && n.pending > r && (t.adler = c(t.adler, n.pending_buf, n.pending - r, r)), q(t), r = n.pending, n.pending !== n.pending_buf_size)); ) L(n, 255 & n.gzhead.extra[n.gzindex]), n.gzindex++; n.gzhead.hcrc && n.pending > r && (t.adler = c(t.adler, n.pending_buf, n.pending - r, r)), n.gzindex === n.gzhead.extra.length && (n.gzindex = 0, n.status = 73) } else n.status = 73; if (73 === n.status) if (n.gzhead.name) { r = n.pending; do { if (n.pending === n.pending_buf_size && (n.gzhead.hcrc && n.pending > r && (t.adler = c(t.adler, n.pending_buf, n.pending - r, r)), q(t), r = n.pending, n.pending === n.pending_buf_size)) { i = 1; break } L(n, i = n.gzindex < n.gzhead.name.length ? 255 & n.gzhead.name.charCodeAt(n.gzindex++) : 0) } while (0 !== i); n.gzhead.hcrc && n.pending > r && (t.adler = c(t.adler, n.pending_buf, n.pending - r, r)), 0 === i && (n.gzindex = 0, n.status = 91) } else n.status = 91; if (91 === n.status) if (n.gzhead.comment) { r = n.pending; do { if (n.pending === n.pending_buf_size && (n.gzhead.hcrc && n.pending > r && (t.adler = c(t.adler, n.pending_buf, n.pending - r, r)), q(t), r = n.pending, n.pending === n.pending_buf_size)) { i = 1; break } L(n, i = n.gzindex < n.gzhead.comment.length ? 255 & n.gzhead.comment.charCodeAt(n.gzindex++) : 0) } while (0 !== i); n.gzhead.hcrc && n.pending > r && (t.adler = c(t.adler, n.pending_buf, n.pending - r, r)), 0 === i && (n.status = 103) } else n.status = 103; if (103 === n.status && (n.gzhead.hcrc ? (n.pending + 2 > n.pending_buf_size && q(t), n.pending + 2 <= n.pending_buf_size && (L(n, 255 & t.adler), L(n, t.adler >> 8 & 255), t.adler = 0, n.status = C)) : n.status = C), 0 !== n.pending) { if (q(t), 0 === t.avail_out) return n.last_flush = -1, p } else if (0 === t.avail_in && I(e) <= I(a) && e !== d) return D(t, -5); if (666 === n.status && 0 !== t.avail_in) return D(t, -5); if (0 !== t.avail_in || 0 !== n.lookahead || e !== _ && 666 !== n.status) { var h = 2 === n.strategy ? function(t, e) { for (var a; ; ) { if (0 === t.lookahead && (H(t), 0 === t.lookahead)) { if (e === _) return S; break } if (t.match_length = 0, a = o._tr_tally(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++, a && (T(t, !1), 0 === t.strm.avail_out)) return S } return t.insert = 0, e === d ? (T(t, !0), 0 === t.strm.avail_out ? E : U) : t.last_lit && (T(t, !1), 0 === t.strm.avail_out) ? S : j }(n, e) : 3 === n.strategy ? function(t, e) { for (var a, n, r, i, s = t.window; ; ) { if (t.lookahead <= x) { if (H(t), t.lookahead <= x && e === _) return S; if (0 === t.lookahead) break } if (t.match_length = 0, t.lookahead >= z && 0 < t.strstart && (n = s[r = t.strstart - 1]) === s[++r] && n === s[++r] && n === s[++r]) { i = t.strstart + x; do {} while (n === s[++r] && n === s[++r] && n === s[++r] && n === s[++r] && n === s[++r] && n === s[++r] && n === s[++r] && n === s[++r] && r < i); t.match_length = x - (i - r), t.match_length > t.lookahead && (t.match_length = t.lookahead) } if (t.match_length >= z ? (a = o._tr_tally(t, 1, t.match_length - z), t.lookahead -= t.match_length, t.strstart += t.match_length, t.match_length = 0) : (a = o._tr_tally(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++), a && (T(t, !1), 0 === t.strm.avail_out)) return S } return t.insert = 0, e === d ? (T(t, !0), 0 === t.strm.avail_out ? E : U) : t.last_lit && (T(t, !1), 0 === t.strm.avail_out) ? S : j }(n, e) : l[n.level].func(n, e); if (h !== E && h !== U || (n.status = 666), h === S || h === E) return 0 === t.avail_out && (n.last_flush = -1), p; if (h === j && (1 === e ? o._tr_align(n) : 5 !== e && (o._tr_stored_block(n, 0, 0, !1), 3 === e && (O(n.head), 0 === n.lookahead && (n.strstart = 0, n.block_start = 0, n.insert = 0))), q(t), 0 === t.avail_out)) return n.last_flush = -1, p } return e !== d ? p : n.wrap <= 0 ? 1 : (2 === n.wrap ? (L(n, 255 & t.adler), L(n, t.adler >> 8 & 255), L(n, t.adler >> 16 & 255), L(n, t.adler >> 24 & 255), L(n, 255 & t.total_in), L(n, t.total_in >> 8 & 255), L(n, t.total_in >> 16 & 255), L(n, t.total_in >> 24 & 255)) : (N(n, t.adler >>> 16), N(n, 65535 & t.adler)), q(t), 0 < n.wrap && (n.wrap = -n.wrap), 0 !== n.pending ? p : 1) } , a.deflateEnd = function(t) { var e; return t && t.state ? (e = t.state.status) !== A && 69 !== e && 73 !== e && 91 !== e && 103 !== e && e !== C && 666 !== e ? D(t, g) : (t.state = null, e === C ? D(t, -3) : p) : g } , a.deflateSetDictionary = function(t, e) { var a, n, r, i, s, h, l, o, _ = e.length; if (!t || !t.state) return g; if (2 === (i = (a = t.state).wrap) || 1 === i && a.status !== A || a.lookahead) return g; for (1 === i && (t.adler = f(t.adler, e, _, 0)), a.wrap = 0, _ >= a.w_size && (0 === i && (O(a.head), a.strstart = 0, a.block_start = 0, a.insert = 0), o = new u.Buf8(a.w_size), u.arraySet(o, e, _ - a.w_size, a.w_size, 0), e = o, _ = a.w_size), s = t.avail_in, h = t.next_in, l = t.input, t.avail_in = _, t.next_in = 0, t.input = e, H(a); a.lookahead >= z; ) { for (n = a.strstart, r = a.lookahead - (z - 1); a.ins_h = (a.ins_h << a.hash_shift ^ a.window[n + z - 1]) & a.hash_mask, a.prev[n & a.w_mask] = a.head[a.ins_h], a.head[a.ins_h] = n, n++, --r; ) ; a.strstart = n, a.lookahead = z - 1, H(a) } return a.strstart += a.lookahead, a.block_start = a.strstart, a.insert = a.lookahead, a.lookahead = 0, a.match_length = a.prev_length = z - 1, a.match_available = 0, t.next_in = h, t.input = l, t.avail_in = s, a.wrap = i, p } , a.deflateInfo = "pako deflate (from Nodeca project)" } , { "../utils/common": 1, "./adler32": 3, "./crc32": 4, "./messages": 6, "./trees": 7 }], 6: [function(t, e, a) { "use strict"; e.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" } } , {}], 7: [function(t, e, a) { "use strict"; var l = t("../utils/common") , h = 0 , o = 1; function n(t) { for (var e = t.length; 0 <= --e; ) t[e] = 0 } var _ = 0 , s = 29 , d = 256 , u = d + 1 + s , f = 30 , c = 19 , g = 2 * u + 1 , m = 15 , r = 16 , p = 7 , b = 256 , v = 16 , w = 17 , y = 18 , k = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0] , z = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13] , x = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7] , B = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15] , A = new Array(2 * (u + 2)); n(A); var C = new Array(2 * f); n(C); var S = new Array(512); n(S); var j = new Array(256); n(j); var E = new Array(s); n(E); var U, D, I, O = new Array(f); function q(t, e, a, n, r) { this.static_tree = t, this.extra_bits = e, this.extra_base = a, this.elems = n, this.max_length = r, this.has_stree = t && t.length } function i(t, e) { this.dyn_tree = t, this.max_code = 0, this.stat_desc = e } function T(t) { return t < 256 ? S[t] : S[256 + (t >>> 7)] } function L(t, e) { t.pending_buf[t.pending++] = 255 & e, t.pending_buf[t.pending++] = e >>> 8 & 255 } function N(t, e, a) { t.bi_valid > r - a ? (t.bi_buf |= e << t.bi_valid & 65535, L(t, t.bi_buf), t.bi_buf = e >> r - t.bi_valid, t.bi_valid += a - r) : (t.bi_buf |= e << t.bi_valid & 65535, t.bi_valid += a) } function R(t, e, a) { N(t, a[2 * e], a[2 * e + 1]) } function H(t, e) { for (var a = 0; a |= 1 & t, t >>>= 1, a <<= 1, 0 < --e; ) ; return a >>> 1 } function F(t, e, a) { var n, r, i = new Array(m + 1), s = 0; for (n = 1; n <= m; n++) i[n] = s = s + a[n - 1] << 1; for (r = 0; r <= e; r++) { var h = t[2 * r + 1]; 0 !== h && (t[2 * r] = H(i[h]++, h)) } } function K(t) { var e; for (e = 0; e < u; e++) t.dyn_ltree[2 * e] = 0; for (e = 0; e < f; e++) t.dyn_dtree[2 * e] = 0; for (e = 0; e < c; e++) t.bl_tree[2 * e] = 0; t.dyn_ltree[2 * b] = 1, t.opt_len = t.static_len = 0, t.last_lit = t.matches = 0 } function M(t) { 8 < t.bi_valid ? L(t, t.bi_buf) : 0 < t.bi_valid && (t.pending_buf[t.pending++] = t.bi_buf), t.bi_buf = 0, t.bi_valid = 0 } function P(t, e, a, n) { var r = 2 * e , i = 2 * a; return t[r] < t[i] || t[r] === t[i] && n[e] <= n[a] } function G(t, e, a) { for (var n = t.heap[a], r = a << 1; r <= t.heap_len && (r < t.heap_len && P(e, t.heap[r + 1], t.heap[r], t.depth) && r++, !P(e, n, t.heap[r], t.depth)); ) t.heap[a] = t.heap[r], a = r, r <<= 1; t.heap[a] = n } function J(t, e, a) { var n, r, i, s, h = 0; if (0 !== t.last_lit) for (; n = t.pending_buf[t.d_buf + 2 * h] << 8 | t.pending_buf[t.d_buf + 2 * h + 1], r = t.pending_buf[t.l_buf + h], h++, 0 === n ? R(t, r, e) : (R(t, (i = j[r]) + d + 1, e), 0 !== (s = k[i]) && N(t, r -= E[i], s), R(t, i = T(--n), a), 0 !== (s = z[i]) && N(t, n -= O[i], s)), h < t.last_lit; ) ; R(t, b, e) } function Q(t, e) { var a, n, r, i = e.dyn_tree, s = e.stat_desc.static_tree, h = e.stat_desc.has_stree, l = e.stat_desc.elems, o = -1; for (t.heap_len = 0, t.heap_max = g, a = 0; a < l; a++) 0 !== i[2 * a] ? (t.heap[++t.heap_len] = o = a, t.depth[a] = 0) : i[2 * a + 1] = 0; for (; t.heap_len < 2; ) i[2 * (r = t.heap[++t.heap_len] = o < 2 ? ++o : 0)] = 1, t.depth[r] = 0, t.opt_len--, h && (t.static_len -= s[2 * r + 1]); for (e.max_code = o, a = t.heap_len >> 1; 1 <= a; a--) G(t, i, a); for (r = l; a = t.heap[1], t.heap[1] = t.heap[t.heap_len--], G(t, i, 1), n = t.heap[1], t.heap[--t.heap_max] = a, t.heap[--t.heap_max] = n, i[2 * r] = i[2 * a] + i[2 * n], t.depth[r] = (t.depth[a] >= t.depth[n] ? t.depth[a] : t.depth[n]) + 1, i[2 * a + 1] = i[2 * n + 1] = r, t.heap[1] = r++, G(t, i, 1), 2 <= t.heap_len; ) ; t.heap[--t.heap_max] = t.heap[1], function(t, e) { var a, n, r, i, s, h, l = e.dyn_tree, o = e.max_code, _ = e.stat_desc.static_tree, d = e.stat_desc.has_stree, u = e.stat_desc.extra_bits, f = e.stat_desc.extra_base, c = e.stat_desc.max_length, p = 0; for (i = 0; i <= m; i++) t.bl_count[i] = 0; for (l[2 * t.heap[t.heap_max] + 1] = 0, a = t.heap_max + 1; a < g; a++) c < (i = l[2 * l[2 * (n = t.heap[a]) + 1] + 1] + 1) && (i = c, p++), l[2 * n + 1] = i, o < n || (t.bl_count[i]++, s = 0, f <= n && (s = u[n - f]), h = l[2 * n], t.opt_len += h * (i + s), d && (t.static_len += h * (_[2 * n + 1] + s))); if (0 !== p) { do { for (i = c - 1; 0 === t.bl_count[i]; ) i--; t.bl_count[i]--, t.bl_count[i + 1] += 2, t.bl_count[c]--, p -= 2 } while (0 < p); for (i = c; 0 !== i; i--) for (n = t.bl_count[i]; 0 !== n; ) o < (r = t.heap[--a]) || (l[2 * r + 1] !== i && (t.opt_len += (i - l[2 * r + 1]) * l[2 * r], l[2 * r + 1] = i), n--) } }(t, e), F(i, o, t.bl_count) } function V(t, e, a) { var n, r, i = -1, s = e[1], h = 0, l = 7, o = 4; for (0 === s && (l = 138, o = 3), e[2 * (a + 1) + 1] = 65535, n = 0; n <= a; n++) r = s, s = e[2 * (n + 1) + 1], ++h < l && r === s || (h < o ? t.bl_tree[2 * r] += h : 0 !== r ? (r !== i && t.bl_tree[2 * r]++, t.bl_tree[2 * v]++) : h <= 10 ? t.bl_tree[2 * w]++ : t.bl_tree[2 * y]++, i = r, (h = 0) === s ? (l = 138, o = 3) : r === s ? (l = 6, o = 3) : (l = 7, o = 4)) } function W(t, e, a) { var n, r, i = -1, s = e[1], h = 0, l = 7, o = 4; for (0 === s && (l = 138, o = 3), n = 0; n <= a; n++) if (r = s, s = e[2 * (n + 1) + 1], !(++h < l && r === s)) { if (h < o) for (; R(t, r, t.bl_tree), 0 != --h; ) ; else 0 !== r ? (r !== i && (R(t, r, t.bl_tree), h--), R(t, v, t.bl_tree), N(t, h - 3, 2)) : h <= 10 ? (R(t, w, t.bl_tree), N(t, h - 3, 3)) : (R(t, y, t.bl_tree), N(t, h - 11, 7)); i = r, (h = 0) === s ? (l = 138, o = 3) : r === s ? (l = 6, o = 3) : (l = 7, o = 4) } } n(O); var X = !1; function Y(t, e, a, n) { var r, i, s, h; N(t, (_ << 1) + (n ? 1 : 0), 3), i = e, s = a, h = !0, M(r = t), h && (L(r, s), L(r, ~s)), l.arraySet(r.pending_buf, r.window, i, s, r.pending), r.pending += s } a._tr_init = function(t) { X || (function() { var t, e, a, n, r, i = new Array(m + 1); for (n = a = 0; n < s - 1; n++) for (E[n] = a, t = 0; t < 1 << k[n]; t++) j[a++] = n; for (j[a - 1] = n, n = r = 0; n < 16; n++) for (O[n] = r, t = 0; t < 1 << z[n]; t++) S[r++] = n; for (r >>= 7; n < f; n++) for (O[n] = r << 7, t = 0; t < 1 << z[n] - 7; t++) S[256 + r++] = n; for (e = 0; e <= m; e++) i[e] = 0; for (t = 0; t <= 143; ) A[2 * t + 1] = 8, t++, i[8]++; for (; t <= 255; ) A[2 * t + 1] = 9, t++, i[9]++; for (; t <= 279; ) A[2 * t + 1] = 7, t++, i[7]++; for (; t <= 287; ) A[2 * t + 1] = 8, t++, i[8]++; for (F(A, u + 1, i), t = 0; t < f; t++) C[2 * t + 1] = 5, C[2 * t] = H(t, 5); U = new q(A,k,d + 1,u,m), D = new q(C,z,0,f,m), I = new q(new Array(0),x,0,c,p) }(), X = !0), t.l_desc = new i(t.dyn_ltree,U), t.d_desc = new i(t.dyn_dtree,D), t.bl_desc = new i(t.bl_tree,I), t.bi_buf = 0, t.bi_valid = 0, K(t) } , a._tr_stored_block = Y, a._tr_flush_block = function(t, e, a, n) { var r, i, s = 0; 0 < t.level ? (2 === t.strm.data_type && (t.strm.data_type = function(t) { var e, a = 4093624447; for (e = 0; e <= 31; e++, a >>>= 1) if (1 & a && 0 !== t.dyn_ltree[2 * e]) return h; if (0 !== t.dyn_ltree[18] || 0 !== t.dyn_ltree[20] || 0 !== t.dyn_ltree[26]) return o; for (e = 32; e < d; e++) if (0 !== t.dyn_ltree[2 * e]) return o; return h }(t)), Q(t, t.l_desc), Q(t, t.d_desc), s = function(t) { var e; for (V(t, t.dyn_ltree, t.l_desc.max_code), V(t, t.dyn_dtree, t.d_desc.max_code), Q(t, t.bl_desc), e = c - 1; 3 <= e && 0 === t.bl_tree[2 * B[e] + 1]; e--) ; return t.opt_len += 3 * (e + 1) + 5 + 5 + 4, e }(t), r = t.opt_len + 3 + 7 >>> 3, (i = t.static_len + 3 + 7 >>> 3) <= r && (r = i)) : r = i = a + 5, a + 4 <= r && -1 !== e ? Y(t, e, a, n) : 4 === t.strategy || i === r ? (N(t, 2 + (n ? 1 : 0), 3), J(t, A, C)) : (N(t, 4 + (n ? 1 : 0), 3), function(t, e, a, n) { var r; for (N(t, e - 257, 5), N(t, a - 1, 5), N(t, n - 4, 4), r = 0; r < n; r++) N(t, t.bl_tree[2 * B[r] + 1], 3); W(t, t.dyn_ltree, e - 1), W(t, t.dyn_dtree, a - 1) }(t, t.l_desc.max_code + 1, t.d_desc.max_code + 1, s + 1), J(t, t.dyn_ltree, t.dyn_dtree)), K(t), n && M(t) } , a._tr_tally = function(t, e, a) { return t.pending_buf[t.d_buf + 2 * t.last_lit] = e >>> 8 & 255, t.pending_buf[t.d_buf + 2 * t.last_lit + 1] = 255 & e, t.pending_buf[t.l_buf + t.last_lit] = 255 & a, t.last_lit++, 0 === e ? t.dyn_ltree[2 * a]++ : (t.matches++, e--, t.dyn_ltree[2 * (j[a] + d + 1)]++, t.dyn_dtree[2 * T(e)]++), t.last_lit === t.lit_bufsize - 1 } , a._tr_align = function(t) { var e; N(t, 2, 3), R(t, b, A), 16 === (e = t).bi_valid ? (L(e, e.bi_buf), e.bi_buf = 0, e.bi_valid = 0) : 8 <= e.bi_valid && (e.pending_buf[e.pending++] = 255 & e.bi_buf, e.bi_buf >>= 8, e.bi_valid -= 8) } } , { "../utils/common": 1 }], 8: [function(t, e, a) { "use strict"; e.exports = function() { this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0 } } , {}], "/lib/deflate.js": [function(t, e, a) { "use strict"; var s = t("./zlib/deflate") , h = t("./utils/common") , l = t("./utils/strings") , r = t("./zlib/messages") , i = t("./zlib/zstream") , o = Object.prototype.toString , _ = 0 , d = -1 , u = 0 , f = 8; function c(t) { if (!(this instanceof c)) return new c(t); this.options = h.assign({ level: d, method: f, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: u, to: "" }, t || {}); var e = this.options; e.raw && 0 < e.windowBits ? e.windowBits = -e.windowBits : e.gzip && 0 < e.windowBits && e.windowBits < 16 && (e.windowBits += 16), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new i, this.strm.avail_out = 0; var a = s.deflateInit2(this.strm, e.level, e.method, e.windowBits, e.memLevel, e.strategy); if (a !== _) throw new Error(r[a]); if (e.header && s.deflateSetHeader(this.strm, e.header), e.dictionary) { var n; if (n = "string" == typeof e.dictionary ? l.string2buf(e.dictionary) : "[object ArrayBuffer]" === o.call(e.dictionary) ? new Uint8Array(e.dictionary) : e.dictionary, (a = s.deflateSetDictionary(this.strm, n)) !== _) throw new Error(r[a]); this._dict_set = !0 } } function n(t, e) { var a = new c(e); if (a.push(t, !0), a.err) throw a.msg || r[a.err]; return a.result } c.prototype.push = function(t, e) { var a, n, r = this.strm, i = this.options.chunkSize; if (this.ended) return !1; n = e === ~~e ? e : !0 === e ? 4 : 0, "string" == typeof t ? r.input = l.string2buf(t) : "[object ArrayBuffer]" === o.call(t) ? r.input = new Uint8Array(t) : r.input = t, r.next_in = 0, r.avail_in = r.input.length; do { if (0 === r.avail_out && (r.output = new h.Buf8(i), r.next_out = 0, r.avail_out = i), 1 !== (a = s.deflate(r, n)) && a !== _) return this.onEnd(a), !(this.ended = !0); 0 !== r.avail_out && (0 !== r.avail_in || 4 !== n && 2 !== n) || ("string" === this.options.to ? this.onData(l.buf2binstring(h.shrinkBuf(r.output, r.next_out))) : this.onData(h.shrinkBuf(r.output, r.next_out))) } while ((0 < r.avail_in || 0 === r.avail_out) && 1 !== a); return 4 === n ? (a = s.deflateEnd(this.strm), this.onEnd(a), this.ended = !0, a === _) : 2 !== n || (this.onEnd(_), !(r.avail_out = 0)) } , c.prototype.onData = function(t) { this.chunks.push(t) } , c.prototype.onEnd = function(t) { t === _ && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = h.flattenChunks(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg } , a.Deflate = c, a.deflate = n, a.deflateRaw = function(t, e) { return (e = e || {}).raw = !0, n(t, e) } , a.gzip = function(t, e) { return (e = e || {}).gzip = !0, n(t, e) } } , { "./utils/common": 1, "./utils/strings": 2, "./zlib/deflate": 5, "./zlib/messages": 6, "./zlib/zstream": 8 }] }, {}, [])("/lib/deflate.js") }); if (typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope) { if ("function" === typeof importScripts) { var gzipEncoder = pako.gzip; this.onmessage = function(a) { var i = a.data, g = i.data, f, c = i.url, e = i.headers, d = i.id, b, h; if (!g || !c) { return } b = JSON.stringify(g); if (gzipEncoder) { h = gzipEncoder(b); e["Content-Encoding"] = "gzip" } else { h = "ERROR: Invalid gzip encoder or encoder not found. Check dcxWorker deployment." } e["X-Requested-With"] = "fetch"; e["X-Requested-From"] = "dcxWorker"; f = { method: "POST", headers: e, body: h, mode: "cors", credentials: "omit", keepalive: i.isUnloading, cache: "no-store" }; fetch(c, f).then(function(k) { var j = { success: k.ok, statusCode: k.status, statusText: k.statusText, id: d }; if (j.success) { k.text().then(function(l) { try { j.data = JSON.parse(l) } catch (m) { j.data = l } postMessage(j) })["catch"](function(l) { j.statusCode = 1; j.statusText = l.message; postMessage(j) }) } })["catch"](function(k) { var j = { success: false, statusCode: 2, statusText: k.message, id: d }; postMessage(j) }) } } } else { /* * ************************************************************************** * Licensed Materials - Property of HCL * (c) Copyright HCL Technologies Ltd. 2020. All Rights Reserved. * US Government Users Restricted Rights - Use, duplication or disclosure * restricted by GSA ADP Schedule Contract with HCL Technologies. * ************************************************************************** * * @version 12.1.12 * @flags w3c,NDEBUG */ //----------------------------------------------- // Discover Core Library v12.1.12 Minified //----------------------------------------------- if (window.DCX) { throw "Attempting to recreate DCX. Library may be included more than once on the page." } window.DCX = (function() { var x, r, B, H, o, D, e, f, E; function y(R, K, L, S) { var P = null , T = null , N = DCX.getModule("replay") , Q = DCX.getModule("DCCookie") , U = DCX.getModule("performance") , M = null , O = E.getOriginAndPath() , J = E.getQueryString(window.location.search); if (!K || typeof K !== "string") { return } T = { type: 2, screenview: { type: R, name: K, originalUrl: O.path, url: DCX.normalizeUrl(O.path), host: O.origin, referrer: L, title: document.title, queryString: J } }; if (!J) { delete T.screenview.queryString } if (!L || typeof L !== "string") { delete T.screenview.referrer } if (R === "LOAD") { M = { type: "screenview_load", name: K } } else { if (R === "UNLOAD") { M = { type: "screenview_unload", name: K } } } if (M && N) { P = N.onevent(M) } if (P) { T.dcid = P } if (R === "LOAD" || R === "UNLOAD") { D.post("", T) } if (M && Q) { Q.onevent(M) } if (M && U) { U.onevent(M) } } function z(J) { var K; if (!J || !J.coords) { return } K = { type: 13, geolocation: { lat: J.coords.latitude, "long": J.coords.longitude, accuracy: Math.ceil(J.coords.accuracy) } }; D.post("", K) } function t() { var J; J = { type: 13, geolocation: { errorCode: 201, error: "Permission denied." } }; D.post("", J) } var d = (new Date()).getTime(), k, F = {}, b = {}, h = false, j = null, s = false, v = (function() { var K, M = []; function L(Q) { var N = f.framesBlacklist, P, O; K = K || []; Q = Q || null; if (typeof N !== "undefined" && N.length > 0) { for (O = 0; O < N.length; O += 1) { P = B.queryAll(N[O], Q); if (P && P.length > 0) { K = K.concat(P) } } M = M.concat(B.queryAll("iframe", Q)) } } function J(N) { if (E.indexOf(M, N) < 0) { L(N.ownerDocument) } return E.indexOf(K, N) > -1 } J.clearCache = function() { K = null } ; return J }()), w = null, l = { config: ["getConfig", "updateConfig", "getCoreConfig", "updateCoreConfig", "getModuleConfig", "updateModuleConfig", "getServiceConfig", "updateServiceConfig"], queue: ["post", "setAutoFlush", "flushAll"], browserBase: ["getXPathFromNode", "processDOMEvent"] }, A = (function() { var J = {}; return { normalizeModuleEvents: function(O, M, Q, L) { var K = J[O] , P = false , N = false; Q = Q || C._getLocalTop(); L = L || Q.document; if (K) { return } J[O] = { loadFired: false, pageHideFired: false }; E.forEach(M, function(R) { switch (R.name) { case "load": P = true; M.push(E.mixin(E.mixin({}, R), { name: "pageshow" })); break; case "unload": N = true; M.push(E.mixin(E.mixin({}, R), { name: "pagehide" })); M.push(E.mixin(E.mixin({}, R), { name: "beforeunload" })); break; case "change": if (E.isLegacyIE && C.getFlavor() === "w3c") { M.push(E.mixin(E.mixin({}, R), { name: "propertychange" })) } break } }); if (!P && !N) { delete J[O]; return } J[O].silentLoad = !P; J[O].silentUnload = !N; if (!P) { M.push({ name: "load", target: Q }) } if (!N) { M.push({ name: "unload", target: Q }) } }, canPublish: function(K, M) { var L; if (J.hasOwnProperty(K) === false) { return true } L = J[K]; switch (M.type) { case "load": L.pageHideFired = false; L.loadFired = true; return !L.silentLoad; case "pageshow": L.pageHideFired = false; M.type = "load"; return !L.loadFired && !L.silentLoad; case "pagehide": M.type = "unload"; L.loadFired = false; L.pageHideFired = true; return !L.silentUnload; case "unload": case "beforeunload": M.type = "unload"; L.loadFired = false; return !L.pageHideFired && !L.silentUnload } return true }, isUnload: function(K) { return typeof K === "object" ? (K.type === "unload" || K.type === "beforeunload" || K.type === "pagehide") : false } } }()), G = {}, c = {}, a = {}, n = function() {}, q = null, p = true, g = function() {}, m = false, u = (function() { var K = window.location , M = K.pathname , L = K.hash , O = E && E.getQueryString(K.search) || "" , J = E && E.getOriginAndPath(K) || "" , N = "" , P = document.title; return function() { var V = K.pathname , Q = K.hash , T = N , U = E && E.getOriginAndPath(K) || "" , S = document.title , R = E && E.getQueryString(K.search) || ""; if (V !== M) { T = DCX.normalizeUrl(V + Q) } else { if (Q !== L) { T = DCX.normalizeUrl(Q) } } if (T !== N) { if (N) { y("UNLOAD", N, null, null, { path: J && J.path, origin: J && J.origin, prevHash: L, queryString: O, title: P }) } y("LOAD", T); N = T; M = V; L = Q; J = U; P = S; O = R } } }()), i = function(L, S) { var M, K, N, R = false, J = f.blockedElements, P, Q, O; if (!J || !J.length) { i = function() { return false } ; return R } if (!L || !L.nodeType) { return R } S = S || E.getDocument(L); for (M = 0, N = J.length; M < N && !R; M += 1) { Q = B.queryAll(J[M], S); for (K = 0, O = Q.length; K < O && !R; K += 1) { P = Q[K]; R = P.contains ? P.contains(L) : P === L } } return R }, I = function(K) { var J = false , L = ["intent:", "mailto:", "sms:", "tel:"]; if (K && E.getTagName(K) === "a" && L.indexOf(K.protocol) !== -1) { J = true } return J }, C = { _loadGlobalsForUnitTesting: function(J) { E = J.utils; x = J.getService("ajax"); r = J.getService("browserBase"); B = J.getService("browser"); H = J.getService("config"); o = J.getService("domCapture"); D = J.getService("queue"); e = J.getService("serializer"); f = H ? H.getCoreConfig() : null }, getStartTime: function() { return d }, getPageId: function() { return k || "#" }, getLibraryVersion: function() { return "12.1.12" }, getInternalVersion: function() { var J = this.getCoreConfig(); if (J.version) { return J.version } }, getCurrentWebEvent: function() { return G }, normalizeUrl: function(L, K) { if (typeof K === "undefined") { K = L } var J = this.getCoreConfig(); if (J.normalization && J.normalization.urlFunction) { return J.normalization.urlFunction(K) } return K }, init: function(K, L) { var J; E = this.utils; if (E.isLegacyIE) { return } q = L; if (!p) { throw "init must only be called once!" } k = "P." + E.getRandomString(28); p = false; J = function(M) { M = M || window.event || {}; if (M.type === "load" || document.readyState !== "loading") { if (document.removeEventListener) { document.removeEventListener("DOMContentLoaded", J, false); window.removeEventListener("load", J, false) } else { document.detachEvent("onreadystatechange", J); window.detachEvent("onload", J) } n(K, L) } } ; if (document.readyState === "complete" || (document.readyState === "interactive" && !E.isIE)) { setTimeout(J) } else { if (document.addEventListener) { document.addEventListener("DOMContentLoaded", J, false); window.addEventListener("load", J, false) } else { document.attachEvent("onreadystatechange", J); window.attachEvent("onload", J) } } }, isInitialized: function() { return h }, getState: function() { return j }, setState: function(K, L) { var J = { destroyedParent: K, jMsg: L }; j = K + "(" + L.destroyedBy + ") : " + L.destroyedReason; DCX.logCustomEvent("state", J, 6); sessionStorage.setItem("DCXLabState", JSON.stringify(J)) }, setWorkerStatus: function(J) { s = J }, getWorkerStatus: function() { return s }, destroy: function(L) { var M = "" , K = "" , Q = null , N = null , J = null , O = false; if (p) { return false } this.stopAll(); if (!L) { for (M in c) { if (c.hasOwnProperty(M)) { K = M.split("|")[0]; Q = c[M].target; O = c[M].delegateTarget || undefined; B.unsubscribe(K, Q, this._publishEvent, O) } } } for (N in b) { if (b.hasOwnProperty(N)) { J = b[N].instance; if (J && typeof J.destroy === "function") { J.destroy() } b[N].instance = null } } v.clearCache(); c = {}; h = false; p = true; if (j === "unloading" || j === "loaded") { j = "destroyed" } if (typeof q === "function") { try { q("destroyed") } catch (P) {} } }, _updateModules: function(L) { var O = null , K = null , J = true; if (f && f.modules) { try { for (K in f.modules) { if (f.modules.hasOwnProperty(K)) { O = f.modules[K]; if (F.hasOwnProperty(K)) { if (O.enabled === false) { this.stop(K); continue } this.start(K); if (O.events) { this._registerModuleEvents(K, O.events, L) } } } } this._registerModuleEvents.clearCache() } catch (N) { var M = { destroyedReason: "UIC destroyed while update Modules.", destroyedBy: "_updateModules", destroyedByModule: K }; DCX.setState("_updateModules", M); C.destroy(); J = false } } else { J = false } return J }, rebind: function(J) { C._updateModules(J) }, getSessionData: function() { if (!C.isInitialized()) { return } var M = null, J = null, K, L; if (!f || !f.sessionDataEnabled) { return null } J = f.sessionData || {}; K = J.sessionQueryName; if (K) { L = E.getQueryStringValue(K, J.sessionQueryDelim) } else { K = J.sessionCookieName || "TLTSID"; L = E.getCookieValue(K) } if (K && L) { M = M || {}; M.dcxSCN = K; M.dcxSCV = L; M.dcxSCVNeedsHashing = !!J.sessionValueNeedsHashing } return M }, logGeolocation: function(J) { var N = C.getModuleConfig("replay") || {} , M = E.getValue(N, "geolocation.options", { timeout: 30000, enableHighAccuracy: true, maximumAge: 0 }) , L = E.getValue(N, "geolocation.enabled", false) , K = window.navigator; if (!J) { if (!L || !K || !K.geolocation || !K.geolocation.getCurrentPosition) { return } K.geolocation.getCurrentPosition(z, t, M) } else { z(J) } }, logCustomEvent: function(M, K, J) { if (!C.isInitialized()) { return } var L = null; if (!M || typeof M !== "string") { M = "CUSTOM" } if (!J || typeof J !== "number") { J = 5 } K = K || {}; L = { type: J, customEvent: { name: M, data: K } }; D.post("", L) }, logExceptionEvent: function(M, K, J) { if (!C.isInitialized()) { return } var L = null; if (!M || typeof M !== "string") { return } K = K || ""; J = J || ""; L = { type: 6, exception: { description: M, url: K, line: J } }; D.post("", L) }, logFormCompletion: function(J, L) { if (!C.isInitialized()) { return } var K = { type: 15, formCompletion: { submitted: !!J, valid: (typeof L === "boolean" ? L : null) } }; D.post("", K) }, logScreenviewLoad: function(L, K, J) { if (!C.isInitialized()) { return } y("LOAD", L, K, J) }, logScreenviewUnload: function(J) { if (!C.isInitialized()) { return } y("UNLOAD", J) }, logDOMCapture: function(J, M) { var N = null, L, K, O; if (!this.isInitialized()) { return N } if (E.isLegacyIE) { return N } if (o) { J = J || window.document; K = this.getServiceConfig("domCapture"); M = E.mixin({}, K.options, M); L = o.captureDOM(J, M); if (L) { N = M.dcid || ("dcid-" + E.getSerialNumber() + "." + (new Date()).getTime()); L.dcid = N; L.eventOn = !!M.eventOn; O = { type: 12, domCapture: L }; D.post("", O); if (M.qffd !== false && !m && O.domCapture.fullDOM) { D.flush(); m = true } } else { N = null } } return N }, performDOMCapture: function(L, J, K) { return this.logDOMCapture(J, K) }, performFormCompletion: function(K, J, L) { return this.logFormCompletion(J, L) }, _bridgeCallback: function(K) { var J = a[K]; if (J && J.enabled) { return J } return null }, logScreenCapture: function() { if (!C.isInitialized()) { return } var J = C._bridgeCallback("screenCapture"); if (J !== null) { J.cbFunction() } }, enableDiscoverFramework: function() { if (!C.isInitialized()) { return } var J = C._bridgeCallback("enableDiscoverFramework"); if (J !== null) { J.cbFunction() } }, disableDiscoverFramework: function() { if (!C.isInitialized()) { return } var J = C._bridgeCallback("disableDiscoverFramework"); if (J !== null) { J.cbFunction() } }, startNewTLFSession: function() { if (!C.isInitialized()) { return } var J = C._bridgeCallback("startNewTLFSession"); if (J !== null) { J.cbFunction() } }, currentSessionId: function() { if (!C.isInitialized()) { return } var K, J = C._bridgeCallback("currentSessionId"); if (J !== null) { K = J.cbFunction() } return K }, defaultValueForConfigurableItem: function(J) { if (!C.isInitialized()) { return } var L, K = C._bridgeCallback("defaultValueForConfigurableItem"); if (K !== null) { L = K.cbFunction(J) } return L }, valueForConfigurableItem: function(J) { if (!C.isInitialized()) { return } var L, K = C._bridgeCallback("valueForConfigurableItem"); if (K !== null) { L = K.cbFunction(J) } return L }, setConfigurableItem: function(K, M) { if (!C.isInitialized()) { return } var J = false , L = C._bridgeCallback("setConfigurableItem"); if (L !== null) { J = L.cbFunction(K, M) } return J }, addAdditionalHttpHeader: function(K, M) { if (!C.isInitialized()) { return } var J = false , L = C._bridgeCallback("addAdditionalHttpHeader"); if (L !== null) { J = L.cbFunction(K, M) } return J }, logCustomEventBridge: function(L, M, K) { if (!C.isInitialized()) { return } var J = false , N = C._bridgeCallback("logCustomEventBridge"); if (N !== null) { J = N.cbFunction(L, M, K) } return J }, registerBridgeCallbacks: function(R) { var O, M, P, L = null, N, S, K, J; if (!R) { return false } if (R.length === 0) { a = {}; return false } try { for (O = 0, P = R.length; O < P; O += 1) { L = R[O]; if (typeof L === "object" && L.cbType && L.cbFunction) { N = { enabled: L.enabled, cbFunction: L.cbFunction, cbOrder: L.order || 0 }; if (E.isUndefOrNull(a[L.cbType])) { if (N.enabled) { a[L.cbType] = N } } else { if (!E.isArray(a[L.cbType])) { a[L.cbType] = [a[L.cbType]] } S = a[L.cbType]; for (M = 0, K = false, J = S.length; M < J; M += 1) { if (S[M].cbOrder === N.cbOrder && S[M].cbFunction === N.cbFunction) { K = true; if (!N.enabled) { S.splice(M, 1); if (!S.length) { delete a[L.cbType] } } } else { if (S[M].cbOrder > N.cbOrder) { break } } } if (!K) { if (N.enabled) { S.splice(M, 0, N) } } } } } } catch (Q) { return false } return true }, redirectQueue: function(M) { var P, O, L, K, J, Q, N; if (!M || !M.length) { return M } K = a.messageRedirect; if (!K) { return M } if (!E.isArray(K)) { J = [K] } else { J = K } for (O = 0, Q = J.length; O < Q; O += 1) { K = J[O]; if (K && K.enabled) { for (P = 0, L = M.length; P < L; P += 1) { N = K.cbFunction(e.serialize(M[P]), M[P]); if (N && typeof N === "object") { M[P] = N } else { M.splice(P, 1); P -= 1; L = M.length } } } } return M }, _hasSameOrigin: function(J) { try { return J.document.location.host === document.location.host && J.document.location.protocol === document.location.protocol } catch (K) {} return false }, provideRequestHeaders: function() { var O = null, L = a.addRequestHeaders, K, N, M; if (!E.isArray(L)) { K = [L] } else { K = L } for (M = 0, N = K.length; M < N; M += 1) { L = K[M]; if (L && L.enabled) { var J = L.cbFunction(); if (J) { O = (O || []).concat(J) } } } return O }, _registerModuleEvents: (function() { var L, N = 0, M = function(R, Q, P) { if (R === "window") { return Q } if (R === "document") { return P } return R }; function O(P, V, X) { var W = E.getDocument(X), R = C._getLocalTop(), Q = E.isIFrameDescendant(X), U, T, S; X = X || W; A.normalizeModuleEvents(P, V, R, W); if (Q) { U = r.ElementData.prototype.examineID(X).id; if (typeof U === "string") { U = U.slice(0, U.length - 1); for (T in c) { if (c.hasOwnProperty(T)) { for (S = 0; S < c[T].length; S += 1) { if (P === c[T][S]) { if (T.indexOf(U) !== -1) { delete c[T]; break } } } } } } } E.forEach(V, function(Y) { var ab = M(Y.target, R, W) || W , aa = M(Y.delegateTarget, R, W) , Z = ""; if (Y.recurseFrames !== true && Q) { return } if (typeof ab === "string") { if (Y.delegateTarget && C.getFlavor() === "jQuery") { Z = C._buildToken4delegateTarget(Y.name, ab, Y.delegateTarget); if (!c.hasOwnProperty(Z)) { c[Z] = [P]; c[Z].target = ab; c[Z].delegateTarget = aa; B.subscribe(Y.name, ab, C._publishEvent, aa, Z) } else { c[Z].push(P) } } else { E.forEach(B.queryAll(ab, X), function(ac) { var ad = L.get(ac); if (!ad) { ad = r.ElementData.prototype.examineID(ac); L.set(ac, ad) } Z = Y.name + "|" + ad.id + ad.idType; if (E.indexOf(c[Z], P) !== -1) { return } c[Z] = c[Z] || []; c[Z].push(P); c[Z].target = ac; B.subscribe(Y.name, ac, C._publishEvent) }) } } else { Z = C._buildToken4bubbleTarget(Y.name, ab, typeof Y.target === "undefined"); if (!c.hasOwnProperty(Z)) { c[Z] = [P]; B.subscribe(Y.name, ab, C._publishEvent) } else { if (E.indexOf(c[Z], P) === -1) { c[Z].push(P) } } } if (Z !== "") { if (typeof ab !== "string") { c[Z].target = ab } } }) } function K(P) { var Q = E.getIFrameWindow(P); return (Q !== null) && C._hasSameOrigin(Q) && (Q.document !== null) && Q.document.readyState === "complete" } function J(S, Q, W) { W = W || C._getLocalTop().document; L = L || new E.WeakMap(); O(S, Q, W); if (S !== "performance") { var V = null, R = null, P = B.queryAll("iframe, frame", W), U, T; for (U = 0, T = P.length; U < T; U += 1) { V = P[U]; if (v(V)) { continue } if (K(V)) { R = E.getIFrameWindow(V); C._registerModuleEvents(S, Q, R.document); o.observeWindow(R); continue } N += 1; (function(Z, X, aa) { var Y = null , ab = { moduleName: Z, moduleEvents: X, hIFrame: aa, _registerModuleEventsDelayed: function() { var ac = null; if (!v(aa)) { ac = E.getIFrameWindow(aa); if (C._hasSameOrigin(ac)) { C._registerModuleEvents(Z, X, ac.document); o.observeWindow(ac) } } N -= 1; if (!N) { C._publishEvent({ type: "loadWithFrames", custom: true }) } } }; E.addEventListener(aa, "load", function() { ab._registerModuleEventsDelayed() }); if (E.isLegacyIE && K(aa)) { Y = E.getIFrameWindow(aa); E.addEventListener(Y.document, "readystatechange", function() { ab._registerModuleEventsDelayed() }) } }(S, Q, V)) } } } J.clearCache = function() { if (L) { L.clear(); L = null } } ; return J }()), _buildToken4currentTarget: function(K) { var L = K.nativeEvent ? K.nativeEvent.currentTarget : null , J = L ? r.ElementData.prototype.examineID(L) : { id: K.target ? K.target.id : null, idType: K.target ? K.target.idType : -1 }; return K.type + "|" + J.id + J.idType }, _buildToken4delegateTarget: function(J, L, K) { return J + "|" + L + "|" + K }, _buildToken4bubbleTarget: function(K, Q, P, T) { var N = C._getLocalTop(), J, U = function(V) { var W = null; if (C._hasSameOrigin(J.parent)) { E.forEach(B.queryAll("iframe, frame", J.parent.document), function(X) { var Y = null; if (!v(X)) { Y = E.getIFrameWindow(X); if (C._hasSameOrigin(Y) && Y.document === V) { W = X } } }) } return W }, R = E.getDocument(Q), S = null, M, L = K, O; if (R) { J = R.defaultView || R.parentWindow } if (Q === window || Q === window.window) { L += "|null-2|window" } else { if (P && J && C._hasSameOrigin(J.parent) && typeof R !== "undefined" && N.document !== R) { S = U(R); if (S) { M = r.ElementData.prototype.examineID(S); L += "|" + M.xPath + "-2" } } else { if (T && T !== document && C.getFlavor() === "jQuery") { L += "|null-2|" + E.getTagName(Q) + "|" + E.getTagName(T) } else { L += "|null-2|document" } } } return L }, _reinitConfig: function() { C._updateModules() }, _publishEvent: function(J) { var K = null, M = null, O = (J.delegateTarget && J.data) ? J.data : C._buildToken4currentTarget(J), P = null, Q, R, S, L = null, T = false, U = false, W = J.delegateTarget || null, V, N; G = J; if (J.type.match(/^(click|change|blur|mouse|touch)/)) { g(); D.resetFlushTimer() } V = E.getValue(f, "screenviewAutoDetect", true); if (V) { u() } if ((J.type === "load" || J.type === "pageshow") && !J.nativeEvent.customLoad) { G = {}; return } if (J.type === "click") { w = J.target.element } if (J.type === "beforeunload") { T = false; N = (E.getTagName(w) === "a") ? w : document.activeElement; if (N) { if (I(N)) { T = true } else { E.forEach(f.ieExcludedLinks, function(Y) { var Z, X, aa = B.queryAll(Y); for (Z = 0, X = aa ? aa.length : 0; Z < X; Z += 1) { if (typeof aa[Z] !== undefined && aa[Z] === w) { T = true; break } } }) } } if (T) { G = {}; return } } if (A.isUnload(J)) { j = "unloading" } if (J.type === "change" && E.isLegacyIE && C.getFlavor() === "w3c" && (J.target.element.type === "checkbox" || J.target.element.type === "radio")) { G = {}; return } if (J.type === "propertychange") { if (J.nativeEvent.propertyName === "checked" && (J.target.element.type === "checkbox" || (J.target.element.type === "radio" && J.target.element.checked))) { J.type = "change"; J.target.type = "INPUT" } else { G = {}; return } } if (J.target && i(J.target.element)) { G = {}; return } if (!c.hasOwnProperty(O)) { if (J.hasOwnProperty("nativeEvent")) { S = J.nativeEvent.currentTarget || J.nativeEvent.target } O = C._buildToken4bubbleTarget(J.type, S, true, W) } if (c.hasOwnProperty(O)) { P = c[O]; for (Q = 0, R = P.length; Q < R; Q += 1) { K = P[Q]; M = C.getModule(K); L = E.mixin({}, J); if (M && C.isStarted(K) && typeof M.onevent === "function") { U = A.canPublish(K, L); if (U) { M.onevent(L) } } } } if (L && L.type === "unload" && U) { C.destroy() } G = {} }, _getLocalTop: function() { return window.window }, addModule: function(J, K) { F[J] = { creator: K, instance: null, context: null, messages: [] }; if (this.isInitialized()) { this.start(J) } }, getModule: function(J) { if (F[J] && F[J].instance) { return F[J].instance } return null }, removeModule: function(J) { this.stop(J); delete F[J] }, isStarted: function(J) { return F.hasOwnProperty(J) && F[J].instance !== null }, start: function(K) { var L = F[K] , J = null; if (L && L.instance === null) { L.context = new DCX.ModuleContext(K,this); J = L.instance = L.creator(L.context); if (typeof J.init === "function") { J.init() } } }, startAll: function() { var J = null; for (J in F) { if (F.hasOwnProperty(J)) { this.start(J) } } }, stop: function(K) { var L = F[K] , J = null; if (L && L.instance !== null) { J = L.instance; if (typeof J.destroy === "function") { J.destroy() } L.instance = L.context = null } }, stopAll: function() { var J = null; for (J in F) { if (F.hasOwnProperty(J)) { this.stop(J) } } }, addService: function(K, J) { b[K] = { creator: J, instance: null } }, getService: function(J) { if (b.hasOwnProperty(J)) { if (!b[J].instance) { try { b[J].instance = b[J].creator(this); if (typeof b[J].instance.init === "function") { b[J].instance.init() } } catch (K) { E.clog("UIC terminated due to error when instanciating the " + J + " service."); throw K } if (typeof b[J].instance.getServiceName !== "function") { b[J].instance.getServiceName = function() { return J } } } return b[J].instance } return null }, removeService: function(J) { delete b[J] }, broadcast: function(M) { var L = 0 , J = 0 , N = null , K = null; if (M && typeof M === "object") { for (N in F) { if (F.hasOwnProperty(N)) { K = F[N]; if (E.indexOf(K.messages, M.type) > -1) { if (typeof K.instance.onmessage === "function") { K.instance.onmessage(M) } } } } } }, listen: function(J, L) { var K = null; if (this.isStarted(J)) { K = F[J]; if (E.indexOf(K.messages, L) === -1) { K.messages.push(L) } } }, fail: function(M, L, J) { M = "UIC FAILED. " + M; try { var K = { destroyedReason: "UIC FAILED. " + M, destroyedBy: "fail", }; DCX.setState("_publishEvent", K); C.destroy(!!J) } finally { E.clog(M); throw new C.UICError(M,L) } }, UICError: (function() { function J(K, L) { this.message = K; this.code = L } J.prototype = new Error(); J.prototype.name = "UICError"; J.prototype.constructor = J; return J }()), getFlavor: function() { return "w3c" }, isScreenviewInAccessList: function(L, K) { var J = K.some(function(N) { if (typeof N === "string") { return (L || "").includes(N) } else { if (typeof N === "object" && N.regex) { var M = new RegExp(N.regex,N.flag); return M.test(L) } } return false }); return J } }; g = function() { var L = null , K = E.getValue(f, "inactivityTimeout", 600000); if (!K) { g = function() {} ; return } function J() { E.clog("UIC self-terminated due to inactivity timeout."); var M = { destroyedReason: "UIC self-terminated due to inactivity timeout.", destroyedBy: "inactivityTimeoutHandler" }; DCX.setState("resetInactivityTimer", M); try { if (!f.sessionKeepAlive) { C.destroy() } } catch (N) { C.destroy() } } g = function() { if (L) { clearTimeout(L); L = null } L = setTimeout(J, K) } ; g() } ; n = function(L, X) { var J, O, M, V, R, N, W, K, P, Q; if (h) { E.clog("DCX.init() called more than once. Ignoring."); return } if (DCX && DCX.replay) { return } H = C.getService("config"); H.updateConfig(L); x = C.getService("ajax"); r = C.getService("browserBase"); B = C.getService("browser"); o = C.getService("domCapture"); D = C.getService("queue"); e = C.getService("serializer"); f = H.getCoreConfig(); M = H.getModuleConfig("DCCookie") || {}; N = M.sessionizationCookieName || "TLTSID"; W = E.getCookieValue(N); if (W === "DND") { if (j !== "destroyed") { var S = { destroyedReason: "Cookie value is DND", destroyedBy: "sessionCookieValue" }; DCX.setState("_init", S); C.destroy() } return } if (!C._updateModules()) { if (j !== "destroyed") { var S = { destroyedReason: "UIC destroyed while updating modules", destroyedBy: "core._updateModules" }; DCX.setState("_init", S); C.destroy() } return } if (H.subscribe) { H.subscribe("configupdated", C._reinitConfig) } h = true; j = "loaded"; try { if (typeof DCExtensionNotify === "function") { DCExtensionNotify("Initialized") } } catch (U) {} J = { type: "load", target: window.window, srcElement: window.window, currentTarget: window.window, bubbles: true, cancelBubble: false, cancelable: true, timeStamp: +new Date(), customLoad: true }; O = new r.WebEvent(J); C._publishEvent(O); V = C.getServiceConfig("queue"); R = V.queues || []; for (Q = 0; Q < R.length; Q += 1) { if (!W && M.dcAppKey) { K = R[Q].endpoint; P = R[Q].killswitchURL || (K.match("collectorPost") ? K.replace("collectorPost", "switch/" + M.dcAppKey) : null); if (P) { x.sendRequest({ type: "GET", url: P, async: true, timeout: 5000, oncomplete: function(Y) { if (Y.responseText === "0") { C.setAutoFlush(false); E.setCookie(N, "DND"); var Z = { destroyedReason: "UIC destroyed while kill switch URL", destroyedBy: "killswitchURl" }; DCX.setState("_init", Z); C.destroy() } } }) } } if (R[Q].checkEndpoint) { x.sendRequest({ oncomplete: function(Y) {}, timeout: R[Q].endpointCheckTimeout || 3000, url: R[Q].endpoint, headers: { "X-PageId": k, "X-Discover-SaaS-AppKey": M.dcAppKey, "X-Discover-EndpointCheck": true }, async: true, error: function(Y) { if (Y.success) { return } C.setAutoFlush(false); var Z = { destroyedReason: "UIC destroyed while checking end point.", destroyedBy: "checkEndPointinit" }; DCX.setState("_init", Z); C.destroy() } }) } } if (typeof q === "function") { try { q("initialized") } catch (T) {} } if (JSON.parse(sessionStorage.getItem("DCXLabState")) !== null) { var S = JSON.parse(sessionStorage.getItem("DCXLabState")); DCX.logCustomEvent("LastState", S, 6); sessionStorage.removeItem("DCXLabState") } } ; (function() { var K = null, L, J; for (K in l) { if (l.hasOwnProperty(K)) { for (L = 0, J = l[K].length; L < J; L += 1) { (function(N, M) { C[M] = function() { var O = this.getService(N); if (O) { return O[M].apply(O, arguments) } } }(K, l[K][L])) } } } }()); return C }()); (function() { var a = window.navigator.userAgent.toLowerCase() , i = (a.indexOf("msie") !== -1 || a.indexOf("trident") !== -1) , c = (function() { var j = !!window.performance; return (i && (!j || document.documentMode < 9)) }()) , e = (a.indexOf("android") !== -1) , f = /(ipad|iphone|ipod)/.test(a) , d = (a.indexOf("opera mini") !== -1) , b = 1 , h = { "a:": "link", "button:button": "button", "button:submit": "button", "input:button": "button", "input:checkbox": "checkBox", "input:color": "colorPicker", "input:date": "datePicker", "input:datetime": "datetimePicker", "input:datetime-local": "datetime-local", "input:email": "emailInput", "input:file": "fileInput", "input:image": "button", "input:month": "month", "input:number": "numberPicker", "input:password": "textBox", "input:radio": "radioButton", "input:range": "slider", "input:reset": "button", "input:search": "searchBox", "input:submit": "button", "input:tel": "tel", "input:text": "textBox", "input:time": "timePicker", "input:url": "urlBox", "input:week": "week", "select:": "selectList", "select:select-one": "selectList", "textarea:": "textBox", "textarea:textarea": "textBox" } , g = { isIE: i, isLegacyIE: c, isAndroid: e, isLandscapeZeroDegrees: false, isiOS: f, isOperaMini: d, isUndefOrNull: function(j) { return typeof j === "undefined" || j === null }, isArray: function(j) { return !!(j && Object.prototype.toString.call(j) === "[object Array]") }, getSerialNumber: function() { var j; j = b; b += 1; return j }, getRandomString: function(o, n) { var m, l, j = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789", k = ""; if (!o) { return k } if (typeof n !== "string") { n = j } for (m = 0, l = n.length; m < o; m += 1) { k += n.charAt(Math.floor(Math.random() * l)) } return k }, getValue: function(o, n, k) { var m, j, l; k = typeof k === "undefined" ? null : k; if (!o || typeof o !== "object" || typeof n !== "string") { return k } l = n.split("."); for (m = 0, j = l.length; m < j; m += 1) { if (this.isUndefOrNull(o) || typeof o[l[m]] === "undefined") { return k } o = o[l[m]] } return o }, indexOf: function(m, l) { var k, j; if (m && m.indexOf) { return m.indexOf(l) } if (m && m instanceof Array) { for (k = 0, j = m.length; k < j; k += 1) { if (m[k] === l) { return k } } } return -1 }, forEach: function(n, m, l) { var k, j; if (!n || !n.length || !m || !m.call) { return } for (k = 0, j = n.length; k < j; k += 1) { m.call(l, n[k], k, n) } }, some: function(n, m) { var k, j, l = false; for (k = 0, j = n.length; k < j; k += 1) { l = m(n[k], k, n); if (l) { return l } } return l }, convertToArray: function(l) { var m = 0 , k = l.length , j = []; while (m < k) { j.push(l[m]); m += 1 } return j }, mixin: function(n) { var m, l, k, j; for (k = 1, j = arguments.length; k < j; k += 1) { l = arguments[k]; for (m in l) { if (Object.prototype.hasOwnProperty.call(l, m)) { n[m] = l[m] } } } return n }, extend: function(j, k, l) { var m = ""; for (m in l) { if (Object.prototype.hasOwnProperty.call(l, m)) { if (j && Object.prototype.toString.call(l[m]) === "[object Object]") { if (typeof k[m] === "undefined") { k[m] = {} } this.extend(j, k[m], l[m]) } else { k[m] = l[m] } } } return k }, clone: function(k) { var l, j; if (null === k || "object" !== typeof k) { return k } if (k instanceof Object) { l = (Object.prototype.toString.call(k) === "[object Array]") ? [] : {}; for (j in k) { if (Object.prototype.hasOwnProperty.call(k, j)) { l[j] = this.clone(k[j]) } } return l } }, parseVersion: function(l) { var m, j, k = []; if (!l || !l.length) { return k } k = l.split("."); for (m = 0, j = k.length; m < j; m += 1) { k[m] = /^[0-9]+$/.test(k[m]) ? parseInt(k[m], 10) : k[m] } return k }, isEqual: function(l, k) { var m, n, p, o, j; if (l === k) { return true } if (typeof l !== typeof k) { return false } if (l instanceof Object && k instanceof Object) { if (Object.prototype.toString.call(l) === "[object Array]" && Object.prototype.toString.call(k) === "[object Array]") { if (l.length !== k.length) { return false } for (m = 0, j = l.length; m < j; m += 1) { if (!this.isEqual(l[m], k[m])) { return false } } return true } if (Object.prototype.toString.call(l) === "[object Object]" && Object.prototype.toString.call(k) === "[object Object]") { for (m = 0; m < 2; m += 1) { for (p in l) { if (l.hasOwnProperty(p)) { if (!k.hasOwnProperty(p)) { return false } n = this.isEqual(l[p], k[p]); if (!n) { return false } } } o = l; l = k; k = o } return true } } return false }, createObject: (function() { var j = null , k = null; if (typeof Object.create === "function") { j = Object.create } else { k = function() {} ; j = function(l) { if (typeof l !== "object" && typeof l !== "function") { throw new TypeError("Object prototype need to be an object!") } k.prototype = l; return new k() } } return j }()), access: function(o, m) { var n = m || window, k, l, j; if (typeof o !== "string" || (typeof n !== "object" && n !== null)) { return } k = o.split("."); for (l = 0, j = k.length; l < j; l += 1) { if (l === 0 && k[l] === "window") { continue } if (!Object.prototype.hasOwnProperty.call(n, k[l])) { return } n = n[k[l]]; if (l < (j - 1) && !(n instanceof Object)) { return } } return n }, isNumeric: function(j) { var k = false; if (g.isUndefOrNull(j) || !(/\S/.test(j))) { return k } k = !isNaN(j * 2); return k }, isUpperCase: function(j) { return j === j.toUpperCase() && j !== j.toLowerCase() }, isLowerCase: function(j) { return j === j.toLowerCase() && j !== j.toUpperCase() }, extractResponseHeaders: function(l) { var n = {}, k, j, m = null; if (!l || !l.length) { l = [] } else { l = l.split("\n") } for (k = 0, j = l.length; k < j; k += 1) { m = l[k].split(": "); if (m.length === 2) { n[m[0]] = m[1] } } return n }, getTargetState: function(q) { var j = { a: ["innerText", "href"], input: { range: ["maxValue:max", "value"], checkbox: ["value", "checked"], radio: ["value", "checked"], image: ["src"] }, select: ["value"], button: ["value", "innerText"], textarea: ["value"] } , l = this.getTagName(q) , r = j[l] || null , m = null , k = null , n = 0 , p = 0 , o = null , s = ""; if (r !== null) { if (Object.prototype.toString.call(r) === "[object Object]") { r = r[q.type] || ["value"] } k = {}; for (s in r) { if (r.hasOwnProperty(s)) { if (r[s].indexOf(":") !== -1) { o = r[s].split(":"); k[o[0]] = q[o[1]] } else { if (r[s] === "innerText") { k[r[s]] = this.trim(q.innerText || q.textContent) } else { k[r[s]] = q[r[s]] } } } } } if (l === "select" && q.options && !isNaN(q.selectedIndex)) { k.index = q.selectedIndex; if (k.index >= 0 && k.index < q.options.length) { m = q.options[q.selectedIndex]; k.value = m.getAttribute("value") || m.getAttribute("label") || m.text || m.innerText; k.text = m.text || m.innerText } } return k }, getDocument: function(j) { var k = j; if (j && j.nodeType !== 9) { if (j.getRootNode) { k = j.getRootNode() } else { k = j.ownerDocument || j.document } } return k }, getWindow: function(k) { try { if (k.self !== k) { var j = g.getDocument(k); return (!g.isUndefOrNull(j.defaultView)) ? (j.defaultView) : (j.parentWindow) } } catch (l) { k = null } return k }, getOriginAndPath: function(j) { var l = {}, k; j = j || window.location; if (j.origin) { l.origin = j.origin } else { l.origin = (j.protocol || "") + "//" + (j.host || "") } l.path = (j.pathname || "").split(";", 1)[0]; if (l.origin.indexOf("file://") > -1) { k = l.path.match(/(.*)(\/.*app.*)/); if (k !== null) { l.path = k[2] } } return l }, getQueryString: function(q) { try { q = q.replace("?", "") + ""; if (q.length) { var l = q.split("&"); var m = {}; var p, o, j; for (var k = 0; k < l.length; k++) { p = (l[k]).split("="); o = decodeURIComponent(p[0]); if (o.length === 0) { continue } j = decodeURIComponent(p[1]); if (typeof m[o] === "undefined") { m[o] = j } else { if (m[o]instanceof Array) { m[o].push(j) } else { m[o] = [m[o], j] } } } return m } } catch (n) { return "" } }, getIFrameWindow: function(l) { var j = null; if (!l) { return j } try { j = l.contentWindow || (l.contentDocument ? l.contentDocument.parentWindow : null) } catch (k) {} return j }, getTagName: function(k) { var j = ""; if (g.isUndefOrNull(k)) { return j } if (k === document || k.nodeType === 9) { j = "document" } else { if (k === window || k === window.window) { j = "window" } else { if (typeof k === "string") { j = k.toLowerCase() } else { if (k.tagName) { j = k.tagName.toLowerCase() } else { if (k.nodeName) { j = k.nodeName.toLowerCase() } else { j = "" } } } } } return j }, getDcType: function(m) { var j, l, k = ""; if (g.isUndefOrNull(m) || !m.type) { return k } j = m.type.toLowerCase(); l = j + ":"; if (m.subType) { l += m.subType.toLowerCase() } k = h[l] || j; return k }, isIFrameDescendant: function(k) { var j = g.getWindow(k); return (j ? (j != DCX._getLocalTop()) : false) }, getOrientationMode: function(j) { var k = "INVALID"; if (typeof j !== "number") { return k } switch (j) { case 0: case 180: case 360: k = "PORTRAIT"; break; case 90: case -90: case 270: k = "LANDSCAPE"; break; default: k = "UNKNOWN"; break } return k }, clog: (function(j) { return function() {} }(window)), trim: function(j) { if (!j || !j.toString) { return j } return j.toString().replace(/^\s+|\s+$/g, "") }, ltrim: function(j) { if (!j || !j.toString) { return j } return j.toString().replace(/^\s+/, "") }, rtrim: function(j) { if (!j || !j.toString) { return j } return j.toString().replace(/\s+$/, "") }, setCookie: function(t, k, r, v, o, j) { var p, q, n, m, l = "", u, s = j ? ";secure" : ""; if (!t) { return } t = encodeURIComponent(t); k = encodeURIComponent(k); n = (o || location.hostname).split("."); u = ";path=" + (v || "/"); if (typeof r === "number") { if (this.isIE) { m = new Date(); m.setTime(m.getTime() + (r * 1000)); l = ";expires=" + m.toUTCString() } else { l = ";max-age=" + r } } for (q = n.length, p = (q === 1 ? 1 : 2); p <= q; p += 1) { document.cookie = t + "=" + k + ";domain=" + n.slice(-p).join(".") + u + l + s; if (this.getCookieValue(t) === k) { break } if (q === 1) { document.cookie = t + "=" + k + u + l + s } } }, getCookieValue: function(p, r) { var m, n, l, q, k = null, j; try { r = r || document.cookie; if (!p || !p.toString) { return null } p += "="; j = p.length; q = r.split(";"); for (m = 0, n = q.length; m < n; m += 1) { l = q[m]; l = g.ltrim(l); if (l.indexOf(p) === 0) { k = l.substring(j, l.length); break } } } catch (o) { k = null } return k }, getQueryStringValue: function(o, r, k) { var n, m, s, l = null, p; try { k = k || window.location.search; s = k.length; if (!o || !o.toString || !s) { return null } r = r || "&"; k = r + k.substring(1); o = r + o + "="; n = k.indexOf(o); if (n !== -1) { p = n + o.length; m = k.indexOf(r, p); if (m === -1) { m = s } l = decodeURIComponent(k.substring(p, m)) } } catch (q) {} return l }, addEventListener: (function() { if (window.addEventListener) { return function(k, j, l) { k.addEventListener(j, l, false) } } return function(k, j, l) { k.attachEvent("on" + j, l) } }()), matchTarget: function(u, q) { var o, m, n, t = -1, s, k, l, p, r, v = document; if (!u || !q) { return t } if (!this.browserService || !this.browserBaseService) { this.browserService = DCX.getService("browser"); this.browserBaseService = DCX.getService("browserBase") } if (q.idType === -2) { n = this.browserBaseService.getNodeFromID(q.id, q.idType); v = this.getDocument(n) } for (o = 0, p = u.length; o < p && t === -1; o += 1) { r = u[o]; if (typeof r === "string") { s = this.browserService.queryAll(r, v); for (m = 0, k = s ? s.length : 0; m < k; m += 1) { if (s[m]) { l = this.browserBaseService.ElementData.prototype.examineID(s[m]); if (l.idType === q.idType && l.id === q.id) { t = o; break } } } } else { if (r && r.id && r.idType && q.idType && q.idType.toString() === r.idType.toString()) { switch (typeof r.id) { case "string": if (r.id === q.id) { t = o } break; case "object": if (!r.cRegex) { r.cRegex = new RegExp(r.id.regex,r.id.flags) } r.cRegex.lastIndex = 0; if (r.cRegex.test(q.id)) { t = o } break } } } } return t }, WeakMap: (function() { function j(n, m) { var l, k; n = n || []; for (l = 0, k = n.length; l < k; l += 1) { if (n[l][0] === m) { return l } } return -1 } return function() { var k = []; this.set = function(m, n) { var l = j(k, m); k[l > -1 ? l : k.length] = [m, n] } ; this.get = function(m) { var l = k[j(k, m)]; return (l ? l[1] : undefined) } ; this.clear = function() { k = [] } ; this.has = function(l) { return (j(k, l) >= 0) } ; this.remove = function(m) { var l = j(k, m); if (l >= 0) { k.splice(l, 1) } } ; this["delete"] = this.remove } }()) }; if (typeof DCX === "undefined" || !DCX) { window.DCX = {} } DCX.utils = g }()); (function() { DCX.EventTarget = function() { this._handlers = {} } ; DCX.EventTarget.prototype = { constructor: DCX.EventTarget, publish: function(c, f) { var d = 0 , a = 0 , b = this._handlers[c] , e = { type: c, data: f }; if (typeof b !== "undefined") { for (a = b.length; d < a; d += 1) { b[d](e) } } }, subscribe: function(a, b) { if (!this._handlers.hasOwnProperty(a)) { this._handlers[a] = [] } this._handlers[a].push(b) }, unsubscribe: function(c, e) { var d = 0 , a = 0 , b = this._handlers[c]; if (b) { for (a = b.length; d < a; d += 1) { if (b[d] === e) { b.splice(d, 1); return } } } } } }()); DCX.ModuleContext = (function() { var a = ["broadcast", "getConfig:getModuleConfig", "listen", "post", "getXPathFromNode", "performDOMCapture", "performFormCompletion", "isInitialized", "getStartTime", "normalizeUrl"]; return function(f, d) { var h = {} , g = 0 , b = a.length , j = null , e = null , c = null; for (g = 0; g < b; g += 1) { j = a[g].split(":"); if (j.length > 1) { c = j[0]; e = j[1] } else { c = j[0]; e = j[0] } h[c] = (function(i) { return function() { var k = d.utils.convertToArray(arguments); k.unshift(f); return d[i].apply(d, k) } }(e)) } h.utils = d.utils; return h } }()); DCX.addService("config", function(a) { function d(f, e) { a.utils.extend(true, f, e); c.publish("configupdated", c.getConfig()) } var b = { core: {}, modules: {}, services: {} } , c = a.utils.extend(false, a.utils.createObject(new DCX.EventTarget()), { getConfig: function() { return b }, updateConfig: function(e) { d(b, e) }, getCoreConfig: function() { return b.core }, updateCoreConfig: function(e) { d(b.core, e) }, getServiceConfig: function(e) { return b.services[e] || {} }, updateServiceConfig: function(f, e) { if (typeof b.services[f] === "undefined") { b.services[f] = {} } d(b.services[f], e) }, getModuleConfig: function(e) { return b.modules[e] || {} }, updateModuleConfig: function(f, e) { if (typeof b.modules[f] === "undefined") { b.modules[f] = {} } d(b.modules[f], e) }, destroy: function() { b = { core: {}, modules: {}, services: {} } } }); return c }); DCX.addService("queue", function(q) { var K = q.utils , k = null , i = {} , F = 1500000 , p = q.getService("ajax") , c = q.getService("browser") , e = q.getService("encoder") , u = q.getService("serializer") , D = q.getService("config") , r = q.getService("message") , z = null , m = {} , H = true , h = true , y = { 5: { limit: 300, count: 0 }, 6: { limit: 400, count: 0 } } , d = [] , B = false , t = (function() { var Q = {}; function T(U) { return typeof Q[U] !== "undefined" } function M(U, V) { if (!T(U)) { Q[U] = { lastOffset: 0, data: [], queueId: U, url: V.url, eventThreshold: V.eventThreshold, sizeThreshold: V.sizeThreshold || 0, timerInterval: V.timerInterval, size: -1, serializer: V.serializer, encoder: V.encoder, crossDomainEnabled: !!V.crossDomainEnabled, crossDomainIFrame: V.crossDomainIFrame } } return Q[U] } function O(U) { if (T(U)) { delete Q[U] } } function R(U) { if (T(U)) { return Q[U] } return null } function P(V) { var U = R(V); if (U !== null) { U.data = [] } } function S(U) { var V = null; if (T(U)) { V = R(U).data; P(U) } return V } function N(W, Y) { var U = null , X = null , aa = window.dcBridge , V = window.iOSJSONShuttle; try { X = u.serialize(Y) } catch (Z) { X = "Serialization failed: " + (Z.name ? Z.name + " - " : "") + Z.message; Y = { error: X } } if ((typeof aa !== "undefined") && (typeof aa.addMessage === "function")) { aa.addMessage(X) } else { if ((typeof V !== "undefined") && (typeof V === "function")) { V(X) } else { if (T(W)) { U = R(W); U.data.push(Y); U.data = q.redirectQueue(U.data); if (U.sizeThreshold) { X = u.serialize(U.data); U.size = X.length } return U.data.length } } } return 0 } return { exists: T, add: M, remove: O, reset: function() { Q = {} }, get: R, clear: P, flush: S, push: N } }()); function n(M) { if (M && M.id) { K.extend(true, d[M.id - 1], { xhrRspEnd: r.createMessage({ type: 0 }).offset, success: M.success, statusCode: M.statusCode, statusText: M.statusText }) } } function w() { return window.location.pathname } function A(O, S, P, R) { var M = t.get(O) , Q = { name: S, value: P } , N = null; if (typeof S !== "string" || typeof P !== "string") { return } if (!M.headers) { M.headers = { once: [], always: [] } } N = !!R ? M.headers.always : M.headers.once; N.push(Q) } function g(O, R) { var Q = 0 , N = 0 , M = t.get(O) , S = M.headers , P = null; R = R || {}; function T(V, X) { var W = 0 , U = 0 , Y = null; for (W = 0, U = V.length; W < U; W += 1) { Y = V[W]; X[Y.name] = Y.value } } if (S) { P = [S.always, S.once]; for (Q = 0, N = P.length; Q < N; Q += 1) { T(P[Q], R) } } return R } function o(N) { var M = null , O = null; if (!t.exists(N)) { throw new Error("Queue: " + N + " does not exist!") } M = t.get(N); O = M ? M.headers : null; if (O) { O.once = [] } } function l() { var N = 0, M, P, O = q.provideRequestHeaders(); if (O && O.length) { for (N = 0, M = O.length; N < M; N += 1) { P = O[N]; A("DEFAULT", P.name, P.value, P.recurring) } } return N } function J(Q) { var P, M, O = [], N = ""; if (!Q || !Q.length) { return N } for (P = 0, M = Q.length; P < M; P += 1) { O[Q[P].type] = true } for (P = 0, M = O.length; P < M; P += 1) { if (O[P]) { if (N) { N += "," } N += P } } return N } function j(ab, R) { var V = t.get(ab), ad = V.url ? t.flush(ab) : null, O = ad ? ad.length : 0, Q = { "Content-Type": "application/json", "X-PageId": q.getPageId(), "X-Discover": "device (UIC) Lib/12.1.12", "X-DiscoverType": "GUI", "X-Discover-Page-Url": w(), "X-Discover-SyncXHR": (!!R).toString() }, P = null, M = r.createMessage({ type: 0 }).offset, Z = V.serializer || "json", N = V.encoder, X, S, U, ac = q.getState() === "unloading", aa = null, ae = k.dcxWorker || null; if (!O || !V) { return } U = M - ad[O - 1].offset; if (U > (F + 60000)) { return } V.lastOffset = ad[O - 1].offset; Q["X-Discover-MessageTypes"] = J(ad); ad = r.wrapMessages(ad); if (k.xhrLogging) { P = ad.serialNumber; d[P - 1] = { serialNumber: P, xhrReqStart: M }; ad.log = { xhr: d } } l(); g(ab, Q); function T() { var af = { state: false, error: "Failed to load worker file." }; DCX.logCustomEvent("workerStatus", af, 6); k.dcxWorker = null; ae = null; DCX.setWorkerStatus(false) } function W() { return new Promise(function(ag, af) { ae.onerror = function(ah) { T() } ; ae.onmessageerror = function(ah) { T() } ; ae.onmessage = function(ai) { var ah; ah = ai.data; n(ah) } } ) } if (ae && !DCX.getWorkerStatus()) { W().then(function() { console.log("Worker successfully loaded"); workerLoaded = true; DCX.setWorkerStatus(true) }) } if (ae && !(R || ac)) { ae.postMessage({ id: P, url: V.url, headers: Q, data: ad, isUnloading: ac }) } else { if (Z) { ad = u.serialize(ad, Z) } if (N) { S = e.encode(ad, N); if (S) { if (S.data && !S.error) { ad = S.data; Q["Content-Encoding"] = S.encoding } else { ad = S.error } } } if (V.crossDomainEnabled) { aa = K.getIFrameWindow(V.crossDomainIFrame); if (!aa) { return } X = { request: { id: P, url: V.url, async: !R, headers: Q, data: ad } }; if (!K.isIE && typeof window.postMessage === "function") { aa.postMessage(X, V.crossDomainIFrame.src) } else { try { aa.sendMessage(X) } catch (Y) { return } } } else { p.sendRequest({ id: P, oncomplete: n, url: V.url, async: !R, isUnloading: ac, headers: Q, data: ad }) } } o(ab) } function I(Q) { var N = null , P = k.queues , O = 0; try { if (P && P.length && P.length > 0) { for (O = 0; O < P.length; O += 1) { N = P[O]; j(N.qid, Q) } return true } } catch (M) { return false } } function L(N, S) { var U, O = r.createMessage(S), T = t.get(N), aa, M, Q; var Y = O.screenViewPath , P = q.getCoreConfig() , Z = P && P.screenViewAllowlist || [] , R = P && P.screenViewBlocklist || []; if (Z && Z.length) { var X = DCX.isScreenviewInAccessList(Y, Z); if (!X) { return } } if (R && R.length) { var W = DCX.isScreenviewInAccessList(Y, R); if (W) { return } } U = T.data.length; if (U) { M = O.offset - T.data[U - 1].offset; if (M > F) { t.flush(N); var V = { destroyedReason: "UIC destroyed while Safety check to ensure the data to be added is not stale beyond the inactivity timeout.", destroyedBy: "queueManager" }; DCX.setState("addToQueue", V); q.destroy(); return } } U = t.push(N, O); aa = T.size; if ((U >= T.eventThreshold || aa >= T.sizeThreshold) && H && q.getState() !== "unloading") { Q = q.getCurrentWebEvent(); if (Q.type === "click" && q.getState() == "unloading" && U > 0) { if (h) { h = false; window.setTimeout(function() { if (t.exists(N)) { j(N); h = true } }, 500) } } else { j(N) } } } function a(O) { var M, N = false; if (!O || !O.type) { return true } M = y[O.type]; if (M) { M.count += 1; if (M.count > M.limit) { N = true; if (M.count === M.limit + 1) { L("DEFAULT", { type: 16, dataLimit: { messageType: O.type, maxCount: M.limit } }) } } } return N } function G(O) { var N = null , R = k.queues , Q = "" , P = 0 , M = 0; for (P = 0; P < R.length; P += 1) { N = R[P]; if (N && N.modules) { for (M = 0; M < N.modules.length; M += 1) { Q = N.modules[M]; if (Q === O) { return N.qid } } } } return z.qid } function x(O, M) { m[O] = window.setTimeout(function N() { j(O); m[O] = window.setTimeout(N, M) }, M) } function f(N) { var M = false; if (N && m[N]) { window.clearTimeout(m[N]); delete m[N]; M = true } return M } function v() { var M = 0; for (M in m) { if (m.hasOwnProperty(M)) { f(M) } } m = {} } function b(N) { var M; if (!N) { return } if (f(N)) { M = t.get(N); if (M.timerInterval) { x(N, M.timerInterval) } } } function E(M) {} function s(M) { k = M; i = q.getCoreConfig(); F = K.getValue(i, "inactivityTimeout", 600000); K.forEach(k.queues, function(N, O) { var P = null; if (N.qid === "DEFAULT") { z = N } if (N.crossDomainEnabled) { P = c.query(N.crossDomainFrameSelector); if (!P) { q.fail("Cross domain iframe not found") } } t.add(N.qid, { url: N.endpoint, eventThreshold: N.maxEvents, sizeThreshold: N.maxSize || 0, serializer: N.serializer, encoder: N.encoder, timerInterval: N.timerInterval || 0, crossDomainEnabled: N.crossDomainEnabled || false, crossDomainIFrame: P }); if (typeof N.timerInterval !== "undefined" && N.timerInterval > 0) { x(N.qid, N.timerInterval) } }); D.subscribe("configupdated", E); B = true } function C() { if (H) { I(!k.asyncReqOnUnload) } D.unsubscribe("configupdated", E); v(); t.reset(); k = null; z = null; B = false } return { init: function() { if (!B) { s(D.getServiceConfig("queue") || {}) } else {} }, destroy: function() { C() }, _getQueue: function(M) { return t.get(M).data }, setAutoFlush: function(M) { if (M === true) { H = true } else { H = false } }, flush: function(M) { M = M || z.qid; if (!t.exists(M)) { throw new Error("Queue: " + M + " does not exist!") } j(M) }, flushAll: function(M) { return I(!!M) }, post: function(N, O, M) { if (!q.isInitialized()) { return } M = M || G(N); if (!t.exists(M)) { return } if (!a(O)) { L(M, O) } }, resetFlushTimer: function(M) { M = M || z.qid; if (!t.exists(M)) { return } b(M) } } }); DCX.addService("browserBase", function(r) { var g, L = r.utils, h = { optgroup: true, option: true, nobr: true }, p = {}, e, m = null, A, w, f, q, F = false; function s() { e = r.getService("config"); m = r.getService("serializer"); A = e ? e.getServiceConfig("browser") : {}; w = A.hasOwnProperty("blacklist") ? A.blacklist : []; f = A.hasOwnProperty("customid") ? A.customid : [] } function b() { s(); if (e) { e.subscribe("configupdated", s) } F = true } function G() { if (e) { e.unsubscribe("configupdated", s) } F = false } function v(P) { var N, M, O; if (!P || !P.id || typeof P.id !== "string") { return false } for (N = 0, M = w.length; N < M; N += 1) { if (typeof w[N] === "string") { if (P.id === w[N]) { return false } } else { if (typeof w[N] === "object") { if (!w[N].cRegex) { w[N].cRegex = new RegExp(w[N].regex,w[N].flags) } w[N].cRegex.lastIndex = 0; if (w[N].cRegex.test(P.id)) { return false } } } } return true } function o(O, P) { var M = { type: null, subType: null }, N; if (!O) { return M } N = O.type; switch (N) { case "focusin": N = "focus"; break; case "focusout": N = "blur"; break; default: break } M.type = N; return M } function y(N) { var M = { type: null, subType: null }; if (!N) { return M } M.type = L.getTagName(N); M.subType = N.type || null; return M } function c(M, O, N) { var S = { HTML_ID: "-1", XPATH_ID: "-2", ATTRIBUTE_ID: "-3" }, R, P = null, Q; if (!M || !O) { return P } R = N || window.document; O = O.toString(); if (O === S.HTML_ID) { if (R.getElementById) { P = R.getElementById(M) } else { if (R.querySelector) { P = R.querySelector("#" + M) } } } else { if (O === S.ATTRIBUTE_ID) { Q = M.split("="); if (R.querySelector) { P = R.querySelector("[" + Q[0] + '="' + Q[1] + '"]') } } else { if (O === S.XPATH_ID) { P = p.xpath(M, R) } } } return P } q = (function() { var M = { nobr: true, p: true }; return function(S, P) { var V, T, ac = document.documentElement, U = false, aa = null, R = null, Y = null, Z = [], N, X = true, Q = r._getLocalTop(), O = "", W = false, ad; while (X) { X = false; O = L.getTagName(S); if (O && !W) { if (M[O]) { S = S.parentNode; X = true; continue } } for (U = v(S); S && [1, 9].indexOf(S.nodeType) > -1 && S !== document && (P || !U); U = v(S)) { Y = S.parentNode; if (!Y) { R = L.getWindow(S); if (!R) { return Z } Y = (R !== Q) ? R.frameElement : ac } aa = Y.firstChild; if (!aa) { Z.push(["XPath Error(1)"]); S = null; break } for (T = 0; aa; aa = aa.nextSibling) { if (aa.nodeType === 1 && L.getTagName(aa) === O) { if (aa === S) { N = [O, T]; if (W) { N.push("h"); W = false } Z[Z.length] = N; break } T += 1 } } if (Y.nodeType === 11) { S = Y.host; W = true } else { S = Y } O = L.getTagName(S) } if (U && !P) { N = [S.id]; if (W) { N.push("h"); W = false } Z[Z.length] = N; if (L.isIFrameDescendant(S)) { X = true; S = L.getWindow(S).frameElement } else { try { if (!ac.contains(S)) { X = true; ad = S.getRootNode(); S = ad.host; W = true } } catch (ab) {} } } } return Z.reverse() } }()); function C(M) { var N = "null"; if (!M || !M.length) { return N } N = m.serialize(M, "json"); return N } function u(O, N, Q) { var P, M; M = q(O, !!N); if (Q) { P = M } else { P = C(M) } return P } function K(N) { var O = { left: -1, top: -1 }, M; N = N || document; M = N.documentElement || N.body.parentNode || N.body; O.left = Math.round((typeof window.pageXOffset === "number") ? window.pageXOffset : M.scrollLeft); O.top = Math.round((typeof window.pageYOffset === "number") ? window.pageYOffset : M.scrollTop); return O } function J(M) { return M && typeof M.originalEvent !== "undefined" && typeof M.isDefaultPrevented !== "undefined" && !M.isSimulated } function j(M) { if (!M) { return null } if (M.type && M.type.indexOf("touch") === 0) { if (J(M)) { M = M.originalEvent } if (M.type === "touchstart") { M = M.touches[M.touches.length - 1] } else { if (M.type === "touchend") { M = M.changedTouches[0] } } } return M } function t(P) { var S = P || window.event , R = document.documentElement , M = document.body , Q = false , O = null , N = 0; if (J(S)) { S = S.originalEvent } if (typeof P === "undefined" || typeof S.target === "undefined") { S.target = S.srcElement || window.window; S.timeStamp = Number(new Date()); if (S.pageX === null || typeof S.pageX === "undefined") { S.pageX = S.clientX + ((R && R.scrollLeft) || (M && M.scrollLeft) || 0) - ((R && R.clientLeft) || (M && M.clientLeft) || 0); S.pageY = S.clientY + ((R && R.scrollTop) || (M && M.scrollTop) || 0) - ((R && R.clientTop) || (M && M.clientTop) || 0) } S.preventDefault = function() { this.returnValue = false } ; S.stopPropagation = function() { this.cancelBubble = true } } if (window.chrome && S.path !== undefined && S.type === "click") { if (S.path.length === undefined) { return S } for (N = 0; N < S.path.length; N++) { if (L.getTagName(S.path[N]) === "button") { Q = true; O = S.path[N]; N = S.path.length } } if (Q) { return { originalEvent: S, target: O, srcElement: O, type: S.type, pageX: document.body.scrollLeft + O.getBoundingClientRect().left, pageY: document.body.scrollTop + O.getBoundingClientRect().top } } } return S } function x(O) { var N, M, P, Q = null; if (!O || !O.type) { return null } if (O.type.indexOf("touch") === 0) { Q = j(O).target } else { if (typeof O.composedPath === "function") { P = O.composedPath(); if (P && P.length) { Q = P[0]; for (N = 0, M = P.length; N < M; N += 1) { if (L.getTagName(P[N]) === "a") { Q = P[N]; break } } } else { Q = O.target || window.window } } else { if (O.srcElement) { Q = O.srcElement } else { Q = O.target } } } while (Q && h[L.getTagName(Q)]) { if (Q.parentElement) { Q = Q.parentElement } else { break } } return Q } function I(N) { var Q = 0 , P = 0 , O = document.documentElement , M = document.body; N = j(N); if (N) { if (N.pageX || N.pageY) { Q = N.pageX; P = N.pageY } else { if (N.clientX || N.clientY) { Q = N.clientX + (O ? O.scrollLeft : (M ? M.scrollLeft : 0)) - (O ? O.clientLeft : (M ? M.clientLeft : 0)); P = N.clientY + (O ? O.scrollTop : (M ? M.scrollTop : 0)) - (O ? O.clientTop : (M ? M.clientTop : 0)) } } } return { x: Q, y: P } } p.xpath = function(U, W) { var S = null, N, T = null, X = false, M, Q, P, O, R, V; if (!U) { return null } S = m.parse(U); W = W || document; N = W; if (!S) { return null } for (Q = 0, R = S.length; Q < R && N; Q += 1) { T = S[Q]; X = T.length > 1 && T[T.length - 1] === "h"; if (T.length === 1 || (T.length === 2 && X)) { if (W.getElementById) { N = W.getElementById(T[0]) } else { if (W.querySelector) { N = W.querySelector("#" + T[0]) } else { N = null } } } else { for (P = 0, O = -1, V = N.childNodes.length; P < V; P += 1) { if (N.childNodes[P].nodeType === 1 && L.getTagName(N.childNodes[P]) === T[0].toLowerCase()) { O += 1; if (O === T[1]) { N = N.childNodes[P]; break } } } if (O !== T[1]) { return null } } if (!N) { return null } if (X) { if (Q < R - 1) { if (!N.shadowRoot) { return null } N = N.shadowRoot; W = N } } M = L.getTagName(N); if (M === "frame" || M === "iframe") { N = L.getIFrameWindow(N).document; W = N } } return (N === W || !N) ? null : N } ; function l(M, N) { this.x = Math.round(M || 0); this.y = Math.round(N || 0) } function a(N, M) { this.width = Math.round(N || 0); this.height = Math.round(M || 0) } function d(N, O) { var Q, M, P; O = x(N); Q = this.examineID(O); M = y(O); P = this.examinePosition(N, O); this.element = O; this.id = Q.id; this.idType = Q.idType; this.type = M.type; this.subType = M.subType; this.state = this.examineState(O); this.position = new l(P.x,P.y); this.size = new a(P.width,P.height); this.xPath = Q.xPath; this.name = Q.name } d.HTML_ID = -1; d.XPATH_ID = -2; d.ATTRIBUTE_ID = -3; d.prototype.examineID = function(S, N) { var Q = { id: "", idType: 0, xPath: "", name: "" }, M = f.length, P, O = document.documentElement, T; if (!S) { return Q } Q.xPath = u(S); Q.name = S.name; try { T = typeof O.contains === "function" ? O.contains(S) : true; if ((T || N) && (!L.getWindow(S) || !L.isIFrameDescendant(S))) { if (v(S)) { Q.id = S.id; Q.idType = d.HTML_ID } else { if (f.length && S.attributes) { while (M) { M -= 1; P = S.attributes[f[M]]; if (typeof P !== "undefined") { Q.id = f[M] + "=" + (P.value || P); Q.idType = d.ATTRIBUTE_ID } } } } } } catch (R) {} if (!Q.id) { Q.id = Q.xPath; if (Q.id !== "null") { Q.idType = d.XPATH_ID } } return Q } ; d.prototype.examineState = function(M) { return L.getTargetState(M) } ; function E() { var N = 1, O, Q, M; if (document.body.getBoundingClientRect) { try { O = document.body.getBoundingClientRect() } catch (P) { return N } Q = O.right - O.left; M = document.body.offsetWidth; N = Math.round((Q / M) * 100) / 100 } return N } function n(N) { var P, M, O, R; if (!N || !N.getBoundingClientRect) { return { x: 0, y: 0, width: 0, height: 0 } } try { P = N.getBoundingClientRect(); R = K(document) } catch (Q) { return { x: 0, y: 0, width: 0, height: 0 } } M = { x: P.left + R.left, y: P.top + R.top, width: P.right - P.left, height: P.bottom - P.top }; if (L.isIE) { M.x -= document.documentElement.clientLeft; M.y -= document.documentElement.clientTop; O = E(); if (O !== 1) { M.x = Math.round(M.x / O); M.y = Math.round(M.y / O); M.width = Math.round(M.width / O); M.height = Math.round(M.height / O) } } return M } d.prototype.examinePosition = function(N, O) { var P = I(N) , M = n(O); M.x = (P.x || P.y) ? Math.round(Math.abs(P.x - M.x)) : M.width / 2; M.y = (P.x || P.y) ? Math.round(Math.abs(P.y - M.y)) : M.height / 2; return M } ; function H() { var M = (typeof window.orientation === "number") ? window.orientation : 0; if (L.isLandscapeZeroDegrees) { if (Math.abs(M) === 180 || Math.abs(M) === 0) { M = 90 } else { if (Math.abs(M) === 90) { M = 0 } } } return M } function B(S) { var P, M, R, Q, O, N; if (S) { return S } R = r.getCoreConfig() || {}; O = R.modules; S = {}; for (N in O) { if (O.hasOwnProperty(N) && O[N].events) { for (P = 0, M = O[N].events.length; P < M; P += 1) { Q = O[N].events[P]; if (Q.state) { S[Q.name] = Q.state } } } } return S } function i(M) { var N; g = B(g); if (g[M.type]) { N = L.getValue(M, g[M.type], null) } return N } function k(N) { var P, M, O; this.data = N.data || null; this.delegateTarget = N.delegateTarget || null; if (N.gesture || (N.originalEvent && N.originalEvent.gesture)) { this.gesture = N.gesture || N.originalEvent.gesture; this.gesture.idType = (new d(this.gesture,this.gesture.target)).idType } N = t(N); P = I(N); this.custom = false; this.nativeEvent = this.custom === true ? null : N; this.position = new l(P.x,P.y); this.target = new d(N,N.target); this.orientation = H(); O = i(N); if (O) { this.target.state = O } this.timestamp = (new Date()).getTime(); M = o(N, this.target); this.type = M.type; this.subType = M.subType } function D(M) { if (r.isInitialized()) { r._publishEvent(new k(M)) } else {} } function z(R) { var Q = "", O = [], N, M = "", P = []; if (!(this instanceof z)) { return null } if (typeof R !== "object" || !R.nodeType) { this.fullXpath = ""; this.xpath = ""; this.fullXpathList = []; this.xpathList = []; return } if (R.nodeType === 3) { R = R.parentElement } P = q(R, false); N = P[0]; if (P.length && (N.length === 1 || (N.length === 2 && N[1] === "h"))) { O = q(R, true) } else { O = L.clone(P) } this.xpath = C(P); this.xpathList = P; this.fullXpath = C(O); this.fullXpathList = O; this.applyPrefix = function(U) { var S, T; if (!(U instanceof z) || !U.fullXpathList.length) { return } T = U.fullXpathList[U.fullXpathList.length - 1]; S = this.fullXpathList.shift(); if (L.isEqual(S[0], T[0])) { this.fullXpathList = U.fullXpathList.concat(this.fullXpathList) } else { this.fullXpathList.unshift(S); return } this.fullXpath = C(this.fullXpathList); S = this.xpathList.shift(); if (S.length === 1) { this.xpathList.unshift(S); return } this.xpathList = U.xpathList.concat(this.xpathList); this.xpath = C(this.xpathList) } ; this.compare = function(S) { if (!(S instanceof z)) { return 0 } return (this.fullXpathList.length - S.fullXpathList.length) } ; this.isSame = function(S) { var T = false; if (!(S instanceof z)) { return T } if (this.compare(S) === 0) { T = (this.fullXpath === S.fullXpath) } return T } ; this.containedIn = function(U, T) { var W, V, S, X; if (!(U instanceof z)) { return false } if (U.fullXpathList.length > this.fullXpathList.length) { return false } for (W = 0, S = U.fullXpathList.length; W < S; W += 1) { if (!L.isEqual(U.fullXpathList[W], this.fullXpathList[W])) { return false } } if (!T) { for (V = W, S = this.fullXpathList.length; V < S; V += 1) { X = this.fullXpathList[V]; if (X[X.length - 1] === "h") { return false } } } return true } } z.prototype = (function() { return {} }()); return { init: function() { if (!F) { b() } else {} }, destroy: function() { G() }, WebEvent: k, ElementData: d, Xpath: z, processDOMEvent: D, getNormalizedOrientation: H, getXPathFromNode: function(N, O, M, P) { return u(O, M, P) }, getNodeFromID: c, queryDom: p } }); DCX.addService("browser", function(d) { var m = d.utils , h = d.getService("config") , f = d.getService("browserBase") , n = d.getService("ajax") , g = null , c = null , k = h ? h.getServiceConfig("browser") : {} , b = m.getValue(k, "useCapture", true) , l = false , e = { NO_QUERY_SELECTOR: "NOQUERYSELECTOR" } , p = function(q) { return function(s) { var r = new f.WebEvent(s); if (s.type === "resize" || s.type === "hashchange") { setTimeout(function() { q(r) }, 5) } else { q(r) } } } , a = { list2Array: function(s) { var r = s.length, q = [], t; if (typeof s.length === "undefined") { return [s] } for (t = 0; t < r; t += 1) { q[t] = s[t] } return q }, find: function(s, r, q) { q = q || "css"; return this.list2Array(this[q](s, r)) }, css: function(r, u) { var v = this , y = null , w = document.getElementsByTagName("body")[0] , x = k.jQueryObject ? m.access(k.jQueryObject) : window.jQuery , t = k.sizzleObject ? m.access(k.sizzleObject) : window.Sizzle; if (typeof document.querySelectorAll === "undefined") { v.css = function(A, z) { z = z || document; return v.Sizzle(A, z) } ; if (typeof v.Sizzle === "undefined") { try { if (w === t("html > body", document)[0]) { v.Sizzle = t } } catch (s) { try { if (w === x(document).find("html > body").get()[0]) { v.Sizzle = function(A, z) { return x(z).find(A).get() } } } catch (q) { d.fail("Neither querySelectorAll nor Sizzle was found.", e.NO_QUERY_SELECTOR) } } } } else { v.css = function(A, z) { z = z || document; return z.querySelectorAll(A) } } return v.css(r, u) } } , o = (function() { var q = new m.WeakMap(); return { add: function(r) { var s = q.get(r) || [p(r), 0]; s[1] += 1; q.set(r, s); return s[0] }, find: function(r) { var s = q.get(r); return s ? s[0] : null }, remove: function(r) { var s = q.get(r); if (s) { s[1] -= 1; if (s[1] <= 0) { q.remove(r) } } } } }()); function j() { var r = k.jQueryObject ? m.access(k.jQueryObject) : window.jQuery , q = k.sizzleObject ? m.access(k.sizzleObject) : window.Sizzle; if (!document.querySelectorAll && !r && !q) { d.fail("querySelectorAll does not exist!", e.NO_QUERY_SELECTOR) } } function i() { a.xpath = f.queryDom.xpath; j(); if (typeof document.addEventListener === "function") { g = function(s, q, r) { s.addEventListener(q, r, b) } ; c = function(s, q, r) { s.removeEventListener(q, r, b) } } else { if (typeof document.attachEvent !== "undefined") { g = function(s, q, r) { s.attachEvent("on" + q, r) } ; c = function(s, q, r) { s.detachEvent("on" + q, r) } } else { throw new Error("Unsupported browser") } } l = true } return { init: function() { if (!l) { i() } else {} }, destroy: function() { l = false }, getServiceName: function() { return "W3C" }, query: function(t, r, q) { try { return a.find(t, r, q)[0] || null } catch (s) { return [] } }, queryAll: function(t, r, q) { try { return a.find(t, r, q) } catch (s) { return [] } }, subscribe: function(q, t, r) { var s = o.add(r); g(t, q, s) }, unsubscribe: function(q, u, r) { var s = o.find(r); if (s) { try { c(u, q, s) } catch (t) {} o.remove(r) } } } }); DCX.addService("ajax", function(e) { var k = e.utils, i, m = false, b = false, j = false; function g(p) { var o = "" , n = []; for (o in p) { if (p.hasOwnProperty(o)) { n.push([o, p[o]]) } } return n } function h(p) { var o = "" , n = "?"; for (o in p) { if (p.hasOwnProperty(o)) { n += encodeURIComponent(o) + "=" + encodeURIComponent(p[o]) + "&" } } return n.slice(0, -1) } function l(n) { var p, q = false, o = h(n.headers); if (typeof n.data === "string") { p = n.data } else { p = n.data ? new Uint8Array(n.data) : "" } q = navigator.sendBeacon(n.url + o, p); return q } function f(o) { var q = o.headers || {} , p = o.id || 0 , n = o.oncomplete || function() {} ; q["X-Requested-With"] = "fetch"; window.fetch(o.url, { method: o.type, headers: q, body: o.data, mode: "cors", credentials: "omit", keepalive: o.isUnloading, cache: "no-store" }).then(function(s) { var r = { success: s.ok, statusCode: s.status, statusText: s.statusText, id: p }; if (r.success) { s.json().then(function(t) { r.data = t; n(r) })["catch"](function(t) { r.statusCode = 1; r.statusText = t.message; n(r) }); n(r) } })["catch"](function(s) { var r = { success: false, statusCode: 2, statusText: s.message, id: p }; n(r); o.headers["X-Requested-With"] = ""; d(o) }) } function a(o) { if (typeof o !== "function") { return } return function n(q) { var s, p, r = false; if (!q) { return } s = q.target; if (!s) { return o(q) } p = s.status; if (p >= 200 && p < 300) { r = true } o({ headers: k.extractResponseHeaders(s.getAllResponseHeaders()), responseText: s.responseText, statusCode: p, statusText: s.statusText, id: s.id, success: r }) } } function d(v) { var u = i(), o = [["X-Requested-With", "XMLHttpRequest"]], t = 0, p = typeof v.async !== "boolean" ? true : v.async, r = "", s = null, q, n; if (v.headers) { o = o.concat(g(v.headers)) } if (v.contentType) { o.push(["Content-Type", v.contentType]) } u.open(v.type.toUpperCase(), v.url, p); for (q = 0, n = o.length; q < n; q += 1) { r = o[q]; if (r[0] && r[1]) { u.setRequestHeader(r[0], r[1]) } } if (v.error) { v.error = a(v.error); u.addEventListener("error", v.error) } u.onreadystatechange = s = function() { if (u.readyState === 4) { u.onreadystatechange = s = function() {} ; if (v.timeout) { window.clearTimeout(t) } v.oncomplete({ id: v.id, headers: k.extractResponseHeaders(u.getAllResponseHeaders()), responseText: (u.responseText || null), statusCode: u.status, statusText: u.statusText, success: (u.status >= 200 && u.status < 300) }); u = null } } ; u.send(v.data || null); s(); if (v.timeout) { t = window.setTimeout(function() { if (!u) { return } u.onreadystatechange = function() {} ; if (u.readyState !== 4) { u.abort(); if (typeof v.error === "function") { v.error({ id: v.id, statusCode: u.status, statusText: "timeout", success: false }) } } v.oncomplete({ id: v.id, headers: k.extractResponseHeaders(u.getAllResponseHeaders()), responseText: (u.responseText || null), statusCode: u.status, statusText: "timeout", success: false }); u = null }, v.timeout) } } function c() { var n = e.getServiceConfig("queue"); if (typeof window.XMLHttpRequest !== "undefined") { i = function() { return new XMLHttpRequest() } } else { i = function() { return new ActiveXObject("Microsoft.XMLHTTP") } } if (n) { m = k.getValue(n, "useBeacon", true) && (typeof navigator.sendBeacon === "function"); b = k.getValue(n, "useFetch", true) && (typeof window.fetch === "function") } j = true } return { init: function() { if (!j) { c() } }, destroy: function() { j = false }, sendRequest: function(n) { var p = true, o; n.type = n.type || "POST"; if ((n.isUnloading || !n.async) && m) { p = false; o = l(n); if (!o) { p = true } } if (p) { if (n.isUnloading && b) { f(n) } else { d(n) } } } } }); DCX.addService("domCapture", function(G) { var m = G.getService("config"), n = G.getService("browserBase"), d = G.getService("browser"), C, k, h = { maxMutations: 100, maxLength: 1000000, captureShadowDOM: false, captureFrames: false, removeScripts: true, removeComments: true, captureStyle: true, removeBase64: 50000 }, aj = { childList: true, attributes: true, attributeOldValue: true, characterData: true, subtree: true }, j = { attributes: true, attributeOldValue: true, subtree: true }, a = (typeof window.MutationObserver !== "undefined"), E, P = aj, x, s = j, W = [], Q = [], D = [], ak = [], B = [], F = 0, N = 100, c = false, v = false, X = false, R = 1, y = function() {}, A = function() {}, I = function() {}, S = G._publishEvent, aq = G.utils; function O() { ak = []; B = []; F = 0; c = false } function ae(av) { var au, at, ar; if (!av || !av.length) { return } av = av.sort(function(ax, aw) { return ax.compare(aw) }); for (au = 0; au < av.length; au += 1) { ar = av[au]; for (at = au + 1; at < av.length; at += 0) { if (av[at].containedIn(ar)) { av.splice(at, 1) } else { at += 1 } } } } function w(au) { var at, ar; if (!au) { return au } for (at = 0, ar = au.length; at < ar; at += 1) { delete au[at].oldValue } return au } function aa(aw, au) { var at, ar, av = -1; if (!aw || !au) { return av } for (at = 0, ar = aw.length; at < ar; at += 1) { if (aw[at].name === au) { av = at; break } } return av } function H(av, ax) { var au, at, ar, aw; for (au = 0, at = av.length, aw = false; au < at; au += 1) { ar = av[au]; if (ar.name === ax.name) { if (ar.oldValue === ax.value) { av.splice(au, 1) } else { ar.value = ax.value } aw = true; break } } if (!aw) { av.push(ax) } return av } function V(ay, ar) { var ax, av, au, az, aB, aA, aw, at = 0; ay.removedNodes = ar.removedNodes.length; ay.addedNodes = aq.convertToArray(ar.addedNodes); for (ax = 0, az = ak.length; ax < az; ax += 1) { aA = ak[ax]; if (ay.isSame(aA)) { if (ay.removedNodes) { for (av = 0; av < ar.removedNodes.length; av += 1) { au = aA.addedNodes.indexOf(ar.removedNodes[av]); if (au !== -1) { aA.addedNodes.splice(au, 1); ay.removedNodes -= 1 } } } aA.removedNodes += ay.removedNodes; aA.addedNodes.concat(ay.addedNodes); if (!aA.removedNodes && !aA.addedNodes.length) { aw = false; for (av = 0; av < ak.length; av += 1) { if (aA !== ak[av] && ak[av].containedIn(aA)) { aw = true; break } } if (!aw) { ak.splice(ax, 1); at = -1 } } aB = true; break } } if (!aB) { ak.push(ay); at = 1 } return at } function ag(at, ax) { var av, au, ar, ay = false, aw, az; for (av = 0, ar = ak.length; !ay && av < ar; av += 1) { az = ak[av]; if (at.containedIn(az)) { aw = az.addedNodes; for (au = 0; au < aw.length; au += 1) { if (aw[au].contains && aw[au].contains(ax)) { ay = true; break } } } } return ay } function g(ar) { var at = ar.attributeName; return at === "type" && ar.oldValue === "password" && ar.target[at] === "text" } function l(ar) { var au = G.getService("config") , at = au.getServiceConfig("message"); if (at && at.maskVisiblePasswords) { ar.target.setAttribute("dcxMaskVisiblePassword", true) } } function af(ar) { var at = g(ar); if (at) { l(ar) } } function M(aw, ar) { var au, ax, az, av, aA, ay = null, at = 0; az = ar.attributeName; if (g(ar)) { l(ar); return at } if (az === "checked" || az === "selected") { ay = n.ElementData.prototype.examineID(ar.target); if (C.isPrivacyMatched(ay)) { return at } ay = null } if (az === "value") { ay = n.ElementData.prototype.examineID(ar.target); ay.currState = aq.getTargetState(ar.target) || {}; if (ay.currState.value) { C.applyPrivacyToTarget(ay) } else { ay = null } } aw.attributes = [{ name: az, oldValue: ar.oldValue, value: ay ? ay.currState.value : ar.target.getAttribute(az) }]; av = aw.attributes[0]; if (av.oldValue === av.value) { return at } for (au = 0, ax = B.length, aA = false; au < ax; au += 1) { ay = B[au]; if (aw.isSame(ay)) { ay.attributes = H(ay.attributes, av); if (!ay.attributes.length) { B.splice(au, 1); at = -1 } else { if (ag(aw, ar.target)) { B.splice(au, 1); at = -1 } } aA = true; break } } if (!aA && !ag(aw, ar.target)) { B.push(aw); at = 1 } return at } function r(av) { var ax, ar, aw, at, au; if (!av || !av.length) { return } if (c) { F += av.length; return } for (ax = 0, ar = av.length; ax < ar && F < N; ax += 1) { at = av[ax]; au = new n.Xpath(at.target); if (au) { aw = au.fullXpathList; if (aw.length && aw[0][0] === "html") { switch (at.type) { case "characterData": case "childList": F += V(au, at); break; case "attributes": F += M(au, at); break; default: aq.clog("Unknown mutation type: " + at.type); break } } } } if (F >= N) { c = true; F += ar - ax } } function ap() { var av; var ax, ar, aw, at, au; av = new window.MutationObserver(function(ay) { if (ay) { if (!ay || !ay.length) { return } for (ax = 0, ar = ay.length; ax < ar && F < N; ax += 1) { at = ay[ax]; au = new n.Xpath(at.target); if (au) { aw = au.fullXpathList; if (aw.length && aw[0][0] === "html") { switch (at.type) { case "attributes": af(at); break; default: break } } } } } } ); return av } function z() { var ar; ar = new window.MutationObserver(function(at) { if (at) { r(at); aq.clog("Processed [" + at.length + "] mutation records.") } } ); return ar } function o(at) { var av, ar, au, az, ay, ax = m.getCoreConfig(), aw = m.getServiceConfig("message"); m.subscribe("configupdated", I); C = G.getService("message"); k = at; k.options = aq.mixin({}, h, k.options); a = a && aq.getValue(k, "diffEnabled", true); N = aq.getValue(k.options, "maxMutations", 100); if (a) { P = aq.getValue(k, "diffObserverConfig", aj); E = z(); W.push(window) } if (!a && aw.maskVisiblePasswords) { s = aq.getValue(k, "customObserverConfig", j); x = ap(); W.push(window) } for (au in ax.modules) { if (ax.modules.hasOwnProperty(au)) { ay = ax.modules[au].events || []; for (av = 0, ar = ay.length; av < ar; av += 1) { if (ay[av].attachToShadows) { az = ay[av].name; if (D.indexOf(az) === -1) { D.push(az) } } } } } X = true } function ac() { m.unsubscribe("configupdated", I); if (E) { E.disconnect() } if (x) { x.disconnect() } X = false } function t() { var ar; ar = "tlt-" + aq.getSerialNumber(); return ar } function ad(au, at, ar) { var aw, ay, ax, av, aA, az = []; if (!au || !au.getElementsByTagName || !at) { return az } if (ar && ar.length === 2) { ay = ar[0]; ax = ar[1] } av = au.getElementsByTagName(at); if (av && av.length) { for (aw = av.length - 1; aw >= 0; aw -= 1) { aA = av[aw]; if (!ay) { az.push(aA) } else { if (aA[ay] === ax) { az.push(aA) } } } } return az } function i(ay, aw, ax) { var av, au, az, at, ar; if (!ay || !ay.getElementsByTagName || !aw) { return } if (ax && ax.length === 2) { au = ax[0]; az = ax[1] } at = ay.getElementsByTagName(aw); if (at && at.length) { for (av = at.length - 1; av >= 0; av -= 1) { ar = at[av]; if (!au) { ar.parentNode.removeChild(ar) } else { if (ar[au] === az) { ar.parentNode.removeChild(ar) } } } } return ay } function ao(aw, au) { var av, ar, ax = ad(aw, "img"), at = new RegExp("^data:image/(.*?);base64"); for (av = 0; av < ax.length; av++) { ar = ax[av]; if (at.test(ar.src) && (ar.src.length > au)) { ar.src = ""; ar.setAttribute("removedByDCX", true) } } return aw } function U(au, ar) { var at, av; for (at = 0; au.hasChildNodes() && at < au.childNodes.length; at += 1) { av = au.childNodes[at]; if (av.nodeType === ar) { au.removeChild(av); at -= 1 } else { if (av.hasChildNodes()) { U(av, ar) } } } return au } function f(aw, av) { var au, at, ar; if (!aw || !aw.getElementsByTagName || !av) { return } at = aw.querySelectorAll(av); if (at && at.length) { for (au = at.length - 1; au >= 0; au -= 1) { ar = at[au]; ar.parentNode.removeChild(ar) } } return aw } function ai(au) { var at, ar = null; if (!au || !au.doctype) { return null } at = au.doctype; if (at) { ar = "" } return ar } function ah(ay, az) { var ax, au, aw, av, at, ar; if (!az) { return } av = ay.getElementsByTagName("input"); at = az.getElementsByTagName("input"); if (at) { for (ax = 0, ar = at.length; ax < ar; ax += 1) { au = av[ax]; aw = at[ax]; switch (aw.type) { case "checkbox": case "radio": if (aq.isIE ? au.checked : aw.checked) { aw.setAttribute("checked", "checked") } else { aw.removeAttribute("checked") } break; default: aw.setAttribute("value", aw.value); if (!aw.getAttribute("type")) { aw.setAttribute("type", "text") } break } } } } function p(ay, az) { var av, ar, ax, at, au, aw; if (!ay || !ay.getElementsByTagName || !az || !az.getElementsByTagName) { return } at = ay.getElementsByTagName("textarea"); aw = az.getElementsByTagName("textarea"); if (at && aw) { for (av = 0, ar = at.length; av < ar; av += 1) { ax = at[av]; au = aw[av]; au.setAttribute("value", ax.value); au.value = au.textContent = ax.value } } } function Z(ar, ax) { var at, az, ay, aA, av, au, aw; if (!ar || !ar.getElementsByTagName || !ax || !ax.getElementsByTagName) { return } az = ar.getElementsByTagName("select"); aA = ax.getElementsByTagName("select"); if (az) { for (av = 0, aw = az.length; av < aw; av += 1) { at = az[av]; ay = aA[av]; for (au = 0; au < at.options.length; au += 1) { if (au === at.selectedIndex || at.options[au].selected) { ay.options[au].setAttribute("selected", "selected") } else { ay.options[au].removeAttribute("selected") } } } } } function J(at) { var ar, au = null; if (at) { ar = at.nodeType || -1; switch (ar) { case 11: au = at.innerHTML; break; case 9: au = at.documentElement ? at.documentElement.outerHTML : ""; break; case 1: au = at.outerHTML; break; default: au = null; break } } return au } function an(au) { var ar, at = false; if (au && typeof au === "object") { ar = au.nodeType || -1; switch (ar) { case 9: case 1: at = true; break; default: at = false; break } } return at } function b(az, aI, at) { var aC, aB, aD, aJ, aA = ["iframe", "frame"], aH, au, ax, aG, av, aF, aw = { frames: [] }, aK, ay, ar; for (aB = 0; aB < aA.length; aB += 1) { aJ = aA[aB]; aK = az.getElementsByTagName(aJ); ay = aI.getElementsByTagName(aJ); if (aK) { for (aC = 0, aD = aK.length; aC < aD; aC += 1) { try { aH = aK[aC]; au = aq.getIFrameWindow(aH); if (au && au.document && au.location.href !== "about:blank") { ax = au.document; aG = A(ax, ax, "", at); av = t(); ay[aC].setAttribute("tltid", av); aG.tltid = av; ar = aq.getOriginAndPath(ax.location); aG.host = ar.origin; aG.url = ar.path; aG.charset = ax.characterSet || ax.charset; aF = ay[aC].getAttribute("src"); if (!aF) { aF = au.location.href; ay[aC].setAttribute("src", aF) } aw.frames = aw.frames.concat(aG.frames); delete aG.frames; aw.frames.push(aG) } } catch (aE) {} } } } return aw } function al(at) { var au, ar, av; at.DCXListeners = at.DCXListeners || {}; for (au = 0, ar = D.length; au < ar; au += 1) { av = D[au]; if (!at.DCXListeners[av]) { d.subscribe(av, at, S); at.DCXListeners[av] = true } } } function Y(au) { var az = au.adoptedStyleSheets; var ax = ""; for (var aw = 0; aw < az.length; aw++) { try { var av = az[aw].cssRules.length; for (var at = 0; at < av; at++) { var ay = az[aw].cssRules[at].cssText; ay = ay.replace("opacity: 0;", "opacity: 1;"); ay = ay.replace("visibility: hidden;", "visibility: visible;"); ax = ax + " " + ay } } catch (ar) {} } return ax } function L() { return ("setTimeout(() => { const rootElement = document.body;function traverse(element) {if (element.getAttribute('shadow-dom-id')) {const childNodes = element.childNodes;let shadowHtmlContent = '';for (let i = 0; i < childNodes.length; i++) {const childNode = childNodes[i];if (childNode.nodeType === Node.COMMENT_NODE) {continue;}if (childNode.nodeName === 'HCLDISCOVER') {while (element.firstChild !== childNode) {element.removeChild(element.firstChild);}if (element.firstChild === childNode) {element.removeChild(childNode);}break;} else {shadowHtmlContent += childNode.outerHTML || childNode.nodeValue;}}const rootHTML = shadowHtmlContent;const selector = element.tagName.toLowerCase();if (!customElements.get(selector)) {customElements.define(selector, class extends HTMLElement {html = rootHTML;constructor(html) {super();this.html = html;const template = document.createElement('template');template.innerHTML = this.html || rootHTML;const shadowRoot = this.attachShadow({ mode: 'open' });shadowRoot.appendChild(template.content.cloneNode(true));}});}const getClassInstance = customElements.get(selector);const newClass = new getClassInstance(rootHTML);element.shadowRoot.innerHTML = newClass.shadowRoot.innerHTML;}if (element.shadowRoot) {const childrenShadow = element.shadowRoot.children || [];for (let i = 0; i < childrenShadow.length; i++) {traverse(childrenShadow[i]);}}const children = element.children || [];for (let i = 0; i < children.length; i++) {traverse(children[i]);}}traverse(rootElement);}, 500);") } function e(aD, aJ, at, aC) { var aF, aG, ax, ar, az, aE, ay = { shadows: [] }, aw, aB, av, aA = ".TLUIHighlighting { background-color: #AFFFC9 !important; outline-color:#2FBF5E !important; outline-style:solid !important; z-index:5000 !important; }"; if (!aD || (!aC && !aD.children)) { return ay } if (aC) { az = [aD] } else { az = aD.children } for (aF = 0, aG = az.length; aF < aG; aF += 1) { ar = az[aF]; if (ar.shadowRoot) { aE = new n.Xpath(ar); ax = A(ar.ownerDocument, ar.shadowRoot, "", at); aw = y(ar); aB = Y(ar.shadowRoot); av = "shadow_dom_" + t(); aw.setAttribute("shadow-dom-id", av); aw.innerHTML = ax.root + '" + aw.innerHTML; ay.shadows.push({ root: J(aw), xpath: aE.xpath }); ay.shadows = ay.shadows.concat(ax.shadows); al(ar.shadowRoot); if (a) { try { E.observe(ar.shadowRoot, P); ar.shadowRoot.DCXListeners.mutation = true; if (aq.indexOf(Q, ar) === -1) { Q.push(ar) } } catch (aH) {} } if (!a) { var aI = G.getService("config") , au = aI.getServiceConfig("message"); if (!au.maskVisiblePasswords) { return } try { x.observe(ar.shadowRoot, s); ar.shadowRoot.DCXListeners.mutation = true; if (aq.indexOf(Q, ar) === -1) { Q.push(ar) } } catch (aH) {} } } ax = e(ar, null, at); ay.shadows = ay.shadows.concat(ax.shadows) } return ay } function am(ay) { var aw, au, ar, av, at, ax, az = 0; if (!ay) { return az } if (ay.root) { az += ay.root.length; if (ay.frames) { for (aw = 0, ar = ay.frames.length; aw < ar; aw += 1) { if (ay.frames[aw].root) { az += ay.frames[aw].root.length } } } } else { if (ay.diffs) { for (aw = 0, ar = ay.diffs.length; aw < ar; aw += 1) { ax = ay.diffs[aw]; az += ax.xpath.length; if (ax.root) { az += ax.root.length } else { if (ax.attributes) { for (au = 0, av = ax.attributes.length; au < av; au += 1) { at = ax.attributes[au]; az += at.name.length; if (at.value) { az += at.value.length } } } } } } } return az } function ab() { var av, au, ar, at; for (av = 0, ar = ak.length; av < ar && B.length; av += 1) { at = ak[av]; for (au = 0; au < B.length; au += 1) { if (B[au].containedIn(at)) { B.splice(au, 1); au -= 1 } } } } function q(av) { var au, ar, at, aw, ax = []; if (!av || !av.children) { return ax } aw = av.children; for (au = 0, ar = aw.length; au < ar; au += 1) { at = aw[au]; if (at.shadowRoot) { if (!at.shadowRoot.DCXListeners) { ax.push([at, at.shadowRoot]) } ax = ax.concat(q(at.shadowRoot)) } ax = ax.concat(q(at)) } return ax } function K(ay, au) { var av, ar, aw, ax, at; if (!ay || !au) { return } if (!au.captureShadowDOM) { return } at = q(ay, au); for (av = 0, ar = at.length, aw = []; av < ar; av += 1) { ax = e(at[av][0], null, au, true); aw = aw.concat(ax.shadows) } return aw } function u(ax, au) { var ay, at, aw, av, ar; ay = A(ax, ax, null, au); if (!ay) { ay = {} } ay.charset = ax.characterSet || ax.charset; at = aq.getOriginAndPath(ax.location); ay.host = at.origin; ay.url = at.path; return ay } function T(aG) { var ax, az, aE = { fullDOM: false, diffs: [], attributeDiffs: {} }, aD, aF, aC, ay, au, aA, at, aw, aB = new RegExp("^data:image/(.*?);base64"); ae(ak); ab(); ay = aG.captureShadowDOM; aG.captureShadowDOM = false; for (ax = 0, az = ak.length; ax < az; ax += 1) { at = ak[ax]; aA = n.getNodeFromID(at.xpath, -2); if (!aA) { continue } if (at.isShadowHost) { aA = aA.shadowRoot; if (!aA.DCXListeners) { continue } } if (aA === window.document.body || aA === window.document.documentElement) { aG.captureShadowDOM = ay; return u(window.document, aG) } aD = A(window.document, aA, at, aG); delete aD.originalSize; if (aD.shadows && aD.shadows.length === 0) { delete aD.shadows } if (aD.frames && aD.frames.length === 0) { delete aD.frames } aD.xpath = at.xpath; aE.diffs.push(aD) } function av(aI, aH) { if (!aI || !aI.name) { return } aE.attributeDiffs[aD.xpath][aI.name] = { value: aI.value } } function ar(aK) { var aI, aH, aJ; for (aI = 0, aJ = aK.length; aI < aJ; aI += 1) { aH = aK[aI]; if (aH.name === "src" && aB.test(aH.value) && aH.value.length > aG.removeBase64) { aH.value = ""; aK.push({ name: "removedByDCX", value: true }); break } } return aK } for (ax = 0, az = B.length; ax < az; ax += 1) { at = B[ax]; aF = aa(at.attributes, "id"); if (aF > -1) { aA = n.getNodeFromID(at.xpath, -2); aC = new n.Xpath(aA,false,at.attributes[aF].oldValue); at.xpath = aC.xpath } aw = w(at.attributes); if (aG.hasOwnProperty("removeBase64")) { aA = n.getNodeFromID(at.xpath, -2); if (aA && aA.tagName.toLowerCase() === "img" && aw) { aw = ar(aw) } } aD = { xpath: at.xpath, attributes: aw }; aE.diffs.push(aD); aE.attributeDiffs[aD.xpath] = {}; aq.forEach(aD.attributes, av) } aG.captureShadowDOM = ay; au = K(window.document, aG); if (au && au.length) { aE.shadows = au } return aE } y = function(au) { var av = null; if (an(au)) { av = au.cloneNode(true); if (!av && au.documentElement) { av = au.documentElement.cloneNode(true) } var ar = G.getCoreConfig().doNotCaptureElements || {}; for (var at = ar.length - 1; at >= 0; at -= 1) { f(av, ar[at]) } } return av } ; A = function(aL, aC, aF, at) { var aw = true, aI, aA, ax, aB = {}, aK, au; if (!aL || !aC) { return aB } aI = y(aC, aL); if (!aI && aC.host) { aw = false } else { if (!aI) { return aB } } if (aw) { if (!!at.removeScripts) { i(aI, "script"); i(aI, "noscript") } if (!at.keepImports) { i(aI, "link", ["rel", "import"]) } if (!!at.removeComments) { U(aI, 8) } if (!at.captureStyle) { i(aI, "style") } if (typeof aI === "object" && (typeof aI.createElement === "function" || aI.tagName === "HEAD") && at.captureJSS) { var ar = (aL && aL.defaultView && aL.defaultView.frameElement) ? aL : document; var av = ar.styleSheets.length; var az = ""; for (var aG = 0; aG < av; aG++) { try { var ay = ar.styleSheets[aG].cssRules.length; for (var aE = 0; aE < ay; aE++) { az = az + " " + ar.styleSheets[aG].cssRules[aE].cssText } } catch (aD) {} } if (at.customStyle) { az = az + at.customStyle } if (!aI.createElement) { aI.innerHTML += '" } else { var aH = aI.createElement("style"); aH.setAttribute("added_by", "HCL DISCOVER JSS Style Capture"); aH.innerHTML = az; aI.getElementsByTagName("head")[0].appendChild(aH) } if (typeof DCX !== "undefined" && av) { aB.origCSSsize = az.length } } if (at.hasOwnProperty("removeBase64")) { ao(aI, at.removeBase64) } Z(aC, aI); ah(aC, aI); p(aC, aI); aI = C.applyPrivacyToNode(aI, aF, aL); if (!!at.captureFrames) { aA = b(aC, aI, at) } } if (!!at.captureShadowDOM) { ax = e(aC, aI, at); if (ax.shadows && ax.shadows.length > 0 && aI && typeof aI === "object" && (typeof aI.createElement === "function")) { var aJ = document.createElement("script"); aJ.setAttribute("id", "discover_shadow_dom"); aJ.textContent = L(); aI.getElementsByTagName("body")[0].appendChild(aJ) } } if (aA) { aB = aq.mixin(aB, aA) } if (ax) { aB = aq.mixin(aB, ax) } aK = (ai(aC) || "") + J(aI || aC); aB.root = C.applyPrivacyPatterns(aK); return aB } ; I = function() { m = G.getService("config"); o(m.getServiceConfig("domCapture") || {}) } ; return { init: function() { m = G.getService("config"); if (!X) { o(m.getServiceConfig("domCapture") || {}) } else {} }, destroy: function() { ac() }, observeWindow: function(au) { var at, ar; if (!au) { return } if (!aq.getValue(k, "options.captureFrames", false) && !(au === window)) { return } if (aq.indexOf(W, au) === -1) { W.push(au) } }, captureDOM: function(at, au) { var av, ar, ay = null, aw, az = 0; if (!X || aq.isLegacyIE) { return ay } au = aq.mixin({}, k.options, au); at = at || window.document; if (!v || !a || c || au.forceFullDOM) { if (E) { E.disconnect() } if (x) { x.disconnect() } ay = u(at, au); ay.fullDOM = true; ay.forced = !!(c || au.forceFullDOM); v = true; if (E) { for (av = 0, ar = W.length; av < ar; av += 1) { aw = W[av]; try { E.observe(aw.document, P) } catch (ax) { W.splice(av, 1); ar = W.length; av -= 1 } } } if (x) { for (av = 0, ar = W.length; av < ar; av += 1) { aw = W[av]; try { x.observe(aw.document, s) } catch (ax) { W.splice(av, 1); ar = W.length; av -= 1 } } } } else { ay = T(au); ay.fullDOM = (ay.diffs || ay.shadows) ? false : true } if (a) { ay.mutationCount = F } O(); if (au.maxLength) { az = am(ay); if (az > au.maxLength) { ay = { errorCode: 101, error: "Captured length (" + az + ") exceeded limit (" + au.maxLength + ")." } } } if (ay.fullDOM) { ay.origDOMSize = az } else { ay.origDiffSize = az } return ay } } }); DCX.addService("encoder", function(a) { var f = {} , g = null , b = null , d = false; function e(j) { var i = null; if (!j) { return i } i = f[j]; if (i && typeof i.encode === "string") { i.encode = a.utils.access(i.encode) } return i } function h(i) { f = i; g.subscribe("configupdated", b); d = true } function c() { g.unsubscribe("configupdated", b); d = false } b = function() { g = a.getService("config"); h(g.getServiceConfig("encoder") || {}) } ; return { init: function() { g = a.getService("config"); if (!d) { h(g.getServiceConfig("encoder") || {}) } else {} }, destroy: function() { c() }, encode: function(m, l) { var k, i, j = { data: null, encoding: null, error: null }; if ((typeof m !== "string" && !m) || !l) { j.error = "Invalid " + (!m ? "data" : "type") + " parameter."; return j } k = e(l); if (!k) { j.error = "Specified encoder (" + l + ") not found."; return j } if (typeof k.encode !== "function") { j.error = "Configured encoder (" + l + ") encode method is not a function."; return j } try { i = k.encode(m) } catch (n) { j.error = "Encoding failed: " + (n.name ? n.name + " - " : "") + n.message; return j } if (!i || a.utils.getValue(i, "buffer", null) === null) { j.error = "Encoder (" + l + ") returned an invalid result."; return j } j.data = i.buffer; j.encoding = k.defaultEncoding; return j } } }); DCX.addService("message", function(v) { var R = v.utils, q = 0, s = 0, J = 0, j = 0, r = new Date(), i = v.getService("browserBase"), b = v.getService("browser"), h = v.getService("config"), A = h.getServiceConfig("message") || {}, m = v.normalizeUrl(window.location.href), O = window.location.hostname, S = A.hasOwnProperty("privacy") ? A.privacy : [], c, G = {}, P = { lower: "x", upper: "X", numeric: "9", symbol: "@" }, f = parseFloat((window.devicePixelRatio || 1).toFixed(2)), g = window.screen || {}, a = g.width || 0, y = g.height || 0, Q = i.getNormalizedOrientation(), k = !R.isiOS ? a : Math.abs(Q) === 90 ? y : a, E = !R.isiOS ? y : Math.abs(Q) === 90 ? a : y, M = (window.screen ? window.screen.height - window.screen.availHeight : 0), L = window.innerWidth || document.documentElement.clientWidth, n = window.innerHeight || document.documentElement.clientHeight, I = false, x = {}, B; function e(V) { var U = "" , W = V.timestamp || (new Date()).getTime(); this.timestamp = W; delete V.timestamp; this.type = V.type; this.offset = W - r.getTime(); if (V.type === 2 && V.screenview && V.screenview.type === "LOAD") { if (V.screenview.name !== "root" && V.screenview.name !== "rootWithFrames") { var T = V.screenview.name; if (T && T.indexOf("#") === 0) { B = location.pathname + T } else { B = T } } else { B = location.pathname + location.hash } } this.screenViewPath = B || location.pathname + location.hash; this.screenviewOffset = 0; if (V.type === 2) { q = s; s = W; if (V.screenview.type === "UNLOAD") { this.screenviewOffset = W - (q || r.getTime()) } } else { if (s) { this.screenviewOffset = W - s } } if (!this.type) { return } this.count = (j += 1); this.fromWeb = true; for (U in V) { if (V.hasOwnProperty(U)) { this[U] = V[U] } } } G.PVC_MASK_EMPTY = function(T) { return "" } ; G.PVC_MASK_BASIC = function(U) { var T = "XXXXX"; if (typeof U !== "string") { return "" } return (U.length ? T : "") } ; G.PVC_MASK_TYPE = function(X) { var U, W = 0, T = 0, V = ""; if (typeof X !== "string") { return V } U = X.split(""); for (W = 0, T = U.length; W < T; W += 1) { if (R.isNumeric(U[W])) { V += P.numeric } else { if (R.isUpperCase(U[W])) { V += P.upper } else { if (R.isLowerCase(U[W])) { V += P.lower } else { V += P.symbol } } } } return V } ; G.PVC_MASK_EMPTY.maskType = 1; G.PVC_MASK_BASIC.maskType = 2; G.PVC_MASK_TYPE.maskType = 3; G.PVC_MASK_CUSTOM = { maskType: 4 }; function d(T, V) { var U = G.PVC_MASK_BASIC; if (typeof V !== "string") { return V } if (!T) { U = G.PVC_MASK_BASIC } else { if (T.maskType === G.PVC_MASK_EMPTY.maskType) { U = G.PVC_MASK_EMPTY } else { if (T.maskType === G.PVC_MASK_BASIC.maskType) { U = G.PVC_MASK_BASIC } else { if (T.maskType === G.PVC_MASK_TYPE.maskType) { U = G.PVC_MASK_TYPE } else { if (T.maskType === G.PVC_MASK_CUSTOM.maskType) { if (typeof T.maskFunction === "string") { U = R.access(T.maskFunction) } else { U = T.maskFunction } if (typeof U !== "function") { U = G.PVC_MASK_BASIC } } } } } } return U(V) } function D(T, U) { var V; if (!T || !U) { return } for (V in U) { if (U.hasOwnProperty(V)) { if (V === "value") { U[V] = d(T, U[V]) } else { delete U[V] } } } } function N(T, U) { return (R.matchTarget(T, U) !== -1) } function H(Y) { var U, T, V, X, W; if (!Y) { return "" } for (U = 0, T = c.length; U < T; U += 1) { W = c[U]; W.cRegex.lastIndex = 0; Y = Y.replace(W.cRegex, W.replacement) } return Y } function F(aa) { var X, T, W, U, Z = false, Y, V; if (!aa || (!aa.currState && !aa.prevState)) { return aa } Y = aa.prevState; V = aa.currState; for (X = 0, T = S.length; X < T; X += 1) { U = S[X]; W = R.getValue(U, "exclude", false); if (N(U.targets, aa) !== W) { D(U, Y); D(U, V); Z = true; break } } if (!Z) { if (Y && Y.value) { Y.value = H(Y.value) } if (V && V.value) { V.value = H(V.value) } } return aa } function o(T) { if (!T || !T.target) { return T } F(T.target); return T } function l(W, U) { var V, T, Y, X; if (!U || !W) { return } if (W.value) { Y = d(U, W.value); W.setAttribute("value", Y); W.value = Y } if (W.checked) { W.removeAttribute("checked") } if (R.getTagName(W) === "select") { W.selectedIndex = -1; for (V = 0, T = W.options.length; V < T; V += 1) { X = W.options[V]; X.removeAttribute("selected"); X.selected = false } } else { if (R.getTagName(W) === "textarea") { W.textContent = W.value } } } function u(af, ac, ag, al, Y, ab) { var ah, ae, ad, ai, V, W, aa = [], aj, T, Z, X, ak, U; if (!af.length && !Y.length && !ab) { return [] } U = b.queryAll("input, select, textarea", ac); if (!U || !U.length) { return [] } for (ah = 0, ai = Y.length; ah < ai; ah += 1) { ae = U.indexOf(Y[ah]); if (ae !== -1) { U.splice(ae, 1) } } if (af.length) { for (ah = 0, ai = U.length, aa = []; ah < ai; ah += 1) { if (U[ah].value) { W = i.ElementData.prototype.examineID(U[ah], true); if (W.idType === -2) { aj = new i.Xpath(U[ah]); aj.applyPrefix(ag); W.id = aj.xpath } aa.push({ id: W.id, idType: W.idType, element: U[ah] }) } } } for (ah = 0, ai = af.length; ah < ai; ah += 1) { X = S[af[ah].ruleIndex]; T = R.getValue(X, "exclude", false); ak = X.targets[af[ah].targetIndex]; if (typeof ak.id === "string" && ak.idType === -2) { for (ae = 0; ae < aa.length; ae += 1) { if (aa[ae].idType === ak.idType && aa[ae].id === ak.id) { V = aa[ae] && aa[ae].element; if (!T) { l(V, X) } else { ad = U.indexOf(V); U.splice(ad, 1) } } } } else { for (ae = 0; ae < aa.length; ae += 1) { ak.cRegex.lastIndex = 0; if (aa[ae].idType === ak.idType && ak.cRegex.test(aa[ae].id)) { V = aa[ae].element; if (!T) { l(V, X) } else { ad = U.indexOf(V); U.splice(ad, 1) } } } } } if (ab) { for (ah = 0, ai = U.length; ah < ai; ah += 1) { l(U[ah], ab) } } } function p(aa, af, al) { var ag, ac, ab, V, T, W = [], Z, ah, ad, X, U, ai, ae = [], ak, aj, Y; if (!aa || !al) { return null } for (ag = 0, ah = S.length; ag < ah; ag += 1) { ad = S[ag]; T = R.getValue(ad, "exclude", false); if (T) { Z = ad } aj = ad.targets; for (ac = 0, Y = aj.length; ac < Y; ac += 1) { ak = aj[ac]; if (typeof ak === "string") { U = b.queryAll(ak, aa); if (!T) { for (ab = 0, ai = U.length; ab < ai; ab += 1) { V = U[ab]; l(V, ad) } } else { W = W.concat(U) } } else { if (typeof ak.id === "string") { switch (ak.idType) { case -1: case -3: V = i.getNodeFromID(ak.id, ak.idType, aa); if (!T) { l(V, ad) } else { W.push(V) } break; case -2: ae.push({ ruleIndex: ag, targetIndex: ac, exclude: T }); break; default: break } } else { ae.push({ ruleIndex: ag, targetIndex: ac, exclude: T }) } } } } u(ae, aa, af, al, W, Z); return aa } function t(X) { var V, T, U, W = false; if (!X) { return W } for (V = 0, T = S.length; V < T; V += 1) { U = S[V]; if (N(U.targets, X)) { W = true; break } } return W } function w() { var W, V, T, Z, aa, Y, U, X; h = v.getService("config"); A = h.getServiceConfig("message") || {}; S = A.privacy || []; c = A.privacyPatterns || []; for (W = 0, aa = S.length; W < aa; W += 1) { Z = S[W]; U = Z.targets; for (V = 0, X = U.length; V < X; V += 1) { Y = U[V]; if (typeof Y === "object") { if (typeof Y.idType === "string") { Y.idType = +Y.idType } if (typeof Y.id === "object") { Y.cRegex = new RegExp(Y.id.regex,Y.id.flags) } } } } for (T = c.length, W = T - 1; W >= 0; W -= 1) { Z = c[W]; if (typeof Z.pattern === "object") { Z.cRegex = new RegExp(Z.pattern.regex,Z.pattern.flags) } else { c.splice(W, 1) } } } function z() { if (h.subscribe) { h.subscribe("configupdated", w) } w(); I = true } function K() { h.unsubscribe("configupdated", w); I = false } function C(ab) { var Y = ab.dcid, V = ab.shadows || [], X = ab.fullDOM, ac = 1, W, Z, aa, U, T; if (V.length === 0 || !X) { return } for (aa in x) { if (x.hasOwnProperty(aa)) { x[aa].age += 1 } } for (W = 0, Z = V.length; W < Z; W += 1) { U = V[W]; T = x[U.xpath]; if (T && T.root === U.root) { T.hitCount += 1; T.age -= 1; U.cacheDCID = T.dcid; delete U.root } else { x[U.xpath] = { root: U.root, dcid: Y, hitCount: 0, age: 0 } } } for (aa in x) { if (x.hasOwnProperty(aa)) { T = x[aa]; if (T.age > T.hitCount + ac) { delete x[aa] } } } } return { init: function() { if (!I) { z() } else {} }, destroy: function() { K() }, applyPrivacyToNode: p, applyPrivacyToMessage: o, applyPrivacyToTarget: F, applyPrivacyPatterns: H, isPrivacyMatched: t, createMessage: function(T) { if (typeof T.type === "undefined") { throw new TypeError("Invalid queueEvent given!") } if (T.type === 12) { C(T.domCapture) } return o(new e(T)) }, wrapMessages: function(W) { var V = DCX.getCoreConfig(); var T = 0; if (window && window.sessionStorage && window.localStorage) { if (!window.sessionStorage.DCXTab) { window.sessionStorage.setItem("DCXTab", Date.now()) } T = window.sessionStorage.DCXTab } var U = { messageVersion: "10.0.0.0", serialNumber: (J += 1), sessions: [{ id: v.getPageId(), startTime: r.getTime(), timezoneOffset: r.getTimezoneOffset(), messages: W, clientEnvironment: { webEnvironment: { libVersion: "12.1.12", internalVersion: V.version, domain: O, page: m, referrer: document.referrer, screen: { devicePixelRatio: f, deviceWidth: k, deviceHeight: E, deviceToolbarHeight: M, width: L, height: n, orientation: Q }, tabID: T } } }] } , X = U.sessions[0].clientEnvironment.webEnvironment.screen; X.orientationMode = R.getOrientationMode(X.orientation); return U } } }); DCX.addService("serializer", function(core) { function serializeToJSON(obj) { var str, key, len = 0; if (typeof obj !== "object" || obj === null) { switch (typeof obj) { case "function": case "undefined": return "null"; case "string": return '"' + obj.replace(/\"/g, '\\"') + '"'; default: return String(obj) } } else { if (Object.prototype.toString.call(obj) === "[object Array]") { str = "["; for (key = 0, len = obj.length; key < len; key += 1) { if (Object.prototype.hasOwnProperty.call(obj, key)) { str += serializeToJSON(obj[key]) + "," } } } else { str = "{"; for (key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { str = str.concat('"', key, '":', serializeToJSON(obj[key]), ","); len += 1 } } } } if (len > 0) { str = str.substring(0, str.length - 1) } str += String.fromCharCode(str.charCodeAt(0) + 2); return str } var configService = core.getService("config") , serialize = {} , parse = {} , defaultSerializers = { json: (function() { if (typeof window.JSON !== "undefined") { return { serialize: window.JSON.stringify, parse: window.JSON.parse } } return { serialize: serializeToJSON, parse: function(data) { return eval("(" + data + ")") } } }()) } , updateConfig = null , isInitialized = false; function addObjectIfExist(paths, rootObj, propertyName) { var i, len, obj; paths = paths || []; for (i = 0, len = paths.length; i < len; i += 1) { obj = paths[i]; if (typeof obj === "string") { obj = core.utils.access(obj) } if (typeof obj === "function") { rootObj[propertyName] = obj; break } } } function checkParserAndSerializer() { var isParserAndSerializerInvalid; if (typeof serialize.json !== "function" || typeof parse.json !== "function") { isParserAndSerializerInvalid = true } else { if (typeof parse.json('{"foo": "bar"}') === "undefined") { isParserAndSerializerInvalid = true } else { isParserAndSerializerInvalid = parse.json('{"foo": "bar"}').foo !== "bar" } if (typeof parse.json("[1, 2]") === "undefined") { isParserAndSerializerInvalid = true } else { isParserAndSerializerInvalid = isParserAndSerializerInvalid || parse.json("[1, 2]")[0] !== 1; isParserAndSerializerInvalid = isParserAndSerializerInvalid || parse.json("[1,2]")[1] !== 2 } isParserAndSerializerInvalid = isParserAndSerializerInvalid || serialize.json({ foo: "bar" }) !== '{"foo":"bar"}'; isParserAndSerializerInvalid = isParserAndSerializerInvalid || serialize.json([1, 2]) !== "[1,2]" } return isParserAndSerializerInvalid } function initSerializerService(config) { var format; for (format in config) { if (config.hasOwnProperty(format)) { addObjectIfExist(config[format].stringifiers, serialize, format); addObjectIfExist(config[format].parsers, parse, format) } } if (!(config.json && config.json.hasOwnProperty("defaultToBuiltin")) || config.json.defaultToBuiltin === true) { serialize.json = serialize.json || defaultSerializers.json.serialize; parse.json = parse.json || defaultSerializers.json.parse } if (typeof serialize.json !== "function" || typeof parse.json !== "function") { core.fail("JSON parser and/or serializer not provided in the UIC config. Can't continue.") } if (checkParserAndSerializer()) { core.fail("JSON stringification and parsing are not working as expected") } if (configService) { configService.subscribe("configupdated", updateConfig) } isInitialized = true } function destroy() { serialize = {}; parse = {}; if (configService) { configService.unsubscribe("configupdated", updateConfig) } isInitialized = false } updateConfig = function() { configService = core.getService("config"); initSerializerService(configService.getServiceConfig("serializer")) } ; return { init: function() { var ssConfig; if (!isInitialized) { ssConfig = configService ? configService.getServiceConfig("serializer") : {}; initSerializerService(ssConfig) } else {} }, destroy: function() { destroy() }, parse: function(data, type) { var parsedData; type = type || "json"; try { parsedData = parse[type](data) } catch (e) { this.init(); parsedData = parse[type](data) } return parsedData }, serialize: function(data, type) { var serializedData; type = type || "json"; try { serializedData = serialize[type](data) } catch (e) { this.init(); serializedData = serialize[type](data) } return serializedData } } }); DCX.addModule("DCCookie", function(c) { var j = {}, k = 0, g = "WCXSID", i = "TLTSID", a = "CoreID6", p, o, b = null, t, h = [], q = c.utils; function m() { var v = "123456789" , w = q.getRandomString(1, v) + q.getRandomString(31, v + "0"); return w } function f() { var x = m(), v = !!j.secureDCXSID, w; q.setCookie(i, x, w, w, w, v); return q.getCookieValue(i) } function l() { if (b || !window.cmRetrieveUserID) { return } try { window.cmRetrieveUserID(function(w) { b = w }) } catch (v) { b = null } } function e(z) { var v, w, y, x; if (!localStorage || !z) { return } y = localStorage.getItem(z); if (y) { w = y.split("|"); v = parseInt(w[0], 10); if (Date.now() > v) { localStorage.removeItem(z) } else { x = w[1] } } return x } function u(x, w) { var v; if (!localStorage || !x) { return } w = w || m(); v = Date.now() + k; localStorage.setItem(x, v + "|" + w); return e(x) } function n(x) { var v; var w = window.localStorage; if (!w || !x) { return } v = w.getItem(x); if (v === null) { v = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(A) { var y = Math.random() * 16 | 0 , z = A == "x" ? y : (y & 3 | 8); return y.toString(16) }); w.setItem(x, v) } return v } function d(v) { var x = q.getValue(v, "sessionIDUsesCookie", true) , w = q.getValue(v, "sessionIDUsesStorage", false); h = []; if (v.dcAppKey) { t = v.dcAppKey; h.push({ name: "X-Discover-SaaS-AppKey", value: t }) } if (v.visitorCookieName) { a = v.visitorCookieName } if (v.wcxCookieName) { g = v.wcxCookieName } p = q.getCookieValue(g); if (p) { h.push({ name: "X-WCXSID", value: p }) } if (v.sessionizationCookieName) { i = v.sessionizationCookieName } if (w) { k = q.getValue(v, "sessionIDStorageDCX", 600000); o = e(i) } if (!o && x) { o = q.getCookieValue(i) } if (!o) { if (p) { o = p } else { if (w) { o = u(i) } if (!o && x) { o = f() } } } if (!o) { o = "Check7UIC7Cookie7Configuration77" } h.push({ name: "X-Discover-SaaS-TLTSID", value: o }); h.push({ name: "X-DCXVID", value: n("X-DCXVID") }); if (h.length) { DCX.registerBridgeCallbacks([{ enabled: true, cbType: "addRequestHeaders", cbFunction: function() { return h } }]) } } function r(A) { var x, w, v = false, z, y = j.appCookieWhitelist; if (!y || !y.length) { return v } for (x = 0, w = y.length; x < w && !v; x += 1) { z = y[x]; if (z.regex) { if (!z.cRegex) { z.cRegex = new RegExp(z.regex,z.flags) } z.cRegex.lastIndex = 0; v = z.cRegex.test(A) } else { v = (z === A) } } return v } function s() { var z, y, A, B = {}, w, F = document.cookie, x = [], E = "", v = ""; if (!F) { return } x = F.split("; "); for (z = 0, A = x.length; z < A; z += 1) { w = x[z]; y = w.indexOf("="); if (y >= 0) { try { E = decodeURIComponent(w.substr(0, y)) } catch (D) { E = w.substr(0, y) } } v = w.substr(y + 1); if (r(E)) { try { B[E] = decodeURIComponent(v) } catch (C) { B[E] = v } } } if (b && !B[a]) { B[a] = b } c.post({ type: 14, cookies: B }) } return { init: function() { j = c.getConfig() || {}; d(j); l() }, destroy: function() { if (j.sessionIDUsesStorage) { u(i, o) } }, onevent: function(v) { switch (v.type) { case "screenview_load": if (q.getValue(j, "appCookieWhitelist.length", 0)) { l(); s() } break; default: break } } } }); if (DCX && typeof DCX.addModule === "function") { DCX.addModule("performance", function(a) { var g = { loadReceived: false, unloadReceived: false, perfEventSent: false }, e = 0, c, h = a.utils; function f(l, k) { if (typeof l !== "string") { return false } if (!k || typeof k !== "object") { return false } return (k[l] === true) } function b(m, k) { var o = 0 , l = {} , p = "" , n = 0; if (!m || typeof m !== "object" || !m.navigationStart) { return {} } o = m.navigationStart; for (p in m) { if (Object.prototype.hasOwnProperty.call(m, p) || typeof m[p] === "number") { if (!f(p, k)) { n = m[p]; if (typeof n === "number" && n && p !== "navigationStart") { l[p] = n - o } else { l[p] = n } } } } return l } function d(m) { var n = 0, l, k; if (m) { l = (m.responseEnd > 0 && m.responseEnd < m.domLoading) ? m.responseEnd : m.domLoading; k = m.loadEventStart; if (h.isNumeric(l) && h.isNumeric(k) && k > l) { n = k - l } } return n } function i(l) { var k = a.getStartTime(); if (l.timestamp > k && !e) { e = l.timestamp - k } } function j(n) { var l = "UNKNOWN", o = { type: 7, performance: {} }, k, p, m; if (!n || g.perfEventSent) { return } p = n.performance || {}; m = p.timing; k = p.navigation; if (m) { if (!m.loadEventStart) { return } o.performance.timing = b(m, c.filter); o.performance.timing.renderTime = d(m) } else { if (c.calculateRenderTime) { o.performance.timing = { renderTime: e, calculated: true } } else { return } } if (c.renderTimeThreshold && o.performance.timing.renderTime > c.renderTimeThreshold) { o.performance.timing.invalidRenderTime = o.performance.timing.renderTime; delete o.performance.timing.renderTime } if (k) { switch (k.type) { case 0: l = "NAVIGATE"; break; case 1: l = "RELOAD"; break; case 2: l = "BACKFORWARD"; break; default: l = "UNKNOWN"; break } o.performance.navigation = { type: l, redirectCount: k.redirectCount } } a.post(o); g.perfEventSent = true } return { init: function() { c = a.getConfig() }, destroy: function() { c = null }, onevent: function(k) { if (typeof k !== "object" || !k.type) { return } switch (k.type) { case "load": g.loadReceived = true; i(k); setTimeout(function() { if (a.isInitialized()) { j(window) } }, h.getValue(c, "delay", 2000)); break; case "screenview_load": if (!g.perfEventSent) { j(window) } break; case "unload": g.unloadReceived = true; if (!g.perfEventSent) { j(window) } break; default: break } }, onmessage: function(k) {} } }) } else {} DCX.addModule("rageClicks", function(b) { var r = DCX.getModuleConfig("rageClicks") , e = false; var f, c, a, p, t, i; var l = [], q = [], v = new Map(), g = new Map(), o = r.clickInterval || 4000, m = r.rageMin || 5, d = DCX.getCoreConfig(), h, u = function(x) { return x == f }; function n() { if (p.getAttribute("data-dcxid")) { f = p.getAttribute("data-dcxid"); a = "data-dcxid" } else { if (p.id) { f = p.id; a = "id" } else { f = b.getXPathFromNode(p); a = "xpath" } } } function s() { var y = g.get(f) , z = c - y; if (z <= o) { l.push(f) } else { g.set(f, c); for (var x = 0; x < l.length; x++) { if (l[x] === f) { l.splice(x, 1) } } v["delete"](f); for (var x = 0; x < q.length; x++) { if (q[x] === f) { q.splice(x, 1) } } } } function w() { const y = p.nodeName.toLowerCase(); const z = y === "a"; const x = z ? p.getAttribute("href") : null; const A = { type: 20, struggle: { struggleType: z ? "deadLink" : "rageclick", elementtype: a, element: f, linkHREF: x, }, }; if (!z) { delete A.struggle.linkHREF } b.post(A) } function k(y) { var x = q.filter(u); if (x.length <= 0) { v.set(f, y); q.push(f); w() } } function j() { e = true; document.addEventListener("click", function(x) { p = x.target; n(); c = Date.now(); if (!g.has(f)) { g.set(f, c) } if (g.has(f)) { s() } t = l.filter(u); i = t.length; if (i >= m) { k(i) } }) } return { init: function() { r = b.getConfig() }, destroy: function() {}, onevent: function(x) { switch (x.type) { case "load": h = d.modules && d.modules.rageClicks && d.modules.rageClicks.enabled; if (h) { j() } break; case "unload": e = false; break; default: break } }, version: "1.3.2" } }); DCX.addModule("replay", function(ap) { var aq = ap.utils, L = 0, ai = { scale: 0, timestamp: 0 }, ac = {}, I = null, e = [], ad = 0, G = true, ae = null, D = null, Y = false, m = 0, W = "", B = "", Q = (new Date()).getTime(), l = 0, S = null, am = null, R = null, E = null, aj = null, X = null, N = {}, k = {}, aa = 0, x = 0, w = { inFocus: false }, O = null, af = ap.getConfig() || {}, q = DCX.getCoreConfig(), A = aq.getValue(af, "viewPortWidthHeightLimit", 10000), ah = 1, F = 1, T, ag = { cellMaxX: 10, cellMaxY: 10, cellMinWidth: 20, cellMinHeight: 20 }; function u() { var ar; for (ar in ac) { if (ac.hasOwnProperty(ar)) { ac[ar].visitedCount = 0 } } } function s(au) { var ar = false , at = "|button|image|submit|reset|" , av = null; if (typeof au !== "object" || !au.type) { return ar } switch (au.type.toLowerCase()) { case "input": av = "|" + (au.subType || "") + "|"; if (at.indexOf(av.toLowerCase()) === -1) { ar = false } else { ar = true } break; case "select": case "textarea": ar = false; break; default: ar = true; break } return ar } function h(at) { var ar = []; at = at.parentNode; while (at) { ar.push(at); at = at.parentNode } return ar } function z(ar) { return aq.some(ar, function(au) { var at = aq.getTagName(au); if (at === "a" || at === "button") { return au } return null }) } function ao(ar) { var au = ar.type , at = ar.target; if (typeof au === "string") { au = au.toLowerCase() } else { au = "unknown" } if (au === "blur") { au = "focusout" } if (au === "change") { if (at.type === "INPUT") { switch (at.subType) { case "text": case "date": case "time": au = at.subType + "Change"; break; default: au = "valueChange"; break } } else { if (at.type === "TEXTAREA") { au = "textChange" } else { au = "valueChange" } } } return au } function C(ar, au, at) { var av = null; if (!ar) { return av } au = au || {}; au.eventOn = G; G = false; if (at) { av = "dcid-" + aq.getSerialNumber() + "." + (new Date()).getTime() + "s"; window.setTimeout(function() { au.dcid = av; ap.performDOMCapture(ar, au) }, at) } else { delete au.dcid; av = ap.performDOMCapture(ar, au) } return av } function K(at, aF, au) { var aA, ay, aH = false, av = {}, aG = false, ax, aC, aE = null, az = 0, aD, aB, ar, aw; if (!at || (!aF && !au)) { return aE } if (!aF && !(at === "load" || at === "unload")) { return aE } af = ap.getConfig() || {}; aG = aq.getValue(af, "domCapture.enabled", false); if (!aG || aq.isLegacyIE) { return aE } aC = aq.getValue(af, "domCapture.triggers") || []; for (aA = 0, aD = aC.length; !aH && aA < aD; aA += 1) { ax = aC[aA]; if (ax.event === at) { if (at === "load" || at === "unload") { if (ax.screenviews) { ar = ax.screenviews; for (ay = 0, aw = ar.length; !aH && ay < aw; ay += 1) { aB = ar[ay]; switch (typeof aB) { case "object": if (!aB.cRegex) { aB.cRegex = new RegExp(aB.regex,aB.flags) } aB.cRegex.lastIndex = 0; aH = aB.cRegex.test(au); break; case "string": aH = (aB === au); break; default: break } } } else { aH = true } } else { if (ax.targets) { aH = (-1 !== aq.matchTarget(ax.targets, aF)) } else { aH = true } } } } if (aH) { az = ax.delay || (ax.event === "load" ? 7 : 0); av.forceFullDOM = !!ax.fullDOMCapture; aE = C(window.document, av, az) } return aE } function ab(aD) { var av, aw, ax = aq.getValue(aD, "webEvent.target", {}), ar = ax.type, az = ax.subType || "", at = aq.getDcType(ax), aA = h(aq.getValue(ax, "element")), aC = null, ay = aq.getValue(ax, "position.relXY"), aB = aq.getValue(aD, "webEvent.subType", null), au = function(aE) { if (aE && aE.element && aE.element.id) { return aE.element.id } return "" }; av = { timestamp: aq.getValue(aD, "webEvent.timestamp", 0), type: 4, target: { origID: au(ax), id: ax.id || "", idType: ax.idType, name: ax.name, dcType: at, type: ar, position: { width: aq.getValue(ax, "size.width"), height: aq.getValue(ax, "size.height") }, currState: aD.currState || null }, event: { dcEvent: ao(aq.getValue(aD, "webEvent")), type: aq.getValue(aD, "webEvent.type", "UNKNOWN") } }; if (av.target.origID === undefined || av.target.origID === "") { delete av.target.origID } if (az) { av.target.subType = az } if (ay) { av.target.position.relXY = ay } if (typeof aD.dwell === "number" && aD.dwell > 0) { av.target.dwell = aD.dwell } if (typeof aD.visitedCount === "number") { av.target.visitedCount = aD.visitedCount } if (typeof aD.prevState !== "undefined") { av.prevState = aD.prevState } if (aB) { av.event.subType = aB } aC = z(aA); av.target.isParentLink = !!aC; if (aC) { if (aC.href) { av.target.currState = av.target.currState || {}; av.target.currState.href = av.target.currState.href || aC.href } if (aC.value) { av.target.currState = av.target.currState || {}; av.target.currState.value = av.target.currState.value || aC.value } if (aC.innerText || aC.textContent) { av.target.currState = av.target.currState || {}; av.target.currState.innerText = aq.trim(av.target.currState.innerText || aC.innerText || aC.textContent) } } if (aq.isUndefOrNull(av.target.currState)) { delete av.target.currState } if (aq.isUndefOrNull(av.target.name)) { delete av.target.name } return av } function H(ar) { ap.post(ar) } function J(aw) { var au = 0, ar, ax = aw.length, az, ay, av, aA = { mouseout: true, mouseover: true }, at = []; for (au = 0; au < ax; au += 1) { az = aw[au]; if (!az) { continue } if (aA[az.event.type]) { at.push(az) } else { for (ar = au + 1; ar < ax && aw[ar]; ar += 1) { if (!aA[aw[ar].event.type]) { break } } if (ar < ax) { ay = aw[ar]; if (ay && az.target.id === ay.target.id && az.event.type !== ay.event.type) { if (az.event.type === "click") { av = az; az = ay; ay = av } if (ay.event.type === "click") { az.target.position = ay.target.position; au += 1 } else { if (ay.event.type === "blur") { az.target.dwell = ay.target.dwell; az.target.visitedCount = ay.target.visitedCount; az.focusInOffset = ay.focusInOffset; az.target.position = ay.target.position; au += 1 } } aw[ar] = null; aw[au] = az } } at.push(aw[au]) } } for (az = at.shift(); az; az = at.shift()) { ap.post(az) } aw.splice(0, aw.length) } function t(ar, at) { if (typeof ar !== "string") { return } if (k[ar]) { k[ar].console.repeats = k[ar].console.repeats + 1 } else { ap.post({ type: 6, console: { description: ar, type: at } }); k[ar] = { console: { description: ar, repeats: 1, type: at, } } } } function al(at) { var av = null, aw, ay = aq.getValue(at, "nativeEvent.message"), au = aq.getValue(at, "nativeEvent.filename", ""), ar = aq.getValue(at, "nativeEvent.lineno", -1), ax = aq.getValue(at, "nativeEvent.error"); if (typeof ay !== "string") { return } if (au) { au = ap.normalizeUrl(au, 6) } if (ax && ax.stack) { aw = ax.stack.toString() } else { aw = (ay + " " + au + " " + ar).toString() } if (N[aw]) { N[aw].exception.repeats = N[aw].exception.repeats + 1 } else { av = { type: 6, exception: { description: ay, url: au, line: ar } }; ap.post(av); N[aw] = { exception: { description: ay, url: au, line: ar, repeats: 1 } } } m += 1 } function Z(ar, at) { e.push(ab({ webEvent: ar, id: at, currState: aq.getValue(ar, "target.state") })) } function d(az, at) { var au = false, aw = false, ay, ar, ax, av = 0; if (!az) { return } if (e.length === 0) { return } at = at || (ac[az] ? ac[az].webEvent : {}); if (at.type === "blur" || at.type === "change") { ax = aq.getValue(at, "target.state", null) } else { if (at.target) { ax = aq.getTargetState(at.target.element) || {} } else { ax = {} } } ar = e[e.length - 1]; if (ac[az]) { ar.focusInOffset = ac[az].focusInOffset; ar.target.visitedCount = ac[az].visitedCount; if (ac[az].focus) { ac[az].dwell = Number(new Date()) - ac[az].focus; ar.target.dwell = ac[az].dwell } if (!ac[az].processedChange && ac[az].prevState) { if (!aq.isEqual(ac[az].prevState, ax)) { aw = true; at.type = "change"; ar.event.type = at.type; ar.event.dcEvent = ao(at); ar.target.prevState = ac[az].prevState; ar.target.currState = ax } } } else { ac[az] = {} } if (ar.event.type === "click") { if (!s(ar.target)) { ar.target.currState = ax; au = true } } else { if (ar.event.type === "focus") { au = true } } if (au) { ar.event.type = "blur"; ar.event.dcEvent = "focusout" } if (!ar.dcid) { ay = K(ar.event.type, at.target); if (ay) { ar.dcid = ay } } w.inFocus = false; J(e) } function o(at, ar) { if (w.inFocus && w.target.id === at) { return } if (w.inFocus) { d(w.target.id, w) } w = ar; w.inFocus = true; if (!ac[at]) { ac[at] = {} } ac[at].focus = w.dwellStart = Number(new Date()); ac[at].focusInOffset = R ? w.dwellStart - Number(R) : -1; if (ar.type === "focus" || ar.type === "click") { ac[at].prevState = aq.getValue(ar, "target.state") } ac[at].visitedCount = ac[at].visitedCount + 1 || 1; ac[at].webEvent = ar; ac[at].processedChange = false; ac[at].processedClick = false; Z(ar, at) } function n(ax, au) { var at = false, av, aw = e.length, ar = aw ? e[aw - 1] : null; if (!ar) { return at } av = ar.target.id; if (av !== ax && ar.target.dcxype !== "selectList") { if (au.type === "focus" || au.type === "click" || au.type === "change") { d(av); at = true } } return at } function c(au, at) { var ar; o(au, at); ar = e[e.length - 1]; ar.event.type = "change"; ar.event.dcEvent = ao(at); ar.target.currState = at.target.state; if (ac[au].prevState) { ar.target.prevState = ac[au].prevState } ac[au].webEvent = at; ac[au].processedChange = true } function r(ax) { var aw, aA, at, ar, av = aq.getValue(ax, "target.element", {}), aB = aq.getValue(ax, "target.size.width", av.offsetWidth), au = aq.getValue(ax, "target.size.height", av.offsetHeight), az = aq.getValue(ax, "target.position.x", 0), ay = aq.getValue(ax, "target.position.y", 0); aw = aB ? Math.max(aB / ag.cellMaxX, ag.cellMinWidth) : ag.cellMinWidth; aA = au ? Math.max(au / ag.cellMaxY, ag.cellMinHeight) : ag.cellMinHeight; at = Math.floor(az / aw); ar = Math.floor(ay / aA); if (!isFinite(at)) { at = 0 } if (!isFinite(ar)) { ar = 0 } return at + "," + ar } function b(av, au) { var at, ar; if (au.target.type === "select" && O && O.target.id === av) { O = null; return } o(av, au); at = r(au); au.target.position.relXY = at; ar = e[e.length - 1]; ar.event.type = "click"; ar.event.dcEvent = ao(au); ar.target.position.relXY = at; ac[av].webEvent = au; ac[av].processedClick = true; if (s(au.target)) { d(av, au) } O = au } function a(at) { var ar = at.orientation , au = { type: 4, event: { type: "orientationchange" }, target: { prevState: { orientation: L, orientationMode: aq.getOrientationMode(L) }, currState: { orientation: ar, orientationMode: aq.getOrientationMode(ar) } } }; H(au); L = ar } function an(at) { var ar = false; if (!at) { return ar } ar = (ai.scale === at.scale && Math.abs((new Date()).getTime() - ai.timestamp) < 500); return ar } function j(ar) { ai.scale = ar.scale; ai.rotation = ar.rotation; ai.timestamp = (new Date()).getTime() } function P() { var ar, at; ar = ah - F; if (isNaN(ar)) { at = "INVALID" } else { if (ar < 0) { at = "CLOSE" } else { if (ar > 0) { at = "OPEN" } else { at = "NONE" } } } return at } function g(aw) { var aB = document.documentElement || {}, ay = document.body || {}, aC = window.screen, at = aC.width, au = aC.height, ax = aq.getValue(aw, "orientation", 0), az = !aq.isiOS ? at : Math.abs(ax) === 90 ? au : at, av = { type: 1, clientState: { pageWidth: document.width || (!aB ? 0 : aB.offsetWidth), pageHeight: Math.max((!document.height ? 0 : document.height), (!aB ? 0 : aB.offsetHeight), (!aB ? 0 : aB.scrollHeight)), viewPortWidth: window.innerWidth || aB.clientWidth, viewPortHeight: window.innerHeight || aB.clientHeight, viewPortX: Math.round(window.pageXOffset || (!aB ? (!ay ? 0 : ay.scrollLeft) : aB.scrollLeft || 0)), viewPortY: Math.round(window.pageYOffset || (!aB ? (!ay ? 0 : ay.scrollTop) : aB.scrollTop || 0)), deviceOrientation: ax, event: aq.getValue(aw, "type") } }, aA = av.clientState, ar; D = D || av; if (aA.event === "unload" && aA.viewPortHeight === aA.pageHeight && aA.viewPortWidth === aA.pageWidth) { if (D.clientState.viewPortHeight < aA.viewPortHeight) { aA.viewPortHeight = D.clientState.viewPortHeight; aA.viewPortWidth = D.clientState.viewPortWidth } } if ((aA.viewPortY + aA.viewPortHeight) > aA.pageHeight) { aA.viewPortY = aA.pageHeight - aA.viewPortHeight } if (aA.viewPortY < 0) { aA.viewPortY = 0 } ar = !aA.viewPortWidth ? 1 : (az / aA.viewPortWidth); aA.deviceScale = ar.toFixed(3); aA.viewTime = 0; if (E && aj) { aA.viewTime = aj.getTime() - E.getTime() } if (aw.type === "scroll") { aA.viewPortXStart = D.clientState.viewPortX; aA.viewPortYStart = D.clientState.viewPortY } return av } function p() { var ar; if (ae) { ar = ae.clientState; if (ar.viewPortHeight > 0 && ar.viewPortHeight < A && ar.viewPortWidth > 0 && ar.viewPortWidth < A) { H(ae) } D = ae; ae = null; E = X || E; aj = null } p.timeoutId = 0 } function U(ar) { var at = null; if (aq.isOperaMini) { return } ae = g(ar); if (ar.type === "scroll" || ar.type === "resize") { if (p.timeoutId) { window.clearTimeout(p.timeoutId) } p.timeoutId = window.setTimeout(p, aq.getValue(af, "scrollTimeout", 2000)) } else { if (ar.type === "touchstart" || ar.type === "load") { if (ae) { F = parseFloat(ae.clientState.deviceScale) } } else { if (ar.type === "touchend") { if (ae) { ah = parseFloat(ae.clientState.deviceScale); p() } } } } if (ar.type === "load" || ar.type === "unload") { if (ar.type === "unload" && Q) { at = aq.clone(ae); at.clientState.event = "attention"; at.clientState.viewTime = (new Date()).getTime() - Q } p(); if (at) { ae = at; p() } } return ae } function ak(at) { var ar = aq.getValue(at, "nativeEvent.touches.length", 0); if (ar === 2) { U(at) } } function i(av) { var au, at = {}, aw = aq.getValue(av, "nativeEvent.rotation", 0) || aq.getValue(av, "nativeEvent.touches[0].webkitRotationAngle", 0), ax = aq.getValue(av, "nativeEvent.scale", 1), ar = null, ay = { type: 4, event: { type: "touchend" }, target: { id: aq.getValue(av, "target.id"), idType: aq.getValue(av, "target.idType") } }; au = aq.getValue(av, "nativeEvent.changedTouches.length", 0) + aq.getValue(av, "nativeEvent.touches.length", 0); if (au !== 2) { return } U(av); ar = { rotation: aw ? aw.toFixed(2) : 0, scale: ah ? ah.toFixed(2) : 1 }; ar.pinch = P(); at.scale = F ? F.toFixed(2) : 1; ay.target.prevState = at; ay.target.currState = ar; H(ay) } function f(aC, av) { var az = ["type", "name", "target.id"], au = null, aw, ay, ax = true, aA = 10, at = 0, aB = 0, ar = 0; if (!aC || !av || typeof aC !== "object" || typeof av !== "object") { return false } for (aw = 0, ay = az.length; ax && aw < ay; aw += 1) { au = az[aw]; if (aq.getValue(aC, au) !== aq.getValue(av, au)) { ax = false; break } } if (ax) { aB = aq.getValue(aC, "timestamp"); ar = aq.getValue(av, "timestamp"); if (!(isNaN(aB) && isNaN(ar))) { at = Math.abs(aq.getValue(aC, "timestamp") - aq.getValue(av, "timestamp")); if (isNaN(at) || at > aA) { ax = false } } } return ax } function v(ar) { var au = { type: 4, event: { type: ar.type }, target: { id: aq.getValue(ar, "target.id"), idType: aq.getValue(ar, "target.idType"), currState: aq.getValue(ar, "target.state") } }, at; at = K(ar.type, ar.target); if (at) { au.dcid = at } H(au) } function y(ax) { var av = window.console; if (!av) { return } var au = []; function ar(aA) { function az(aB, aC) { if (typeof aC === "object" && aC !== null) { if (aC instanceof HTMLElement) { return aC.outerHTML } else { if (au.indexOf(aC) !== -1) { return "[Circular Reference]" } } au.push(aC) } return aC } return JSON.stringify(aA, az) } function ay(aA) { var az = av[aA]; av[aA] = function() { var aB = Array.prototype.slice.apply(arguments); var aD = []; aB.forEach(function(aE) { try { if (aE instanceof Error) { aE.stack ? aD.push(aE.stack + " ") : ((aE.name ? aD.push(aE.name + " ") : ""), (aE.message ? aD.push(aE.message + " ") : "")) } else { aD.push(JSON.stringify(aE)) } } catch (aG) { try { aD.push(ar(aE)) } catch (aF) { av.error('Unable to log this console message of type "' + aA + '" from UIC. Please check the console for additional details.') } } }); var aC = aD.join(" "); t(aC, aA); az.apply(av, arguments) } } var at = ax && ax.length ? ax : ["log", "warn", "info", "error"]; for (var aw = 0; aw < at.length; aw++) { ay(at[aw]) } } function V(at) { var ar = aq.getValue(af, "geolocation"), au; if (!ar || !ar.enabled) { return } au = ar.triggers || []; if (!au.length) { return } if (au[0].event === at) { DCX.logGeolocation() } } function M(ay, aw) { var ax, au = null, av, at, ar; if (ay && Object.keys(ay).length) { for (ax in ay) { if (ay.hasOwnProperty(ax)) { av = ay[ax].exception; if (av.repeats > 1) { au = { type: 6, exception: av }; ap.post(au) } delete ay[ax] } } } if (q && q.captureConsole && q.captureConsole.enabled) { if (aw && Object.keys(aw).length) { for (var at in aw) { if (aw.hasOwnProperty(at)) { ar = aw[at].console; if (ar.repeats > 1) { ap.post({ type: 6, console: ar }) } delete aw[at] } } } } } return { init: function() { e = [] }, destroy: function() { d(I); e = []; if (p.timeoutId) { window.clearTimeout(p.timeoutId); p.timeoutId = 0 } if (Y) { Y = false } }, onevent: function(at) { var aw = null, au = null, ar, av; if (typeof at !== "object" || !at.type) { return } if (f(at, S)) { S = at; return } S = at; aw = aq.getValue(at, "target.id"); if (!ac[aw]) { ac[aw] = {} } n(aw, at); switch (at.type) { case "hashchange": break; case "focus": au = o(aw, at); break; case "blur": au = d(aw, at); break; case "click": au = b(aw, at); break; case "change": au = c(aw, at); break; case "orientationchange": au = a(at); break; case "touchstart": ak(at); break; case "touchend": au = i(at); break; case "loadWithFrames": DCX.logScreenviewLoad("rootWithFrames"); break; case "load": if (q && q.captureConsole && q.captureConsole.enabled) { y(q.captureConsole.methods) } L = at.orientation; E = new Date(); if (typeof window.orientation !== "number" || aq.isAndroid) { av = (window.screen.width > window.screen.height ? 90 : 0); ar = window.orientation; if (Math.abs(ar) !== av && !(ar === 180 && av === 0)) { aq.isLandscapeZeroDegrees = true; if (Math.abs(ar) === 180 || Math.abs(ar) === 0) { L = 90 } else { if (Math.abs(ar) === 90) { L = 0 } } } } setTimeout(function() { if (ap.isInitialized()) { U(at) } }, 100); V(at.type); DCX.logScreenviewLoad("root"); break; case "screenview_load": R = new Date(); u(); au = K("load", null, at.name); break; case "screenview_unload": M(N, k); au = K("unload", null, at.name); break; case "resize": case "scroll": if (!aj) { aj = new Date() } X = new Date(); U(at); break; case "unload": M(N, k); if (e != null) { J(e) } aj = new Date(); U(at); DCX.logScreenviewUnload("root"); break; case "error": al(at); break; default: v(at); break } I = aw; return au }, onmessage: function() {} } }); if (DCX && typeof DCX.addModule === "function") { DCX.addModule("usability", function(e) { var A = e.utils , p = {} , C = { updateInterval: 250, hoverThreshold: 1000, hoverThresholdMax: 2 * 60 * 1000, gridCellMaxX: 10, gridCellMaxY: 10, gridCellMinWidth: 20, gridCellMinHeight: 20 } , d = 50; function y(I) { var H = e.getConfig() || {} , J = H[I]; return typeof J === "number" ? J : C[I] } function G(O, I) { var N = A.getValue(O, "webEvent.target", {}) , J = A.getValue(N, "element.tagName") || "" , K = J.toLowerCase() === "input" ? A.getValue(N, "element.type") : "" , H = A.getDcType(N) , L = function(P) { if (P && P.element && P.element.id) { return P.element.id } return "" } , M = { type: 9, event: { hoverDuration: O.hoverDuration, hoverToClick: A.getValue(I, "hoverToClick") }, target: { origID: L(N), id: N.id || "", idType: N.idType || "", name: N.name || "", dcType: H, type: J, subType: K, position: { width: A.getValue(N, "element.offsetWidth", 0), height: A.getValue(N, "element.offsetHeight", 0), relXY: O.relXY } } }; if ((typeof M.target.origID) === undefined || M.target.origID === "") { delete M.target.origID } if ((typeof M.target.id) === undefined || M.target.id === "") { return } e.post(M) } function i(H) { if (H && !H.nodeType && H.element) { H = H.element } return H } function s(H) { H = i(H); return !H || H === document.body || H === document.html || H === document } function j(H) { H = i(H); if (!H) { return null } return H.parentNode } function n(H) { H = i(H); if (!H) { return null } return H.offsetParent || H.parentElement || j(H) } function w(I, J) { var H = 0; if (!J || J === I) { return false } J = j(J); while (!s(J) && H++ < d) { if (J === I) { return true } J = j(J) } if (H >= d) { A.clog("Usability isChildOf() hit iterations limit") } return false } function E(H) { if (H.nativeEvent) { H = H.nativeEvent } return H } function z(H) { return E(H).target } function h(H) { H = i(H); if (!H) { return -1 } return H.nodeType || -1 } function D(H) { H = i(H); if (!H) { return "" } return H.tagName ? H.tagName.toUpperCase() : "" } function t(H) { if (!H) { return } if (H.nativeEvent) { H = H.nativeEvent } if (H.stopPropagation) { H.stopPropagation() } else { if (H.cancelBubble) { H.cancelBubble() } } } function m(I) { var H = D(I); return h(I) !== 1 || H === "TR" || H === "TBODY" || H === "THEAD" } function g(H) { if (!H) { return "" } if (H.xPath) { return H.xPath } H = i(H); return e.getXPathFromNode(H) } function B(I, H) { var J = p[I]; if (J && J[H]) { return J[H]() } } function v(I, K, J, H) { this.xPath = I !== null ? g(I) : ""; this.domNode = I; this.hoverDuration = 0; this.hoverUpdateTime = 0; this.gridX = Math.max(K, 0); this.gridY = Math.max(J, 0); this.parentKey = ""; this.updateTimer = -1; this.disposed = false; this.childKeys = {}; this.webEvent = H; this.getKey = function() { return this.xPath + ":" + this.gridX + "," + this.gridY } ; this.update = function() { var M = new Date().getTime() , L = this.getKey(); if (this.hoverUpdateTime !== 0) { this.hoverDuration += M - this.hoverUpdateTime } this.hoverUpdateTime = M; clearTimeout(this.updateTimer); this.updateTimer = setTimeout(function() { B(L, "update") }, y("updateInterval")) } ; this.dispose = function(L) { clearTimeout(this.updateTimer); delete p[this.getKey()]; this.disposed = true; if (L) { var M = this.clone(); p[M.getKey()] = M; M.update() } } ; this.process = function(P) { clearTimeout(this.updateTimer); if (this.disposed) { return false } var N = false , O = this , M = null , L = 0; if (this.hoverDuration >= y("hoverThreshold")) { this.hoverDuration = Math.min(this.hoverDuration, y("hoverThresholdMax")); N = true; G(this, { hoverToClick: !!P }); while (typeof O !== "undefined" && L++ < d) { O.dispose(P); O = p[O.parentKey] } if (L >= d) { A.clog("Usability process() hit iterations limit") } } else { this.dispose(P) } return N } ; this.clone = function() { var L = new v(this.domNode,this.gridX,this.gridY); L.parentKey = this.parentKey; return L } } function F(J, H, K, I) { return new v(J,H,K,I) } function r(J) { if (J && J.position) { return { x: J.position.x, y: J.position.y } } J = i(J); var H = J && J.getBoundingClientRect ? J.getBoundingClientRect() : null , N = H ? H.left : (J ? J.offsetLeft : 0) , M = H ? H.top : (J ? J.offsetHeight : 0) , P = N , O = M , K = 0 , I = 0 , L = n(J) , Q = 0; while (L && Q++ < d) { if (s(L)) { break } K = L.offsetLeft - (L.scrollLeft || 0); I = L.offsetTop - (L.scrollTop || 0); if (K !== P || I !== O) { N += K; M += I; P = K; O = I } L = n(L) } if (Q >= d) { A.clog("Usability calculateNodeOffset() hit iterations limit") } if (isNaN(N)) { N = 0 } if (isNaN(M)) { M = 0 } return { x: N, y: M } } function a(L, J, I) { L = i(L); var K = r(L) , H = J - K.x , M = I - K.y; if (!isFinite(H)) { H = 0 } if (!isFinite(M)) { M = 0 } return { x: H, y: M } } function x(H, I) { H = Math.floor(Math.min(Math.max(H, 0), 1) * 100) / 100; I = Math.floor(Math.min(Math.max(I, 0), 1) * 100) / 100; return H + "," + I } function f(L, O, N) { L = i(L); var J = L.getBoundingClientRect ? L.getBoundingClientRect() : null , T = J ? J.width : L.offsetWidth , K = J ? J.height : L.offsetHeight , M = T && T > 0 ? Math.max(T / y("gridCellMaxX"), y("gridCellMinWidth")) : y("gridCellMinWidth") , Q = K && K > 0 ? Math.max(K / y("gridCellMaxY"), y("gridCellMinHeight")) : y("gridCellMinHeight") , I = Math.floor(O / M) , H = Math.floor(N / Q) , S = T > 0 ? O / T : 0 , P = K > 0 ? N / K : 0 , R = ""; if (!isFinite(I)) { I = 0 } if (!isFinite(H)) { H = 0 } R = x(S, P); return { x: I, y: H, relXY: R } } function c(M) { var N = M , O = M.getKey() , I = {} , J = null , L = null , K = false , H = 0; I[O] = true; while (typeof N !== "undefined" && H++ < d) { I[N.parentKey] = true; if (N.parentKey === "" || N.parentKey === N.getKey()) { break } if (H >= d) { A.clog("Usability cleanupHoverEvents() hit iterations limit") } N = p[N.parentKey] } for (J in p) { if (p.hasOwnProperty(J) && !I[J]) { N = p[J]; if (N) { if (!K) { K = N.process() } else { N.dispose() } } } } } function u(I, K) { var L = null , H = null , J = false; for (H in p) { if (p.hasOwnProperty(H)) { L = p[H]; if (L && L.domNode === I && L.getKey() !== K) { if (!J) { J = L.process() } else { L.dispose() } } } } } function b(L, J, K) { if (!J) { J = L.target } if (s(J)) { return null } if (A.isiOS || A.isAndroid) { return null } var H, Q, M, P, N, O, I; if (!m(J)) { H = a(J, L.position.x, L.position.y); Q = f(J, H.x, H.y); M = new v(J,Q.x,Q.y,L); M.relXY = Q.relXY; P = M.getKey(); if (p[P]) { M = p[P] } else { p[P] = M } M.update(); if (!K) { I = n(J); if (I) { O = b(L, I, true); if (O !== null) { N = O.getKey(); P = M.getKey(); if (P !== N) { M.parentKey = N } } } c(M) } } else { M = b(L, n(J), K) } return M } function q(H) { H = E(H); if (w(H.target, H.relatedTarget)) { return } u(H.target) } function l(J) { var K = null , H = null , I = false; for (H in p) { if (p.hasOwnProperty(H)) { K = p[H]; if (K) { if (!I) { I = K.process(true) } else { K.dispose() } } } } } function o(H) { e.performFormCompletion(true) } function k(I) { var H = A.getValue(I, "target.id"); if (!H) { return } switch (I.type) { case "mousemove": b(I); break; case "mouseout": q(I); break; case "click": l(I); break; case "submit": o(I); break; default: break } } return { init: function() {}, destroy: function() { var I, H; for (I in p) { if (p.hasOwnProperty(I)) { p[I].dispose(); delete p[I] } } }, onevent: function(H) { if (typeof H !== "object" || !H.type) { return } k(H) }, onmessage: function(H) {}, createHoverEvent: F, cleanupHoverEvents: c, eventMap: p } }) } ; //----------------------------------------------- // Slow Resource Logger for Static Content v1.1.5 //----------------------------------------------- DCX.addModule("slowResource", function(c) { var n = DCX.getModuleConfig("slowResource") , b = false , l = c.utils; var e = n.responseTime, k = n.blockInitiatorTypes || [], o = n.blocklist || [], g = l.getValue(n, "mixedModeViolation", false), d = {}, h; function f() { if (typeof window.location.host !== "undefined") { if (performance !== undefined) { var q = performance.getEntriesByType("resource"); for (var p = 0; p < q.length; p++) { j(q[p]) } } } } function i(p) { for (var q = 0; q < o.length; ++q) { var r = o[q]; if (p.indexOf(r) > -1) { return true } } return false } function j(v) { if (k.indexOf(v.initiatorType) === -1) { if (!d[v.name + "_" + v.fetchStart]) { var u = v.name; if (!i(u)) { var r = (v.responseEnd).toFixed(2); var w = (v.responseEnd - v.startTime).toFixed(2); var x = (v.transferSize / 1024).toFixed(2); if (u.indexOf("?") > -1) { u = u.substr(0, u.indexOf("?")) } if (w > e) { var s = "Slow Resource - " + v.initiatorType + " (" + (w / 1000).toFixed(2) + " secs)"; var p = { description: s, urlNormalized: u, urlFull: v.name, initiator: v.initiatorType, response_time: w, total_time: r, "size(kBytes)": x }; var t = { description: "Slow Resource Data", action: "retrieved", value: p }; if (typeof DCX !== "undefined") { DCX.logCustomEvent("Slow Resource Data", t, 17) } } d[v.name + "_" + v.fetchStart] = true } } } if (g) { var q = v.name || ""; if (q.startsWith("http://")) { var p = { description: s, urlNormalized: u, urlFull: v.name, initiator: v.initiatorType, response_time: w, total_time: r, "size(kBytes)": x }; var t = { description: "Mixed Mode Violation", value: p }; if (typeof DCX !== "undefined") { DCX.logCustomEvent("Slow Resource Data", t, 17) } } } } function a() { try { h = new PerformanceObserver(function(q) { q.getEntries().forEach(function(r) { j(r) }) } ); h.observe({ entryTypes: ["resource"] }) } catch (p) {} } function m() { if (h) { h.disconnect(); h = null } } return { init: function() { n = c.getConfig(); a() }, destroy: function() { d = {}; m() }, onevent: function(p) { switch (p.type) { case "unload": d = {}; break; case "screenview_unload": break; default: break } if (typeof p !== "object" || !p.type) { return } if (p) { if (navigator.vendor.indexOf("Apple") > -1) { setTimeout(function() { if (document.readyState === "complete") { f() } }, 300) } else { f() } } }, version: "1.1.5" } }); //----------------------------------------------- // Universal Data Layer Logging v6.4 //----------------------------------------------- DCX.addModule("universalLogger", function(c) { var m = DCX.getModuleConfig("universalLogger") , e = false , u = c.utils; var k, o = {}, f = m.blocklistKeys || [], i = m.blocklistValues || [], d = m.maxSize || 20000, b = m.maxKeys || 500, l = m.mapping || {}, n = {}, w = m.breakout || {}, t = "", v = "", q = 0, p = 0, a = {}, s = m.maxArrayItems || 100; function h(z, C) { var y, B, A = false; if (!(C && C.length)) { return } for (y = 0; y < C.length; y++) { B = C[y]; switch (typeof B) { case "string": A = B.includes(z); break; case "object": if (B.regex) { var x = new RegExp(B.regex,B.flag); A = x.test(z) } break } if (A) { break } } return A } var g = function(x) { var D = [{ data: x, keys: [] }]; var K = {}; let currentSize = 0; while (D.length > 0) { var B = D.pop(); var x = B.data; var I = B.keys; for (var G in x) { if (x.hasOwnProperty(G)) { var F = x[G]; var y = I.slice(); y.push(G); var J = (y && y.join(".")) || G; if (p >= b || currentSize >= d) { break } if (h(J, f) || (i || "").includes(F)) { a.blockedData = true; continue } try { if (typeof F === "object" && F !== null) { if (w.includes(G) && Array.isArray(F) && F.length < s) { for (let j = 0; j < F.length; j++) { var H = F[j]; var C = {}; for (var E in H) { if (!i.includes(H[E]) && !h(E, f)) { C[E] = H[E] } } DCX.logCustomEvent(y.join(".") + "-array", C, 19) } continue } else { D.push({ data: F, keys: y }) } } else { if (typeof F !== "function") { var z = F === undefined ? JSON.stringify("") : JSON.stringify(F); K[y.join(".")] = F === undefined ? "" : F; currentSize += z.length + y.join(".").length; p++; if (l[G]) { n[l[G]] = (n[l[G]] || "") + "|" + F } } } } catch (A) { a.badDataDetected = true } } } } if (p >= b) { a.maxKeysExceeded = p } if (currentSize >= d) { a.maxSizeExceeded = currentSize } return K }; function r() { try { switch (typeof m.dlObject) { case "object": k = m.dlObject; case "function": k = m.dlObject(); default: k = window[m.dlObject] } } catch (z) {} if (typeof k !== "undefined") { e = true; try { o = g(k) } catch (z) { o = {}; a.success = false; var y = { dataLayer: o }; DCX.logCustomEvent("dataLayer", y, 19) } if (typeof DCX !== "undefined" && p > 0) { a.success = true; var y = { dataLayer: o }; if (Object.keys(n).length > 0) { y.mapping = n } DCX.logCustomEvent("dataLayer", y, 19); if (m.pushListener) { try { var x = function(A, C) { var B = A.push; A.push = function(E) { C(E); n = {}; q = 0; p = 0; a = {}; o = g(E); if (typeof DCX !== "undefined" && p > 0) { a.success = true; var D = { dataLayer: o }; if (Object.keys(n).length > 0) { D.mapping = n } DCX.logCustomEvent("dataLayer", D, 19) } return B.apply(this, arguments) } }; x(k, function(A) {}) } catch (z) {} } } } } return { init: function() { m = c.getConfig() }, destroy: function() { e = false }, onevent: function(x) { switch (x.type) { case "load": setTimeout(function() { r() }, DCX.getModuleConfig("universalLogger").delay); break; case "screenview_load": setTimeout(function() { r() }, DCX.getModuleConfig("universalLogger").delay); break; case "unload": e = false; break; default: break } }, version: "6.4" } }); //----------------------------------------------- // UTM Campaign Logger v1.3 //----------------------------------------------- if (DCX && typeof DCX.addModule === "function") { DCX.addModule("utmLogger", function(c) { var k = {}, f = false, m, o = c.utils, p, i, b, r, q, n = []; function a(z, v) { var w = new Date(); var y = { value: z, expiry: w.getTime() + v * (24 * 60 * 60 * 1000), }; var x = "utmCampaign_" + y.expiry; localStorage.setItem(x, JSON.stringify(y)); n.push(x) } function l() { var v = new Date(); n = n.filter(function(x) { var w = localStorage.getItem(x); if (w) { var y = JSON.parse(w); if (v.getTime() < y.expiry) { return true } else { localStorage.removeItem(x); q = Number(q) - 1; localStorage.setItem("utmCount", q); return false } } return false }) } function e(v) { var w = JSON.parse(localStorage.getItem(v) || "{}"); return w && w.value } function t(w, v) { w = w.replace(/[\[\]]/g, "\\$&"); var y = new RegExp("[?&]" + w + "(=([^&#]*)|&|#|$)") , x = y.exec(v); if (!x) { return null } if (!x[2]) { return "" } return decodeURIComponent(x[2].replace(/\+/g, " ")) } function h() { var x = s(), v; n = u(); l(); if (x) { if (!j(x)) { q = Number(q) + 1; localStorage.setItem("utmCount", q); a(x, p) } } if (Number(q) > 0 || x) { for (var w = 0; w < n.length; w++) { var x = {}; x = e(n[w]); if (x) { if (typeof DCX !== "undefined") { v = { type: 21, utmData: x }; c.post(v) } } sessionStorage.setItem("utmLogger", true) } } } function s() { if (t("utm_campaign", window.location.href)) { return { utm_campaign: t("utm_campaign", window.location.href), utm_content: t("utm_content", window.location.href) || "", utm_medium: t("utm_medium", window.location.href) || "", utm_source: t("utm_source", window.location.href) || "", utm_term: t("utm_term", window.location.href) || "", DCXVID: localStorage.getItem("X-DCXVID") || "", TLTSID: r } } return null } function u() { return Object.keys(localStorage).filter(function(v) { return v.startsWith("utmCampaign_") }).reduce(function(v, w) { v.push(w); return v }, []) } function j(v) { return n.some(function(w) { const x = e(w); return (x && x.utm_campaign === v.utm_campaign && x.utm_content === v.utm_content && x.utm_medium === v.utm_medium && x.utm_source === v.utm_source && x.DCXVID === v.DCXVID && x.TLTSID === v.TLTSID) }) } function g() { var w = DCX.getModuleConfig("DCCookie") || {} , v = w.sessionizationCookieName || "TLTSID" , x = o.getCookieValue(v); return x } function d(v) { m = o.getValue(v, "utmEnabled", false); p = o.getValue(v, "maxDays", 90), i = o.getValue(v, "maxCampaigns", 50), b = localStorage.getItem("X-DCXVID"), q = localStorage.getItem("utmCount") || 0, r = g() } return { init: function() { k = c.getConfig(); d(k) }, destroy: function() { f = false }, onevent: function(v) { switch (v.type) { case "load": if (m) { h() } f = true; break; case "unload": f = false; break; default: break } }, version: "1.3" } }) } ; //----------------------------------------------------- // DOM Mutation Observer for Dynamic DOM Updates v4.1.12 //----------------------------------------------------- DCX.addModule("DOMObserver",function(d){var g=DCX.getModuleConfig("DOMObserver"),f=false,c=d.utils,b=g.targets||[];function a(){var h=b.find(function(i){return i.styleTarget});if(h){return["id","class","style"]}else{return["id","class"]}}function e(){var k={attributes:true,attributesOldValue:true,attributeFilter:a(),subtree:true,childList:true,characterData:false,characterDataOldValue:false};var q=b.find(function(i){return i.attributeTarget});var l=function(u,t){var s=!t?document.querySelector(u.selector):t.querySelector(u);if(s){var i=new MutationObserver(function(v){var w=0;v.forEach(function(z){var C="",B=undefined,y=undefined;if(z.type==="attributes"||z.type==="childList"){z.addedNodes.forEach(function(D){B=undefined;B=b.find(function(E){if(E.selector.indexOf(z.target.className)>-1&&z.className!=""){return(E)}});if(!B){B=b.find(function(E){if(E.selector.indexOf(z.target.id)>-1&&z.target.id!=""){return(E)}})}if(!B){B=b.find(function(E){if(E.selector.toLowerCase().indexOf(z.target.nodeName.toLowerCase())>-1){return(E)}})}if(!B){B=b.find(function(E){if(E.selector.toLowerCase()==="body"){return(E)}})}if(B&&(B.maxEvents>w||B.maxEvents===0)){if(typeof(D.id)==="string"&&B&&(B.added===1||B.added===2)){if(D.id===B.childNode){C=B.eventName}}if(typeof(D.className)==="string"&&B&&C===""&&(B.added===1||B.added===2)){if(D.className===B.childNode){C=B.eventName}}if(typeof(D.outerHTML)==="string"&&B&&C===""&&(B.added===1||B.added===2)){if(D.outerHTML.indexOf(B.childNode)>-1){C=B.eventName}}if(typeof(D.nodeValue)==="string"&&B&&C===""&&(B.added===1||B.added===2)){if(D.nodeValue.indexOf(B.childNode)>-1){C=B.eventName}}if(typeof(D.nodeName)==="string"&&D.nodeName==="#text"&&B&&C===""&&(B.added===1||B.added===2)){if(D.nodeName.indexOf(B.childNode)>-1){C=B.eventName}}}});z.removedNodes.forEach(function(D){B=undefined;B=b.find(function(E){if(E.selector.indexOf(z.target.className)>-1&&z.className!=""){return(E)}});if(!B){B=b.find(function(E){if(E.selector.indexOf(z.target.id)>-1&&z.target.id!=""){return(E)}})}if(!B){B=b.find(function(E){if(E.selector.toLowerCase().indexOf(z.target.nodeName.toLowerCase())>-1){return(E)}})}if(!B){B=b.find(function(E){if(E.selector.toLowerCase()==="body"){return(E)}})}if(B&&(B.maxEvents>w||B.maxEvents===0)){if(typeof(D.id)==="string"&&B&&(B.added===0||B.added===2)){if(D.id===B.childNode){C=B.eventName}}if(typeof(D.className)==="string"&&B&&C===""&&(B.added===0||B.added===2)){if(D.className===B.childNode){C=B.eventName}}if(typeof(D.outerHTML)==="string"&&B&&C===""&&(B.added===0||B.added===2)){if(D.outerHTML.indexOf(B.childNode)>-1){C=B.eventName}}if(typeof(D.nodeValue)==="string"&&B&&C===""&&(B.added===0||B.added===2)){if(D.nodeValue.indexOf(B.childNode)>-1){C=B.eventName}}}});if(!z.removedNodes.length&&!z.addedNodes.length&&z.type==="attributes"){if(z.attributeName==="style"||(z.attributeName==="class"&&q)){var A=z.attributeName==="style"?"styleTarget":"attributeTarget";B=b.find(function(D){if(D[A]&&z.target.className.indexOf(D[A])>-1&&z.target.className!=""){return(D)}});if(B&&(B.maxEvents>w||B.maxEvents===0)){if(C===""&&(B.added===1||B.added===2)){if(z.target.outerHTML.indexOf(B.childNode)>-1){C=B.eventName}}}}}if(typeof DCX!=="undefined"&&C!==""){if(typeof B.customFunction==="string"){y=c.access(B.customFunction)}else{y=B.customFunction}if(typeof y==="function"){y(z.target,B.eventName)}var x=new CustomEvent(B.eventName);document.dispatchEvent(x);w=w+1}}})});i.observe(s,k)}};var o=function(x){var w=0,s,v;var u=function(z){v=setTimeout(function(){var A=new CustomEvent(z);document.dispatchEvent(A)},1000)};var t=function(C,A,z){if(!C||!z){return}var B=false;if(typeof z==="string"){B=C.querySelector(z)!==null}else{if(Array.isArray(z)){B=z.some(function(D){return C.querySelector(D)})}}if(B){u(A)}};var y=function(){var B=[];B=Array.from(document.querySelectorAll(x.selector));if(B.length>0){if(!s){var A=0;var z=B.length<8?B.length:8;s=new IntersectionObserver(function(C,D){C.forEach(function(J){var F=Array.from(document.querySelectorAll(x.selector)),I=B.length!==F.length&&B.length=4){clearInterval(i)}else{w++}}};var i=setInterval(y,x.interval)};var r=function(s,u,i){var i=c.getIFrameWindow(s);try{if(i&&i.document&&i.location.href!=="about:blank"){l(u,i.document)}}catch(t){}};for(var m=0;m size in bytes (0 = remove all base64 images) captureJSS: true, // Capture CSS Styles for React/JSS sites customStyle: ` body { opacity: 1 !important; } ` } }, browser: { sizzleObject: "window.Sizzle", jQueryObject: "window.jQuery", customid: ["data-dcxid", "name"] } }, modules: { usability: { hoverThreshold: 2000 // ms }, performance: { calculateRenderTime: true, renderTimeThreshold: 600000, filter: { navigationStart: false, unloadEventStart: false, unloadEventEnd: false, redirectStart: false, redirectEnd: false, fetchStart: false, domainLookupStart: false, domainLookupEnd: false, connectStart: false, connectEnd: false, secureConnectionStart: false, requestStart: false, responseStart: false, responseEnd: false, domLoading: false, domInteractive: false, domContentLoadedEventStart: false, domContentLoadedEventEnd: false, domComplete: false, loadEventStart: false, loadEventEnd: false } }, replay: { // Geolocation configuration geolocation: { enabled: false, triggers: [{ event: "load" }] }, // DOM Capture configuration domCapture: { enabled: true, triggers: [{ event: "load", fullDOMCapture: true, delay: 700 // ms }, { event: "click", targets: ["input[type=radio]", "input[type=checkbox]"], delay: 100 // ms -- Assists with Replay Fidelity on dynamic radio buttons & checkboxes }, { event: "click", targets: ["button.login-button"], fullDOMCapture: true, delay: 500 // ms }, { event: "click", }, { event: "change" }, { event: "DCXLazyLoad", fullDOMCapture: true, delay: 500 // ms }, { event: "FormResponse", fullDOMCapture: true, delay: 500 // ms }, { event: "SearchSuggestion", fullDOMCapture: true, delay: 500 // ms }, { event: "errorAlert", fullDOMCapture: true, delay: 500 // ms }, { event: "SearchResults", delay: 100, // ms fullDOMCapture: true, }, { event: "LoginNameDisplay", delay: 500, // ms fullDOMCapture: true, }, { event: "ProductSpecSpinner", delay: 100, // ms fullDOMCapture: true }, { event: "EducatorHubSpinner", delay: 100, // ms fullDOMCapture: true } , { event: "LoginError", delay: 100, // ms fullDOMCapture: true } ] } }, DCCookie: { appCookieWhitelist: [{ regex: ".*" }], dcAppKey: "" }, slowResource: { responseTime: 3000, // Time in ms to log slow static content - Recommended 3000+ blockInitiatorTypes: [], blocklist: [], mixedModeViolation: false }, universalLogger: { dlObject: "adobeDataLayer", // Data Layer object to record (Place in quotes) blocklistKeys: [], // List of keys to skip logging blocklistValues: [], // List of values to skip logging pushListener: true, // Monitor the data layer for push events after initial capture mapping: {}, breakout: [], // list of keys to breakout into custom events maxArrayItems: 100, // maximum items to break out of an array maxSize: 20000, // maximum bytes to log maxKeys: 500, // maximum number of items to log delay: 500 // milliseconds to delay first Data Layer inspection }, utmLogger: { utmEnabled: true, maxDays: 90, maxCampaigns: 50 }, DOMObserver: { targets: [ // Iframes on load { selector: "fd-row guideGridFluidLayout2Container", // Parent selector childNode: "guideContainer-rootPanel", // attributeTarget: 'loadingPage', // Name of event to log in DCX (must configure in UIC) eventName: "FormResponse", added: 1, // make lazyLoad true if page has lazy loading maxEvents: 1, // Set min interval 1000ms, so dom get ready. customFunction: false }, // error message on login { selector: ".guideFieldError", childNode: '#text', eventName: "FormResponse", added: 1, maxEvents: 0, customFunction: false }, // Thank you message { selector: ".aemformcontainer", // Parent selector childNode: "tyMessage", // Name of event to log in DCX (must configure in UIC) eventName: "FormResponse", added: 1, // make lazyLoad true if page has lazy loading maxEvents: 0, // Set min interval 1000ms, so dom get ready. customFunction: false }, { selector: ".cmp-suggestions-list", // Parent selector childNode: "cmp-suggestions-list-item", // Look for child node to trigger snapshot (blank for ANY) eventName: "SearchSuggestion", // Name of event to log in DCX (must configure in UIC) added: 1, maxEvents: 1, customFunction: false }, { selector: ".cmp-login-button", // Parent selector childNode: "#text", // Look for child node to trigger snapshot (blank for ANY) eventName: "LoginNameDisplay", // Name of event to log in DCX (must configure in UIC) added: 1, maxEvents: 1, customFunction: false }, { selector: ".cmp-account active", // Parent selector childNode: "#text", // Look for child node to trigger snapshot (blank for ANY) eventName: "LoginError", // Name of event to log in DCX (must configure in UIC) added: 1, maxEvents: 1, customFunction: false }, // Iframes on load { selector: "#aemFormFrame", // Parent selector childNode: "p.cmp-login__form-input__error.loginErr4", // Look for child node to trigger snapshot (blank for ANY) eventName: "FormResponse", // Name of event to log in DCX (must configure in UIC) added: 2, maxEvents: 0, iframeSelector: 'body', customFunction: false }, ] }, rageClicks: { clickInterval: 4000, // Ms between first registered click of element and current click to determine if Rage Click rageMin: 5, // Minimum number of times an element is clicked on within the clickInterval before being classed as Rage Click } } }; //---------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------- Alternate FireFox Config //---------------------------------------------------------------------------------------------------------- if (navigator.userAgent.indexOf("Firefox") !== -1) { //------------------------- Work arond for FETCH issues config.services.queue.asyncReqOnUnload = false; config.services.queue.useFetch = false; config.services.queue.endpointCheck = true; config.services.queue.endpointCheckTimeout = 2000; } //---------------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------- Alternate IE Configs //---------------------------------------------------------------------------------------------------------- if (document.documentMode === 10) { //-------------------------- Alternate config for IE10 (No Diff Support) config.services.queue.useFetch = false; config.services.queue.useBeacon = false; config.services.queue.DCXWorker = false; config.services.domCapture.diffEnabled = false; config.modules.replay.domCapture.triggers = [{ event: 'click', targets: ['a', 'a *', 'button', 'button *'] }, { event: "change" }, { event: "load", delay: 500 }]; } if (document.documentMode === 11) { //-------------------------------------------- Alternate Config for IE11 config.services.queue.useFetch = false; config.services.queue.useBeacon = false; config.services.queue.DCXWorker = false; config.services.message.privacyPatterns = []; } if (config.modules.DOMObserver && config.modules.DOMObserver.targets) { if (location.pathname.startsWith('/products')) { config.modules.DOMObserver.targets.push({ selector: '.productspecs', styleTarget: 'cmp-parts-spec-accordion-loader', childNode: "display: none", added: 1, maxEvents: 1, customFunction: false, eventName: "ProductSpecSpinner", }, { selector: '.productspecgrid', styleTarget: 'cmp-product-spec-grid_loader', childNode: "display: none", added: 1, maxEvents: 1, customFunction: false, eventName: "ProductSpecSpinner", }); } else { // Remove any existing ProductSpecSpinner target config.modules.DOMObserver.targets = config.modules.DOMObserver.targets.filter( target => target.eventName !== "ProductSpecSpinner" ); } if (location.pathname.startsWith('/educatorhub')) { config.modules.DOMObserver.targets.push({ selector: '.cmp-tile-results', styleTarget: 'cmp-tile-loading-wrap', childNode: "display: none", added: 1, maxEvents: 1, customFunction: false, eventName: "EducatorHubSpinner", }); } else { // Remove any existing ProductSpecSpinner target config.modules.DOMObserver.targets = config.modules.DOMObserver.targets.filter( target => target.eventName !== "EducatorHubSpinner" ); } if (location.pathname.startsWith('/search-results')) { config.modules.DOMObserver.targets.push( // Search spinner { selector: "cmp-search-results__content", childNode: "cmp-search-results__tile-title", added: 1, maxEvents: 1, customFunction: false, eventName: "SearchResults", }, // No search results { selector: ".cmp-search-filter-results", childNode: "cmp-search-results hidden", attributeTarget: 'cmp-search-results', added: 1, maxEvents: 1, customFunction: false, eventName: "SearchResults", }); } else { // Remove any existing ProductSpecSpinner target config.modules.DOMObserver.targets = config.modules.DOMObserver.targets.filter( target => target.eventName !== "SearchResults" ); } } DCX.init(config); }()); };