Guest User

tinypass.min.js

a guest
Dec 27th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. window.___tp = function () {
  2.   var tp,
  3.   __tp;
  4.   if (window.tp !== undefined) {
  5.     if (window.tp.isInitialized !== undefined) {
  6.       window.tp.loadRequireJs();
  7.       return
  8.     }
  9.     __tp = window.tp
  10.   }
  11.   tp = function () {
  12.     function t() {
  13.       function i(e, t, r) {
  14.         var i,
  15.         s,
  16.         o;
  17.         for (var u = 0; u < n.length; u++) {
  18.           var a = n[u];
  19.           e == a.module && t.substring(0, a.prefix.length) == a.prefix && (i = t.substring(a.prefix.length, a.prefix.length + 1).toLowerCase() + t.substring(a.prefix.length + 1, t.length), s = tp[e].registerCallback(i, r), s != undefined && (o = s))
  20.         }
  21.         return o
  22.       }
  23.       var t = [
  24.         'offer',
  25.         'template',
  26.         'meter',
  27.         'experience',
  28.         'myaccount',
  29.         'pianoId',
  30.         'tinypassLogin',
  31.         'swg'
  32.       ],
  33.       n = [
  34.         {
  35.           module: 'offer',
  36.           prefix: 'checkout'
  37.         },
  38.         {
  39.           module: 'pianoId',
  40.           prefix: 'pianoId'
  41.         }
  42.       ],
  43.       r = function (e, n) {
  44.         return function () {
  45.           var r;
  46.           for (var s = 0; s < t.length; s++) {
  47.             var o = t[s],
  48.             u = tp[o].registerCallback(e, n);
  49.             u != undefined && (r = u),
  50.             u = i(o, e, n),
  51.             u != undefined && (r = u)
  52.           }
  53.           return r
  54.         }
  55.       };
  56.       e.addHandler = function () {
  57.         var t = r.apply(null, arguments);
  58.         tp.isInitialized ? t()  : e.events.push(t)
  59.       }
  60.     }
  61.     var e = this;
  62.     this.aid = '',
  63.     this.setAid = function (e) {
  64.       this.aid = e
  65.     },
  66.     this.reload = function () {
  67.       location.href = tp.util.removeVoucherCodeFromUrl(location.href)
  68.     },
  69.     this.gaClientId = null,
  70.     this.setGAClientId = function (e) {
  71.       this.gaClientId = e,
  72.       this.gaService && this.gaService.setClientId(e)
  73.     },
  74.     this.getGAClientId = function () {
  75.       return this.gaClientId
  76.     },
  77.     this.gaCrossDomainLinking = null,
  78.     this.enableGACrossDomainLinking = function () {
  79.       this.gaCrossDomainLinking = !0;
  80.       var e = this,
  81.       t = 500,
  82.       n = 60000,
  83.       r = setInterval(function () {
  84.         var t = window.ga;
  85.         if (t && typeof t == 'function') {
  86.           clearInterval(r);
  87.           try {
  88.             t(function (t) {
  89.               e.setGAClientId(t.get('clientId'))
  90.             })
  91.           } catch (n) {
  92.           }
  93.         }
  94.       }, t);
  95.       setTimeout(function () {
  96.         clearInterval(r)
  97.       }, n)
  98.     },
  99.     this.tags = '',
  100.     this.setTags = function (e) {
  101.       e instanceof Array ? this.tags = e.join(',')  : this.tags = e
  102.     },
  103.     this.useExperience = !1,
  104.     this.setUseExperience = function (e) {
  105.       this.useExperience = e
  106.     },
  107.     this.experimentalIosModal = !1,
  108.     this.setExperimentalIosModal = function (e) {
  109.     },
  110.     this.contentIsNative = '',
  111.     this.setContentIsNative = function (e) {
  112.       this.contentIsNative = e
  113.     },
  114.     this.endpoint = '',
  115.     this.setEndpoint = function (e) {
  116.       this.endpoint = e
  117.     },
  118.     this.espEndpoint = '',
  119.     this.setEspEndpoint = function (e) {
  120.       this.espEndpoint = e
  121.     },
  122.     this.contentId = '',
  123.     this.setContentId = function (e) {
  124.       this.contentId = e
  125.     },
  126.     this.trackPages = !0,
  127.     this.setTrackPages = function (e) {
  128.       this.trackPages = e
  129.     },
  130.     this.debug = !1,
  131.     this.setDebug = function (e) {
  132.       this.debug = e
  133.     },
  134.     this.userRef = '',
  135.     this.setUserRef = function (e) {
  136.       this.userRef = e
  137.     },
  138.     this.useTinypassAccounts = !1,
  139.     this.setUseTinypassAccounts = function (e) {
  140.       this.useTinypassAccounts = e
  141.     },
  142.     this.useCondeUserProvider = !1,
  143.     this.setUseCondeUserProvider = function (e) {
  144.       this.useCondeUserProvider = e
  145.     },
  146.     this.useGigyaUserProvider = !1,
  147.     this.setUseGigyaUserProvider = function (e) {
  148.       this.useGigyaUserProvider = e
  149.     },
  150.     this.usePianoIdUserProvider = !1,
  151.     this.setUsePianoIdUserProvider = function (e) {
  152.       this.usePianoIdUserProvider = e
  153.     },
  154.     this.pianoIdUrl = '',
  155.     this.setPianoIdUrl = function (e) {
  156.       this.pianoIdUrl = e
  157.     },
  158.     this.useAidSpecifiedCookies = !1,
  159.     this.setUseAidSpecifiedCookies = function (e) {
  160.       this.useAidSpecifiedCookies = e
  161.     },
  162.     this.sandbox = !1,
  163.     this.setSandbox = function (e) {
  164.       this.sandbox = e
  165.     },
  166.     this.isNonProdEndpoint = function () {
  167.       var e = /^https?:\/\/(.*sandbox.*|\d+\.dev)\.(tinypass\.com|piano\.io)/i;
  168.       return this.endpoint === 'sandbox' ? !0 : e.test(this.endpoint)
  169.     },
  170.     this.contentCreatedSelector = '',
  171.     this.setContentCreatedSelector = function (e) {
  172.       this.contentCreatedSelector = e
  173.     },
  174.     this.contentCreated = '',
  175.     this.setContentCreated = function (e) {
  176.       this.contentCreated = e
  177.     },
  178.     this.contentAuthor = '',
  179.     this.setContentAuthor = function (e) {
  180.       this.contentAuthor = e
  181.     },
  182.     this.contentSection = '',
  183.     this.setContentSection = function (e) {
  184.       this.contentSection = e
  185.     },
  186.     this.zone = '',
  187.     this.setZone = function (e) {
  188.       this.zone = e || ''
  189.     },
  190.     this.zIndexes = {
  191.       backdrop: 300000,
  192.       modal: 300050,
  193.       close: 300100
  194.     },
  195.     this.setZIndexes = function (e) {
  196.       this.zIndexes = e
  197.     },
  198.     this.customPreChecks = [
  199.     ],
  200.     this.setCustomPreCheck = function (e) {
  201.       this.customPreChecks.push(e)
  202.     },
  203.     this.customParams = {
  204.     },
  205.     this.setCustomParam = function (e, t, n, r) {
  206.       var i = [
  207.         'content',
  208.         'user',
  209.         'request'
  210.       ];
  211.       n || (n = 'content'),
  212.       n = n.toLowerCase();
  213.       if (i.indexOf(n) < 0) throw new Error('Undefined scope ' + n + '\nAvailable scopes: ' + i.join(', '));
  214.       this.customParams[n] === undefined && (this.customParams[n] = {
  215.       });
  216.       if (this.customParams[n][e] === undefined || r) this.customParams[n][e] = [
  217.       ];
  218.       var s = [
  219.       ].concat(t);
  220.       for (var o = 0; o < s.length; o++) {
  221.         if (typeof s[o] != 'string') throw new Error('setCustomParam accept only string values or array of strings');
  222.         this.customParams[n][e].push(s[o])
  223.       }
  224.     },
  225.     this.resetCustomParam = function (e) {
  226.       e || (e = 'content'),
  227.       delete this.customParams[e]
  228.     },
  229.     this.externalLibraries = [
  230.     ],
  231.     this.externalLibrariesCallbacks = [
  232.     ],
  233.     this.addExternalLibrary = function (e, t) {
  234.       if (this.isInitialized) e = typeof e == 'string' ? [
  235.         e
  236.       ] : e,
  237.       this.require(e, function () {
  238.         t && t()
  239.       });
  240.        else {
  241.         if (typeof e == 'string') this.externalLibraries.push(e);
  242.          else for (var n = 0; n < e.length; ++n) this.externalLibraries.push(e[n]);
  243.         t && this.externalLibrariesCallbacks.push(t)
  244.       }
  245.     },
  246.     this.customVariables = {
  247.     },
  248.     this.setCustomVariable = function (e, t) {
  249.       this.customVariables[e] = t
  250.     },
  251.     this.trackPageView = !0,
  252.     this.setTrackPageView = function (e) {
  253.       this.trackPageView = e
  254.     },
  255.     this.setTrackPageview = function (e) {
  256.       this.trackPageView = e
  257.     },
  258.     this.customPageUrl = '',
  259.     this.setPageURL = function (e) {
  260.       this.customPageUrl = e
  261.     },
  262.     this.adblockerCookieName = '',
  263.     this.setAdblockerCookieName = function (e) {
  264.       this.adblockerCookieName = e
  265.     },
  266.     this.maxCookieExpirationInDays = null,
  267.     this.setMaxCookieExpirationInDays = function (e) {
  268.       var e = parseInt(e, 10);
  269.       if (!(isFinite(e) && e > 0)) throw new Error('maxCookieExpirationInDays must be a positive number');
  270.       this.maxCookieExpirationInDays = e
  271.     },
  272.     this.getMaxCookieExpirationInDays = function () {
  273.       return this.maxCookieExpirationInDays
  274.     },
  275.     this.fbPixelId = null,
  276.     this.setFbPixelId = function (e) {
  277.       this.fbPixelId = e
  278.     },
  279.     this.getFbPixelId = function () {
  280.       return this.fbPixelId
  281.     },
  282.     this.isMockMode = !1,
  283.     this.events = [
  284.     ],
  285.     t()
  286.   },
  287.   function () {
  288.     var require,
  289.     requirejs,
  290.     define;
  291.     (function (ba) {
  292.       function G(e) {
  293.         return '[object Function]' === K.call(e)
  294.       }
  295.       function H(e) {
  296.         return '[object Array]' === K.call(e)
  297.       }
  298.       function v(e, t) {
  299.         if (e) {
  300.           var n;
  301.           for (n = 0; n < e.length && (!e[n] || !t(e[n], n, e)); n += 1);
  302.         }
  303.       }
  304.       function T(e, t) {
  305.         if (e) {
  306.           var n;
  307.           for (n = e.length - 1; - 1 < n && (!e[n] || !t(e[n], n, e)); n -= 1);
  308.         }
  309.       }
  310.       function t(e, t) {
  311.         return fa.call(e, t)
  312.       }
  313.       function m(e, n) {
  314.         return t(e, n) && e[n]
  315.       }
  316.       function B(e, n) {
  317.         for (var r in e) if (t(e, r) && n(e[r], r)) break
  318.       }
  319.       function U(e, n, r, i) {
  320.         return n && B(n, function (n, s) {
  321.           if (r || !t(e, s)) i && 'object' == typeof n && n && !H(n) && !G(n) && !(n instanceof RegExp) ? (e[s] || (e[s] = {
  322.           }), U(e[s], n, r, i))  : e[s] = n
  323.         }),
  324.         e
  325.       }
  326.       function u(e, t) {
  327.         return function () {
  328.           return t.apply(e, arguments)
  329.         }
  330.       }
  331.       function ca(e) {
  332.         throw e
  333.       }
  334.       function da(e) {
  335.         if (!e) return e;
  336.         var t = ba;
  337.         return v(e.split('.'), function (e) {
  338.           t = t[e]
  339.         }),
  340.         t
  341.       }
  342.       function C(e, t, n, r) {
  343.         return t = Error(t + '\nhttp://requirejs.org/docs/errors.html#' + e),
  344.         t.requireType = e,
  345.         t.requireModules = r,
  346.         n && (t.originalError = n),
  347.         t
  348.       }
  349.       function ga(e) {
  350.         function n(e, t, n) {
  351.           var r,
  352.           i,
  353.           s,
  354.           o,
  355.           u,
  356.           a,
  357.           f,
  358.           l,
  359.           t = t && t.split('/'),
  360.           c = A.map,
  361.           h = c && c['*'];
  362.           if (e) {
  363.             e = e.split('/'),
  364.             i = e.length - 1,
  365.             A.nodeIdCompat && Q.test(e[i]) && (e[i] = e[i].replace(Q, '')),
  366.             '.' === e[0].charAt(0) && t && (i = t.slice(0, t.length - 1), e = i.concat(e)),
  367.             i = e;
  368.             for (s = 0; s < i.length; s++) (o = i[s], '.' === o) ? (i.splice(s, 1), s -= 1)  : '..' === o && 0 !== s && (1 != s || '..' !== i[2]) && '..' !== i[s - 1] && 0 < s && (i.splice(s - 1, 2), s -= 2);
  369.             e = e.join('/')
  370.           }
  371.           if (n && c && (t || h)) {
  372.             i = e.split('/'),
  373.             s = i.length;
  374.             e: for (; 0 < s; s -= 1) {
  375.               u = i.slice(0, s).join('/');
  376.               if (t) for (o = t.length; 0 < o; o -= 1) if (n = m(c, t.slice(0, o).join('/'))) if (n = m(n, u)) {
  377.                 r = n,
  378.                 a = s;
  379.                 break e
  380.               }
  381.               !f && h && m(h, u) && (f = m(h, u), l = s)
  382.             }
  383.             !r && f && (r = f, a = l),
  384.             r && (i.splice(0, a, r), e = i.join('/'))
  385.           }
  386.           return (r = m(A.pkgs, e)) ? r : e
  387.         }
  388.         function r(e) {
  389.           z && v(document.getElementsByTagName('script'), function (t) {
  390.             if (t.getAttribute('data-requiremodule') === e && t.getAttribute('data-requirecontext') === x.contextName) return t.parentNode.removeChild(t),
  391.             !0
  392.           })
  393.         }
  394.         function i(e) {
  395.           var t = m(A.paths, e);
  396.           if (t && H(t) && 1 < t.length) return t.shift(),
  397.           x.require.undef(e),
  398.           x.makeRequire(null, {
  399.             skipMap: !0
  400.           }) ([e]),
  401.           !0
  402.         }
  403.         function s(e) {
  404.           var t,
  405.           n = e ? e.indexOf('!')  : - 1;
  406.           return - 1 < n && (t = e.substring(0, n), e = e.substring(n + 1, e.length)),
  407.           [
  408.             t,
  409.             e
  410.           ]
  411.         }
  412.         function o(e, t, r, i) {
  413.           var o,
  414.           u,
  415.           a = null,
  416.           f = t ? t.name : null,
  417.           l = e,
  418.           c = !0,
  419.           h = '';
  420.           return e || (c = !1, e = '_@r' + (q += 1)),
  421.           e = s(e),
  422.           a = e[0],
  423.           e = e[1],
  424.           a && (a = n(a, f, i), u = m(j, a)),
  425.           e && (a ? h = u && u.normalize ? u.normalize(e, function (e) {
  426.             return n(e, f, i)
  427.           })  : - 1 === e.indexOf('!') ? n(e, f, i)  : e : (h = n(e, f, i), e = s(h), a = e[0], h = e[1], r = !0, o = x.nameToUrl(h))),
  428.           r = a && !u && !r ? '_unnormalized' + (W += 1)  : '',
  429.           {
  430.             prefix: a,
  431.             name: h,
  432.             parentMap: t,
  433.             unnormalized: !!r,
  434.             url: o,
  435.             originalName: l,
  436.             isDefine: c,
  437.             id: (a ? a + '!' + h : h) + r
  438.           }
  439.         }
  440.         function a(e) {
  441.           var t = e.id,
  442.           n = m(O, t);
  443.           return n || (n = O[t] = new x.Module(e)),
  444.           n
  445.         }
  446.         function f(e, n, r) {
  447.           var i = e.id,
  448.           s = m(O, i);
  449.           t(j, i) && (!s || s.defineEmitComplete) ? 'defined' === n && r(j[i])  : (s = a(e), s.error && 'error' === n) ? r(s.error)  : s.on(n, r)
  450.         }
  451.         function l(e, t) {
  452.           var n = e.requireModules,
  453.           r = !1;
  454.           t ? t(e)  : (v(n, function (t) {
  455.             if (t = m(O, t)) t.error = e,
  456.             t.events.error && (r = !0, t.emit('error', e))
  457.           }), !r) && g.onError(e)
  458.         }
  459.         function c() {
  460.           R.length && (ha.apply(P, [
  461.             P.length,
  462.             0
  463.           ].concat(R)), R = [
  464.           ])
  465.         }
  466.         function h(e) {
  467.           delete O[e],
  468.           delete _[e]
  469.         }
  470.         function p(e, t, n) {
  471.           var r = e.map.id;
  472.           e.error ? e.emit('error', e.error)  : (t[r] = !0, v(e.depMaps, function (r, i) {
  473.             var s = r.id,
  474.             o = m(O, s);
  475.             o && !e.depMatched[i] && !n[s] && (m(t, s) ? (e.defineDep(i, j[s]), e.check())  : p(o, t, n))
  476.           }), n[r] = !0)
  477.         }
  478.         function d() {
  479.           var e,
  480.           t,
  481.           n = (e = 1000 * A.waitSeconds) && x.startTime + e < (new Date).getTime(),
  482.           s = [
  483.           ],
  484.           o = [
  485.           ],
  486.           u = !1,
  487.           a = !0;
  488.           if (!E) {
  489.             E = !0,
  490.             B(_, function (e) {
  491.               var f = e.map,
  492.               l = f.id;
  493.               if (e.enabled && (f.isDefine || o.push(e), !e.error)) if (!e.inited && n) i(l) ? u = t = !0 : (s.push(l), r(l));
  494.                else if (!e.inited && e.fetched && f.isDefine && (u = !0, !f.prefix)) return a = !1
  495.             });
  496.             if (n && s.length) return e = C('timeout', 'Load timeout for modules: ' + s, null, s),
  497.             e.contextName = x.contextName,
  498.             l(e);
  499.             a && v(o, function (e) {
  500.               p(e, {
  501.               }, {
  502.               })
  503.             }),
  504.             (!n || t) && u && (z || ea) && !L && (L = setTimeout(function () {
  505.               L = 0,
  506.               d()
  507.             }, 50)),
  508.             E = !1
  509.           }
  510.         }
  511.         function y(e) {
  512.           t(j, e[0]) || a(o(e[0], null, !0)).init(e[1], e[2])
  513.         }
  514.         function b(e) {
  515.           var e = e.currentTarget || e.srcElement,
  516.           t = x.onScriptLoad;
  517.           return e.detachEvent && !Y ? e.detachEvent('onreadystatechange', t)  : e.removeEventListener('load', t, !1),
  518.           t = x.onScriptError,
  519.           (!e.detachEvent || Y) && e.removeEventListener('error', t, !1),
  520.           {
  521.             node: e,
  522.             id: e && e.getAttribute('data-requiremodule')
  523.           }
  524.         }
  525.         function w() {
  526.           var e;
  527.           for (c(); P.length; ) {
  528.             e = P.shift();
  529.             if (null === e[0]) return l(C('mismatch', 'Mismatched anonymous define() module: ' + e[e.length - 1]));
  530.             y(e)
  531.           }
  532.         }
  533.         var E,
  534.         S,
  535.         x,
  536.         k,
  537.         L,
  538.         A = {
  539.           waitSeconds: 7,
  540.           baseUrl: './',
  541.           paths: {
  542.           },
  543.           bundles: {
  544.           },
  545.           pkgs: {
  546.           },
  547.           shim: {
  548.           },
  549.           config: {
  550.           }
  551.         },
  552.         O = {
  553.         },
  554.         _ = {
  555.         },
  556.         D = {
  557.         },
  558.         P = [
  559.         ],
  560.         j = {
  561.         },
  562.         F = {
  563.         },
  564.         I = {
  565.         },
  566.         q = 1,
  567.         W = 1;
  568.         return k = {
  569.           require: function (e) {
  570.             return e.require ? e.require : e.require = x.makeRequire(e.map)
  571.           },
  572.           exports: function (e) {
  573.             e.usingExports = !0;
  574.             if (e.map.isDefine) return e.exports ? j[e.map.id] = e.exports : e.exports = j[e.map.id] = {
  575.             }
  576.           },
  577.           module: function (e) {
  578.             return e.module ? e.module : e.module = {
  579.               id: e.map.id,
  580.               uri: e.map.url,
  581.               config: function () {
  582.                 return m(A.config, e.map.id) || {
  583.                 }
  584.               },
  585.               exports: e.exports || (e.exports = {
  586.               })
  587.             }
  588.           }
  589.         },
  590.         S = function (e) {
  591.           this.events = m(D, e.id) || {
  592.           },
  593.           this.map = e,
  594.           this.shim = m(A.shim, e.id),
  595.           this.depExports = [
  596.           ],
  597.           this.depMaps = [
  598.           ],
  599.           this.depMatched = [
  600.           ],
  601.           this.pluginMaps = {
  602.           },
  603.           this.depCount = 0
  604.         },
  605.         S.prototype = {
  606.           init: function (e, t, n, r) {
  607.             r = r || {
  608.             },
  609.             this.inited || (this.factory = t, n ? this.on('error', n)  : this.events.error && (n = u(this, function (e) {
  610.               this.emit('error', e)
  611.             })), this.depMaps = e && e.slice(0), this.errback = n, this.inited = !0, this.ignore = r.ignore, r.enabled || this.enabled ? this.enable()  : this.check())
  612.           },
  613.           defineDep: function (e, t) {
  614.             this.depMatched[e] || (this.depMatched[e] = !0, this.depCount -= 1, this.depExports[e] = t)
  615.           },
  616.           fetch: function () {
  617.             if (!this.fetched) {
  618.               this.fetched = !0,
  619.               x.startTime = (new Date).getTime();
  620.               var e = this.map;
  621.               if (!this.shim) return e.prefix ? this.callPlugin()  : this.load();
  622.               x.makeRequire(this.map, {
  623.                 enableBuildCallback: !0
  624.               }) (this.shim.deps || [
  625.               ], u(this, function () {
  626.                 return e.prefix ? this.callPlugin()  : this.load()
  627.               }))
  628.             }
  629.           },
  630.           load: function () {
  631.             var e = this.map.url;
  632.             F[e] || (F[e] = !0, x.load(this.map.id, e))
  633.           },
  634.           check: function () {
  635.             if (this.enabled && !this.enabling) {
  636.               var e,
  637.               t,
  638.               n = this.map.id;
  639.               t = this.depExports;
  640.               var r = this.exports,
  641.               i = this.factory;
  642.               if (this.inited) {
  643.                 if (this.error) this.emit('error', this.error);
  644.                  else if (!this.defining) {
  645.                   this.defining = !0;
  646.                   if (1 > this.depCount && !this.defined) {
  647.                     if (G(i)) {
  648.                       if (this.events.error && this.map.isDefine || g.onError !== ca) try {
  649.                         r = x.execCb(n, i, t, r)
  650.                       } catch (s) {
  651.                         e = s
  652.                       } else r = x.execCb(n, i, t, r);
  653.                       this.map.isDefine && void 0 === r && ((t = this.module) ? r = t.exports : this.usingExports && (r = this.exports));
  654.                       if (e) return e.requireMap = this.map,
  655.                       e.requireModules = this.map.isDefine ? [
  656.                         this.map.id
  657.                       ] : null,
  658.                       e.requireType = this.map.isDefine ? 'define' : 'require',
  659.                       l(this.error = e)
  660.                     } else r = i;
  661.                     this.exports = r,
  662.                     this.map.isDefine && !this.ignore && (j[n] = r, g.onResourceLoad) && g.onResourceLoad(x, this.map, this.depMaps),
  663.                     h(n),
  664.                     this.defined = !0
  665.                   }
  666.                   this.defining = !1,
  667.                   this.defined && !this.defineEmitted && (this.defineEmitted = !0, this.emit('defined', this.exports), this.defineEmitComplete = !0)
  668.                 }
  669.               } else this.fetch()
  670.             }
  671.           },
  672.           callPlugin: function () {
  673.             var e = this.map,
  674.             r = e.id,
  675.             i = o(e.prefix);
  676.             this.depMaps.push(i),
  677.             f(i, 'defined', u(this, function (i) {
  678.               var s,
  679.               c;
  680.               c = m(I, this.map.id);
  681.               var p = this.map.name,
  682.               d = this.map.parentMap ? this.map.parentMap.name : null,
  683.               v = x.makeRequire(e.parentMap, {
  684.                 enableBuildCallback: !0
  685.               });
  686.               if (this.map.unnormalized) {
  687.                 if (i.normalize && (p = i.normalize(p, function (e) {
  688.                   return n(e, d, !0)
  689.                 }) || ''), i = o(e.prefix + '!' + p, this.map.parentMap), f(i, 'defined', u(this, function (e) {
  690.                   this.init([], function () {
  691.                     return e
  692.                   }, null, {
  693.                     enabled: !0,
  694.                     ignore: !0
  695.                   })
  696.                 })), c = m(O, i.id)) this.depMaps.push(i),
  697.                 this.events.error && c.on('error', u(this, function (e) {
  698.                   this.emit('error', e)
  699.                 })),
  700.                 c.enable()
  701.               } else c ? (this.map.url = x.nameToUrl(c), this.load())  : (s = u(this, function (e) {
  702.                 this.init([], function () {
  703.                   return e
  704.                 }, null, {
  705.                   enabled: !0
  706.                 })
  707.               }), s.error = u(this, function (e) {
  708.                 this.inited = !0,
  709.                 this.error = e,
  710.                 e.requireModules = [
  711.                   r
  712.                 ],
  713.                 B(O, function (e) {
  714.                   0 === e.map.id.indexOf(r + '_unnormalized') && h(e.map.id)
  715.                 }),
  716.                 l(e)
  717.               }), s.fromText = u(this, function (n, i) {
  718.                 var u = e.name,
  719.                 f = o(u),
  720.                 c = M;
  721.                 i && (n = i),
  722.                 c && (M = !1),
  723.                 a(f),
  724.                 t(A.config, r) && (A.config[u] = A.config[r]);
  725.                 try {
  726.                   g.exec(n)
  727.                 } catch (h) {
  728.                   return l(C('fromtexteval', 'fromText eval for ' + r + ' failed: ' + h, h, [
  729.                     r
  730.                   ]))
  731.                 }
  732.                 c && (M = !0),
  733.                 this.depMaps.push(f),
  734.                 x.completeLoad(u),
  735.                 v([u], s)
  736.               }), i.load(e.name, v, s, A))
  737.             })),
  738.             x.enable(i, this),
  739.             this.pluginMaps[i.id] = i
  740.           },
  741.           enable: function () {
  742.             _[this.map.id] = this,
  743.             this.enabling = this.enabled = !0,
  744.             v(this.depMaps, u(this, function (e, n) {
  745.               var r,
  746.               i;
  747.               if ('string' == typeof e) {
  748.                 e = o(e, this.map.isDefine ? this.map : this.map.parentMap, !1, !this.skipMap),
  749.                 this.depMaps[n] = e;
  750.                 if (r = m(k, e.id)) {
  751.                   this.depExports[n] = r(this);
  752.                   return
  753.                 }
  754.                 this.depCount += 1,
  755.                 f(e, 'defined', u(this, function (e) {
  756.                   this.defineDep(n, e),
  757.                   this.check()
  758.                 })),
  759.                 this.errback && f(e, 'error', u(this, this.errback))
  760.               }
  761.               r = e.id,
  762.               i = O[r],
  763.               !t(k, r) && i && !i.enabled && x.enable(e, this)
  764.             })),
  765.             B(this.pluginMaps, u(this, function (e) {
  766.               var t = m(O, e.id);
  767.               t && !t.enabled && x.enable(e, this)
  768.             })),
  769.             this.enabling = !1,
  770.             this.check()
  771.           },
  772.           on: function (e, t) {
  773.             var n = this.events[e];
  774.             n || (n = this.events[e] = [
  775.             ]),
  776.             n.push(t)
  777.           },
  778.           emit: function (e, t) {
  779.             v(this.events[e], function (e) {
  780.               e(t)
  781.             }),
  782.             'error' === e && delete this.events[e]
  783.           }
  784.         },
  785.         x = {
  786.           config: A,
  787.           contextName: e,
  788.           registry: O,
  789.           defined: j,
  790.           urlFetched: F,
  791.           defQueue: P,
  792.           Module: S,
  793.           makeModuleMap: o,
  794.           nextTick: g.nextTick,
  795.           onError: l,
  796.           configure: function (e) {
  797.             e.baseUrl && '/' !== e.baseUrl.charAt(e.baseUrl.length - 1) && (e.baseUrl += '/');
  798.             var t = A.shim,
  799.             n = {
  800.               paths: !0,
  801.               bundles: !0,
  802.               config: !0,
  803.               map: !0
  804.             };
  805.             B(e, function (e, t) {
  806.               n[t] ? (A[t] || (A[t] = {
  807.               }), U(A[t], e, !0, !0))  : A[t] = e
  808.             }),
  809.             e.bundles && B(e.bundles, function (e, t) {
  810.               v(e, function (e) {
  811.                 e !== t && (I[e] = t)
  812.               })
  813.             }),
  814.             e.shim && (B(e.shim, function (e, n) {
  815.               H(e) && (e = {
  816.                 deps: e
  817.               }),
  818.               (e.exports || e.init) && !e.exportsFn && (e.exportsFn = x.makeShimExports(e)),
  819.               t[n] = e
  820.             }), A.shim = t),
  821.             e.packages && v(e.packages, function (e) {
  822.               var t,
  823.               e = 'string' == typeof e ? {
  824.                 name: e
  825.               }
  826.                : e;
  827.               t = e.name,
  828.               e.location && (A.paths[t] = e.location),
  829.               A.pkgs[t] = e.name + '/' + (e.main || 'main').replace(ia, '').replace(Q, '')
  830.             }),
  831.             B(O, function (e, t) {
  832.               !e.inited && !e.map.unnormalized && (e.map = o(t))
  833.             }),
  834.             (e.deps || e.callback) && x.require(e.deps || [
  835.             ], e.callback)
  836.           },
  837.           makeShimExports: function (e) {
  838.             return function () {
  839.               var t;
  840.               return e.init && (t = e.init.apply(ba, arguments)),
  841.               t || e.exports && da(e.exports)
  842.             }
  843.           },
  844.           makeRequire: function (i, s) {
  845.             function u(n, r, f) {
  846.               var c,
  847.               h;
  848.               return s.enableBuildCallback && r && G(r) && (r.__requireJsBuild = !0),
  849.               'string' == typeof n ? G(r) ? l(C('requireargs', 'Invalid require call'), f)  : i && t(k, n) ? k[n](O[i.id])  : g.get ? g.get(x, n, i, u)  : (c = o(n, i, !1, !0), c = c.id, t(j, c) ? j[c] : l(C('notloaded', 'Module name "' + c + '" has not been loaded yet for context: ' + e + (i ? '' : '. Use require([])'))))  : (w(), x.nextTick(function () {
  850.                 w(),
  851.                 h = a(o(null, i)),
  852.                 h.skipMap = s.skipMap,
  853.                 h.init(n, r, f, {
  854.                   enabled: !0
  855.                 }),
  856.                 d()
  857.               }), u)
  858.             }
  859.             return s = s || {
  860.             },
  861.             U(u, {
  862.               isBrowser: z,
  863.               toUrl: function (e) {
  864.                 var t,
  865.                 r = e.lastIndexOf('.'),
  866.                 s = e.split('/') [0];
  867.                 return - 1 !== r && ('.' !== s && '..' !== s || 1 < r) && (t = e.substring(r, e.length), e = e.substring(0, r)),
  868.                 x.nameToUrl(n(e, i && i.id, !0), t, !0)
  869.               },
  870.               defined: function (e) {
  871.                 return t(j, o(e, i, !1, !0).id)
  872.               },
  873.               specified: function (e) {
  874.                 return e = o(e, i, !1, !0).id,
  875.                 t(j, e) || t(O, e)
  876.               }
  877.             }),
  878.             i || (u.undef = function (e) {
  879.               c();
  880.               var t = o(e, i, !0),
  881.               n = m(O, e);
  882.               r(e),
  883.               delete j[e],
  884.               delete F[t.url],
  885.               delete D[e],
  886.               T(P, function (t, n) {
  887.                 t[0] === e && P.splice(n, 1)
  888.               }),
  889.               n && (n.events.defined && (D[e] = n.events), h(e))
  890.             }),
  891.             u
  892.           },
  893.           enable: function (e) {
  894.             m(O, e.id) && a(e).enable()
  895.           },
  896.           completeLoad: function (e) {
  897.             var n,
  898.             r,
  899.             s = m(A.shim, e) || {
  900.             },
  901.             o = s.exports;
  902.             for (c(); P.length; ) {
  903.               r = P.shift();
  904.               if (null === r[0]) {
  905.                 r[0] = e;
  906.                 if (n) break;
  907.                 n = !0
  908.               } else r[0] === e && (n = !0);
  909.               y(r)
  910.             }
  911.             r = m(O, e);
  912.             if (!n && !t(j, e) && r && !r.inited) {
  913.               if (A.enforceDefine && (!o || !da(o))) return i(e) ? void 0 : l(C('nodefine', 'No define call for ' + e, null, [
  914.                 e
  915.               ]));
  916.               y([e,
  917.               s.deps || [
  918.               ],
  919.               s.exportsFn])
  920.             }
  921.             d()
  922.           },
  923.           nameToUrl: function (e, t, n) {
  924.             var r,
  925.             i,
  926.             s;
  927.             (r = m(A.pkgs, e)) && (e = r);
  928.             if (r = m(I, e)) return x.nameToUrl(r, t, n);
  929.             if (g.jsExtRegExp.test(e)) r = e + (t || '');
  930.              else {
  931.               r = A.paths,
  932.               e = e.split('/');
  933.               for (i = e.length; 0 < i; i -= 1) if (s = e.slice(0, i).join('/'), s = m(r, s)) {
  934.                 H(s) && (s = s[0]),
  935.                 e.splice(0, i, s);
  936.                 break
  937.               }
  938.               r = e.join('/'),
  939.               r += t || (/^data\:|\?/.test(r) || n ? '' : '.js'),
  940.               r = ('/' === r.charAt(0) || r.match(/^[\w\+\.\-]+:/) ? '' : A.baseUrl) + r
  941.             }
  942.             return A.urlArgs ? r + (( - 1 === r.indexOf('?') ? '?' : '&') + A.urlArgs)  : r
  943.           },
  944.           load: function (e, t) {
  945.             g.load(x, e, t)
  946.           },
  947.           execCb: function (e, t, n, r) {
  948.             return t.apply(r, n)
  949.           },
  950.           onScriptLoad: function (e) {
  951.             if ('load' === e.type || ja.test((e.currentTarget || e.srcElement).readyState)) N = null,
  952.             e = b(e),
  953.             x.completeLoad(e.id)
  954.           },
  955.           onScriptError: function (e) {
  956.             var t = b(e);
  957.             if (!i(t.id)) return l(C('scripterror', 'Script error for: ' + t.id, e, [
  958.               t.id
  959.             ]))
  960.           }
  961.         },
  962.         x.require = x.makeRequire(),
  963.         x
  964.       }
  965.       var g,
  966.       x,
  967.       y,
  968.       D,
  969.       I,
  970.       E,
  971.       N,
  972.       J,
  973.       s,
  974.       O,
  975.       ka = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/gm,
  976.       la = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,
  977.       Q = /\.js$/,
  978.       ia = /^\.\//;
  979.       x = Object.prototype;
  980.       var K = x.toString,
  981.       fa = x.hasOwnProperty,
  982.       ha = Array.prototype.splice,
  983.       z = 'undefined' != typeof window && 'undefined' != typeof navigator && !!window.document,
  984.       ea = !z && 'undefined' != typeof importScripts,
  985.       ja = z && 'PLAYSTATION 3' === navigator.platform ? /^complete$/ : /^(complete|loaded)$/,
  986.       Y = 'undefined' != typeof opera && '[object Opera]' === opera.toString(),
  987.       F = {
  988.       },
  989.       q = {
  990.       },
  991.       R = [
  992.       ],
  993.       M = !1;
  994.       if ('undefined' == typeof define) {
  995.         if ('undefined' != typeof requirejs) {
  996.           if (G(requirejs)) return;
  997.           q = requirejs,
  998.           requirejs = void 0
  999.         }
  1000.         'undefined' != typeof require && !G(require) && (q = require, require = void 0),
  1001.         g = requirejs = function (e, t, n, r) {
  1002.           var i,
  1003.           s = '_';
  1004.           return !H(e) && 'string' != typeof e && (i = e, H(t) ? (e = t, t = n, n = r)  : e = [
  1005.           ]),
  1006.           i && i.context && (s = i.context),
  1007.           (r = m(F, s)) || (r = F[s] = g.s.newContext(s)),
  1008.           i && r.configure(i),
  1009.           r.require(e, t, n)
  1010.         },
  1011.         g.config = function (e) {
  1012.           return g(e)
  1013.         },
  1014.         g.nextTick = 'undefined' != typeof setTimeout ? function (e) {
  1015.           setTimeout(e, 4)
  1016.         }
  1017.          : function (e) {
  1018.           e()
  1019.         },
  1020.         require || (require = g),
  1021.         g.version = '2.1.14',
  1022.         g.jsExtRegExp = /^\/|:|\?|\.js$/,
  1023.         g.isBrowser = z,
  1024.         x = g.s = {
  1025.           contexts: F,
  1026.           newContext: ga
  1027.         },
  1028.         g({
  1029.         }),
  1030.         v(['toUrl',
  1031.         'undef',
  1032.         'defined',
  1033.         'specified'], function (e) {
  1034.           g[e] = function () {
  1035.             var t = F._;
  1036.             return t.require[e].apply(t, arguments)
  1037.           }
  1038.         }),
  1039.         z && (y = x.head = document.getElementsByTagName('head') [0], D = document.getElementsByTagName('base') [0]) && (y = x.head = D.parentNode),
  1040.         g.onError = ca,
  1041.         g.createNode = function (e) {
  1042.           var t = e.xhtml ? document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script')  : document.createElement('script');
  1043.           return t.type = e.scriptType || 'text/javascript',
  1044.           t.charset = 'utf-8',
  1045.           t.async = !0,
  1046.           t
  1047.         },
  1048.         g.load = function (e, t, n) {
  1049.           var r = e && e.config || {
  1050.           };
  1051.           if (z) return r = g.createNode(r, t, n),
  1052.           r.setAttribute('data-requirecontext', e.contextName),
  1053.           r.setAttribute('data-requiremodule', t),
  1054.           r.attachEvent && !(r.attachEvent.toString && 0 > r.attachEvent.toString().indexOf('[native code')) && !Y ? (M = !0, r.attachEvent('onreadystatechange', e.onScriptLoad))  : (r.addEventListener('load', e.onScriptLoad, !1), r.addEventListener('error', e.onScriptError, !1)),
  1055.           r.src = n,
  1056.           J = r,
  1057.           D ? y.insertBefore(r, D)  : y.appendChild(r),
  1058.           J = null,
  1059.           r;
  1060.           if (ea) try {
  1061.             importScripts(n),
  1062.             e.completeLoad(t)
  1063.           } catch (i) {
  1064.             e.onError(C('importscripts', 'importScripts failed for ' + t + ' at ' + n, i, [
  1065.               t
  1066.             ]))
  1067.           }
  1068.         },
  1069.         q.skipDataMain = !0,
  1070.         z && !q.skipDataMain && T(document.getElementsByTagName('script'), function (e) {
  1071.           y || (y = e.parentNode);
  1072.           if (I = e.getAttribute('data-main')) return s = I,
  1073.           q.baseUrl || (E = s.split('/'), s = E.pop(), O = E.length ? E.join('/') + '/' : './', q.baseUrl = O),
  1074.           s = s.replace(Q, ''),
  1075.           g.jsExtRegExp.test(s) && (s = I),
  1076.           q.deps = q.deps ? q.deps.concat(s)  : [
  1077.             s
  1078.           ],
  1079.           !0
  1080.         }),
  1081.         define = function (e, t, n) {
  1082.           var r,
  1083.           i;
  1084.           'string' != typeof e && (n = t, t = e, e = null),
  1085.           H(t) || (n = t, t = null),
  1086.           !t && G(n) && (t = [
  1087.           ], n.length && (n.toString().replace(ka, '').replace(la, function (e, n) {
  1088.             t.push(n)
  1089.           }), t = (1 === n.length ? [
  1090.             'require'
  1091.           ] : [
  1092.             'require',
  1093.             'exports',
  1094.             'module'
  1095.           ]).concat(t))),
  1096.           M && ((r = J) || (N && 'interactive' === N.readyState || T(document.getElementsByTagName('script'), function (e) {
  1097.             if ('interactive' === e.readyState) return N = e
  1098.           }), r = N), r && (e || (e = r.getAttribute('data-requiremodule')), i = F[r.getAttribute('data-requirecontext')])),
  1099.           (i ? i.defQueue : R).push([e,
  1100.           t,
  1101.           n])
  1102.         },
  1103.         define.amd = {
  1104.           jQuery: !0
  1105.         },
  1106.         g.exec = function (b) {
  1107.           return eval(b)
  1108.         },
  1109.         g(q)
  1110.       }
  1111.       tp.prototype = function () {
  1112.         function t(e, t) {
  1113.           return e.lastIndexOf('/') == e.length - 1 && (e = e.substr(0, e.length - 1)),
  1114.           e.match(/\/v3$/) && (e = e.substr(0, e.lastIndexOf('/v3'))),
  1115.           e.match(/\/api$/) && (e = e.substr(0, e.lastIndexOf('/api'))),
  1116.           e.match(/^(http[s]?:)?\/\//) || (e = '//' + e),
  1117.           typeof t != 'undefined' && t && !e.match(/^http[s]?:/) && (e = 'https:' + e),
  1118.           e
  1119.         }
  1120.         var e = [
  1121.         ],
  1122.         n = function (e) {
  1123.           var n = 'https://buy.tinypass.com';
  1124.           return tp.sandbox === !0 && (tp.endpoint = 'sandbox'),
  1125.           tp.endpoint && (tp.endpoint === 'sandbox' ? n = 'https://sandbox.tinypass.com' : tp.endpoint !== 'prod' && tp.endpoint !== 'production' && (n = tp.endpoint)),
  1126.           t(n, e)
  1127.         },
  1128.         r = function () {
  1129.           return n() + '/api/v3'
  1130.         },
  1131.         s = function (e) {
  1132.           var n = 'https://experience.tinypass.com';
  1133.           return tp.sandbox === !0 && (tp.endpoint = 'sandbox'),
  1134.           tp.endpoint && (tp.endpoint === 'sandbox' ? n = 'https://sandbox.tinypass.com' : tp.endpoint !== 'prod' && tp.endpoint !== 'production' && (n = tp.endpoint, n = n.replace('//buy.tinypass.com', '//experience.tinypass.com'), n = n.replace('//api.tinypass.com', '//experience.tinypass.com'), n = n.replace('//buy-au.piano.io', '//experience-au.piano.io'), n = n.replace('//api-au.piano.io', '//experience-au.piano.io'))),
  1135.           t(n, e)
  1136.         },
  1137.         o = function () {
  1138.           return tp.sandbox === !0 || tp.endpoint === 'sandbox' || tp.endpoint.indexOf('//sandbox.tinypass.com') !== - 1
  1139.         },
  1140.         u = {
  1141.           constructor: tp,
  1142.           pageTrack: function (e, t) {
  1143.             tp.require(['main'], function (n) {
  1144.               n.pageTrack(e, t)
  1145.             })
  1146.           },
  1147.           trackPage: function (e, t) {
  1148.             tp.require(['main'], function (n) {
  1149.               n.pageTrack(e, t)
  1150.             })
  1151.           },
  1152.           trackPageUnload: function () {
  1153.             tp.require(['main'], function (e) {
  1154.               e.trackPageUnload()
  1155.             })
  1156.           },
  1157.           trackAds: function (e) {
  1158.             tp.require(['main'], function (t) {
  1159.               t.trackAds(e)
  1160.             })
  1161.           },
  1162.           trackAd: function (e, t, n) {
  1163.             tp.require(['main'], function (r) {
  1164.               r.trackAd(e, t, n)
  1165.             })
  1166.           },
  1167.           onLoad: function (t) {
  1168.             e.push(t)
  1169.           },
  1170.           getEndpointRoot: function (e) {
  1171.             return n(e)
  1172.           },
  1173.           getExperienceEndpoint: function (e) {
  1174.             return s(e)
  1175.           },
  1176.           getApiEndpoint: function () {
  1177.             return r()
  1178.           },
  1179.           isSandbox: function () {
  1180.             return o()
  1181.           }
  1182.         };
  1183.         return u.require = require,
  1184.         u.define = define,
  1185.         u.loadRequireJs = function (e) {
  1186.           u.isInitRequired = !0;
  1187.           var t = [
  1188.             'jq',
  1189.             'main',
  1190.             'api',
  1191.             'offer',
  1192.             'template',
  1193.             'myaccount',
  1194.             'require-css/css',
  1195.             'util',
  1196.             'postmessage',
  1197.             'user',
  1198.             'meter',
  1199.             'fingerprint',
  1200.             'murmurhash3',
  1201.             'jwtDecode',
  1202.             'janrain',
  1203.             'gigya',
  1204.             'tinypassAccounts',
  1205.             'tinypassLogin',
  1206.             'containerUtils',
  1207.             'eventUtils',
  1208.             'experience',
  1209.             'activetimer',
  1210.             'scrollDepth',
  1211.             'ifvisible',
  1212.             'doubleClickForPublisher',
  1213.             'viewportExit',
  1214.             'condeUserProvider',
  1215.             'log',
  1216.             'pianoId',
  1217.             'observer',
  1218.             'applePay',
  1219.             'idle',
  1220.             'gaService',
  1221.             'interaction',
  1222.             'pianoEsp',
  1223.             'versionService',
  1224.             'amp',
  1225.             'performanceMetrics',
  1226.             'swg',
  1227.             'fbpixel',
  1228.             'fbsubscriptions'
  1229.           ];
  1230.           for (var n = t.length; n--; ) window.tp[t[n]] = null;
  1231.           var r = function () {
  1232.             var e = tp.getEndpointRoot();
  1233.             return e.indexOf('//buy.tinypass.com') != - 1 && (e = e.replace(/\/\/buy.tinypass.com/, '//cdn.tinypass.com')),
  1234.             e + '/api/libs'
  1235.           },
  1236.           i = function () {
  1237.             var e = tp.getEndpointRoot();
  1238.             return e.indexOf('//buy.tinypass.com') != - 1 && (e = e.replace(/\/\/buy.tinypass.com/, '//cdn.tinypass.com')),
  1239.             e + '/api/libs/external'
  1240.           };
  1241.           window.tp.require.config({
  1242.             baseUrl: r(),
  1243.             urlArgs: tp.debug ? 'cachebust=' + (new Date).getTime()  : ''
  1244.           }),
  1245.           tp.require(['jq',
  1246.           'main',
  1247.           'api',
  1248.           'offer',
  1249.           'template',
  1250.           'myaccount',
  1251.           'require-css/css',
  1252.           'util',
  1253.           'postmessage',
  1254.           'user',
  1255.           'meter',
  1256.           'fingerprint',
  1257.           'murmurhash3',
  1258.           'jwtDecode',
  1259.           'janrain',
  1260.           'gigya',
  1261.           'tinypassAccounts',
  1262.           'tinypassLogin',
  1263.           'containerUtils',
  1264.           'eventUtils',
  1265.           'experience',
  1266.           'activetimer',
  1267.           'scrollDepth',
  1268.           'ifvisible',
  1269.           'doubleClickForPublisher',
  1270.           'viewportExit',
  1271.           'condeUserProvider',
  1272.           'pianoId',
  1273.           'observer',
  1274.           'applePay',
  1275.           'idle',
  1276.           'interaction',
  1277.           'require-css/css!styles/offer',
  1278.           'log',
  1279.           'gaService',
  1280.           'pianoEsp',
  1281.           'versionService',
  1282.           'amp',
  1283.           'performanceMetrics',
  1284.           'swg',
  1285.           'fbpixel',
  1286.           'fbsubscriptions'], function (t) {
  1287.             var n;
  1288.             window.tp.require.config({
  1289.               baseUrl: i(),
  1290.               urlArgs: tp.debug ? 'cachebust=' + (new Date).getTime()  : ''
  1291.             });
  1292.             for (n = 0; n < arguments.length; ++n) {
  1293.               if (!arguments[n] || !arguments[n].name) continue;
  1294.               if (arguments[n].name === 'main' && !arguments[n].init) continue;
  1295.               window.tp[arguments[n].name] = arguments[n]
  1296.             }
  1297.             window.tp.jq = t,
  1298.             window.tp.isRequireLoaded = !0;
  1299.             if (__tp) {
  1300.               var r = [
  1301.               ];
  1302.               for (n = 0; n < __tp.length; n++) __tp[n][0] === 'init' && r.push(__tp[n][1]);
  1303.               r.length && tp._init(r),
  1304.               __tp = null
  1305.             }
  1306.             tp.externalLibraries.length ? require(tp.externalLibraries, function () {
  1307.               tp.externalLibraries = [
  1308.               ];
  1309.               if (tp.externalLibrariesCallbacks) for (var t = 0; t < tp.externalLibrariesCallbacks.length; ++t) tp.externalLibrariesCallbacks[t]();
  1310.               tp.externalLibrariesCallbacks = [
  1311.               ],
  1312.               e && e()
  1313.             })  : e && e(),
  1314.             tp.loadRequireReady(),
  1315.             window.tp.getGAClientId() && window.tp.gaService.setClientId(window.tp.getGAClientId())
  1316.           })
  1317.         },
  1318.         u.loadRequireReady = function () {
  1319.           u.isInitRequireFinished = !0;
  1320.           for (i = 0; i < u.initFinishedCallbacks.length; ++i) u.initFinishedCallbacks[i]();
  1321.           u.initFinishedCallbacks = [
  1322.           ]
  1323.         },
  1324.         u.push = function () {
  1325.           var e,
  1326.           t,
  1327.           n;
  1328.           for (e = 0; e < arguments.length; e++) {
  1329.             n = arguments[e],
  1330.             t = n.shift();
  1331.             if (typeof t == 'string' || t instanceof String) {
  1332.               if (!window.tp[t]) throw new Error('Undefined method ' + t);
  1333.               window.tp[t].apply(window.tp, n)
  1334.             } else t.apply(window.tp, n)
  1335.           }
  1336.         },
  1337.         u.appList = [
  1338.         ],
  1339.         u.isInitRequired = !1,
  1340.         u.isInitRequireFinished = !1,
  1341.         u.isRequireLoaded = !1,
  1342.         u.isInitialized = !1,
  1343.         u.initCallbacks = [
  1344.         ],
  1345.         u.initFinishedCallbacks = [
  1346.         ],
  1347.         u._init = function (e) {
  1348.           tp.aid === 'B6sIXKLiin' && (tp.usePianoIdUserProvider = !0, tp.setUseTinypassAccounts = !1);
  1349.           var t,
  1350.           n = [
  1351.           ];
  1352.           Array.isArray(e) ? n = e : e && n.push(e);
  1353.           if (!tp.isRequireLoaded) {
  1354.             for (var r = 0; r < n.length; r++) tp.initCallbacks.push(n[r]);
  1355.             setTimeout(function () {
  1356.               tp._init()
  1357.             }, 50)
  1358.           } else {
  1359.             window.tp.util && window.tp.util.hasQueryParamByName('xpdebug') && tp.setDebug(!0),
  1360.             tp.api.setUserProvider(tp.user.getProvider()),
  1361.             tp.util.setTpccCookies();
  1362.             if (tp.util.isIOsUiWebView() && !tp.user.isUserValid() && tp.util.getQueryParamByName('userToken')) {
  1363.               var i = tp.util.getQueryParamByName('cookieDomain'),
  1364.               s = tp.util.getQueryParamByName('userToken'),
  1365.               o = tp.util.getQueryParamByName('tokenListValue');
  1366.               tp.util.setAccessTokenListCookie({
  1367.                 cookie_domain: i,
  1368.                 value: o
  1369.               }, s)
  1370.             }
  1371.             tp.user.providerInit();
  1372.             for (t = 0; t < tp.initCallbacks.length; ++t) tp.initCallbacks[t]();
  1373.             tp.isInitialized = !0,
  1374.             tp.initCallbacks = [
  1375.             ];
  1376.             if (tp.events) {
  1377.               for (t = 0; t < tp.events.length; t++) tp.events[t]();
  1378.               tp.events = [
  1379.               ]
  1380.             }
  1381.             for (var r = 0; r < n.length; r++) n[r]();
  1382.             tp.appList.indexOf(tp.aid) < 0 && (tp.appList.push(tp.aid), tp.main.init())
  1383.           }
  1384.         },
  1385.         u.init = function (e) {
  1386.           var t = function () {
  1387.             u._init(e)
  1388.           };
  1389.           u.isInitRequired ? u.isInitRequireFinished ? t()  : u.initFinishedCallbacks.push(t)  : window.tp.loadRequireJs(t)
  1390.         },
  1391.         u
  1392.       }()
  1393.     }) (this)
  1394.   }(),
  1395.   tp = new tp,
  1396.   window.tp = tp;
  1397.   if (__tp) {
  1398.     for (var i = 0; i < __tp.length; i++) __tp[i][0] != 'init' && tp.push(__tp[i]);
  1399.     tp.loadRequireJs()
  1400.   }
  1401. },
  1402. window.___tp(),
  1403. tp.define('tinypass', function () {
  1404. }),
  1405. function (e, t) {
  1406.   function n(e) {
  1407.     return B.isWindow(e) ? e : e.nodeType === 9 ? e.defaultView || e.parentWindow : !1
  1408.   }
  1409.   function r(e) {
  1410.     if (!mn[e]) {
  1411.       var t = D.body,
  1412.       n = B('<' + e + '>').appendTo(t),
  1413.       r = n.css('display');
  1414.       n.remove();
  1415.       if (r === 'none' || r === '') {
  1416.         gn || (gn = D.createElement('iframe'), gn.frameBorder = gn.width = gn.height = 0),
  1417.         t.appendChild(gn);
  1418.         if (!yn || !gn.createElement) yn = (gn.contentWindow || gn.contentDocument).document,
  1419.         yn.write((D.compatMode === 'CSS1Compat' ? '<!doctype html>' : '') + '<html><body>'),
  1420.         yn.close();
  1421.         n = yn.createElement(e),
  1422.         yn.body.appendChild(n),
  1423.         r = B.css(n, 'display'),
  1424.         t.removeChild(gn)
  1425.       }
  1426.       mn[e] = r
  1427.     }
  1428.     return mn[e]
  1429.   }
  1430.   function i(e, t) {
  1431.     var n = {
  1432.     };
  1433.     return B.each(Sn.concat.apply([], Sn.slice(0, t)), function () {
  1434.       n[this] = e
  1435.     }),
  1436.     n
  1437.   }
  1438.   function s() {
  1439.     xn = t
  1440.   }
  1441.   function o() {
  1442.     return setTimeout(s, 0),
  1443.     xn = B.now()
  1444.   }
  1445.   function u() {
  1446.     try {
  1447.       return new e.ActiveXObject('Microsoft.XMLHTTP')
  1448.     } catch (t) {
  1449.     }
  1450.   }
  1451.   function a() {
  1452.     try {
  1453.       return new e.XMLHttpRequest
  1454.     } catch (t) {
  1455.     }
  1456.   }
  1457.   function f(e, n) {
  1458.     e.dataFilter && (n = e.dataFilter(n, e.dataType));
  1459.     var r = e.dataTypes,
  1460.     i = {
  1461.     },
  1462.     s,
  1463.     o,
  1464.     u = r.length,
  1465.     a,
  1466.     f = r[0],
  1467.     l,
  1468.     c,
  1469.     h,
  1470.     p,
  1471.     d;
  1472.     for (s = 1; s < u; s++) {
  1473.       if (s === 1) for (o in e.converters) typeof o == 'string' && (i[o.toLowerCase()] = e.converters[o]);
  1474.       l = f,
  1475.       f = r[s];
  1476.       if (f === '*') f = l;
  1477.        else if (l !== '*' && l !== f) {
  1478.         c = l + ' ' + f,
  1479.         h = i[c] || i['* ' + f];
  1480.         if (!h) {
  1481.           d = t;
  1482.           for (p in i) {
  1483.             a = p.split(' ');
  1484.             if (a[0] === l || a[0] === '*') {
  1485.               d = i[a[1] + ' ' + f];
  1486.               if (d) {
  1487.                 p = i[p],
  1488.                 p === !0 ? h = d : d === !0 && (h = p);
  1489.                 break
  1490.               }
  1491.             }
  1492.           }
  1493.         }
  1494.         !h && !d && B.error('No conversion from ' + c.replace(' ', ' to ')),
  1495.         h !== !0 && (n = h ? h(n)  : d(p(n)))
  1496.       }
  1497.     }
  1498.     return n
  1499.   }
  1500.   function l(e, n, r) {
  1501.     var i = e.contents,
  1502.     s = e.dataTypes,
  1503.     o = e.responseFields,
  1504.     u,
  1505.     a,
  1506.     f,
  1507.     l;
  1508.     for (a in o) a in r && (n[o[a]] = r[a]);
  1509.     while (s[0] === '*') s.shift(),
  1510.     u === t && (u = e.mimeType || n.getResponseHeader('content-type'));
  1511.     if (u) for (a in i) if (i[a] && i[a].test(u)) {
  1512.       s.unshift(a);
  1513.       break
  1514.     }
  1515.     if (s[0] in r) f = s[0];
  1516.      else {
  1517.       for (a in r) {
  1518.         if (!s[0] || e.converters[a + ' ' + s[0]]) {
  1519.           f = a;
  1520.           break
  1521.         }
  1522.         l || (l = a)
  1523.       }
  1524.       f = f || l
  1525.     }
  1526.     if (f) return f !== s[0] && s.unshift(f),
  1527.     r[f]
  1528.   }
  1529.   function c(e, t, n, r) {
  1530.     if (B.isArray(t)) B.each(t, function (t, i) {
  1531.       n || zt.test(e) ? r(e, i)  : c(e + '[' + (typeof i == 'object' || B.isArray(i) ? t : '') + ']', i, n, r)
  1532.     });
  1533.      else if (!n && t != null && typeof t == 'object') for (var i in t) c(e + '[' + i + ']', t[i], n, r);
  1534.      else r(e, t)
  1535.   }
  1536.   function h(e, n) {
  1537.     var r,
  1538.     i,
  1539.     s = B.ajaxSettings.flatOptions || {
  1540.     };
  1541.     for (r in n) n[r] !== t && ((s[r] ? e : i || (i = {
  1542.     })) [r] = n[r]);
  1543.     i && B.extend(!0, e, i)
  1544.   }
  1545.   function p(e, n, r, i, s, o) {
  1546.     s = s || n.dataTypes[0],
  1547.     o = o || {
  1548.     },
  1549.     o[s] = !0;
  1550.     var u = e[s],
  1551.     a = 0,
  1552.     f = u ? u.length : 0,
  1553.     l = e === sn,
  1554.     c;
  1555.     for (; a < f && (l || !c); a++) c = u[a](n, r, i),
  1556.     typeof c == 'string' && (!l || o[c] ? c = t : (n.dataTypes.unshift(c), c = p(e, n, r, i, c, o)));
  1557.     return (l || !c) && !o['*'] && (c = p(e, n, r, i, '*', o)),
  1558.     c
  1559.   }
  1560.   function d(e) {
  1561.     return function (t, n) {
  1562.       typeof t != 'string' && (n = t, t = '*');
  1563.       if (B.isFunction(n)) {
  1564.         var r = t.toLowerCase().split(en),
  1565.         i = 0,
  1566.         s = r.length,
  1567.         o,
  1568.         u,
  1569.         a;
  1570.         for (; i < s; i++) o = r[i],
  1571.         a = /^\+/.test(o),
  1572.         a && (o = o.substr(1) || '*'),
  1573.         u = e[o] = e[o] || [
  1574.         ],
  1575.         u[a ? 'unshift' : 'push'](n)
  1576.       }
  1577.     }
  1578.   }
  1579.   function v(e, t, n) {
  1580.     var r = t === 'width' ? e.offsetWidth : e.offsetHeight,
  1581.     i = t === 'width' ? jt : Ft,
  1582.     s = 0,
  1583.     o = i.length;
  1584.     if (r > 0) {
  1585.       if (n !== 'border') for (; s < o; s++) n || (r -= parseFloat(B.css(e, 'padding' + i[s])) || 0),
  1586.       n === 'margin' ? r += parseFloat(B.css(e, n + i[s])) || 0 : r -= parseFloat(B.css(e, 'border' + i[s] + 'Width')) || 0;
  1587.       return r + 'px'
  1588.     }
  1589.     r = It(e, t, t);
  1590.     if (r < 0 || r == null) r = e.style[t] || 0;
  1591.     r = parseFloat(r) || 0;
  1592.     if (n) for (; s < o; s++) r += parseFloat(B.css(e, 'padding' + i[s])) || 0,
  1593.     n !== 'padding' && (r += parseFloat(B.css(e, 'border' + i[s] + 'Width')) || 0),
  1594.     n === 'margin' && (r += parseFloat(B.css(e, n + i[s])) || 0);
  1595.     return r + 'px'
  1596.   }
  1597.   function m(e, t) {
  1598.     t.src ? B.ajax({
  1599.       url: t.src,
  1600.       async: !1,
  1601.       dataType: 'script'
  1602.     })  : B.globalEval((t.text || t.textContent || t.innerHTML || '').replace(kt, '/*$0*/')),
  1603.     t.parentNode && t.parentNode.removeChild(t)
  1604.   }
  1605.   function g(e) {
  1606.     var t = D.createElement('div');
  1607.     return At.appendChild(t),
  1608.     t.innerHTML = e.outerHTML,
  1609.     t.firstChild
  1610.   }
  1611.   function y(e) {
  1612.     var t = (e.nodeName || '').toLowerCase();
  1613.     t === 'input' ? b(e)  : t !== 'script' && typeof e.getElementsByTagName != 'undefined' && B.grep(e.getElementsByTagName('input'), b)
  1614.   }
  1615.   function b(e) {
  1616.     if (e.type === 'checkbox' || e.type === 'radio') e.defaultChecked = e.checked
  1617.   }
  1618.   function w(e) {
  1619.     return typeof e.getElementsByTagName != 'undefined' ? e.getElementsByTagName('*')  : typeof e.querySelectorAll != 'undefined' ? e.querySelectorAll('*')  : [
  1620.     ]
  1621.   }
  1622.   function E(e, t) {
  1623.     var n;
  1624.     if (t.nodeType === 1) {
  1625.       t.clearAttributes && t.clearAttributes(),
  1626.       t.mergeAttributes && t.mergeAttributes(e),
  1627.       n = t.nodeName.toLowerCase();
  1628.       if (n === 'object') t.outerHTML = e.outerHTML;
  1629.        else if (n !== 'input' || e.type !== 'checkbox' && e.type !== 'radio') {
  1630.         if (n === 'option') t.selected = e.defaultSelected;
  1631.          else if (n === 'input' || n === 'textarea') t.defaultValue = e.defaultValue
  1632.       } else e.checked && (t.defaultChecked = t.checked = e.checked),
  1633.       t.value !== e.value && (t.value = e.value);
  1634.       t.removeAttribute(B.expando)
  1635.     }
  1636.   }
  1637.   function S(e, t) {
  1638.     if (t.nodeType === 1 && !!B.hasData(e)) {
  1639.       var n,
  1640.       r,
  1641.       i,
  1642.       s = B._data(e),
  1643.       o = B._data(t, s),
  1644.       u = s.events;
  1645.       if (u) {
  1646.         delete o.handle,
  1647.         o.events = {
  1648.         };
  1649.         for (n in u) for (r = 0, i = u[n].length; r < i; r++) B.event.add(t, n + (u[n][r].namespace ? '.' : '') + u[n][r].namespace, u[n][r], u[n][r].data)
  1650.       }
  1651.       o.data && (o.data = B.extend({
  1652.       }, o.data))
  1653.     }
  1654.   }
  1655.   function x(e, t) {
  1656.     return B.nodeName(e, 'table') ? e.getElementsByTagName('tbody') [0] || e.appendChild(e.ownerDocument.createElement('tbody'))  : e
  1657.   }
  1658.   function T(e) {
  1659.     var t = vt.split('|'),
  1660.     n = e.createDocumentFragment();
  1661.     if (n.createElement) while (t.length) n.createElement(t.pop());
  1662.     return n
  1663.   }
  1664.   function N(e, t, n) {
  1665.     t = t || 0;
  1666.     if (B.isFunction(t)) return B.grep(e, function (e, r) {
  1667.       var i = !!t.call(e, r, e);
  1668.       return i === n
  1669.     });
  1670.     if (t.nodeType) return B.grep(e, function (e, r) {
  1671.       return e === t === n
  1672.     });
  1673.     if (typeof t == 'string') {
  1674.       var r = B.grep(e, function (e) {
  1675.         return e.nodeType === 1
  1676.       });
  1677.       if (ct.test(t)) return B.filter(t, r, !n);
  1678.       t = B.filter(t, r)
  1679.     }
  1680.     return B.grep(e, function (e, r) {
  1681.       return B.inArray(e, t) >= 0 === n
  1682.     })
  1683.   }
  1684.   function C(e) {
  1685.     return !e || !e.parentNode || e.parentNode.nodeType === 11
  1686.   }
  1687.   function k() {
  1688.     return !0
  1689.   }
  1690.   function L() {
  1691.     return !1
  1692.   }
  1693.   function A(e, t, n) {
  1694.     var r = t + 'defer',
  1695.     i = t + 'queue',
  1696.     s = t + 'mark',
  1697.     o = B._data(e, r);
  1698.     o && (n === 'queue' || !B._data(e, i)) && (n === 'mark' || !B._data(e, s)) && setTimeout(function () {
  1699.       !B._data(e, i) && !B._data(e, s) && (B.removeData(e, r, !0), o.fire())
  1700.     }, 0)
  1701.   }
  1702.   function O(e) {
  1703.     for (var t in e) {
  1704.       if (t === 'data' && B.isEmptyObject(e[t])) continue;
  1705.       if (t !== 'toJSON') return !1
  1706.     }
  1707.     return !0
  1708.   }
  1709.   function M(e, n, r) {
  1710.     if (r === t && e.nodeType === 1) {
  1711.       var i = 'data-' + n.replace(q, '-$1').toLowerCase();
  1712.       r = e.getAttribute(i);
  1713.       if (typeof r == 'string') {
  1714.         try {
  1715.           r = r === 'true' ? !0 : r === 'false' ? !1 : r === 'null' ? null : B.isNumeric(r) ? parseFloat(r)  : I.test(r) ? B.parseJSON(r)  : r
  1716.         } catch (s) {
  1717.         }
  1718.         B.data(e, n, r)
  1719.       } else r = t
  1720.     }
  1721.     return r
  1722.   }
  1723.   function _(e) {
  1724.     var t = j[e] = {
  1725.     },
  1726.     n,
  1727.     r;
  1728.     e = e.split(/\s+/);
  1729.     for (n = 0, r = e.length; n < r; n++) t[e[n]] = !0;
  1730.     return t
  1731.   }
  1732.   var D = e.document,
  1733.   P = e.navigator,
  1734.   H = e.location,
  1735.   B = function () {
  1736.     function n() {
  1737.       if (!r.isReady) {
  1738.         try {
  1739.           D.documentElement.doScroll('left')
  1740.         } catch (e) {
  1741.           setTimeout(n, 1);
  1742.           return
  1743.         }
  1744.         r.ready()
  1745.       }
  1746.     }
  1747.     var r = function (e, t) {
  1748.       return new r.fn.init(e, t, o)
  1749.     },
  1750.     i = e.jQuery,
  1751.     s = e.$,
  1752.     o,
  1753.     u = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
  1754.     a = /\S/,
  1755.     f = /^\s+/,
  1756.     l = /\s+$/,
  1757.     c = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
  1758.     h = /^[\],:{}\s]*$/,
  1759.     p = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
  1760.     d = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
  1761.     v = /(?:^|:|,)(?:\s*\[)+/g,
  1762.     m = /(webkit)[ \/]([\w.]+)/,
  1763.     g = /(opera)(?:.*version)?[ \/]([\w.]+)/,
  1764.     y = /(msie) ([\w.]+)/,
  1765.     b = /(mozilla)(?:.*? rv:([\w.]+))?/,
  1766.     w = /-([a-z]|[0-9])/gi,
  1767.     E = /^-ms-/,
  1768.     S = function (e, t) {
  1769.       return (t + '').toUpperCase()
  1770.     },
  1771.     x = P.userAgent,
  1772.     T,
  1773.     N,
  1774.     C,
  1775.     k = Object.prototype.toString,
  1776.     L = Object.prototype.hasOwnProperty,
  1777.     A = Array.prototype.push,
  1778.     O = Array.prototype.slice,
  1779.     M = String.prototype.trim,
  1780.     _ = Array.prototype.indexOf,
  1781.     H = {
  1782.     };
  1783.     return r.fn = r.prototype = {
  1784.       constructor: r,
  1785.       init: function (e, n, i) {
  1786.         var s,
  1787.         o,
  1788.         a,
  1789.         f;
  1790.         if (!e) return this;
  1791.         if (e.nodeType) return this.context = this[0] = e,
  1792.         this.length = 1,
  1793.         this;
  1794.         if (e === 'body' && !n && D.body) return this.context = D,
  1795.         this[0] = D.body,
  1796.         this.selector = e,
  1797.         this.length = 1,
  1798.         this;
  1799.         if (typeof e == 'string') {
  1800.           e.charAt(0) !== '<' || e.charAt(e.length - 1) !== '>' || e.length < 3 ? s = u.exec(e)  : s = [
  1801.             null,
  1802.             e,
  1803.             null
  1804.           ];
  1805.           if (s && (s[1] || !n)) {
  1806.             if (s[1]) return n = n instanceof r ? n[0] : n,
  1807.             f = n ? n.ownerDocument || n : D,
  1808.             a = c.exec(e),
  1809.             a ? r.isPlainObject(n) ? (e = [
  1810.               D.createElement(a[1])
  1811.             ], r.fn.attr.call(e, n, !0))  : e = [
  1812.               f.createElement(a[1])
  1813.             ] : (a = r.buildFragment([s[1]], [
  1814.               f
  1815.             ]), e = (a.cacheable ? r.clone(a.fragment)  : a.fragment).childNodes),
  1816.             r.merge(this, e);
  1817.             o = D.getElementById(s[2]);
  1818.             if (o && o.parentNode) {
  1819.               if (o.id !== s[2]) return i.find(e);
  1820.               this.length = 1,
  1821.               this[0] = o
  1822.             }
  1823.             return this.context = D,
  1824.             this.selector = e,
  1825.             this
  1826.           }
  1827.           return !n || n.jquery ? (n || i).find(e)  : this.constructor(n).find(e)
  1828.         }
  1829.         return r.isFunction(e) ? i.ready(e)  : (e.selector !== t && (this.selector = e.selector, this.context = e.context), r.makeArray(e, this))
  1830.       },
  1831.       selector: '',
  1832.       jquery: '1.7.1',
  1833.       length: 0,
  1834.       size: function () {
  1835.         return this.length
  1836.       },
  1837.       toArray: function () {
  1838.         return O.call(this, 0)
  1839.       },
  1840.       get: function (e) {
  1841.         return e == null ? this.toArray()  : e < 0 ? this[this.length + e] : this[e]
  1842.       },
  1843.       pushStack: function (e, t, n) {
  1844.         var i = this.constructor();
  1845.         return r.isArray(e) ? A.apply(i, e)  : r.merge(i, e),
  1846.         i.prevObject = this,
  1847.         i.context = this.context,
  1848.         t === 'find' ? i.selector = this.selector + (this.selector ? ' ' : '') + n : t && (i.selector = this.selector + '.' + t + '(' + n + ')'),
  1849.         i
  1850.       },
  1851.       each: function (e, t) {
  1852.         return r.each(this, e, t)
  1853.       },
  1854.       ready: function (e) {
  1855.         return r.bindReady(),
  1856.         N.add(e),
  1857.         this
  1858.       },
  1859.       eq: function (e) {
  1860.         return e = + e,
  1861.         e === - 1 ? this.slice(e)  : this.slice(e, e + 1)
  1862.       },
  1863.       first: function () {
  1864.         return this.eq(0)
  1865.       },
  1866.       last: function () {
  1867.         return this.eq( - 1)
  1868.       },
  1869.       slice: function () {
  1870.         return this.pushStack(O.apply(this, arguments), 'slice', O.call(arguments).join(','))
  1871.       },
  1872.       map: function (e) {
  1873.         return this.pushStack(r.map(this, function (t, n) {
  1874.           return e.call(t, n, t)
  1875.         }))
  1876.       },
  1877.       end: function () {
  1878.         return this.prevObject || this.constructor(null)
  1879.       },
  1880.       push: A,
  1881.       sort: [
  1882.       ].sort,
  1883.       splice: [
  1884.       ].splice
  1885.     },
  1886.     r.fn.init.prototype = r.fn,
  1887.     r.extend = r.fn.extend = function () {
  1888.       var e,
  1889.       n,
  1890.       i,
  1891.       s,
  1892.       o,
  1893.       u,
  1894.       a = arguments[0] || {
  1895.       },
  1896.       f = 1,
  1897.       l = arguments.length,
  1898.       c = !1;
  1899.       typeof a == 'boolean' && (c = a, a = arguments[1] || {
  1900.       }, f = 2),
  1901.       typeof a != 'object' && !r.isFunction(a) && (a = {
  1902.       }),
  1903.       l === f && (a = this, --f);
  1904.       for (; f < l; f++) if ((e = arguments[f]) != null) for (n in e) {
  1905.         i = a[n],
  1906.         s = e[n];
  1907.         if (a === s) continue;
  1908.         c && s && (r.isPlainObject(s) || (o = r.isArray(s))) ? (o ? (o = !1, u = i && r.isArray(i) ? i : [
  1909.         ])  : u = i && r.isPlainObject(i) ? i : {
  1910.         }, a[n] = r.extend(c, u, s))  : s !== t && (a[n] = s)
  1911.       }
  1912.       return a
  1913.     },
  1914.     r.extend({
  1915.       noConflict: function (t) {
  1916.         return e.$ === r && (e.$ = s),
  1917.         t && e.jQuery === r && (e.jQuery = i),
  1918.         r
  1919.       },
  1920.       isReady: !1,
  1921.       readyWait: 1,
  1922.       holdReady: function (e) {
  1923.         e ? r.readyWait++ : r.ready(!0)
  1924.       },
  1925.       ready: function (e) {
  1926.         if (e === !0 && !--r.readyWait || e !== !0 && !r.isReady) {
  1927.           if (!D.body) return setTimeout(r.ready, 1);
  1928.           r.isReady = !0;
  1929.           if (e !== !0 && --r.readyWait > 0) return;
  1930.           N.fireWith(D, [
  1931.             r
  1932.           ]),
  1933.           r.fn.trigger && r(D).trigger('ready').off('ready')
  1934.         }
  1935.       },
  1936.       bindReady: function () {
  1937.         if (!N) {
  1938.           N = r.Callbacks('once memory');
  1939.           if (D.readyState === 'complete') return setTimeout(r.ready, 1);
  1940.           if (D.addEventListener) D.addEventListener('DOMContentLoaded', C, !1),
  1941.           e.addEventListener('load', r.ready, !1);
  1942.            else if (D.attachEvent) {
  1943.             D.attachEvent('onreadystatechange', C),
  1944.             e.attachEvent('onload', r.ready);
  1945.             var t = !1;
  1946.             try {
  1947.               t = e.frameElement == null
  1948.             } catch (i) {
  1949.             }
  1950.             D.documentElement.doScroll && t && n()
  1951.           }
  1952.         }
  1953.       },
  1954.       isFunction: function (e) {
  1955.         return r.type(e) === 'function'
  1956.       },
  1957.       isArray: Array.isArray || function (e) {
  1958.         return r.type(e) === 'array'
  1959.       },
  1960.       isWindow: function (e) {
  1961.         return e && typeof e == 'object' && 'setInterval' in e
  1962.       },
  1963.       isNumeric: function (e) {
  1964.         return !isNaN(parseFloat(e)) && isFinite(e)
  1965.       },
  1966.       type: function (e) {
  1967.         return e == null ? String(e)  : H[k.call(e)] || 'object'
  1968.       },
  1969.       isPlainObject: function (e) {
  1970.         if (!e || r.type(e) !== 'object' || e.nodeType || r.isWindow(e)) return !1;
  1971.         try {
  1972.           if (e.constructor && !L.call(e, 'constructor') && !L.call(e.constructor.prototype, 'isPrototypeOf')) return !1
  1973.         } catch (n) {
  1974.           return !1
  1975.         }
  1976.         var i;
  1977.         for (i in e);
  1978.         return i === t || L.call(e, i)
  1979.       },
  1980.       isEmptyObject: function (e) {
  1981.         for (var t in e) return !1;
  1982.         return !0
  1983.       },
  1984.       error: function (e) {
  1985.         throw new Error(e)
  1986.       },
  1987.       parseJSON: function (t) {
  1988.         if (typeof t != 'string' || !t) return null;
  1989.         t = r.trim(t);
  1990.         if (e.JSON && e.JSON.parse) return e.JSON.parse(t);
  1991.         if (h.test(t.replace(p, '@').replace(d, ']').replace(v, ''))) return (new Function('return ' + t)) ();
  1992.         r.error('Invalid JSON: ' + t)
  1993.       },
  1994.       parseXML: function (n) {
  1995.         var i,
  1996.         s;
  1997.         try {
  1998.           e.DOMParser ? (s = new DOMParser, i = s.parseFromString(n, 'text/xml'))  : (i = new ActiveXObject('Microsoft.XMLDOM'), i.async = 'false', i.loadXML(n))
  1999.         } catch (o) {
  2000.           i = t
  2001.         }
  2002.         return (!i || !i.documentElement || i.getElementsByTagName('parsererror').length) && r.error('Invalid XML: ' + n),
  2003.         i
  2004.       },
  2005.       noop: function () {
  2006.       },
  2007.       globalEval: function (t) {
  2008.         t && a.test(t) && (e.execScript || function (t) {
  2009.           e.eval.call(e, t)
  2010.         }) (t)
  2011.       },
  2012.       camelCase: function (e) {
  2013.         return e.replace(E, 'ms-').replace(w, S)
  2014.       },
  2015.       nodeName: function (e, t) {
  2016.         return e.nodeName && e.nodeName.toUpperCase() === t.toUpperCase()
  2017.       },
  2018.       each: function (e, n, i) {
  2019.         var s,
  2020.         o = 0,
  2021.         u = e.length,
  2022.         a = u === t || r.isFunction(e);
  2023.         if (i) {
  2024.           if (a) {
  2025.             for (s in e) if (n.apply(e[s], i) === !1) break
  2026.           } else for (; o < u; ) if (n.apply(e[o++], i) === !1) break
  2027.         } else if (a) {
  2028.           for (s in e) if (n.call(e[s], s, e[s]) === !1) break
  2029.         } else for (; o < u; ) if (n.call(e[o], o, e[o++]) === !1) break;
  2030.         return e
  2031.       },
  2032.       trim: M ? function (e) {
  2033.         return e == null ? '' : M.call(e)
  2034.       }
  2035.        : function (e) {
  2036.         return e == null ? '' : (e + '').replace(f, '').replace(l, '')
  2037.       },
  2038.       makeArray: function (e, t) {
  2039.         var n = t || [
  2040.         ];
  2041.         if (e != null) {
  2042.           var i = r.type(e);
  2043.           e.length == null || i === 'string' || i === 'function' || i === 'regexp' || r.isWindow(e) ? A.call(n, e)  : r.merge(n, e)
  2044.         }
  2045.         return n
  2046.       },
  2047.       inArray: function (e, t, n) {
  2048.         var r;
  2049.         if (t) {
  2050.           if (_) return _.call(t, e, n);
  2051.           r = t.length,
  2052.           n = n ? n < 0 ? Math.max(0, r + n)  : n : 0;
  2053.           for (; n < r; n++) if (n in t && t[n] === e) return n
  2054.         }
  2055.         return - 1
  2056.       },
  2057.       merge: function (e, n) {
  2058.         var r = e.length,
  2059.         i = 0;
  2060.         if (typeof n.length == 'number') for (var s = n.length; i < s; i++) e[r++] = n[i];
  2061.          else while (n[i] !== t) e[r++] = n[i++];
  2062.         return e.length = r,
  2063.         e
  2064.       },
  2065.       grep: function (e, t, n) {
  2066.         var r = [
  2067.         ],
  2068.         i;
  2069.         n = !!n;
  2070.         for (var s = 0, o = e.length; s < o; s++) i = !!t(e[s], s),
  2071.         n !== i && r.push(e[s]);
  2072.         return r
  2073.       },
  2074.       map: function (e, n, i) {
  2075.         var s,
  2076.         o,
  2077.         u = [
  2078.         ],
  2079.         a = 0,
  2080.         f = e.length,
  2081.         l = e instanceof r || f !== t && typeof f == 'number' && (f > 0 && e[0] && e[f - 1] || f === 0 || r.isArray(e));
  2082.         if (l) for (; a < f; a++) s = n(e[a], a, i),
  2083.         s != null && (u[u.length] = s);
  2084.          else for (o in e) s = n(e[o], o, i),
  2085.         s != null && (u[u.length] = s);
  2086.         return u.concat.apply([], u)
  2087.       },
  2088.       guid: 1,
  2089.       proxy: function (e, n) {
  2090.         if (typeof n == 'string') {
  2091.           var i = e[n];
  2092.           n = e,
  2093.           e = i
  2094.         }
  2095.         if (!r.isFunction(e)) return t;
  2096.         var s = O.call(arguments, 2),
  2097.         o = function () {
  2098.           return e.apply(n, s.concat(O.call(arguments)))
  2099.         };
  2100.         return o.guid = e.guid = e.guid || o.guid || r.guid++,
  2101.         o
  2102.       },
  2103.       access: function (e, n, i, s, o, u) {
  2104.         var a = e.length;
  2105.         if (typeof n == 'object') {
  2106.           for (var f in n) r.access(e, f, n[f], s, o, i);
  2107.           return e
  2108.         }
  2109.         if (i !== t) {
  2110.           s = !u && s && r.isFunction(i);
  2111.           for (var l = 0; l < a; l++) o(e[l], n, s ? i.call(e[l], l, o(e[l], n))  : i, u);
  2112.           return e
  2113.         }
  2114.         return a ? o(e[0], n)  : t
  2115.       },
  2116.       now: function () {
  2117.         return (new Date).getTime()
  2118.       },
  2119.       uaMatch: function (e) {
  2120.         e = e.toLowerCase();
  2121.         var t = m.exec(e) || g.exec(e) || y.exec(e) || e.indexOf('compatible') < 0 && b.exec(e) || [
  2122.         ];
  2123.         return {
  2124.           browser: t[1] || '',
  2125.           version: t[2] || '0'
  2126.         }
  2127.       },
  2128.       sub: function () {
  2129.         function e(t, n) {
  2130.           return new e.fn.init(t, n)
  2131.         }
  2132.         r.extend(!0, e, this),
  2133.         e.superclass = this,
  2134.         e.fn = e.prototype = this(),
  2135.         e.fn.constructor = e,
  2136.         e.sub = this.sub,
  2137.         e.fn.init = function (n, i) {
  2138.           return i && i instanceof r && !(i instanceof e) && (i = e(i)),
  2139.           r.fn.init.call(this, n, i, t)
  2140.         },
  2141.         e.fn.init.prototype = e.fn;
  2142.         var t = e(D);
  2143.         return e
  2144.       },
  2145.       browser: {
  2146.       }
  2147.     }),
  2148.     r.each('Boolean Number String Function Array Date RegExp Object'.split(' '), function (e, t) {
  2149.       H['[object ' + t + ']'] = t.toLowerCase()
  2150.     }),
  2151.     T = r.uaMatch(x),
  2152.     T.browser && (r.browser[T.browser] = !0, r.browser.version = T.version),
  2153.     r.browser.webkit && (r.browser.safari = !0),
  2154.     a.test(' ') && (f = /^[\s\xA0]+/, l = /[\s\xA0]+$/),
  2155.     o = r(D),
  2156.     D.addEventListener ? C = function () {
  2157.       D.removeEventListener('DOMContentLoaded', C, !1),
  2158.       r.ready()
  2159.     }
  2160.      : D.attachEvent && (C = function () {
  2161.       D.readyState === 'complete' && (D.detachEvent('onreadystatechange', C), r.ready())
  2162.     }),
  2163.     r
  2164.   }(),
  2165.   j = {
  2166.   };
  2167.   B.Callbacks = function (e) {
  2168.     e = e ? j[e] || _(e)  : {
  2169.     };
  2170.     var n = [
  2171.     ],
  2172.     r = [
  2173.     ],
  2174.     i,
  2175.     s,
  2176.     o,
  2177.     u,
  2178.     a,
  2179.     f = function (t) {
  2180.       var r,
  2181.       i,
  2182.       s,
  2183.       o,
  2184.       u;
  2185.       for (r = 0, i = t.length; r < i; r++) s = t[r],
  2186.       o = B.type(s),
  2187.       o === 'array' ? f(s)  : o === 'function' && (!e.unique || !c.has(s)) && n.push(s)
  2188.     },
  2189.     l = function (t, f) {
  2190.       f = f || [
  2191.       ],
  2192.       i = !e.memory || [
  2193.         t,
  2194.         f
  2195.       ],
  2196.       s = !0,
  2197.       a = o || 0,
  2198.       o = 0,
  2199.       u = n.length;
  2200.       for (; n && a < u; a++) if (n[a].apply(t, f) === !1 && e.stopOnFalse) {
  2201.         i = !0;
  2202.         break
  2203.       }
  2204.       s = !1,
  2205.       n && (e.once ? i === !0 ? c.disable()  : n = [
  2206.       ] : r && r.length && (i = r.shift(), c.fireWith(i[0], i[1])))
  2207.     },
  2208.     c = {
  2209.       add: function () {
  2210.         if (n) {
  2211.           var e = n.length;
  2212.           f(arguments),
  2213.           s ? u = n.length : i && i !== !0 && (o = e, l(i[0], i[1]))
  2214.         }
  2215.         return this
  2216.       },
  2217.       remove: function () {
  2218.         if (n) {
  2219.           var t = arguments,
  2220.           r = 0,
  2221.           i = t.length;
  2222.           for (; r < i; r++) for (var o = 0; o < n.length; o++) if (t[r] === n[o]) {
  2223.             s && o <= u && (u--, o <= a && a--),
  2224.             n.splice(o--, 1);
  2225.             if (e.unique) break
  2226.           }
  2227.         }
  2228.         return this
  2229.       },
  2230.       has: function (e) {
  2231.         if (n) {
  2232.           var t = 0,
  2233.           r = n.length;
  2234.           for (; t < r; t++) if (e === n[t]) return !0
  2235.         }
  2236.         return !1
  2237.       },
  2238.       empty: function () {
  2239.         return n = [
  2240.         ],
  2241.         this
  2242.       },
  2243.       disable: function () {
  2244.         return n = r = i = t,
  2245.         this
  2246.       },
  2247.       disabled: function () {
  2248.         return !n
  2249.       },
  2250.       lock: function () {
  2251.         return r = t,
  2252.         (!i || i === !0) && c.disable(),
  2253.         this
  2254.       },
  2255.       locked: function () {
  2256.         return !r
  2257.       },
  2258.       fireWith: function (t, n) {
  2259.         return r && (s ? e.once || r.push([t,
  2260.         n])  : (!e.once || !i) && l(t, n)),
  2261.         this
  2262.       },
  2263.       fire: function () {
  2264.         return c.fireWith(this, arguments),
  2265.         this
  2266.       },
  2267.       fired: function () {
  2268.         return !!i
  2269.       }
  2270.     };
  2271.     return c
  2272.   };
  2273.   var F = [
  2274.   ].slice;
  2275.   B.extend({
  2276.     Deferred: function (e) {
  2277.       var t = B.Callbacks('once memory'),
  2278.       n = B.Callbacks('once memory'),
  2279.       r = B.Callbacks('memory'),
  2280.       i = 'pending',
  2281.       s = {
  2282.         resolve: t,
  2283.         reject: n,
  2284.         notify: r
  2285.       },
  2286.       o = {
  2287.         done: t.add,
  2288.         fail: n.add,
  2289.         progress: r.add,
  2290.         state: function () {
  2291.           return i
  2292.         },
  2293.         isResolved: t.fired,
  2294.         isRejected: n.fired,
  2295.         then: function (e, t, n) {
  2296.           return u.done(e).fail(t).progress(n),
  2297.           this
  2298.         },
  2299.         always: function () {
  2300.           return u.done.apply(u, arguments).fail.apply(u, arguments),
  2301.           this
  2302.         },
  2303.         pipe: function (e, t, n) {
  2304.           return B.Deferred(function (r) {
  2305.             B.each({
  2306.               done: [
  2307.                 e,
  2308.                 'resolve'
  2309.               ],
  2310.               fail: [
  2311.                 t,
  2312.                 'reject'
  2313.               ],
  2314.               progress: [
  2315.                 n,
  2316.                 'notify'
  2317.               ]
  2318.             }, function (e, t) {
  2319.               var n = t[0],
  2320.               i = t[1],
  2321.               s;
  2322.               B.isFunction(n) ? u[e](function () {
  2323.                 s = n.apply(this, arguments),
  2324.                 s && B.isFunction(s.promise) ? s.promise().then(r.resolve, r.reject, r.notify)  : r[i + 'With'](this === u ? r : this, [
  2325.                   s
  2326.                 ])
  2327.               })  : u[e](r[i])
  2328.             })
  2329.           }).promise()
  2330.         },
  2331.         promise: function (e) {
  2332.           if (e == null) e = o;
  2333.            else for (var t in o) e[t] = o[t];
  2334.           return e
  2335.         }
  2336.       },
  2337.       u = o.promise({
  2338.       }),
  2339.       a;
  2340.       for (a in s) u[a] = s[a].fire,
  2341.       u[a + 'With'] = s[a].fireWith;
  2342.       return u.done(function () {
  2343.         i = 'resolved'
  2344.       }, n.disable, r.lock).fail(function () {
  2345.         i = 'rejected'
  2346.       }, t.disable, r.lock),
  2347.       e && e.call(u, u),
  2348.       u
  2349.     },
  2350.     when: function (e) {
  2351.       function t(e) {
  2352.         return function (t) {
  2353.           o[e] = arguments.length > 1 ? F.call(arguments, 0)  : t,
  2354.           f.notifyWith(l, o)
  2355.         }
  2356.       }
  2357.       function n(e) {
  2358.         return function (t) {
  2359.           r[e] = arguments.length > 1 ? F.call(arguments, 0)  : t,
  2360.           --u || f.resolveWith(f, r)
  2361.         }
  2362.       }
  2363.       var r = F.call(arguments, 0),
  2364.       i = 0,
  2365.       s = r.length,
  2366.       o = Array(s),
  2367.       u = s,
  2368.       a = s,
  2369.       f = s <= 1 && e && B.isFunction(e.promise) ? e : B.Deferred(),
  2370.       l = f.promise();
  2371.       if (s > 1) {
  2372.         for (; i < s; i++) r[i] && r[i].promise && B.isFunction(r[i].promise) ? r[i].promise().then(n(i), f.reject, t(i))  : --u;
  2373.         u || f.resolveWith(f, r)
  2374.       } else f !== e && f.resolveWith(f, s ? [
  2375.         e
  2376.       ] : [
  2377.       ]);
  2378.       return l
  2379.     }
  2380.   }),
  2381.   B.support = function () {
  2382.     var t,
  2383.     n,
  2384.     r,
  2385.     i,
  2386.     s,
  2387.     o,
  2388.     u,
  2389.     a,
  2390.     f,
  2391.     l,
  2392.     c,
  2393.     h,
  2394.     p,
  2395.     d = D.createElement('div'),
  2396.     v = D.documentElement;
  2397.     d.setAttribute('className', 't'),
  2398.     d.innerHTML = '   <link/><table></table><a href=\'/a\' style=\'top:1px;float:left;opacity:.55;\'>a</a><input type=\'checkbox\'/>',
  2399.     n = d.getElementsByTagName('*'),
  2400.     r = d.getElementsByTagName('a') [0];
  2401.     if (!n || !n.length || !r) return {
  2402.     };
  2403.     i = D.createElement('select'),
  2404.     s = i.appendChild(D.createElement('option')),
  2405.     o = d.getElementsByTagName('input') [0],
  2406.     t = {
  2407.       leadingWhitespace: d.firstChild.nodeType === 3,
  2408.       tbody: !d.getElementsByTagName('tbody').length,
  2409.       htmlSerialize: !!d.getElementsByTagName('link').length,
  2410.       style: /top/.test(r.getAttribute('style')),
  2411.       hrefNormalized: r.getAttribute('href') === '/a',
  2412.       opacity: /^0.55/.test(r.style.opacity),
  2413.       cssFloat: !!r.style.cssFloat,
  2414.       checkOn: o.value === 'on',
  2415.       optSelected: s.selected,
  2416.       getSetAttribute: d.className !== 't',
  2417.       enctype: !!D.createElement('form').enctype,
  2418.       html5Clone: D.createElement('nav').cloneNode(!0).outerHTML !== '<:nav></:nav>',
  2419.       submitBubbles: !0,
  2420.       changeBubbles: !0,
  2421.       focusinBubbles: !1,
  2422.       deleteExpando: !0,
  2423.       noCloneEvent: !0,
  2424.       inlineBlockNeedsLayout: !1,
  2425.       shrinkWrapBlocks: !1,
  2426.       reliableMarginRight: !0
  2427.     },
  2428.     o.checked = !0,
  2429.     t.noCloneChecked = o.cloneNode(!0).checked,
  2430.     i.disabled = !0,
  2431.     t.optDisabled = !s.disabled;
  2432.     try {
  2433.       delete d.test
  2434.     } catch (m) {
  2435.       t.deleteExpando = !1
  2436.     }
  2437.     !d.addEventListener && d.attachEvent && d.fireEvent && (d.attachEvent('onclick', function () {
  2438.       t.noCloneEvent = !1
  2439.     }), d.cloneNode(!0).fireEvent('onclick')),
  2440.     o = D.createElement('input'),
  2441.     o.value = 't',
  2442.     o.setAttribute('type', 'radio'),
  2443.     t.radioValue = o.value === 't',
  2444.     o.setAttribute('checked', 'checked'),
  2445.     d.appendChild(o),
  2446.     a = D.createDocumentFragment(),
  2447.     a.appendChild(d.lastChild),
  2448.     t.checkClone = a.cloneNode(!0).cloneNode(!0).lastChild.checked,
  2449.     t.appendChecked = o.checked,
  2450.     a.removeChild(o),
  2451.     a.appendChild(d),
  2452.     d.innerHTML = '',
  2453.     e.getComputedStyle && (u = D.createElement('div'), u.style.width = '0', u.style.marginRight = '0', d.style.width = '2px', d.appendChild(u), t.reliableMarginRight = (parseInt((e.getComputedStyle(u, null) || {
  2454.       marginRight: 0
  2455.     }).marginRight, 10) || 0) === 0);
  2456.     if (d.attachEvent) for (h in {
  2457.       submit: 1,
  2458.       change: 1,
  2459.       focusin: 1
  2460.     }) c = 'on' + h,
  2461.     p = c in d,
  2462.     p || (d.setAttribute(c, 'return;'), p = typeof d[c] == 'function'),
  2463.     t[h + 'Bubbles'] = p;
  2464.     return a.removeChild(d),
  2465.     a = i = s = u = d = o = null,
  2466.     B(function () {
  2467.       var e,
  2468.       n,
  2469.       r,
  2470.       i,
  2471.       s,
  2472.       o,
  2473.       u,
  2474.       a,
  2475.       l,
  2476.       c,
  2477.       h,
  2478.       v = D.getElementsByTagName('body') [0];
  2479.       !v || (u = 1, a = 'position:absolute;top:0;left:0;width:1px;height:1px;margin:0;', l = 'visibility:hidden;border:0;', c = 'style=\'' + a + 'border:5px solid #000;padding:0;\'', h = '<div ' + c + '><div></div></div>' + '<table ' + c + ' cellpadding=\'0\' cellspacing=\'0\'>' + '<tr><td></td></tr></table>', e = D.createElement('div'), e.style.cssText = l + 'width:0;height:0;position:static;top:0;margin-top:' + u + 'px', v.insertBefore(e, v.firstChild), d = D.createElement('div'), e.appendChild(d), d.innerHTML = '<table><tr><td style=\'padding:0;border:0;display:none\'></td><td>t</td></tr></table>', f = d.getElementsByTagName('td'), p = f[0].offsetHeight === 0, f[0].style.display = '', f[1].style.display = 'none', t.reliableHiddenOffsets = p && f[0].offsetHeight === 0, d.innerHTML = '', d.style.width = d.style.paddingLeft = '1px', B.boxModel = t.boxModel = d.offsetWidth === 2, typeof d.style.zoom != 'undefined' && (d.style.display = 'inline', d.style.zoom = 1, t.inlineBlockNeedsLayout = d.offsetWidth === 2, d.style.display = '', d.innerHTML = '<div style=\'width:4px;\'></div>', t.shrinkWrapBlocks = d.offsetWidth !== 2), d.style.cssText = a + l, d.innerHTML = h, n = d.firstChild, r = n.firstChild, s = n.nextSibling.firstChild.firstChild, o = {
  2480.         doesNotAddBorder: r.offsetTop !== 5,
  2481.         doesAddBorderForTableAndCells: s.offsetTop === 5
  2482.       }, r.style.position = 'fixed', r.style.top = '20px', o.fixedPosition = r.offsetTop === 20 || r.offsetTop === 15, r.style.position = r.style.top = '', n.style.overflow = 'hidden', n.style.position = 'relative', o.subtractsBorderForOverflowNotVisible = r.offsetTop === - 5, o.doesNotIncludeMarginInBodyOffset = v.offsetTop !== u, v.removeChild(e), d = e = null, B.extend(t, o))
  2483.     }),
  2484.     t
  2485.   }();
  2486.   var I = /^(?:\{.*\}|\[.*\])$/,
  2487.   q = /([A-Z])/g;
  2488.   B.extend({
  2489.     cache: {
  2490.     },
  2491.     uuid: 0,
  2492.     expando: 'jQuery' + (B.fn.jquery + Math.random()).replace(/\D/g, ''),
  2493.     noData: {
  2494.       embed: !0,
  2495.       object: 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000',
  2496.       applet: !0
  2497.     },
  2498.     hasData: function (e) {
  2499.       return e = e.nodeType ? B.cache[e[B.expando]] : e[B.expando],
  2500.       !!e && !O(e)
  2501.     },
  2502.     data: function (e, n, r, i) {
  2503.       if (!!B.acceptData(e)) {
  2504.         var s,
  2505.         o,
  2506.         u,
  2507.         a = B.expando,
  2508.         f = typeof n == 'string',
  2509.         l = e.nodeType,
  2510.         c = l ? B.cache : e,
  2511.         h = l ? e[a] : e[a] && a,
  2512.         p = n === 'events';
  2513.         if ((!h || !c[h] || !p && !i && !c[h].data) && f && r === t) return;
  2514.         h || (l ? e[a] = h = ++B.uuid : h = a),
  2515.         c[h] || (c[h] = {
  2516.         }, l || (c[h].toJSON = B.noop));
  2517.         if (typeof n == 'object' || typeof n == 'function') i ? c[h] = B.extend(c[h], n)  : c[h].data = B.extend(c[h].data, n);
  2518.         return s = o = c[h],
  2519.         i || (o.data || (o.data = {
  2520.         }), o = o.data),
  2521.         r !== t && (o[B.camelCase(n)] = r),
  2522.         p && !o[n] ? s.events : (f ? (u = o[n], u == null && (u = o[B.camelCase(n)]))  : u = o, u)
  2523.       }
  2524.     },
  2525.     removeData: function (e, t, n) {
  2526.       if (!!B.acceptData(e)) {
  2527.         var r,
  2528.         i,
  2529.         s,
  2530.         o = B.expando,
  2531.         u = e.nodeType,
  2532.         a = u ? B.cache : e,
  2533.         f = u ? e[o] : o;
  2534.         if (!a[f]) return;
  2535.         if (t) {
  2536.           r = n ? a[f] : a[f].data;
  2537.           if (r) {
  2538.             B.isArray(t) || (t in r ? t = [
  2539.               t
  2540.             ] : (t = B.camelCase(t), t in r ? t = [
  2541.               t
  2542.             ] : t = t.split(' ')));
  2543.             for (i = 0, s = t.length; i < s; i++) delete r[t[i]];
  2544.             if (!(n ? O : B.isEmptyObject) (r)) return
  2545.           }
  2546.         }
  2547.         if (!n) {
  2548.           delete a[f].data;
  2549.           if (!O(a[f])) return
  2550.         }
  2551.         B.support.deleteExpando || !a.setInterval ? delete a[f] : a[f] = null,
  2552.         u && (B.support.deleteExpando ? delete e[o] : e.removeAttribute ? e.removeAttribute(o)  : e[o] = null)
  2553.       }
  2554.     },
  2555.     _data: function (e, t, n) {
  2556.       return B.data(e, t, n, !0)
  2557.     },
  2558.     acceptData: function (e) {
  2559.       if (e.nodeName) {
  2560.         var t = B.noData[e.nodeName.toLowerCase()];
  2561.         if (t) return t !== !0 && e.getAttribute('classid') === t
  2562.       }
  2563.       return !0
  2564.     }
  2565.   }),
  2566.   B.fn.extend({
  2567.     data: function (e, n) {
  2568.       var r,
  2569.       i,
  2570.       s,
  2571.       o = null;
  2572.       if (typeof e == 'undefined') {
  2573.         if (this.length) {
  2574.           o = B.data(this[0]);
  2575.           if (this[0].nodeType === 1 && !B._data(this[0], 'parsedAttrs')) {
  2576.             i = this[0].attributes;
  2577.             for (var u = 0, a = i.length; u < a; u++) s = i[u].name,
  2578.             s.indexOf('data-') === 0 && (s = B.camelCase(s.substring(5)), M(this[0], s, o[s]));
  2579.             B._data(this[0], 'parsedAttrs', !0)
  2580.           }
  2581.         }
  2582.         return o
  2583.       }
  2584.       return typeof e == 'object' ? this.each(function () {
  2585.         B.data(this, e)
  2586.       })  : (r = e.split('.'), r[1] = r[1] ? '.' + r[1] : '', n === t ? (o = this.triggerHandler('getData' + r[1] + '!', [
  2587.         r[0]
  2588.       ]), o === t && this.length && (o = B.data(this[0], e), o = M(this[0], e, o)), o === t && r[1] ? this.data(r[0])  : o)  : this.each(function () {
  2589.         var t = B(this),
  2590.         i = [
  2591.           r[0],
  2592.           n
  2593.         ];
  2594.         t.triggerHandler('addData' + r[1] + '!', i),
  2595.         B.data(this, e, n),
  2596.         t.triggerHandler('changeData' + r[1] + '!', i)
  2597.       }))
  2598.     },
  2599.     removeData: function (e) {
  2600.       return this.each(function () {
  2601.         B.removeData(this, e)
  2602.       })
  2603.     }
  2604.   }),
  2605.   B.extend({
  2606.     _mark: function (e, t) {
  2607.       e && (t = (t || 'fx') + 'mark', B._data(e, t, (B._data(e, t) || 0) + 1))
  2608.     },
  2609.     _unmark: function (e, t, n) {
  2610.       e !== !0 && (n = t, t = e, e = !1);
  2611.       if (t) {
  2612.         n = n || 'fx';
  2613.         var r = n + 'mark',
  2614.         i = e ? 0 : (B._data(t, r) || 1) - 1;
  2615.         i ? B._data(t, r, i)  : (B.removeData(t, r, !0), A(t, n, 'mark'))
  2616.       }
  2617.     },
  2618.     queue: function (e, t, n) {
  2619.       var r;
  2620.       if (e) return t = (t || 'fx') + 'queue',
  2621.       r = B._data(e, t),
  2622.       n && (!r || B.isArray(n) ? r = B._data(e, t, B.makeArray(n))  : r.push(n)),
  2623.       r || [
  2624.       ]
  2625.     },
  2626.     dequeue: function (e, t) {
  2627.       t = t || 'fx';
  2628.       var n = B.queue(e, t),
  2629.       r = n.shift(),
  2630.       i = {
  2631.       };
  2632.       r === 'inprogress' && (r = n.shift()),
  2633.       r && (t === 'fx' && n.unshift('inprogress'), B._data(e, t + '.run', i), r.call(e, function () {
  2634.         B.dequeue(e, t)
  2635.       }, i)),
  2636.       n.length || (B.removeData(e, t + 'queue ' + t + '.run', !0), A(e, t, 'queue'))
  2637.     }
  2638.   }),
  2639.   B.fn.extend({
  2640.     queue: function (e, n) {
  2641.       return typeof e != 'string' && (n = e, e = 'fx'),
  2642.       n === t ? B.queue(this[0], e)  : this.each(function () {
  2643.         var t = B.queue(this, e, n);
  2644.         e === 'fx' && t[0] !== 'inprogress' && B.dequeue(this, e)
  2645.       })
  2646.     },
  2647.     dequeue: function (e) {
  2648.       return this.each(function () {
  2649.         B.dequeue(this, e)
  2650.       })
  2651.     },
  2652.     delay: function (e, t) {
  2653.       return e = B.fx ? B.fx.speeds[e] || e : e,
  2654.       t = t || 'fx',
  2655.       this.queue(t, function (t, n) {
  2656.         var r = setTimeout(t, e);
  2657.         n.stop = function () {
  2658.           clearTimeout(r)
  2659.         }
  2660.       })
  2661.     },
  2662.     clearQueue: function (e) {
  2663.       return this.queue(e || 'fx', [
  2664.       ])
  2665.     },
  2666.     promise: function (e, n) {
  2667.       function r() {
  2668.         --u || i.resolveWith(s, [
  2669.           s
  2670.         ])
  2671.       }
  2672.       typeof e != 'string' && (n = e, e = t),
  2673.       e = e || 'fx';
  2674.       var i = B.Deferred(),
  2675.       s = this,
  2676.       o = s.length,
  2677.       u = 1,
  2678.       a = e + 'defer',
  2679.       f = e + 'queue',
  2680.       l = e + 'mark',
  2681.       c;
  2682.       while (o--) if (c = B.data(s[o], a, t, !0) || (B.data(s[o], f, t, !0) || B.data(s[o], l, t, !0)) && B.data(s[o], a, B.Callbacks('once memory'), !0)) u++,
  2683.       c.add(r);
  2684.       return r(),
  2685.       i.promise()
  2686.     }
  2687.   });
  2688.   var R = /[\n\t\r]/g,
  2689.   U = /\s+/,
  2690.   z = /\r/g,
  2691.   W = /^(?:button|input)$/i,
  2692.   X = /^(?:button|input|object|select|textarea)$/i,
  2693.   V = /^a(?:rea)?$/i,
  2694.   $ = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
  2695.   J = B.support.getSetAttribute,
  2696.   K,
  2697.   Q,
  2698.   G;
  2699.   B.fn.extend({
  2700.     attr: function (e, t) {
  2701.       return B.access(this, e, t, !0, B.attr)
  2702.     },
  2703.     removeAttr: function (e) {
  2704.       return this.each(function () {
  2705.         B.removeAttr(this, e)
  2706.       })
  2707.     },
  2708.     prop: function (e, t) {
  2709.       return B.access(this, e, t, !0, B.prop)
  2710.     },
  2711.     removeProp: function (e) {
  2712.       return e = B.propFix[e] || e,
  2713.       this.each(function () {
  2714.         try {
  2715.           this[e] = t,
  2716.           delete this[e]
  2717.         } catch (n) {
  2718.         }
  2719.       })
  2720.     },
  2721.     addClass: function (e) {
  2722.       var t,
  2723.       n,
  2724.       r,
  2725.       i,
  2726.       s,
  2727.       o,
  2728.       u;
  2729.       if (B.isFunction(e)) return this.each(function (t) {
  2730.         B(this).addClass(e.call(this, t, this.className))
  2731.       });
  2732.       if (e && typeof e == 'string') {
  2733.         t = e.split(U);
  2734.         for (n = 0, r = this.length; n < r; n++) {
  2735.           i = this[n];
  2736.           if (i.nodeType === 1) if (!i.className && t.length === 1) i.className = e;
  2737.            else {
  2738.             s = ' ' + i.className + ' ';
  2739.             for (o = 0, u = t.length; o < u; o++) ~s.indexOf(' ' + t[o] + ' ') || (s += t[o] + ' ');
  2740.             i.className = B.trim(s)
  2741.           }
  2742.         }
  2743.       }
  2744.       return this
  2745.     },
  2746.     removeClass: function (e) {
  2747.       var n,
  2748.       r,
  2749.       i,
  2750.       s,
  2751.       o,
  2752.       u,
  2753.       a;
  2754.       if (B.isFunction(e)) return this.each(function (t) {
  2755.         B(this).removeClass(e.call(this, t, this.className))
  2756.       });
  2757.       if (e && typeof e == 'string' || e === t) {
  2758.         n = (e || '').split(U);
  2759.         for (r = 0, i = this.length; r < i; r++) {
  2760.           s = this[r];
  2761.           if (s.nodeType === 1 && s.className) if (e) {
  2762.             o = (' ' + s.className + ' ').replace(R, ' ');
  2763.             for (u = 0, a = n.length; u < a; u++) o = o.replace(' ' + n[u] + ' ', ' ');
  2764.             s.className = B.trim(o)
  2765.           } else s.className = ''
  2766.         }
  2767.       }
  2768.       return this
  2769.     },
  2770.     toggleClass: function (e, t) {
  2771.       var n = typeof e,
  2772.       r = typeof t == 'boolean';
  2773.       return B.isFunction(e) ? this.each(function (n) {
  2774.         B(this).toggleClass(e.call(this, n, this.className, t), t)
  2775.       })  : this.each(function () {
  2776.         if (n === 'string') {
  2777.           var i,
  2778.           s = 0,
  2779.           o = B(this),
  2780.           u = t,
  2781.           a = e.split(U);
  2782.           while (i = a[s++]) u = r ? u : !o.hasClass(i),
  2783.           o[u ? 'addClass' : 'removeClass'](i)
  2784.         } else if (n === 'undefined' || n === 'boolean') this.className && B._data(this, '__className__', this.className),
  2785.         this.className = this.className || e === !1 ? '' : B._data(this, '__className__') || ''
  2786.       })
  2787.     },
  2788.     hasClass: function (e) {
  2789.       var t = ' ' + e + ' ',
  2790.       n = 0,
  2791.       r = this.length;
  2792.       for (; n < r; n++) if (this[n].nodeType === 1 && (' ' + this[n].className + ' ').replace(R, ' ').indexOf(t) > - 1) return !0;
  2793.       return !1
  2794.     },
  2795.     val: function (e) {
  2796.       var n,
  2797.       r,
  2798.       i,
  2799.       s = this[0];
  2800.       if (!!arguments.length) return i = B.isFunction(e),
  2801.       this.each(function (r) {
  2802.         var s = B(this),
  2803.         o;
  2804.         if (this.nodeType === 1) {
  2805.           i ? o = e.call(this, r, s.val())  : o = e,
  2806.           o == null ? o = '' : typeof o == 'number' ? o += '' : B.isArray(o) && (o = B.map(o, function (e) {
  2807.             return e == null ? '' : e + ''
  2808.           })),
  2809.           n = B.valHooks[this.nodeName.toLowerCase()] || B.valHooks[this.type];
  2810.           if (!n || !('set' in n) || n.set(this, o, 'value') === t) this.value = o
  2811.         }
  2812.       });
  2813.       if (s) return n = B.valHooks[s.nodeName.toLowerCase()] || B.valHooks[s.type],
  2814.       n && 'get' in n && (r = n.get(s, 'value')) !== t ? r : (r = s.value, typeof r == 'string' ? r.replace(z, '')  : r == null ? '' : r)
  2815.     }
  2816.   }),
  2817.   B.extend({
  2818.     valHooks: {
  2819.       option: {
  2820.         get: function (e) {
  2821.           var t = e.attributes.value;
  2822.           return !t || t.specified ? e.value : e.text
  2823.         }
  2824.       },
  2825.       select: {
  2826.         get: function (e) {
  2827.           var t,
  2828.           n,
  2829.           r,
  2830.           i,
  2831.           s = e.selectedIndex,
  2832.           o = [
  2833.           ],
  2834.           u = e.options,
  2835.           a = e.type === 'select-one';
  2836.           if (s < 0) return null;
  2837.           n = a ? s : 0,
  2838.           r = a ? s + 1 : u.length;
  2839.           for (; n < r; n++) {
  2840.             i = u[n];
  2841.             if (i.selected && (B.support.optDisabled ? !i.disabled : i.getAttribute('disabled') === null) && (!i.parentNode.disabled || !B.nodeName(i.parentNode, 'optgroup'))) {
  2842.               t = B(i).val();
  2843.               if (a) return t;
  2844.               o.push(t)
  2845.             }
  2846.           }
  2847.           return a && !o.length && u.length ? B(u[s]).val()  : o
  2848.         },
  2849.         set: function (e, t) {
  2850.           var n = B.makeArray(t);
  2851.           return B(e).find('option').each(function () {
  2852.             this.selected = B.inArray(B(this).val(), n) >= 0
  2853.           }),
  2854.           n.length || (e.selectedIndex = - 1),
  2855.           n
  2856.         }
  2857.       }
  2858.     },
  2859.     attrFn: {
  2860.       val: !0,
  2861.       css: !0,
  2862.       html: !0,
  2863.       text: !0,
  2864.       data: !0,
  2865.       width: !0,
  2866.       height: !0,
  2867.       offset: !0
  2868.     },
  2869.     attr: function (e, n, r, i) {
  2870.       var s,
  2871.       o,
  2872.       u,
  2873.       a = e.nodeType;
  2874.       if (!!e && a !== 3 && a !== 8 && a !== 2) {
  2875.         if (i && n in B.attrFn) return B(e) [n](r);
  2876.         if (typeof e.getAttribute == 'undefined') return B.prop(e, n, r);
  2877.         u = a !== 1 || !B.isXMLDoc(e),
  2878.         u && (n = n.toLowerCase(), o = B.attrHooks[n] || ($.test(n) ? Q : K));
  2879.         if (r !== t) {
  2880.           if (r === null) {
  2881.             B.removeAttr(e, n);
  2882.             return
  2883.           }
  2884.           return o && 'set' in o && u && (s = o.set(e, r, n)) !== t ? s : (e.setAttribute(n, '' + r), r)
  2885.         }
  2886.         return o && 'get' in o && u && (s = o.get(e, n)) !== null ? s : (s = e.getAttribute(n), s === null ? t : s)
  2887.       }
  2888.     },
  2889.     removeAttr: function (e, t) {
  2890.       var n,
  2891.       r,
  2892.       i,
  2893.       s,
  2894.       o = 0;
  2895.       if (t && e.nodeType === 1) {
  2896.         r = t.toLowerCase().split(U),
  2897.         s = r.length;
  2898.         for (; o < s; o++) i = r[o],
  2899.         i && (n = B.propFix[i] || i, B.attr(e, i, ''), e.removeAttribute(J ? i : n), $.test(i) && n in e && (e[n] = !1))
  2900.       }
  2901.     },
  2902.     attrHooks: {
  2903.       type: {
  2904.         set: function (e, t) {
  2905.           if (W.test(e.nodeName) && e.parentNode) B.error('type property can\'t be changed');
  2906.            else if (!B.support.radioValue && t === 'radio' && B.nodeName(e, 'input')) {
  2907.             var n = e.value;
  2908.             return e.setAttribute('type', t),
  2909.             n && (e.value = n),
  2910.             t
  2911.           }
  2912.         }
  2913.       },
  2914.       value: {
  2915.         get: function (e, t) {
  2916.           return K && B.nodeName(e, 'button') ? K.get(e, t)  : t in e ? e.value : null
  2917.         },
  2918.         set: function (e, t, n) {
  2919.           if (K && B.nodeName(e, 'button')) return K.set(e, t, n);
  2920.           e.value = t
  2921.         }
  2922.       }
  2923.     },
  2924.     propFix: {
  2925.       tabindex: 'tabIndex',
  2926.       readonly: 'readOnly',
  2927.       'for': 'htmlFor',
  2928.       'class': 'className',
  2929.       maxlength: 'maxLength',
  2930.       cellspacing: 'cellSpacing',
  2931.       cellpadding: 'cellPadding',
  2932.       rowspan: 'rowSpan',
  2933.       colspan: 'colSpan',
  2934.       usemap: 'useMap',
  2935.       frameborder: 'frameBorder',
  2936.       contenteditable: 'contentEditable'
  2937.     },
  2938.     prop: function (e, n, r) {
  2939.       var i,
  2940.       s,
  2941.       o,
  2942.       u = e.nodeType;
  2943.       if (!!e && u !== 3 && u !== 8 && u !== 2) return o = u !== 1 || !B.isXMLDoc(e),
  2944.       o && (n = B.propFix[n] || n, s = B.propHooks[n]),
  2945.       r !== t ? s && 'set' in s && (i = s.set(e, r, n)) !== t ? i : e[n] = r : s && 'get' in s && (i = s.get(e, n)) !== null ? i : e[n]
  2946.     },
  2947.     propHooks: {
  2948.       tabIndex: {
  2949.         get: function (e) {
  2950.           var n = e.getAttributeNode('tabindex');
  2951.           return n && n.specified ? parseInt(n.value, 10)  : X.test(e.nodeName) || V.test(e.nodeName) && e.href ? 0 : t
  2952.         }
  2953.       }
  2954.     }
  2955.   }),
  2956.   B.attrHooks.tabindex = B.propHooks.tabIndex,
  2957.   Q = {
  2958.     get: function (e, n) {
  2959.       var r,
  2960.       i = B.prop(e, n);
  2961.       return i === !0 || typeof i != 'boolean' && (r = e.getAttributeNode(n)) && r.nodeValue !== !1 ? n.toLowerCase()  : t
  2962.     },
  2963.     set: function (e, t, n) {
  2964.       var r;
  2965.       return t === !1 ? B.removeAttr(e, n)  : (r = B.propFix[n] || n, r in e && (e[r] = !0), e.setAttribute(n, n.toLowerCase())),
  2966.       n
  2967.     }
  2968.   },
  2969.   J || (G = {
  2970.     name: !0,
  2971.     id: !0
  2972.   }, K = B.valHooks.button = {
  2973.     get: function (e, n) {
  2974.       var r;
  2975.       return r = e.getAttributeNode(n),
  2976.       r && (G[n] ? r.nodeValue !== '' : r.specified) ? r.nodeValue : t
  2977.     },
  2978.     set: function (e, t, n) {
  2979.       var r = e.getAttributeNode(n);
  2980.       return r || (r = D.createAttribute(n), e.setAttributeNode(r)),
  2981.       r.nodeValue = t + ''
  2982.     }
  2983.   }, B.attrHooks.tabindex.set = K.set, B.each(['width',
  2984.   'height'], function (e, t) {
  2985.     B.attrHooks[t] = B.extend(B.attrHooks[t], {
  2986.       set: function (e, n) {
  2987.         if (n === '') return e.setAttribute(t, 'auto'),
  2988.         n
  2989.       }
  2990.     })
  2991.   }), B.attrHooks.contenteditable = {
  2992.     get: K.get,
  2993.     set: function (e, t, n) {
  2994.       t === '' && (t = 'false'),
  2995.       K.set(e, t, n)
  2996.     }
  2997.   }),
  2998.   B.support.hrefNormalized || B.each(['href',
  2999.   'src',
  3000.   'width',
  3001.   'height'], function (e, n) {
  3002.     B.attrHooks[n] = B.extend(B.attrHooks[n], {
  3003.       get: function (e) {
  3004.         var r = e.getAttribute(n, 2);
  3005.         return r === null ? t : r
  3006.       }
  3007.     })
  3008.   }),
  3009.   B.support.style || (B.attrHooks.style = {
  3010.     get: function (e) {
  3011.       return e.style.cssText.toLowerCase() || t
  3012.     },
  3013.     set: function (e, t) {
  3014.       return e.style.cssText = '' + t
  3015.     }
  3016.   }),
  3017.   B.support.optSelected || (B.propHooks.selected = B.extend(B.propHooks.selected, {
  3018.     get: function (e) {
  3019.       var t = e.parentNode;
  3020.       return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex),
  3021.       null
  3022.     }
  3023.   })),
  3024.   B.support.enctype || (B.propFix.enctype = 'encoding'),
  3025.   B.support.checkOn || B.each(['radio',
  3026.   'checkbox'], function () {
  3027.     B.valHooks[this] = {
  3028.       get: function (e) {
  3029.         return e.getAttribute('value') === null ? 'on' : e.value
  3030.       }
  3031.     }
  3032.   }),
  3033.   B.each(['radio',
  3034.   'checkbox'], function () {
  3035.     B.valHooks[this] = B.extend(B.valHooks[this], {
  3036.       set: function (e, t) {
  3037.         if (B.isArray(t)) return e.checked = B.inArray(B(e).val(), t) >= 0
  3038.       }
  3039.     })
  3040.   });
  3041.   var Y = /^(?:textarea|input|select)$/i,
  3042.   Z = /^([^\.]*)?(?:\.(.+))?$/,
  3043.   et = /\bhover(\.\S+)?\b/,
  3044.   tt = /^key/,
  3045.   nt = /^(?:mouse|contextmenu)|click/,
  3046.   rt = /^(?:focusinfocus|focusoutblur)$/,
  3047.   it = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
  3048.   st = function (e) {
  3049.     var t = it.exec(e);
  3050.     return t && (t[1] = (t[1] || '').toLowerCase(), t[3] = t[3] && new RegExp('(?:^|\\s)' + t[3] + '(?:\\s|$)')),
  3051.     t
  3052.   },
  3053.   ot = function (e, t) {
  3054.     var n = e.attributes || {
  3055.     };
  3056.     return (!t[1] || e.nodeName.toLowerCase() === t[1]) && (!t[2] || (n.id || {
  3057.     }).value === t[2]) && (!t[3] || t[3].test((n['class'] || {
  3058.     }).value))
  3059.   },
  3060.   ut = function (e) {
  3061.     return B.event.special.hover ? e : e.replace(et, 'mouseenter$1 mouseleave$1')
  3062.   };
  3063.   B.event = {
  3064.     add: function (e, n, r, i, s) {
  3065.       var o,
  3066.       u,
  3067.       a,
  3068.       f,
  3069.       l,
  3070.       c,
  3071.       h,
  3072.       p,
  3073.       d,
  3074.       v,
  3075.       m,
  3076.       g;
  3077.       if (!(e.nodeType === 3 || e.nodeType === 8 || !n || !r || !(o = B._data(e)))) {
  3078.         r.handler && (d = r, r = d.handler),
  3079.         r.guid || (r.guid = B.guid++),
  3080.         a = o.events,
  3081.         a || (o.events = a = {
  3082.         }),
  3083.         u = o.handle,
  3084.         u || (o.handle = u = function (e) {
  3085.           return typeof B == 'undefined' || !!e && B.event.triggered === e.type ? t : B.event.dispatch.apply(u.elem, arguments)
  3086.         }, u.elem = e),
  3087.         n = B.trim(ut(n)).split(' ');
  3088.         for (f = 0; f < n.length; f++) {
  3089.           l = Z.exec(n[f]) || [
  3090.           ],
  3091.           c = l[1],
  3092.           h = (l[2] || '').split('.').sort(),
  3093.           g = B.event.special[c] || {
  3094.           },
  3095.           c = (s ? g.delegateType : g.bindType) || c,
  3096.           g = B.event.special[c] || {
  3097.           },
  3098.           p = B.extend({
  3099.             type: c,
  3100.             origType: l[1],
  3101.             data: i,
  3102.             handler: r,
  3103.             guid: r.guid,
  3104.             selector: s,
  3105.             quick: st(s),
  3106.             namespace: h.join('.')
  3107.           }, d),
  3108.           m = a[c];
  3109.           if (!m) {
  3110.             m = a[c] = [
  3111.             ],
  3112.             m.delegateCount = 0;
  3113.             if (!g.setup || g.setup.call(e, i, h, u) === !1) e.addEventListener ? e.addEventListener(c, u, !1)  : e.attachEvent && e.attachEvent('on' + c, u)
  3114.           }
  3115.           g.add && (g.add.call(e, p), p.handler.guid || (p.handler.guid = r.guid)),
  3116.           s ? m.splice(m.delegateCount++, 0, p)  : m.push(p),
  3117.           B.event.global[c] = !0
  3118.         }
  3119.         e = null
  3120.       }
  3121.     },
  3122.     global: {
  3123.     },
  3124.     remove: function (e, t, n, r, i) {
  3125.       var s = B.hasData(e) && B._data(e),
  3126.       o,
  3127.       u,
  3128.       a,
  3129.       f,
  3130.       l,
  3131.       c,
  3132.       h,
  3133.       p,
  3134.       d,
  3135.       v,
  3136.       m,
  3137.       g;
  3138.       if (!!s && !!(p = s.events)) {
  3139.         t = B.trim(ut(t || '')).split(' ');
  3140.         for (o = 0; o < t.length; o++) {
  3141.           u = Z.exec(t[o]) || [
  3142.           ],
  3143.           a = f = u[1],
  3144.           l = u[2];
  3145.           if (!a) {
  3146.             for (a in p) B.event.remove(e, a + t[o], n, r, !0);
  3147.             continue
  3148.           }
  3149.           d = B.event.special[a] || {
  3150.           },
  3151.           a = (r ? d.delegateType : d.bindType) || a,
  3152.           m = p[a] || [
  3153.           ],
  3154.           c = m.length,
  3155.           l = l ? new RegExp('(^|\\.)' + l.split('.').sort().join('\\.(?:.*\\.)?') + '(\\.|$)')  : null;
  3156.           for (h = 0; h < m.length; h++) g = m[h],
  3157.           (i || f === g.origType) && (!n || n.guid === g.guid) && (!l || l.test(g.namespace)) && (!r || r === g.selector || r === '**' && g.selector) && (m.splice(h--, 1), g.selector && m.delegateCount--, d.remove && d.remove.call(e, g));
  3158.           m.length === 0 && c !== m.length && ((!d.teardown || d.teardown.call(e, l) === !1) && B.removeEvent(e, a, s.handle), delete p[a])
  3159.         }
  3160.         B.isEmptyObject(p) && (v = s.handle, v && (v.elem = null), B.removeData(e, [
  3161.           'events',
  3162.           'handle'
  3163.         ], !0))
  3164.       }
  3165.     },
  3166.     customEvent: {
  3167.       getData: !0,
  3168.       setData: !0,
  3169.       changeData: !0
  3170.     },
  3171.     trigger: function (n, r, i, s) {
  3172.       if (!i || i.nodeType !== 3 && i.nodeType !== 8) {
  3173.         var o = n.type || n,
  3174.         u = [
  3175.         ],
  3176.         a,
  3177.         f,
  3178.         l,
  3179.         c,
  3180.         h,
  3181.         p,
  3182.         d,
  3183.         v,
  3184.         m,
  3185.         g;
  3186.         if (rt.test(o + B.event.triggered)) return;
  3187.         o.indexOf('!') >= 0 && (o = o.slice(0, - 1), f = !0),
  3188.         o.indexOf('.') >= 0 && (u = o.split('.'), o = u.shift(), u.sort());
  3189.         if ((!i || B.event.customEvent[o]) && !B.event.global[o]) return;
  3190.         n = typeof n == 'object' ? n[B.expando] ? n : new B.Event(o, n)  : new B.Event(o),
  3191.         n.type = o,
  3192.         n.isTrigger = !0,
  3193.         n.exclusive = f,
  3194.         n.namespace = u.join('.'),
  3195.         n.namespace_re = n.namespace ? new RegExp('(^|\\.)' + u.join('\\.(?:.*\\.)?') + '(\\.|$)')  : null,
  3196.         p = o.indexOf(':') < 0 ? 'on' + o : '';
  3197.         if (!i) {
  3198.           a = B.cache;
  3199.           for (l in a) a[l].events && a[l].events[o] && B.event.trigger(n, r, a[l].handle.elem, !0);
  3200.           return
  3201.         }
  3202.         n.result = t,
  3203.         n.target || (n.target = i),
  3204.         r = r != null ? B.makeArray(r)  : [
  3205.         ],
  3206.         r.unshift(n),
  3207.         d = B.event.special[o] || {
  3208.         };
  3209.         if (d.trigger && d.trigger.apply(i, r) === !1) return;
  3210.         m = [
  3211.           [i,
  3212.           d.bindType || o]
  3213.         ];
  3214.         if (!s && !d.noBubble && !B.isWindow(i)) {
  3215.           g = d.delegateType || o,
  3216.           c = rt.test(g + o) ? i : i.parentNode,
  3217.           h = null;
  3218.           for (; c; c = c.parentNode) m.push([c,
  3219.           g]),
  3220.           h = c;
  3221.           h && h === i.ownerDocument && m.push([h.defaultView || h.parentWindow || e,
  3222.           g])
  3223.         }
  3224.         for (l = 0; l < m.length && !n.isPropagationStopped(); l++) c = m[l][0],
  3225.         n.type = m[l][1],
  3226.         v = (B._data(c, 'events') || {
  3227.         }) [n.type] && B._data(c, 'handle'),
  3228.         v && v.apply(c, r),
  3229.         v = p && c[p],
  3230.         v && B.acceptData(c) && v.apply(c, r) === !1 && n.preventDefault();
  3231.         return n.type = o,
  3232.         !s && !n.isDefaultPrevented() && (!d._default || d._default.apply(i.ownerDocument, r) === !1) && (o !== 'click' || !B.nodeName(i, 'a')) && B.acceptData(i) && p && i[o] && (o !== 'focus' && o !== 'blur' || n.target.offsetWidth !== 0) && !B.isWindow(i) && (h = i[p], h && (i[p] = null), B.event.triggered = o, i[o](), B.event.triggered = t, h && (i[p] = h)),
  3233.         n.result
  3234.       }
  3235.     },
  3236.     dispatch: function (n) {
  3237.       n = B.event.fix(n || e.event);
  3238.       var r = (B._data(this, 'events') || {
  3239.       }) [n.type] || [
  3240.       ],
  3241.       i = r.delegateCount,
  3242.       s = [
  3243.       ].slice.call(arguments, 0),
  3244.       o = !n.exclusive && !n.namespace,
  3245.       u = [
  3246.       ],
  3247.       a,
  3248.       f,
  3249.       l,
  3250.       c,
  3251.       h,
  3252.       p,
  3253.       d,
  3254.       v,
  3255.       m,
  3256.       g,
  3257.       y;
  3258.       s[0] = n,
  3259.       n.delegateTarget = this;
  3260.       if (i && !n.target.disabled && (!n.button || n.type !== 'click')) {
  3261.         c = B(this),
  3262.         c.context = this.ownerDocument || this;
  3263.         for (l = n.target; l != this; l = l.parentNode || this) {
  3264.           p = {
  3265.           },
  3266.           v = [
  3267.           ],
  3268.           c[0] = l;
  3269.           for (a = 0; a < i; a++) m = r[a],
  3270.           g = m.selector,
  3271.           p[g] === t && (p[g] = m.quick ? ot(l, m.quick)  : c.is(g)),
  3272.           p[g] && v.push(m);
  3273.           v.length && u.push({
  3274.             elem: l,
  3275.             matches: v
  3276.           })
  3277.         }
  3278.       }
  3279.       r.length > i && u.push({
  3280.         elem: this,
  3281.         matches: r.slice(i)
  3282.       });
  3283.       for (a = 0; a < u.length && !n.isPropagationStopped(); a++) {
  3284.         d = u[a],
  3285.         n.currentTarget = d.elem;
  3286.         for (f = 0; f < d.matches.length && !n.isImmediatePropagationStopped(); f++) {
  3287.           m = d.matches[f];
  3288.           if (o || !n.namespace && !m.namespace || n.namespace_re && n.namespace_re.test(m.namespace)) n.data = m.data,
  3289.           n.handleObj = m,
  3290.           h = ((B.event.special[m.origType] || {
  3291.           }).handle || m.handler).apply(d.elem, s),
  3292.           h !== t && (n.result = h, h === !1 && (n.preventDefault(), n.stopPropagation()))
  3293.         }
  3294.       }
  3295.       return n.result
  3296.     },
  3297.     props: 'attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which'.split(' '),
  3298.     fixHooks: {
  3299.     },
  3300.     keyHooks: {
  3301.       props: 'char charCode key keyCode'.split(' '),
  3302.       filter: function (e, t) {
  3303.         return e.which == null && (e.which = t.charCode != null ? t.charCode : t.keyCode),
  3304.         e
  3305.       }
  3306.     },
  3307.     mouseHooks: {
  3308.       props: 'button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement'.split(' '),
  3309.       filter: function (e, n) {
  3310.         var r,
  3311.         i,
  3312.         s,
  3313.         o = n.button,
  3314.         u = n.fromElement;
  3315.         return e.pageX == null && n.clientX != null && (r = e.target.ownerDocument || D, i = r.documentElement, s = r.body, e.pageX = n.clientX + (i && i.scrollLeft || s && s.scrollLeft || 0) - (i && i.clientLeft || s && s.clientLeft || 0), e.pageY = n.clientY + (i && i.scrollTop || s && s.scrollTop || 0) - (i && i.clientTop || s && s.clientTop || 0)),
  3316.         !e.relatedTarget && u && (e.relatedTarget = u === e.target ? n.toElement : u),
  3317.         !e.which && o !== t && (e.which = o & 1 ? 1 : o & 2 ? 3 : o & 4 ? 2 : 0),
  3318.         e
  3319.       }
  3320.     },
  3321.     fix: function (e) {
  3322.       if (e[B.expando]) return e;
  3323.       var n,
  3324.       r,
  3325.       i = e,
  3326.       s = B.event.fixHooks[e.type] || {
  3327.       },
  3328.       o = s.props ? this.props.concat(s.props)  : this.props;
  3329.       e = B.Event(i);
  3330.       for (n = o.length; n; ) r = o[--n],
  3331.       e[r] = i[r];
  3332.       return e.target || (e.target = i.srcElement || D),
  3333.       e.target.nodeType === 3 && (e.target = e.target.parentNode),
  3334.       e.metaKey === t && (e.metaKey = e.ctrlKey),
  3335.       s.filter ? s.filter(e, i)  : e
  3336.     },
  3337.     special: {
  3338.       ready: {
  3339.         setup: B.bindReady
  3340.       },
  3341.       load: {
  3342.         noBubble: !0
  3343.       },
  3344.       focus: {
  3345.         delegateType: 'focusin'
  3346.       },
  3347.       blur: {
  3348.         delegateType: 'focusout'
  3349.       },
  3350.       beforeunload: {
  3351.         setup: function (e, t, n) {
  3352.           B.isWindow(this) && (this.onbeforeunload = n)
  3353.         },
  3354.         teardown: function (e, t) {
  3355.           this.onbeforeunload === t && (this.onbeforeunload = null)
  3356.         }
  3357.       }
  3358.     },
  3359.     simulate: function (e, t, n, r) {
  3360.       var i = B.extend(new B.Event, n, {
  3361.         type: e,
  3362.         isSimulated: !0,
  3363.         originalEvent: {
  3364.         }
  3365.       });
  3366.       r ? B.event.trigger(i, null, t)  : B.event.dispatch.call(t, i),
  3367.       i.isDefaultPrevented() && n.preventDefault()
  3368.     }
  3369.   },
  3370.   B.event.handle = B.event.dispatch,
  3371.   B.removeEvent = D.removeEventListener ? function (e, t, n) {
  3372.     e.removeEventListener && e.removeEventListener(t, n, !1)
  3373.   }
  3374.    : function (e, t, n) {
  3375.     e.detachEvent && e.detachEvent('on' + t, n)
  3376.   },
  3377.   B.Event = function (e, t) {
  3378.     if (!(this instanceof B.Event)) return new B.Event(e, t);
  3379.     e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || e.returnValue === !1 || e.getPreventDefault && e.getPreventDefault() ? k : L)  : this.type = e,
  3380.     t && B.extend(this, t),
  3381.     this.timeStamp = e && e.timeStamp || B.now(),
  3382.     this[B.expando] = !0
  3383.   },
  3384.   B.Event.prototype = {
  3385.     preventDefault: function () {
  3386.       this.isDefaultPrevented = k;
  3387.       var e = this.originalEvent;
  3388.       !e || (e.preventDefault ? e.preventDefault()  : e.returnValue = !1)
  3389.     },
  3390.     stopPropagation: function () {
  3391.       this.isPropagationStopped = k;
  3392.       var e = this.originalEvent;
  3393.       !e || (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0)
  3394.     },
  3395.     stopImmediatePropagation: function () {
  3396.       this.isImmediatePropagationStopped = k,
  3397.       this.stopPropagation()
  3398.     },
  3399.     isDefaultPrevented: L,
  3400.     isPropagationStopped: L,
  3401.     isImmediatePropagationStopped: L
  3402.   },
  3403.   B.each({
  3404.     mouseenter: 'mouseover',
  3405.     mouseleave: 'mouseout'
  3406.   }, function (e, t) {
  3407.     B.event.special[e] = {
  3408.       delegateType: t,
  3409.       bindType: t,
  3410.       handle: function (e) {
  3411.         var n = this,
  3412.         r = e.relatedTarget,
  3413.         i = e.handleObj,
  3414.         s = i.selector,
  3415.         o;
  3416.         if (!r || r !== n && !B.contains(n, r)) e.type = i.origType,
  3417.         o = i.handler.apply(this, arguments),
  3418.         e.type = t;
  3419.         return o
  3420.       }
  3421.     }
  3422.   }),
  3423.   B.support.submitBubbles || (B.event.special.submit = {
  3424.     setup: function () {
  3425.       if (B.nodeName(this, 'form')) return !1;
  3426.       B.event.add(this, 'click._submit keypress._submit', function (e) {
  3427.         var n = e.target,
  3428.         r = B.nodeName(n, 'input') || B.nodeName(n, 'button') ? n.form : t;
  3429.         r && !r._submit_attached && (B.event.add(r, 'submit._submit', function (e) {
  3430.           this.parentNode && !e.isTrigger && B.event.simulate('submit', this.parentNode, e, !0)
  3431.         }), r._submit_attached = !0)
  3432.       })
  3433.     },
  3434.     teardown: function () {
  3435.       if (B.nodeName(this, 'form')) return !1;
  3436.       B.event.remove(this, '._submit')
  3437.     }
  3438.   }),
  3439.   B.support.changeBubbles || (B.event.special.change = {
  3440.     setup: function () {
  3441.       if (Y.test(this.nodeName)) {
  3442.         if (this.type === 'checkbox' || this.type === 'radio') B.event.add(this, 'propertychange._change', function (e) {
  3443.           e.originalEvent.propertyName === 'checked' && (this._just_changed = !0)
  3444.         }),
  3445.         B.event.add(this, 'click._change', function (e) {
  3446.           this._just_changed && !e.isTrigger && (this._just_changed = !1, B.event.simulate('change', this, e, !0))
  3447.         });
  3448.         return !1
  3449.       }
  3450.       B.event.add(this, 'beforeactivate._change', function (e) {
  3451.         var t = e.target;
  3452.         Y.test(t.nodeName) && !t._change_attached && (B.event.add(t, 'change._change', function (e) {
  3453.           this.parentNode && !e.isSimulated && !e.isTrigger && B.event.simulate('change', this.parentNode, e, !0)
  3454.         }), t._change_attached = !0)
  3455.       })
  3456.     },
  3457.     handle: function (e) {
  3458.       var t = e.target;
  3459.       if (this !== t || e.isSimulated || e.isTrigger || t.type !== 'radio' && t.type !== 'checkbox') return e.handleObj.handler.apply(this, arguments)
  3460.     },
  3461.     teardown: function () {
  3462.       return B.event.remove(this, '._change'),
  3463.       Y.test(this.nodeName)
  3464.     }
  3465.   }),
  3466.   B.support.focusinBubbles || B.each({
  3467.     focus: 'focusin',
  3468.     blur: 'focusout'
  3469.   }, function (e, t) {
  3470.     var n = 0,
  3471.     r = function (e) {
  3472.       B.event.simulate(t, e.target, B.event.fix(e), !0)
  3473.     };
  3474.     B.event.special[t] = {
  3475.       setup: function () {
  3476.         n++ === 0 && D.addEventListener(e, r, !0)
  3477.       },
  3478.       teardown: function () {
  3479.         --n === 0 && D.removeEventListener(e, r, !0)
  3480.       }
  3481.     }
  3482.   }),
  3483.   B.fn.extend({
  3484.     on: function (e, n, r, i, s) {
  3485.       var o,
  3486.       u;
  3487.       if (typeof e == 'object') {
  3488.         typeof n != 'string' && (r = n, n = t);
  3489.         for (u in e) this.on(u, n, r, e[u], s);
  3490.         return this
  3491.       }
  3492.       r == null && i == null ? (i = n, r = n = t)  : i == null && (typeof n == 'string' ? (i = r, r = t)  : (i = r, r = n, n = t));
  3493.       if (i === !1) i = L;
  3494.        else if (!i) return this;
  3495.       return s === 1 && (o = i, i = function (e) {
  3496.         return B().off(e),
  3497.         o.apply(this, arguments)
  3498.       }, i.guid = o.guid || (o.guid = B.guid++)),
  3499.       this.each(function () {
  3500.         B.event.add(this, e, i, r, n)
  3501.       })
  3502.     },
  3503.     one: function (e, t, n, r) {
  3504.       return this.on.call(this, e, t, n, r, 1)
  3505.     },
  3506.     off: function (e, n, r) {
  3507.       if (e && e.preventDefault && e.handleObj) {
  3508.         var i = e.handleObj;
  3509.         return B(e.delegateTarget).off(i.namespace ? i.type + '.' + i.namespace : i.type, i.selector, i.handler),
  3510.         this
  3511.       }
  3512.       if (typeof e == 'object') {
  3513.         for (var s in e) this.off(s, n, e[s]);
  3514.         return this
  3515.       }
  3516.       if (n === !1 || typeof n == 'function') r = n,
  3517.       n = t;
  3518.       return r === !1 && (r = L),
  3519.       this.each(function () {
  3520.         B.event.remove(this, e, r, n)
  3521.       })
  3522.     },
  3523.     bind: function (e, t, n) {
  3524.       return this.on(e, null, t, n)
  3525.     },
  3526.     unbind: function (e, t) {
  3527.       return this.off(e, null, t)
  3528.     },
  3529.     live: function (e, t, n) {
  3530.       return B(this.context).on(e, this.selector, t, n),
  3531.       this
  3532.     },
  3533.     die: function (e, t) {
  3534.       return B(this.context).off(e, this.selector || '**', t),
  3535.       this
  3536.     },
  3537.     delegate: function (e, t, n, r) {
  3538.       return this.on(t, e, n, r)
  3539.     },
  3540.     undelegate: function (e, t, n) {
  3541.       return arguments.length == 1 ? this.off(e, '**')  : this.off(t, e, n)
  3542.     },
  3543.     trigger: function (e, t) {
  3544.       return this.each(function () {
  3545.         B.event.trigger(e, t, this)
  3546.       })
  3547.     },
  3548.     triggerHandler: function (e, t) {
  3549.       if (this[0]) return B.event.trigger(e, t, this[0], !0)
  3550.     },
  3551.     toggle: function (e) {
  3552.       var t = arguments,
  3553.       n = e.guid || B.guid++,
  3554.       r = 0,
  3555.       i = function (n) {
  3556.         var i = (B._data(this, 'lastToggle' + e.guid) || 0) % r;
  3557.         return B._data(this, 'lastToggle' + e.guid, i + 1),
  3558.         n.preventDefault(),
  3559.         t[i].apply(this, arguments) || !1
  3560.       };
  3561.       i.guid = n;
  3562.       while (r < t.length) t[r++].guid = n;
  3563.       return this.click(i)
  3564.     },
  3565.     hover: function (e, t) {
  3566.       return this.mouseenter(e).mouseleave(t || e)
  3567.     }
  3568.   }),
  3569.   B.each('blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu'.split(' '), function (e, t) {
  3570.     B.fn[t] = function (e, n) {
  3571.       return n == null && (n = e, e = null),
  3572.       arguments.length > 0 ? this.on(t, null, e, n)  : this.trigger(t)
  3573.     },
  3574.     B.attrFn && (B.attrFn[t] = !0),
  3575.     tt.test(t) && (B.event.fixHooks[t] = B.event.keyHooks),
  3576.     nt.test(t) && (B.event.fixHooks[t] = B.event.mouseHooks)
  3577.   }),
  3578.   function () {
  3579.     function e(e, t, n, r, s, o) {
  3580.       for (var u = 0, a = r.length; u < a; u++) {
  3581.         var f = r[u];
  3582.         if (f) {
  3583.           var l = !1;
  3584.           f = f[e];
  3585.           while (f) {
  3586.             if (f[i] === n) {
  3587.               l = r[f.sizset];
  3588.               break
  3589.             }
  3590.             if (f.nodeType === 1) {
  3591.               o || (f[i] = n, f.sizset = u);
  3592.               if (typeof t != 'string') {
  3593.                 if (f === t) {
  3594.                   l = !0;
  3595.                   break
  3596.                 }
  3597.               } else if (h.filter(t, [
  3598.                 f
  3599.               ]).length > 0) {
  3600.                 l = f;
  3601.                 break
  3602.               }
  3603.             }
  3604.             f = f[e]
  3605.           }
  3606.           r[u] = l
  3607.         }
  3608.       }
  3609.     }
  3610.     function n(e, t, n, r, s, o) {
  3611.       for (var u = 0, a = r.length; u < a; u++) {
  3612.         var f = r[u];
  3613.         if (f) {
  3614.           var l = !1;
  3615.           f = f[e];
  3616.           while (f) {
  3617.             if (f[i] === n) {
  3618.               l = r[f.sizset];
  3619.               break
  3620.             }
  3621.             f.nodeType === 1 && !o && (f[i] = n, f.sizset = u);
  3622.             if (f.nodeName.toLowerCase() === t) {
  3623.               l = f;
  3624.               break
  3625.             }
  3626.             f = f[e]
  3627.           }
  3628.           r[u] = l
  3629.         }
  3630.       }
  3631.     }
  3632.     var r = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
  3633.     i = 'sizcache' + (Math.random() + '').replace('.', ''),
  3634.     s = 0,
  3635.     o = Object.prototype.toString,
  3636.     u = !1,
  3637.     a = !0,
  3638.     f = /\\/g,
  3639.     l = /\r\n/g,
  3640.     c = /\W/;
  3641.     [
  3642.       0,
  3643.       0
  3644.     ].sort(function () {
  3645.       return a = !1,
  3646.       0
  3647.     });
  3648.     var h = function (e, t, n, i) {
  3649.       n = n || [
  3650.       ],
  3651.       t = t || D;
  3652.       var s = t;
  3653.       if (t.nodeType !== 1 && t.nodeType !== 9) return [];
  3654.       if (!e || typeof e != 'string') return n;
  3655.       var u,
  3656.       a,
  3657.       f,
  3658.       l,
  3659.       c,
  3660.       p,
  3661.       m,
  3662.       g,
  3663.       b = !0,
  3664.       w = h.isXML(t),
  3665.       E = [
  3666.       ],
  3667.       x = e;
  3668.       do {
  3669.         r.exec(''),
  3670.         u = r.exec(x);
  3671.         if (u) {
  3672.           x = u[3],
  3673.           E.push(u[1]);
  3674.           if (u[2]) {
  3675.             l = u[3];
  3676.             break
  3677.           }
  3678.         }
  3679.       } while (u);
  3680.       if (E.length > 1 && v.exec(e)) if (E.length === 2 && d.relative[E[0]]) a = S(E[0] + E[1], t, i);
  3681.        else {
  3682.         a = d.relative[E[0]] ? [
  3683.           t
  3684.         ] : h(E.shift(), t);
  3685.         while (E.length) e = E.shift(),
  3686.         d.relative[e] && (e += E.shift()),
  3687.         a = S(e, a, i)
  3688.       } else {
  3689.         !i && E.length > 1 && t.nodeType === 9 && !w && d.match.ID.test(E[0]) && !d.match.ID.test(E[E.length - 1]) && (c = h.find(E.shift(), t, w), t = c.expr ? h.filter(c.expr, c.set) [0] : c.set[0]);
  3690.         if (t) {
  3691.           c = i ? {
  3692.             expr: E.pop(),
  3693.             set: y(i)
  3694.           }
  3695.            : h.find(E.pop(), E.length !== 1 || E[0] !== '~' && E[0] !== '+' || !t.parentNode ? t : t.parentNode, w),
  3696.           a = c.expr ? h.filter(c.expr, c.set)  : c.set,
  3697.           E.length > 0 ? f = y(a)  : b = !1;
  3698.           while (E.length) p = E.pop(),
  3699.           m = p,
  3700.           d.relative[p] ? m = E.pop()  : p = '',
  3701.           m == null && (m = t),
  3702.           d.relative[p](f, m, w)
  3703.         } else f = E = [
  3704.         ]
  3705.       }
  3706.       f || (f = a),
  3707.       f || h.error(p || e);
  3708.       if (o.call(f) === '[object Array]') if (!b) n.push.apply(n, f);
  3709.        else if (t && t.nodeType === 1) for (g = 0; f[g] != null; g++) f[g] && (f[g] === !0 || f[g].nodeType === 1 && h.contains(t, f[g])) && n.push(a[g]);
  3710.        else for (g = 0; f[g] != null; g++) f[g] && f[g].nodeType === 1 && n.push(a[g]);
  3711.        else y(f, n);
  3712.       return l && (h(l, s, n, i), h.uniqueSort(n)),
  3713.       n
  3714.     };
  3715.     h.uniqueSort = function (e) {
  3716.       if (w) {
  3717.         u = a,
  3718.         e.sort(w);
  3719.         if (u) for (var t = 1; t < e.length; t++) e[t] === e[t - 1] && e.splice(t--, 1)
  3720.       }
  3721.       return e
  3722.     },
  3723.     h.matches = function (e, t) {
  3724.       return h(e, null, null, t)
  3725.     },
  3726.     h.matchesSelector = function (e, t) {
  3727.       return h(t, null, null, [
  3728.         e
  3729.       ]).length > 0
  3730.     },
  3731.     h.find = function (e, t, n) {
  3732.       var r,
  3733.       i,
  3734.       s,
  3735.       o,
  3736.       u,
  3737.       a;
  3738.       if (!e) return [];
  3739.       for (i = 0, s = d.order.length; i < s; i++) {
  3740.         u = d.order[i];
  3741.         if (o = d.leftMatch[u].exec(e)) {
  3742.           a = o[1],
  3743.           o.splice(1, 1);
  3744.           if (a.substr(a.length - 1) !== '\\') {
  3745.             o[1] = (o[1] || '').replace(f, ''),
  3746.             r = d.find[u](o, t, n);
  3747.             if (r != null) {
  3748.               e = e.replace(d.match[u], '');
  3749.               break
  3750.             }
  3751.           }
  3752.         }
  3753.       }
  3754.       return r || (r = typeof t.getElementsByTagName != 'undefined' ? t.getElementsByTagName('*')  : [
  3755.       ]),
  3756.       {
  3757.         set: r,
  3758.         expr: e
  3759.       }
  3760.     },
  3761.     h.filter = function (e, n, r, i) {
  3762.       var s,
  3763.       o,
  3764.       u,
  3765.       a,
  3766.       f,
  3767.       l,
  3768.       c,
  3769.       p,
  3770.       v,
  3771.       m = e,
  3772.       g = [
  3773.       ],
  3774.       y = n,
  3775.       b = n && n[0] && h.isXML(n[0]);
  3776.       while (e && n.length) {
  3777.         for (u in d.filter) if ((s = d.leftMatch[u].exec(e)) != null && s[2]) {
  3778.           l = d.filter[u],
  3779.           c = s[1],
  3780.           o = !1,
  3781.           s.splice(1, 1);
  3782.           if (c.substr(c.length - 1) === '\\') continue;
  3783.           y === g && (g = [
  3784.           ]);
  3785.           if (d.preFilter[u]) {
  3786.             s = d.preFilter[u](s, y, r, g, i, b);
  3787.             if (!s) o = a = !0;
  3788.              else if (s === !0) continue
  3789.           }
  3790.           if (s) for (p = 0; (f = y[p]) != null; p++) f && (a = l(f, s, p, y), v = i ^ a, r && a != null ? v ? o = !0 : y[p] = !1 : v && (g.push(f), o = !0));
  3791.           if (a !== t) {
  3792.             r || (y = g),
  3793.             e = e.replace(d.match[u], '');
  3794.             if (!o) return [];
  3795.             break
  3796.           }
  3797.         }
  3798.         if (e === m) {
  3799.           if (o != null) break;
  3800.           h.error(e)
  3801.         }
  3802.         m = e
  3803.       }
  3804.       return y
  3805.     },
  3806.     h.error = function (e) {
  3807.       throw new Error('Syntax error, unrecognized expression: ' + e)
  3808.     };
  3809.     var p = h.getText = function (e) {
  3810.       var t,
  3811.       n,
  3812.       r = e.nodeType,
  3813.       i = '';
  3814.       if (r) {
  3815.         if (r === 1 || r === 9) {
  3816.           if (typeof e.textContent == 'string') return e.textContent;
  3817.           if (typeof e.innerText == 'string') return e.innerText.replace(l, '');
  3818.           for (e = e.firstChild; e; e = e.nextSibling) i += p(e)
  3819.         } else if (r === 3 || r === 4) return e.nodeValue
  3820.       } else for (t = 0; n = e[t]; t++) n.nodeType !== 8 && (i += p(n));
  3821.       return i
  3822.     },
  3823.     d = h.selectors = {
  3824.       order: [
  3825.         'ID',
  3826.         'NAME',
  3827.         'TAG'
  3828.       ],
  3829.       match: {
  3830.         ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
  3831.         CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
  3832.         NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
  3833.         ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
  3834.         TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
  3835.         CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
  3836.         POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
  3837.         PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
  3838.       },
  3839.       leftMatch: {
  3840.       },
  3841.       attrMap: {
  3842.         'class': 'className',
  3843.         'for': 'htmlFor'
  3844.       },
  3845.       attrHandle: {
  3846.         href: function (e) {
  3847.           return e.getAttribute('href')
  3848.         },
  3849.         type: function (e) {
  3850.           return e.getAttribute('type')
  3851.         }
  3852.       },
  3853.       relative: {
  3854.         '+': function (e, t) {
  3855.           var n = typeof t == 'string',
  3856.           r = n && !c.test(t),
  3857.           i = n && !r;
  3858.           r && (t = t.toLowerCase());
  3859.           for (var s = 0, o = e.length, u; s < o; s++) if (u = e[s]) {
  3860.             while ((u = u.previousSibling) && u.nodeType !== 1);
  3861.             e[s] = i || u && u.nodeName.toLowerCase() === t ? u || !1 : u === t
  3862.           }
  3863.           i && h.filter(t, e, !0)
  3864.         },
  3865.         '>': function (e, t) {
  3866.           var n,
  3867.           r = typeof t == 'string',
  3868.           i = 0,
  3869.           s = e.length;
  3870.           if (r && !c.test(t)) {
  3871.             t = t.toLowerCase();
  3872.             for (; i < s; i++) {
  3873.               n = e[i];
  3874.               if (n) {
  3875.                 var o = n.parentNode;
  3876.                 e[i] = o.nodeName.toLowerCase() === t ? o : !1
  3877.               }
  3878.             }
  3879.           } else {
  3880.             for (; i < s; i++) n = e[i],
  3881.             n && (e[i] = r ? n.parentNode : n.parentNode === t);
  3882.             r && h.filter(t, e, !0)
  3883.           }
  3884.         },
  3885.         '': function (t, r, i) {
  3886.           var o,
  3887.           u = s++,
  3888.           a = e;
  3889.           typeof r == 'string' && !c.test(r) && (r = r.toLowerCase(), o = r, a = n),
  3890.           a('parentNode', r, u, t, o, i)
  3891.         },
  3892.         '~': function (t, r, i) {
  3893.           var o,
  3894.           u = s++,
  3895.           a = e;
  3896.           typeof r == 'string' && !c.test(r) && (r = r.toLowerCase(), o = r, a = n),
  3897.           a('previousSibling', r, u, t, o, i)
  3898.         }
  3899.       },
  3900.       find: {
  3901.         ID: function (e, t, n) {
  3902.           if (typeof t.getElementById != 'undefined' && !n) {
  3903.             var r = t.getElementById(e[1]);
  3904.             return r && r.parentNode ? [
  3905.               r
  3906.             ] : [
  3907.             ]
  3908.           }
  3909.         },
  3910.         NAME: function (e, t) {
  3911.           if (typeof t.getElementsByName != 'undefined') {
  3912.             var n = [
  3913.             ],
  3914.             r = t.getElementsByName(e[1]);
  3915.             for (var i = 0, s = r.length; i < s; i++) r[i].getAttribute('name') === e[1] && n.push(r[i]);
  3916.             return n.length === 0 ? null : n
  3917.           }
  3918.         },
  3919.         TAG: function (e, t) {
  3920.           if (typeof t.getElementsByTagName != 'undefined') return t.getElementsByTagName(e[1])
  3921.         }
  3922.       },
  3923.       preFilter: {
  3924.         CLASS: function (e, t, n, r, i, s) {
  3925.           e = ' ' + e[1].replace(f, '') + ' ';
  3926.           if (s) return e;
  3927.           for (var o = 0, u; (u = t[o]) != null; o++) u && (i ^ (u.className && (' ' + u.className + ' ').replace(/[\t\n\r]/g, ' ').indexOf(e) >= 0) ? n || r.push(u)  : n && (t[o] = !1));
  3928.           return !1
  3929.         },
  3930.         ID: function (e) {
  3931.           return e[1].replace(f, '')
  3932.         },
  3933.         TAG: function (e, t) {
  3934.           return e[1].replace(f, '').toLowerCase()
  3935.         },
  3936.         CHILD: function (e) {
  3937.           if (e[1] === 'nth') {
  3938.             e[2] || h.error(e[0]),
  3939.             e[2] = e[2].replace(/^\+|\s*/g, '');
  3940.             var t = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2] === 'even' && '2n' || e[2] === 'odd' && '2n+1' || !/\D/.test(e[2]) && '0n+' + e[2] || e[2]);
  3941.             e[2] = t[1] + (t[2] || 1) - 0,
  3942.             e[3] = t[3] - 0
  3943.           } else e[2] && h.error(e[0]);
  3944.           return e[0] = s++,
  3945.           e
  3946.         },
  3947.         ATTR: function (e, t, n, r, i, s) {
  3948.           var o = e[1] = e[1].replace(f, '');
  3949.           return !s && d.attrMap[o] && (e[1] = d.attrMap[o]),
  3950.           e[4] = (e[4] || e[5] || '').replace(f, ''),
  3951.           e[2] === '~=' && (e[4] = ' ' + e[4] + ' '),
  3952.           e
  3953.         },
  3954.         PSEUDO: function (e, t, n, i, s) {
  3955.           if (e[1] === 'not') {
  3956.             if (!((r.exec(e[3]) || '').length > 1 || /^\w/.test(e[3]))) {
  3957.               var o = h.filter(e[3], t, n, !0 ^ s);
  3958.               return n || i.push.apply(i, o),
  3959.               !1
  3960.             }
  3961.             e[3] = h(e[3], null, null, t)
  3962.           } else if (d.match.POS.test(e[0]) || d.match.CHILD.test(e[0])) return !0;
  3963.           return e
  3964.         },
  3965.         POS: function (e) {
  3966.           return e.unshift(!0),
  3967.           e
  3968.         }
  3969.       },
  3970.       filters: {
  3971.         enabled: function (e) {
  3972.           return e.disabled === !1 && e.type !== 'hidden'
  3973.         },
  3974.         disabled: function (e) {
  3975.           return e.disabled === !0
  3976.         },
  3977.         checked: function (e) {
  3978.           return e.checked === !0
  3979.         },
  3980.         selected: function (e) {
  3981.           return e.parentNode && e.parentNode.selectedIndex,
  3982.           e.selected === !0
  3983.         },
  3984.         parent: function (e) {
  3985.           return !!e.firstChild
  3986.         },
  3987.         empty: function (e) {
  3988.           return !e.firstChild
  3989.         },
  3990.         has: function (e, t, n) {
  3991.           return !!h(n[3], e).length
  3992.         },
  3993.         header: function (e) {
  3994.           return /h\d/i.test(e.nodeName)
  3995.         },
  3996.         text: function (e) {
  3997.           var t = e.getAttribute('type'),
  3998.           n = e.type;
  3999.           return e.nodeName.toLowerCase() === 'input' && 'text' === n && (t === n || t === null)
  4000.         },
  4001.         radio: function (e) {
  4002.           return e.nodeName.toLowerCase() === 'input' && 'radio' === e.type
  4003.         },
  4004.         checkbox: function (e) {
  4005.           return e.nodeName.toLowerCase() === 'input' && 'checkbox' === e.type
  4006.         },
  4007.         file: function (e) {
  4008.           return e.nodeName.toLowerCase() === 'input' && 'file' === e.type
  4009.         },
  4010.         password: function (e) {
  4011.           return e.nodeName.toLowerCase() === 'input' && 'password' === e.type
  4012.         },
  4013.         submit: function (e) {
  4014.           var t = e.nodeName.toLowerCase();
  4015.           return (t === 'input' || t === 'button') && 'submit' === e.type
  4016.         },
  4017.         image: function (e) {
  4018.           return e.nodeName.toLowerCase() === 'input' && 'image' === e.type
  4019.         },
  4020.         reset: function (e) {
  4021.           var t = e.nodeName.toLowerCase();
  4022.           return (t === 'input' || t === 'button') && 'reset' === e.type
  4023.         },
  4024.         button: function (e) {
  4025.           var t = e.nodeName.toLowerCase();
  4026.           return t === 'input' && 'button' === e.type || t === 'button'
  4027.         },
  4028.         input: function (e) {
  4029.           return /input|select|textarea|button/i.test(e.nodeName)
  4030.         },
  4031.         focus: function (e) {
  4032.           return e === e.ownerDocument.activeElement
  4033.         }
  4034.       },
  4035.       setFilters: {
  4036.         first: function (e, t) {
  4037.           return t === 0
  4038.         },
  4039.         last: function (e, t, n, r) {
  4040.           return t === r.length - 1
  4041.         },
  4042.         even: function (e, t) {
  4043.           return t % 2 === 0
  4044.         },
  4045.         odd: function (e, t) {
  4046.           return t % 2 === 1
  4047.         },
  4048.         lt: function (e, t, n) {
  4049.           return t < n[3] - 0
  4050.         },
  4051.         gt: function (e, t, n) {
  4052.           return t > n[3] - 0
  4053.         },
  4054.         nth: function (e, t, n) {
  4055.           return n[3] - 0 === t
  4056.         },
  4057.         eq: function (e, t, n) {
  4058.           return n[3] - 0 === t
  4059.         }
  4060.       },
  4061.       filter: {
  4062.         PSEUDO: function (e, t, n, r) {
  4063.           var i = t[1],
  4064.           s = d.filters[i];
  4065.           if (s) return s(e, n, t, r);
  4066.           if (i === 'contains') return (e.textContent || e.innerText || p([e]) || '').indexOf(t[3]) >= 0;
  4067.           if (i === 'not') {
  4068.             var o = t[3];
  4069.             for (var u = 0, a = o.length; u < a; u++) if (o[u] === e) return !1;
  4070.             return !0
  4071.           }
  4072.           h.error(i)
  4073.         },
  4074.         CHILD: function (e, t) {
  4075.           var n,
  4076.           r,
  4077.           s,
  4078.           o,
  4079.           u,
  4080.           a,
  4081.           f,
  4082.           l = t[1],
  4083.           c = e;
  4084.           switch (l) {
  4085.             case 'only':
  4086.             case 'first':
  4087.               while (c = c.previousSibling) if (c.nodeType === 1) return !1;
  4088.               if (l === 'first') return !0;
  4089.               c = e;
  4090.             case 'last':
  4091.               while (c = c.nextSibling) if (c.nodeType === 1) return !1;
  4092.               return !0;
  4093.             case 'nth':
  4094.               n = t[2],
  4095.               r = t[3];
  4096.               if (n === 1 && r === 0) return !0;
  4097.               s = t[0],
  4098.               o = e.parentNode;
  4099.               if (o && (o[i] !== s || !e.nodeIndex)) {
  4100.                 a = 0;
  4101.                 for (c = o.firstChild; c; c = c.nextSibling) c.nodeType === 1 && (c.nodeIndex = ++a);
  4102.                 o[i] = s
  4103.               }
  4104.               return f = e.nodeIndex - r,
  4105.               n === 0 ? f === 0 : f % n === 0 && f / n >= 0
  4106.           }
  4107.         },
  4108.         ID: function (e, t) {
  4109.           return e.nodeType === 1 && e.getAttribute('id') === t
  4110.         },
  4111.         TAG: function (e, t) {
  4112.           return t === '*' && e.nodeType === 1 || !!e.nodeName && e.nodeName.toLowerCase() === t
  4113.         },
  4114.         CLASS: function (e, t) {
  4115.           return (' ' + (e.className || e.getAttribute('class')) + ' ').indexOf(t) > - 1
  4116.         },
  4117.         ATTR: function (e, t) {
  4118.           var n = t[1],
  4119.           r = h.attr ? h.attr(e, n)  : d.attrHandle[n] ? d.attrHandle[n](e)  : e[n] != null ? e[n] : e.getAttribute(n),
  4120.           i = r + '',
  4121.           s = t[2],
  4122.           o = t[4];
  4123.           return r == null ? s === '!=' : !s && h.attr ? r != null : s === '=' ? i === o : s === '*=' ? i.indexOf(o) >= 0 : s === '~=' ? (' ' + i + ' ').indexOf(o) >= 0 : o ? s === '!=' ? i !== o : s === '^=' ? i.indexOf(o) === 0 : s === '$=' ? i.substr(i.length - o.length) === o : s === '|=' ? i === o || i.substr(0, o.length + 1) === o + '-' : !1 : i && r !== !1
  4124.         },
  4125.         POS: function (e, t, n, r) {
  4126.           var i = t[2],
  4127.           s = d.setFilters[i];
  4128.           if (s) return s(e, n, t, r)
  4129.         }
  4130.       }
  4131.     },
  4132.     v = d.match.POS,
  4133.     m = function (e, t) {
  4134.       return '\\' + (t - 0 + 1)
  4135.     };
  4136.     for (var g in d.match) d.match[g] = new RegExp(d.match[g].source + /(?![^\[]*\])(?![^\(]*\))/.source),
  4137.     d.leftMatch[g] = new RegExp(/(^(?:.|\r|\n)*?)/.source + d.match[g].source.replace(/\\(\d+)/g, m));
  4138.     var y = function (e, t) {
  4139.       return e = Array.prototype.slice.call(e, 0),
  4140.       t ? (t.push.apply(t, e), t)  : e
  4141.     };
  4142.     try {
  4143.       Array.prototype.slice.call(D.documentElement.childNodes, 0) [0].nodeType
  4144.     } catch (b) {
  4145.       y = function (e, t) {
  4146.         var n = 0,
  4147.         r = t || [
  4148.         ];
  4149.         if (o.call(e) === '[object Array]') Array.prototype.push.apply(r, e);
  4150.          else if (typeof e.length == 'number') for (var i = e.length; n < i; n++) r.push(e[n]);
  4151.          else for (; e[n]; n++) r.push(e[n]);
  4152.         return r
  4153.       }
  4154.     }
  4155.     var w,
  4156.     E;
  4157.     D.documentElement.compareDocumentPosition ? w = function (e, t) {
  4158.       return e === t ? (u = !0, 0)  : !e.compareDocumentPosition || !t.compareDocumentPosition ? e.compareDocumentPosition ? - 1 : 1 : e.compareDocumentPosition(t) & 4 ? - 1 : 1
  4159.     }
  4160.      : (w = function (e, t) {
  4161.       if (e === t) return u = !0,
  4162.       0;
  4163.       if (e.sourceIndex && t.sourceIndex) return e.sourceIndex - t.sourceIndex;
  4164.       var n,
  4165.       r,
  4166.       i = [
  4167.       ],
  4168.       s = [
  4169.       ],
  4170.       o = e.parentNode,
  4171.       a = t.parentNode,
  4172.       f = o;
  4173.       if (o === a) return E(e, t);
  4174.       if (!o) return - 1;
  4175.       if (!a) return 1;
  4176.       while (f) i.unshift(f),
  4177.       f = f.parentNode;
  4178.       f = a;
  4179.       while (f) s.unshift(f),
  4180.       f = f.parentNode;
  4181.       n = i.length,
  4182.       r = s.length;
  4183.       for (var l = 0; l < n && l < r; l++) if (i[l] !== s[l]) return E(i[l], s[l]);
  4184.       return l === n ? E(e, s[l], - 1)  : E(i[l], t, 1)
  4185.     }, E = function (e, t, n) {
  4186.       if (e === t) return n;
  4187.       var r = e.nextSibling;
  4188.       while (r) {
  4189.         if (r === t) return - 1;
  4190.         r = r.nextSibling
  4191.       }
  4192.       return 1
  4193.     }),
  4194.     function () {
  4195.       var e = D.createElement('div'),
  4196.       n = 'script' + (new Date).getTime(),
  4197.       r = D.documentElement;
  4198.       e.innerHTML = '<a name=\'' + n + '\'/>',
  4199.       r.insertBefore(e, r.firstChild),
  4200.       D.getElementById(n) && (d.find.ID = function (e, n, r) {
  4201.         if (typeof n.getElementById != 'undefined' && !r) {
  4202.           var i = n.getElementById(e[1]);
  4203.           return i ? i.id === e[1] || typeof i.getAttributeNode != 'undefined' && i.getAttributeNode('id').nodeValue === e[1] ? [
  4204.             i
  4205.           ] : t : [
  4206.           ]
  4207.         }
  4208.       }, d.filter.ID = function (e, t) {
  4209.         var n = typeof e.getAttributeNode != 'undefined' && e.getAttributeNode('id');
  4210.         return e.nodeType === 1 && n && n.nodeValue === t
  4211.       }),
  4212.       r.removeChild(e),
  4213.       r = e = null
  4214.     }(),
  4215.     function () {
  4216.       var e = D.createElement('div');
  4217.       e.appendChild(D.createComment('')),
  4218.       e.getElementsByTagName('*').length > 0 && (d.find.TAG = function (e, t) {
  4219.         var n = t.getElementsByTagName(e[1]);
  4220.         if (e[1] === '*') {
  4221.           var r = [
  4222.           ];
  4223.           for (var i = 0; n[i]; i++) n[i].nodeType === 1 && r.push(n[i]);
  4224.           n = r
  4225.         }
  4226.         return n
  4227.       }),
  4228.       e.innerHTML = '<a href=\'#\'></a>',
  4229.       e.firstChild && typeof e.firstChild.getAttribute != 'undefined' && e.firstChild.getAttribute('href') !== '#' && (d.attrHandle.href = function (e) {
  4230.         return e.getAttribute('href', 2)
  4231.       }),
  4232.       e = null
  4233.     }(),
  4234.     D.querySelectorAll && function () {
  4235.       var e = h,
  4236.       t = D.createElement('div'),
  4237.       n = '__sizzle__';
  4238.       t.innerHTML = '<p class=\'TEST\'></p>';
  4239.       if (!t.querySelectorAll || t.querySelectorAll('.TEST').length !== 0) {
  4240.         h = function (t, r, i, s) {
  4241.           r = r || D;
  4242.           if (!s && !h.isXML(r)) {
  4243.             var o = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(t);
  4244.             if (o && (r.nodeType === 1 || r.nodeType === 9)) {
  4245.               if (o[1]) return y(r.getElementsByTagName(t), i);
  4246.               if (o[2] && d.find.CLASS && r.getElementsByClassName) return y(r.getElementsByClassName(o[2]), i)
  4247.             }
  4248.             if (r.nodeType === 9) {
  4249.               if (t === 'body' && r.body) return y([r.body], i);
  4250.               if (o && o[3]) {
  4251.                 var u = r.getElementById(o[3]);
  4252.                 if (!u || !u.parentNode) return y([], i);
  4253.                 if (u.id === o[3]) return y([u], i)
  4254.               }
  4255.               try {
  4256.                 return y(r.querySelectorAll(t), i)
  4257.               } catch (a) {
  4258.               }
  4259.             } else if (r.nodeType === 1 && r.nodeName.toLowerCase() !== 'object') {
  4260.               var f = r,
  4261.               l = r.getAttribute('id'),
  4262.               c = l || n,
  4263.               p = r.parentNode,
  4264.               v = /^\s*[+~]/.test(t);
  4265.               l ? c = c.replace(/'/g, '\\$&')  : r.setAttribute('id', c),
  4266.               v && p && (r = r.parentNode);
  4267.               try {
  4268.                 if (!v || p) return y(r.querySelectorAll('[id=\'' + c + '\'] ' + t), i)
  4269.               } catch (m) {
  4270.               } finally {
  4271.                 l || f.removeAttribute('id')
  4272.               }
  4273.             }
  4274.           }
  4275.           return e(t, r, i, s)
  4276.         };
  4277.         for (var r in e) h[r] = e[r];
  4278.         t = null
  4279.       }
  4280.     }(),
  4281.     function () {
  4282.       var e = D.documentElement,
  4283.       t = e.matchesSelector || e.mozMatchesSelector || e.webkitMatchesSelector || e.msMatchesSelector;
  4284.       if (t) {
  4285.         var n = !t.call(D.createElement('div'), 'div'),
  4286.         r = !1;
  4287.         try {
  4288.           t.call(D.documentElement, '[validate!=\'\']:sizzle')
  4289.         } catch (i) {
  4290.           r = !0
  4291.         }
  4292.         h.matchesSelector = function (e, i) {
  4293.           i = i.replace(/\=\s*([^'"\]]*)\s*\]/g, '=\'$1\']');
  4294.           if (!h.isXML(e)) try {
  4295.             if (r || !d.match.PSEUDO.test(i) && !/!=/.test(i)) {
  4296.               var s = t.call(e, i);
  4297.               if (s || !n || e.document && e.document.nodeType !== 11) return s
  4298.             }
  4299.           } catch (o) {
  4300.           }
  4301.           return h(i, null, null, [
  4302.             e
  4303.           ]).length > 0
  4304.         }
  4305.       }
  4306.     }(),
  4307.     function () {
  4308.       var e = D.createElement('div');
  4309.       e.innerHTML = '<div class=\'validate e\'></div><div class=\'validate\'></div>';
  4310.       if (!!e.getElementsByClassName && e.getElementsByClassName('e').length !== 0) {
  4311.         e.lastChild.className = 'e';
  4312.         if (e.getElementsByClassName('e').length === 1) return;
  4313.         d.order.splice(1, 0, 'CLASS'),
  4314.         d.find.CLASS = function (e, t, n) {
  4315.           if (typeof t.getElementsByClassName != 'undefined' && !n) return t.getElementsByClassName(e[1])
  4316.         },
  4317.         e = null
  4318.       }
  4319.     }(),
  4320.     D.documentElement.contains ? h.contains = function (e, t) {
  4321.       return e !== t && (e.contains ? e.contains(t)  : !0)
  4322.     }
  4323.      : D.documentElement.compareDocumentPosition ? h.contains = function (e, t) {
  4324.       return !!(e.compareDocumentPosition(t) & 16)
  4325.     }
  4326.      : h.contains = function () {
  4327.       return !1
  4328.     },
  4329.     h.isXML = function (e) {
  4330.       var t = (e ? e.ownerDocument || e : 0).documentElement;
  4331.       return t ? t.nodeName !== 'HTML' : !1
  4332.     };
  4333.     var S = function (e, t, n) {
  4334.       var r,
  4335.       i = [
  4336.       ],
  4337.       s = '',
  4338.       o = t.nodeType ? [
  4339.         t
  4340.       ] : t;
  4341.       while (r = d.match.PSEUDO.exec(e)) s += r[0],
  4342.       e = e.replace(d.match.PSEUDO, '');
  4343.       e = d.relative[e] ? e + '*' : e;
  4344.       for (var u = 0, a = o.length; u < a; u++) h(e, o[u], i, n);
  4345.       return h.filter(s, i)
  4346.     };
  4347.     h.attr = B.attr,
  4348.     h.selectors.attrMap = {
  4349.     },
  4350.     B.find = h,
  4351.     B.expr = h.selectors,
  4352.     B.expr[':'] = B.expr.filters,
  4353.     B.unique = h.uniqueSort,
  4354.     B.text = h.getText,
  4355.     B.isXMLDoc = h.isXML,
  4356.     B.contains = h.contains
  4357.   }();
  4358.   var at = /Until$/,
  4359.   ft = /^(?:parents|prevUntil|prevAll)/,
  4360.   lt = /,/,
  4361.   ct = /^.[^:#\[\.,]*$/,
  4362.   ht = Array.prototype.slice,
  4363.   pt = B.expr.match.POS,
  4364.   dt = {
  4365.     children: !0,
  4366.     contents: !0,
  4367.     next: !0,
  4368.     prev: !0
  4369.   };
  4370.   B.fn.extend({
  4371.     find: function (e) {
  4372.       var t = this,
  4373.       n,
  4374.       r;
  4375.       if (typeof e != 'string') return B(e).filter(function () {
  4376.         for (n = 0, r = t.length; n < r; n++) if (B.contains(t[n], this)) return !0
  4377.       });
  4378.       var i = this.pushStack('', 'find', e),
  4379.       s,
  4380.       o,
  4381.       u;
  4382.       for (n = 0, r = this.length; n < r; n++) {
  4383.         s = i.length,
  4384.         B.find(e, this[n], i);
  4385.         if (n > 0) for (o = s; o < i.length; o++) for (u = 0; u < s; u++) if (i[u] === i[o]) {
  4386.           i.splice(o--, 1);
  4387.           break
  4388.         }
  4389.       }
  4390.       return i
  4391.     },
  4392.     has: function (e) {
  4393.       var t = B(e);
  4394.       return this.filter(function () {
  4395.         for (var e = 0, n = t.length; e < n; e++) if (B.contains(this, t[e])) return !0
  4396.       })
  4397.     },
  4398.     not: function (e) {
  4399.       return this.pushStack(N(this, e, !1), 'not', e)
  4400.     },
  4401.     filter: function (e) {
  4402.       return this.pushStack(N(this, e, !0), 'filter', e)
  4403.     },
  4404.     is: function (e) {
  4405.       return !!e && (typeof e == 'string' ? pt.test(e) ? B(e, this.context).index(this[0]) >= 0 : B.filter(e, this).length > 0 : this.filter(e).length > 0)
  4406.     },
  4407.     closest: function (e, t) {
  4408.       var n = [
  4409.       ],
  4410.       r,
  4411.       i,
  4412.       s = this[0];
  4413.       if (B.isArray(e)) {
  4414.         var o = 1;
  4415.         while (s && s.ownerDocument && s !== t) {
  4416.           for (r = 0; r < e.length; r++) B(s).is(e[r]) && n.push({
  4417.             selector: e[r],
  4418.             elem: s,
  4419.             level: o
  4420.           });
  4421.           s = s.parentNode,
  4422.           o++
  4423.         }
  4424.         return n
  4425.       }
  4426.       var u = pt.test(e) || typeof e != 'string' ? B(e, t || this.context)  : 0;
  4427.       for (r = 0, i = this.length; r < i; r++) {
  4428.         s = this[r];
  4429.         while (s) {
  4430.           if (u ? u.index(s) > - 1 : B.find.matchesSelector(s, e)) {
  4431.             n.push(s);
  4432.             break
  4433.           }
  4434.           s = s.parentNode;
  4435.           if (!s || !s.ownerDocument || s === t || s.nodeType === 11) break
  4436.         }
  4437.       }
  4438.       return n = n.length > 1 ? B.unique(n)  : n,
  4439.       this.pushStack(n, 'closest', e)
  4440.     },
  4441.     index: function (e) {
  4442.       return e ? typeof e == 'string' ? B.inArray(this[0], B(e))  : B.inArray(e.jquery ? e[0] : e, this)  : this[0] && this[0].parentNode ? this.prevAll().length : - 1
  4443.     },
  4444.     add: function (e, t) {
  4445.       var n = typeof e == 'string' ? B(e, t)  : B.makeArray(e && e.nodeType ? [
  4446.         e
  4447.       ] : e),
  4448.       r = B.merge(this.get(), n);
  4449.       return this.pushStack(C(n[0]) || C(r[0]) ? r : B.unique(r))
  4450.     },
  4451.     andSelf: function () {
  4452.       return this.add(this.prevObject)
  4453.     }
  4454.   }),
  4455.   B.each({
  4456.     parent: function (e) {
  4457.       var t = e.parentNode;
  4458.       return t && t.nodeType !== 11 ? t : null
  4459.     },
  4460.     parents: function (e) {
  4461.       return B.dir(e, 'parentNode')
  4462.     },
  4463.     parentsUntil: function (e, t, n) {
  4464.       return B.dir(e, 'parentNode', n)
  4465.     },
  4466.     next: function (e) {
  4467.       return B.nth(e, 2, 'nextSibling')
  4468.     },
  4469.     prev: function (e) {
  4470.       return B.nth(e, 2, 'previousSibling')
  4471.     },
  4472.     nextAll: function (e) {
  4473.       return B.dir(e, 'nextSibling')
  4474.     },
  4475.     prevAll: function (e) {
  4476.       return B.dir(e, 'previousSibling')
  4477.     },
  4478.     nextUntil: function (e, t, n) {
  4479.       return B.dir(e, 'nextSibling', n)
  4480.     },
  4481.     prevUntil: function (e, t, n) {
  4482.       return B.dir(e, 'previousSibling', n)
  4483.     },
  4484.     siblings: function (e) {
  4485.       return B.sibling(e.parentNode.firstChild, e)
  4486.     },
  4487.     children: function (e) {
  4488.       return B.sibling(e.firstChild)
  4489.     },
  4490.     contents: function (e) {
  4491.       return B.nodeName(e, 'iframe') ? e.contentDocument || e.contentWindow.document : B.makeArray(e.childNodes)
  4492.     }
  4493.   }, function (e, t) {
  4494.     B.fn[e] = function (n, r) {
  4495.       var i = B.map(this, t, n);
  4496.       return at.test(e) || (r = n),
  4497.       r && typeof r == 'string' && (i = B.filter(r, i)),
  4498.       i = this.length > 1 && !dt[e] ? B.unique(i)  : i,
  4499.       (this.length > 1 || lt.test(r)) && ft.test(e) && (i = i.reverse()),
  4500.       this.pushStack(i, e, ht.call(arguments).join(','))
  4501.     }
  4502.   }),
  4503.   B.extend({
  4504.     filter: function (e, t, n) {
  4505.       return n && (e = ':not(' + e + ')'),
  4506.       t.length === 1 ? B.find.matchesSelector(t[0], e) ? [
  4507.         t[0]
  4508.       ] : [
  4509.       ] : B.find.matches(e, t)
  4510.     },
  4511.     dir: function (e, n, r) {
  4512.       var i = [
  4513.       ],
  4514.       s = e[n];
  4515.       while (s && s.nodeType !== 9 && (r === t || s.nodeType !== 1 || !B(s).is(r))) s.nodeType === 1 && i.push(s),
  4516.       s = s[n];
  4517.       return i
  4518.     },
  4519.     nth: function (e, t, n, r) {
  4520.       t = t || 1;
  4521.       var i = 0;
  4522.       for (; e; e = e[n]) if (e.nodeType === 1 && ++i === t) break;
  4523.       return e
  4524.     },
  4525.     sibling: function (e, t) {
  4526.       var n = [
  4527.       ];
  4528.       for (; e; e = e.nextSibling) e.nodeType === 1 && e !== t && n.push(e);
  4529.       return n
  4530.     }
  4531.   });
  4532.   var vt = 'abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video',
  4533.   mt = / jQuery\d+="(?:\d+|null)"/g,
  4534.   gt = /^\s+/,
  4535.   yt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
  4536.   bt = /<([\w:]+)/,
  4537.   wt = /<tbody/i,
  4538.   Et = /<|&#?\w+;/,
  4539.   St = /<(?:script|style)/i,
  4540.   xt = /<(?:script|object|embed|option|style)/i,
  4541.   Tt = new RegExp('<(?:' + vt + ')', 'i'),
  4542.   Nt = /checked\s*(?:[^=]|=\s*.checked.)/i,
  4543.   Ct = /\/(java|ecma)script/i,
  4544.   kt = /^\s*<!(?:\[CDATA\[|\-\-)/,
  4545.   Lt = {
  4546.     option: [
  4547.       1,
  4548.       '<select multiple=\'multiple\'>',
  4549.       '</select>'
  4550.     ],
  4551.     legend: [
  4552.       1,
  4553.       '<fieldset>',
  4554.       '</fieldset>'
  4555.     ],
  4556.     thead: [
  4557.       1,
  4558.       '<table>',
  4559.       '</table>'
  4560.     ],
  4561.     tr: [
  4562.       2,
  4563.       '<table><tbody>',
  4564.       '</tbody></table>'
  4565.     ],
  4566.     td: [
  4567.       3,
  4568.       '<table><tbody><tr>',
  4569.       '</tr></tbody></table>'
  4570.     ],
  4571.     col: [
  4572.       2,
  4573.       '<table><tbody></tbody><colgroup>',
  4574.       '</colgroup></table>'
  4575.     ],
  4576.     area: [
  4577.       1,
  4578.       '<map>',
  4579.       '</map>'
  4580.     ],
  4581.     _default: [
  4582.       0,
  4583.       '',
  4584.       ''
  4585.     ]
  4586.   },
  4587.   At = T(D);
  4588.   Lt.optgroup = Lt.option,
  4589.   Lt.tbody = Lt.tfoot = Lt.colgroup = Lt.caption = Lt.thead,
  4590.   Lt.th = Lt.td,
  4591.   B.support.htmlSerialize || (Lt._default = [
  4592.     1,
  4593.     'div<div>',
  4594.     '</div>'
  4595.   ]),
  4596.   B.fn.extend({
  4597.     text: function (e) {
  4598.       return B.isFunction(e) ? this.each(function (t) {
  4599.         var n = B(this);
  4600.         n.text(e.call(this, t, n.text()))
  4601.       })  : typeof e != 'object' && e !== t ? this.empty().append((this[0] && this[0].ownerDocument || D).createTextNode(e))  : B.text(this)
  4602.     },
  4603.     wrapAll: function (e) {
  4604.       if (B.isFunction(e)) return this.each(function (t) {
  4605.         B(this).wrapAll(e.call(this, t))
  4606.       });
  4607.       if (this[0]) {
  4608.         var t = B(e, this[0].ownerDocument).eq(0).clone(!0);
  4609.         this[0].parentNode && t.insertBefore(this[0]),
  4610.         t.map(function () {
  4611.           var e = this;
  4612.           while (e.firstChild && e.firstChild.nodeType === 1) e = e.firstChild;
  4613.           return e
  4614.         }).append(this)
  4615.       }
  4616.       return this
  4617.     },
  4618.     wrapInner: function (e) {
  4619.       return B.isFunction(e) ? this.each(function (t) {
  4620.         B(this).wrapInner(e.call(this, t))
  4621.       })  : this.each(function () {
  4622.         var t = B(this),
  4623.         n = t.contents();
  4624.         n.length ? n.wrapAll(e)  : t.append(e)
  4625.       })
  4626.     },
  4627.     wrap: function (e) {
  4628.       var t = B.isFunction(e);
  4629.       return this.each(function (n) {
  4630.         B(this).wrapAll(t ? e.call(this, n)  : e)
  4631.       })
  4632.     },
  4633.     unwrap: function () {
  4634.       return this.parent().each(function () {
  4635.         B.nodeName(this, 'body') || B(this).replaceWith(this.childNodes)
  4636.       }).end()
  4637.     },
  4638.     append: function () {
  4639.       return this.domManip(arguments, !0, function (e) {
  4640.         this.nodeType === 1 && this.appendChild(e)
  4641.       })
  4642.     },
  4643.     prepend: function () {
  4644.       return this.domManip(arguments, !0, function (e) {
  4645.         this.nodeType === 1 && this.insertBefore(e, this.firstChild)
  4646.       })
  4647.     },
  4648.     before: function () {
  4649.       if (this[0] && this[0].parentNode) return this.domManip(arguments, !1, function (e) {
  4650.         this.parentNode.insertBefore(e, this)
  4651.       });
  4652.       if (arguments.length) {
  4653.         var e = B.clean(arguments);
  4654.         return e.push.apply(e, this.toArray()),
  4655.         this.pushStack(e, 'before', arguments)
  4656.       }
  4657.     },
  4658.     after: function () {
  4659.       if (this[0] && this[0].parentNode) return this.domManip(arguments, !1, function (e) {
  4660.         this.parentNode.insertBefore(e, this.nextSibling)
  4661.       });
  4662.       if (arguments.length) {
  4663.         var e = this.pushStack(this, 'after', arguments);
  4664.         return e.push.apply(e, B.clean(arguments)),
  4665.         e
  4666.       }
  4667.     },
  4668.     remove: function (e, t) {
  4669.       for (var n = 0, r; (r = this[n]) != null; n++) if (!e || B.filter(e, [
  4670.         r
  4671.       ]).length) !t && r.nodeType === 1 && (B.cleanData(r.getElementsByTagName('*')), B.cleanData([r])),
  4672.       r.parentNode && r.parentNode.removeChild(r);
  4673.       return this
  4674.     },
  4675.     empty: function () {
  4676.       for (var e = 0, t; (t = this[e]) != null; e++) {
  4677.         t.nodeType === 1 && B.cleanData(t.getElementsByTagName('*'));
  4678.         while (t.firstChild) t.removeChild(t.firstChild)
  4679.       }
  4680.       return this
  4681.     },
  4682.     clone: function (e, t) {
  4683.       return e = e == null ? !1 : e,
  4684.       t = t == null ? e : t,
  4685.       this.map(function () {
  4686.         return B.clone(this, e, t)
  4687.       })
  4688.     },
  4689.     html: function (e) {
  4690.       if (e === t) return this[0] && this[0].nodeType === 1 ? this[0].innerHTML.replace(mt, '')  : null;
  4691.       if (typeof e == 'string' && !St.test(e) && (B.support.leadingWhitespace || !gt.test(e)) && !Lt[(bt.exec(e) || [
  4692.         '',
  4693.         ''
  4694.       ]) [1].toLowerCase()]) {
  4695.         e = e.replace(yt, '<$1></$2>');
  4696.         try {
  4697.           for (var n = 0, r = this.length; n < r; n++) this[n].nodeType === 1 && (B.cleanData(this[n].getElementsByTagName('*')), this[n].innerHTML = e)
  4698.         } catch (i) {
  4699.           this.empty().append(e)
  4700.         }
  4701.       } else B.isFunction(e) ? this.each(function (t) {
  4702.         var n = B(this);
  4703.         n.html(e.call(this, t, n.html()))
  4704.       })  : this.empty().append(e);
  4705.       return this
  4706.     },
  4707.     replaceWith: function (e) {
  4708.       return this[0] && this[0].parentNode ? B.isFunction(e) ? this.each(function (t) {
  4709.         var n = B(this),
  4710.         r = n.html();
  4711.         n.replaceWith(e.call(this, t, r))
  4712.       })  : (typeof e != 'string' && (e = B(e).detach()), this.each(function () {
  4713.         var t = this.nextSibling,
  4714.         n = this.parentNode;
  4715.         B(this).remove(),
  4716.         t ? B(t).before(e)  : B(n).append(e)
  4717.       }))  : this.length ? this.pushStack(B(B.isFunction(e) ? e()  : e), 'replaceWith', e)  : this
  4718.     },
  4719.     detach: function (e) {
  4720.       return this.remove(e, !0)
  4721.     },
  4722.     domManip: function (e, n, r) {
  4723.       var i,
  4724.       s,
  4725.       o,
  4726.       u,
  4727.       a = e[0],
  4728.       f = [
  4729.       ];
  4730.       if (!B.support.checkClone && arguments.length === 3 && typeof a == 'string' && Nt.test(a)) return this.each(function () {
  4731.         B(this).domManip(e, n, r, !0)
  4732.       });
  4733.       if (B.isFunction(a)) return this.each(function (i) {
  4734.         var s = B(this);
  4735.         e[0] = a.call(this, i, n ? s.html()  : t),
  4736.         s.domManip(e, n, r)
  4737.       });
  4738.       if (this[0]) {
  4739.         u = a && a.parentNode,
  4740.         B.support.parentNode && u && u.nodeType === 11 && u.childNodes.length === this.length ? i = {
  4741.           fragment: u
  4742.         }
  4743.          : i = B.buildFragment(e, this, f),
  4744.         o = i.fragment,
  4745.         o.childNodes.length === 1 ? s = o = o.firstChild : s = o.firstChild;
  4746.         if (s) {
  4747.           n = n && B.nodeName(s, 'tr');
  4748.           for (var l = 0, c = this.length, h = c - 1; l < c; l++) r.call(n ? x(this[l], s)  : this[l], i.cacheable || c > 1 && l < h ? B.clone(o, !0, !0)  : o)
  4749.         }
  4750.         f.length && B.each(f, m)
  4751.       }
  4752.       return this
  4753.     }
  4754.   }),
  4755.   B.buildFragment = function (e, t, n) {
  4756.     var r,
  4757.     i,
  4758.     s,
  4759.     o,
  4760.     u = e[0];
  4761.     return t && t[0] && (o = t[0].ownerDocument || t[0]),
  4762.     o.createDocumentFragment || (o = D),
  4763.     e.length === 1 && typeof u == 'string' && u.length < 512 && o === D && u.charAt(0) === '<' && !xt.test(u) && (B.support.checkClone || !Nt.test(u)) && (B.support.html5Clone || !Tt.test(u)) && (i = !0, s = B.fragments[u], s && s !== 1 && (r = s)),
  4764.     r || (r = o.createDocumentFragment(), B.clean(e, o, r, n)),
  4765.     i && (B.fragments[u] = s ? r : 1),
  4766.     {
  4767.       fragment: r,
  4768.       cacheable: i
  4769.     }
  4770.   },
  4771.   B.fragments = {
  4772.   },
  4773.   B.each({
  4774.     appendTo: 'append',
  4775.     prependTo: 'prepend',
  4776.     insertBefore: 'before',
  4777.     insertAfter: 'after',
  4778.     replaceAll: 'replaceWith'
  4779.   }, function (e, t) {
  4780.     B.fn[e] = function (n) {
  4781.       var r = [
  4782.       ],
  4783.       i = B(n),
  4784.       s = this.length === 1 && this[0].parentNode;
  4785.       if (s && s.nodeType === 11 && s.childNodes.length === 1 && i.length === 1) return i[t](this[0]),
  4786.       this;
  4787.       for (var o = 0, u = i.length; o < u; o++) {
  4788.         var a = (o > 0 ? this.clone(!0)  : this).get();
  4789.         B(i[o]) [t](a),
  4790.         r = r.concat(a)
  4791.       }
  4792.       return this.pushStack(r, e, i.selector)
  4793.     }
  4794.   }),
  4795.   B.extend({
  4796.     clone: function (e, t, n) {
  4797.       var r,
  4798.       i,
  4799.       s,
  4800.       o = B.support.html5Clone || !Tt.test('<' + e.nodeName) ? e.cloneNode(!0)  : g(e);
  4801.       if ((!B.support.noCloneEvent || !B.support.noCloneChecked) && (e.nodeType === 1 || e.nodeType === 11) && !B.isXMLDoc(e)) {
  4802.         E(e, o),
  4803.         r = w(e),
  4804.         i = w(o);
  4805.         for (s = 0; r[s]; ++s) i[s] && E(r[s], i[s])
  4806.       }
  4807.       if (t) {
  4808.         S(e, o);
  4809.         if (n) {
  4810.           r = w(e),
  4811.           i = w(o);
  4812.           for (s = 0; r[s]; ++s) S(r[s], i[s])
  4813.         }
  4814.       }
  4815.       return r = i = null,
  4816.       o
  4817.     },
  4818.     clean: function (e, t, n, r) {
  4819.       var i;
  4820.       t = t || D,
  4821.       typeof t.createElement == 'undefined' && (t = t.ownerDocument || t[0] && t[0].ownerDocument || D);
  4822.       var s = [
  4823.       ],
  4824.       o;
  4825.       for (var u = 0, a; (a = e[u]) != null; u++) {
  4826.         typeof a == 'number' && (a += '');
  4827.         if (!a) continue;
  4828.         if (typeof a == 'string') if (!Et.test(a)) a = t.createTextNode(a);
  4829.          else {
  4830.           a = a.replace(yt, '<$1></$2>');
  4831.           var f = (bt.exec(a) || [
  4832.             '',
  4833.             ''
  4834.           ]) [1].toLowerCase(),
  4835.           l = Lt[f] || Lt._default,
  4836.           c = l[0],
  4837.           h = t.createElement('div');
  4838.           t === D ? At.appendChild(h)  : T(t).appendChild(h),
  4839.           h.innerHTML = l[1] + a + l[2];
  4840.           while (c--) h = h.lastChild;
  4841.           if (!B.support.tbody) {
  4842.             var p = wt.test(a),
  4843.             d = f === 'table' && !p ? h.firstChild && h.firstChild.childNodes : l[1] === '<table>' && !p ? h.childNodes : [
  4844.             ];
  4845.             for (o = d.length - 1; o >= 0; --o) B.nodeName(d[o], 'tbody') && !d[o].childNodes.length && d[o].parentNode.removeChild(d[o])
  4846.           }
  4847.           !B.support.leadingWhitespace && gt.test(a) && h.insertBefore(t.createTextNode(gt.exec(a) [0]), h.firstChild),
  4848.           a = h.childNodes
  4849.         }
  4850.         var v;
  4851.         if (!B.support.appendChecked) if (a[0] && typeof (v = a.length) == 'number') for (o = 0; o < v; o++) y(a[o]);
  4852.          else y(a);
  4853.         a.nodeType ? s.push(a)  : s = B.merge(s, a)
  4854.       }
  4855.       if (n) {
  4856.         i = function (e) {
  4857.           return !e.type || Ct.test(e.type)
  4858.         };
  4859.         for (u = 0; s[u]; u++) if (r && B.nodeName(s[u], 'script') && (!s[u].type || s[u].type.toLowerCase() === 'text/javascript')) r.push(s[u].parentNode ? s[u].parentNode.removeChild(s[u])  : s[u]);
  4860.          else {
  4861.           if (s[u].nodeType === 1) {
  4862.             var m = B.grep(s[u].getElementsByTagName('script'), i);
  4863.             s.splice.apply(s, [
  4864.               u + 1,
  4865.               0
  4866.             ].concat(m))
  4867.           }
  4868.           n.appendChild(s[u])
  4869.         }
  4870.       }
  4871.       return s
  4872.     },
  4873.     cleanData: function (e) {
  4874.       var t,
  4875.       n,
  4876.       r = B.cache,
  4877.       i = B.event.special,
  4878.       s = B.support.deleteExpando;
  4879.       for (var o = 0, u; (u = e[o]) != null; o++) {
  4880.         if (u.nodeName && B.noData[u.nodeName.toLowerCase()]) continue;
  4881.         n = u[B.expando];
  4882.         if (n) {
  4883.           t = r[n];
  4884.           if (t && t.events) {
  4885.             for (var a in t.events) i[a] ? B.event.remove(u, a)  : B.removeEvent(u, a, t.handle);
  4886.             t.handle && (t.handle.elem = null)
  4887.           }
  4888.           s ? delete u[B.expando] : u.removeAttribute && u.removeAttribute(B.expando),
  4889.           delete r[n]
  4890.         }
  4891.       }
  4892.     }
  4893.   });
  4894.   var Ot = /alpha\([^)]*\)/i,
  4895.   Mt = /opacity=([^)]*)/,
  4896.   _t = /([A-Z]|^ms)/g,
  4897.   Dt = /^-?\d+(?:px)?$/i,
  4898.   Pt = /^-?\d/,
  4899.   Ht = /^([\-+])=([\-+.\de]+)/,
  4900.   Bt = {
  4901.     position: 'absolute',
  4902.     visibility: 'hidden',
  4903.     display: 'block'
  4904.   },
  4905.   jt = [
  4906.     'Left',
  4907.     'Right'
  4908.   ],
  4909.   Ft = [
  4910.     'Top',
  4911.     'Bottom'
  4912.   ],
  4913.   It,
  4914.   qt,
  4915.   Rt;
  4916.   B.fn.css = function (e, n) {
  4917.     return arguments.length === 2 && n === t ? this : B.access(this, e, n, !0, function (e, n, r) {
  4918.       return r !== t ? B.style(e, n, r)  : B.css(e, n)
  4919.     })
  4920.   },
  4921.   B.extend({
  4922.     cssHooks: {
  4923.       opacity: {
  4924.         get: function (e, t) {
  4925.           if (t) {
  4926.             var n = It(e, 'opacity', 'opacity');
  4927.             return n === '' ? '1' : n
  4928.           }
  4929.           return e.style.opacity
  4930.         }
  4931.       }
  4932.     },
  4933.     cssNumber: {
  4934.       fillOpacity: !0,
  4935.       fontWeight: !0,
  4936.       lineHeight: !0,
  4937.       opacity: !0,
  4938.       orphans: !0,
  4939.       widows: !0,
  4940.       zIndex: !0,
  4941.       zoom: !0
  4942.     },
  4943.     cssProps: {
  4944.       'float': B.support.cssFloat ? 'cssFloat' : 'styleFloat'
  4945.     },
  4946.     style: function (e, n, r, i) {
  4947.       if (!!e && e.nodeType !== 3 && e.nodeType !== 8 && !!e.style) {
  4948.         var s,
  4949.         o,
  4950.         u = B.camelCase(n),
  4951.         a = e.style,
  4952.         f = B.cssHooks[u];
  4953.         n = B.cssProps[u] || u;
  4954.         if (r === t) return f && 'get' in f && (s = f.get(e, !1, i)) !== t ? s : a[n];
  4955.         o = typeof r,
  4956.         o === 'string' && (s = Ht.exec(r)) && (r = + (s[1] + 1) * + s[2] + parseFloat(B.css(e, n)), o = 'number');
  4957.         if (r == null || o === 'number' && isNaN(r)) return;
  4958.         o === 'number' && !B.cssNumber[u] && (r += 'px');
  4959.         if (!f || !('set' in f) || (r = f.set(e, r)) !== t) try {
  4960.           a[n] = r
  4961.         } catch (l) {
  4962.         }
  4963.       }
  4964.     },
  4965.     css: function (e, n, r) {
  4966.       var i,
  4967.       s;
  4968.       n = B.camelCase(n),
  4969.       s = B.cssHooks[n],
  4970.       n = B.cssProps[n] || n,
  4971.       n === 'cssFloat' && (n = 'float');
  4972.       if (s && 'get' in s && (i = s.get(e, !0, r)) !== t) return i;
  4973.       if (It) return It(e, n)
  4974.     },
  4975.     swap: function (e, t, n) {
  4976.       var r = {
  4977.       };
  4978.       for (var i in t) r[i] = e.style[i],
  4979.       e.style[i] = t[i];
  4980.       n.call(e);
  4981.       for (i in t) e.style[i] = r[i]
  4982.     }
  4983.   }),
  4984.   B.curCSS = B.css,
  4985.   B.each(['height',
  4986.   'width'], function (e, t) {
  4987.     B.cssHooks[t] = {
  4988.       get: function (e, n, r) {
  4989.         var i;
  4990.         if (n) return e.offsetWidth !== 0 ? v(e, t, r)  : (B.swap(e, Bt, function () {
  4991.           i = v(e, t, r)
  4992.         }), i)
  4993.       },
  4994.       set: function (e, t) {
  4995.         if (!Dt.test(t)) return t;
  4996.         t = parseFloat(t);
  4997.         if (t >= 0) return t + 'px'
  4998.       }
  4999.     }
  5000.   }),
  5001.   B.support.opacity || (B.cssHooks.opacity = {
  5002.     get: function (e, t) {
  5003.       return Mt.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || '') ? parseFloat(RegExp.$1) / 100 + '' : t ? '1' : ''
  5004.     },
  5005.     set: function (e, t) {
  5006.       var n = e.style,
  5007.       r = e.currentStyle,
  5008.       i = B.isNumeric(t) ? 'alpha(opacity=' + t * 100 + ')' : '',
  5009.       s = r && r.filter || n.filter || '';
  5010.       n.zoom = 1;
  5011.       if (t >= 1 && B.trim(s.replace(Ot, '')) === '') {
  5012.         n.removeAttribute('filter');
  5013.         if (r && !r.filter) return
  5014.       }
  5015.       n.filter = Ot.test(s) ? s.replace(Ot, i)  : s + ' ' + i
  5016.     }
  5017.   }),
  5018.   B(function () {
  5019.     B.support.reliableMarginRight || (B.cssHooks.marginRight = {
  5020.       get: function (e, t) {
  5021.         var n;
  5022.         return B.swap(e, {
  5023.           display: 'inline-block'
  5024.         }, function () {
  5025.           t ? n = It(e, 'margin-right', 'marginRight')  : n = e.style.marginRight
  5026.         }),
  5027.         n
  5028.       }
  5029.     })
  5030.   }),
  5031.   D.defaultView && D.defaultView.getComputedStyle && (qt = function (e, t) {
  5032.     var n,
  5033.     r,
  5034.     i;
  5035.     return t = t.replace(_t, '-$1').toLowerCase(),
  5036.     (r = e.ownerDocument.defaultView) && (i = r.getComputedStyle(e, null)) && (n = i.getPropertyValue(t), n === '' && !B.contains(e.ownerDocument.documentElement, e) && (n = B.style(e, t))),
  5037.     n
  5038.   }),
  5039.   D.documentElement.currentStyle && (Rt = function (e, t) {
  5040.     var n,
  5041.     r,
  5042.     i,
  5043.     s = e.currentStyle && e.currentStyle[t],
  5044.     o = e.style;
  5045.     return s === null && o && (i = o[t]) && (s = i),
  5046.     !Dt.test(s) && Pt.test(s) && (n = o.left, r = e.runtimeStyle && e.runtimeStyle.left, r && (e.runtimeStyle.left = e.currentStyle.left), o.left = t === 'fontSize' ? '1em' : s || 0, s = o.pixelLeft + 'px', o.left = n, r && (e.runtimeStyle.left = r)),
  5047.     s === '' ? 'auto' : s
  5048.   }),
  5049.   It = qt || Rt,
  5050.   B.expr && B.expr.filters && (B.expr.filters.hidden = function (e) {
  5051.     var t = e.offsetWidth,
  5052.     n = e.offsetHeight;
  5053.     return t === 0 && n === 0 || !B.support.reliableHiddenOffsets && (e.style && e.style.display || B.css(e, 'display')) === 'none'
  5054.   }, B.expr.filters.visible = function (e) {
  5055.     return !B.expr.filters.hidden(e)
  5056.   });
  5057.   var Ut = /%20/g,
  5058.   zt = /\[\]$/,
  5059.   Wt = /\r?\n/g,
  5060.   Xt = /#.*$/,
  5061.   Vt = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
  5062.   $t = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
  5063.   Jt = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
  5064.   Kt = /^(?:GET|HEAD)$/,
  5065.   Qt = /^\/\//,
  5066.   Gt = /\?/,
  5067.   Yt = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
  5068.   Zt = /^(?:select|textarea)/i,
  5069.   en = /\s+/,
  5070.   tn = /([?&])_=[^&]*/,
  5071.   nn = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
  5072.   rn = B.fn.load,
  5073.   sn = {
  5074.   },
  5075.   on = {
  5076.   },
  5077.   un,
  5078.   an,
  5079.   fn = [
  5080.     '*/'
  5081.   ] + ['*'];
  5082.   try {
  5083.     un = H.href
  5084.   } catch (ln) {
  5085.     un = D.createElement('a'),
  5086.     un.href = '',
  5087.     un = un.href
  5088.   }
  5089.   an = nn.exec(un.toLowerCase()) || [
  5090.   ],
  5091.   B.fn.extend({
  5092.     load: function (e, n, r) {
  5093.       if (typeof e != 'string' && rn) return rn.apply(this, arguments);
  5094.       if (!this.length) return this;
  5095.       var i = e.indexOf(' ');
  5096.       if (i >= 0) {
  5097.         var s = e.slice(i, e.length);
  5098.         e = e.slice(0, i)
  5099.       }
  5100.       var o = 'GET';
  5101.       n && (B.isFunction(n) ? (r = n, n = t)  : typeof n == 'object' && (n = B.param(n, B.ajaxSettings.traditional), o = 'POST'));
  5102.       var u = this;
  5103.       return B.ajax({
  5104.         url: e,
  5105.         type: o,
  5106.         dataType: 'html',
  5107.         data: n,
  5108.         complete: function (e, t, n) {
  5109.           n = e.responseText,
  5110.           e.isResolved() && (e.done(function (e) {
  5111.             n = e
  5112.           }), u.html(s ? B('<div>').append(n.replace(Yt, '')).find(s)  : n)),
  5113.           r && u.each(r, [
  5114.             n,
  5115.             t,
  5116.             e
  5117.           ])
  5118.         }
  5119.       }),
  5120.       this
  5121.     },
  5122.     serialize: function () {
  5123.       return B.param(this.serializeArray())
  5124.     },
  5125.     serializeArray: function () {
  5126.       return this.map(function () {
  5127.         return this.elements ? B.makeArray(this.elements)  : this
  5128.       }).filter(function () {
  5129.         return this.name && !this.disabled && (this.checked || Zt.test(this.nodeName) || $t.test(this.type))
  5130.       }).map(function (e, t) {
  5131.         var n = B(this).val();
  5132.         return n == null ? null : B.isArray(n) ? B.map(n, function (e, n) {
  5133.           return {
  5134.             name: t.name,
  5135.             value: e.replace(Wt, '\r\n')
  5136.           }
  5137.         })  : {
  5138.           name: t.name,
  5139.           value: n.replace(Wt, '\r\n')
  5140.         }
  5141.       }).get()
  5142.     }
  5143.   }),
  5144.   B.each('ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend'.split(' '), function (e, t) {
  5145.     B.fn[t] = function (e) {
  5146.       return this.on(t, e)
  5147.     }
  5148.   }),
  5149.   B.each(['get',
  5150.   'post'], function (e, n) {
  5151.     B[n] = function (e, r, i, s) {
  5152.       return B.isFunction(r) && (s = s || i, i = r, r = t),
  5153.       B.ajax({
  5154.         type: n,
  5155.         url: e,
  5156.         data: r,
  5157.         success: i,
  5158.         dataType: s
  5159.       })
  5160.     }
  5161.   }),
  5162.   B.extend({
  5163.     getScript: function (e, n) {
  5164.       return B.get(e, t, n, 'script')
  5165.     },
  5166.     getJSON: function (e, t, n) {
  5167.       return B.get(e, t, n, 'json')
  5168.     },
  5169.     ajaxSetup: function (e, t) {
  5170.       return t ? h(e, B.ajaxSettings)  : (t = e, e = B.ajaxSettings),
  5171.       h(e, t),
  5172.       e
  5173.     },
  5174.     ajaxSettings: {
  5175.       url: un,
  5176.       isLocal: Jt.test(an[1]),
  5177.       global: !0,
  5178.       type: 'GET',
  5179.       contentType: 'application/x-www-form-urlencoded',
  5180.       processData: !0,
  5181.       async: !0,
  5182.       accepts: {
  5183.         xml: 'application/xml, text/xml',
  5184.         html: 'text/html',
  5185.         text: 'text/plain',
  5186.         json: 'application/json, text/javascript',
  5187.         '*': fn
  5188.       },
  5189.       contents: {
  5190.         xml: /xml/,
  5191.         html: /html/,
  5192.         json: /json/
  5193.       },
  5194.       responseFields: {
  5195.         xml: 'responseXML',
  5196.         text: 'responseText'
  5197.       },
  5198.       converters: {
  5199.         '* text': e.String,
  5200.         'text html': !0,
  5201.         'text json': B.parseJSON,
  5202.         'text xml': B.parseXML
  5203.       },
  5204.       flatOptions: {
  5205.         context: !0,
  5206.         url: !0
  5207.       }
  5208.     },
  5209.     ajaxPrefilter: d(sn),
  5210.     ajaxTransport: d(on),
  5211.     ajax: function (e, n) {
  5212.       function r(e, n, r, p) {
  5213.         if (E !== 2) {
  5214.           E = 2,
  5215.           b && clearTimeout(b),
  5216.           y = t,
  5217.           m = p || '',
  5218.           T.readyState = e > 0 ? 4 : 0;
  5219.           var d,
  5220.           v,
  5221.           g,
  5222.           w = n,
  5223.           x = r ? l(i, T, r)  : t,
  5224.           N,
  5225.           C;
  5226.           if (e >= 200 && e < 300 || e === 304) {
  5227.             if (i.ifModified) {
  5228.               if (N = T.getResponseHeader('Last-Modified')) B.lastModified[h] = N;
  5229.               if (C = T.getResponseHeader('Etag')) B.etag[h] = C
  5230.             }
  5231.             if (e === 304) w = 'notmodified',
  5232.             d = !0;
  5233.              else try {
  5234.               v = f(i, x),
  5235.               w = 'success',
  5236.               d = !0
  5237.             } catch (k) {
  5238.               w = 'parsererror',
  5239.               g = k
  5240.             }
  5241.           } else {
  5242.             g = w;
  5243.             if (!w || e) w = 'error',
  5244.             e < 0 && (e = 0)
  5245.           }
  5246.           T.status = e,
  5247.           T.statusText = '' + (n || w),
  5248.           d ? u.resolveWith(s, [
  5249.             v,
  5250.             w,
  5251.             T
  5252.           ])  : u.rejectWith(s, [
  5253.             T,
  5254.             w,
  5255.             g
  5256.           ]),
  5257.           T.statusCode(c),
  5258.           c = t,
  5259.           S && o.trigger('ajax' + (d ? 'Success' : 'Error'), [
  5260.             T,
  5261.             i,
  5262.             d ? v : g
  5263.           ]),
  5264.           a.fireWith(s, [
  5265.             T,
  5266.             w
  5267.           ]),
  5268.           S && (o.trigger('ajaxComplete', [
  5269.             T,
  5270.             i
  5271.           ]), --B.active || B.event.trigger('ajaxStop'))
  5272.         }
  5273.       }
  5274.       typeof e == 'object' && (n = e, e = t),
  5275.       n = n || {
  5276.       };
  5277.       var i = B.ajaxSetup({
  5278.       }, n),
  5279.       s = i.context || i,
  5280.       o = s !== i && (s.nodeType || s instanceof B) ? B(s)  : B.event,
  5281.       u = B.Deferred(),
  5282.       a = B.Callbacks('once memory'),
  5283.       c = i.statusCode || {
  5284.       },
  5285.       h,
  5286.       d = {
  5287.       },
  5288.       v = {
  5289.       },
  5290.       m,
  5291.       g,
  5292.       y,
  5293.       b,
  5294.       w,
  5295.       E = 0,
  5296.       S,
  5297.       x,
  5298.       T = {
  5299.         readyState: 0,
  5300.         setRequestHeader: function (e, t) {
  5301.           if (!E) {
  5302.             var n = e.toLowerCase();
  5303.             e = v[n] = v[n] || e,
  5304.             d[e] = t
  5305.           }
  5306.           return this
  5307.         },
  5308.         getAllResponseHeaders: function () {
  5309.           return E === 2 ? m : null
  5310.         },
  5311.         getResponseHeader: function (e) {
  5312.           var n;
  5313.           if (E === 2) {
  5314.             if (!g) {
  5315.               g = {
  5316.               };
  5317.               while (n = Vt.exec(m)) g[n[1].toLowerCase()] = n[2]
  5318.             }
  5319.             n = g[e.toLowerCase()]
  5320.           }
  5321.           return n === t ? null : n
  5322.         },
  5323.         overrideMimeType: function (e) {
  5324.           return E || (i.mimeType = e),
  5325.           this
  5326.         },
  5327.         abort: function (e) {
  5328.           return e = e || 'abort',
  5329.           y && y.abort(e),
  5330.           r(0, e),
  5331.           this
  5332.         }
  5333.       };
  5334.       u.promise(T),
  5335.       T.success = T.done,
  5336.       T.error = T.fail,
  5337.       T.complete = a.add,
  5338.       T.statusCode = function (e) {
  5339.         if (e) {
  5340.           var t;
  5341.           if (E < 2) for (t in e) c[t] = [
  5342.             c[t],
  5343.             e[t]
  5344.           ];
  5345.            else t = e[T.status],
  5346.           T.then(t, t)
  5347.         }
  5348.         return this
  5349.       },
  5350.       i.url = ((e || i.url) + '').replace(Xt, '').replace(Qt, an[1] + '//'),
  5351.       i.dataTypes = B.trim(i.dataType || '*').toLowerCase().split(en),
  5352.       i.crossDomain == null && (w = nn.exec(i.url.toLowerCase()), i.crossDomain = !(!w || w[1] == an[1] && w[2] == an[2] && (w[3] || (w[1] === 'http:' ? 80 : 443)) == (an[3] || (an[1] === 'http:' ? 80 : 443)))),
  5353.       i.data && i.processData && typeof i.data != 'string' && (i.data = B.param(i.data, i.traditional)),
  5354.       p(sn, i, n, T);
  5355.       if (E === 2) return !1;
  5356.       S = i.global,
  5357.       i.type = i.type.toUpperCase(),
  5358.       i.hasContent = !Kt.test(i.type),
  5359.       S && B.active++ === 0 && B.event.trigger('ajaxStart');
  5360.       if (!i.hasContent) {
  5361.         i.data && (i.url += (Gt.test(i.url) ? '&' : '?') + i.data, delete i.data),
  5362.         h = i.url;
  5363.         if (i.cache === !1) {
  5364.           var N = B.now(),
  5365.           C = i.url.replace(tn, '$1_=' + N);
  5366.           i.url = C + (C === i.url ? (Gt.test(i.url) ? '&' : '?') + '_=' + N : '')
  5367.         }
  5368.       }(i.data && i.hasContent && i.contentType !== !1 || n.contentType) && T.setRequestHeader('Content-Type', i.contentType),
  5369.       i.ifModified && (h = h || i.url, B.lastModified[h] && T.setRequestHeader('If-Modified-Since', B.lastModified[h]), B.etag[h] && T.setRequestHeader('If-None-Match', B.etag[h])),
  5370.       T.setRequestHeader('Accept', i.dataTypes[0] && i.accepts[i.dataTypes[0]] ? i.accepts[i.dataTypes[0]] + (i.dataTypes[0] !== '*' ? ', ' + fn + '; q=0.01' : '')  : i.accepts['*']);
  5371.       for (x in i.headers) T.setRequestHeader(x, i.headers[x]);
  5372.       if (!i.beforeSend || i.beforeSend.call(s, T, i) !== !1 && E !== 2) {
  5373.         for (x in {
  5374.           success: 1,
  5375.           error: 1,
  5376.           complete: 1
  5377.         }) T[x](i[x]);
  5378.         y = p(on, i, n, T);
  5379.         if (!y) r( - 1, 'No Transport');
  5380.          else {
  5381.           T.readyState = 1,
  5382.           S && o.trigger('ajaxSend', [
  5383.             T,
  5384.             i
  5385.           ]),
  5386.           i.async && i.timeout > 0 && (b = setTimeout(function () {
  5387.             T.abort('timeout')
  5388.           }, i.timeout));
  5389.           try {
  5390.             E = 1,
  5391.             y.send(d, r)
  5392.           } catch (k) {
  5393.             if (!(E < 2)) throw k;
  5394.             r( - 1, k)
  5395.           }
  5396.         }
  5397.         return T
  5398.       }
  5399.       return T.abort(),
  5400.       !1
  5401.     },
  5402.     param: function (e, n) {
  5403.       var r = [
  5404.       ],
  5405.       i = function (e, t) {
  5406.         t = B.isFunction(t) ? t()  : t,
  5407.         r[r.length] = encodeURIComponent(e) + '=' + encodeURIComponent(t)
  5408.       };
  5409.       n === t && (n = B.ajaxSettings.traditional);
  5410.       if (B.isArray(e) || e.jquery && !B.isPlainObject(e)) B.each(e, function () {
  5411.         i(this.name, this.value)
  5412.       });
  5413.        else for (var s in e) c(s, e[s], n, i);
  5414.       return r.join('&').replace(Ut, '+')
  5415.     }
  5416.   }),
  5417.   B.extend({
  5418.     active: 0,
  5419.     lastModified: {
  5420.     },
  5421.     etag: {
  5422.     }
  5423.   });
  5424.   var cn = B.now(),
  5425.   hn = /(\=)\?(&|$)|\?\?/i;
  5426.   B.ajaxSetup({
  5427.     jsonp: 'callback',
  5428.     jsonpCallback: function () {
  5429.       return B.expando + '_' + cn++
  5430.     }
  5431.   }),
  5432.   B.ajaxPrefilter('json jsonp', function (t, n, r) {
  5433.     var i = t.contentType === 'application/x-www-form-urlencoded' && typeof t.data == 'string';
  5434.     if (t.dataTypes[0] === 'jsonp' || t.jsonp !== !1 && (hn.test(t.url) || i && hn.test(t.data))) {
  5435.       var s,
  5436.       o = t.jsonpCallback = B.isFunction(t.jsonpCallback) ? t.jsonpCallback()  : t.jsonpCallback,
  5437.       u = e[o],
  5438.       a = t.url,
  5439.       f = t.data,
  5440.       l = '$1' + o + '$2';
  5441.       return t.jsonp !== !1 && (a = a.replace(hn, l), t.url === a && (i && (f = f.replace(hn, l)), t.data === f && (a += (/\?/.test(a) ? '&' : '?') + t.jsonp + '=' + o))),
  5442.       t.url = a,
  5443.       t.data = f,
  5444.       e[o] = function (e) {
  5445.         s = [
  5446.           e
  5447.         ]
  5448.       },
  5449.       r.always(function () {
  5450.         e[o] = u,
  5451.         s && B.isFunction(u) && e[o](s[0])
  5452.       }),
  5453.       t.converters['script json'] = function () {
  5454.         return s || B.error(o + ' was not called'),
  5455.         s[0]
  5456.       },
  5457.       t.dataTypes[0] = 'json',
  5458.       'script'
  5459.     }
  5460.   }),
  5461.   B.ajaxSetup({
  5462.     accepts: {
  5463.       script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'
  5464.     },
  5465.     contents: {
  5466.       script: /javascript|ecmascript/
  5467.     },
  5468.     converters: {
  5469.       'text script': function (e) {
  5470.         return B.globalEval(e),
  5471.         e
  5472.       }
  5473.     }
  5474.   }),
  5475.   B.ajaxPrefilter('script', function (e) {
  5476.     e.cache === t && (e.cache = !1),
  5477.     e.crossDomain && (e.type = 'GET', e.global = !1)
  5478.   }),
  5479.   B.ajaxTransport('script', function (e) {
  5480.     if (e.crossDomain) {
  5481.       var n,
  5482.       r = D.head || D.getElementsByTagName('head') [0] || D.documentElement;
  5483.       return {
  5484.         send: function (i, s) {
  5485.           n = D.createElement('script'),
  5486.           n.async = 'async',
  5487.           e.scriptCharset && (n.charset = e.scriptCharset),
  5488.           n.src = e.url,
  5489.           n.onload = n.onreadystatechange = function (e, i) {
  5490.             if (i || !n.readyState || /loaded|complete/.test(n.readyState)) n.onload = n.onreadystatechange = null,
  5491.             r && n.parentNode && r.removeChild(n),
  5492.             n = t,
  5493.             i || s(200, 'success')
  5494.           },
  5495.           r.insertBefore(n, r.firstChild)
  5496.         },
  5497.         abort: function () {
  5498.           n && n.onload(0, 1)
  5499.         }
  5500.       }
  5501.     }
  5502.   });
  5503.   var pn = e.ActiveXObject ? function () {
  5504.     for (var e in vn) vn[e](0, 1)
  5505.   }
  5506.    : !1,
  5507.   dn = 0,
  5508.   vn;
  5509.   B.ajaxSettings.xhr = e.ActiveXObject ? function () {
  5510.     return !this.isLocal && a() || u()
  5511.   }
  5512.    : a,
  5513.   function (e) {
  5514.     B.extend(B.support, {
  5515.       ajax: !!e,
  5516.       cors: !!e && 'withCredentials' in e
  5517.     })
  5518.   }(B.ajaxSettings.xhr()),
  5519.   B.support.ajax && B.ajaxTransport(function (n) {
  5520.     if (!n.crossDomain || B.support.cors) {
  5521.       var r;
  5522.       return {
  5523.         send: function (i, s) {
  5524.           var o = n.xhr(),
  5525.           u,
  5526.           a;
  5527.           n.username ? o.open(n.type, n.url, n.async, n.username, n.password)  : o.open(n.type, n.url, n.async);
  5528.           if (n.xhrFields) for (a in n.xhrFields) o[a] = n.xhrFields[a];
  5529.           n.mimeType && o.overrideMimeType && o.overrideMimeType(n.mimeType),
  5530.           !n.crossDomain && !i['X-Requested-With'] && (i['X-Requested-With'] = 'XMLHttpRequest');
  5531.           try {
  5532.             for (a in i) o.setRequestHeader(a, i[a])
  5533.           } catch (f) {
  5534.           }
  5535.           o.send(n.hasContent && n.data || null),
  5536.           r = function (e, i) {
  5537.             var a,
  5538.             f,
  5539.             l,
  5540.             c,
  5541.             h;
  5542.             try {
  5543.               if (r && (i || o.readyState === 4)) {
  5544.                 r = t,
  5545.                 u && (o.onreadystatechange = B.noop, pn && delete vn[u]);
  5546.                 if (i) o.readyState !== 4 && o.abort();
  5547.                  else {
  5548.                   a = o.status,
  5549.                   l = o.getAllResponseHeaders(),
  5550.                   c = {
  5551.                   },
  5552.                   h = o.responseXML,
  5553.                   h && h.documentElement && (c.xml = h),
  5554.                   c.text = o.responseText;
  5555.                   try {
  5556.                     f = o.statusText
  5557.                   } catch (p) {
  5558.                     f = ''
  5559.                   }
  5560.                   !a && n.isLocal && !n.crossDomain ? a = c.text ? 200 : 404 : a === 1223 && (a = 204)
  5561.                 }
  5562.               }
  5563.             } catch (d) {
  5564.               i || s( - 1, d)
  5565.             }
  5566.             c && s(a, f, c, l)
  5567.           },
  5568.           !n.async || o.readyState === 4 ? r()  : (u = ++dn, pn && (vn || (vn = {
  5569.           }, B(e).unload(pn)), vn[u] = r), o.onreadystatechange = r)
  5570.         },
  5571.         abort: function () {
  5572.           r && r(0, 1)
  5573.         }
  5574.       }
  5575.     }
  5576.   });
  5577.   var mn = {
  5578.   },
  5579.   gn,
  5580.   yn,
  5581.   bn = /^(?:toggle|show|hide)$/,
  5582.   wn = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
  5583.   En,
  5584.   Sn = [
  5585.     ['height',
  5586.     'marginTop',
  5587.     'marginBottom',
  5588.     'paddingTop',
  5589.     'paddingBottom'],
  5590.     [
  5591.       'width',
  5592.       'marginLeft',
  5593.       'marginRight',
  5594.       'paddingLeft',
  5595.       'paddingRight'
  5596.     ],
  5597.     [
  5598.       'opacity'
  5599.     ]
  5600.   ],
  5601.   xn;
  5602.   B.fn.extend({
  5603.     show: function (e, t, n) {
  5604.       var s,
  5605.       o;
  5606.       if (e || e === 0) return this.animate(i('show', 3), e, t, n);
  5607.       for (var u = 0, a = this.length; u < a; u++) s = this[u],
  5608.       s.style && (o = s.style.display, !B._data(s, 'olddisplay') && o === 'none' && (o = s.style.display = ''), o === '' && B.css(s, 'display') === 'none' && B._data(s, 'olddisplay', r(s.nodeName)));
  5609.       for (u = 0; u < a; u++) {
  5610.         s = this[u];
  5611.         if (s.style) {
  5612.           o = s.style.display;
  5613.           if (o === '' || o === 'none') s.style.display = B._data(s, 'olddisplay') || ''
  5614.         }
  5615.       }
  5616.       return this
  5617.     },
  5618.     hide: function (e, t, n) {
  5619.       if (e || e === 0) return this.animate(i('hide', 3), e, t, n);
  5620.       var r,
  5621.       s,
  5622.       o = 0,
  5623.       u = this.length;
  5624.       for (; o < u; o++) r = this[o],
  5625.       r.style && (s = B.css(r, 'display'), s !== 'none' && !B._data(r, 'olddisplay') && B._data(r, 'olddisplay', s));
  5626.       for (o = 0; o < u; o++) this[o].style && (this[o].style.display = 'none');
  5627.       return this
  5628.     },
  5629.     _toggle: B.fn.toggle,
  5630.     toggle: function (e, t, n) {
  5631.       var r = typeof e == 'boolean';
  5632.       return B.isFunction(e) && B.isFunction(t) ? this._toggle.apply(this, arguments)  : e == null || r ? this.each(function () {
  5633.         var t = r ? e : B(this).is(':hidden');
  5634.         B(this) [t ? 'show' : 'hide']()
  5635.       })  : this.animate(i('toggle', 3), e, t, n),
  5636.       this
  5637.     },
  5638.     fadeTo: function (e, t, n, r) {
  5639.       return this.filter(':hidden').css('opacity', 0).show().end().animate({
  5640.         opacity: t
  5641.       }, e, n, r)
  5642.     },
  5643.     animate: function (e, t, n, i) {
  5644.       function s() {
  5645.         o.queue === !1 && B._mark(this);
  5646.         var t = B.extend({
  5647.         }, o),
  5648.         n = this.nodeType === 1,
  5649.         i = n && B(this).is(':hidden'),
  5650.         s,
  5651.         u,
  5652.         a,
  5653.         f,
  5654.         l,
  5655.         c,
  5656.         h,
  5657.         p,
  5658.         d;
  5659.         t.animatedProperties = {
  5660.         };
  5661.         for (a in e) {
  5662.           s = B.camelCase(a),
  5663.           a !== s && (e[s] = e[a], delete e[a]),
  5664.           u = e[s],
  5665.           B.isArray(u) ? (t.animatedProperties[s] = u[1], u = e[s] = u[0])  : t.animatedProperties[s] = t.specialEasing && t.specialEasing[s] || t.easing || 'swing';
  5666.           if (u === 'hide' && i || u === 'show' && !i) return t.complete.call(this);
  5667.           n && (s === 'height' || s === 'width') && (t.overflow = [
  5668.             this.style.overflow,
  5669.             this.style.overflowX,
  5670.             this.style.overflowY
  5671.           ], B.css(this, 'display') === 'inline' && B.css(this, 'float') === 'none' && (!B.support.inlineBlockNeedsLayout || r(this.nodeName) === 'inline' ? this.style.display = 'inline-block' : this.style.zoom = 1))
  5672.         }
  5673.         t.overflow != null && (this.style.overflow = 'hidden');
  5674.         for (a in e) f = new B.fx(this, t, a),
  5675.         u = e[a],
  5676.         bn.test(u) ? (d = B._data(this, 'toggle' + a) || (u === 'toggle' ? i ? 'show' : 'hide' : 0), d ? (B._data(this, 'toggle' + a, d === 'show' ? 'hide' : 'show'), f[d]())  : f[u]())  : (l = wn.exec(u), c = f.cur(), l ? (h = parseFloat(l[2]), p = l[3] || (B.cssNumber[a] ? '' : 'px'), p !== 'px' && (B.style(this, a, (h || 1) + p), c = (h || 1) / f.cur() * c, B.style(this, a, c + p)), l[1] && (h = (l[1] === '-=' ? - 1 : 1) * h + c), f.custom(c, h, p))  : f.custom(c, u, ''));
  5677.         return !0
  5678.       }
  5679.       var o = B.speed(t, n, i);
  5680.       return B.isEmptyObject(e) ? this.each(o.complete, [
  5681.         !1
  5682.       ])  : (e = B.extend({
  5683.       }, e), o.queue === !1 ? this.each(s)  : this.queue(o.queue, s))
  5684.     },
  5685.     stop: function (e, n, r) {
  5686.       return typeof e != 'string' && (r = n, n = e, e = t),
  5687.       n && e !== !1 && this.queue(e || 'fx', [
  5688.       ]),
  5689.       this.each(function () {
  5690.         function t(e, t, n) {
  5691.           var i = t[n];
  5692.           B.removeData(e, n, !0),
  5693.           i.stop(r)
  5694.         }
  5695.         var n,
  5696.         i = !1,
  5697.         s = B.timers,
  5698.         o = B._data(this);
  5699.         r || B._unmark(!0, this);
  5700.         if (e == null) for (n in o) o[n] && o[n].stop && n.indexOf('.run') === n.length - 4 && t(this, o, n);
  5701.          else o[n = e + '.run'] && o[n].stop && t(this, o, n);
  5702.         for (n = s.length; n--; ) s[n].elem === this && (e == null || s[n].queue === e) && (r ? s[n](!0)  : s[n].saveState(), i = !0, s.splice(n, 1));
  5703.         (!r || !i) && B.dequeue(this, e)
  5704.       })
  5705.     }
  5706.   }),
  5707.   B.each({
  5708.     slideDown: i('show', 1),
  5709.     slideUp: i('hide', 1),
  5710.     slideToggle: i('toggle', 1),
  5711.     fadeIn: {
  5712.       opacity: 'show'
  5713.     },
  5714.     fadeOut: {
  5715.       opacity: 'hide'
  5716.     },
  5717.     fadeToggle: {
  5718.       opacity: 'toggle'
  5719.     }
  5720.   }, function (e, t) {
  5721.     B.fn[e] = function (e, n, r) {
  5722.       return this.animate(t, e, n, r)
  5723.     }
  5724.   }),
  5725.   B.extend({
  5726.     speed: function (e, t, n) {
  5727.       var r = e && typeof e == 'object' ? B.extend({
  5728.       }, e)  : {
  5729.         complete: n || !n && t || B.isFunction(e) && e,
  5730.         duration: e,
  5731.         easing: n && t || t && !B.isFunction(t) && t
  5732.       };
  5733.       r.duration = B.fx.off ? 0 : typeof r.duration == 'number' ? r.duration : r.duration in B.fx.speeds ? B.fx.speeds[r.duration] : B.fx.speeds._default;
  5734.       if (r.queue == null || r.queue === !0) r.queue = 'fx';
  5735.       return r.old = r.complete,
  5736.       r.complete = function (e) {
  5737.         B.isFunction(r.old) && r.old.call(this),
  5738.         r.queue ? B.dequeue(this, r.queue)  : e !== !1 && B._unmark(this)
  5739.       },
  5740.       r
  5741.     },
  5742.     easing: {
  5743.       linear: function (e, t, n, r) {
  5744.         return n + r * e
  5745.       },
  5746.       swing: function (e, t, n, r) {
  5747.         return ( - Math.cos(e * Math.PI) / 2 + 0.5) * r + n
  5748.       }
  5749.     },
  5750.     timers: [
  5751.     ],
  5752.     fx: function (e, t, n) {
  5753.       this.options = t,
  5754.       this.elem = e,
  5755.       this.prop = n,
  5756.       t.orig = t.orig || {
  5757.       }
  5758.     }
  5759.   }),
  5760.   B.fx.prototype = {
  5761.     update: function () {
  5762.       this.options.step && this.options.step.call(this.elem, this.now, this),
  5763.       (B.fx.step[this.prop] || B.fx.step._default) (this)
  5764.     },
  5765.     cur: function () {
  5766.       if (this.elem[this.prop] == null || !!this.elem.style && this.elem.style[this.prop] != null) {
  5767.         var e,
  5768.         t = B.css(this.elem, this.prop);
  5769.         return isNaN(e = parseFloat(t)) ? !t || t === 'auto' ? 0 : t : e
  5770.       }
  5771.       return this.elem[this.prop]
  5772.     },
  5773.     custom: function (e, n, r) {
  5774.       function i(e) {
  5775.         return s.step(e)
  5776.       }
  5777.       var s = this,
  5778.       u = B.fx;
  5779.       this.startTime = xn || o(),
  5780.       this.end = n,
  5781.       this.now = this.start = e,
  5782.       this.pos = this.state = 0,
  5783.       this.unit = r || this.unit || (B.cssNumber[this.prop] ? '' : 'px'),
  5784.       i.queue = this.options.queue,
  5785.       i.elem = this.elem,
  5786.       i.saveState = function () {
  5787.         s.options.hide && B._data(s.elem, 'fxshow' + s.prop) === t && B._data(s.elem, 'fxshow' + s.prop, s.start)
  5788.       },
  5789.       i() && B.timers.push(i) && !En && (En = setInterval(u.tick, u.interval))
  5790.     },
  5791.     show: function () {
  5792.       var e = B._data(this.elem, 'fxshow' + this.prop);
  5793.       this.options.orig[this.prop] = e || B.style(this.elem, this.prop),
  5794.       this.options.show = !0,
  5795.       e !== t ? this.custom(this.cur(), e)  : this.custom(this.prop === 'width' || this.prop === 'height' ? 1 : 0, this.cur()),
  5796.       B(this.elem).show()
  5797.     },
  5798.     hide: function () {
  5799.       this.options.orig[this.prop] = B._data(this.elem, 'fxshow' + this.prop) || B.style(this.elem, this.prop),
  5800.       this.options.hide = !0,
  5801.       this.custom(this.cur(), 0)
  5802.     },
  5803.     step: function (e) {
  5804.       var t,
  5805.       n,
  5806.       r,
  5807.       i = xn || o(),
  5808.       s = !0,
  5809.       u = this.elem,
  5810.       a = this.options;
  5811.       if (e || i >= a.duration + this.startTime) {
  5812.         this.now = this.end,
  5813.         this.pos = this.state = 1,
  5814.         this.update(),
  5815.         a.animatedProperties[this.prop] = !0;
  5816.         for (t in a.animatedProperties) a.animatedProperties[t] !== !0 && (s = !1);
  5817.         if (s) {
  5818.           a.overflow != null && !B.support.shrinkWrapBlocks && B.each(['',
  5819.           'X',
  5820.           'Y'], function (e, t) {
  5821.             u.style['overflow' + t] = a.overflow[e]
  5822.           }),
  5823.           a.hide && B(u).hide();
  5824.           if (a.hide || a.show) for (t in a.animatedProperties) B.style(u, t, a.orig[t]),
  5825.           B.removeData(u, 'fxshow' + t, !0),
  5826.           B.removeData(u, 'toggle' + t, !0);
  5827.           r = a.complete,
  5828.           r && (a.complete = !1, r.call(u))
  5829.         }
  5830.         return !1
  5831.       }
  5832.       return a.duration == Infinity ? this.now = i : (n = i - this.startTime, this.state = n / a.duration, this.pos = B.easing[a.animatedProperties[this.prop]](this.state, n, 0, 1, a.duration), this.now = this.start + (this.end - this.start) * this.pos),
  5833.       this.update(),
  5834.       !0
  5835.     }
  5836.   },
  5837.   B.extend(B.fx, {
  5838.     tick: function () {
  5839.       var e,
  5840.       t = B.timers,
  5841.       n = 0;
  5842.       for (; n < t.length; n++) e = t[n],
  5843.       !e() && t[n] === e && t.splice(n--, 1);
  5844.       t.length || B.fx.stop()
  5845.     },
  5846.     interval: 13,
  5847.     stop: function () {
  5848.       clearInterval(En),
  5849.       En = null
  5850.     },
  5851.     speeds: {
  5852.       slow: 600,
  5853.       fast: 200,
  5854.       _default: 400
  5855.     },
  5856.     step: {
  5857.       opacity: function (e) {
  5858.         B.style(e.elem, 'opacity', e.now)
  5859.       },
  5860.       _default: function (e) {
  5861.         e.elem.style && e.elem.style[e.prop] != null ? e.elem.style[e.prop] = e.now + e.unit : e.elem[e.prop] = e.now
  5862.       }
  5863.     }
  5864.   }),
  5865.   B.each(['width',
  5866.   'height'], function (e, t) {
  5867.     B.fx.step[t] = function (e) {
  5868.       B.style(e.elem, t, Math.max(0, e.now) + e.unit)
  5869.     }
  5870.   }),
  5871.   B.expr && B.expr.filters && (B.expr.filters.animated = function (e) {
  5872.     return B.grep(B.timers, function (t) {
  5873.       return e === t.elem
  5874.     }).length
  5875.   });
  5876.   var Tn = /^t(?:able|d|h)$/i,
  5877.   Nn = /^(?:body|html)$/i;
  5878.   'getBoundingClientRect' in D.documentElement ? B.fn.offset = function (e) {
  5879.     var t = this[0],
  5880.     r;
  5881.     if (e) return this.each(function (t) {
  5882.       B.offset.setOffset(this, e, t)
  5883.     });
  5884.     if (!t || !t.ownerDocument) return null;
  5885.     if (t === t.ownerDocument.body) return B.offset.bodyOffset(t);
  5886.     try {
  5887.       r = t.getBoundingClientRect()
  5888.     } catch (i) {
  5889.     }
  5890.     var s = t.ownerDocument,
  5891.     o = s.documentElement;
  5892.     if (!r || !B.contains(o, t)) return r ? {
  5893.       top: r.top,
  5894.       left: r.left
  5895.     }
  5896.      : {
  5897.       top: 0,
  5898.       left: 0
  5899.     };
  5900.     var u = s.body,
  5901.     a = n(s),
  5902.     f = o.clientTop || u.clientTop || 0,
  5903.     l = o.clientLeft || u.clientLeft || 0,
  5904.     c = a.pageYOffset || B.support.boxModel && o.scrollTop || u.scrollTop,
  5905.     h = a.pageXOffset || B.support.boxModel && o.scrollLeft || u.scrollLeft,
  5906.     p = r.top + c - f,
  5907.     d = r.left + h - l;
  5908.     return {
  5909.       top: p,
  5910.       left: d
  5911.     }
  5912.   }
  5913.    : B.fn.offset = function (e) {
  5914.     var t = this[0];
  5915.     if (e) return this.each(function (t) {
  5916.       B.offset.setOffset(this, e, t)
  5917.     });
  5918.     if (!t || !t.ownerDocument) return null;
  5919.     if (t === t.ownerDocument.body) return B.offset.bodyOffset(t);
  5920.     var n,
  5921.     r = t.offsetParent,
  5922.     i = t,
  5923.     s = t.ownerDocument,
  5924.     o = s.documentElement,
  5925.     u = s.body,
  5926.     a = s.defaultView,
  5927.     f = a ? a.getComputedStyle(t, null)  : t.currentStyle,
  5928.     l = t.offsetTop,
  5929.     c = t.offsetLeft;
  5930.     while ((t = t.parentNode) && t !== u && t !== o) {
  5931.       if (B.support.fixedPosition && f.position === 'fixed') break;
  5932.       n = a ? a.getComputedStyle(t, null)  : t.currentStyle,
  5933.       l -= t.scrollTop,
  5934.       c -= t.scrollLeft,
  5935.       t === r && (l += t.offsetTop, c += t.offsetLeft, B.support.doesNotAddBorder && (!B.support.doesAddBorderForTableAndCells || !Tn.test(t.nodeName)) && (l += parseFloat(n.borderTopWidth) || 0, c += parseFloat(n.borderLeftWidth) || 0), i = r, r = t.offsetParent),
  5936.       B.support.subtractsBorderForOverflowNotVisible && n.overflow !== 'visible' && (l += parseFloat(n.borderTopWidth) || 0, c += parseFloat(n.borderLeftWidth) || 0),
  5937.       f = n
  5938.     }
  5939.     if (f.position === 'relative' || f.position === 'static') l += u.offsetTop,
  5940.     c += u.offsetLeft;
  5941.     return B.support.fixedPosition && f.position === 'fixed' && (l += Math.max(o.scrollTop, u.scrollTop), c += Math.max(o.scrollLeft, u.scrollLeft)),
  5942.     {
  5943.       top: l,
  5944.       left: c
  5945.     }
  5946.   },
  5947.   B.offset = {
  5948.     bodyOffset: function (e) {
  5949.       var t = e.offsetTop,
  5950.       n = e.offsetLeft;
  5951.       return B.support.doesNotIncludeMarginInBodyOffset && (t += parseFloat(B.css(e, 'marginTop')) || 0, n += parseFloat(B.css(e, 'marginLeft')) || 0),
  5952.       {
  5953.         top: t,
  5954.         left: n
  5955.       }
  5956.     },
  5957.     setOffset: function (e, t, n) {
  5958.       var r = B.css(e, 'position');
  5959.       r === 'static' && (e.style.position = 'relative');
  5960.       var i = B(e),
  5961.       s = i.offset(),
  5962.       o = B.css(e, 'top'),
  5963.       u = B.css(e, 'left'),
  5964.       a = (r === 'absolute' || r === 'fixed') && B.inArray('auto', [
  5965.         o,
  5966.         u
  5967.       ]) > - 1,
  5968.       f = {
  5969.       },
  5970.       l = {
  5971.       },
  5972.       c,
  5973.       h;
  5974.       a ? (l = i.position(), c = l.top, h = l.left)  : (c = parseFloat(o) || 0, h = parseFloat(u) || 0),
  5975.       B.isFunction(t) && (t = t.call(e, n, s)),
  5976.       t.top != null && (f.top = t.top - s.top + c),
  5977.       t.left != null && (f.left = t.left - s.left + h),
  5978.       'using' in t ? t.using.call(e, f)  : i.css(f)
  5979.     }
  5980.   },
  5981.   B.fn.extend({
  5982.     position: function () {
  5983.       if (!this[0]) return null;
  5984.       var e = this[0],
  5985.       t = this.offsetParent(),
  5986.       n = this.offset(),
  5987.       r = Nn.test(t[0].nodeName) ? {
  5988.         top: 0,
  5989.         left: 0
  5990.       }
  5991.        : t.offset();
  5992.       return n.top -= parseFloat(B.css(e, 'marginTop')) || 0,
  5993.       n.left -= parseFloat(B.css(e, 'marginLeft')) || 0,
  5994.       r.top += parseFloat(B.css(t[0], 'borderTopWidth')) || 0,
  5995.       r.left += parseFloat(B.css(t[0], 'borderLeftWidth')) || 0,
  5996.       {
  5997.         top: n.top - r.top,
  5998.         left: n.left - r.left
  5999.       }
  6000.     },
  6001.     offsetParent: function () {
  6002.       return this.map(function () {
  6003.         var e = this.offsetParent || D.body;
  6004.         while (e && !Nn.test(e.nodeName) && B.css(e, 'position') === 'static') e = e.offsetParent;
  6005.         return e
  6006.       })
  6007.     }
  6008.   }),
  6009.   B.each(['Left',
  6010.   'Top'], function (e, r) {
  6011.     var i = 'scroll' + r;
  6012.     B.fn[i] = function (r) {
  6013.       var s,
  6014.       o;
  6015.       return r === t ? (s = this[0], s ? (o = n(s), o ? 'pageXOffset' in o ? o[e ? 'pageYOffset' : 'pageXOffset'] : B.support.boxModel && o.document.documentElement[i] || o.document.body[i] : s[i])  : null)  : this.each(function () {
  6016.         o = n(this),
  6017.         o ? o.scrollTo(e ? B(o).scrollLeft()  : r, e ? r : B(o).scrollTop())  : this[i] = r
  6018.       })
  6019.     }
  6020.   }),
  6021.   B.each(['Height',
  6022.   'Width'], function (e, n) {
  6023.     var r = n.toLowerCase();
  6024.     B.fn['inner' + n] = function () {
  6025.       var e = this[0];
  6026.       return e ? e.style ? parseFloat(B.css(e, r, 'padding'))  : this[r]()  : null
  6027.     },
  6028.     B.fn['outer' + n] = function (e) {
  6029.       var t = this[0];
  6030.       return t ? t.style ? parseFloat(B.css(t, r, e ? 'margin' : 'border'))  : this[r]()  : null
  6031.     },
  6032.     B.fn[r] = function (e) {
  6033.       var i = this[0];
  6034.       if (!i) return e == null ? null : this;
  6035.       if (B.isFunction(e)) return this.each(function (t) {
  6036.         var n = B(this);
  6037.         n[r](e.call(this, t, n[r]()))
  6038.       });
  6039.       if (B.isWindow(i)) {
  6040.         var s = i.document.documentElement['client' + n],
  6041.         o = i.document.body;
  6042.         return i.document.compatMode === 'CSS1Compat' && s || o && o['client' + n] || s
  6043.       }
  6044.       if (i.nodeType === 9) return Math.max(i.documentElement['client' + n], i.body['scroll' + n], i.documentElement['scroll' + n], i.body['offset' + n], i.documentElement['offset' + n]);
  6045.       if (e === t) {
  6046.         var u = B.css(i, r),
  6047.         a = parseFloat(u);
  6048.         return B.isNumeric(a) ? a : u
  6049.       }
  6050.       return this.css(r, typeof e == 'string' ? e : e + 'px')
  6051.     }
  6052.   }),
  6053.   function (e) {
  6054.     var t,
  6055.     n,
  6056.     r = 1,
  6057.     i,
  6058.     s = this,
  6059.     o = !1,
  6060.     u = 'postMessage',
  6061.     a = 'addEventListener',
  6062.     f,
  6063.     l = s[u] && !e.browser.opera;
  6064.     e[u] = function (t, n, i) {
  6065.       if (!n) return;
  6066.       t = typeof t == 'string' ? t : e.param(t),
  6067.       i = i || parent,
  6068.       l ? i[u](t, n.replace(/([^:]+:\/\/[^\/]+).*/, '$1'))  : n && (i.location = n.replace(/#.*$/, '') + '#' + + (new Date) + r++ + '&' + t)
  6069.     },
  6070.     e.receiveMessage = f = function (r, u, c) {
  6071.       l ? (r && (i && f(), i = function (t) {
  6072.         if (typeof u == 'string' && t.origin !== u || e.isFunction(u) && u(t.origin) === o) return o;
  6073.         r(t)
  6074.       }), s[a] ? s[r ? a : 'removeEventListener']('message', i, o)  : s[r ? 'attachEvent' : 'detachEvent']('onmessage', i))  : (t && clearInterval(t), t = null, r && (c = typeof u == 'number' ? u : typeof c == 'number' ? c : 100, t = setInterval(function () {
  6075.         var e = document.location.hash,
  6076.         t = /^#?\d+&/;
  6077.         e !== n && t.test(e) && (n = e, r({
  6078.           data: e.replace(t, '')
  6079.         }))
  6080.       }, c)))
  6081.     }
  6082.   }(B),
  6083.   function (e) {
  6084.     e.deparam = function (t, n) {
  6085.       var r = {
  6086.       },
  6087.       i = {
  6088.         'true': !0,
  6089.         'false': !1,
  6090.         'null': null
  6091.       };
  6092.       return e.each(t.replace(/\+/g, ' ').split('&'), function (t, s) {
  6093.         var o = s.split('='),
  6094.         u = '';
  6095.         try {
  6096.           u = decodeURIComponent(o[0])
  6097.         } catch (a) {
  6098.           return
  6099.         }
  6100.         var f,
  6101.         l = r,
  6102.         c = 0,
  6103.         h = u.split(']['),
  6104.         p = h.length - 1;
  6105.         /\[/.test(h[0]) && /\]$/.test(h[p]) ? (h[p] = h[p].replace(/\]$/, ''), h = h.shift().split('[').concat(h), p = h.length - 1)  : p = 0;
  6106.         if (o.length === 2) {
  6107.           f = decodeURIComponent(o[1]),
  6108.           n && (f = f && !isNaN(f) ? + f : f === 'undefined' ? undefined : i[f] !== undefined ? i[f] : f);
  6109.           if (p) for (; c <= p; c++) u = h[c] === '' ? l.length : h[c],
  6110.           l = l[u] = c < p ? l[u] || (h[c + 1] && isNaN(h[c + 1]) ? {
  6111.           }
  6112.            : [
  6113.           ])  : f;
  6114.            else e.isArray(r[u]) ? r[u].push(f)  : r[u] !== undefined ? r[u] = [
  6115.             r[u],
  6116.             f
  6117.           ] : r[u] = f
  6118.         } else u && (r[u] = n ? undefined : '')
  6119.       }),
  6120.       r
  6121.     }
  6122.   }(B),
  6123.   function (e) {
  6124.     e.deparam = function (t, n) {
  6125.       var r = {
  6126.       },
  6127.       i = {
  6128.         'true': !0,
  6129.         'false': !1,
  6130.         'null': null
  6131.       };
  6132.       return e.each(t.replace(/\+/g, ' ').split('&'), function (t, s) {
  6133.         var o = s.split('='),
  6134.         u = '';
  6135.         try {
  6136.           u = decodeURIComponent(o[0])
  6137.         } catch (a) {
  6138.           return
  6139.         }
  6140.         var f,
  6141.         l = r,
  6142.         c = 0,
  6143.         h = u.split(']['),
  6144.         p = h.length - 1;
  6145.         /\[/.test(h[0]) && /\]$/.test(h[p]) ? (h[p] = h[p].replace(/\]$/, ''), h = h.shift().split('[').concat(h), p = h.length - 1)  : p = 0;
  6146.         if (o.length === 2) {
  6147.           f = decodeURIComponent(o[1]),
  6148.           n && (f = f && !isNaN(f) ? + f : f === 'undefined' ? undefined : i[f] !== undefined ? i[f] : f);
  6149.           if (p) for (; c <= p; c++) u = h[c] === '' ? l.length : h[c],
  6150.           l = l[u] = c < p ? l[u] || (h[c + 1] && isNaN(h[c + 1]) ? {
  6151.           }
  6152.            : [
  6153.           ])  : f;
  6154.            else e.isArray(r[u]) ? r[u].push(f)  : r[u] !== undefined ? r[u] = [
  6155.             r[u],
  6156.             f
  6157.           ] : r[u] = f
  6158.         } else u && (r[u] = n ? undefined : '')
  6159.       }),
  6160.       r
  6161.     }
  6162.   }(B),
  6163.   function (e) {
  6164.     var t,
  6165.     n,
  6166.     r = 1,
  6167.     i,
  6168.     s = this,
  6169.     o = !1,
  6170.     u = 'postMessage',
  6171.     a = 'addEventListener',
  6172.     f,
  6173.     l = s[u] && !e.browser.opera;
  6174.     e[u] = function (t, n, i) {
  6175.       if (!n) return;
  6176.       t = typeof t == 'string' ? t : e.param(t),
  6177.       i = i || parent,
  6178.       l ? i[u](t, n.replace(/([^:]+:\/\/[^\/]+).*/, '$1'))  : n && (i.location = n.replace(/#.*$/, '') + '#' + + (new Date) + r++ + '&' + t)
  6179.     },
  6180.     e.receiveMessage = f = function (r, u, c) {
  6181.       l ? (r && (i && f(), i = function (t) {
  6182.         if (typeof u == 'string' && t.origin !== u || e.isFunction(u) && u(t.origin) === o) return o;
  6183.         r(t)
  6184.       }), s[a] ? s[r ? a : 'removeEventListener']('message', i, o)  : s[r ? 'attachEvent' : 'detachEvent']('onmessage', i))  : (t && clearInterval(t), t = null, r && (c = typeof u == 'number' ? u : typeof c == 'number' ? c : 100, t = setInterval(function () {
  6185.         var e = document.location.hash,
  6186.         t = /^#?\d+&/;
  6187.         e !== n && t.test(e) && (n = e, r({
  6188.           data: e.replace(t, '')
  6189.         }))
  6190.       }, c)))
  6191.     }
  6192.   }(B),
  6193.   function (e) {
  6194.     e.deparam = function (t, n) {
  6195.       var r = {
  6196.       },
  6197.       i = {
  6198.         'true': !0,
  6199.         'false': !1,
  6200.         'null': null
  6201.       };
  6202.       return e.each(t.replace(/\+/g, ' ').split('&'), function (t, s) {
  6203.         var o = s.split('='),
  6204.         u = '';
  6205.         try {
  6206.           u = decodeURIComponent(o[0])
  6207.         } catch (a) {
  6208.           return
  6209.         }
  6210.         var f,
  6211.         l = r,
  6212.         c = 0,
  6213.         h = u.split(']['),
  6214.         p = h.length - 1;
  6215.         /\[/.test(h[0]) && /\]$/.test(h[p]) ? (h[p] = h[p].replace(/\]$/, ''), h = h.shift().split('[').concat(h), p = h.length - 1)  : p = 0;
  6216.         if (o.length === 2) {
  6217.           f = decodeURIComponent(o[1]),
  6218.           n && (f = f && !isNaN(f) ? + f : f === 'undefined' ? undefined : i[f] !== undefined ? i[f] : f);
  6219.           if (p) for (; c <= p; c++) u = h[c] === '' ? l.length : h[c],
  6220.           l = l[u] = c < p ? l[u] || (h[c + 1] && isNaN(h[c + 1]) ? {
  6221.           }
  6222.            : [
  6223.           ])  : f;
  6224.            else e.isArray(r[u]) ? r[u].push(f)  : r[u] !== undefined ? r[u] = [
  6225.             r[u],
  6226.             f
  6227.           ] : r[u] = f
  6228.         } else u && (r[u] = n ? undefined : '')
  6229.       }),
  6230.       r
  6231.     }
  6232.   }(B),
  6233.   function (e) {
  6234.     var t = {
  6235.     },
  6236.     n = Math.max,
  6237.     r = Math.min;
  6238.     t.c = {
  6239.     },
  6240.     t.c.d = e(document),
  6241.     t.c.t = function (e) {
  6242.       return e.originalEvent.touches.length - 1
  6243.     },
  6244.     t.o = function () {
  6245.       var n = this;
  6246.       this.o = null,
  6247.       this.$ = null,
  6248.       this.i = null,
  6249.       this.g = null,
  6250.       this.v = null,
  6251.       this.cv = null,
  6252.       this.x = 0,
  6253.       this.y = 0,
  6254.       this.w = 0,
  6255.       this.h = 0,
  6256.       this.$c = null,
  6257.       this.c = null,
  6258.       this.t = 0,
  6259.       this.isInit = !1,
  6260.       this.fgColor = null,
  6261.       this.pColor = null,
  6262.       this.dH = null,
  6263.       this.cH = null,
  6264.       this.eH = null,
  6265.       this.rH = null,
  6266.       this.scale = 1,
  6267.       this.relative = !1,
  6268.       this.relativeWidth = !1,
  6269.       this.relativeHeight = !1,
  6270.       this.$div = null,
  6271.       this.run = function () {
  6272.         var t = function (e, t) {
  6273.           var r;
  6274.           for (r in t) n.o[r] = t[r];
  6275.           n.init(),
  6276.           n._configure()._draw()
  6277.         };
  6278.         if (this.$.data('kontroled')) return;
  6279.         this.$.data('kontroled', !0),
  6280.         this.extend(),
  6281.         this.o = e.extend({
  6282.           min: this.$.data('min') || 0,
  6283.           max: this.$.data('max') || 100,
  6284.           stopper: !0,
  6285.           readOnly: this.$.data('readonly') || this.$.attr('readonly') == 'readonly',
  6286.           cursor: this.$.data('cursor') === !0 && 30 || this.$.data('cursor') || 0,
  6287.           thickness: this.$.data('thickness') && Math.max(Math.min(this.$.data('thickness'), 1), 0.01) || 0.35,
  6288.           lineCap: this.$.data('linecap') || 'butt',
  6289.           width: this.$.data('width') || 200,
  6290.           height: this.$.data('height') || 200,
  6291.           displayInput: this.$.data('displayinput') == null || this.$.data('displayinput'),
  6292.           displayPrevious: this.$.data('displayprevious'),
  6293.           fgColor: this.$.data('fgcolor') || '#87CEEB',
  6294.           inputColor: this.$.data('inputcolor'),
  6295.           font: this.$.data('font') || 'Arial',
  6296.           fontWeight: this.$.data('font-weight') || 'bold',
  6297.           inline: !1,
  6298.           step: this.$.data('step') || 1,
  6299.           draw: null,
  6300.           change: null,
  6301.           cancel: null,
  6302.           release: null,
  6303.           error: null
  6304.         }, this.o),
  6305.         this.o.inputColor || (this.o.inputColor = this.o.fgColor),
  6306.         this.$.is('fieldset') ? (this.v = {
  6307.         }, this.i = this.$.find('input'), this.i.each(function (t) {
  6308.           var r = e(this);
  6309.           n.i[t] = r,
  6310.           n.v[t] = r.val(),
  6311.           r.bind('change', function () {
  6312.             var e = {
  6313.             };
  6314.             e[t] = r.val(),
  6315.             n.val(e)
  6316.           })
  6317.         }), this.$.find('legend').remove())  : (this.i = this.$, this.v = this.$.val(), this.v == '' && (this.v = this.o.min), this.$.bind('change', function () {
  6318.           n.val(n._validate(n.$.val()))
  6319.         })),
  6320.         !this.o.displayInput && this.$.hide(),
  6321.         this.$c = e(document.createElement('canvas')),
  6322.         typeof G_vmlCanvasManager != 'undefined' && G_vmlCanvasManager.initElement(this.$c[0]),
  6323.         this.c = this.$c[0].getContext ? this.$c[0].getContext('2d')  : null;
  6324.         if (!this.c) {
  6325.           this.o.error && this.o.error();
  6326.           return
  6327.         }
  6328.         return this.scale = (window.devicePixelRatio || 1) / (this.c.webkitBackingStorePixelRatio || this.c.mozBackingStorePixelRatio || this.c.msBackingStorePixelRatio || this.c.oBackingStorePixelRatio || this.c.backingStorePixelRatio || 1),
  6329.         this.relativeWidth = this.o.width % 1 !== 0 && this.o.width.indexOf('%'),
  6330.         this.relativeHeight = this.o.height % 1 !== 0 && this.o.height.indexOf('%'),
  6331.         this.relative = this.relativeWidth || this.relativeHeight,
  6332.         this.$div = e('<div style="' + (this.o.inline ? 'display:inline;' : '') + '"></div>'),
  6333.         this.$.wrap(this.$div).before(this.$c),
  6334.         this.$div = this.$.parent(),
  6335.         this._carve(),
  6336.         this.v instanceof Object ? (this.cv = {
  6337.         }, this.copy(this.v, this.cv))  : this.cv = this.v,
  6338.         this.$.bind('configure', t).parent().bind('configure', t),
  6339.         this._listen()._configure()._xy().init(),
  6340.         this.isInit = !0,
  6341.         this._draw(),
  6342.         this
  6343.       },
  6344.       this._carve = function () {
  6345.         if (this.relative) {
  6346.           var e = this.relativeWidth ? this.$div.parent().width() * parseInt(this.o.width) / 100 : this.$div.parent().width(),
  6347.           t = this.relativeHeight ? this.$div.parent().height() * parseInt(this.o.height) / 100 : this.$div.parent().height();
  6348.           this.w = this.h = Math.min(e, t)
  6349.         } else this.w = this.o.width,
  6350.         this.h = this.o.height;
  6351.         return this.$div.css({
  6352.           width: this.w + 'px',
  6353.           height: this.h + 'px'
  6354.         }),
  6355.         this.$c.attr({
  6356.           width: this.w,
  6357.           height: this.h
  6358.         }),
  6359.         this.scale !== 1 && (this.$c[0].width = this.$c[0].width * this.scale, this.$c[0].height = this.$c[0].height * this.scale, this.$c.width(this.w), this.$c.height(this.h)),
  6360.         this
  6361.       },
  6362.       this._draw = function () {
  6363.         var e = !0;
  6364.         n.g = n.c,
  6365.         n.clear(),
  6366.         n.dH && (e = n.dH()),
  6367.         e !== !1 && n.draw()
  6368.       },
  6369.       this._touch = function (e) {
  6370.         var r = function (e) {
  6371.           var t = n.xy2val(e.originalEvent.touches[n.t].pageX, e.originalEvent.touches[n.t].pageY);
  6372.           if (t == n.cv) return;
  6373.           if (n.cH && n.cH(t) === !1) return;
  6374.           n.change(n._validate(t)),
  6375.           n._draw()
  6376.         };
  6377.         return this.t = t.c.t(e),
  6378.         r(e),
  6379.         t.c.d.bind('touchmove.k', r).bind('touchend.k', function () {
  6380.           t.c.d.unbind('touchmove.k touchend.k');
  6381.           if (n.rH && n.rH(n.cv) === !1) return;
  6382.           n.val(n.cv)
  6383.         }),
  6384.         this
  6385.       },
  6386.       this._mouse = function (e) {
  6387.         var r = function (e) {
  6388.           var t = n.xy2val(e.pageX, e.pageY);
  6389.           if (t == n.cv) return;
  6390.           if (n.cH && n.cH(t) === !1) return;
  6391.           n.change(n._validate(t)),
  6392.           n._draw()
  6393.         };
  6394.         return r(e),
  6395.         t.c.d.bind('mousemove.k', r).bind('keyup.k', function (e) {
  6396.           if (e.keyCode === 27) {
  6397.             t.c.d.unbind('mouseup.k mousemove.k keyup.k');
  6398.             if (n.eH && n.eH() === !1) return;
  6399.             n.cancel()
  6400.           }
  6401.         }).bind('mouseup.k', function (e) {
  6402.           t.c.d.unbind('mousemove.k mouseup.k keyup.k');
  6403.           if (n.rH && n.rH(n.cv) === !1) return;
  6404.           n.val(n.cv)
  6405.         }),
  6406.         this
  6407.       },
  6408.       this._xy = function () {
  6409.         var e = this.$c.offset();
  6410.         return this.x = e.left,
  6411.         this.y = e.top,
  6412.         this
  6413.       },
  6414.       this._listen = function () {
  6415.         return this.o.readOnly ? this.$.attr('readonly', 'readonly')  : (this.$c.bind('mousedown', function (e) {
  6416.           e.preventDefault(),
  6417.           n._xy()._mouse(e)
  6418.         }).bind('touchstart', function (e) {
  6419.           e.preventDefault(),
  6420.           n._xy()._touch(e)
  6421.         }), this.listen()),
  6422.         this.relative && e(window).resize(function () {
  6423.           n._carve().init(),
  6424.           n._draw()
  6425.         }),
  6426.         this
  6427.       },
  6428.       this._configure = function () {
  6429.         return this.o.draw && (this.dH = this.o.draw),
  6430.         this.o.change && (this.cH = this.o.change),
  6431.         this.o.cancel && (this.eH = this.o.cancel),
  6432.         this.o.release && (this.rH = this.o.release),
  6433.         this.o.displayPrevious ? (this.pColor = this.h2rgba(this.o.fgColor, '0.4'), this.fgColor = this.h2rgba(this.o.fgColor, '0.6'))  : this.fgColor = this.o.fgColor,
  6434.         this
  6435.       },
  6436.       this._clear = function () {
  6437.         this.$c[0].width = this.$c[0].width
  6438.       },
  6439.       this._validate = function (e) {
  6440.         return ~~((e < 0 ? - 0.5 : 0.5) + e / this.o.step) * this.o.step
  6441.       },
  6442.       this.listen = function () {
  6443.       },
  6444.       this.extend = function () {
  6445.       },
  6446.       this.init = function () {
  6447.       },
  6448.       this.change = function (e) {
  6449.       },
  6450.       this.val = function (e) {
  6451.       },
  6452.       this.xy2val = function (e, t) {
  6453.       },
  6454.       this.draw = function () {
  6455.       },
  6456.       this.clear = function () {
  6457.         this._clear()
  6458.       },
  6459.       this.h2rgba = function (e, t) {
  6460.         var n;
  6461.         return e = e.substring(1, 7),
  6462.         n = [
  6463.           parseInt(e.substring(0, 2), 16),
  6464.           parseInt(e.substring(2, 4), 16),
  6465.           parseInt(e.substring(4, 6), 16)
  6466.         ],
  6467.         'rgba(' + n[0] + ',' + n[1] + ',' + n[2] + ',' + t + ')'
  6468.       },
  6469.       this.copy = function (e, t) {
  6470.         for (var n in e) t[n] = e[n]
  6471.       }
  6472.     },
  6473.     t.Dial = function () {
  6474.       t.o.call(this),
  6475.       this.startAngle = null,
  6476.       this.xy = null,
  6477.       this.radius = null,
  6478.       this.lineWidth = null,
  6479.       this.cursorExt = null,
  6480.       this.w2 = null,
  6481.       this.PI2 = 2 * Math.PI,
  6482.       this.extend = function () {
  6483.         this.o = e.extend({
  6484.           bgColor: this.$.data('bgcolor') || '#EEEEEE',
  6485.           angleOffset: this.$.data('angleoffset') || 0,
  6486.           angleArc: this.$.data('anglearc') || 360,
  6487.           inline: !0
  6488.         }, this.o)
  6489.       },
  6490.       this.val = function (e) {
  6491.         if (null == e) return this.v;
  6492.         this.cv = this.o.stopper ? n(r(e, this.o.max), this.o.min)  : e,
  6493.         this.v = this.cv,
  6494.         this.$.val(this.v),
  6495.         this._draw()
  6496.       },
  6497.       this.xy2val = function (e, t) {
  6498.         var i,
  6499.         s;
  6500.         return i = Math.atan2(e - (this.x + this.w2), - (t - this.y - this.w2)) - this.angleOffset,
  6501.         this.angleArc != this.PI2 && i < 0 && i > - 0.5 ? i = 0 : i < 0 && (i += this.PI2),
  6502.         s = ~~(0.5 + i * (this.o.max - this.o.min) / this.angleArc) + this.o.min,
  6503.         this.o.stopper && (s = n(r(s, this.o.max), this.o.min)),
  6504.         s
  6505.       },
  6506.       this.listen = function () {
  6507.         var t = this,
  6508.         i = function (e) {
  6509.           e.preventDefault();
  6510.           var n = e.originalEvent,
  6511.           r = n.detail || n.wheelDeltaX,
  6512.           i = n.detail || n.wheelDeltaY,
  6513.           s = parseInt(t.$.val()) + (r > 0 || i > 0 ? t.o.step : r < 0 || i < 0 ? - t.o.step : 0);
  6514.           if (t.cH && t.cH(s) === !1) return;
  6515.           t.val(s)
  6516.         },
  6517.         s,
  6518.         o,
  6519.         u = 1,
  6520.         a = {
  6521.           37: - t.o.step,
  6522.           38: t.o.step,
  6523.           39: t.o.step,
  6524.           40: - t.o.step
  6525.         };
  6526.         this.$.bind('keydown', function (i) {
  6527.           var f = i.keyCode;
  6528.           f >= 96 && f <= 105 && (f = i.keyCode = f - 48),
  6529.           s = parseInt(String.fromCharCode(f));
  6530.           if (isNaN(s)) {
  6531.             f !== 13 && f !== 8 && f !== 9 && f !== 189 && i.preventDefault();
  6532.             if (e.inArray(f, [
  6533.               37,
  6534.               38,
  6535.               39,
  6536.               40
  6537.             ]) > - 1) {
  6538.               i.preventDefault();
  6539.               var l = parseInt(t.$.val()) + a[f] * u;
  6540.               t.o.stopper && (l = n(r(l, t.o.max), t.o.min)),
  6541.               t.change(l),
  6542.               t._draw(),
  6543.               o = window.setTimeout(function () {
  6544.                 u *= 2
  6545.               }, 30)
  6546.             }
  6547.           }
  6548.         }).bind('keyup', function (e) {
  6549.           isNaN(s) ? o && (window.clearTimeout(o), o = null, u = 1, t.val(t.$.val()))  : t.$.val() > t.o.max && t.$.val(t.o.max) || t.$.val() < t.o.min && t.$.val(t.o.min)
  6550.         }),
  6551.         this.$c.bind('mousewheel DOMMouseScroll', i),
  6552.         this.$.bind('mousewheel DOMMouseScroll', i)
  6553.       },
  6554.       this.init = function () {
  6555.         if (this.v < this.o.min || this.v > this.o.max) this.v = this.o.min;
  6556.         this.$.val(this.v),
  6557.         this.w2 = this.w / 2,
  6558.         this.cursorExt = this.o.cursor / 100,
  6559.         this.xy = this.w2 * this.scale,
  6560.         this.lineWidth = this.xy * this.o.thickness,
  6561.         this.lineCap = this.o.lineCap,
  6562.         this.radius = this.xy - this.lineWidth / 2,
  6563.         this.o.angleOffset && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset),
  6564.         this.o.angleArc && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc),
  6565.         this.angleOffset = this.o.angleOffset * Math.PI / 180,
  6566.         this.angleArc = this.o.angleArc * Math.PI / 180,
  6567.         this.startAngle = 1.5 * Math.PI + this.angleOffset,
  6568.         this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc;
  6569.         var e = n(String(Math.abs(this.o.max)).length, String(Math.abs(this.o.min)).length, 2) + 2;
  6570.         this.o.displayInput && this.i.css({
  6571.           width: (this.w / 2 + 4 >> 0) + 'px',
  6572.           height: (this.w / 3 >> 0) + 'px',
  6573.           position: 'absolute',
  6574.           'vertical-align': 'middle',
  6575.           'margin-top': (this.w / 3 >> 0) + 'px',
  6576.           'margin-left': '-' + (this.w * 3 / 4 + 2 >> 0) + 'px',
  6577.           border: 0,
  6578.           background: 'none',
  6579.           font: this.o.fontWeight + ' ' + (this.w / e >> 0) + 'px ' + this.o.font,
  6580.           'text-align': 'center',
  6581.           color: this.o.inputColor || this.o.fgColor,
  6582.           padding: '0px',
  6583.           '-webkit-appearance': 'none'
  6584.         }) || this.i.css({
  6585.           width: '0px',
  6586.           visibility: 'hidden'
  6587.         })
  6588.       },
  6589.       this.change = function (e) {
  6590.         this.cv = e,
  6591.         this.$.val(e)
  6592.       },
  6593.       this.angle = function (e) {
  6594.         return (e - this.o.min) * this.angleArc / (this.o.max - this.o.min)
  6595.       },
  6596.       this.draw = function () {
  6597.         var e = this.g,
  6598.         t = this.angle(this.cv),
  6599.         n = this.startAngle,
  6600.         r = n + t,
  6601.         i,
  6602.         s,
  6603.         o = 1;
  6604.         e.lineWidth = this.lineWidth,
  6605.         e.lineCap = this.lineCap,
  6606.         this.o.cursor && (n = r - this.cursorExt) && (r += this.cursorExt),
  6607.         e.beginPath(),
  6608.         e.strokeStyle = this.o.bgColor,
  6609.         e.arc(this.xy, this.xy, this.radius, this.endAngle - 0.00001, this.startAngle + 0.00001, !0),
  6610.         e.stroke(),
  6611.         this.o.displayPrevious && (s = this.startAngle + this.angle(this.v), i = this.startAngle, this.o.cursor && (i = s - this.cursorExt) && (s += this.cursorExt), e.beginPath(), e.strokeStyle = this.pColor, e.arc(this.xy, this.xy, this.radius, i, s, !1), e.stroke(), o = this.cv == this.v),
  6612.         e.beginPath(),
  6613.         e.strokeStyle = o ? this.o.fgColor : this.fgColor,
  6614.         e.arc(this.xy, this.xy, this.radius, n, r, !1),
  6615.         e.stroke()
  6616.       },
  6617.       this.cancel = function () {
  6618.         this.val(this.v)
  6619.       }
  6620.     },
  6621.     e.fn.dial = e.fn.knob = function (n) {
  6622.       return this.each(function () {
  6623.         var r = new t.Dial;
  6624.         r.o = n,
  6625.         r.$ = e(this),
  6626.         r.run()
  6627.       }).parent()
  6628.     }
  6629.   }(B),
  6630.   function (e) {
  6631.     function n(e) {
  6632.       if (i.raw) return e;
  6633.       try {
  6634.         return decodeURIComponent(e.replace(t, ' '))
  6635.       } catch (n) {
  6636.       }
  6637.     }
  6638.     function r(e) {
  6639.       e.indexOf('"') === 0 && (e = e.slice(1, - 1).replace(/\\"/g, '"').replace(/\\\\/g, '\\')),
  6640.       e = n(e);
  6641.       try {
  6642.         return i.json ? JSON.parse(e)  : e
  6643.       } catch (t) {
  6644.       }
  6645.     }
  6646.     var t = /\+/g,
  6647.     i = e.cookie = function (t, s, o) {
  6648.       if (s !== undefined) {
  6649.         o = e.extend({
  6650.         }, i.defaults, o);
  6651.         if (typeof o.expires == 'number') {
  6652.           var u = o.expires,
  6653.           a = o.expires = new Date;
  6654.           a.setDate(a.getDate() + u)
  6655.         }
  6656.         return s = i.json ? JSON.stringify(s)  : String(s),
  6657.         document.cookie = [
  6658.           i.raw ? t : encodeURIComponent(t),
  6659.           '=',
  6660.           i.raw ? s : encodeURIComponent(s),
  6661.           o.expires ? '; expires=' + o.expires.toUTCString()  : '',
  6662.           o.path ? '; path=' + o.path : '',
  6663.           o.domain ? '; domain=' + o.domain : '',
  6664.           o.secure ? '; secure' : ''
  6665.         ].join('')
  6666.       }
  6667.       var f = t ? undefined : {
  6668.       },
  6669.       l = document.cookie ? document.cookie.split('; ')  : [
  6670.       ];
  6671.       for (var c = 0, h = l.length; c < h; c++) {
  6672.         var p = l[c].split('='),
  6673.         d = n(p.shift()),
  6674.         v = p.join('=');
  6675.         if (t && t === d) {
  6676.           f = r(v);
  6677.           break
  6678.         }
  6679.         !t && (v = r(v)) !== undefined && (f[d] = v)
  6680.       }
  6681.       return f
  6682.     };
  6683.     i.defaults = {
  6684.     },
  6685.     e.removeCookie = function (t, n) {
  6686.       return e.cookie(t) !== undefined ? (e.cookie(t, '', e.extend({
  6687.       }, n, {
  6688.         expires: - 1
  6689.       })), !0)  : !1
  6690.     }
  6691.   }(B),
  6692.   function (e) {
  6693.     function r(t) {
  6694.       var n = arguments.length,
  6695.       r = window[t],
  6696.       i = arguments,
  6697.       s = i[1],
  6698.       o,
  6699.       u,
  6700.       a;
  6701.       if (n < 2) throw new Error('Minimum 2 arguments must be given');
  6702.       if (e.isArray(s)) {
  6703.         u = {
  6704.         };
  6705.         for (var f in s) {
  6706.           o = s[f];
  6707.           try {
  6708.             u[o] = JSON.parse(r.getItem(o))
  6709.           } catch (l) {
  6710.             u[o] = r.getItem(o)
  6711.           }
  6712.         }
  6713.         return u
  6714.       }
  6715.       if (n != 2) {
  6716.         try {
  6717.           u = JSON.parse(r.getItem(s))
  6718.         } catch (l) {
  6719.           throw new ReferenceError(s + ' is not defined in this storage')
  6720.         }
  6721.         for (var f = 2; f < n - 1; f++) {
  6722.           u = u[i[f]];
  6723.           if (u === undefined) throw new ReferenceError([].slice.call(i, 1, f + 1).join('.') + ' is not defined in this storage')
  6724.         }
  6725.         if (e.isArray(i[f])) {
  6726.           a = u,
  6727.           u = {
  6728.           };
  6729.           for (var c in i[f]) u[i[f][c]] = a[i[f][c]];
  6730.           return u
  6731.         }
  6732.         return u[i[f]]
  6733.       }
  6734.       try {
  6735.         return JSON.parse(r.getItem(s))
  6736.       } catch (l) {
  6737.         return r.getItem(s)
  6738.       }
  6739.     }
  6740.     function i(t) {
  6741.       var n = arguments.length,
  6742.       r = window[t],
  6743.       i = arguments,
  6744.       s = i[1],
  6745.       o = i[2],
  6746.       u,
  6747.       a = {
  6748.       },
  6749.       f;
  6750.       if (n < 2 || !e.isPlainObject(s) && n < 3) throw new Error('Minimum 3 arguments must be given or second parameter must be an object');
  6751.       if (e.isPlainObject(s)) {
  6752.         for (var l in s) u = s[l],
  6753.         e.isPlainObject(u) ? r.setItem(l, JSON.stringify(u))  : r.setItem(l, u);
  6754.         return s
  6755.       }
  6756.       if (n == 3) return typeof o == 'object' ? r.setItem(s, JSON.stringify(o))  : r.setItem(s, o),
  6757.       o;
  6758.       try {
  6759.         f = r.getItem(s),
  6760.         f != null && (a = JSON.parse(f))
  6761.       } catch (c) {
  6762.       }
  6763.       f = a;
  6764.       for (var l = 2; l < n - 2; l++) {
  6765.         u = i[l];
  6766.         if (!f[u] || !e.isPlainObject(f[u])) f[u] = {
  6767.         };
  6768.         f = f[u]
  6769.       }
  6770.       return f[i[l]] = i[l + 1],
  6771.       r.setItem(s, JSON.stringify(a)),
  6772.       a
  6773.     }
  6774.     function s(t) {
  6775.       var n = arguments.length,
  6776.       r = window[t],
  6777.       i = arguments,
  6778.       s = i[1],
  6779.       o,
  6780.       u;
  6781.       if (n < 2) throw new Error('Minimum 2 arguments must be given');
  6782.       if (e.isArray(s)) {
  6783.         for (var a in s) r.removeItem(s[a]);
  6784.         return !0
  6785.       }
  6786.       if (n == 2) return r.removeItem(s),
  6787.       !0;
  6788.       try {
  6789.         o = u = JSON.parse(r.getItem(s))
  6790.       } catch (f) {
  6791.         throw new ReferenceError(s + ' is not defined in this storage')
  6792.       }
  6793.       for (var a = 2; a < n - 1; a++) {
  6794.         u = u[i[a]];
  6795.         if (u === undefined) throw new ReferenceError([].slice.call(i, 1, a).join('.') + ' is not defined in this storage')
  6796.       }
  6797.       if (e.isArray(i[a])) for (var l in i[a]) delete u[i[a][l]];
  6798.        else delete u[i[a]];
  6799.       return r.setItem(s, JSON.stringify(o)),
  6800.       !0
  6801.     }
  6802.     function o(t, n) {
  6803.       var r = f(t);
  6804.       for (var i in r) s(t, r[i]);
  6805.       if (n) for (var i in e.namespaceStorages) l(i)
  6806.     }
  6807.     function u(t) {
  6808.       var n = arguments.length,
  6809.       i = arguments,
  6810.       s = window[t],
  6811.       o = i[1];
  6812.       if (n == 1) return f(t).length == 0;
  6813.       if (e.isArray(o)) {
  6814.         for (var a = 0; a < o.length; a++) if (!u(t, o[a])) return !1;
  6815.         return !0
  6816.       }
  6817.       try {
  6818.         var l = r.apply(this, arguments);
  6819.         e.isArray(i[n - 1]) || (l = {
  6820.           totest: l
  6821.         });
  6822.         for (var a in l) if (!(e.isPlainObject(l[a]) && e.isEmptyObject(l[a]) || e.isArray(l[a]) && !l[a].length || !l[a])) return !1;
  6823.         return !0
  6824.       } catch (c) {
  6825.         return !0
  6826.       }
  6827.     }
  6828.     function a(t) {
  6829.       var n = arguments.length,
  6830.       i = arguments,
  6831.       s = window[t],
  6832.       o = i[1];
  6833.       if (n < 2) throw new Error('Minimum 2 arguments must be given');
  6834.       if (e.isArray(o)) {
  6835.         for (var u = 0; u < o.length; u++) if (!a(t, o[u])) return !1;
  6836.         return !0
  6837.       }
  6838.       try {
  6839.         var f = r.apply(this, arguments);
  6840.         e.isArray(i[n - 1]) || (f = {
  6841.           totest: f
  6842.         });
  6843.         for (var u in f) if (f[u] === undefined || f[u] === null) return !1;
  6844.         return !0
  6845.       } catch (l) {
  6846.         return !1
  6847.       }
  6848.     }
  6849.     function f(t) {
  6850.       var n = arguments.length,
  6851.       i = window[t],
  6852.       s = arguments,
  6853.       o = s[1],
  6854.       u = [
  6855.       ],
  6856.       a = {
  6857.       };
  6858.       n > 1 ? a = r.apply(this, s)  : a = i;
  6859.       if (a._cookie) for (var f in e.cookie()) f != '' && u.push(f.replace(a._prefix, ''));
  6860.        else for (var l in a) u.push(l);
  6861.       return u
  6862.     }
  6863.     function l(t) {
  6864.       if (!t || typeof t != 'string') throw new Error('First parameter must be a string');
  6865.       h ? (window.localStorage.getItem(t) || window.localStorage.setItem(t, '{}'), window.sessionStorage.getItem(t) || window.sessionStorage.setItem(t, '{}'))  : (window.localCookieStorage.getItem(t) || window.localCookieStorage.setItem(t, '{}'), window.sessionCookieStorage.getItem(t) || window.sessionCookieStorage.setItem(t, '{}'));
  6866.       var n = {
  6867.         localStorage: e.extend({
  6868.         }, e.localStorage, {
  6869.           _ns: t
  6870.         }),
  6871.         sessionStorage: e.extend({
  6872.         }, e.sessionStorage, {
  6873.           _ns: t
  6874.         })
  6875.       };
  6876.       return e.cookie && (window.cookieStorage.getItem(t) || window.cookieStorage.setItem(t, '{}'), n.cookieStorage = e.extend({
  6877.       }, e.cookieStorage, {
  6878.         _ns: t
  6879.       })),
  6880.       e.namespaceStorages[t] = n,
  6881.       n
  6882.     }
  6883.     function c(e) {
  6884.       var t = 'jsapi';
  6885.       try {
  6886.         return window[e] ? (window[e].setItem(t, t), window[e].removeItem(t), !0)  : !1
  6887.       } catch (n) {
  6888.         return !1
  6889.       }
  6890.     }
  6891.     var t = 'ls_',
  6892.     n = 'ss_',
  6893.     h = c('localStorage'),
  6894.     p = {
  6895.       _type: '',
  6896.       _ns: '',
  6897.       _callMethod: function (e, t) {
  6898.         var n = [
  6899.           this._type
  6900.         ],
  6901.         t = Array.prototype.slice.call(t),
  6902.         r = t[0];
  6903.         return this._ns && n.push(this._ns),
  6904.         typeof r == 'string' && r.indexOf('.') !== - 1 && (t.shift(), [
  6905.         ].unshift.apply(t, r.split('.'))),
  6906.         [
  6907.         ].push.apply(n, t),
  6908.         e.apply(this, n)
  6909.       },
  6910.       get: function () {
  6911.         return this._callMethod(r, arguments)
  6912.       },
  6913.       set: function () {
  6914.         var t = arguments.length,
  6915.         n = arguments,
  6916.         r = n[0];
  6917.         if (t < 1 || !e.isPlainObject(r) && t < 2) throw new Error('Minimum 2 arguments must be given or first parameter must be an object');
  6918.         if (e.isPlainObject(r) && this._ns) {
  6919.           for (var s in r) i(this._type, this._ns, s, r[s]);
  6920.           return r
  6921.         }
  6922.         var o = this._callMethod(i, n);
  6923.         return this._ns ? o[r.split('.') [0]] : o
  6924.       },
  6925.       remove: function () {
  6926.         if (arguments.length < 1) throw new Error('Minimum 1 argument must be given');
  6927.         return this._callMethod(s, arguments)
  6928.       },
  6929.       removeAll: function (e) {
  6930.         return this._ns ? (i(this._type, this._ns, {
  6931.         }), !0)  : o(this._type, e)
  6932.       },
  6933.       isEmpty: function () {
  6934.         return this._callMethod(u, arguments)
  6935.       },
  6936.       isSet: function () {
  6937.         if (arguments.length < 1) throw new Error('Minimum 1 argument must be given');
  6938.         return this._callMethod(a, arguments)
  6939.       },
  6940.       keys: function () {
  6941.         return this._callMethod(f, arguments)
  6942.       }
  6943.     };
  6944.     if (e.cookie) {
  6945.       window.name || (window.name = Math.floor(Math.random() * 100000000));
  6946.       var d = {
  6947.         _cookie: !0,
  6948.         _prefix: '',
  6949.         _expires: null,
  6950.         _path: null,
  6951.         _domain: null,
  6952.         setItem: function (t, n) {
  6953.           e.cookie(this._prefix + t, n, {
  6954.             expires: this._expires,
  6955.             path: this._path,
  6956.             domain: this._domain
  6957.           })
  6958.         },
  6959.         getItem: function (t) {
  6960.           return e.cookie(this._prefix + t)
  6961.         },
  6962.         removeItem: function (t) {
  6963.           return e.removeCookie(this._prefix + t)
  6964.         },
  6965.         clear: function () {
  6966.           for (var r in e.cookie()) r != '' && (!this._prefix && r.indexOf(t) === - 1 && r.indexOf(n) === - 1 || this._prefix && r.indexOf(this._prefix) === 0) && e.removeCookie(r)
  6967.         },
  6968.         setExpires: function (e) {
  6969.           return this._expires = e,
  6970.           this
  6971.         },
  6972.         setPath: function (e) {
  6973.           return this._path = e,
  6974.           this
  6975.         },
  6976.         setDomain: function (e) {
  6977.           return this._domain = e,
  6978.           this
  6979.         },
  6980.         setConf: function (e) {
  6981.           return e.path && (this._path = e.path),
  6982.           e.domain && (this._domain = e.domain),
  6983.           e.expires && (this._expires = e.expires),
  6984.           this
  6985.         },
  6986.         setDefaultConf: function () {
  6987.           this._path = this._domain = this._expires = null
  6988.         }
  6989.       };
  6990.       h || (window.localCookieStorage = e.extend({
  6991.       }, d, {
  6992.         _prefix: t,
  6993.         _expires: 3650
  6994.       }), window.sessionCookieStorage = e.extend({
  6995.       }, d, {
  6996.         _prefix: n + window.name + '_'
  6997.       })),
  6998.       B.cookieStorage = e.extend({
  6999.       }, d),
  7000.       e.cookieStorage = e.extend({
  7001.       }, p, {
  7002.         _type: 'cookieStorage',
  7003.         setExpires: function (e) {
  7004.           return B.cookieStorage.setExpires(e),
  7005.           this
  7006.         },
  7007.         setPath: function (e) {
  7008.           return B.cookieStorage.setPath(e),
  7009.           this
  7010.         },
  7011.         setDomain: function (e) {
  7012.           return B.cookieStorage.setDomain(e),
  7013.           this
  7014.         },
  7015.         setConf: function (e) {
  7016.           return B.cookieStorage.setConf(e),
  7017.           this
  7018.         },
  7019.         setDefaultConf: function () {
  7020.           return B.cookieStorage.setDefaultConf(),
  7021.           this
  7022.         }
  7023.       })
  7024.     }
  7025.     e.initNamespaceStorage = function (e) {
  7026.       return l(e)
  7027.     },
  7028.     h ? (e.localStorage = e.extend({
  7029.     }, p, {
  7030.       _type: 'localStorage'
  7031.     }), e.sessionStorage = e.extend({
  7032.     }, p, {
  7033.       _type: 'sessionStorage'
  7034.     }))  : (e.localStorage = e.extend({
  7035.     }, p, {
  7036.       _type: 'localCookieStorage'
  7037.     }), e.sessionStorage = e.extend({
  7038.     }, p, {
  7039.       _type: 'sessionCookieStorage'
  7040.     })),
  7041.     e.namespaceStorages = {
  7042.     },
  7043.     e.removeAllStorages = function (t) {
  7044.       e.localStorage.removeAll(t),
  7045.       e.sessionStorage.removeAll(t),
  7046.       e.cookieStorage && e.cookieStorage.removeAll(t),
  7047.       t || (e.namespaceStorages = {
  7048.       })
  7049.     }
  7050.   }(B),
  7051.   tp.define('jq', [
  7052.   ], function () {
  7053.     return B
  7054.   })
  7055. }(window),
  7056. tp.define('jq', function () {
  7057. }),
  7058. tp.define('main', [
  7059.   'jq',
  7060.   'util',
  7061.   'api',
  7062.   'fingerprint',
  7063.   'user',
  7064.   'murmurhash3',
  7065.   'activetimer',
  7066.   'scrollDepth',
  7067.   'doubleClickForPublisher',
  7068.   'offer',
  7069.   'viewportExit',
  7070.   'idle',
  7071.   'log',
  7072.   'experience'
  7073. ], function (e, t, n, r, i, s, o, u, a, f, l, c, h, p) {
  7074.   function v() {
  7075.     return t.getCurrentDomainFromCookie(d.__private__.VISIT_ID_COOKIE)
  7076.   }
  7077.   function m(e, t) {
  7078.     var n = d.__private__.collectedAds;
  7079.     d.__private__.collectedAds = {
  7080.     };
  7081.     var r = {
  7082.     };
  7083.     for (var i in n) if (n.hasOwnProperty(i)) {
  7084.       r[i] = r[i] || [
  7085.       ];
  7086.       for (var s in n[i]) n[i].hasOwnProperty(s) && r[i].push(n[i][s])
  7087.     }
  7088.     d.trackAds(r, e, t)
  7089.   }
  7090.   function g() {
  7091.     function a(e, t, n) {
  7092.       return n = n || '0',
  7093.       e += '',
  7094.       e.length >= t ? e : (new Array(t - e.length + 1)).join(n) + e
  7095.     }
  7096.     var e = t.randomString(16),
  7097.     n = s.x64hash128([r.getFingerprint(),
  7098.     window.location.href].join('')),
  7099.     i = new Date,
  7100.     o = [
  7101.       a(i.getFullYear(), 4),
  7102.       a(i.getMonth() + 1, 2),
  7103.       a(i.getDate(), 2),
  7104.       a(i.getHours(), 2),
  7105.       a(i.getMinutes(), 2),
  7106.       a(i.getSeconds(), 2),
  7107.       a(i.getMilliseconds(), 3)
  7108.     ].join('-'),
  7109.     u = [
  7110.       o,
  7111.       e,
  7112.       n
  7113.     ].join('-');
  7114.     return u
  7115.   }
  7116.   function y() {
  7117.     var e;
  7118.     try {
  7119.       e = JSON.parse(t.__protected__.getCookie(d.__private__.VISIT_ID_COOKIE))
  7120.     } catch (n) {
  7121.       e = {
  7122.       }
  7123.     }
  7124.     return e
  7125.   }
  7126.   function b(e) {
  7127.     var t = {
  7128.       path: '/',
  7129.       expires: 1,
  7130.       domain: d.__private__.visitContainer.currentDomain
  7131.     };
  7132.     return e && (t.domain = e),
  7133.     t
  7134.   }
  7135.   function w(e, n) {
  7136.     e.domain = n.domain,
  7137.     e.time = (new Date).getTime(),
  7138.     t.__protected__.setCookie(d.__private__.VISIT_ID_COOKIE, JSON.stringify(e), n)
  7139.   }
  7140.   function E(e) {
  7141.     var n = d.__private__.getVisitCookieOptions();
  7142.     !e.domain && !d.__private__.visitContainer.currentDomain ? t.waitCall('domainIsReceived', function (t) {
  7143.       d.__private__.setVisitCurrentDomain(t),
  7144.       n.domain = t,
  7145.       d.__private__.saveVisitCookie(e, n)
  7146.     })  : d.__private__.saveVisitCookie(e, n)
  7147.   }
  7148.   function S(e) {
  7149.     var n = (new Date).getTime(),
  7150.     r = 86400000,
  7151.     i = 60000,
  7152.     s = 1800000,
  7153.     o = t.getBrowserTimezoneOffset() * i,
  7154.     u = t.getAppTimezoneOffset(),
  7155.     a = (new Date(e.time)).setHours(0, 0, 0, 0) + r - o - u;
  7156.     return e.time + s < n || n >= a
  7157.   }
  7158.   function x() {
  7159.     if (t.__protected__.cameFromFbSubscriptions()) return !1;
  7160.     if (!d.__private__.visitContainer.currentDomain) return !1;
  7161.     var e = t.getReferrer();
  7162.     if (d.__private__.lastReferrer && d.__private__.lastReferrer === e) return !1;
  7163.     var n = t.getHostname(e),
  7164.     r = (new RegExp(d.__private__.visitContainer.currentDomain.replace(/\./g, '\\.').replace(/^\\./, '\\.?') + '$')).test(n);
  7165.     return Boolean(n) && !r
  7166.   }
  7167.   function T() {
  7168.     var e = d.__private__.loadLastVisit(),
  7169.     t = !e || !e.id || !e.time;
  7170.     if (t || d.__private__.isTimeExpired(e) || d.__private__.hasExternalReferrer()) e.id = 'v-' + d.__private__.generatePageViewId();
  7171.     d.__private__.saveLastVisit(e),
  7172.     d.__private__.visitContainer.visit = e
  7173.   }
  7174.   function N(n, i, s) {
  7175.     var o = 'manual';
  7176.     if (typeof i == 'undefined') i = window.location.href;
  7177.      else {
  7178.       if (typeof i != 'object') throw new Error('First parameter to track page must be a URL or an object');
  7179.       var u = i;
  7180.       if (typeof u.url == 'undefined') throw new Error('Must supply url property');
  7181.       i = u.url,
  7182.       typeof u.tags != 'undefined' && (s = u.tags),
  7183.       typeof u.submitType != 'undefined' && (o = u.submitType)
  7184.     }
  7185.     s || (s = tp.tags),
  7186.     tp.customPageUrl && (n.custom_page_url = t.prepareUrlParameter(tp.customPageUrl)),
  7187.     typeof s != 'undefined' ? Object.prototype.toString.call(s) != '[object Array]' && Object.prototype.toString.call(s) != '[object String]' ? (t.log('Tags must be an array or a comma-separated string, ignoring supplied tags'), s = '')  : Object.prototype.toString.call(s) == '[object Array]' && (s = s.join(','))  : s = '',
  7188.     d.__private__.pageView.track(),
  7189.     n.page_session_id = d.__private__.pageView.pageSessionId,
  7190.     n.track_count = d.__private__.pageView.trackCount,
  7191.     d.__private__.setPageViewId(n);
  7192.     var a;
  7193.     tp.contentCreated ? a = tp.contentCreated : tp.contentCreatedSelector && e(tp.contentCreatedSelector).length == 1 && (a = e(tp.contentCreatedSelector).html()),
  7194.     a && (n.content_created = a),
  7195.     typeof tp.contentIsNative == 'boolean' && (n.content_is_native = tp.contentIsNative),
  7196.     tp.zone && (n.zone = tp.zone);
  7197.     var f = tp.contentSection || d.__private__.getMetaTagContent('section');
  7198.     f && (n.content_section = f);
  7199.     var l = tp.contentAuthor || d.__private__.getMetaTagContent('author');
  7200.     l && (n.content_author = l);
  7201.     var c = tp.contentId || d.__private__.getMetaTagContent('id');
  7202.     c && (n.content_id = c);
  7203.     var h = t.__protected__.getCookie('sailthru_hid');
  7204.     h && (n.sailthru_hid = h);
  7205.     var p;
  7206.     d.__private__.lastReferrer && d.__private__.lastReferrer === t.getReferrer() ? p = '' : (p = t.getReferrer(), d.__private__.lastReferrer = p),
  7207.     n.referer = t.prepareUrlParameter(p),
  7208.     s && (n.tags = s),
  7209.     n.url = t.prepareUrlParameter(i),
  7210.     n.fingerprint = r.getFingerprint(),
  7211.     n.adblocker = t.getAdblockStatus();
  7212.     if (n.adblocker === t.ADBLOCKER_STATUS.ENABLED_AFTER_DISABLED || n.adblocker === t.ADBLOCKER_STATUS.ENABLED) tp.setCustomParam('_abr', t.getAdblockerStatusReason(), 'user', !0),
  7213.     tp.setCustomParam('_absh', t.getAdblockerHistoryCookieInfo().cookieValue + '', 'user', !0);
  7214.     n.timezone_offset = t.getBrowserTimezoneOffset(),
  7215.     n.submit_type = o;
  7216.     var v = d.__protected__.fetchVisitId();
  7217.     return n.visit_id = v,
  7218.     n.new_visit = d.__private__.checkIfNewVisitAndUpdateLastTrackedVisitId(v),
  7219.     n.keywords = e('meta[name="keywords"]').attr('content') || e('meta[name="news_keywords"]').attr('content') || '',
  7220.     n.title = e('meta[property="og:title"]').attr('content') || '',
  7221.     n.description = e('meta[property="og:description"]').attr('content') || '',
  7222.     n.content_type = e('meta[property="og:type"]').attr('content') || '',
  7223.     e.each(['keywords',
  7224.     'title',
  7225.     'description',
  7226.     'content_type'], function (e, t) {
  7227.       n[t] = n[t].substr(0, 8192)
  7228.     }),
  7229.     n.custom_variables = JSON.stringify(tp.customVariables),
  7230.     d.__private__.buildPageCustomParams(n),
  7231.     n
  7232.   }
  7233.   function C() {
  7234.     var n = {
  7235.     };
  7236.     n.aid = tp.aid;
  7237.     var r = t.getTbcCookie();
  7238.     r && (n.tbc = r);
  7239.     var i = {
  7240.       active: o.getActiveTimeInSeconds(),
  7241.       total: o.getTotalTimeInSeconds()
  7242.     };
  7243.     i.total < i.active && (i.total = i.active),
  7244.     n.time_spent = JSON.stringify(i),
  7245.     n.scroll = JSON.stringify({
  7246.       max_page_height: u.getMaxDocumentHeight(),
  7247.       max_depth: u.getMaxScrollDepth()
  7248.     }),
  7249.     n.viewport_exit = l.getSumOfCodesDirection(),
  7250.     n.url = t.prepareUrlParameter(window.location.href),
  7251.     d.__private__.setPageViewId(n),
  7252.     n.visit_id = d.__protected__.fetchVisitId(),
  7253.     d.__private__.markVisitToCheckForRefresh();
  7254.     var s = {
  7255.     },
  7256.     f = a.getAds();
  7257.     return f.length && (s.dfp = f),
  7258.     e.isEmptyObject(s) || (n.ads = JSON.stringify(s)),
  7259.     n
  7260.   }
  7261.   function k(t) {
  7262.     var n = {
  7263.     };
  7264.     return tp.customParams && (n = e.extend(!0, {
  7265.     }, tp.customParams)),
  7266.     e.isEmptyObject(n) || (t.custom_params = JSON.stringify(n)),
  7267.     t
  7268.   }
  7269.   function L() {
  7270.     return d.__private__.pageView.id
  7271.   }
  7272.   function A(e) {
  7273.     var t = d.__private__.visitContainer.lastTrackedVisitId !== e;
  7274.     return d.__private__.visitContainer.lastTrackedVisitId = e,
  7275.     t
  7276.   }
  7277.   function O() {
  7278.     d.__private__.visitContainer.checkForRefresh = !0
  7279.   }
  7280.   function M() {
  7281.     return d.__private__.visitContainer.checkForRefresh && (d.__private__.refreshVisit(), d.__private__.visitContainer.checkForRefresh = !1),
  7282.     d.__private__.visitContainer.visit.id
  7283.   }
  7284.   function _(e) {
  7285.     var t = document.head.querySelector('meta[name=' + e + ']');
  7286.     return (t || {
  7287.     }).content
  7288.   }
  7289.   function D(e) {
  7290.     d.__private__.visitContainer.currentDomain = e
  7291.   }
  7292.   function P() {
  7293.     var t = d.__private__.getVisitCookieOptions();
  7294.     e.removeCookie(d.__private__.VISIT_ID_COOKIE, t)
  7295.   }
  7296.   function H() {
  7297.     return !tp.endpoint || !tp.endpoint.match(/sandbox/)
  7298.   }
  7299.   function B(e, r, i, s) {
  7300.     if (tp.aid.length == 0) {
  7301.       t.log('Must supply a valid tp.aid before calling tp.init()');
  7302.       return
  7303.     }
  7304.     if (!d.__private__.currentEnvironmentSupportsPageTrack()) return !1;
  7305.     t.waitCall('refreshAccessTokenList', function () {
  7306.       t.waitCall('offerCreate', function () {
  7307.         t.startCall('pageTrack'),
  7308.         n.callApi(e, r, function (e) {
  7309.           t.doneCall('pageTrack'),
  7310.           i && i(e)
  7311.         }, d.__protected__.getTrackingEndpoint(), s)
  7312.       })
  7313.     })
  7314.   }
  7315.   function j() {
  7316.     return typeof tp.endpoint == 'undefined' || tp.endpoint === null || tp.endpoint == '' || tp.endpoint === 'prod' || tp.endpoint === 'production' || tp.endpoint.match(/(buy|api|api-v3)\.tinypass\.com/) ? 'https://api-v3.tinypass.com/api/v3' : tp.endpoint
  7317.   }
  7318.   function F() {
  7319.     d.__private__.unloadRegistered && d.__private__.pageView.trackCount > 0 && (d.trackPageUnload(), d.resetTimer())
  7320.   }
  7321.   function I(e) {
  7322.     if (!d.__private__.currentEnvironmentSupportsPageTrack()) return;
  7323.     try {
  7324.       var n = d.__private__.buildPageUnloadParams();
  7325.       l.isInitialized() && l.resetSumOfCodesDirectionToDefault(),
  7326.       h.__private__.logBeaconRequest(d.__protected__.getTrackingEndpoint() + '/page/unload', n),
  7327.       d.unregisterTrackUnload()
  7328.     } catch (r) {
  7329.       t.error('main: error on tracking page unload event: ', r)
  7330.     }
  7331.   }
  7332.   function q() {
  7333.     d.__private__.unloadTriggered || (d.__private__.unloadTriggered = !0, d.trackPageUnload(!0))
  7334.   }
  7335.   function R() {
  7336.     d.__private__.unloadRegistered = !0
  7337.   }
  7338.   function U() {
  7339.     return d.__private__.unloadRegistered
  7340.   }
  7341.   function z() {
  7342.     d.__private__.unloadRegistered = !1
  7343.   }
  7344.   function W() {
  7345.     d.__private__.unloadRegistered && d.__private__.unloadAction(),
  7346.     d.__private__.trackCollectedAds(!0, d.__private__.BEACON_REQUEST),
  7347.     p.__protected__.sendStatisticsExecutedNodes()
  7348.   }
  7349.   function X() {
  7350.     o.resetRecordedTime()
  7351.   }
  7352.   function V() {
  7353.     a.resetAds()
  7354.   }
  7355.   function $(e) {
  7356.     e && (e.pageview_id = d.fetchPageViewId())
  7357.   }
  7358.   function J(e, n) {
  7359.     if (!d.__private__.currentEnvironmentSupportsPageTrack()) return !1;
  7360.     try {
  7361.       d.__protected__.trackPageUnloadIfNecessary();
  7362.       var r = d.buildPageTrackParams({
  7363.       }, e, n);
  7364.       d.__private__.track('/page/track', r),
  7365.       d.registerTrackUnload()
  7366.     } catch (i) {
  7367.       t.error('main: error on page tracking event: ', i)
  7368.     }
  7369.   }
  7370.   function K(n, r, i) {
  7371.     return;
  7372.     var s,
  7373.     o
  7374.   }
  7375.   function Q(e, t, n) {
  7376.     d.__private__.collectedAds[e] || (d.__private__.collectedAds[e] = {
  7377.     }),
  7378.     d.__private__.collectedAds[e][t] = n,
  7379.     d.__private__.debouncedTrackAds()
  7380.   }
  7381.   function G() {
  7382.     var e = t.getQueryParamByName(d.__private__.VOUCHER_QUERY);
  7383.     e && f.startRedeemVoucher({
  7384.       voucherCode: e
  7385.     })
  7386.   }
  7387.   function Y() {
  7388.     if (tp.aid.length == 0) {
  7389.       t.log('Must supply a valid tp.aid before calling tp.init()');
  7390.       return
  7391.     }
  7392.     tp.isMockMode || (a.initialize(), o.initialize(), u.initialize()),
  7393.     c.initialize(),
  7394.     d.__private__.checkVoucher(),
  7395.     i.refreshAccessToken()
  7396.   }
  7397.   var d = {
  7398.     __private__: {
  7399.     },
  7400.     __protected__: {
  7401.     }
  7402.   };
  7403.   return d.name = 'main',
  7404.   d.pageTrack = J,
  7405.   d.trackPage = d.pageTrack,
  7406.   d.buildPageTrackParams = N,
  7407.   d.fetchPageViewId = L,
  7408.   d.trackPageUnload = I,
  7409.   d.registerTrackUnload = R,
  7410.   d.isRegisteredTrackUnload = U,
  7411.   d.unregisterTrackUnload = z,
  7412.   d.resetTimer = X,
  7413.   d.resetAds = V,
  7414.   d.trackAds = K,
  7415.   d.trackAd = Q,
  7416.   d.init = Y,
  7417.   d.__protected__.fetchVisitId = M,
  7418.   d.__protected__.getTrackingEndpoint = j,
  7419.   d.__protected__.trackPageUnloadIfNecessary = F,
  7420.   d.__private__.BEACON_REQUEST = 'beacon_request',
  7421.   d.__private__.saveVisitCookie = w,
  7422.   d.__private__.trackCollectedAds = m,
  7423.   d.__private__.getCurrentDomain = v,
  7424.   d.__private__.generatePageViewId = g,
  7425.   d.__private__.loadLastVisit = y,
  7426.   d.__private__.getVisitCookieOptions = b,
  7427.   d.__private__.saveLastVisit = E,
  7428.   d.__private__.isTimeExpired = S,
  7429.   d.__private__.hasExternalReferrer = x,
  7430.   d.__private__.refreshVisit = T,
  7431.   d.__private__.setPageViewId = $,
  7432.   d.__private__.buildPageUnloadParams = C,
  7433.   d.__private__.buildPageCustomParams = k,
  7434.   d.__private__.checkIfNewVisitAndUpdateLastTrackedVisitId = A,
  7435.   d.__private__.markVisitToCheckForRefresh = O,
  7436.   d.__private__.getMetaTagContent = _,
  7437.   d.__private__.setVisitCurrentDomain = D,
  7438.   d.__private__.invalidateLastVisit = P,
  7439.   d.__private__.currentEnvironmentSupportsPageTrack = H,
  7440.   d.__private__.track = B,
  7441.   d.__private__.unloadAction = q,
  7442.   d.__private__.unloadHandler = W,
  7443.   d.__private__.checkVoucher = G,
  7444.   d.__private__.VOUCHER_QUERY = 'voucher_code',
  7445.   d.__private__.VISIT_ID_COOKIE = '__pvi',
  7446.   d.__private__.unloadRegistered = !1,
  7447.   d.__private__.unloadTriggered = !1,
  7448.   d.__private__.collectedAds = {
  7449.   },
  7450.   d.__private__.debouncedTrackAds = t.debounce(d.__private__.trackCollectedAds, 3000),
  7451.   d.__private__.lastReferrer,
  7452.   d.__private__.pageView = {
  7453.     id: d.__private__.generatePageViewId(),
  7454.     pageSessionId: 's-' + d.__private__.generatePageViewId(),
  7455.     trackCount: 0,
  7456.     tracked: !1,
  7457.     track: function () {
  7458.       this.tracked ? this.id = d.__private__.generatePageViewId()  : this.tracked = !0,
  7459.       this.trackCount++
  7460.     }
  7461.   },
  7462.   d.__private__.visitContainer = {
  7463.     currentDomain: d.__private__.getCurrentDomain(),
  7464.     lastTrackedVisitId: d.__private__.loadLastVisit().id,
  7465.     visit: {
  7466.     },
  7467.     checkForRefresh: !1
  7468.   },
  7469.   d.__private__.refreshVisit(),
  7470.   e(window).on('beforeunload unload', d.__private__.unloadHandler),
  7471.   d
  7472. }),
  7473. tp.define('api', [
  7474.   'jq',
  7475.   'util'
  7476. ], function (e, t) {
  7477.   var n = t.findCookieByName(/__TP_*/),
  7478.   r = function () {
  7479.     var e = function () {
  7480.       return 'mock'
  7481.     },
  7482.     t = function () {
  7483.       return ''
  7484.     },
  7485.     n = function () {
  7486.       return !1
  7487.     };
  7488.     return {
  7489.       getName: function () {
  7490.         return e()
  7491.       },
  7492.       getToken: function () {
  7493.         return t()
  7494.       },
  7495.       isUserValid: function () {
  7496.         return n()
  7497.       }
  7498.     }
  7499.   }(),
  7500.   i = function (e) {
  7501.     r = e
  7502.   },
  7503.   s;
  7504.   typeof window._tpm != 'undefined' && typeof window._tpm['paywallID'] != 'undefined' && (paywallID = window._tpm.paywallID, s = t.__protected__.getCookie('umc_' + window._tpm.paywallID));
  7505.   var o = t.__protected__.getCookie('__tac'),
  7506.   u = function () {
  7507.     return tp.getApiEndpoint()
  7508.   },
  7509.   a = function (e) {
  7510.     if (typeof e == 'undefined' || !e) e = {
  7511.     };
  7512.     e.aid = tp.aid,
  7513.     s && (e.umc = s),
  7514.     n && (e.tp_access_token_v2 = n),
  7515.     o && (e.tac = o);
  7516.     if (typeof e.user_provider == 'undefined' || !e.user_provider) e.user_provider = r.getName();
  7517.     if (typeof e['user_token'] == 'undefined' || !e.user_token) e.user_token = r.getToken() && r.getToken().length > 0 ? r.getToken()  : ''
  7518.   },
  7519.   f = function (n, r, i, s, o) {
  7520.     t.debug('Calling API method: ' + n);
  7521.     var f;
  7522.     typeof s != 'undefined' ? f = s : f = u(),
  7523.     f += n;
  7524.     if (typeof r == 'undefined' || !r) r = {
  7525.     };
  7526.     var l = t.getTbcCookie();
  7527.     l && (r.tbc = l),
  7528.     a(r);
  7529.     var c;
  7530.     typeof i == 'undefined' ? c = function (e) {
  7531.       t.debug('API Response', e),
  7532.       t.setTbcCookieFromResponse(e),
  7533.       t.setAppTimezoneOffsetFromResponse(e),
  7534.       t.setCurrentDomainFromResponse(e)
  7535.     }
  7536.      : c = function (e) {
  7537.       t.debug('API Response', e),
  7538.       t.setTbcCookieFromResponse(e),
  7539.       t.setAppTimezoneOffsetFromResponse(e),
  7540.       t.setCurrentDomainFromResponse(e),
  7541.       i(e)
  7542.     },
  7543.     f = f + '?' + e.param(r, !0);
  7544.     var h = {
  7545.       url: f,
  7546.       dataType: 'jsonp'
  7547.     };
  7548.     o && (h.async = !1),
  7549.     e.ajax(h).done(c).fail(function () {
  7550.       var e = {
  7551.         code: 503,
  7552.         message: 'Error: Received error when requesting API response from URL: ' + f
  7553.       };
  7554.       t.log(e.message),
  7555.       c(e)
  7556.     })
  7557.   };
  7558.   return {
  7559.     name: 'api',
  7560.     callApi: function (e, t, n, r, i) {
  7561.       return f(e, t, n, r, i)
  7562.     },
  7563.     getEndpoint: function () {
  7564.       return u()
  7565.     },
  7566.     setUserProvider: function (e) {
  7567.       return i(e)
  7568.     },
  7569.     getCallParams: function (e) {
  7570.       return a(e)
  7571.     }
  7572.   }
  7573. }),
  7574. tp.define('offer', [
  7575.   'jq',
  7576.   'util',
  7577.   'postmessage',
  7578.   'user',
  7579.   'require-css/css!styles/offer',
  7580.   'containerUtils',
  7581.   'eventUtils',
  7582.   'viewportExit'
  7583. ], function (e, t, n, r, i, s, o, u) {
  7584.   function x(e, t, n, i, o) {
  7585.     i || r.logout(function () {
  7586.       var e = {
  7587.       };
  7588.       e.userProvider = r.getProvider().getName(),
  7589.       e.userToken = r.getProvider().getToken() && r.getProvider().getToken().length > 0 ? r.getProvider().getToken()  : '',
  7590.       e.noNeedStartCheckout = !0,
  7591.       J(e)
  7592.     }, p),
  7593.     t.closeOnLogout && s.closeModalContainer(n, i)
  7594.   }
  7595.   function T(e, t, n, i) {
  7596.     t.source = p,
  7597.     r.getProvider().onLoginSuccess(t),
  7598.     b.fireCallbacks('loginSuccess', t, n, i);
  7599.     if (!y) {
  7600.       var s = {
  7601.         userToken: t.user_token,
  7602.         user: t.user,
  7603.         reloadAfterLogin: !0
  7604.       };
  7605.       J(s, n)
  7606.     }
  7607.   }
  7608.   function N(t, n) {
  7609.     var r = [
  7610.       'debug',
  7611.       'aid',
  7612.       'gaClientId',
  7613.       'tags',
  7614.       'contentSection',
  7615.       'contentAuthor',
  7616.       'debug',
  7617.       'customVariables',
  7618.       'zone'
  7619.     ];
  7620.     e.each(r, function (e, r) {
  7621.       n[r] && (t[r] = n[r])
  7622.     }),
  7623.     t.customVariables && (t.customVariables = JSON.stringify(t.customVariables));
  7624.     var i = n.contentCreated;
  7625.     return i && (t.contentCreated = i),
  7626.     n && n.main && (t.pageViewId = n.main.fetchPageViewId(), t.visitId = n.main.__protected__.fetchVisitId()),
  7627.     t
  7628.   }
  7629.   function C(n) {
  7630.     var r = {
  7631.     };
  7632.     n.termIds && (n.termIds instanceof Array || (n.termIds = [
  7633.       n.termIds
  7634.     ]));
  7635.     var i = [
  7636.       'displayMode',
  7637.       'containerSelector',
  7638.       'templateId',
  7639.       'templateVariantId',
  7640.       'offerId',
  7641.       'termId',
  7642.       'termIds',
  7643.       'rid',
  7644.       'aid',
  7645.       'isCheckout',
  7646.       'pw_id',
  7647.       'paywallId',
  7648.       'width',
  7649.       'preview',
  7650.       'previewUncached',
  7651.       'previewTemplateType',
  7652.       'previewTemplateVersion',
  7653.       'tokenType',
  7654.       'janrainCaptureToken',
  7655.       'closeOnLogout',
  7656.       'voucherCode',
  7657.       'isRedemption',
  7658.       'allowReturnToStartState',
  7659.       'startFromInlineCheckout',
  7660.       'formNameByTermId',
  7661.       'hideCompletedFields',
  7662.       'startFromInlineCheckout',
  7663.       'reloadAfterLogin',
  7664.       'preventReloadAfterLogin',
  7665.       'isAuth',
  7666.       'authStartScreen',
  7667.       'showCloseButton',
  7668.       'closeButtonType'
  7669.     ],
  7670.     s = [
  7671.       'trackingId',
  7672.       'experienceId',
  7673.       'activeMeters'
  7674.     ],
  7675.     o = n.additionalParamNames ? n.additionalParamNames : [
  7676.     ],
  7677.     u = i.concat(s, o);
  7678.     e.each(u, function (e, t) {
  7679.       n[t] && (r[t] = n[t]),
  7680.       t === 'showCloseButton' && (n[t] === undefined ? r[t] = !0 : r[t] = n[t])
  7681.     });
  7682.     var a = decodeURIComponent(t.getQueryParamByName('_ptid'));
  7683.     return a && (r.trackingId = a),
  7684.     n.preview && (r.activeMeters = JSON.stringify([{
  7685.       meterName: 'preview-meter',
  7686.       views: 10,
  7687.       viewsLeft: 5,
  7688.       maxViews: 20,
  7689.       totalViews: 20
  7690.     }
  7691.     ])),
  7692.     r
  7693.   }
  7694.   function k(e) {
  7695.     var t = e.displayMode || 'modal';
  7696.     return [e.offerId,
  7697.     t,
  7698.     e.containerSelector].join('|')
  7699.   }
  7700.   function L(e) {
  7701.     var t = k(e);
  7702.     return !!f[t]
  7703.   }
  7704.   function A(e) {
  7705.     var t = k(e);
  7706.     f[t] = !0
  7707.   }
  7708.   function O(e) {
  7709.     var t = k(e);
  7710.     delete f[t]
  7711.   }
  7712.   function _(e, i) {
  7713.     var o = C(e),
  7714.     u = t.getTbcCookie();
  7715.     u && u.length > 0 && (o.tbc = u),
  7716.     o.iframeId = 'offer-' + l++ + '-' + t.randomString(),
  7717.     o.url = t.prepareUrlParameter(window.location.href),
  7718.     o.parentDualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left,
  7719.     o.parentDualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top,
  7720.     o.parentWidth = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width,
  7721.     o.parentHeight = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height,
  7722.     o.parentOuterHeight = window.parent.outerHeight,
  7723.     e.previewNonLoggedUser && (o.previewNonLoggedUser = e.previewNonLoggedUser),
  7724.     e.isPreload && (o.preload = 1),
  7725.     N(o, tp);
  7726.     var f = b.hasCallback('loginRequired');
  7727.     if (tp.janrain.isConfigured() && (typeof e.loginRequired == 'undefined' || !e.loginRequired)) {
  7728.       var h = [
  7729.       ];
  7730.       tp.janrain.addEventHandler('onModalClose', function () {
  7731.         s.activateContainers(h)
  7732.       }),
  7733.       j(),
  7734.       e.loginRequired = function (e) {
  7735.         return h = s.hideModalContainer(),
  7736.         g = e.allowReturnToStartState,
  7737.         d = !1,
  7738.         v = e.termId,
  7739.         m = o.iframeId,
  7740.         t.waitCall('refreshUserToken', function () {
  7741.           tp.janrain.login()
  7742.         }),
  7743.         !1
  7744.       }
  7745.     } else if (tp.gigya.isConfigured() && (typeof e.loginRequired == 'undefined' || !e.loginRequired)) {
  7746.       var h = [
  7747.       ];
  7748.       tp.gigya.registerCallback('onHide', function () {
  7749.         s.activateContainers(h)
  7750.       }),
  7751.       B(),
  7752.       e.loginRequired = function (e) {
  7753.         return g = e.allowReturnToStartState,
  7754.         d = !1,
  7755.         h = s.hideModalContainer(),
  7756.         v = e.termId,
  7757.         m = o.iframeId,
  7758.         t.waitCall('refreshUserToken', function () {
  7759.           tp.gigya.login()
  7760.         }),
  7761.         !1
  7762.       }
  7763.     } else if (tp.pianoId.isConfigured()) {
  7764.       if (typeof e.loginRequired == 'undefined' || !e.loginRequired) e.loginRequired = function (e) {
  7765.         if (e.preventExternalLogin) return;
  7766.         return v = e.termId,
  7767.         m = o.iframeId,
  7768.         tp.pianoId.show({
  7769.           displayMode: 'modal',
  7770.           screen: e.startScreen
  7771.         }),
  7772.         !1
  7773.       };
  7774.       F(),
  7775.       o.pianoIdUrl = tp.pianoId.getIframeUrl();
  7776.       var p = tp.pianoId.getLang();
  7777.       p && (o.lang = p),
  7778.       tp.pianoId.onLangChange(function (e) {
  7779.         n.send('langChanged', {
  7780.           lang: e
  7781.         }, o.iframeId)
  7782.       })
  7783.     }
  7784.     o.userProvider = r.getProvider().getName(),
  7785.     e.userToken ? o.userToken = e.userToken : o.userToken = r.getProvider().getToken() && r.getProvider().getToken().length > 0 ? r.getProvider().getToken()  : '',
  7786.     t.getCampaigns(o),
  7787.     o.customCookies = JSON.stringify(t.getCustomCookies()),
  7788.     b.registerCallback(e, o.iframeId),
  7789.     o.hasLoginRequiredCallback = b.hasIframeCallback('loginRequired', o.iframeId) || f;
  7790.     var y = e.iframeUrl ? e.iframeUrl : o.isCheckout ? E()  : w(),
  7791.     x = e.postMessageUrl ? e.postMessageUrl : w(),
  7792.     T = D(o, e),
  7793.     k = s.createContainer({
  7794.       url: y,
  7795.       config: e,
  7796.       parent: e.parent,
  7797.       postMessageUrl: x,
  7798.       receive: S,
  7799.       iframeParams: o,
  7800.       singleContainer: e.singleContainer,
  7801.       close: function () {
  7802.         b.fireCallbacks('close', {
  7803.           state: c
  7804.         }, o.iframeId, !0)
  7805.       }
  7806.     });
  7807.     return k.statParams = T,
  7808.     a.push(k),
  7809.     k
  7810.   }
  7811.   function D(t, n) {
  7812.     var r = {
  7813.     };
  7814.     if (n.trackStatsOnShow) return r;
  7815.     var i = [
  7816.       'tbc',
  7817.       'trackingId',
  7818.       'pageViewId',
  7819.       'visitId',
  7820.       'tags',
  7821.       'contentCreated',
  7822.       'contentSection',
  7823.       'contentAuthor'
  7824.     ];
  7825.     return e.each(i, function (e, n) {
  7826.       t[n] && (r[n] = t[n], delete t[n])
  7827.     }),
  7828.     e.each(t, function (e, n) {
  7829.       e.indexOf('tpcc_') === 0 && (r[e] = n, delete t[e])
  7830.     }),
  7831.     r
  7832.   }
  7833.   function P(e) {
  7834.     var t = H(e.iframeParams, e.statParams);
  7835.     n.send('trackStat', t, e.iframeId)
  7836.   }
  7837.   function H(t, n) {
  7838.     var r = {
  7839.     };
  7840.     return e.each(t, function (e, t) {
  7841.       r[e] = t
  7842.     }),
  7843.     e.each(n, function (e, t) {
  7844.       r[e] = t
  7845.     }),
  7846.     r
  7847.   }
  7848.   function B() {
  7849.     y || (tp.gigya.registerCallback('userChanged', function (e) {
  7850.       if (e && e.user_token) {
  7851.         var t = {
  7852.           token_list: e.access_token.value,
  7853.           user_token: e.user_token,
  7854.           userToken: e.user_token,
  7855.           cookie_domain: e.access_token.cookie_domain,
  7856.           user: e.user,
  7857.           allowReturnToStartState: g,
  7858.           termId: v
  7859.         };
  7860.         if (m) {
  7861.           var r = s.getIframe(m);
  7862.           r ? (n.send('externalLoginSuccess', t, m), delete t.termId, J(t, m))  : J(t)
  7863.         } else J(t)
  7864.       }
  7865.     }), tp.gigya.registerCallback('logout', function () {
  7866.       var e = {
  7867.       };
  7868.       e.userProvider = r.getProvider().getName(),
  7869.       e.userToken = r.getProvider().getToken() && r.getProvider().getToken().length > 0 ? r.getProvider().getToken()  : '',
  7870.       e.noNeedStartCheckout = !0;
  7871.       var t = s.getIframe(m);
  7872.       t && t.config.displayMode == 'inline' && s.closeModalContainer(),
  7873.       v = null,
  7874.       m = null,
  7875.       g = !1,
  7876.       J(e)
  7877.     }), y = !0)
  7878.   }
  7879.   function j() {
  7880.     y || (tp.janrain.registerCallback('userChanged', function (e) {
  7881.       if (e && e.user_token) {
  7882.         var t = {
  7883.           token_list: e.access_token.value,
  7884.           user_token: e.user_token,
  7885.           userToken: e.user_token,
  7886.           cookie_domain: e.access_token.cookie_domain,
  7887.           user: e.user,
  7888.           allowReturnToStartState: g,
  7889.           termId: v
  7890.         };
  7891.         if (m) {
  7892.           var r = s.getIframe(m);
  7893.           r ? (n.send('externalLoginSuccess', t, m), delete t.termId, J(t, m))  : J(t)
  7894.         } else J(t)
  7895.       }
  7896.     }), tp.janrain.addEventHandler('onCaptureSessionEnded', function () {
  7897.       var e = {
  7898.       };
  7899.       e.userProvider = r.getProvider().getName(),
  7900.       e.userToken = r.getProvider().getToken() && r.getProvider().getToken().length > 0 ? r.getProvider().getToken()  : '',
  7901.       e.noNeedStartCheckout = !0;
  7902.       var t = s.getIframe(m);
  7903.       t && t.config.displayMode == 'inline' && s.closeModalContainer(),
  7904.       v = null,
  7905.       m = null,
  7906.       g = !1,
  7907.       J(e)
  7908.     }), y = !0)
  7909.   }
  7910.   function F() {
  7911.     y || (tp.pianoId.setCallbacks({
  7912.       loggedIn: function (e) {
  7913.         var t = {
  7914.           user_token: e.token,
  7915.           userToken: e.token,
  7916.           user: e.user,
  7917.           reloadAfterLogin: !0,
  7918.           termId: v
  7919.         };
  7920.         if (m) {
  7921.           var r = s.getIframe(m);
  7922.           r ? (n.send('externalLoginSuccess', t, m), $(m, t), delete t.termId, J(t, m))  : J(t)
  7923.         } else J(t)
  7924.       },
  7925.       loggedOut: function (e) {
  7926.         if (e.source !== p) {
  7927.           var t = {
  7928.           };
  7929.           t.userProvider = r.getProvider().getName(),
  7930.           t.userToken = r.getProvider().getToken() && r.getProvider().getToken().length > 0 ? r.getProvider().getToken()  : '',
  7931.           t.noNeedStartCheckout = !0,
  7932.           J(t)
  7933.         }
  7934.         v = null,
  7935.         m = null
  7936.       }
  7937.     }), y = !0)
  7938.   }
  7939.   function I(e) {
  7940.     return s.showPreloadedContainer(e)
  7941.   }
  7942.   function K(t, n) {
  7943.     var r = {
  7944.       reloadAfterLogin: !0
  7945.     };
  7946.     return e.extend(r, t.config),
  7947.     r.singleContainer && delete r.singleContainer,
  7948.     n.termId && (r.termId = n.termId),
  7949.     n.startScreen && (r.startScreen = n.startScreen),
  7950.     n.isRedemption && (r.isRedemption = n.isRedemption, r.voucherCode = n.redemption && n.redemption.form && n.redemption.form.redeemCode, r.termId = null),
  7951.     n && n.currentState && t.config.displayMode == 'modal' && (r.allowReturnToStartState = !0),
  7952.     n.preventExternalLogin && (r.preventExternalLogin = n.preventExternalLogin),
  7953.     r.displayMode = 'modal',
  7954.     r
  7955.   }
  7956.   var a = [
  7957.   ],
  7958.   f = {
  7959.   },
  7960.   l = 0,
  7961.   c = 'close',
  7962.   h = 10000,
  7963.   p = 'OFFER',
  7964.   d = !1,
  7965.   v = null,
  7966.   m = null,
  7967.   g = !1,
  7968.   y = !1,
  7969.   b = o.createEventManager(['complete',
  7970.   'cancel',
  7971.   'close',
  7972.   'error',
  7973.   'loginRequired',
  7974.   'loginSuccess',
  7975.   'loaded',
  7976.   'customEvent',
  7977.   'startCheckout',
  7978.   'resize',
  7979.   'onMeterExpired',
  7980.   'onMeterActive',
  7981.   'onAccessGranted',
  7982.   'onShowOffer',
  7983.   'pianoIdEvent']),
  7984.   w = function () {
  7985.     return tp.offerBaseUrl ? tp.offerBaseUrl : tp.getEndpointRoot() + '/checkout/offer/show'
  7986.   },
  7987.   E = function () {
  7988.     return tp.getEndpointRoot(!0) + '/checkout/offer/show'
  7989.   },
  7990.   S = function (i, o) {
  7991.     var a = s.getIframe(i.sender),
  7992.     f = !0;
  7993.     a && a.config && (f = !a.config.parent);
  7994.     switch (i.event) {
  7995.       case 'resize':
  7996.         i.params.iframeId === i.sender && (s.resizeIframe(a, i.params), a.config.displayMode === 'modal' && (i.params.closeButtonType === 'boilerplate' && s.hideCloseButton(a.container), s.centerIt(a.container)), n.send('afterResize', {
  7997.         }, a.iframeId)),
  7998.         b.fireCallbacks(i.event, i.params, i.sender, f);
  7999.         break;
  8000.       case 'startCheckout':
  8001.         i.params.width = null;
  8002.         if (i.displayMode === 'inline') {
  8003.           i.params.closeOnLogout = !0;
  8004.           var l = H(i.params, a.statParams);
  8005.           X(l, i.sender);
  8006.           break
  8007.         }
  8008.         b.fireCallbacks(i.event, i.params, i.sender, f);
  8009.         break;
  8010.       case 'loaded':
  8011.         i.params.iframeId == i.sender && (a.config.displayMode === 'modal' && (s.resizeIframe(a, i.params), a.config.isPreload || s.checkBackdropAndContainer(a.container)), a.config.displayMode === 'popup' && s.resizeIframe(a, i.params), !a.config.isPreload && !a.config.trackStatsOnShow && P(a), b.fireCallbacks(i.event, i.params, i.sender, f), a.config.displayMode === 'inline' && (a.containerReady ? s.resizeIframe(a, i.params)  : s.operationWithContainer(a.iframeParams.containerSelector, function (t) {
  8012.           var n = e('#temp-inline-' + a.iframeId);
  8013.           t.html(n.html()),
  8014.           n.remove(),
  8015.           a.element = t.children('iframe'),
  8016.           a.containerReady = !0,
  8017.           s.resizeIframe(a, i.params)
  8018.         })), O(a.config), t.doneCall('offerCreate'));
  8019.         break;
  8020.       case 'downForMaintenance':
  8021.         s.resizeIframe(a, {
  8022.           width: 300,
  8023.           height: 200
  8024.         }),
  8025.         a.config.displayMode === 'modal' && (a.config.isPreload || s.checkBackdropAndContainer(a.container));
  8026.         break;
  8027.       case 'purge':
  8028.         o || (i && i.params && i.params.alreadyPurchased && (c = 'alreadyHasAccess'), i && i.params && i.params.completePayment && (c = 'checkoutCompleted'), s.purgeIframe(i.sender, a.config.parent), O(a.config));
  8029.         break;
  8030.       case 'close':
  8031.         o || (i && i.params && i.params.alreadyPurchased && (c = 'alreadyHasAccess'), i && i.params && i.params.completePayment && (c = 'checkoutCompleted'), t.hasQueryParamByName('voucher_code') && (c = 'voucherRedemptionCompleted'), s.closeContainer(i.sender, a.config.parent), O(a.config));
  8032.         break;
  8033.       case 'closeAndRefresh':
  8034.         var h = i.params;
  8035.         h ? window.location.assign(h)  : window.location.reload(!0);
  8036.         break;
  8037.       case 'selectTerm':
  8038.         i && i.params && i.params.alreadyPurchased ? c = 'alreadyHasAccess' : c = 'close';
  8039.         break;
  8040.       case 'complete':
  8041.         if (typeof i.params.token_list != 'undefined') {
  8042.           var p = i.params.user_token;
  8043.           !p && r.isUserValid() && r.getProvider().name === 'pianoId' && (p = r.getProvider().getToken()),
  8044.           t.setAccessTokenListCookie({
  8045.             value: i.params.token_list,
  8046.             cookie_domain: i.params.cookie_domain
  8047.           }, p)
  8048.         }
  8049.         b.fireCallbacks(i.event, i.params, i.sender, f),
  8050.         c = 'checkoutCompleted';
  8051.         break;
  8052.       case 'checkoutSelectTerm':
  8053.       case 'checkoutStateChange':
  8054.       case 'alreadyPurchased':
  8055.       case 'cancel':
  8056.       case 'error':
  8057.       case 'customEvent':
  8058.         b.fireCallbacks(i.event, i.params, i.sender, f);
  8059.         break;
  8060.       case 'loginRequired':
  8061.         d = !0,
  8062.         b.fireCallbacks(i.event, K(a, i.params), i.sender, f);
  8063.         break;
  8064.       case 'logout':
  8065.         x(i.event, i.params, i.sender, a.config.parent, f);
  8066.         break;
  8067.       case 'loginSuccess':
  8068.         T(i.event, i.params, i.sender, f);
  8069.         break;
  8070.       case 'inputFocus':
  8071.         e('tp-modal').css('z-index', 300051).css('z-index', 300050);
  8072.         break;
  8073.       case 'inputBlur':
  8074.         e('tp-modal').css('z-index', 300051).css('z-index', 300050);
  8075.         break;
  8076.       case 'getLocation':
  8077.         i.params && i.params.resultCallbackId && (i.params.result = window.location.href, n.send('resultCallback', i.params, i.sender));
  8078.         break;
  8079.       case 'setLocationHash':
  8080.         i.params && i.params.hash && (window.location.hash = i.params.hash);
  8081.         break;
  8082.       case 'langChangedWithinOffer':
  8083.         tp.pianoId.isConfigured() && tp.pianoId.updateLang(i.params.lang);
  8084.         break;
  8085.       case 'loginStart':
  8086.         u.disable();
  8087.         break;
  8088.       case 'loginEnd':
  8089.         u.enable();
  8090.         break;
  8091.       case 'pianoIdEvent':
  8092.         i.params.iframeId === i.sender && tp.pianoId.__protected__.offerMessageReceiver(i);
  8093.         break;
  8094.       default:
  8095.         t.debug('Received invalid event type: ' + i.event);
  8096.         return
  8097.     }
  8098.   },
  8099.   M = function (n) {
  8100.     c = 'close';
  8101.     if (typeof n.displayMode == 'undefined') n.displayMode = 'modal';
  8102.      else if (n.displayMode != 'modal' && n.displayMode != 'inline' && n.displayMode != 'popup') {
  8103.       t.log('Invalid offer displayMode; must be one of: modal, inline, popup'),
  8104.       O(n);
  8105.       return
  8106.     }
  8107.     if (n.displayMode === 'modal' && !n.isPreload && s.hasModalIframe()) {
  8108.       t.log('Modal offer is already shown; must be one modal offer per time'),
  8109.       O(n);
  8110.       return
  8111.     }
  8112.     var r;
  8113.     if (n.displayMode !== 'modal') {
  8114.       if (!n.isPreload) {
  8115.         var i;
  8116.         return e(n.containerSelector).each(function (e, t) {
  8117.           var r = H({
  8118.           }, n);
  8119.           r.singleContainer = t,
  8120.           i = _(r)
  8121.         }),
  8122.         i
  8123.       }
  8124.       var o = e(n.containerSelector).last();
  8125.       o && (r = o.length ? o[0] : undefined, n.singleContainer = r)
  8126.     }
  8127.     return _(n)
  8128.   },
  8129.   q = function (e) {
  8130.     var t = e.offerId === s.fakeOfferId ? 'showTemplate' : 'showOffer';
  8131.     b.hasCallback(t) && b.fireCallbacks(t, e, null, !0)
  8132.   },
  8133.   R = function (e) {
  8134.     if (!e.offerId && e.preview !== !0) {
  8135.       t.error('Must specify offerId');
  8136.       return
  8137.     }
  8138.     if (L(e)) return !1;
  8139.     A(e),
  8140.     setTimeout(function () {
  8141.       O(e)
  8142.     }, h),
  8143.     t.waitCall('refreshUserToken', function () {
  8144.       t.waitCall('refreshAccessTokenList', function () {
  8145.         t.waitCall('myAccountLogin', function () {
  8146.           t.startCall('offerCreate');
  8147.           var n = e.createIframeFn ? e.createIframeFn : M,
  8148.           r = n(e);
  8149.           if (!r) {
  8150.             t.doneCall('offerCreate'),
  8151.             t.error('Could not initialize offer; check configuration');
  8152.             return
  8153.           }
  8154.           z(e) && W(r.iframeId),
  8155.           q(e)
  8156.         })
  8157.       })
  8158.     })
  8159.   },
  8160.   U = function (n) {
  8161.     var r = e.Deferred(),
  8162.     i = r.promise(),
  8163.     s = e.Deferred(),
  8164.     o = {
  8165.       promise: i,
  8166.       show: function () {
  8167.         i.pipe(I).pipe(s.promise).then(function (e) {
  8168.           P(e),
  8169.           z(n) && W(e.iframeId),
  8170.           q(n)
  8171.         }, function () {
  8172.           delete n.isPreload,
  8173.           R(n)
  8174.         })
  8175.       }
  8176.     };
  8177.     return n.displayMode !== 'popup' && n.offerId ? t.waitCall('refreshAccessTokenList', function () {
  8178.       n.isPreload = !0,
  8179.       t.startCall('offerCreate');
  8180.       var e = n.createIframeFn ? n.createIframeFn : M,
  8181.       i = e(n);
  8182.       i ? (i.element.load(function () {
  8183.         s.resolve(i)
  8184.       }), r.resolve(i))  : (t.doneCall('offerCreate'), t.error('Could not initialize offer; check configuration'), r.reject())
  8185.     })  : r.reject(),
  8186.     o
  8187.   },
  8188.   z = function (e) {
  8189.     return !!e.directCheckout && e.displayMode !== 'inline'
  8190.   },
  8191.   W = function (e) {
  8192.     t.waitCall('offerCreate', function () {
  8193.       n.send('startDirectCheckout', {
  8194.       }, e)
  8195.     })
  8196.   },
  8197.   X = function (e, n) {
  8198.     s.closeModalContainer(),
  8199.     t.debug('creating checkout: ', e),
  8200.     e.displayMode = e.displayMode === 'popup' ? 'popup' : 'modal',
  8201.     e.isCheckout = !0,
  8202.     e.parent = n,
  8203.     t.waitCall('refreshUserToken', function () {
  8204.       t.waitCall('refreshAccessTokenList', function () {
  8205.         t.startCall('offerCreate');
  8206.         var n = M(e);
  8207.         n ? d && t.waitCall('offerCreate', function () {
  8208.           d = !1;
  8209.           var e = {
  8210.           };
  8211.           e.userProvider = r.getProvider().getName(),
  8212.           e.userToken = r.getProvider().getToken() && r.getProvider().getToken().length > 0 ? r.getProvider().getToken()  : '',
  8213.           e.noNeedStartCheckout = !0,
  8214.           J(e, n.iframeId)
  8215.         })  : (t.doneCall('offerCreate'), t.error('Could not start checkout; check configuration'))
  8216.       })
  8217.     })
  8218.   },
  8219.   V = function (e, n) {
  8220.     s.closeModalContainer(),
  8221.     e || (e = {
  8222.     }),
  8223.     e.isRedemption = !0,
  8224.     t.debug('starting redeem voucher: ', e),
  8225.     e.displayMode = e.displayMode === 'popup' ? 'popup' : 'modal',
  8226.     e.isCheckout = !1,
  8227.     e.parent = n,
  8228.     t.waitCall('refreshAccessTokenList', function () {
  8229.       t.startCall('offerCreate'),
  8230.       M(e) || (t.doneCall('offerCreate'), t.error('Could not start redeem; check configuration'))
  8231.     })
  8232.   },
  8233.   $ = function (e, t) {
  8234.     n.send('reloadOffer', t, e)
  8235.   },
  8236.   J = function (e, t) {
  8237.     n.broadcast('reloadOffer', e, t)
  8238.   };
  8239.   return {
  8240.     name: 'offer',
  8241.     show: function (e) {
  8242.       e.displayMode === 'inline' ? s.operationWithContainer(e.containerSelector, function () {
  8243.         R(e)
  8244.       })  : R(e)
  8245.     },
  8246.     deferredShow: function (e) {
  8247.       return U(e)
  8248.     },
  8249.     close: function () {
  8250.       s.closeModalContainer()
  8251.     },
  8252.     startCheckout: function (e) {
  8253.       X(e)
  8254.     },
  8255.     startRedeemVoucher: function (e) {
  8256.       V(e)
  8257.     },
  8258.     createOfferIframe: function (e) {
  8259.       return M(e)
  8260.     },
  8261.     showBackdrop: function () {
  8262.       s.showBackdrop()
  8263.     },
  8264.     hideBackdrop: function () {
  8265.       s.hideBackdrop()
  8266.     },
  8267.     centerBackdrop: function (e) {
  8268.       s.centerBackdrop(e)
  8269.     },
  8270.     registerCallback: function (e, t) {
  8271.       b.addEvent(e),
  8272.       b.registerCallback(e, t)
  8273.     },
  8274.     reload: function (e, t) {
  8275.       $(e, t)
  8276.     }
  8277.   }
  8278. }), tp.define('template', [
  8279.   'jq',
  8280.   'util',
  8281.   'postmessage',
  8282.   'containerUtils',
  8283.   'user'
  8284. ], function (e, t, n, r, i) {
  8285.   function s(e) {
  8286.     var t = tp.getEndpointRoot(!0) + '/checkout/template/show';
  8287.     return e.iframeUrl = t,
  8288.     e.postMessageUrl = t,
  8289.     tp.offer.createOfferIframe(e)
  8290.   }
  8291.   return {
  8292.     name: 'template',
  8293.     show: function (e) {
  8294.       return e.offerId = r.fakeOfferId,
  8295.       e.createIframeFn = s,
  8296.       e.trackStatsOnShow = !0,
  8297.       tp.offer.show(e)
  8298.     },
  8299.     deferredShow: function (e) {
  8300.       return e.offerId = r.fakeOfferId,
  8301.       e.createIframeFn = s,
  8302.       tp.offer.deferredShow(e)
  8303.     },
  8304.     close: function () {
  8305.       r.closeModalContainer()
  8306.     },
  8307.     createTemplateIframe: function (e) {
  8308.       return s(e)
  8309.     },
  8310.     showBackdrop: function () {
  8311.       r.showBackdrop()
  8312.     },
  8313.     hideBackdrop: function () {
  8314.       r.hideBackdrop()
  8315.     },
  8316.     centerBackdrop: function (e) {
  8317.       r.centerBackdrop(e)
  8318.     },
  8319.     registerCallback: function (e, t) {
  8320.     },
  8321.     refreshUser: function (e) {
  8322.       i.refreshAccessToken(!0, function () {
  8323.         n.send('externalLoginSuccess', {
  8324.           user_token: i.getProvider().getToken()
  8325.         }, e)
  8326.       })
  8327.     }
  8328.   }
  8329. }), tp.define('myaccount', [
  8330.   'jq',
  8331.   'util',
  8332.   'postmessage',
  8333.   'offer',
  8334.   'user',
  8335.   'containerUtils',
  8336.   'pianoId'
  8337. ], function (e, t, n, r, i, s, o) {
  8338.   function m(t) {
  8339.     t.outerHeight() > e(window).height() ? (a == 0 && (t.css({
  8340.       position: 'absolute'
  8341.     }), a = !0), t.css({
  8342.       marginTop: e(window).scrollTop() - e(window).height() * 0.5
  8343.     }))  : (a == 1 && (t.css({
  8344.       position: 'fixed'
  8345.     }), a = !1), t.css({
  8346.       marginTop: 0 - t.outerHeight() * 0.5
  8347.     })),
  8348.     r.centerBackdrop(t),
  8349.     t.css({
  8350.       marginLeft: 0 - t.outerWidth() * 0.5
  8351.     })
  8352.   }
  8353.   var u = {
  8354.   },
  8355.   a = !1,
  8356.   f = {
  8357.     loginRequired: [
  8358.     ],
  8359.     loginSuccess: [
  8360.     ]
  8361.   },
  8362.   l = function () {
  8363.     return tp.getEndpointRoot() + '/checkout/myaccount/show'
  8364.   },
  8365.   c = function () {
  8366.     var t = e(document.createElement('div')).addClass('tp-modal'),
  8367.     n = e(document.createElement('div')).addClass('tp-close');
  8368.     return n.on('click', _closeContainer),
  8369.     t.append(n),
  8370.     e('body').append(t),
  8371.     t
  8372.   },
  8373.   h = function (e, t) {
  8374.     e.element.css('height', (e.config.maxHeight ? Math.min(t.height, e.config.maxHeight)  : t.height) + 'px'),
  8375.     e.container.css('height', (e.config.maxHeight ? Math.min(t.height, e.config.maxHeight)  : t.height) + 'px'),
  8376.     e.config.displayMode == 'modal' && (e.element.css('width', t.width + 'px'), e.container.css('width', t.width + 'px')),
  8377.     n.send('resized', {
  8378.       height: e.config.maxHeight ? Math.min(t.height, e.config.maxHeight)  : t.height,
  8379.       width: t.width
  8380.     }, e.iframeId)
  8381.   },
  8382.   p = null,
  8383.   d = function (t, n) {
  8384.     var i = e(document.createElement('div')).addClass('tp-modal'),
  8385.     s = e(document.createElement('div')).addClass('tp-close'),
  8386.     o = e(document.createElement('div')).addClass('tp-message');
  8387.     i.css('width', (t.width ? t.width : 400) + 'px'),
  8388.     o.html(t.message);
  8389.     var u = e(document.createElement('div')).addClass('tp-btn-container'),
  8390.     a = e(document.createElement('button')).addClass('tp-btn').addClass('tp-ok-btn');
  8391.     a.html(t.ok ? t.ok : 'Ok');
  8392.     var f = e(document.createElement('button')).addClass('tp-btn').addClass('tp-cancel-btn');
  8393.     f.html(t.cancel ? t.cancel : 'Cancel'),
  8394.     s.on('click', v(n, t, 'cancel')),
  8395.     f.on('click', v(n, t, 'cancel')),
  8396.     a.on('click', v(n, t, 'ok')),
  8397.     i.append(s),
  8398.     i.append(o),
  8399.     u.append(a),
  8400.     u.append(f),
  8401.     i.append(u),
  8402.     e('body').append(i),
  8403.     r.showBackdrop(),
  8404.     i.addClass('tp-active'),
  8405.     m(i),
  8406.     p = i
  8407.   },
  8408.   v = function (e, t, n) {
  8409.     return function () {
  8410.       p && (p.removeClass('tp-active'), r.hideBackdrop(), window.setTimeout(function () {
  8411.         p.remove()
  8412.       }, 250), t.result = n, e(t))
  8413.     }
  8414.   },
  8415.   g = function (e, t) {
  8416.     d(t.params, function (e) {
  8417.       n.send('closeDialog', e, u[t.sender].iframeId)
  8418.     })
  8419.   },
  8420.   y = function (e, t) {
  8421.     f[e] = f[e] || [
  8422.     ],
  8423.     f[e].push(t)
  8424.   },
  8425.   b = function (e, r, i) {
  8426.     t.debug('received event: ' + e, r);
  8427.     if (typeof f[e] == 'undefined') return;
  8428.     for (var s = 0; s < f[e].length; ++s) {
  8429.       t.debug('firing callback for event: ' + e);
  8430.       var o = f[e][s](r);
  8431.       r && r.resultCallbackId && (r.result = o, r.event = e, n.send('resultCallback', r, i))
  8432.     }
  8433.     !f[e].length && r && r.resultCallbackId && (r.callbackNotFound = !0, r.event = e, n.send('resultCallback', r, i))
  8434.   },
  8435.   w = function (e) {
  8436.     t.log('*** My account event received', e.event, e.params);
  8437.     switch (e.event) {
  8438.       case 'resize':
  8439.         t.debug('*** Resize event', e.params.width, e.params.height),
  8440.         h(u[e.sender], e.params),
  8441.         u[e.sender].config.displayMode == 'modal' && m(u[e.sender].container);
  8442.         break;
  8443.       case 'startCheckout':
  8444.         _startCheckout(e.params);
  8445.         break;
  8446.       case 'loaded':
  8447.         h(u[e.sender], e.params),
  8448.         u[e.sender].config.displayMode == 'modal' && (backdrop.show(), window.setTimeout(function () {
  8449.           backdrop.addClass('tp-active'),
  8450.           u[e.sender].container.addClass('tp-active'),
  8451.           m(u[e.sender].container)
  8452.         }, 25));
  8453.         break;
  8454.       case 'close':
  8455.         break;
  8456.       case 'cancel':
  8457.       case 'complete':
  8458.       case 'error':
  8459.       case 'loginRequired':
  8460.       case 'customEvent':
  8461.         b(e.event, e.params, e.sender);
  8462.         break;
  8463.       case 'openDialog':
  8464.         g(e.event, e);
  8465.         break;
  8466.       case 'pianoIdProfileUpdated':
  8467.         o.onProfileUpdate(e.params, function () {
  8468.           var t = e.params;
  8469.           t && t.resultCallbackId && n.send('resultCallback', t, e.sender)
  8470.         });
  8471.         break;
  8472.       case 'loginSuccess':
  8473.         i.getProvider().onLoginSuccess(e.params);
  8474.         var r = {
  8475.           reloadAfterLogin: !0,
  8476.           userToken: e.params.user_token,
  8477.           user: e.params.user
  8478.         };
  8479.         E(r),
  8480.         b(e.event, e.params, e.sender);
  8481.         break;
  8482.       case 'logout':
  8483.         i.logout(function () {
  8484.           var e = {
  8485.           };
  8486.           e.userProvider = i.getProvider().getName(),
  8487.           e.userToken = i.getProvider().getToken() && i.getProvider().getToken().length > 0 ? i.getProvider().getToken()  : '',
  8488.           E(e)
  8489.         }),
  8490.         b(e.event, e.params, e.sender);
  8491.         break;
  8492.       case 'userProfileUpdateSuccess':
  8493.         var s = e,
  8494.         a = s.event,
  8495.         f = s.params,
  8496.         l = s.sender;
  8497.         i.getProvider().onLoginSuccess(f);
  8498.         var c = {
  8499.           userProvider: f.user_provider,
  8500.           userToken: f.user_token
  8501.         };
  8502.         E(c),
  8503.         b(a, f, l);
  8504.         for (var p in u) if (u.hasOwnProperty(p)) {
  8505.           var d = u[p],
  8506.           v = d.config;
  8507.           v.hasOwnProperty('userToken') && delete v.userToken,
  8508.           N(v)
  8509.         }
  8510.         break;
  8511.       case 'langChangedWithinMyAccount':
  8512.         tp.pianoId.isConfigured() && tp.pianoId.updateLang(e.params.lang);
  8513.         break;
  8514.       case 'downForMaintenance':
  8515.         h(u[e.sender], {
  8516.           width: 300,
  8517.           height: 200
  8518.         });
  8519.         break;
  8520.       default:
  8521.         t.log('Received invalid event type: ' + e.event);
  8522.         return
  8523.     }
  8524.   },
  8525.   E = function (e) {
  8526.     n.broadcast('reloadOffer', e)
  8527.   },
  8528.   S = function (n) {
  8529.     n.keyCode == 27 && e.map(u, t.mapArrayIndex).length > 0 && _closeContainer()
  8530.   },
  8531.   x = function () {
  8532.     for (var e in u) {
  8533.       var t = u[e],
  8534.       r = !1;
  8535.       t.container.width() != t.containerWidth && (t.element.css('width', t.container.width()), t.containerWidth = t.container.width(), r = !0),
  8536.       t.container.height() != t.containerHeight && (t.element.css('height', t.container.height()), t.containerHeight = t.container.height(), r = !0),
  8537.       r && n.send('resize', {
  8538.         width: t.container.width(),
  8539.         height: t.container.height()
  8540.       }, e)
  8541.     }
  8542.   },
  8543.   T = function (r) {
  8544.     var o = {
  8545.     };
  8546.     r.templateId && (o.templateId = r.templateId);
  8547.     if (typeof r.displayMode == 'undefined') r.displayMode = 'inline';
  8548.      else if (r.displayMode != 'modal' && r.displayMode != 'inline') {
  8549.       t.log('Invalid offer displayMode; must be one of: modal, inline');
  8550.       return
  8551.     }
  8552.     o.displayMode = r.displayMode,
  8553.     o.iframeId = t.randomString(16),
  8554.     o.url = window.location.href,
  8555.     o.initialWidth = r.width,
  8556.     o.initialHeight = r.height,
  8557.     o.maxHeight = r.maxHeight;
  8558.     if (tp.janrain.isConfigured() && (typeof r.loginRequired == 'undefined' || !r.loginRequired)) {
  8559.       var a = [
  8560.       ],
  8561.       h = r;
  8562.       tp.janrain.addEventHandler('onModalClose', function () {
  8563.         s.activateContainers(a),
  8564.         t.doneCall('myAccountLogin')
  8565.       }),
  8566.       tp.janrain.registerCallback('userChanged', function (e) {
  8567.         if (e && e.user_token) {
  8568.           var t;
  8569.           r.loginSuccess && (t = r.loginSuccess(e));
  8570.           if (typeof t == 'undefined' || t) h.userToken = e.user_token,
  8571.           N(h)
  8572.         }
  8573.       }),
  8574.       tp.janrain.addEventHandler('onCaptureSessionEnded', function (e) {
  8575.         var t;
  8576.         r.loginSuccess && (t = r.loginSuccess(e));
  8577.         if (typeof t == 'undefined' || t) h.userToken = null,
  8578.         N(h)
  8579.       }),
  8580.       r.loginRequired = function () {
  8581.         return t.waitCall('refreshAccessTokenList', function () {
  8582.           t.waitCall('offerCreate', function () {
  8583.             t.startCall('myAccountLogin'),
  8584.             a = s.hideModalContainer(),
  8585.             tp.janrain.login()
  8586.           })
  8587.         }),
  8588.         !1
  8589.       }
  8590.     } else if (tp.gigya.isConfigured() && (typeof r.loginRequired == 'undefined' || !r.loginRequired)) {
  8591.       var a = [
  8592.       ];
  8593.       tp.gigya.registerCallback('onHide', function () {
  8594.         s.activateContainers(a),
  8595.         t.doneCall('myAccountLogin')
  8596.       }),
  8597.       r.loginRequired = function (e) {
  8598.         var n = r;
  8599.         t.waitCall('refreshAccessTokenList', function () {
  8600.           t.waitCall('offerCreate', function () {
  8601.             t.startCall('myAccountLogin'),
  8602.             a = s.hideModalContainer(),
  8603.             tp.gigya.login(function (e) {
  8604.               var t;
  8605.               r.loginSuccess && (t = r.loginSuccess(e));
  8606.               if (typeof t == 'undefined' || t) n.userToken = e.user_token,
  8607.               N(n)
  8608.             })
  8609.           })
  8610.         })
  8611.       }
  8612.     } else if (tp.pianoId.isConfigured()) {
  8613.       var h = r;
  8614.       tp.pianoId.setCallbacks({
  8615.         loggedIn: function (e) {
  8616.           if (o.userToken === e.token) return;
  8617.           var t;
  8618.           r.loginSuccess && (t = r.loginSuccess(e));
  8619.           if (typeof t == 'undefined' || t) h.userToken = e.token,
  8620.           N(h)
  8621.         },
  8622.         loggedOut: function () {
  8623.           var e = {
  8624.           };
  8625.           e.userProvider = i.getProvider().getName(),
  8626.           e.userToken = i.getProvider().getToken() && i.getProvider().getToken().length > 0 ? i.getProvider().getToken()  : '',
  8627.           E(e)
  8628.         }
  8629.       });
  8630.       if (typeof r.loginRequired == 'undefined' || !r.loginRequired) {
  8631.         var p = 0;
  8632.         r.loginRequired = function (e) {
  8633.           p++;
  8634.           if (p > 10) {
  8635.             t.log('Too many attemps to login for myAccount');
  8636.             return
  8637.           }
  8638.           tp.pianoId.show({
  8639.             displayMode: 'modal'
  8640.           })
  8641.         }
  8642.       }
  8643.       o.pianoIdUrl = tp.pianoId.getIframeUrl();
  8644.       var d = tp.pianoId.getLang();
  8645.       d && (o.lang = d),
  8646.       tp.pianoId.onLangChange(function (e) {
  8647.         n.send('langChanged', {
  8648.           lang: e
  8649.         }, o.iframeId)
  8650.       })
  8651.     }
  8652.     var v = e.Deferred();
  8653.     return t.waitCall('refreshUserToken', function () {
  8654.       var s;
  8655.       if (r.displayMode == 'inline') {
  8656.         if (!r.containerSelector) {
  8657.           t.log('My account must have a valid containerSelector');
  8658.           return
  8659.         }
  8660.         if (e(r.containerSelector).length == 0) {
  8661.           t.log('My account must have a valid containerSelector');
  8662.           return
  8663.         }
  8664.         s = e(r.containerSelector),
  8665.         o.width = s.width()
  8666.       } else s = c();
  8667.       o.userProvider = i.getProvider().getName(),
  8668.       r.userToken ? o.userToken = r.userToken : o.userToken = i.getProvider().getToken();
  8669.       for (var a in f) typeof r[a] == 'function' && (t.debug('Registering ' + a + ' callback for iframe ' + o.iframeId), y(a, r[a]));
  8670.       o.aid = tp.aid;
  8671.       var h = l() + '?' + e.param(o, !0),
  8672.       p = e(document.createElement('iframe'));
  8673.       p.attr('scrolling', 'no'),
  8674.       p.attr('allowtransparency', 'true'),
  8675.       p.css('overflow', 'hidden'),
  8676.       p.css('border', '0'),
  8677.       p.css('height', '0px'),
  8678.       p.attr('src', h),
  8679.       p.attr('id', o.iframeId),
  8680.       r.displayMode == 'inline' ? p.css('width', o.width + 'px')  : p.css('width', '0px'),
  8681.       u[o.iframeId] = {
  8682.         iframeId: o.iframeId,
  8683.         config: r,
  8684.         element: p,
  8685.         container: s,
  8686.         containerWidth: s.width(),
  8687.         containerHeight: s.height()
  8688.       },
  8689.       n.init({
  8690.         postMessageUrl: l(),
  8691.         receive: w,
  8692.         iframe: u[o.iframeId]
  8693.       }),
  8694.       e(window).on('keyup', S),
  8695.       r.displayMode == 'modal' && e(window).resize(function () {
  8696.         m(s)
  8697.       }.bind(this)),
  8698.       r.displayMode == 'modal' ? (m(s), s.append(p))  : s.html(p),
  8699.       e(window).resize(x),
  8700.       tp.offer && tp.offer.registerCallback('complete', function () {
  8701.         n.send('refreshNow', {
  8702.         }, o.iframeId)
  8703.       }),
  8704.       v.resolve(u[o.iframeId])
  8705.     }),
  8706.     v.promise()
  8707.   },
  8708.   N = function (e) {
  8709.     t.waitCall('offerCreate', function () {
  8710.       t.waitCall('refreshAccessTokenList', function () {
  8711.         T(e).then(function (e) {
  8712.           e || t.log('Could not initialize my account; check configuration')
  8713.         })
  8714.       })
  8715.     })
  8716.   };
  8717.   return {
  8718.     name: 'myaccount',
  8719.     show: function (e) {
  8720.       N(e)
  8721.     },
  8722.     registerCallback: function (e, t) {
  8723.       y(e, t)
  8724.     }
  8725.   }
  8726. }), tp.define('require-css/css', [
  8727. ], function () {
  8728.   if (typeof window == 'undefined') return {
  8729.     load: function (e, t, n) {
  8730.       n()
  8731.     }
  8732.   };
  8733.   var e = document.getElementsByTagName('head') [0],
  8734.   t = window.navigator.userAgent.match(/Trident\/([^ ;]*)|AppleWebKit\/([^ ;]*)|Opera\/([^ ;]*)|rv\:([^ ;]*)(.*?)Gecko\/([^ ;]*)|MSIE\s([^ ;]*)/) || 0,
  8735.   n = !1,
  8736.   r = !0;
  8737.   t[1] || t[7] ? n = parseInt(t[1]) < 6 || parseInt(t[7]) <= 9 : t[2] ? r = !1 : t[4] && (n = parseInt(t[4]) < 18);
  8738.   var i = {
  8739.   };
  8740.   i.pluginBuilder = './css-builder';
  8741.   var s,
  8742.   o,
  8743.   u = function () {
  8744.     s = document.createElement('style'),
  8745.     e.appendChild(s),
  8746.     o = s.styleSheet || s.sheet
  8747.   },
  8748.   a = 0,
  8749.   f = [
  8750.   ],
  8751.   l,
  8752.   c = function (e) {
  8753.     a++,
  8754.     a == 32 && (u(), a = 0),
  8755.     o.addImport(e),
  8756.     s.onload = function () {
  8757.       h()
  8758.     }
  8759.   },
  8760.   h = function () {
  8761.     l();
  8762.     var e = f.shift();
  8763.     if (!e) {
  8764.       l = null;
  8765.       return
  8766.     }
  8767.     l = e[1],
  8768.     c(e[0])
  8769.   },
  8770.   p = function (e, t) {
  8771.     (!o || !o.addImport) && u();
  8772.     if (o && o.addImport) l ? f.push([e,
  8773.     t])  : (c(e), l = t);
  8774.      else {
  8775.       s.textContent = '@import "' + e + '";';
  8776.       var n = setInterval(function () {
  8777.         try {
  8778.           s.sheet.cssRules,
  8779.           clearInterval(n),
  8780.           t()
  8781.         } catch (e) {
  8782.         }
  8783.       }, 10)
  8784.     }
  8785.   },
  8786.   d = function (t, n) {
  8787.     var i = document.createElement('link');
  8788.     i.type = 'text/css',
  8789.     i.rel = 'stylesheet';
  8790.     if (r) i.onload = function () {
  8791.       i.onload = function () {
  8792.       },
  8793.       setTimeout(n, 7)
  8794.     };
  8795.      else var s = setInterval(function () {
  8796.       for (var e = 0; e < document.styleSheets.length; e++) {
  8797.         var t = document.styleSheets[e];
  8798.         if (t.href == i.href) return clearInterval(s),
  8799.         n()
  8800.       }
  8801.     }, 10);
  8802.     i.href = t,
  8803.     e.appendChild(i)
  8804.   };
  8805.   return i.normalize = function (e, t) {
  8806.     return e.substr(e.length - 4, 4) == '.css' && (e = e.substr(0, e.length - 4)),
  8807.     t(e)
  8808.   },
  8809.   i.load = function (e, t, r, i) {
  8810.     (n ? p : d) (t.toUrl(e + '.css'), r)
  8811.   },
  8812.   i
  8813. }), tp.define('util', [
  8814.   'jq'
  8815. ], function (e) {
  8816.   function h(e) {
  8817.     var t = '';
  8818.     try {
  8819.       for (var n = 0; n < e.length; n++) try {
  8820.         t += JSON.stringify(e[n]) + ', '
  8821.       } catch (r) {
  8822.         t += '' + r
  8823.       }
  8824.       return e = [
  8825.         t
  8826.       ]
  8827.     } catch (r) {
  8828.       return e
  8829.     }
  8830.   }
  8831.   function A(e) {
  8832.     return tp.useAidSpecifiedCookies && tp.aid ? e + '_' + tp.aid : e
  8833.   }
  8834.   function O() {
  8835.     var e = A('__ut'),
  8836.     t = o(e);
  8837.     if (typeof t != 'undefined' && t && t.length >= 0) return t
  8838.   }
  8839.   function M() {
  8840.     return - Math.round((new Date).getTimezoneOffset())
  8841.   }
  8842.   function _() {
  8843.     if (t === undefined || t === null) t = pt('__pat');
  8844.     return t || 0
  8845.   }
  8846.   function D(e) {
  8847.     t = e,
  8848.     dt('__pat', t, {
  8849.       path: '/',
  8850.       expires: 30
  8851.     })
  8852.   }
  8853.   function P(e) {
  8854.     e.browser && e.browser.app_timezone_offset !== undefined ? D(e.browser.app_timezone_offset)  : e.timezone_offset !== undefined && D(e.timezone_offset)
  8855.   }
  8856.   function H(t) {
  8857.     var n = u(/^tpcc_.+/);
  8858.     e.each(n, function (e, n) {
  8859.       t[n.name] = n.value
  8860.     })
  8861.   }
  8862.   function B() {
  8863.     var t = {
  8864.     },
  8865.     n = u(/^_pc_.+/);
  8866.     return e.each(n, function (e, n) {
  8867.       t[decodeURIComponent(n.name)] = n.value
  8868.     }),
  8869.     t
  8870.   }
  8871.   function j() {
  8872.     var e = [
  8873.     ];
  8874.     e.push(document.domain);
  8875.     var t = document.domain.split('.');
  8876.     while (t.length >= 2) e.push('.' + t.join('.')),
  8877.     t.shift();
  8878.     return e
  8879.   }
  8880.   function F(t) {
  8881.     var r = pt(t);
  8882.     return e.type(r) === 'boolean' || e.type(r) === 'string' && r.length ? r === !0 || r === 'true' ? n.ENABLED : n.DISABLED : n.NOT_DETECTED
  8883.   }
  8884.   function I() {
  8885.     var e = pt('__pnahc'),
  8886.     t = !1;
  8887.     return typeof e == 'undefined' && (e = '0', t = !0),
  8888.     {
  8889.       cookieValue: parseInt(e, 10),
  8890.       isFirst: t
  8891.     }
  8892.   }
  8893.   function q(e, t) {
  8894.     e <<= 1,
  8895.     t === n.ENABLED ? e |= 1 : e &= - 2,
  8896.     t !== n.NOT_DETECTED && dt('__pnahc', e + '', {
  8897.       path: '/',
  8898.       expires: 90
  8899.     })
  8900.   }
  8901.   function R(e) {
  8902.     var t = e >> 0 & 1;
  8903.     return t === 1
  8904.   }
  8905.   function U() {
  8906.     var e = n.NOT_DETECTED,
  8907.     t = I();
  8908.     return tp.adblockerCookieName && (e = F(tp.adblockerCookieName)),
  8909.     e === n.NOT_DETECTED && (e = F('__pac')),
  8910.     e === n.NOT_DETECTED && (e = F('__adblocker')),
  8911.     q(t.cookieValue, e),
  8912.     e === n.ENABLED && (t.isFirst || R(t.cookieValue) || (e = n.ENABLED_AFTER_DISABLED)),
  8913.     e
  8914.   }
  8915.   function z() {
  8916.     var e = '';
  8917.     return typeof window['blockAdBlock'] != 'undefined' ? e = '1' : e = '0',
  8918.     e
  8919.   }
  8920.   function X(e) {
  8921.     return !!W[e]
  8922.   }
  8923.   function V(e, t) {
  8924.     W[e] ? W[e].waiters.push(t)  : t()
  8925.   }
  8926.   function $(e) {
  8927.     W[e] ? W[e].counter++ : W[e] = {
  8928.       counter: 1,
  8929.       waiters: [
  8930.       ]
  8931.     }
  8932.   }
  8933.   function J(e, t) {
  8934.     W[e] && (W[e].counter--, W[e].counter <= 0 && (W[e].waiters.forEach(function (e) {
  8935.       e(t !== undefined ? t : {
  8936.       })
  8937.     }), delete W[e]))
  8938.   }
  8939.   function K(e) {
  8940.     if (typeof e == 'undefined' || e.length == 0) return;
  8941.     typeof e != 'string' && (e = '' + e),
  8942.     e = e.trim();
  8943.     if (e.match(/^[0-9]{0,10}$/)) return parseInt(e);
  8944.     if (e.match(/^[0-9]{13,}$/)) return parseInt(e) / 1000;
  8945.     var t = Date.parse(e);
  8946.     if (t) return t / 1000;
  8947.     e = e.replace(/00:([0-9]{2}(:[0-9]{2})?\s*[AP]M)/i, '12:$1').replace(/([0-9]{2})([AP|M])/i, '$1 $2'),
  8948.     e = e.replace(/\s*(at|@|\-|on|\|)\s*/gi, ' '),
  8949.     e = e.replace(/\s*(mon(day)?|tue(s?day)?|wed(nesday)?|thu((rs)?day)?|fri(day)?|sat(urday)?|sun(day)?)\s*/gi, ''),
  8950.     e = e.replace(/([0-9]{1,2})(st|nd|rd|th)/, '$1'),
  8951.     e.match(/\s+ET$/) && (d.getTimezoneOffset() == 240 ? e = e.replace(/\s+ET$/, ' EDT')  : e = e.replace(/\s+ET$/, ' EST')),
  8952.     e = e.trim();
  8953.     var t;
  8954.     t = Date.parse(e);
  8955.     if (t) return t / 1000;
  8956.     if (m = e.match(/!^([a-z]+)[-/ ]([0-9]+)[-/ ]([0-9]+)(.*)$!i/)) e = m[2] + ' ' + m[1] + ' ' + m[3] + m[4];
  8957.      else if (m = e.match(/!^([0-9]+)[-/ ]([a-z]+)[-/ ]([0-9]+)(.*)$!i/)) e = m[1] + ' ' + m[2] + ' ' + m[3] + m[4];
  8958.     t = Date.parse(e);
  8959.     if (t) return t / 1000
  8960.   }
  8961.   function Q() {
  8962.     var e = navigator.userAgent || navigator.vendor || window.opera;
  8963.     return /iPad|iPhone|iPod/.test(e) && !window.MSStream
  8964.   }
  8965.   function G() {
  8966.     var e = navigator.userAgent || navigator.vendor || window.opera;
  8967.     return /iPhone/.test(e) && !window.MSStream
  8968.   }
  8969.   function Y() {
  8970.     var e = navigator.userAgent || navigator.vendor || window.opera;
  8971.     return /(iPhone|iPod|iPad).*AppleWebKit/i.test(e)
  8972.   }
  8973.   function Z(e) {
  8974.     return e ? (e = e.replace(/^((%20)|\s)+/, ''), e = encodeURI(decodeURI(e)), e = e.replace(/^([^#]*)(#)(.*)$/, function (e, t, n, r) {
  8975.       return t + n + r.replace(/#/g, '%23')
  8976.     }), e)  : ''
  8977.   }
  8978.   function et(e) {
  8979.     var t = parseInt(e, 10);
  8980.     return !(isNaN(parseFloat(t)) || t < 0 || t > 255)
  8981.   }
  8982.   function tt(e) {
  8983.     var t = e.split('.'),
  8984.     n = !0;
  8985.     if (t.length === 4) {
  8986.       if (!et(t[0]) || !et(t[1]) || !et(t[2]) || !et(t[3])) n = !1
  8987.     } else n = !1;
  8988.     return n
  8989.   }
  8990.   function nt(e) {
  8991.     var t = document.createElement('a'),
  8992.     n = /^https?:\/\//i;
  8993.     return t.href = n.test(e) ? e : 'http://' + e,
  8994.     t.hostname
  8995.   }
  8996.   function rt(e, t, n) {
  8997.     var r;
  8998.     return function () {
  8999.       var i = this,
  9000.       s = Array.prototype.slice.call(arguments),
  9001.       o = function () {
  9002.         r = null,
  9003.         n || e.apply(i, s)
  9004.       },
  9005.       u = n && !r;
  9006.       clearTimeout(r),
  9007.       r = setTimeout(o, t),
  9008.       u && e.apply(i, s)
  9009.     }
  9010.   }
  9011.   function it(e, t) {
  9012.     function s() {
  9013.       if (n) {
  9014.         r = arguments,
  9015.         i = this;
  9016.         return
  9017.       }
  9018.       e.apply(this, arguments),
  9019.       n = !0,
  9020.       setTimeout(function () {
  9021.         n = !1,
  9022.         r && (s.apply(i, r), r = i = null)
  9023.       }, t)
  9024.     }
  9025.     var n = !1,
  9026.     r,
  9027.     i;
  9028.     return s
  9029.   }
  9030.   function st() {
  9031.     var e = (navigator && navigator.userAgent || '').toLowerCase(),
  9032.     t = e.match(/version\/(\d+).+?safari/);
  9033.     return t !== null
  9034.   }
  9035.   function ot() {
  9036.     var t = (navigator && navigator.appVersion || '').indexOf('MSIE') !== - 1,
  9037.     n = e.browser || {
  9038.     },
  9039.     r = n.mozilla && n.version === '11.0';
  9040.     return t || r
  9041.   }
  9042.   function ut(e) {
  9043.     return /\?voucher_code/.test(e) ? e.split('&').length > 1 ? e.replace(/voucher_code[^&]+&?/gi, '')  : e.replace(/\?voucher_code[^&]+&?/gi, '')  : /&voucher_code/.test(e) ? e.replace(/&voucher_code[^&]+/gi, '')  : e
  9044.   }
  9045.   function at(e) {
  9046.     if (e && e.length && e[0] === '.') return e;
  9047.     var t = e || window.location.href,
  9048.     n = nt(t);
  9049.     return tt(n) ? n : n === 'localhost' ? null : '.' + n
  9050.   }
  9051.   function ft(e, t) {
  9052.     try {
  9053.       var n = new Error,
  9054.       r = tp.user.getProvider().getName(),
  9055.       i = JSON.stringify({
  9056.         aid: tp.aid,
  9057.         description: 'clearing __tp cookie',
  9058.         userProvider: r,
  9059.         accessTokenList: e,
  9060.         userToken: t,
  9061.         url: window.location.href,
  9062.         trace: n.stack
  9063.       });
  9064.       tp.api.callApi('/anon/error/log', {
  9065.         log_message: i
  9066.       })
  9067.     } catch (s) {
  9068.     }
  9069.   }
  9070.   function lt(e) {
  9071.     try {
  9072.       var t = new Error,
  9073.       n = tp.user.getProvider().getName(),
  9074.       r = JSON.stringify({
  9075.         aid: tp.aid,
  9076.         description: 'clearing __utp cookie',
  9077.         userProvider: n,
  9078.         userToken: e,
  9079.         url: window.location.href,
  9080.         trace: t.stack
  9081.       });
  9082.       tp.api.callApi('/anon/error/log', {
  9083.         log_message: r
  9084.       })
  9085.     } catch (i) {
  9086.     }
  9087.   }
  9088.   function ct(e) {
  9089.     var t = function () {
  9090.       document.removeEventListener('DOMContentLoaded', t),
  9091.       window.removeEventListener('load', t),
  9092.       e()
  9093.     };
  9094.     document.readyState === 'complete' || document.readyState !== 'loading' && !document.documentElement.doScroll ? window.setTimeout(e)  : (document.addEventListener('DOMContentLoaded', t), window.addEventListener('load', t))
  9095.   }
  9096.   function ht(e) {
  9097.     e || (e = 730);
  9098.     var t = tp.getMaxCookieExpirationInDays();
  9099.     if (t !== null) {
  9100.       var n;
  9101.       typeof e == 'number' ? (n = new Date, n.setDate(n.getDate() + e))  : n = e;
  9102.       var r = new Date;
  9103.       r.setDate(r.getDate() + t);
  9104.       if (n > r) return t
  9105.     }
  9106.     return e
  9107.   }
  9108.   function pt(t) {
  9109.     return e.cookie(t)
  9110.   }
  9111.   function dt(t, n, r) {
  9112.     r && r.expires && (r.expires = ht(r.expires)),
  9113.     e.cookie(t, n, r)
  9114.   }
  9115.   function vt() {
  9116.     var e = w('redirect_uri');
  9117.     return e.indexOf('https://www.facebook.com/subscriptions/account-linking/confirm/') === 0
  9118.   }
  9119.   function mt() {
  9120.     var e = [
  9121.       '__webdriver_evaluate',
  9122.       '__selenium_evaluate',
  9123.       '__webdriver_script_function',
  9124.       '__webdriver_script_func',
  9125.       '__webdriver_script_fn',
  9126.       '__fxdriver_evaluate',
  9127.       '__driver_unwrapped',
  9128.       '__webdriver_unwrapped',
  9129.       '__driver_evaluate',
  9130.       '__selenium_unwrapped',
  9131.       '__fxdriver_unwrapped'
  9132.     ],
  9133.     t = [
  9134.       '_phantom',
  9135.       '__nightmare',
  9136.       '_selenium',
  9137.       'callPhantom',
  9138.       'callSelenium',
  9139.       '_Selenium_IDE_Recorder'
  9140.     ];
  9141.     for (var n in t) {
  9142.       var r = t[n];
  9143.       if (window[r]) return !0
  9144.     }
  9145.     for (var i in e) {
  9146.       var s = e[i];
  9147.       if (window.document[s]) return !0
  9148.     }
  9149.     for (var o in window.document) if (o.match(/\$[a-z]dc_/) && window.document[o].cache_) return !0;
  9150.     return window.external && window.external.toString && window.external.toString() && window['external'].toString() ['indexOf']('Sequentum') != - 1 ? !0 : window.document.documentElement.getAttribute('selenium') ? !0 : window.document.documentElement.getAttribute('webdriver') ? !0 : window.document.documentElement.getAttribute('driver') ? !0 : !1
  9151.   }
  9152.   function mt() {
  9153.     var e = [
  9154.       '__webdriver_evaluate',
  9155.       '__selenium_evaluate',
  9156.       '__webdriver_script_function',
  9157.       '__webdriver_script_func',
  9158.       '__webdriver_script_fn',
  9159.       '__fxdriver_evaluate',
  9160.       '__driver_unwrapped',
  9161.       '__webdriver_unwrapped',
  9162.       '__driver_evaluate',
  9163.       '__selenium_unwrapped',
  9164.       '__fxdriver_unwrapped'
  9165.     ],
  9166.     t = [
  9167.       '_phantom',
  9168.       '__nightmare',
  9169.       '_selenium',
  9170.       'callPhantom',
  9171.       'callSelenium',
  9172.       '_Selenium_IDE_Recorder'
  9173.     ];
  9174.     for (var n in t) {
  9175.       var r = t[n];
  9176.       if (window[r]) return !0
  9177.     }
  9178.     for (var i in e) {
  9179.       var s = e[i];
  9180.       if (window.document[s]) return !0
  9181.     }
  9182.     for (var o in window.document) if (o.match(/\$[a-z]dc_/) && window.document[o].cache_) return !0;
  9183.     return window.external && window.external.toString && window.external.toString() && window['external'].toString() ['indexOf']('Sequentum') != - 1 ? !0 : window.document.documentElement.getAttribute('selenium') ? !0 : window.document.documentElement.getAttribute('webdriver') ? !0 : window.document.documentElement.getAttribute('driver') ? !0 : !1
  9184.   }
  9185.   var t,
  9186.   n = {
  9187.     ENABLED_AFTER_DISABLED: - 2,
  9188.     NOT_DETECTED: - 1,
  9189.     DISABLED: 0,
  9190.     ENABLED: 1
  9191.   };
  9192.   typeof 'testString'.toHex == 'undefined' && Object.defineProperty(String.prototype, 'toHex', {
  9193.     enumerable: !1,
  9194.     value: function () {
  9195.       var e = '';
  9196.       for (var t = 0; t < this.length; ++t) e += '' + this.charCodeAt(t).toString(16);
  9197.       return e
  9198.     }
  9199.   });
  9200.   var r = function (e) {
  9201.     e || (e = 5);
  9202.     var t = '',
  9203.     n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  9204.     if (window.crypto && window.crypto.getRandomValues && typeof Uint32Array == 'function') {
  9205.       var r = new Uint32Array(e);
  9206.       window.crypto.getRandomValues(r);
  9207.       for (var i = 0; i < e; i++) t += n.charAt(r[i] % n.length)
  9208.     } else for (var i = 0; i < e; i++) t += n.charAt(Math.floor(Math.random() * n.length));
  9209.     return t
  9210.   },
  9211.   i = function (t, n) {
  9212.     var r = {
  9213.       path: '/',
  9214.       expires: 0
  9215.     };
  9216.     typeof n != 'undefined' && (r.domain = n),
  9217.     e.removeCookie(t, r)
  9218.   },
  9219.   s = function (e, t) {
  9220.     t.indexOf('abril.com.br') !== - 1 && i(e, '.abril.com.br')
  9221.   },
  9222.   o = function (e) {
  9223.     if (document.cookie.length == 0) return null;
  9224.     var t = document.cookie.split(';');
  9225.     for (var n = 0; n < t.length; n++) {
  9226.       var r = t[n].indexOf('=');
  9227.       if (r !== - 1) {
  9228.         var i = t[n].substr(0, r).trim(),
  9229.         s;
  9230.         if (e instanceof RegExp && e.test(i)) {
  9231.           s = t[n].substr(r + 1).replace(/^\s+|\s+$/g, '');
  9232.           try {
  9233.             return decodeURIComponent(s)
  9234.           } catch (o) {
  9235.             a('Could not uri-decode cookie "' + e.toString() + '"', o)
  9236.           }
  9237.           return s
  9238.         }
  9239.         if (i == e) {
  9240.           s = t[n].substr(r + 1).replace(/^\s+|\s+$/g, '');
  9241.           try {
  9242.             return decodeURIComponent(s)
  9243.           } catch (o) {
  9244.             a('Could not uri-decode cookie "' + e.toString() + '"', o)
  9245.           }
  9246.           return s
  9247.         }
  9248.       }
  9249.     }
  9250.     return null
  9251.   },
  9252.   u = function (e) {
  9253.     if (document.cookie.length == 0) return [];
  9254.     var t = [
  9255.     ],
  9256.     n = document.cookie.split(';');
  9257.     for (var r = 0; r < n.length; r++) {
  9258.       var i = n[r].indexOf('=');
  9259.       if (i !== - 1) {
  9260.         var s = n[r].substr(0, i).trim(),
  9261.         o;
  9262.         if (e instanceof RegExp && e.test(s)) {
  9263.           o = n[r].substr(i + 1).replace(/^\s+|\s+$/g, '');
  9264.           try {
  9265.             o = decodeURIComponent(o)
  9266.           } catch (u) {
  9267.             a('Could not uri-decode cookie "' + e.toString() + '"', u)
  9268.           }
  9269.           t.push({
  9270.             name: s,
  9271.             value: o
  9272.           })
  9273.         } else if (s == e) {
  9274.           o = n[r].substr(i + 1).replace(/^\s+|\s+$/g, '');
  9275.           try {
  9276.             o = decodeURIComponent(o)
  9277.           } catch (u) {
  9278.             a('Could not uri-decode cookie "' + e.toString() + '"', u)
  9279.           }
  9280.           t.push({
  9281.             name: s,
  9282.             value: o
  9283.           })
  9284.         }
  9285.       }
  9286.     }
  9287.     return t
  9288.   },
  9289.   a = function () {
  9290.     tp.debug === !0 && l.apply(null, arguments)
  9291.   },
  9292.   f = function () {
  9293.     l.apply(null, arguments);
  9294.     var e;
  9295.     typeof arguments[0] == 'string' ? e = new Error(arguments[0])  : e = new Error,
  9296.     e.stack && l(e.stack)
  9297.   },
  9298.   l = function () {
  9299.     window.console || (window.console = {
  9300.     });
  9301.     if (!window.console.log) return;
  9302.     if (!window.console.log.apply) return;
  9303.     if (!window.console.log.apply.call) return;
  9304.     if (typeof window.console != 'undefined' && typeof window.console.log != 'undefined') {
  9305.       var e = [
  9306.         'TP:'
  9307.       ];
  9308.       try {
  9309.         for (var t = 0; t < arguments.length; t++) e.push(arguments[t])
  9310.       } catch (n) {
  9311.         e = arguments
  9312.       }
  9313.       mt() && (e = h(e)),
  9314.       mt() && (e = h(e)),
  9315.       typeof window.console.log == 'object' ? window.console.log.apply.call(console.log, console, e)  : console.log.apply(console, e)
  9316.     }
  9317.   },
  9318.   c = function () {
  9319.     var e = 0;
  9320.     return window.pageYOffset ? e = window.pageYOffset : (e = document.documentElement || document.body.parentNode, e = 'number' == typeof e.scrollTop ? e.scrollTop : document.body.scrollTop),
  9321.     e
  9322.   },
  9323.   p = function () {
  9324.     var e,
  9325.     t;
  9326.     return e = Math.max(document.documentElement.clientWidth, document.body.scrollWidth, document.documentElement.scrollWidth, document.body.offsetWidth, document.documentElement.offsetWidth),
  9327.     t = Math.max(document.documentElement.clientHeight, document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight),
  9328.     {
  9329.       x: e,
  9330.       y: t
  9331.     }
  9332.   },
  9333.   v = function () {
  9334.     var e,
  9335.     t;
  9336.     return 'CSS1Compat' === document.compatMode ? (e = document.documentElement.clientWidth, t = document.documentElement.clientHeight)  : (e = document.body.clientWidth, t = document.body.clientHeight),
  9337.     {
  9338.       x: e,
  9339.       y: t
  9340.     }
  9341.   },
  9342.   g = function (e, t) {
  9343.     var n = c(),
  9344.     r = v();
  9345.     return r = {
  9346.       x: r.x / 2 - e / 2,
  9347.       y: r.y / 2 - t / 2 + n
  9348.     },
  9349.     r.x = Math.max(0, r.x),
  9350.     r.y = Math.max(10, r.y),
  9351.     r
  9352.   },
  9353.   y = function (e, t) {
  9354.     e = e || 0,
  9355.     t = t || 0;
  9356.     var n = window.screenLeft !== undefined ? window.screenLeft : window.screen.left,
  9357.     r = window.screenTop !== undefined ? window.screenTop : window.screen.top,
  9358.     i = window.innerWidth || document.documentElement.clientWidth || window.screen.width,
  9359.     s = window.innerHeight || document.documentElement.clientHeight || window.screen.height,
  9360.     o = i / 2 - e / 2 + n,
  9361.     u = s / 2 - t / 2 + r;
  9362.     return {
  9363.       left: o,
  9364.       top: u
  9365.     }
  9366.   },
  9367.   b = function (e) {
  9368.     var t = {
  9369.     };
  9370.     return location.search.substr(1).split('&').forEach(function (e) {
  9371.       var n = e.split('='),
  9372.       r = n[0],
  9373.       i = n[1] && decodeURIComponent(n[1]);
  9374.       r in t ? t[r].push(i)  : t[r] = [
  9375.         i
  9376.       ]
  9377.     }),
  9378.     t.hasOwnProperty(e)
  9379.   },
  9380.   w = function (e) {
  9381.     e = e.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
  9382.     var t = new RegExp('[\\?&]' + e + '=([^&#]*)'),
  9383.     n = t.exec(location.search);
  9384.     return n === null ? '' : decodeURIComponent(n[1].replace(/\+/g, ' '))
  9385.   },
  9386.   E = function (e, t) {
  9387.     var n,
  9388.     r = e.split('#'),
  9389.     i = r[0].split('?');
  9390.     r.length >= 2 && (n = r[1]);
  9391.     if (i.length >= 2) {
  9392.       var s = encodeURIComponent(t) + '=',
  9393.       o = i[1].split(/[&;]/g);
  9394.       for (var u = o.length; u-- > 0; ) o[u].lastIndexOf(s, 0) !== - 1 && o.splice(u, 1);
  9395.       return e = i[0] + (o.length > 0 ? '?' + o.join('&')  : ''),
  9396.       n ? e + '#' + n : e
  9397.     }
  9398.     return e
  9399.   },
  9400.   S = function (e) {
  9401.     var t = E(location.href, e);
  9402.     history && typeof history.replaceState == 'function' ? history.replaceState({
  9403.     }, document.title, t)  : location.href = t
  9404.   },
  9405.   x = function (t, n, r) {
  9406.     var s = A('__ut');
  9407.     if (t && e.type(t.value) == 'string') {
  9408.       var o = new Date,
  9409.       u = {
  9410.         path: '/',
  9411.         expires: 730
  9412.       };
  9413.       t.cookie_domain && t.cookie_domain != 'localhost' && e.inArray(t.cookie_domain, j()) >= 0 && (u.domain = t.cookie_domain),
  9414.       dt('__tac', t.value, u),
  9415.       dt('__tae', o.getTime(), u),
  9416.       dt(s, n, u),
  9417.       n === '' && !r && ft(t, n)
  9418.     } else {
  9419.       var a = j();
  9420.       for (var f in a) i('__tac', a[f]),
  9421.       i('__tae', a[f]),
  9422.       i(s, a[f]);
  9423.       i('__tac'),
  9424.       i('__tae'),
  9425.       i(s),
  9426.       r || ft(t, n)
  9427.     }
  9428.   },
  9429.   T = function (e) {
  9430.     typeof e.browser != 'undefined' && typeof e.browser.cookie_domain != 'undefined' && J('domainIsReceived', e.browser.cookie_domain),
  9431.     e.tbc && e.tbc.cookie_domain && J('domainIsReceived', e.tbc.cookie_domain)
  9432.   },
  9433.   N = function (e) {
  9434.     try {
  9435.       return JSON.parse(pt(e)).domain
  9436.     } catch (t) {
  9437.       $('domainIsReceived')
  9438.     }
  9439.   },
  9440.   C = function (e) {
  9441.     if (typeof e.browser != 'undefined' && typeof e.browser.tbc != 'undefined') {
  9442.       var t = {
  9443.         path: '/',
  9444.         expires: 730
  9445.       };
  9446.       e.browser.cookie_domain && (t.domain = e.browser.cookie_domain, s('__tbc', e.browser.cookie_domain)),
  9447.       i('__tbc'),
  9448.       dt('__tbc', e.browser.tbc, t)
  9449.     }
  9450.     if (e.tbc && e.tbc.cookie_value) {
  9451.       var t = {
  9452.         path: '/',
  9453.         expires: 730
  9454.       };
  9455.       e.tbc.cookie_domain && (t.domain = e.tbc.cookie_domain, s('__tbc', e.tbc.cookie_domain)),
  9456.       i('__tbc'),
  9457.       dt('__tbc', e.tbc.cookie_value, t)
  9458.     }
  9459.   },
  9460.   k = function () {
  9461.     return pt('__tbc')
  9462.   },
  9463.   L = function () {
  9464.     var e = w('tpcc');
  9465.     if (e) {
  9466.       var t = new Date,
  9467.       n = JSON.stringify({
  9468.         date: t.getTime()
  9469.       }),
  9470.       r = location.hostname.split('.').slice( - 2).join('.');
  9471.       /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(location.hostname) && (r = ''),
  9472.       r === 'localhost' && (r = ''),
  9473.       dt('tpcc_' + e, n, {
  9474.         path: '/',
  9475.         expires: 90,
  9476.         domain: r
  9477.       })
  9478.     }
  9479.   },
  9480.   W = {
  9481.   };
  9482.   return {
  9483.     name: 'util',
  9484.     __private__: {
  9485.       getAdjustedCookieExpiration: ht
  9486.     },
  9487.     __protected__: {
  9488.       deleteTLDCookieForSpecificDomains: s,
  9489.       documentReady: ct,
  9490.       getCookie: pt,
  9491.       setCookie: dt,
  9492.       cameFromFbSubscriptions: vt,
  9493.       logRemoveTokens: lt
  9494.     },
  9495.     randomString: function (e) {
  9496.       return r(e)
  9497.     },
  9498.     log: function () {
  9499.       l.apply(null, arguments)
  9500.     },
  9501.     debug: function () {
  9502.       a.apply(null, arguments)
  9503.     },
  9504.     error: function () {
  9505.       f.apply(null, arguments)
  9506.     },
  9507.     findCookieByName: function (e) {
  9508.       return o(e)
  9509.     },
  9510.     findCookiesByName: function (e) {
  9511.       return u(e)
  9512.     },
  9513.     removeVoucherCodeFromUrl: function (e) {
  9514.       return ut(e)
  9515.     },
  9516.     deleteCookie: function (e, t) {
  9517.       return i(e, t)
  9518.     },
  9519.     mapArrayIndex: function (e, t) {
  9520.       return t
  9521.     },
  9522.     getScroll: function () {
  9523.       return c()
  9524.     },
  9525.     getPageSize: function () {
  9526.       return p()
  9527.     },
  9528.     getViewport: function () {
  9529.       return v()
  9530.     },
  9531.     center: function (e, t) {
  9532.       return g(e, t)
  9533.     },
  9534.     centerScreen: function (e, t) {
  9535.       return y(e, t)
  9536.     },
  9537.     getQueryParamByName: function (e) {
  9538.       return w(e)
  9539.     },
  9540.     hasQueryParamByName: function (e) {
  9541.       return b(e)
  9542.     },
  9543.     removeQueryParamByName: function (e) {
  9544.       return S(e)
  9545.     },
  9546.     setAccessTokenListCookie: function (e, t, n) {
  9547.       return x(e, t, n)
  9548.     },
  9549.     setTpccCookies: function () {
  9550.       return L()
  9551.     },
  9552.     getCampaigns: function (e) {
  9553.       return H(e)
  9554.     },
  9555.     getCustomCookies: function () {
  9556.       return B()
  9557.     },
  9558.     ADBLOCKER_STATUS: n,
  9559.     getAdblockStatus: function () {
  9560.       return U()
  9561.     },
  9562.     getAdblockerStatusReason: function () {
  9563.       return z()
  9564.     },
  9565.     getAdblockerHistoryCookieInfo: function () {
  9566.       return I()
  9567.     },
  9568.     waitCall: function (e, t) {
  9569.       V(e, t)
  9570.     },
  9571.     startCall: function (e) {
  9572.       $(e)
  9573.     },
  9574.     doneCall: function (e, t) {
  9575.       J(e, t)
  9576.     },
  9577.     hasCall: X,
  9578.     debounce: rt,
  9579.     throttle: it,
  9580.     setTbcCookieFromResponse: function (e) {
  9581.       C(e)
  9582.     },
  9583.     getTbcCookie: function () {
  9584.       return k()
  9585.     },
  9586.     getAidSpecifiedName: function (e) {
  9587.       return A(e)
  9588.     },
  9589.     getUserTokenCookie: function () {
  9590.       return O()
  9591.     },
  9592.     setAppTimezoneOffsetFromResponse: function (e) {
  9593.       return P(e)
  9594.     },
  9595.     setAppTimezoneOffset: function (e) {
  9596.       return D(e)
  9597.     },
  9598.     getAppTimezoneOffset: function () {
  9599.       return _()
  9600.     },
  9601.     getBrowserTimezoneOffset: function () {
  9602.       return M()
  9603.     },
  9604.     str2timestamp: function (e) {
  9605.       return K(e)
  9606.     },
  9607.     getPossibleCookieDomains: function () {
  9608.       return j()
  9609.     },
  9610.     isMobileTabletIOs: function () {
  9611.       return Q()
  9612.     },
  9613.     isIphone: function () {
  9614.       return G()
  9615.     },
  9616.     isIOsUiWebView: function () {
  9617.       return Y()
  9618.     },
  9619.     isIE: function () {
  9620.       return ot()
  9621.     },
  9622.     prepareUrlParameter: function (e) {
  9623.       return Z(e)
  9624.     },
  9625.     getReferrer: function () {
  9626.       return document.referrer
  9627.     },
  9628.     getHostname: function (e) {
  9629.       return nt(e)
  9630.     },
  9631.     extractCookieDomain: function (e) {
  9632.       return at(e)
  9633.     },
  9634.     setCurrentDomainFromResponse: function (e) {
  9635.       return T(e)
  9636.     },
  9637.     getCurrentDomainFromCookie: function (e) {
  9638.       return N(e)
  9639.     },
  9640.     isBot: mt
  9641.   }
  9642. }), tp.define('util', function () {
  9643. }), tp.define('postmessage', [
  9644.   'jq',
  9645.   'util'
  9646. ], function (e, t) {
  9647.   function m(e) {
  9648.     var t = s[e.event] || [
  9649.     ];
  9650.     t.forEach(function (t) {
  9651.       t(e)
  9652.     })
  9653.   }
  9654.   var n = {
  9655.   },
  9656.   r = {
  9657.   },
  9658.   i = [
  9659.   ],
  9660.   s = {
  9661.   },
  9662.   o = function (e) {
  9663.     return function () {
  9664.       var t = i.filter(function (t) {
  9665.         return t.recipient === e
  9666.       });
  9667.       i = i.filter(function (t) {
  9668.         return t.recipient !== e
  9669.       });
  9670.       for (var n = t.length; n--; ) {
  9671.         var r = t.pop();
  9672.         a(r.event, r.params, r.recipient)
  9673.       }
  9674.     }
  9675.   },
  9676.   u = function (e, n, s) {
  9677.     if (!(!d(s) || s in r)) {
  9678.       t.error('Cannot send message to unmanaged iframe: ' + s);
  9679.       return
  9680.     }
  9681.     r[s].element && (r[s].config.displayMode === 'popup' && r[s].element || r[s].config.displayMode != 'popup' && r[s].element && r[s].element.get(0).contentWindow ? a(e, n, s)  : (i.push({
  9682.       event: e,
  9683.       params: n,
  9684.       recipient: s
  9685.     }), r[s].element.on('load', o(s))))
  9686.   },
  9687.   a = function (t, i, s) {
  9688.     var o,
  9689.     u = {
  9690.     },
  9691.     a = r[s].config.displayMode === 'popup' ? 'opener' : 'parent';
  9692.     u.sender = d(s) ? a : s,
  9693.     u.recipient = d(s) ? s : a,
  9694.     u.event = t,
  9695.     u.params = i;
  9696.     var f = r[s].element.get(0);
  9697.     f && f.contentWindow ? o = r[s].element.get(0).contentWindow : f && f.toString() === '[object Window]' ? o = r[s].element.get(0)  : r[s].config.displayMode === 'popup' ? o = r[s].container : o = window[a],
  9698.     e.postMessage(JSON.stringify(u), n[s].postMessageUrl, o)
  9699.   },
  9700.   f = function (e) {
  9701.     e.keyCode === 27 && p(e.data.iframeId) && u('close', null, e.data.iframeId)
  9702.   },
  9703.   l = function (r, i) {
  9704.     c(r.iframe);
  9705.     if (!r.postMessageUrl) {
  9706.       t.error('Must specify postMessageUrl to send and receive postMessages');
  9707.       return
  9708.     }
  9709.     n[r.iframe.iframeId].initializedKeystrokeHandler || (n[r.iframe.iframeId].initializedKeystrokeHandler = !0, e(window).on('keyup', r.iframe, f)),
  9710.     n[r.iframe.iframeId].postMessageUrl = r.postMessageUrl,
  9711.     n[r.iframe.iframeId].initializedListener || (n[r.iframe.iframeId].initializedListener = !0, n[r.iframe.iframeId].receive = r.receive, e.receiveMessage(v));
  9712.     if (r.iframe.iframeId) {
  9713.       n[r.iframe.iframeId].iframeConfig = r;
  9714.       var s = i || {
  9715.       };
  9716.       s.height = e('html').outerHeight(),
  9717.       s.width = r.iframeParams && r.iframeParams.width ? r.iframeParams.width : e('html').outerWidth(),
  9718.       u('loaded', s, r.iframe.iframeId)
  9719.     }
  9720.   },
  9721.   c = function (e) {
  9722.     n[e.iframeId] = {
  9723.       iframeConfig: null,
  9724.       receive: null,
  9725.       postMessageUrl: null,
  9726.       initializedListener: !1,
  9727.       initializedKeystrokeHandler: !1
  9728.     },
  9729.     r[e.iframeId] = e
  9730.   },
  9731.   h = function (e) {
  9732.     delete r[e],
  9733.     delete n[e]
  9734.   },
  9735.   p = function (e) {
  9736.     return n[e] && n[e].iframeConfig ? !0 : !1
  9737.   },
  9738.   d = function (e) {
  9739.     return n[e] && n[e].iframeConfig ? !1 : !0
  9740.   },
  9741.   v = function (i) {
  9742.     var s,
  9743.     o = !1,
  9744.     u;
  9745.     try {
  9746.       s = JSON.parse(i.data)
  9747.     } catch (a) {
  9748.       try {
  9749.         s = e.deparam(i.data),
  9750.         s && (o = !0)
  9751.       } catch (a) {
  9752.         t.debug('Error parsing postMessage: ' + i.data);
  9753.         return
  9754.       }
  9755.     }
  9756.     m(s);
  9757.     if (o) {
  9758.       var f;
  9759.       for (var l in r) {
  9760.         u = r[l];
  9761.         if (!u.config.isCurtain) continue;
  9762.         f = !0,
  9763.         u.config.parent && n[u.config.parent].receive && n[u.config.parent].receive(s),
  9764.         n[l].receive && n[l].receive(s)
  9765.       }
  9766.       f || t.debug('Error parsing postMessage: ' + i.data);
  9767.       return
  9768.     }
  9769.     if (!(!d(s.sender) || !!s.sender && s.sender in r)) {
  9770.       t.debug('Received message from unmanaged iframe: ' + s.sender);
  9771.       return
  9772.     }
  9773.     t.debug((p(s.sender) ? 'iframe(' + s.recipient : 'the parent') + ') received event \'' + s.event + '\' from iframe(' + s.sender + ')', s),
  9774.     n[s.sender].receive && n[s.sender].receive(s);
  9775.     if (r[s.sender]) {
  9776.       u = r[s.sender];
  9777.       if (u.config.parent && n[u.config.parent].receive) {
  9778.         var c = !0;
  9779.         s.sender = u.config.parent,
  9780.         n[u.config.parent].receive(s, c)
  9781.       }
  9782.     }
  9783.   };
  9784.   return {
  9785.     name: 'postmessage',
  9786.     init: function (e, t) {
  9787.       l(e, t)
  9788.     },
  9789.     send: function (e, t, n) {
  9790.       u(e, t, n)
  9791.     },
  9792.     removeIframe: function (e) {
  9793.       h(e)
  9794.     },
  9795.     broadcast: function (e, t, n) {
  9796.       for (iframeId in r) {
  9797.         if (iframeId === n) continue;
  9798.         u(e, t, iframeId)
  9799.       }
  9800.     },
  9801.     subscribe: function (e, t) {
  9802.       s[e] = s[e] || [
  9803.       ],
  9804.       s[e].push(t)
  9805.     },
  9806.     unsubscribe: function (e, t) {
  9807.       if (!(s[e] instanceof Array)) return;
  9808.       s[e] = s[e].filter(function (e) {
  9809.         return e !== t
  9810.       })
  9811.     }
  9812.   }
  9813. }), tp.define('postmessage', function () {
  9814. }), tp.define('user', [
  9815.   'api',
  9816.   'util',
  9817.   'jq',
  9818.   'janrain',
  9819.   'tinypassAccounts',
  9820.   'condeUserProvider',
  9821.   'gigya',
  9822.   'pianoId'
  9823. ], function (e, t, n, r, i, s, o, u) {
  9824.   var a = function () {
  9825.     function i(e) {
  9826.       t.setAccessTokenListCookie({
  9827.         value: e.token_list,
  9828.         cookie_domain: e.cookie_domain
  9829.       }, e.user_token)
  9830.     }
  9831.     var e = function () {
  9832.       return 'publisher_user_ref'
  9833.     },
  9834.     n = function () {
  9835.       if (!tp.userRef) return null;
  9836.       if (tp.userRef.constructor === ''.constructor) return tp.userRef;
  9837.       if (tp.userRef.constructor === {
  9838.       }.constructor) return '{jox}' + JSON.stringify(tp.userRef)
  9839.     },
  9840.     r = function () {
  9841.       return typeof tp.userRef != 'undefined' && tp.userRef && tp.userRef.length > 0 ? !0 : !1
  9842.     };
  9843.     return {
  9844.       getName: function () {
  9845.         return e()
  9846.       },
  9847.       getToken: function () {
  9848.         return n()
  9849.       },
  9850.       isUserValid: function () {
  9851.         return r()
  9852.       },
  9853.       onLoginSuccess: i,
  9854.       logout: function (e) {
  9855.       }
  9856.     }
  9857.   }(),
  9858.   f = function () {
  9859.     return tp.aid === 'B6sIXKLiin' ? u : r.isConfigured() ? r : i.isConfigured() ? i : s.isConfigured() ? s : o.isConfigured() ? o : u.isConfigured() ? u : a
  9860.   },
  9861.   l = function (n, r) {
  9862.     if (typeof r == 'undefined' || !r) r = function () {
  9863.     };
  9864.     var i = !1;
  9865.     if (typeof n != 'undefined' && n) i = !0;
  9866.      else {
  9867.       var s = t.__protected__.getCookie('__tae');
  9868.       if (typeof s == 'undefined' || !s) i = !0;
  9869.        else {
  9870.         var o = new Date(parseInt(s)),
  9871.         u = new Date;
  9872.         u.getTime() - o.getTime() > 86400000 && (i = !0)
  9873.       }
  9874.     }
  9875.     if (!i) {
  9876.       r(null);
  9877.       return
  9878.     }
  9879.     t.waitCall('refreshUserToken', function () {
  9880.       t.waitCall('offerCreate', function () {
  9881.         t.waitCall('experienceExecute', function () {
  9882.           if (!f().isUserValid()) {
  9883.             r('');
  9884.             return
  9885.           }
  9886.           t.startCall('refreshAccessTokenList'),
  9887.           e.callApi('/access/token/list', null, function (e) {
  9888.             t.doneCall('refreshAccessTokenList');
  9889.             if (typeof e.access_token_list == 'undefined') {
  9890.               r(null);
  9891.               return
  9892.             }
  9893.             t.setAccessTokenListCookie(e.access_token_list),
  9894.             r(e.access_token_list.value)
  9895.           })
  9896.         })
  9897.       })
  9898.     })
  9899.   },
  9900.   c = function (e) {
  9901.     var t = f().getName();
  9902.     if (t === 'tinypass_accounts') i.login(e);
  9903.      else if (t === 'piano_id') {
  9904.       var n = e || {
  9905.       };
  9906.       n.displayMode = 'modal',
  9907.       u.show(n)
  9908.     }
  9909.   },
  9910.   h = function () {
  9911.     return f().isUserValid()
  9912.   },
  9913.   p = function (e, t) {
  9914.     f().logout(e, t)
  9915.   },
  9916.   d = function (e) {
  9917.     if (typeof e == 'undefined' || !e) e = function () {
  9918.     };
  9919.     var t = f();
  9920.     typeof t.prepare == 'function' ? t.prepare().then(e, e)  : e()
  9921.   };
  9922.   return {
  9923.     name: 'user',
  9924.     getProvider: function () {
  9925.       return f()
  9926.     },
  9927.     providerInit: function (e) {
  9928.       d(e)
  9929.     },
  9930.     refreshAccessToken: function (e, t) {
  9931.       l(e, t)
  9932.     },
  9933.     showLogin: function (e) {
  9934.       c(e)
  9935.     },
  9936.     isUserValid: function () {
  9937.       return h()
  9938.     },
  9939.     logout: function (e, t) {
  9940.       p(e, t)
  9941.     }
  9942.   }
  9943. }), tp.define('user', function () {
  9944. }), tp.define('meter', [
  9945.   'jq',
  9946.   'util',
  9947.   'api',
  9948.   'offer',
  9949.   'eventUtils',
  9950.   'main'
  9951. ], function (e, t, n, r, i, s) {
  9952.   var o = function () {
  9953.     return tp.offerBaseUrl ? tp.offerBaseUrl : tp.endpoint ? tp.endpoint + '/../../' : tp.endpoint == 'sandbox' ? 'https://sandbox.tinypass.com/' : 'https://offers.tinypass.com/'
  9954.   },
  9955.   u = i.createEventManager(['onCheckoutSuccess',
  9956.   'onMeterExpired',
  9957.   'onMeterError',
  9958.   'onAccessGranted',
  9959.   'onMeterActive',
  9960.   'onMeterInactive',
  9961.   'meterSelector']),
  9962.   a = {
  9963.     state: 'ok',
  9964.     views_left: null,
  9965.     offer_id: '',
  9966.     curtain_template_id: '',
  9967.     reminder_template_id: '',
  9968.     cookie_name: '',
  9969.     cookie_value: '',
  9970.     cookie_expires: '',
  9971.     show_reminder: !1,
  9972.     show_close_button: !1
  9973.   },
  9974.   f = function () {
  9975.     return a.state && a.state == 'ex'
  9976.   },
  9977.   l = function () {
  9978.     return typeof a.views_left != 'undefined' && a.views_left == 0 ? !0 : !1
  9979.   },
  9980.   c = function (e) {
  9981.     e && h('onCheckoutSuccess', e)
  9982.   },
  9983.   h = function (e, n) {
  9984.     return u.fire(undefined, e, !0, n),
  9985.     S[e] && typeof S[e] == 'function' ? (t.debug('_customCaller called with ' + e), S[e](n))  : !0
  9986.   },
  9987.   p = function (t) {
  9988.     t = t || {
  9989.     },
  9990.     t.offerId || (t.offerId = a.offer_id),
  9991.     t.templateId || (t.templateId = a.curtain_template_id),
  9992.     t.displayMode || (t.displayMode = S.displayMode),
  9993.     t.containerSelector || (t.containerSelector = S.containerSelector),
  9994.     t.showCloseButton || (t.showCloseButton = a.show_close_button),
  9995.     e.type(S.close) == 'function' && (t.close = S.close),
  9996.     e.type(S.loginRequired) == 'function' && (t.loginRequired = S.loginRequired),
  9997.     e.type(S.customEvent) == 'function' && (t.customEvent = S.customEvent),
  9998.     e.type(S.onCheckoutSuccess) == 'function' && (t.complete = S.onCheckoutSuccess),
  9999.     r.createOfferIframe(t)
  10000.   },
  10001.   d = function (e) {
  10002.     t.debug('_handleExpired', e),
  10003.     h('onMeterExpired', e);
  10004.     if (e.track_page_view) {
  10005.       var n = h('onShowOffer', e);
  10006.       n && p()
  10007.     }
  10008.   },
  10009.   v = function (e) {
  10010.     t.debug('_handleMeterActive', e);
  10011.     if (e.show_reminder && e.reminder_template_id && e.track_page_view) {
  10012.       var n = h('onShowOffer', e);
  10013.       n && p({
  10014.         templateId: e.reminder_template_id
  10015.       })
  10016.     }
  10017.     h('onMeterActive', e)
  10018.   },
  10019.   m = function (e) {
  10020.     t.debug('_handleMeterInactive', e),
  10021.     h('onMeterInactive', e)
  10022.   },
  10023.   g = function (e) {
  10024.     t.debug('_handleAccessGranted', e),
  10025.     h('onAccessGranted', e)
  10026.   },
  10027.   y = function (e) {
  10028.     h('onMeterError', e)
  10029.   },
  10030.   b = function (e) {
  10031.     h('___onProcessMeter', e);
  10032.     if (!e.user_meter) {
  10033.       t.log('Could not load meter', e),
  10034.       y(e);
  10035.       return
  10036.     }
  10037.     a = e.user_meter;
  10038.     if (a && a.cookie_name && a.cookie_value && a.cookie_expires) {
  10039.       var n = {
  10040.         path: '/',
  10041.         expires: a.cookie_expires
  10042.       };
  10043.       a.cookie_domain && (n.domain = a.cookie_domain),
  10044.       t.__protected__.setCookie(a.cookie_name, a.cookie_value, n)
  10045.     }
  10046.     a.state === 'ok' ? v(a)  : a.state === 'ap' ? g(a)  : a.state === 'ia' ? m(a)  : d(a)
  10047.   },
  10048.   w = function (e, r, i) {
  10049.     if (S.paywallId == null || S.paywallId == '') {
  10050.       t.debug('You must specify a paywallId in your configuration');
  10051.       return
  10052.     }
  10053.     var o = document.URL;
  10054.     e && typeof e.getAttribute == 'function' && e.getAttribute('href') ? o = e.getAttribute('href')  : e && typeof e.attr == 'function' && e.attr('href') && (o = e.attr('href'));
  10055.     var u = S.trackPageview;
  10056.     u && delete S.trackPageview;
  10057.     var a = S.meterSelector();
  10058.     a || (a = '');
  10059.     var f = {
  10060.       paywall_id: S.paywallId,
  10061.       url: encodeURI(o),
  10062.       referer: encodeURI(S.referer),
  10063.       track_page_view: u,
  10064.       meter_name: a,
  10065.       pageview_id: s.fetchPageViewId()
  10066.     };
  10067.     r && (f.transaction_id = r),
  10068.     S.referer = '';
  10069.     var l = t.__protected__.getCookie('umc');
  10070.     if (l) f.umc = l;
  10071.      else {
  10072.       var c = t.__protected__.getCookie('umc_' + S.paywallId);
  10073.       c && (f.umc = c)
  10074.     }
  10075.     n.callApi('/anon/meter/load', f, function (e) {
  10076.       b(e),
  10077.       typeof i == 'function' && i()
  10078.     })
  10079.   },
  10080.   E = function (e) {
  10081.     if (typeof e == 'undefined') {
  10082.       t.error('Must specify paywall configuration to load Tinypass paywall');
  10083.       return
  10084.     }
  10085.     if (typeof e.paywallID == 'undefined' && typeof e.paywallId == 'undefined') {
  10086.       t.error('Must specify paywallId to load Tinypass paywall');
  10087.       return
  10088.     }
  10089.     typeof e.paywallId == 'undefined' && (e.paywallId = e.paywallID);
  10090.     for (var n in e) S[n] = e[n];
  10091.     S.referer = document.referrer,
  10092.     t.debug('Initializing paywall: ' + S.paywallId),
  10093.     w()
  10094.   },
  10095.   S = {
  10096.     paywallId: null,
  10097.     trackPageview: !0,
  10098.     trackExternalReferrer: !0,
  10099.     referer: document.referrer,
  10100.     offerURL: '',
  10101.     displayMode: 'modal',
  10102.     containerSelector: '',
  10103.     onCheckoutSuccess: function () {
  10104.     },
  10105.     onMeterExpired: function () {
  10106.     },
  10107.     onMeterError: function () {
  10108.     },
  10109.     onAccessGranted: function () {
  10110.     },
  10111.     onMeterActive: function () {
  10112.     },
  10113.     onMeterInactive: function () {
  10114.     },
  10115.     meterSelector: function () {
  10116.     }
  10117.   },
  10118.   x = {
  10119.     style: '<div> </div><style type="text/css"> .tpm-counter { position: fixed; padding: 30px; line-height: 60px; z-index: 99999; cursor: pointer; font-family: Arial, Helvetica, sans-serif; color: #fff; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .pos-1 { top: 0; bottom: auto; left: auto; right: 0; } .pos-2 { top: 0; bottom: auto; left: 0; right: auto; } .pos-3 { top: auto; bottom: 0; left: 0; right: auto; } .pos-4 { top: auto; bottom: 0; left: auto; right: 0; } .tpm-counter > div { display: block; } .tpm-ticker { background: #173c6f; -webkit-border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-topleft: 4px; -moz-border-radius-bottomleft: 4px; border-top-left-radius: 4px; border-bottom-left-radius: 4px; text-align: center; float: left; position: relative; } .tpm-numeral { font-size: 36px; font-weight: 700; padding: 0 15px; } .tpm-shadow { background: #072850; opacity: 0.2; height: 30px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; width: 100%; position: absolute; top: 0; z-index: 1;    } .tpm-caption { float: left; background: url(\'//code.tinypass.com/images2/counter-middle.png\') #3b7ad9 repeat-x; padding: 0 15px; font-size: 20px; font-weight: 400; } .tpm-edge { height: 60px; width: 10px; float: left; background: url(\'//code.tinypass.com/images2/counter-edge.png\') no-repeat; } @media only screen and (max-width : 640px) { .tpm-counter { display: none; }\t} </style>',
  10120.     init: function (e) {
  10121.       this.tmpl = e.template || '',
  10122.       this.count = e.count,
  10123.       this.caption = e.caption || '',
  10124.       this.padding = e.padding || '20px'
  10125.     },
  10126.     display: function () {
  10127.       var t = e('.tpm-counter'),
  10128.       n = e('.tpm-counter .tpm-numeral'),
  10129.       r = e('.tpm-counter .tpm-caption');
  10130.       if (n.length == 0) {
  10131.         var i = e('body');
  10132.         i.append(this.style),
  10133.         i.append(this.tmpl)
  10134.       }
  10135.       n.html(this.count),
  10136.       r.html(this.caption),
  10137.       t.css('padding', this.padding),
  10138.       t.click(function () {
  10139.         p()
  10140.       })
  10141.     }
  10142.   },
  10143.   T = function () {
  10144.     e.removeCookie('umc'),
  10145.     e.removeCookie('umc_' + S.paywallId),
  10146.     e.ajax({
  10147.       url: o() + '/tpl/m/logout',
  10148.       data: {
  10149.         paywall_id: S.paywallId
  10150.       },
  10151.       dataType: 'jsonp',
  10152.       action: 'get',
  10153.       success: function (t) {
  10154.         if (t.ctd) var n = t.ctd;
  10155.         for (var r = 0; r < n.length; ++r) e.removeCookie(n[r])
  10156.       }
  10157.     })
  10158.   };
  10159.   return {
  10160.     name: 'meter',
  10161.     init: function (e) {
  10162.       E(e)
  10163.     },
  10164.     isExpired: function () {
  10165.       return f()
  10166.     },
  10167.     isExpiredNextClick: function () {
  10168.       return l()
  10169.     },
  10170.     checkMeter: function (e) {
  10171.       S.trackPageview = !0,
  10172.       w(e)
  10173.     },
  10174.     showCurtain: function (e) {
  10175.       p(e)
  10176.     },
  10177.     last: function () {
  10178.       return a
  10179.     },
  10180.     registerCallback: function (e, t) {
  10181.       u.addEvent(e),
  10182.       u.registerCallback(e, t)
  10183.     }
  10184.   }
  10185. }), tp.define('fingerprint', [
  10186.   'jq',
  10187.   'util',
  10188.   'murmurhash3'
  10189. ], function (e, t, n) {
  10190.   var r = '',
  10191.   i = function () {
  10192.     try {
  10193.       var e,
  10194.       t;
  10195.       return t = window.navigator.userLanguage || window.navigator.language,
  10196.       e = (new Date).getTimezoneOffset(),
  10197.       e + ':' + t
  10198.     } catch (n) {
  10199.       return ''
  10200.     }
  10201.   },
  10202.   s = function () {
  10203.     if (window.ActiveXObject) return o();
  10204.     try {
  10205.       var e = '',
  10206.       t = navigator.plugins.length;
  10207.       if (t > 0) for (var n = 0; n < t; n++) e += navigator.plugins[n].name + '|';
  10208.       return e
  10209.     } catch (r) {
  10210.       return ''
  10211.     }
  10212.   },
  10213.   o = function () {
  10214.     var e = [
  10215.       'ShockwaveFlash.ShockwaveFlash.6',
  10216.       'ShockwaveFlash.ShockwaveFlash.7',
  10217.       'SWCt1.SWCt1.9',
  10218.       'SWCtl.SWCtl',
  10219.       'Adobe.SVGCtl',
  10220.       'WMPlayer.OCX',
  10221.       'AgControl.AgControl',
  10222.       'AcroPDF.PDF',
  10223.       'PDF.PdfCtrl',
  10224.       'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)',
  10225.       'RealPlayer',
  10226.       'Skype.Detection',
  10227.       '3dmlw.IEPlugin',
  10228.       'GoogleTalk.Plugin',
  10229.       'GoogleTalk.Plugin.1'
  10230.     ],
  10231.     t = '';
  10232.     return e.map(function (e) {
  10233.       try {
  10234.         new ActiveXObject(e),
  10235.         t += e + '|'
  10236.       } catch (n) {
  10237.       }
  10238.     }),
  10239.     t
  10240.   },
  10241.   u = function () {
  10242.     try {
  10243.       var t = [
  10244.         'AcadEref',
  10245.         'Adobe Garamond Pro Bold',
  10246.         'Aharoni',
  10247.         'Arial Baltic',
  10248.         'Arno Pro',
  10249.         'BatangChe',
  10250.         'Blackoak Std',
  10251.         'Castellar',
  10252.         'CityBlueprint',
  10253.         'Colonna MT',
  10254.         'Courier New Baltic',
  10255.         'Curlz MT',
  10256.         'DilleniaUPC',
  10257.         'Dotum',
  10258.         'Dutch801 Rm BT',
  10259.         'Edwardian Script ITC',
  10260.         'EucrosiaUPC',
  10261.         'Eurostile',
  10262.         'Felix Titling',
  10263.         'Footlight MT Light',
  10264.         'FrankRuehl',
  10265.         'Hobo Std',
  10266.         'KodchiangUPC',
  10267.         'Maiandra GD',
  10268.         'Mangal',
  10269.         'Matura MT Script Capitals',
  10270.         'Nirmala UI',
  10271.         'OCR-A BT',
  10272.         'Plantagenet Cherokee',
  10273.         'Pristina',
  10274.         'Raavi',
  10275.         'Rage Italic',
  10276.         'Ravie',
  10277.         'Rod',
  10278.         'Segoe UI',
  10279.         'Shonar Bangla',
  10280.         'Trajan Pro',
  10281.         'Tunga',
  10282.         'Wingdings 3',
  10283.         'Wingdings'
  10284.       ],
  10285.       n = document.createElement('span');
  10286.       n.style.setProperty('font-family', 'sans-serif', 'important'),
  10287.       n.style.position = 'fixed',
  10288.       n.style.top = '-5000',
  10289.       n.style.left = '-5000',
  10290.       n.style.zIndex = '-5000',
  10291.       n.style.fontSize = '80px',
  10292.       n.innerHTML = 'abcdefghijklmnopqrstuvwxyz',
  10293.       document.body.insertBefore(n, document.body.firstChild);
  10294.       var r = {
  10295.         width: n.offsetWidth,
  10296.         height: n.offsetHeight
  10297.       },
  10298.       i = '';
  10299.       for (var s = 0; s < t.length; s++) {
  10300.         n.style.setProperty('font-family', t[s] + ',sans-serif', 'important');
  10301.         if (n.offsetWidth != r.width || n.offsetHeight != r.height) i += t[s] + '|'
  10302.       }
  10303.       return e(n).remove(),
  10304.       i
  10305.     } catch (o) {
  10306.       return ''
  10307.     }
  10308.   },
  10309.   a = function () {
  10310.     try {
  10311.       return screen.height + 'x' + screen.width + '+' + screen.colorDepth
  10312.     } catch (e) {
  10313.       return ''
  10314.     }
  10315.   },
  10316.   f = function () {
  10317.     return navigator.userAgent;
  10318.     var e
  10319.   },
  10320.   l = function () {
  10321.     var e = '';
  10322.     try {
  10323.       e += document.getElementById ? 1 : 0,
  10324.       e += window.getComputedStyle ? 1 : 0,
  10325.       e += screen.globalStorage ? 1 : 0,
  10326.       e += window.localStorage ? 1 : 0,
  10327.       e += window.sessionStorage ? 1 : 0,
  10328.       e += document.getElementsByClassName ? 1 : 0,
  10329.       e += document.querySelector ? 1 : 0,
  10330.       e += document.all ? 1 : 0,
  10331.       e += window.attachEvent ? 1 : 0,
  10332.       e += window.createPopup ? 1 : 0,
  10333.       e += window.XMLHttpRequest ? 1 : 0,
  10334.       e += window.ActiveXObject ? 1 : 0,
  10335.       e += window.XDomainRequest ? 1 : 0,
  10336.       e += window.msPerformance ? 1 : 0,
  10337.       e += document.documentMode ? 1 : 0,
  10338.       e += navigator.cpuClass ? 1 : 0,
  10339.       e += navigator.browserLanguage ? 1 : 0,
  10340.       e += window.opera ? 1 : 0,
  10341.       e += window.chrome ? 1 : 0
  10342.     } catch (t) {
  10343.     }
  10344.     return e
  10345.   },
  10346.   c = function () {
  10347.     if (r) return r;
  10348.     var e = i();
  10349.     return e += s(),
  10350.     e += u(),
  10351.     e += a(),
  10352.     e += f(),
  10353.     e += l(),
  10354.     r = n.x64hash128(e),
  10355.     t.debug('Current browser fingerprint is: ' + r),
  10356.     r
  10357.   };
  10358.   return c(),
  10359.   {
  10360.     name: 'fingerprint',
  10361.     getFingerprint: function () {
  10362.       return c()
  10363.     }
  10364.   }
  10365. }), tp.define('murmurhash3', [
  10366. ], function () {
  10367.   function t(e, t) {
  10368.     return (e & 65535) * t + (((e >>> 16) * t & 65535) << 16)
  10369.   }
  10370.   function n(e, t) {
  10371.     return e << t | e >>> 32 - t
  10372.   }
  10373.   function r(e) {
  10374.     return e ^= e >>> 16,
  10375.     e = t(e, 2246822507),
  10376.     e ^= e >>> 13,
  10377.     e = t(e, 3266489909),
  10378.     e ^= e >>> 16,
  10379.     e
  10380.   }
  10381.   function i(e, t) {
  10382.     e = [
  10383.       e[0] >>> 16,
  10384.       e[0] & 65535,
  10385.       e[1] >>> 16,
  10386.       e[1] & 65535
  10387.     ],
  10388.     t = [
  10389.       t[0] >>> 16,
  10390.       t[0] & 65535,
  10391.       t[1] >>> 16,
  10392.       t[1] & 65535
  10393.     ];
  10394.     var n = [
  10395.       0,
  10396.       0,
  10397.       0,
  10398.       0
  10399.     ];
  10400.     return n[3] += e[3] + t[3],
  10401.     n[2] += n[3] >>> 16,
  10402.     n[3] &= 65535,
  10403.     n[2] += e[2] + t[2],
  10404.     n[1] += n[2] >>> 16,
  10405.     n[2] &= 65535,
  10406.     n[1] += e[1] + t[1],
  10407.     n[0] += n[1] >>> 16,
  10408.     n[1] &= 65535,
  10409.     n[0] += e[0] + t[0],
  10410.     n[0] &= 65535,
  10411.     [
  10412.       n[0] << 16 | n[1],
  10413.       n[2] << 16 | n[3]
  10414.     ]
  10415.   }
  10416.   function s(e, t) {
  10417.     e = [
  10418.       e[0] >>> 16,
  10419.       e[0] & 65535,
  10420.       e[1] >>> 16,
  10421.       e[1] & 65535
  10422.     ],
  10423.     t = [
  10424.       t[0] >>> 16,
  10425.       t[0] & 65535,
  10426.       t[1] >>> 16,
  10427.       t[1] & 65535
  10428.     ];
  10429.     var n = [
  10430.       0,
  10431.       0,
  10432.       0,
  10433.       0
  10434.     ];
  10435.     return n[3] += e[3] * t[3],
  10436.     n[2] += n[3] >>> 16,
  10437.     n[3] &= 65535,
  10438.     n[2] += e[2] * t[3],
  10439.     n[1] += n[2] >>> 16,
  10440.     n[2] &= 65535,
  10441.     n[2] += e[3] * t[2],
  10442.     n[1] += n[2] >>> 16,
  10443.     n[2] &= 65535,
  10444.     n[1] += e[1] * t[3],
  10445.     n[0] += n[1] >>> 16,
  10446.     n[1] &= 65535,
  10447.     n[1] += e[2] * t[2],
  10448.     n[0] += n[1] >>> 16,
  10449.     n[1] &= 65535,
  10450.     n[1] += e[3] * t[1],
  10451.     n[0] += n[1] >>> 16,
  10452.     n[1] &= 65535,
  10453.     n[0] += e[0] * t[3] + e[1] * t[2] + e[2] * t[1] + e[3] * t[0],
  10454.     n[0] &= 65535,
  10455.     [
  10456.       n[0] << 16 | n[1],
  10457.       n[2] << 16 | n[3]
  10458.     ]
  10459.   }
  10460.   function o(e, t) {
  10461.     return t %= 64,
  10462.     t === 32 ? [
  10463.       e[1],
  10464.       e[0]
  10465.     ] : t < 32 ? [
  10466.       e[0] << t | e[1] >>> 32 - t,
  10467.       e[1] << t | e[0] >>> 32 - t
  10468.     ] : (t -= 32, [
  10469.       e[1] << t | e[0] >>> 32 - t,
  10470.       e[0] << t | e[1] >>> 32 - t
  10471.     ])
  10472.   }
  10473.   function u(e, t) {
  10474.     return t %= 64,
  10475.     t === 0 ? e : t < 32 ? [
  10476.       e[0] << t | e[1] >>> 32 - t,
  10477.       e[1] << t
  10478.     ] : [
  10479.       e[1] << t - 32,
  10480.       0
  10481.     ]
  10482.   }
  10483.   function a(e, t) {
  10484.     return [e[0] ^ t[0],
  10485.     e[1] ^ t[1]]
  10486.   }
  10487.   function f(e) {
  10488.     return e = a(e, [
  10489.       0,
  10490.       e[0] >>> 1
  10491.     ]),
  10492.     e = s(e, [
  10493.       4283543511,
  10494.       3981806797
  10495.     ]),
  10496.     e = a(e, [
  10497.       0,
  10498.       e[0] >>> 1
  10499.     ]),
  10500.     e = s(e, [
  10501.       3301882366,
  10502.       444984403
  10503.     ]),
  10504.     e = a(e, [
  10505.       0,
  10506.       e[0] >>> 1
  10507.     ]),
  10508.     e
  10509.   }
  10510.   var e = {
  10511.     version: '2.1.2',
  10512.     x86: {
  10513.     },
  10514.     x64: {
  10515.     }
  10516.   },
  10517.   l = function (e, i) {
  10518.     e = e || '',
  10519.     i = i || 0;
  10520.     var s = e.length % 4,
  10521.     o = e.length - s,
  10522.     u = i,
  10523.     a = 0,
  10524.     f = 3432918353,
  10525.     l = 461845907;
  10526.     for (var c = 0; c < o; c += 4) a = e.charCodeAt(c) & 255 | (e.charCodeAt(c + 1) & 255) << 8 | (e.charCodeAt(c + 2) & 255) << 16 | (e.charCodeAt(c + 3) & 255) << 24,
  10527.     a = t(a, f),
  10528.     a = n(a, 15),
  10529.     a = t(a, l),
  10530.     u ^= a,
  10531.     u = n(u, 13),
  10532.     u = t(u, 5) + 3864292196;
  10533.     a = 0;
  10534.     switch (s) {
  10535.       case 3:
  10536.         a ^= (e.charCodeAt(c + 2) & 255) << 16;
  10537.       case 2:
  10538.         a ^= (e.charCodeAt(c + 1) & 255) << 8;
  10539.       case 1:
  10540.         a ^= e.charCodeAt(c) & 255,
  10541.         a = t(a, f),
  10542.         a = n(a, 15),
  10543.         a = t(a, l),
  10544.         u ^= a
  10545.     }
  10546.     return u ^= e.length,
  10547.     u = r(u),
  10548.     u >>> 0
  10549.   },
  10550.   c = function (e, i) {
  10551.     e = e || '',
  10552.     i = i || 0;
  10553.     var s = e.length % 16,
  10554.     o = e.length - s,
  10555.     u = i,
  10556.     a = i,
  10557.     f = i,
  10558.     l = i,
  10559.     c = 0,
  10560.     h = 0,
  10561.     p = 0,
  10562.     d = 0,
  10563.     v = 597399067,
  10564.     m = 2869860233,
  10565.     g = 951274213,
  10566.     y = 2716044179;
  10567.     for (var b = 0; b < o; b += 16) c = e.charCodeAt(b) & 255 | (e.charCodeAt(b + 1) & 255) << 8 | (e.charCodeAt(b + 2) & 255) << 16 | (e.charCodeAt(b + 3) & 255) << 24,
  10568.     h = e.charCodeAt(b + 4) & 255 | (e.charCodeAt(b + 5) & 255) << 8 | (e.charCodeAt(b + 6) & 255) << 16 | (e.charCodeAt(b + 7) & 255) << 24,
  10569.     p = e.charCodeAt(b + 8) & 255 | (e.charCodeAt(b + 9) & 255) << 8 | (e.charCodeAt(b + 10) & 255) << 16 | (e.charCodeAt(b + 11) & 255) << 24,
  10570.     d = e.charCodeAt(b + 12) & 255 | (e.charCodeAt(b + 13) & 255) << 8 | (e.charCodeAt(b + 14) & 255) << 16 | (e.charCodeAt(b + 15) & 255) << 24,
  10571.     c = t(c, v),
  10572.     c = n(c, 15),
  10573.     c = t(c, m),
  10574.     u ^= c,
  10575.     u = n(u, 19),
  10576.     u += a,
  10577.     u = t(u, 5) + 1444728091,
  10578.     h = t(h, m),
  10579.     h = n(h, 16),
  10580.     h = t(h, g),
  10581.     a ^= h,
  10582.     a = n(a, 17),
  10583.     a += f,
  10584.     a = t(a, 5) + 197830471,
  10585.     p = t(p, g),
  10586.     p = n(p, 17),
  10587.     p = t(p, y),
  10588.     f ^= p,
  10589.     f = n(f, 15),
  10590.     f += l,
  10591.     f = t(f, 5) + 2530024501,
  10592.     d = t(d, y),
  10593.     d = n(d, 18),
  10594.     d = t(d, v),
  10595.     l ^= d,
  10596.     l = n(l, 13),
  10597.     l += u,
  10598.     l = t(l, 5) + 850148119;
  10599.     c = 0,
  10600.     h = 0,
  10601.     p = 0,
  10602.     d = 0;
  10603.     switch (s) {
  10604.       case 15:
  10605.         d ^= e.charCodeAt(b + 14) << 16;
  10606.       case 14:
  10607.         d ^= e.charCodeAt(b + 13) << 8;
  10608.       case 13:
  10609.         d ^= e.charCodeAt(b + 12),
  10610.         d = t(d, y),
  10611.         d = n(d, 18),
  10612.         d = t(d, v),
  10613.         l ^= d;
  10614.       case 12:
  10615.         p ^= e.charCodeAt(b + 11) << 24;
  10616.       case 11:
  10617.         p ^= e.charCodeAt(b + 10) << 16;
  10618.       case 10:
  10619.         p ^= e.charCodeAt(b + 9) << 8;
  10620.       case 9:
  10621.         p ^= e.charCodeAt(b + 8),
  10622.         p = t(p, g),
  10623.         p = n(p, 17),
  10624.         p = t(p, y),
  10625.         f ^= p;
  10626.       case 8:
  10627.         h ^= e.charCodeAt(b + 7) << 24;
  10628.       case 7:
  10629.         h ^= e.charCodeAt(b + 6) << 16;
  10630.       case 6:
  10631.         h ^= e.charCodeAt(b + 5) << 8;
  10632.       case 5:
  10633.         h ^= e.charCodeAt(b + 4),
  10634.         h = t(h, m),
  10635.         h = n(h, 16),
  10636.         h = t(h, g),
  10637.         a ^= h;
  10638.       case 4:
  10639.         c ^= e.charCodeAt(b + 3) << 24;
  10640.       case 3:
  10641.         c ^= e.charCodeAt(b + 2) << 16;
  10642.       case 2:
  10643.         c ^= e.charCodeAt(b + 1) << 8;
  10644.       case 1:
  10645.         c ^= e.charCodeAt(b),
  10646.         c = t(c, v),
  10647.         c = n(c, 15),
  10648.         c = t(c, m),
  10649.         u ^= c
  10650.     }
  10651.     return u ^= e.length,
  10652.     a ^= e.length,
  10653.     f ^= e.length,
  10654.     l ^= e.length,
  10655.     u += a,
  10656.     u += f,
  10657.     u += l,
  10658.     a += u,
  10659.     f += u,
  10660.     l += u,
  10661.     u = r(u),
  10662.     a = r(a),
  10663.     f = r(f),
  10664.     l = r(l),
  10665.     u += a,
  10666.     u += f,
  10667.     u += l,
  10668.     a += u,
  10669.     f += u,
  10670.     l += u,
  10671.     ('00000000' + (u >>> 0).toString(16)).slice( - 8) + ('00000000' + (a >>> 0).toString(16)).slice( - 8) + ('00000000' + (f >>> 0).toString(16)).slice( - 8) + ('00000000' + (l >>> 0).toString(16)).slice( - 8)
  10672.   },
  10673.   h = function (e, t) {
  10674.     e = e || '',
  10675.     t = t || 0;
  10676.     var n = e.length % 16,
  10677.     r = e.length - n,
  10678.     l = [
  10679.       0,
  10680.       t
  10681.     ],
  10682.     c = [
  10683.       0,
  10684.       t
  10685.     ],
  10686.     h = [
  10687.       0,
  10688.       0
  10689.     ],
  10690.     p = [
  10691.       0,
  10692.       0
  10693.     ],
  10694.     d = [
  10695.       2277735313,
  10696.       289559509
  10697.     ],
  10698.     v = [
  10699.       1291169091,
  10700.       658871167
  10701.     ];
  10702.     for (var m = 0; m < r; m += 16) h = [
  10703.       e.charCodeAt(m + 4) & 255 | (e.charCodeAt(m + 5) & 255) << 8 | (e.charCodeAt(m + 6) & 255) << 16 | (e.charCodeAt(m + 7) & 255) << 24,
  10704.       e.charCodeAt(m) & 255 | (e.charCodeAt(m + 1) & 255) << 8 | (e.charCodeAt(m + 2) & 255) << 16 | (e.charCodeAt(m + 3) & 255) << 24
  10705.     ],
  10706.     p = [
  10707.       e.charCodeAt(m + 12) & 255 | (e.charCodeAt(m + 13) & 255) << 8 | (e.charCodeAt(m + 14) & 255) << 16 | (e.charCodeAt(m + 15) & 255) << 24,
  10708.       e.charCodeAt(m + 8) & 255 | (e.charCodeAt(m + 9) & 255) << 8 | (e.charCodeAt(m + 10) & 255) << 16 | (e.charCodeAt(m + 11) & 255) << 24
  10709.     ],
  10710.     h = s(h, d),
  10711.     h = o(h, 31),
  10712.     h = s(h, v),
  10713.     l = a(l, h),
  10714.     l = o(l, 27),
  10715.     l = i(l, c),
  10716.     l = i(s(l, [
  10717.       0,
  10718.       5
  10719.     ]), [
  10720.       0,
  10721.       1390208809
  10722.     ]),
  10723.     p = s(p, v),
  10724.     p = o(p, 33),
  10725.     p = s(p, d),
  10726.     c = a(c, p),
  10727.     c = o(c, 31),
  10728.     c = i(c, l),
  10729.     c = i(s(c, [
  10730.       0,
  10731.       5
  10732.     ]), [
  10733.       0,
  10734.       944331445
  10735.     ]);
  10736.     h = [
  10737.       0,
  10738.       0
  10739.     ],
  10740.     p = [
  10741.       0,
  10742.       0
  10743.     ];
  10744.     switch (n) {
  10745.       case 15:
  10746.         p = a(p, u([0,
  10747.         e.charCodeAt(m + 14)], 48));
  10748.       case 14:
  10749.         p = a(p, u([0,
  10750.         e.charCodeAt(m + 13)], 40));
  10751.       case 13:
  10752.         p = a(p, u([0,
  10753.         e.charCodeAt(m + 12)], 32));
  10754.       case 12:
  10755.         p = a(p, u([0,
  10756.         e.charCodeAt(m + 11)], 24));
  10757.       case 11:
  10758.         p = a(p, u([0,
  10759.         e.charCodeAt(m + 10)], 16));
  10760.       case 10:
  10761.         p = a(p, u([0,
  10762.         e.charCodeAt(m + 9)], 8));
  10763.       case 9:
  10764.         p = a(p, [
  10765.           0,
  10766.           e.charCodeAt(m + 8)
  10767.         ]),
  10768.         p = s(p, v),
  10769.         p = o(p, 33),
  10770.         p = s(p, d),
  10771.         c = a(c, p);
  10772.       case 8:
  10773.         h = a(h, u([0,
  10774.         e.charCodeAt(m + 7)], 56));
  10775.       case 7:
  10776.         h = a(h, u([0,
  10777.         e.charCodeAt(m + 6)], 48));
  10778.       case 6:
  10779.         h = a(h, u([0,
  10780.         e.charCodeAt(m + 5)], 40));
  10781.       case 5:
  10782.         h = a(h, u([0,
  10783.         e.charCodeAt(m + 4)], 32));
  10784.       case 4:
  10785.         h = a(h, u([0,
  10786.         e.charCodeAt(m + 3)], 24));
  10787.       case 3:
  10788.         h = a(h, u([0,
  10789.         e.charCodeAt(m + 2)], 16));
  10790.       case 2:
  10791.         h = a(h, u([0,
  10792.         e.charCodeAt(m + 1)], 8));
  10793.       case 1:
  10794.         h = a(h, [
  10795.           0,
  10796.           e.charCodeAt(m)
  10797.         ]),
  10798.         h = s(h, d),
  10799.         h = o(h, 31),
  10800.         h = s(h, v),
  10801.         l = a(l, h)
  10802.     }
  10803.     return l = a(l, [
  10804.       0,
  10805.       e.length
  10806.     ]),
  10807.     c = a(c, [
  10808.       0,
  10809.       e.length
  10810.     ]),
  10811.     l = i(l, c),
  10812.     c = i(c, l),
  10813.     l = f(l),
  10814.     c = f(c),
  10815.     l = i(l, c),
  10816.     c = i(c, l),
  10817.     ('00000000' + (l[0] >>> 0).toString(16)).slice( - 8) + ('00000000' + (l[1] >>> 0).toString(16)).slice( - 8) + ('00000000' + (c[0] >>> 0).toString(16)).slice( - 8) + ('00000000' + (c[1] >>> 0).toString(16)).slice( - 8)
  10818.   };
  10819.   return {
  10820.     name: 'murmurhash3',
  10821.     x86hash32: function (e, t) {
  10822.       return l(e, t)
  10823.     },
  10824.     x86hash128: function (e, t) {
  10825.       return c(e, t)
  10826.     },
  10827.     x64hash128: function (e, t) {
  10828.       return h(e, t)
  10829.     }
  10830.   }
  10831. }),
  10832. tp.define('murmurhash3', function () {
  10833. }),
  10834. tp.define('jwtDecode', [
  10835. ], function () {
  10836.   function t(e) {
  10837.     this.message = e
  10838.   }
  10839.   function n(n) {
  10840.     var r = String(n).replace(/=+$/, '');
  10841.     if (r.length % 4 == 1) throw new t('\'atob\' failed: The string to be decoded is not correctly encoded.');
  10842.     for (var i = 0, s, o, u = 0, a = ''; o = r.charAt(u++); ~o && (s = i % 4 ? s * 64 + o : o, i++ % 4) ? a += String.fromCharCode(255 & s >> ( - 2 * i & 6))  : 0) o = e.indexOf(o);
  10843.     return a
  10844.   }
  10845.   function i(e) {
  10846.     return decodeURIComponent(r(e).replace(/(.)/g, function (e, t) {
  10847.       var n = t.charCodeAt(0).toString(16).toUpperCase();
  10848.       return n.length < 2 && (n = '0' + n),
  10849.       '%' + n
  10850.     }))
  10851.   }
  10852.   var e = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  10853.   t.prototype = new Error,
  10854.   t.prototype.name = 'InvalidCharacterError';
  10855.   var r = window.atob && window.atob.bind(window) || n,
  10856.   s = function (e) {
  10857.     var t = e.replace(/-/g, '+').replace(/_/g, '/');
  10858.     switch (t.length % 4) {
  10859.       case 0:
  10860.         break;
  10861.       case 2:
  10862.         t += '==';
  10863.         break;
  10864.       case 3:
  10865.         t += '=';
  10866.         break;
  10867.       default:
  10868.         throw 'Illegal base64url string!'
  10869.     }
  10870.     try {
  10871.       return i(t)
  10872.   } catch (n) {
  10873.     return r(t)
  10874. }
  10875. };
  10876. return function (e, t) {
  10877. if (typeof e != 'string') throw new Error('Invalid token specified');
  10878. t = t || {
  10879. };
  10880. var n = t.header === !0 ? 0 : 1;
  10881. return JSON.parse(s(e.split('.') [n]))
  10882. }
  10883. }), tp.define('jwtDecode', function () {
  10884. }), tp.define('janrain', [
  10885. 'jq',
  10886. 'api',
  10887. 'util',
  10888. 'eventUtils'
  10889. ], function (e, t, n, r) {
  10890. function y() {
  10891. f.disableLogout || n.setAccessTokenListCookie(undefined, undefined, !0)
  10892. }
  10893. function w() {
  10894. return janrain && janrain.capture && janrain.capture.ui && janrain.capture.ui.hasActiveSession()
  10895. }
  10896. function E() {
  10897. n.log('JANRAIN:', 'Processing janrain user'),
  10898. b ? b = !1 : n.startCall('refreshUserToken'),
  10899. n.log('JANRAIN:', 'hasActiveSession:' + w());
  10900. var e = S();
  10901. if (!w()) {
  10902.   n.log('JANRAIN:', 'No token found.  Done processing user'),
  10903.   y(),
  10904.   n.doneCall('refreshUserToken');
  10905.   return
  10906. }
  10907. if (s.isUserValid()) {
  10908.   n.log('JANRAIN:', 'Using __ut.  Done processing user'),
  10909.   n.doneCall('refreshUserToken');
  10910.   return
  10911. }
  10912. var r = {
  10913.   janrain_capture_token: e,
  10914.   url: n.prepareUrlParameter(window.location.href)
  10915. };
  10916. t.callApi('/anon/janrain/verifyAccountInfo', r, function (e) {
  10917.   if (e && e.access) try {
  10918.     n.log('JANRAIN:', 'Verify success.  Done processing user'),
  10919.     n.setAccessTokenListCookie(e.access.access_token, e.access.user_token);
  10920.     var t = {
  10921.       access_token: e.access.access_token,
  10922.       user_token: e.access.user_token
  10923.     };
  10924.     e.access.user && (t.user = {
  10925.       uid: e.access.user.uid,
  10926.       email: e.access.user.email,
  10927.       firstName: e.access.user.first_name,
  10928.       lastName: e.access.user.last_name,
  10929.       valid: e.access.user.valid
  10930.     }),
  10931.     d('onCaptureSessionCreated', t),
  10932.     i.fireCallbacks('userChanged', t, null, !0)
  10933.   } finally {
  10934.     n.doneCall('refreshUserToken')
  10935.   } else n.log('JANRAIN:', 'Verify failed')
  10936. })
  10937. }
  10938. function S() {
  10939. return e.localStorage.get('janrainCaptureToken')
  10940. }
  10941. function x() {
  10942. janrain.events.onProviderLogoutComplete.addHandler(function () {
  10943.   y()
  10944. }),
  10945. janrain.events.onCaptureSessionEnded.addHandler(function (e) {
  10946.   n.log('JANRAIN: Events received for logout', e),
  10947.   y()
  10948. }),
  10949. T()
  10950. }
  10951. function T() {
  10952. if (w()) {
  10953.   n.log('JANRAIN:', 'Found early active session via function'),
  10954.   E();
  10955.   return
  10956. }
  10957. if (!w() && !s.isUserValid() && !S()) {
  10958.   n.log('JANRAIN:', 'not found __ut cookie and janrain token'),
  10959.   E();
  10960.   return
  10961. }
  10962. var e = !1;
  10963. janrain.events.onCaptureSessionFound.addHandler(function (t) {
  10964.   N() ? e && (n.log('JANRAIN: Events received for logged in user', t), E())  : E()
  10965. }),
  10966. janrain.events.onCaptureSessionNotFound.addHandler(function (t) {
  10967.   N() ? e && (n.log('JANRAIN: Events received for logged out user', t), E())  : E()
  10968. }),
  10969. janrain.events.onCaptureFederateNoLogin.addHandler(function (t) {
  10970.   e = t
  10971. }),
  10972. janrain.events.onCaptureFederateLogin.addHandler(function (e) {
  10973.   n.log('JANRAIN: Events received for SSO login', e),
  10974.   E()
  10975. })
  10976. }
  10977. function N() {
  10978. return janrain && janrain.settings && janrain.settings.capture && janrain.settings.capture.federate
  10979. }
  10980. function C(e, t) {
  10981. function i() {
  10982.   if (u) janrain.events[e].addHandler(t);
  10983.    else {
  10984.     if (r > n) throw 'Janrain is not initialized';
  10985.     r++,
  10986.     window.setTimeout(i, 100)
  10987.   }
  10988. }
  10989. if (!o) throw 'Janrain is not configured';
  10990. var n = 100,
  10991. r = 0;
  10992. i()
  10993. }
  10994. function k() {
  10995. function e(e) {
  10996.   janrain.events[e].addHandler(function () {
  10997.     n.log('JANRAIN: ', e, arguments)
  10998.   })
  10999. }
  11000. tp.debug && janrain.events.captureEvents.forEach(e)
  11001. }
  11002. var i = r.createEventManager(['userChanged']),
  11003. s = function () {
  11004. var e = function () {
  11005.   return 'janrain'
  11006. },
  11007. t = function () {
  11008.   return n.getUserTokenCookie()
  11009. },
  11010. r = function () {
  11011.   var e = t();
  11012.   return typeof e != 'undefined' && e && e.length >= 0
  11013. };
  11014. return {
  11015.   getName: e,
  11016.   getToken: t,
  11017.   isUserValid: r,
  11018.   onLoginSuccess: function (e) {
  11019.     n.setAccessTokenListCookie({
  11020.       value: e.token_list,
  11021.       cookie_domain: e.cookie_domain
  11022.     }, e.user_token)
  11023.   }
  11024. }
  11025. }(),
  11026. o = !1,
  11027. u = !1,
  11028. a = {
  11029. onCaptureSessionCreated: [
  11030. ]
  11031. },
  11032. f = {
  11033. loginRequiredScreen: 'signIn',
  11034. appName: null,
  11035. appId: null,
  11036. clientId: null,
  11037. settings: null,
  11038. disableLogout: !1,
  11039. startCapture: !1
  11040. },
  11041. l = function (e) {
  11042. if (o) return;
  11043. if (!e.appName || !e.appId || !e.clientId) throw 'Must specify appName, appId, and clientId to initialize janrain';
  11044. for (var r in f) typeof e[r] != 'undefined' && (f[r] = e[r]);
  11045. e.settings && (f.settings = e.settings),
  11046. e.loginRequiredScreen && (f.loginRequiredScreen = e.loginRequiredScreen);
  11047. if (f.settings) {
  11048.   typeof window.janrain != 'object' && (window.janrain = {
  11049.   }),
  11050.   typeof window.janrain.settings != 'object' && (window.janrain.settings = {
  11051.   }),
  11052.   janrain.settings = f.settings,
  11053.   typeof window.janrain.settings.capture != 'object' && (window.janrain.settings.capture = {
  11054.   }),
  11055.   janrain.settings.appUrl = 'https://' + f.appName + '.rpxnow.com',
  11056.   janrain.settings.capture.captureServer = 'https://' + f.appName + '.janraincapture.com',
  11057.   janrain.settings.capture.appId = f.appId,
  11058.   janrain.settings.capture.clientId = f.clientId;
  11059.   var i = f.appName.replace(/\./g, '-'),
  11060.   u = 'http://widget-cdn.rpxnow.com/load/' + i,
  11061.   a = 'https://rpxnow.com/load/' + i,
  11062.   l;
  11063.   document.location.protocol === 'https:' ? l = a : l = u,
  11064.   tp.push(['addExternalLibrary',
  11065.   l,
  11066.   function () {
  11067.     janrain.ready = !0
  11068.   }
  11069.   ])
  11070. }
  11071. n.log('JANRAIN:', 'start refresh user token'),
  11072. n.startCall('refreshUserToken', 30000),
  11073. n.waitCall('refreshUserToken', function () {
  11074.   n.log('JANRAIN:', 'end refresh user token')
  11075. }),
  11076. c(),
  11077. o = !0,
  11078. t.setUserProvider(s),
  11079. tp.zIndexes = {
  11080.   backdrop: 900,
  11081.   modal: 950,
  11082.   close: 990
  11083. };
  11084. var h = function (e) {
  11085.   n.log('JANRAIN: onLogin'),
  11086.   janrain.capture.ui.modal.close(),
  11087.   E()
  11088. };
  11089. tp.janrain.addEventHandler('onCaptureLoginSuccess', h),
  11090. tp.janrain.addEventHandler('onCaptureRegistrationSuccess', h)
  11091. },
  11092. c = function () {
  11093. function n() {
  11094.   if (window.janrain && window.janrain.ready && window.janrain.capture && window.janrain.capture.ui && window.janrain.capture.ui.hasActiveSession) k(),
  11095.   x(),
  11096.   f.startCapture && janrain.capture.ui.start(),
  11097.   u = !0;
  11098.    else {
  11099.     if (t > e) throw 'Janrain is not initialized';
  11100.     t++,
  11101.     window.setTimeout(n, 100)
  11102.   }
  11103. }
  11104. var e = 100,
  11105. t = 0;
  11106. n()
  11107. },
  11108. h = function () {
  11109. return f.loginRequiredScreen
  11110. },
  11111. p = function (e, t) {
  11112. a[e] = [
  11113. ],
  11114. a[e].push(t)
  11115. },
  11116. d = function (e) {
  11117. if (typeof a[e] == 'undefined' || a[e].length == 0) return;
  11118. for (var t = 0; t < a[e].length; ++t) a[e][t].apply(null, arguments)
  11119. },
  11120. v = function (e) {
  11121. function r() {
  11122.   if (u) try {
  11123.     janrain.capture.ui.renderScreen(h()),
  11124.     e && p('onCaptureSessionCreated', e)
  11125.   } catch (i) {
  11126.     n++,
  11127.     window.setTimeout(r, 100);
  11128.     return
  11129.   } else {
  11130.     if (n > t) throw 'Janrain is not initialized';
  11131.     n++,
  11132.     window.setTimeout(r, 100)
  11133.   }
  11134. }
  11135. if (!o) throw 'Janrain is not configured';
  11136. var t = 100,
  11137. n = 0;
  11138. r()
  11139. },
  11140. m = function (e) {
  11141. function r() {
  11142.   if (u) janrain.capture.ui.modal.close(),
  11143.   janrain.capture.ui.endCaptureSession(),
  11144.   e && e();
  11145.    else {
  11146.     if (n > t) throw 'Janrain is not initialized';
  11147.     n++,
  11148.     window.setTimeout(r, 100)
  11149.   }
  11150. }
  11151. if (!o) throw 'Janrain is not configured';
  11152. var t = 100,
  11153. n = 0;
  11154. r(),
  11155. y()
  11156. },
  11157. g = function () {
  11158. return o
  11159. },
  11160. b = !0;
  11161. return {
  11162. name: 'janrain',
  11163. init: function (e) {
  11164.   l(e)
  11165. },
  11166. isUserValid: function () {
  11167.   return s.isUserValid()
  11168. },
  11169. getToken: function () {
  11170.   return s.getToken()
  11171. },
  11172. getName: function () {
  11173.   return s.getName()
  11174. },
  11175. onLoginSuccess: function (e) {
  11176.   return s.onLoginSuccess(e)
  11177. },
  11178. login: function (e) {
  11179.   return v(e)
  11180. },
  11181. logout: function (e, t) {
  11182.   return m(t)
  11183. },
  11184. isConfigured: function () {
  11185.   return g()
  11186. },
  11187. getLoginRequiredScreen: function () {
  11188.   return h()
  11189. },
  11190. addEventHandler: C,
  11191. registerCallback: function (e, t) {
  11192.   i.addEvent(e),
  11193.   i.registerCallback(e, t)
  11194. }
  11195. }
  11196. }), tp.define('janrain', function () {
  11197. }), tp.define('gigya', [
  11198. 'jq',
  11199. 'api',
  11200. 'util',
  11201. 'eventUtils'
  11202. ], function (e, t, n, r) {
  11203. function m() {
  11204. if (!s()) throw 'Gigya is not initialized'
  11205. }
  11206. var i = !1,
  11207. s = function () {
  11208. return window.gigya && window.gigya.__initialized
  11209. },
  11210. o = r.createEventManager(['userChanged',
  11211. 'onHide']),
  11212. u = {
  11213. apiKey: null,
  11214. screenSet: 'Default-RegistrationLogin',
  11215. startScreen: null,
  11216. enabledProviders: null,
  11217. lang: null
  11218. },
  11219. a = function () {
  11220. var e = function () {
  11221.   return 'gigya'
  11222. },
  11223. t = function () {
  11224.   var e = n.getUserTokenCookie();
  11225.   if (e) {
  11226.     var t = n.findCookieByName('glt_' + u.apiKey),
  11227.     r = n.findCookieByName('__utg_' + u.apiKey);
  11228.     if (t == r) return e
  11229.   }
  11230.   return null
  11231. },
  11232. r = function () {
  11233.   var e = t();
  11234.   return typeof e != 'undefined' && e && e.length >= 0
  11235. };
  11236. return {
  11237.   getName: function () {
  11238.     return e()
  11239.   },
  11240.   getToken: function () {
  11241.     return t()
  11242.   },
  11243.   isUserValid: function () {
  11244.     return r()
  11245.   },
  11246.   onLoginSuccess: function (e) {
  11247.     n.setAccessTokenListCookie({
  11248.       value: e.token_list,
  11249.       cookie_domain: e.cookie_domain
  11250.     }, e.user_token)
  11251.   }
  11252. }
  11253. }(),
  11254. f = function (e) {
  11255. if (i) return;
  11256. for (var n in u) typeof e[n] != 'undefined' && (u[n] = e[n]);
  11257. if (!u.screenSet) throw 'Gigya is not configured: screenSet parameter required';
  11258. if (!u.apiKey) throw 'Gigya is not configured: apiKey parameter required';
  11259. p(),
  11260. i = !0,
  11261. t.setUserProvider(a),
  11262. c()
  11263. },
  11264. l = [
  11265. ],
  11266. c = function (r, s) {
  11267. function c(r) {
  11268.   if (r.errorCode == 0) {
  11269.     var i = {
  11270.       uid: r.UID,
  11271.       signature: r.UIDSignature,
  11272.       signature_timestamp: r.signatureTimestamp,
  11273.       url: n.prepareUrlParameter(window.location.href)
  11274.     };
  11275.     n.startCall('refreshUserToken'),
  11276.     t.callApi('/anon/gigya/verifyAccountInfo', i, function (t) {
  11277.       if (t && t.result) {
  11278.         n.setAccessTokenListCookie(t.result.access_token, t.result.user_token);
  11279.         var r = {
  11280.           path: '/',
  11281.           expires: 730
  11282.         };
  11283.         if (t.result.access_token) {
  11284.           var i = t.result.access_token.cookie_domain;
  11285.           i && i != 'localhost' && e.inArray(i, n.getPossibleCookieDomains()) >= 0 && (r.domain = i)
  11286.         }
  11287.         var s = n.findCookieByName('glt_' + u.apiKey);
  11288.         n.__protected__.setCookie('__utg_' + u.apiKey, s, r);
  11289.         for (var a = 0; a < l.length; a++) {
  11290.           var f = l[a];
  11291.           f && f(t.result)
  11292.         }
  11293.         t.result.user && (t.result.user = {
  11294.           uid: t.result.user.uid,
  11295.           email: t.result.user.email,
  11296.           firstName: t.result.user.first_name,
  11297.           lastName: t.result.user.last_name,
  11298.           valid: t.result.user.valid
  11299.         }),
  11300.         o.fireCallbacks('userChanged', t.result, null, !0)
  11301.       } else n.log('Can\'t verify gigya user: may be the configuration of gigya user provider is invalid'),
  11302.       n.setAccessTokenListCookie();
  11303.       l = [
  11304.       ],
  11305.       n.doneCall('refreshUserToken')
  11306.     })
  11307.   } else n.setAccessTokenListCookie(),
  11308.   l = [
  11309.   ]
  11310. }
  11311. if (!i) throw 'Gigya is not configured';
  11312. m();
  11313. var a = n.findCookieByName('glt_' + u.apiKey),
  11314. f = n.findCookieByName('__utg_' + u.apiKey);
  11315. if (a != f || r) l.push(s),
  11316. l.length == 1 && gigya.accounts.getAccountInfo({
  11317.   callback: c
  11318. })
  11319. },
  11320. h = function (e) {
  11321. if (!i) throw 'Gigya is not configured';
  11322. m(),
  11323. e && gigya.accounts.addEventHandlers({
  11324.   onLogin: function () {
  11325.     c(!0, e)
  11326.   }
  11327. });
  11328. var t = {
  11329.   screenSet: u.screenSet,
  11330.   onHide: function () {
  11331.     o.fireCallbacks('onHide', null, null, !0)
  11332.   }
  11333. },
  11334. n = [
  11335.   'startScreen',
  11336.   'enabledProviders',
  11337.   'lang'
  11338. ];
  11339. for (var r = 0; r < n.length; r++) {
  11340.   var s = n[r];
  11341.   u[s] && (t[s] = u[s])
  11342. }
  11343. gigya.accounts.showScreenSet(t)
  11344. },
  11345. p = function () {
  11346. m(),
  11347. gigya.accounts.addEventHandlers({
  11348.   onLogin: function () {
  11349.     c()
  11350.   },
  11351.   onLogout: function () {
  11352.     n.setAccessTokenListCookie({
  11353.       value: null
  11354.     }, null, !0),
  11355.     o.fireCallbacks('logout', null, null, !0)
  11356.   }
  11357. })
  11358. },
  11359. d = function (e) {
  11360. if (!i) throw 'Gigya is not configured';
  11361. m(),
  11362. gigya.accounts.logout({
  11363.   callback: function () {
  11364.     e && e()
  11365.   }
  11366. }),
  11367. n.setAccessTokenListCookie({
  11368.   value: null
  11369. }, null, !0)
  11370. },
  11371. v = function () {
  11372. return tp.useGigyaUserProvider === !0 || tp.useGigyaUserProvider === 'true'
  11373. };
  11374. return {
  11375. name: 'gigya',
  11376. init: function (e) {
  11377.   f(e)
  11378. },
  11379. isUserValid: function () {
  11380.   return a.isUserValid()
  11381. },
  11382. getToken: function () {
  11383.   return a.getToken()
  11384. },
  11385. getName: function () {
  11386.   return a.getName()
  11387. },
  11388. onLoginSuccess: function (e) {
  11389.   return a.onLoginSuccess(e)
  11390. },
  11391. login: function (e) {
  11392.   return h(e)
  11393. },
  11394. logout: function (e) {
  11395.   return d(e)
  11396. },
  11397. isConfigured: function () {
  11398.   return v()
  11399. },
  11400. registerCallback: function (e, t) {
  11401.   o.addEvent(e),
  11402.   o.registerCallback(e, t)
  11403. }
  11404. }
  11405. }), tp.define('gigya', function () {
  11406. }), tp.define('tinypassAccounts', [
  11407. 'jq',
  11408. 'api',
  11409. 'util',
  11410. 'tinypassLogin'
  11411. ], function (e, t, n, r) {
  11412. var i = function () {
  11413. function i(e) {
  11414.   n.setAccessTokenListCookie({
  11415.     value: e.token_list,
  11416.     cookie_domain: e.cookie_domain
  11417.   }, e.user_token)
  11418. }
  11419. var e = function () {
  11420.   return 'tinypass_accounts'
  11421. },
  11422. t = function () {
  11423.   return n.getUserTokenCookie() || null
  11424. },
  11425. r = function () {
  11426.   return !!n.getUserTokenCookie()
  11427. };
  11428. return {
  11429.   getName: function () {
  11430.     return e()
  11431.   },
  11432.   getToken: function () {
  11433.     return t()
  11434.   },
  11435.   isUserValid: function () {
  11436.     return r()
  11437.   },
  11438.   onLoginSuccess: i
  11439. }
  11440. }(),
  11441. s = function () {
  11442. return tp.useTinypassAccounts === !0 || tp.useTinypassAccounts === 'true'
  11443. },
  11444. o = function (e) {
  11445. return e = e || {
  11446. },
  11447. e.userToken = i.getToken(),
  11448. r.show(e)
  11449. },
  11450. u = function (t) {
  11451. var r = {
  11452.   aid: tp.aid,
  11453.   url: document.location.href
  11454. },
  11455. i = tp.getEndpointRoot(!0) + '/checkout/user/logout?' + e.param(r, !0);
  11456. n.setAccessTokenListCookie({
  11457.   value: null
  11458. }, null, !0),
  11459. e.ajax({
  11460.   url: i,
  11461.   dataType: 'jsonp'
  11462. }).done(function (e) {
  11463.   n.setAccessTokenListCookie({
  11464.     value: '',
  11465.     cookie_domain: e.models.cookie_domain
  11466.   }, e.models.user_token, !0),
  11467.   t && t(e)
  11468. }).fail(function (e) {
  11469.   var r = {
  11470.     code: 503,
  11471.     message: 'Error: Received error when requesting API response from URL: ' + i
  11472.   };
  11473.   n.setAccessTokenListCookie(null, null, !0),
  11474.   t && t(e)
  11475. })
  11476. };
  11477. return {
  11478. name: 'tinypassAccounts',
  11479. isUserValid: function () {
  11480.   return i.isUserValid()
  11481. },
  11482. getToken: function (e) {
  11483.   return i.getToken(e)
  11484. },
  11485. getName: function () {
  11486.   return i.getName()
  11487. },
  11488. onLoginSuccess: function (e) {
  11489.   return i.onLoginSuccess(e)
  11490. },
  11491. isConfigured: function () {
  11492.   return s()
  11493. },
  11494. login: function (e) {
  11495.   return o(e)
  11496. },
  11497. logout: function (e) {
  11498.   return u(e)
  11499. }
  11500. }
  11501. }), tp.define('tinypassAccounts', function () {
  11502. }), tp.define('tinypassLogin', [
  11503. 'jq',
  11504. 'util',
  11505. 'postmessage',
  11506. 'require-css/css!styles/offer',
  11507. 'containerUtils',
  11508. 'eventUtils'
  11509. ], function (e, t, n, r, i, s) {
  11510. function d(e) {
  11511. n.broadcast('reloadOffer', e)
  11512. }
  11513. function m(t, n) {
  11514. var r = [
  11515.   'aid',
  11516.   'gaClientId',
  11517.   'tags',
  11518.   'contentSection',
  11519.   'contentAuthor'
  11520. ];
  11521. e.each(r, function (e, r) {
  11522.   n[r] && (t[r] = n[r])
  11523. });
  11524. var i = n.contentCreated;
  11525. return i && (t.contentCreated = i),
  11526. t
  11527. }
  11528. function g(t) {
  11529. var n = {
  11530. },
  11531. r = [
  11532.   'displayMode',
  11533.   'aid',
  11534.   'width',
  11535.   'height',
  11536.   'state'
  11537. ];
  11538. return e.each(r, function (e, r) {
  11539.   t[r] && (n[r] = t[r])
  11540. }),
  11541. n
  11542. }
  11543. var o = null,
  11544. u = !1,
  11545. a = s.createEventManager(['resize',
  11546. 'loginSuccess']),
  11547. f = function () {
  11548. return tp.getEndpointRoot(!0) + '/checkout/user/loginShow'
  11549. },
  11550. l = function () {
  11551. return tp.getEndpointRoot(!0) + '/checkout/user/check'
  11552. },
  11553. c = function (e) {
  11554. t.debug('Login event received', e.event, e.params, e);
  11555. var n = i.getIframe(e.sender),
  11556. r = !n.config.parent;
  11557. switch (e.event) {
  11558.   case 'loaded':
  11559.     o = !1,
  11560.     u = !0;
  11561.     break;
  11562.   case 'close':
  11563.     i.closeModalContainer(),
  11564.     a.fireCallbacks(e.event, e.params, e.sender, r);
  11565.     break;
  11566.   case 'cancel':
  11567.   case 'error':
  11568.   case 'customEvent':
  11569.     a.fireCallbacks(e.event, e.params, e.sender, r);
  11570.     break;
  11571.   case 'loginSuccess':
  11572.     p(e.event, e.params, e.sender, r);
  11573.     break;
  11574.   case 'logoutSuccess':
  11575.     h(e.event, e.params, e.sender, r);
  11576.     break;
  11577.   default:
  11578.     t.debug('Received invalid event type: ' + e.event);
  11579.     return
  11580. }
  11581. },
  11582. h = function (e, n, r) {
  11583. t.setAccessTokenListCookie({
  11584.   value: n.token_list,
  11585.   cookie_domain: n.cookie_domain
  11586. }, n.user_token, !0)
  11587. },
  11588. p = function (e, n, r, s) {
  11589. var o = i.getIframe(r);
  11590. t.setAccessTokenListCookie({
  11591.   value: n.token_list,
  11592.   cookie_domain: n.cookie_domain
  11593. }, n.user_token),
  11594. o.config.userToken = n.user_token,
  11595. o && o.config && o.config.loginSuccess && o.config.loginSuccess(n.event, n.params, n.sender),
  11596. a.fireCallbacks(e, n, r, s),
  11597. o && o.config && o.config.closeAfterSuccess && i.closeModalContainer(r);
  11598. var u = {
  11599.   reloadAfterLogin: !0,
  11600.   userToken: n.user_token,
  11601.   user: n.user
  11602. };
  11603. d(u)
  11604. },
  11605. v = function (e, n, r, s) {
  11606. var o = i.getIframe(s.iframeId),
  11607. u = !o.config.parent;
  11608. t.setAccessTokenListCookie({
  11609.   value: e,
  11610.   cookie_domain: n
  11611. }, r),
  11612. o.config.userToken = r,
  11613. o && o.config && o.config.loginSuccess && o.config.loginSuccess('loginSuccess', {
  11614. }, {
  11615. }),
  11616. a.fireCallbacks('loginSuccess', {
  11617. }, {
  11618. }, u)
  11619. },
  11620. y = null,
  11621. b = function (n) {
  11622. y && i.closeModalContainer(y);
  11623. var r = {
  11624.   closeAfterSuccess: !0
  11625. },
  11626. s = {
  11627. };
  11628. e.extend(s, r, n),
  11629. s.displayMode = 'popup',
  11630. s.width = 360,
  11631. s.height = 660,
  11632. s.state = s.state ? s.state : 'login';
  11633. var o = g(s);
  11634. o.iframeId = t.randomString(16),
  11635. o.url = window.location.href,
  11636. o.host_url = window.location.href,
  11637. y = o.iframeId,
  11638. m(o, tp),
  11639. o.user_provider = 'tinypass_accounts',
  11640. n.userToken && (o.user_token = n.userToken),
  11641. t.getCampaigns(o);
  11642. var h;
  11643. return s.iframeId ? (o.iframeId = s.iframeId, h = i.redirectContainer(s.iframeId, {
  11644.   url: f(),
  11645.   config: s,
  11646.   postMessageUrl: f(),
  11647.   receive: c,
  11648.   iframeParams: o
  11649. }))  : h = i.createContainer({
  11650.   url: f(),
  11651.   config: s,
  11652.   postMessageUrl: f(),
  11653.   receive: c,
  11654.   iframeParams: o,
  11655.   onCloseCallback: function () {
  11656.     u || (t.debug('Registering onCloseCallback instead of postMessage'), e.ajax({
  11657.       url: l(),
  11658.       data: {
  11659.         aid: o.aid,
  11660.         url: document.location.href,
  11661.         fromUserIdentity: !1
  11662.       },
  11663.       dataType: 'jsonp',
  11664.       action: 'get',
  11665.       success: function (e) {
  11666.         t.debug('CheckAction completed', e.models.user),
  11667.         v(e.models.token_list, e.models.cookie_domain, e.models.user_token, o, s)
  11668.       }
  11669.     }))
  11670.   }
  11671. }),
  11672. a.registerCallback(s, o.iframeId),
  11673. h
  11674. },
  11675. w = function (e) {
  11676. if (o) return !1;
  11677. o = !0,
  11678. setTimeout(function () {
  11679.   o = !1
  11680. }, 10000),
  11681. b(e) || t.error('Could not initialize login; check configuration')
  11682. },
  11683. E = function (e) {
  11684. a.registerCallback(e, e.iframeId);
  11685. var t = {
  11686.   iframeId: e.iframeId,
  11687.   config: e,
  11688.   iframeParams: e
  11689. };
  11690. n.init({
  11691.   postMessageUrl: f(),
  11692.   receive: c,
  11693.   iframe: t,
  11694.   iframeParams: {
  11695.   }
  11696. })
  11697. };
  11698. return {
  11699. name: 'tinypassLogin',
  11700. show: function (e) {
  11701.   w(e)
  11702. },
  11703. close: function () {
  11704.   i.closeModalContainer()
  11705. },
  11706. showBackdrop: function () {
  11707.   i.showBackdrop()
  11708. },
  11709. hideBackdrop: function () {
  11710.   i.hideBackdrop()
  11711. },
  11712. centerBackdrop: function (e) {
  11713.   i.centerBackdrop(e)
  11714. },
  11715. registerCallback: function (e, t) {
  11716.   a.registerCallback(e, t)
  11717. },
  11718. listenLogin: function (e) {
  11719.   E(e)
  11720. }
  11721. }
  11722. }), tp.define('tinypassLogin', function () {
  11723. }), tp.define('containerUtils', [
  11724. 'util',
  11725. 'jq',
  11726. 'postmessage',
  11727. 'eventUtils',
  11728. 'murmurhash3'
  11729. ], function (e, t, n, r, i) {
  11730. function h(e, t) {
  11731. function n(e) {
  11732.   return /\{\s*\[native code\]\s*\}/.test('' + e)
  11733. }
  11734. try {
  11735.   if (n(window.scrollTo)) {
  11736.     window.scrollTo(e, t);
  11737.     return
  11738.   }
  11739.   if (n(window.scroll)) {
  11740.     window.scroll(e, t);
  11741.     return
  11742.   }
  11743.   document.body && (document.body.scrollTop = 0)
  11744. } catch (r) {
  11745.   console.warn('Can not perform scroll: ' + r.message)
  11746. }
  11747. }
  11748. function T(e) {
  11749. var t = M.shift();
  11750. N && !t && N.removeClass('tp-active'),
  11751. e.container.removeClass('tp-active'),
  11752. t ? (O.hide(), O = t, O.show())  : H()
  11753. }
  11754. function j(e) {
  11755. N && N.css({
  11756.   height: '100%'
  11757. }),
  11758. e.find('.tp-close').removeClass('tp-square')
  11759. }
  11760. function R(n, r) {
  11761. var i = t(n);
  11762. i.length ? r(i)  : t.isReady ? e.log('Invalid containerSelector')  : setTimeout(function () {
  11763.   R(n, r)
  11764. }, 50)
  11765. }
  11766. function U(e, t) {
  11767. typeof e.showCloseButton == 'undefined' && (e.showCloseButton = !0);
  11768. if (e.container) return e.container;
  11769. var n = new b;
  11770. return e.isPreload || (O = n.element),
  11771. n.getContainer(e.showCloseButton, t)
  11772. }
  11773. function z(n) {
  11774. var r = {
  11775.   container: null,
  11776.   containerReady: !1
  11777. };
  11778. if (!n.iframeParams.containerSelector) return e.log('Inline offer must have a valid containerSelector'),
  11779. r;
  11780. r.container = t(n.singleContainer),
  11781. r.container.empty();
  11782. if (!r.container.length) {
  11783.   if (t.isReady) return e.log('Invalid containerSelector'),
  11784.   r
  11785. } else r.containerReady = !0,
  11786. n.iframeParams.width = r.container.width();
  11787. return r
  11788. }
  11789. function W(t) {
  11790. var n = t.width ? t.width : window.innerWidth,
  11791. r = t.height ? t.height : window.innerHeight,
  11792. i = e.centerScreen(n, r);
  11793. return {
  11794.   width: n,
  11795.   height: r,
  11796.   top: i.top,
  11797.   left: i.left
  11798. }
  11799. }
  11800. function X(t, n) {
  11801. var r = W(t),
  11802. i = window.open(n, e.randomString(16), 'scrollbars=yes,location=yes,status=0,toolbar=0,resizable=1, width=' + r.width + ', height=' + r.height + ', top=' + r.top + ', left=' + r.left);
  11803. return window.focus && i.focus(),
  11804. i
  11805. }
  11806. function $(n, r, i) {
  11807. var s = 'iframe-' + V++ + '-' + e.randomString();
  11808. r.iframeId && (s = r.iframeId);
  11809. var o = t(document.createElement('iframe')).attr({
  11810.   id: s,
  11811.   name: s,
  11812.   title: s,
  11813.   scrolling: 'no',
  11814.   allowtransparency: 'true',
  11815.   src: i
  11816. }).css({
  11817.   overflow: 'hidden',
  11818.   backgroundColor: 'transparent',
  11819.   border: '0',
  11820.   width: n.displayMode == 'inline' ? r.width + 'px' : '0px',
  11821.   height: '0px'
  11822. });
  11823. try {
  11824.   o.attr('frameBorder', '0'),
  11825.   o.get(0).setAttribute('frameBorder', '0'),
  11826.   o.get(0).frameBorder = '0'
  11827. } catch (u) {
  11828.   e.log(u)
  11829. }
  11830. return o
  11831. }
  11832. function J() {
  11833. return t('<div>').css({
  11834.   overflow: 'hidden',
  11835.   backgroundColor: 'transparent',
  11836.   border: '0',
  11837.   width: '0px',
  11838.   height: '0px',
  11839.   position: 'absolute',
  11840.   display: 'block',
  11841.   top: '-1px',
  11842.   left: '-1px'
  11843. })
  11844. }
  11845. function K(t) {
  11846. if (t.config.displayMode === 'modal') {
  11847.   if (g()) {
  11848.     e.log('Modal is already shown; must be one modal per time');
  11849.     return
  11850.   }
  11851.   E(t.container)
  11852. } else t.config.displayMode === 'inline' ? w(t)  : e.log('Unexpected displayMode of preloaded iframe\n');
  11853. return t.config.isPreload = !1,
  11854. t.iframeParams.isPreload = !1,
  11855. e.debug('show preloaded iframe: ', t.config),
  11856. t
  11857. }
  11858. function Q(r) {
  11859. var a,
  11860. l = !0,
  11861. c = r.iframeParams;
  11862. c.displayMode !== 'inline' && !c.width && (c.width = t(window).width());
  11863. var h = function (e) {
  11864.   var n = t.param(e, !0);
  11865.   return n + '&_qh=' + i.x86hash32(n)
  11866. };
  11867. if (c.displayMode === 'inline') {
  11868.   r.config.showCloseButton !== undefined && delete r.config.showCloseButton;
  11869.   var p = z(r);
  11870.   a = p.container,
  11871.   l = p.containerReady
  11872. } else if (c.displayMode === 'modal') a = U(r.config, function () {
  11873.   x(c.iframeId, r.parent)
  11874. });
  11875.  else if (c.displayMode === 'popup') {
  11876.   c.width || (c.width = t(window).width());
  11877.   var d = r.url + '?' + h(c);
  11878.   a = X(c, d)
  11879. }
  11880. var v = r.url + '?' + h(c),
  11881. m = null;
  11882. if (c.displayMode === 'popup') {
  11883.   try {
  11884.     m = t(a.document)
  11885.   } catch (g) {
  11886.     try {
  11887.       m = t(a)
  11888.     } catch (y) {
  11889.       m = null,
  11890.       console.warn('Unable to get popup element')
  11891.     }
  11892.   }
  11893.   o[c.iframeId] = {
  11894.   },
  11895.   o[c.iframeId].container = a,
  11896.   o[c.iframeId].interval = setInterval(function () {
  11897.     o[c.iframeId].container.closed && (clearInterval(o[c.iframeId].interval), o[c.iframeId].container.close(), r.onCloseCallback && r.onCloseCallback())
  11898.   }, 100)
  11899. } else m = $(r.config, c, v);
  11900. u.registerCallback(r, c.iframeId);
  11901. var b = s[c.iframeId] = {
  11902.   iframeId: c.iframeId,
  11903.   config: r.config,
  11904.   element: m,
  11905.   container: a,
  11906.   iframeParams: c,
  11907.   containerReady: l
  11908. };
  11909. n.init({
  11910.   postMessageUrl: r.postMessageUrl,
  11911.   parent: r.parent,
  11912.   receive: r.receive,
  11913.   iframe: b,
  11914.   iframeParams: c
  11915. }),
  11916. t(window).on('keyup', S);
  11917. if (c.displayMode === 'modal') t(window).resize(function () {
  11918.   j(a)
  11919. }),
  11920. a.append(m);
  11921.  else if (c.displayMode === 'inline') if (s[c.iframeId].containerReady) {
  11922.   var w = t(document.createElement('div')).addClass(f).append(m);
  11923.   r.config.isPreload && w.hide(),
  11924.   (document.readyState === 'complete' || document.readyState !== 'loading' && !document.documentElement.doScroll) && a && a.length > 0 ? (a.empty(), a.append(w))  : Y(a, w)
  11925. } else {
  11926.   var E = t(document.createElement('div')).attr('id', 'temp-inline-' + c.iframeId).hide();
  11927.   R('body', function (e) {
  11928.     e.append(E)
  11929.   }),
  11930.   E.append(m)
  11931. }
  11932. return e.debug('creating iframe: ', r),
  11933. b
  11934. }
  11935. function G(e, r) {
  11936. var i = r.url + '?' + t.param(r.iframeParams, !0),
  11937. o = s[e];
  11938. if (o.config.displayMode == 'popup') o.container.location = i;
  11939.  else {
  11940.   var u = o.element.get(0),
  11941.   a = u.contentWindow || u;
  11942.   a.location = i
  11943. }
  11944. o.config = r.config,
  11945. n.init({
  11946.   postMessageUrl: r.postMessageUrl,
  11947.   receive: r.receive,
  11948.   iframe: s[r.iframeParams.iframeId],
  11949.   iframeParams: r.iframeParams
  11950. })
  11951. }
  11952. function Y(e, n) {
  11953. var r = setInterval(function () {
  11954.   e.empty()
  11955. }, 150);
  11956. t(document).ready(function () {
  11957.   clearInterval(r),
  11958.   e.append(n)
  11959. })
  11960. }
  11961. function Z() {
  11962. for (var e in s) {
  11963.   var t = s[e];
  11964.   t.config.displayMode === 'inline' && t.container && F(t, {
  11965.     width: t.container.width()
  11966.   });
  11967.   if (t.config.displayMode === 'modal' && t.container) {
  11968.     var r = Math.max(document.documentElement.clientWidth, document.body.offsetWidth, document.documentElement.offsetWidth);
  11969.     n.send('RESIZE_MODAL_CHECKOUT', {
  11970.       iframe: t,
  11971.       width: r
  11972.     }, t.iframeId)
  11973.   }
  11974. }
  11975. }
  11976. function et(e, t) {
  11977. if (!e) return;
  11978. t.width !== undefined && (e.css({
  11979.   width: t.width + 'px'
  11980. }), e.toggleClass('no-width', t.width == 0)),
  11981. t.height !== undefined && (t.animate ? e.animate({
  11982.   height: t.height + 'px'
  11983. }, 200)  : e.css({
  11984.   height: t.height + 'px'
  11985. }), e.toggleClass('no-height', t.height == 0))
  11986. }
  11987. function tt(e) {
  11988. var t = [
  11989. ];
  11990. for (var n in s) {
  11991.   var r = s[n];
  11992.   if (e && n != e) continue;
  11993.   if (r.config.displayMode == 'inline') continue;
  11994.   r.config.displayMode == 'modal' && (T(r), r.container.hide(), t.push(n))
  11995. }
  11996. return t
  11997. }
  11998. function nt(e) {
  11999. if (!e || !e.length) return;
  12000. for (var t in s) {
  12001.   var n = s[t];
  12002.   for (var r = 0; r < e.length; r++) t == e[r] && (P(), n.container.addClass('tp-active'), n.container.show())
  12003. }
  12004. }
  12005. var s = {
  12006. },
  12007. o = [
  12008. ],
  12009. u = r.createEventManager(['close']),
  12010. a = 'fakeOfferId',
  12011. f = 'tp-container-inner',
  12012. l = 'EVENT_VIEW_ACTIVATED',
  12013. c = {
  12014. isIphoneCaretFixed: !1,
  12015. _initialScrollPosition: {
  12016.   x: null,
  12017.   y: null
  12018. },
  12019. isModalDisplayed: function () {
  12020.   return O && !!O.find('.tp-iframe-wrapper.tp-active') [0]
  12021. },
  12022. isModalOutsideViewport: function () {
  12023.   var e = O.find('.tp-iframe-wrapper.tp-active') [0],
  12024.   t = e.getBoundingClientRect(),
  12025.   n = 30,
  12026.   r = t.bottom - n < 0,
  12027.   i = t.top - n > window.innerHeight;
  12028.   return r || i
  12029. },
  12030. scrollModalToViewport: function () {
  12031.   h(0, 0)
  12032. },
  12033. applyFix: function () {
  12034.   this.saveInitialScroll(window.scrollX, window.scrollY),
  12035.   O && O.css({
  12036.     position: 'absolute',
  12037.     top: '0',
  12038.     width: '100%',
  12039.     'overflow-x': 'unset',
  12040.     'overflow-y': 'unset'
  12041.   }),
  12042.   setTimeout(this.scrollModalToViewport.bind(this), k),
  12043.   document.addEventListener('scroll', this.scrollListenerThrottled),
  12044.   this.isIphoneCaretFixed = !0
  12045. },
  12046. removeFix: function () {
  12047.   document.removeEventListener('scroll', this.scrollListenerThrottled),
  12048.   this._scrollBack()
  12049. },
  12050. _scrollBack: function () {
  12051.   h(this._initialScrollPosition.x, this._initialScrollPosition.y)
  12052. },
  12053. saveInitialScroll: function (e, t) {
  12054.   this._initialScrollPosition.x = e,
  12055.   this._initialScrollPosition.y = t
  12056. },
  12057. modalOpened: function () {
  12058.   this.applyFix()
  12059. },
  12060. modalClosed: function () {
  12061.   if (!this.isIphoneCaretFixed) return;
  12062.   this.removeFix()
  12063. }
  12064. };
  12065. c.setInViewportIfNeeded = function () {
  12066. this.isModalDisplayed() && this.isModalOutsideViewport() && this.scrollModalToViewport()
  12067. },
  12068. c.scrollListenerThrottled = e.throttle(c.setInViewportIfNeeded, 50).bind(c),
  12069. c.onIframeResize = e.throttle(c.setInViewportIfNeeded, 100).bind(c),
  12070. c.onCheckoutStateChanged = function () {
  12071. h(0, 0)
  12072. },
  12073. t(window).resize(function () {
  12074. Z()
  12075. }),
  12076. n.subscribe('close', function (e) {
  12077. c.modalClosed()
  12078. }),
  12079. n.subscribe(l, function (t) {
  12080. e.isIphone() && t.displayMode && 'modal' === t.displayMode && c.onCheckoutStateChanged()
  12081. });
  12082. var p = function (t) {
  12083. e.debug('Removing iframe', t),
  12084. t.element && t.element.hide(),
  12085. v(t),
  12086. t.config.displayMode === 'modal' && (t.waitFinishProcesses = !0)
  12087. },
  12088. d = function (r) {
  12089. e.debug('Purging iframe', r);
  12090. var i = s[r];
  12091. try {
  12092.   n.removeIframe(i.iframeId),
  12093.   i.element.remove(),
  12094.   i.config.displayMode === 'inline' && t(i.container).find('.tp-container-inner').remove()
  12095. } catch (o) {
  12096. }
  12097. delete s[r]
  12098. },
  12099. v = function (e) {
  12100. n.send('checkProccessesForClose', {
  12101. }, e.iframeId)
  12102. },
  12103. m = function (e) {
  12104. e.config.displayMode === 'popup' && e.container.close(),
  12105. p(e)
  12106. },
  12107. g = function () {
  12108. for (var e in s) {
  12109.   var t = s[e];
  12110.   if (t.config.displayMode === 'modal' && !t.waitFinishProcesses && !t.config.isPreload) return !0
  12111. }
  12112. return !1
  12113. },
  12114. y = function (e) {
  12115. return s[e]
  12116. },
  12117. b = function () {
  12118. var e,
  12119. n,
  12120. r,
  12121. i,
  12122. s = function () {
  12123.   return e ? e : (e = t(document.createElement('div')).addClass('tp-modal'), n = t(document.createElement('div')).html('x').addClass('tp-close'), r = t(document.createElement('div')).addClass('tp-iframe-wrapper'), r.append(n), e.css('z-index', tp.zIndexes.modal), n.css('z-index', tp.zIndexes.close), n.on('click', function () {
  12124.     typeof i == 'function' && i()
  12125.   }), e.append(r), R('body', function (t) {
  12126.     t.append(e)
  12127.   }), e)
  12128. };
  12129. s(),
  12130. this.element = e,
  12131. this.getContainer = function (e, t) {
  12132.   return s(),
  12133.   i = t,
  12134.   typeof e == 'undefined' && (e = !0),
  12135.   e ? this.showCloseButton()  : this.hideCloseButton(),
  12136.   r
  12137. },
  12138. this.show = function (t) {
  12139.   s(),
  12140.   typeof t == 'undefined' && (t = !0),
  12141.   t ? this.showCloseButton()  : this.hideCloseButton(),
  12142.   e.addClass('tp-active')
  12143. },
  12144. this.hide = function () {
  12145.   s(),
  12146.   e.removeClass('tp-active')
  12147. },
  12148. this.showCloseButton = function () {
  12149.   s(),
  12150.   n.addClass('tp-active')
  12151. },
  12152. this.hideCloseButton = function () {
  12153.   s(),
  12154.   n.removeClass('tp-active')
  12155. }
  12156. },
  12157. w = function (e) {
  12158. t('.' + f, e.container).show(),
  12159. F(e, {
  12160.   width: e.container.width()
  12161. })
  12162. },
  12163. E = function (e) {
  12164. e = e.closest('.tp-modal'),
  12165. O = e,
  12166. I(e, !0, !0)
  12167. },
  12168. S = function (n) {
  12169. n.keyCode == 27 && t.map(s, e.mapArrayIndex).length > 0
  12170. },
  12171. x = function (t, n, r) {
  12172. e.debug('Search container to close', t, n, r);
  12173. for (var i in s) {
  12174.   var o = s[i];
  12175.   if (t && i != t) continue;
  12176.   if (r && o.config.displayMode == 'inline') continue;
  12177.   if (r && o.config.isPreload) continue;
  12178.   m(o),
  12179.   o.config.displayMode == 'modal' && T(o)
  12180. }
  12181. u.fireCallbacks('close', null, t, !0)
  12182. },
  12183. N,
  12184. C,
  12185. k = 250,
  12186. L = function () {
  12187. if (N) return N;
  12188. var e = t(document.createElement('div'));
  12189. return e.addClass('tp-backdrop'),
  12190. e.css('z-index', tp.zIndexes.backdrop),
  12191. R('body', function (t) {
  12192.   t.append(e)
  12193. }),
  12194. N = e,
  12195. e
  12196. },
  12197. A,
  12198. O,
  12199. M = [
  12200. ],
  12201. _ = function () {
  12202. if (O.is(':visible')) return;
  12203. R('body', function (t) {
  12204.   e.isMobileTabletIOs() && tp.experimentalIosModal && (t.addClass('tp-modal-experiment'), setTimeout(function () {
  12205.     t.scrollTop(0)
  12206.   }, 100)),
  12207.   t.removeClass('tp-modal-close'),
  12208.   t.addClass('tp-modal-open')
  12209. }),
  12210. A && clearTimeout(A),
  12211. A = setTimeout(function () {
  12212.   O.show()
  12213. }, 100),
  12214. e.isIphone() && c.modalOpened()
  12215. },
  12216. D = function () {
  12217. if (!O) return;
  12218. R('body', function (e) {
  12219.   e.addClass('tp-modal-close'),
  12220.   e.removeClass('tp-modal-open'),
  12221.   e.hasClass('body-fixed') && e.removeClass('body-fixed'),
  12222.   e.hasClass('tp-modal-experiment') && e.removeClass('tp-modal-experiment')
  12223. }),
  12224. O.hide()
  12225. },
  12226. P = function (e, n) {
  12227. L();
  12228. if (N.is(':visible')) {
  12229.   if (e && !n) {
  12230.     var r = t('.tp-modal:visible').hide();
  12231.     r && M.unshift(r),
  12232.     O.show()
  12233.   } else if (e) {
  12234.     var r = t('.tp-modal:visible');
  12235.     r ? (M.push(O), O = r)  : O.show()
  12236.   }
  12237.   return
  12238. }
  12239. _(),
  12240. N.show(),
  12241. C = window.setTimeout(function () {
  12242.   N.addClass('tp-active')
  12243. }, k)
  12244. },
  12245. H = function () {
  12246. N && (D(), N.removeClass('tp-active'), N.hide(), clearTimeout(C)),
  12247. c.modalClosed()
  12248. },
  12249. B = function (e) {
  12250. if (!N) return;
  12251. e.outerHeight() > t(window).height() ? N.css({
  12252.   height: t(document).height()
  12253. })  : N.css({
  12254.   height: '100%'
  12255. })
  12256. },
  12257. F = function (n, r) {
  12258. if (!n) return;
  12259. et(n.element, r);
  12260. var i = t.extend({
  12261. }, r, {
  12262.   animate: !1
  12263. });
  12264. switch (n.config.displayMode) {
  12265.   case 'modal':
  12266.     et(n.container, i),
  12267.     R('body', function (e) {
  12268.       e.addClass('tp-modal-resizing'),
  12269.       setTimeout(function () {
  12270.         e.removeClass('tp-modal-resizing')
  12271.       }, 50)
  12272.     }),
  12273.     e.isIphone() && c.onIframeResize();
  12274.     break;
  12275.   case 'inline':
  12276.     var s = t('.' + f, n.container);
  12277.     et(s, r);
  12278.     break;
  12279.   default:
  12280.     n.container.focus()
  12281. }
  12282. },
  12283. I = function (e, t, n) {
  12284. P(t, n),
  12285. n || (e.hasClass('tp-active') || e.addClass('tp-active'), j(e))
  12286. },
  12287. q = function (e) {
  12288. if (e) {
  12289.   var n = t(e).find('.tp-close');
  12290.   n && n.hasClass('tp-active') && n.removeClass('tp-active')
  12291. }
  12292. },
  12293. V = 1;
  12294. return {
  12295. name: 'containerUtils',
  12296. fakeOfferId: a,
  12297. createContainer: function (e) {
  12298.   return Q(e)
  12299. },
  12300. showPreloadedContainer: function (e) {
  12301.   return K(e)
  12302. },
  12303. redirectContainer: function (e, t) {
  12304.   return G(e, t)
  12305. },
  12306. hasModalIframe: function () {
  12307.   return g()
  12308. },
  12309. getIframe: function (e) {
  12310.   return y(e)
  12311. },
  12312. generateIframe: function (e, t, n) {
  12313.   return $(e, t, n)
  12314. },
  12315. generateIframeWrapper: function () {
  12316.   return J()
  12317. },
  12318. getPopupPosition: function (e) {
  12319.   return W(e)
  12320. },
  12321. generatePopup: function (e, t) {
  12322.   return X(e, t)
  12323. },
  12324. initInlineContainer: function (e) {
  12325.   return z(e)
  12326. },
  12327. getModalContainer: function (e, t) {
  12328.   return U(e, t)
  12329. },
  12330. centerBackdrop: function (e) {
  12331.   return B(e)
  12332. },
  12333. checkBackdropAndContainer: function (e, t, n) {
  12334.   I(e, t, n)
  12335. },
  12336. resizeIframe: function (e, t) {
  12337.   F(e, t)
  12338. },
  12339. centerIt: function (e) {
  12340.   j(e)
  12341. },
  12342. operationWithContainer: function (e, t) {
  12343.   R(e, t)
  12344. },
  12345. closeContainer: function (e, t) {
  12346.   x(e, t)
  12347. },
  12348. closeModalContainer: function (e, t) {
  12349.   x(e, t, !0)
  12350. },
  12351. purgeIframe: function (e, t) {
  12352.   d(e, t)
  12353. },
  12354. hideModalContainer: tt,
  12355. closeModal: T,
  12356. hideCloseButton: q,
  12357. activateContainers: nt
  12358. }
  12359. }), tp.define('containerUtils', function () {
  12360. }), tp.define('eventUtils', [
  12361. 'jq',
  12362. 'util',
  12363. 'postmessage'
  12364. ], function (e, t, n) {
  12365. var r = function (e) {
  12366. var r = {
  12367. },
  12368. i;
  12369. for (i = 0; i < e.length; i++) r[e[i]] = [
  12370. ];
  12371. var s = {
  12372.   addEvent: function (e) {
  12373.     r[e] === undefined && (r[e] = [
  12374.     ])
  12375.   },
  12376.   hasIframeCallback: function (e, t) {
  12377.     var n,
  12378.     i,
  12379.     s;
  12380.     if (r[e] && r[e].length > 0) for (s = 0, n = null, i = null; s < r[e].length; ++s) {
  12381.       i = r[e][s];
  12382.       if (typeof i == 'object' && t == i.iframeId) return !0
  12383.     }
  12384.     return !1
  12385.   },
  12386.   hasCallback: function (e) {
  12387.     return r[e] && r[e].length > 0
  12388.   },
  12389.   registerCallback: function (e, n) {
  12390.     var i = typeof e == 'string' ? e : null,
  12391.     s = typeof e == 'object' ? e : null,
  12392.     o,
  12393.     u,
  12394.     a;
  12395.     if (i) {
  12396.       o = typeof n == 'function' ? n : null;
  12397.       if (r[i] === undefined) return;
  12398.       r[i].push(o)
  12399.     }
  12400.     if (s) {
  12401.       u = typeof n == 'string' ? n : null;
  12402.       for (a in r) typeof s[a] == 'function' && (t.debug('Registering ' + a + ' callback for iframe ' + u), r[a].push({
  12403.         iframeId: u,
  12404.         callback: s[a]
  12405.       }))
  12406.     }
  12407.   },
  12408.   fireCallbacks: function (e, t, n, r) {
  12409.     s.fire(n, e, r, t)
  12410.   },
  12411.   fire: function (e, i, s, o) {
  12412.     function p() {
  12413.       if (s) try {
  12414.         return c.length > 1 ? a.apply(null, c)  : a(o, e)
  12415.       } catch (n) {
  12416.         t.debug(n)
  12417.       }
  12418.     }
  12419.     var u,
  12420.     a,
  12421.     f,
  12422.     l = !1,
  12423.     c = [
  12424.     ].slice.call(arguments);
  12425.     c.splice(0, 3);
  12426.     var h = o && o.resultCallbackId;
  12427.     if (typeof r[i] == 'undefined') return;
  12428.     for (f = 0, u = null, a = null; f < r[i].length; ++f) {
  12429.       a = r[i][f];
  12430.       if (typeof a == 'function') t.debug('firing callback for event \'' + i + '\'' + ' from iframe(' + e + ')'),
  12431.       u = p(),
  12432.       l = !0;
  12433.        else if (typeof a == 'object') {
  12434.         if (e != a.iframeId) continue;
  12435.         t.debug('firing callback for event \'' + i + '\'' + ' from iframe(' + e + ')'),
  12436.         a = a.callback,
  12437.         u = p(),
  12438.         l = !0
  12439.       }
  12440.       h && (o.result = u, o.event = i, n.send('resultCallback', o, e))
  12441.     }
  12442.     !l && h && (o.callbackNotFound = !0, o.event = i, n.send('resultCallback', o, e))
  12443.   },
  12444.   fireCallbacksAndStopOnFirstFalse: function (e) {
  12445.     if (typeof r[e] == 'undefined') return !0;
  12446.     var n = !0;
  12447.     for (var i = 0; i < r[e].length; i++) {
  12448.       var s = r[e][i];
  12449.       if (typeof s == 'function') {
  12450.         t.debug('firing callback for event \'' + e + '\'');
  12451.         try {
  12452.           var o = [
  12453.           ].slice.call(arguments).slice(1);
  12454.           if (s.apply(null, o) === !1) {
  12455.             t.debug('callback for event \'' + e + '\' returned false'),
  12456.             n = !1;
  12457.             break
  12458.           }
  12459.         } catch (u) {
  12460.           t.debug('firing callback for event \'' + e + '\' failed', u)
  12461.         }
  12462.       }
  12463.     }
  12464.     return n
  12465.   }
  12466. };
  12467. return s
  12468. };
  12469. return {
  12470. name: 'eventUtils',
  12471. createEventManager: function (e) {
  12472.   return r(e)
  12473. }
  12474. }
  12475. }), tp.define('eventUtils', function () {
  12476. }), tp.define('experience', [
  12477. 'jq',
  12478. 'util',
  12479. 'postmessage',
  12480. 'api',
  12481. 'eventUtils',
  12482. 'scrollDepth',
  12483. 'viewportExit',
  12484. 'idle',
  12485. 'interaction',
  12486. 'log',
  12487. 'pianoEsp',
  12488. 'swg',
  12489. 'fbsubscriptions'
  12490. ], function ($, util, postmessage, api, eventUtils, scrollDepth, viewportExit, idle, interaction, log, pianoEsp, swg, fbsubscriptions) {
  12491. function buildHandlers(e) {
  12492. function n(e, t) {
  12493.   return function (n, r, i) {
  12494.     if (e.isAction) {
  12495.       var s = checkPreActionHandlers(n);
  12496.       if (!s) return;
  12497.       var o = getEventConditionsCount(n),
  12498.       u = getConditionInPreloadCard(n);
  12499.       (o || u) && me.__private__.addModuleToExecuted(n.eventModuleParams.moduleId, n)
  12500.     }
  12501.     e.fn(n, r, i),
  12502.     e.shouldFireCallback && _buildCallbackEventHandler(t) (n)
  12503.   }
  12504. }
  12505. var t = {
  12506. };
  12507. return $.each(e, function (e, r) {
  12508.   if (typeof r.fn != 'function') throw new Error('Unsupported config for ' + e + ' handler');
  12509.   t[e] = n(r, e)
  12510. }),
  12511. t
  12512. }
  12513. function _init() {
  12514. if (_initialized) return;
  12515. _initialized = !0;
  12516. var e = !0;
  12517. if (tp.customPreChecks && tp.customPreChecks.length) {
  12518.   var t = null;
  12519.   for (var n = tp.customPreChecks.length; n--; ) try {
  12520.     t = tp.customPreChecks[n](),
  12521.     t !== 1 && t !== !0 && (e = !1)
  12522.   } catch (r) {
  12523.   }
  12524. }
  12525. e && _execute('auto')
  12526. }
  12527. function getExecutedNodes() {
  12528. return me.__private__.executedNodes
  12529. }
  12530. function addEventToExecutedNodes(e) {
  12531. me.__private__.executedNodes.push(e)
  12532. }
  12533. function clearExecutedNodes() {
  12534. me.__private__.executedNodes = [
  12535. ]
  12536. }
  12537. function getTrackingEndpoint() {
  12538. return tp.main.__protected__.getTrackingEndpoint()
  12539. }
  12540. function getComposerUrl() {
  12541. var e;
  12542. return util.__protected__.cameFromFbSubscriptions() ? (e = '/xbuilder/experience/executeFbia', initializeFbSubscriptions())  : e = '/xbuilder/experience/execute',
  12543. tp.getExperienceEndpoint(!1) + e
  12544. }
  12545. function initializePianoEsp(e) {
  12546. pianoEsp.__protected__.init({
  12547.   visitor: e.bid
  12548. })
  12549. }
  12550. function injectSwgMarkup(e) {
  12551. swg.__protected__.injectMarkup(e)
  12552. }
  12553. function addSwgLibrary() {
  12554. swg.__protected__.addLibrary()
  12555. }
  12556. function initializeFbSubscriptions() {
  12557. fbsubscriptions.__protected__.init()
  12558. }
  12559. function sendStatisticsExecutedNodes() {
  12560. var e = me.__private__.getExecutedNodes();
  12561. e.length && (log.__private__.logBeaconRequest(me.__private__.getTrackingEndpoint() + '/composer/logExecutionStats', {
  12562.   aid: tp.aid,
  12563.   items: JSON.stringify(e),
  12564.   execution_stats_context: me.__private__.lastExecutionStatsContext
  12565. }), me.__private__.clearExecutedNodes()),
  12566. window.clearTimeout(sendStatisticsTimerId),
  12567. sendStatisticsTimerId = window.setTimeout(me.__protected__.sendStatisticsExecutedNodes, statisticsRequestInterval)
  12568. }
  12569. function _execute(e, t, n) {
  12570. t = t || {
  12571. };
  12572. var r = $.extend(!0, {
  12573.   protocol_version: 1
  12574. }, t);
  12575. _applyCookieParameters(r),
  12576. util.hasQueryParamByName(me.__private__.READER_ID) && (r[me.__private__.READER_ID] = util.getQueryParamByName(me.__private__.READER_ID)),
  12577. util.waitCall('refreshUserToken', function () {
  12578.   if (!n) {
  12579.     tp.main.__protected__.trackPageUnloadIfNecessary(),
  12580.     _applyTpConfigurationParameters(r),
  12581.     api.getCallParams(r);
  12582.     var t = {
  12583.       url: window.location.href,
  12584.       tags: tp.tags,
  12585.       submitType: e
  12586.     };
  12587.     tp.main.buildPageTrackParams(r, t)
  12588.   }
  12589.   util.debug('exp: Experience initialized with params:', r),
  12590.   util.waitCall('refreshAccessTokenList', function () {
  12591.     util.startCall('experienceExecute');
  12592.     var e = getComposerUrl(),
  12593.     t = navigator.appVersion.indexOf('MSIE 9') !== - 1,
  12594.     i;
  12595.     if (t) i = {
  12596.       dataType: 'jsonp',
  12597.       url: e + '?' + $.param(r, !0)
  12598.     };
  12599.      else {
  12600.       var s = '?' + $.param({
  12601.         aid: r.aid
  12602.       }, !0);
  12603.       i = {
  12604.         type: 'post',
  12605.         url: e + s,
  12606.         data: r,
  12607.         xhrFields: {
  12608.           withCredentials: !0
  12609.         }
  12610.       }
  12611.     }
  12612.     i.success = function (e) {
  12613.       util.doneCall('experienceExecute');
  12614.       var t = $.extend(!0, {
  12615.       }, r);
  12616.       n || (me.__private__.resetExperienceState(), tp.main.registerTrackUnload()),
  12617.       processErrors(e.errors),
  12618.       processResult(e.models, t)
  12619.     },
  12620.     i.error = function () {
  12621.       util.doneCall('experienceExecute'),
  12622.       n || me.__private__.resetExperienceState();
  12623.       var t = {
  12624.         code: 503,
  12625.         message: 'Error: Received error when requesting API response from URL: ' + e
  12626.       };
  12627.       util.debug(t.message)
  12628.     },
  12629.     $.ajax(i)
  12630.   })
  12631. })
  12632. }
  12633. function _applyCookieParameters(e) {
  12634. var t = util.__protected__.getCookie(XB_COOKIE);
  12635. t && (e.xbc = t);
  12636. var n = util.getTbcCookie();
  12637. n && n.length > 0 && (e.tbc = n),
  12638. util.getCampaigns(e),
  12639. e.custom_cookies = JSON.stringify(util.getCustomCookies())
  12640. }
  12641. function _applyTpConfigurationParameters(e) {
  12642. var t = [
  12643.   {
  12644.     property: 'debug',
  12645.     parameter: 'debug'
  12646.   },
  12647.   {
  12648.     property: 'trackPageView',
  12649.     parameter: 'increment_pageview_meter'
  12650.   }
  12651. ];
  12652. return $.each(t, function (t, n) {
  12653.   tp[n.property] !== undefined && (e[n.parameter] = tp[n.property])
  12654. }),
  12655. e
  12656. }
  12657. function processErrors(e) {
  12658. Array.isArray(e) && (e.length && util.debug('exp: composer execution has been failed with errors'), $.each(e, function (e, t) {
  12659.   util.debug('exp: ' + t.msg)
  12660. }))
  12661. }
  12662. function addModuleToExecuted(e, t) {
  12663. me.__private__.addEventToExecutedNodes({
  12664.   mId: e,
  12665.   eId: t.eventExecutionContext.experienceId,
  12666.   eV: t.eventExecutionContext.experienceVersion,
  12667.   eeId: t.eventExecutionContext.executionId
  12668. })
  12669. }
  12670. function createLinkedNodeHandler(e, t, n, r) {
  12671. return function () {
  12672.   return {
  12673.     type: linkedNodeTypes.HANDLER,
  12674.     eventType: t.eventType,
  12675.     children: [
  12676.     ],
  12677.     run: function () {
  12678.       $.proxy(e, this, t, n, r) ()
  12679.     }
  12680.   }
  12681. }()
  12682. }
  12683. function getConditionInPreloadCard(e) {
  12684. var t = e.eventParams.delayBy || {
  12685. },
  12686. n;
  12687. return t.value && (t.type === 'time' ? n = {
  12688.   type: 'timer',
  12689.   timer: t.value
  12690. }
  12691.  : t.type === 'scroll' && (n = {
  12692.   type: 'scrollDepth',
  12693.   scrollDepth: t.value,
  12694.   measureType: 'pixels'
  12695. })),
  12696. n
  12697. }
  12698. function getEventConditionsCount(e) {
  12699. return e.eventConditions && $.isArray(e.eventConditions) ? e.eventConditions.length : 0
  12700. }
  12701. function createLinkedNodeForPreloadHandler(e, t) {
  12702. return function () {
  12703.   var n = !1,
  12704.   r;
  12705.   return {
  12706.     type: linkedNodeTypes.PRELOAD,
  12707.     eventType: t.eventType,
  12708.     children: [
  12709.     ],
  12710.     run: function () {
  12711.       n === !1 && (r = e(t), n = !0)
  12712.     },
  12713.     getPreloadResult: function () {
  12714.       return r
  12715.     }
  12716.   }
  12717. }()
  12718. }
  12719. function subscribeToEventListener(e, t) {
  12720. var n = function () {
  12721.   return eventManager.fireCallbacksAndStopOnFirstFalse('beforeBrowserEvent', e)
  12722. };
  12723. switch (e.type) {
  12724.   case 'viewportExit':
  12725.     viewportExit.addListener(t, {
  12726.       detectExitMode: e.detectExitMode,
  12727.       detectBackButtonForMobile: e.detectBackButtonForMobile,
  12728.       clientDevice: e.clientDevice
  12729.     }, n);
  12730.     break;
  12731.   case 'scrollDepth':
  12732.     scrollDepth.addListener(t, {
  12733.       scrollDepth: e.scrollDepth,
  12734.       measureType: e.measureType
  12735.     }, n);
  12736.     break;
  12737.   case 'timer':
  12738.     var r = setTimeout(function () {
  12739.       n() && t()
  12740.     }, 1000 * e.timer);
  12741.     timers.push(r);
  12742.     break;
  12743.   case 'interaction':
  12744.     interaction.bind(t, e.interactions, n);
  12745.     break;
  12746.   case 'idle':
  12747.     idle.addListener(t, e.idleTime, n)
  12748. }
  12749. }
  12750. function canUseNodeInLoop(e) {
  12751. var t = [
  12752.   'continueExecution',
  12753.   'meterActive',
  12754.   'meterExpired'
  12755. ];
  12756. return e.type === linkedNodeTypes.HANDLER && t.indexOf(e.eventType) === - 1
  12757. }
  12758. function createLinkedNodeEventCondition(e, t) {
  12759. return function () {
  12760.   var n = !1,
  12761.   r = function () {
  12762.     me.__private__.addModuleToExecuted(e.moduleId, t);
  12763.     var r = me.__private__.linkedNodes[e.moduleId].children;
  12764.     for (var i = 0; i < r.length; i++) {
  12765.       var s = r[i],
  12766.       o = me.__private__.linkedNodes[s];
  12767.       if (n === !1 || canUseNodeInLoop(o)) try {
  12768.         o.run()
  12769.       } catch (u) {
  12770.         util.error('exp: error execute chain event', o, u)
  12771.       }
  12772.     }
  12773.     n = !0,
  12774.     me.__private__.smallExpereinceMode && me.__protected__.sendStatisticsExecutedNodes()
  12775.   };
  12776.   return {
  12777.     type: linkedNodeTypes.EVENT_CONDITION,
  12778.     children: [
  12779.     ],
  12780.     run: function () {
  12781.       me.__private__.subscribeToEventListener(e, r)
  12782.     }
  12783.   }
  12784. }()
  12785. }
  12786. function createLinkedNodeForInnerEventCondition(e, t) {
  12787. return function () {
  12788.   var n = !1,
  12789.   r = function () {
  12790.     var e = me.__private__.linkedNodes[t + linkedNodeTypes.INNER_EVENT_CONDITION].children;
  12791.     for (var r = 0; r < e.length; r++) {
  12792.       var i = e[r],
  12793.       s = me.__private__.linkedNodes[i];
  12794.       if (n === !1 || canUseNodeInLoop(s)) try {
  12795.         s.run()
  12796.       } catch (o) {
  12797.         util.error('exp: error execute chain event', s, o)
  12798.       }
  12799.     }
  12800.     n = !0
  12801.   };
  12802.   return {
  12803.     type: linkedNodeTypes.INNER_EVENT_CONDITION,
  12804.     children: [
  12805.       t
  12806.     ],
  12807.     run: function () {
  12808.       me.__private__.subscribeToEventListener(e, r)
  12809.     }
  12810.   }
  12811. }()
  12812. }
  12813. function processResult(e, t) {
  12814. if (!e) return;
  12815. util.setTbcCookieFromResponse(e),
  12816. util.setAppTimezoneOffsetFromResponse(e),
  12817. util.setCurrentDomainFromResponse(e),
  12818. me.__private__.initializePianoEsp(e);
  12819. if (e.xbc && e.xbc.cookie_value) {
  12820.   var n = {
  12821.     path: '/',
  12822.     expires: 730
  12823.   };
  12824.   e.xbc.cookie_domain && e.xbc.cookie_domain != 'localhost' && (n.domain = e.xbc.cookie_domain, util.__protected__.deleteTLDCookieForSpecificDomains(XB_COOKIE, e.xbc.cookie_domain)),
  12825.   util.deleteCookie(XB_COOKIE),
  12826.   util.__protected__.setCookie(XB_COOKIE, e.xbc.cookie_value, n)
  12827. }
  12828. var r = e.result,
  12829. i = {
  12830. };
  12831. if (!r) {
  12832.   util.debug('exp: no composer execution result');
  12833.   return
  12834. }
  12835. r.swgMarkupData && (util.debug('exp: swg markup data :', r.swgMarkupData), me.__private__.injectSwgMarkup(r.swgMarkupData), me.__private__.addSwgLibrary()),
  12836. util.debug('exp: processed experiences :', r.experiences),
  12837. me.__private__.lastExecutionStatsContext = e.executionStatsContext,
  12838. $.each(r.debugMessages, function (e, t) {
  12839.   util.debug('exp: execute :', t)
  12840. });
  12841. var s = function (e, t, n) {
  12842.   var r = e.eventConditions;
  12843.   for (var i = 0; i < r.length; i++) {
  12844.     var s = r[i],
  12845.     o = s.moduleId,
  12846.     u = r[i - 1],
  12847.     a = !r[i + 1];
  12848.     me.__private__.linkedNodes[o] || (me.__private__.linkedNodes[o] = me.__private__.createLinkedNodeEventCondition(s, e));
  12849.     if (a) {
  12850.       me.__private__.linkedNodes[o].children.push(t);
  12851.       var f = eventTypesWithPreload.indexOf(e.eventType) !== - 1;
  12852.       if (f && s.type === 'viewportExit' && !getConditionInPreloadCard(e)) {
  12853.         var l = me.__private__.preloadHandlers[e.eventType];
  12854.         if (!l) {
  12855.           util.error('exp: not found preload handler for event: ', e);
  12856.           continue
  12857.         }
  12858.         var c = t + linkedNodeTypes.PRELOAD;
  12859.         me.__private__.linkedNodes[c] = createLinkedNodeForPreloadHandler(l, e),
  12860.         u ? me.__private__.linkedNodes[u.moduleId].children.push(c)  : n.push(c)
  12861.       }
  12862.     }
  12863.     u && me.__private__.linkedNodes[u.moduleId].children.indexOf(o) === - 1 && me.__private__.linkedNodes[u.moduleId].children.push(o)
  12864.   }
  12865. },
  12866. o = [
  12867. ],
  12868. u,
  12869. a = 0;
  12870. for (var f = 0; f < r.events.length; f++) {
  12871.   var l = r.events[f];
  12872.   try {
  12873.     var c = l.eventType,
  12874.     h = l.eventModuleParams || {
  12875.     };
  12876.     util.debug('exp: process event \'' + c + '\'' + ' (' + h.moduleId + ')'),
  12877.     c === 'experienceExecute' && ($.extend(!0, i, l.eventExecutionContext), i.result = {
  12878.     }, $.extend(!0, i.result, r)),
  12879.     u = h.moduleId;
  12880.     if (!u) {
  12881.       util.error('exp: not found moduleId for linked node event: ', l);
  12882.       continue
  12883.     }
  12884.     var p = me.__private__.handlers[c];
  12885.     if (!p) {
  12886.       util.error('exp: not found handler for event: ', l);
  12887.       continue
  12888.     }
  12889.     me.__private__.linkedNodes[u] = createLinkedNodeHandler(p, l, t, r);
  12890.     var d = getEventConditionsCount(l),
  12891.     v = getConditionInPreloadCard(l);
  12892.     if (d || v) {
  12893.       var m = u;
  12894.       if (v) {
  12895.         var g = createLinkedNodeForInnerEventCondition(v, u);
  12896.         m = u + linkedNodeTypes.INNER_EVENT_CONDITION,
  12897.         me.__private__.linkedNodes[m] = g
  12898.       }
  12899.       d ? o.indexOf(l.eventConditions[0].moduleId) === - 1 && o.push(l.eventConditions[0].moduleId)  : v && o.push(m),
  12900.       s(l, m, o),
  12901.       a++
  12902.     } else o.push(u)
  12903.   } catch (y) {
  12904.     util.error('exp: error on execute event: ', l, y)
  12905.   }
  12906. }
  12907. a <= 3 && (me.__private__.smallExpereinceMode = !0);
  12908. for (var b = 0; b < o.length; b++) u = o[b],
  12909. me.__private__.linkedNodes[u] && me.__private__.linkedNodes[u].run();
  12910. sendStatisticsTimerId = window.setTimeout(me.__protected__.sendStatisticsExecutedNodes, statisticsRequestInterval),
  12911. _lastExecutionResult = i
  12912. }
  12913. function _dumpElementWithChildren(e) {
  12914. var t = me.__private__.linkedNodes[e.moduleId];
  12915. e.type = t.type;
  12916. for (var n = 0; n < t.children.length; n++) e.children.push(_dumpElementWithChildren({
  12917.   moduleId: t.children[n],
  12918.   children: [
  12919.   ]
  12920. }));
  12921. return e
  12922. }
  12923. function _dumpRootEventConditions(e) {
  12924. var t = [
  12925. ];
  12926. for (var n = 0; n < e.length; n++) t.push(_dumpElementWithChildren({
  12927.   moduleId: e[n],
  12928.   children: [
  12929.   ]
  12930. }));
  12931. util.debug('exp: root event conditions ', t)
  12932. }
  12933. function _setCookieHandler(e) {
  12934. var t = e.eventParams;
  12935. if (t && typeof t.cookieName != 'undefined' && typeof t.cookieValue != 'undefined') {
  12936.   util.debug('exp: set cookie with parameters:', t);
  12937.   var n = (t.isReadableCookie ? '_pc_' : '') + t.cookieName,
  12938.   r = {
  12939.     domain: t.cookieDomain,
  12940.     path: t.cookiePath
  12941.   };
  12942.   if (!t.isSessionCookie) {
  12943.     var i = new Date;
  12944.     switch (t.expirationUnit) {
  12945.       case 'seconds':
  12946.         i.setSeconds(i.getSeconds() + t.expirationValue);
  12947.         break;
  12948.       case 'minutes':
  12949.         i.setMinutes(i.getMinutes() + t.expirationValue);
  12950.         break;
  12951.       case 'hours':
  12952.         i.setHours(i.getHours() + t.expirationValue);
  12953.         break;
  12954.       case 'days':
  12955.         i.setDate(i.getDate() + t.expirationValue);
  12956.         break;
  12957.       case 'months':
  12958.         i.setMonth(i.getMonth() + t.expirationValue);
  12959.         break;
  12960.       case 'years':
  12961.         i.setFullYear(i.getFullYear() + t.expirationValue);
  12962.         break;
  12963.       default:
  12964.         util.log('Wrong eventParams.expirationUnit : ', t.expirationUnit)
  12965.     }
  12966.     r.expires = i
  12967.   }
  12968.   util.__protected__.setCookie(n, t.cookieValue, r)
  12969. }
  12970. }
  12971. function _runJsHandler(e) {
  12972. if (e.eventParams && e.eventParams.snippet) {
  12973.   var t = e.eventParams.snippet;
  12974.   util.debug('exp: run js with snippet:', t);
  12975.   var n = e.eventExecutionContext;
  12976.   util.debug('exp: set publisher\'s context and custom:', n);
  12977.   var r = 'var context = ' + JSON.stringify(n) + ';\n' + 'var custom = ' + JSON.stringify(tp.customVariables) + ';\n' + t;
  12978.   _runScript(r)
  12979. }
  12980. }
  12981. function _nonSiteHandler(e) {
  12982. util.debug('exp: non-site action:', e)
  12983. }
  12984. function _logHandler(e) {
  12985. me.__private__.addModuleToExecuted(e.eventModuleParams.moduleId, e)
  12986. }
  12987. function _continueExecutionHandler(e, t) {
  12988. util.debug('exp: continue execution action:', e, 'with requestParameters', t);
  12989. var n = t || {
  12990. };
  12991. n.experience_id = e.eventExecutionContext.experienceId,
  12992. n.experience_version = e.eventExecutionContext.experienceVersion,
  12993. n.context_data = e.eventParams.contextData,
  12994. _execute('auto', n, !0)
  12995. }
  12996. function _runScript(snippet) {
  12997. try {
  12998.   eval.call(window, '(function () {' + snippet + '\n})();')
  12999. } catch (e) {
  13000.   util.log('Error occurred in RunJS\n', e)
  13001. }
  13002. }
  13003. function _applyCssHandler(e) {
  13004. $.each(e.eventParams.ruleList, function (e, t) {
  13005.   var n = t.classes;
  13006.   n && (n = n.replace(/[,.]/g, ' '), t.type == 'add' && $(t.elements).addClass(n), t.type == 'remove' && $(t.elements).removeClass(n)),
  13007.   util.debug('exp: css applied with rule:', t)
  13008. })
  13009. }
  13010. function _showHandler(e, t) {
  13011. var n = me.__private__.linkedNodes[e.eventModuleParams.moduleId + linkedNodeTypes.PRELOAD];
  13012. return n && n.getPreloadResult ? n.getPreloadResult().show()  : me.__private__.show(e, t)
  13013. }
  13014. function _showOfferHandler(e) {
  13015. return _showHandler(e, tp.offer.show)
  13016. }
  13017. function _showTemplateHandler(e) {
  13018. return _showHandler(e, tp.template.show)
  13019. }
  13020. function _deferredShowHandler(e, t) {
  13021. return util.debug('exp: run preloading for:', e),
  13022. me.__private__.show(e, t)
  13023. }
  13024. function _deferredShowOfferHandler(e) {
  13025. return _deferredShowHandler(e, tp.offer.deferredShow)
  13026. }
  13027. function _deferredShowTemplateHandler(e) {
  13028. return _deferredShowHandler(e, tp.template.deferredShow)
  13029. }
  13030. function resetExperienceState() {
  13031. me.__protected__.sendStatisticsExecutedNodes(),
  13032. me.__private__.removeEventListeners(),
  13033. me.__private__.linkedNodes = {
  13034. }
  13035. }
  13036. function removeEventListeners() {
  13037. $.each(timers, function (e, t) {
  13038.   clearTimeout(t)
  13039. }),
  13040. timers = [
  13041. ],
  13042. viewportExit.removeListeners(),
  13043. idle.removeListeners(),
  13044. scrollDepth.removeListeners(),
  13045. interaction.unbindAll()
  13046. }
  13047. function show(e, t) {
  13048. var n = e.eventParams,
  13049. r = e.eventExecutionContext.splitTests,
  13050. i = e.eventExecutionContext.activeMeters,
  13051. s = e.eventParams.formNameByTermId,
  13052. o = e.eventParams.hideCompletedFields;
  13053. n.trackingId = e.eventExecutionContext.trackingId,
  13054. n.experienceId = e.eventExecutionContext.experienceId,
  13055. n.experienceExecutionId = e.eventExecutionContext.executionId,
  13056. n.experienceActionId = e.eventModuleParams.moduleId,
  13057. n.experienceConditions = e.eventConditions;
  13058. if (r && r.length > 0) {
  13059.   var u = $.map(r, function (e) {
  13060.     return e.variantId
  13061.   });
  13062.   n.splitTestIds = JSON.stringify(u)
  13063. }
  13064. n.additionalParamNames = [
  13065. ],
  13066. i && i.length > 0 && (n.activeMeters = JSON.stringify(i));
  13067. if (e.eventType === 'showZuoraOffer') {
  13068.   var a = e.eventParams.ratePlanIds;
  13069.   a && a.length > 0 && (n.zuoraSelectedRatePlanIds = JSON.stringify(a), n.additionalParamNames.push('zuoraSelectedRatePlanIds'))
  13070. }
  13071. if (e.eventType === 'showNewscycleOffer') {
  13072.   var f = e.eventParams.ids;
  13073.   f && f.length > 0 && (n.newscycleSelectedIds = JSON.stringify(f), n.additionalParamNames.push('newscycleSelectedIds'))
  13074. }
  13075. return s && (n.formNameByTermId = JSON.stringify(s), n.hideCompletedFields = o),
  13076. util.debug('exp: show with params:', n),
  13077. t(n)
  13078. }
  13079. function _showFormHandler(e) {
  13080. var t = e.eventParams;
  13081. if (t && t.formName) {
  13082.   var n = {
  13083.     formName: t.formName,
  13084.     hideIfComplete: t.hideCompletedFields,
  13085.     trackingId: e.eventExecutionContext.trackingId
  13086.   };
  13087.   util.debug('exp: show form with params:', t),
  13088.   tp.pianoId.showForm(n)
  13089. }
  13090. }
  13091. function _experienceExecuteHandler(e, t, n) {
  13092. var r = e.eventParams;
  13093. r.result = n
  13094. }
  13095. function _buildCallbackEventHandler(e) {
  13096. return function (t) {
  13097.   var n = t.eventParams.callback,
  13098.   r = t.eventParams,
  13099.   i = t.eventModuleParams,
  13100.   s = t.eventExecutionContext;
  13101.   util.debug('exp: fire event ', e, ' with eventParams:', r, ', moduleParams:', i, ', context:', s),
  13102.   eventManager.fire('experience', e, !0, r, i, s),
  13103.   n && e != n && (util.debug('exp: execute event ', e, ' with callback: ', n), _runScript(n))
  13104. }
  13105. }
  13106. function buildEmptyHandler() {
  13107. return function () {
  13108. }
  13109. }
  13110. function checkPreActionHandlers(e) {
  13111. var t = e.eventParams,
  13112. n = e.eventModuleParams,
  13113. r = e.eventExecutionContext;
  13114. return util.debug('exp: fire event \'beforeComposerAction\' with eventParams:', t, ', moduleParams:', n, ', context:', r),
  13115. eventManager.fireCallbacksAndStopOnFirstFalse('beforeComposerAction', t, n, r)
  13116. }
  13117. var me = {
  13118. __private__: {
  13119. },
  13120. __protected__: {
  13121. }
  13122. };
  13123. me.name = 'experience',
  13124. me.execute = function (e) {
  13125. _execute('manual', e, !1)
  13126. },
  13127. me.init = _init,
  13128. me.registerCallback = function (e, t) {
  13129. eventManager.addEvent(e),
  13130. eventManager.registerCallback(e, t)
  13131. },
  13132. me._getLastExecutionResult = function () {
  13133. return _lastExecutionResult
  13134. },
  13135. me.__private__.handlers = [
  13136. ],
  13137. me.__private__.preloadHandlers = [
  13138. ],
  13139. me.__private__.executedNodes = [
  13140. ],
  13141. me.__private__.linkedNodes = {
  13142. },
  13143. me.__private__.lastExecutionStatsContext = '',
  13144. me.__private__.smallExpereinceMode = !1,
  13145. me.__private__.processResult = processResult,
  13146. me.__private__.processErrors = processErrors,
  13147. me.__private__.createLinkedNodeHandler = createLinkedNodeHandler,
  13148. me.__private__.createLinkedNodeEventCondition = createLinkedNodeEventCondition,
  13149. me.__private__._applyCssHandler = _applyCssHandler,
  13150. me.__private__._runJsHandler = _runJsHandler,
  13151. me.__private__._setCookieHandler = _setCookieHandler,
  13152. me.__private__._nonSiteHandler = _nonSiteHandler,
  13153. me.__private__._logHandler = _logHandler,
  13154. me.__private__._continueExecutionHandler = _continueExecutionHandler,
  13155. me.__private__._experienceExecuteHandler = _experienceExecuteHandler,
  13156. me.__private__._buildCallbackEventHandler = _buildCallbackEventHandler,
  13157. me.__private__.show = show,
  13158. me.__private__.removeEventListeners = removeEventListeners,
  13159. me.__private__.resetExperienceState = resetExperienceState,
  13160. me.__private__.subscribeToEventListener = subscribeToEventListener,
  13161. me.__private__.checkPreActionHandlers = checkPreActionHandlers,
  13162. me.__private__.getExecutedNodes = getExecutedNodes,
  13163. me.__private__.addEventToExecutedNodes = addEventToExecutedNodes,
  13164. me.__private__.clearExecutedNodes = clearExecutedNodes,
  13165. me.__private__.addModuleToExecuted = addModuleToExecuted,
  13166. me.__private__.getTrackingEndpoint = getTrackingEndpoint,
  13167. me.__private__.initializePianoEsp = initializePianoEsp,
  13168. me.__private__.injectSwgMarkup = injectSwgMarkup,
  13169. me.__private__.addSwgLibrary = addSwgLibrary,
  13170. me.__protected__.sendStatisticsExecutedNodes = sendStatisticsExecutedNodes,
  13171. me.__private__.READER_ID = 'reader_id';
  13172. var _initialized = !1,
  13173. XB_COOKIE = 'xbc',
  13174. _lastExecutionResult = {
  13175. },
  13176. timers = [
  13177. ],
  13178. linkedNodeTypes = {
  13179. HANDLER: 'handler',
  13180. EVENT_CONDITION: 'eventCondition',
  13181. INNER_EVENT_CONDITION: 'innerEventCondition',
  13182. PRELOAD: 'preload'
  13183. },
  13184. eventManager = eventUtils.createEventManager([]);
  13185. me.__private__.handlers = buildHandlers({
  13186. applyCss: {
  13187.   fn: _applyCssHandler,
  13188.   isAction: !0,
  13189.   shouldFireCallback: !0
  13190. },
  13191. runJs: {
  13192.   fn: _runJsHandler,
  13193.   isAction: !0,
  13194.   shouldFireCallback: !0
  13195. },
  13196. setCookie: {
  13197.   fn: _setCookieHandler,
  13198.   isAction: !0,
  13199.   shouldFireCallback: !0
  13200. },
  13201. nonSite: {
  13202.   fn: _nonSiteHandler,
  13203.   isAction: !0,
  13204.   shouldFireCallback: !0
  13205. },
  13206. showForm: {
  13207.   fn: _showFormHandler,
  13208.   isAction: !0,
  13209.   shouldFireCallback: !0
  13210. },
  13211. showOffer: {
  13212.   fn: _showOfferHandler,
  13213.   isAction: !0,
  13214.   shouldFireCallback: !1
  13215. },
  13216. showTemplate: {
  13217.   fn: _showTemplateHandler,
  13218.   isAction: !0,
  13219.   shouldFireCallback: !1
  13220. },
  13221. showZuoraOffer: {
  13222.   fn: _showTemplateHandler,
  13223.   isAction: !0,
  13224.   shouldFireCallback: !1
  13225. },
  13226. showNewscycleOffer: {
  13227.   fn: _showTemplateHandler,
  13228.   isAction: !0,
  13229.   shouldFireCallback: !1
  13230. },
  13231. continueExecution: {
  13232.   fn: _continueExecutionHandler,
  13233.   shouldFireCallback: !0
  13234. },
  13235. continueExecutionCompleted: {
  13236.   fn: buildEmptyHandler,
  13237.   shouldFireCallback: !0
  13238. },
  13239. meterActive: {
  13240.   fn: buildEmptyHandler,
  13241.   shouldFireCallback: !0
  13242. },
  13243. meterExpired: {
  13244.   fn: buildEmptyHandler,
  13245.   shouldFireCallback: !0
  13246. },
  13247. userSegmentTrue: {
  13248.   fn: buildEmptyHandler,
  13249.   shouldFireCallback: !0
  13250. },
  13251. userSegmentFalse: {
  13252.   fn: buildEmptyHandler,
  13253.   shouldFireCallback: !0
  13254. },
  13255. experienceExecutionFailed: {
  13256.   fn: buildEmptyHandler,
  13257.   shouldFireCallback: !0
  13258. },
  13259. log: {
  13260.   fn: _logHandler,
  13261.   shouldFireCallback: !1
  13262. },
  13263. experienceExecute: {
  13264.   fn: _experienceExecuteHandler,
  13265.   shouldFireCallback: !0
  13266. }
  13267. });
  13268. var eventTypesWithPreload = [
  13269. 'showOffer',
  13270. 'showZuoraOffer',
  13271. 'showNewscycleOffer',
  13272. 'showTemplate'
  13273. ];
  13274. me.__private__.preloadHandlers = {
  13275. showOffer: _deferredShowOfferHandler,
  13276. showTemplate: _deferredShowTemplateHandler,
  13277. showZuoraOffer: _deferredShowTemplateHandler,
  13278. showNewscycleOffer: _deferredShowTemplateHandler
  13279. };
  13280. var statisticsRequestInterval = 2000,
  13281. sendStatisticsTimerId;
  13282. return me
  13283. }),
  13284. tp.define('experience', function () {
  13285. }),
  13286. tp.define('activetimer', [
  13287. 'ifvisible',
  13288. 'jq'
  13289. ], function (e, t) {
  13290. function a() {
  13291. b();
  13292. var e = r[r.length - 1];
  13293. if (e !== undefined && e.stopTime === undefined) return;
  13294. r.push({
  13295.   startTime: new Date,
  13296.   startMinute: n,
  13297.   stopTime: undefined
  13298. })
  13299. }
  13300. function f() {
  13301. if (r.length === 0) return;
  13302. if (o) return;
  13303. if (m()) {
  13304.   y();
  13305.   return
  13306. }
  13307. var e = r[r.length - 1];
  13308. e.stopTime === undefined && (e.stopTime = new Date, e.stopMinute = n)
  13309. }
  13310. function l() {
  13311. var e = 0;
  13312. for (var t = 0; t < r.length; t++) {
  13313.   var i = r[t].startTime,
  13314.   s = r[t].stopTime,
  13315.   o = r[t].startMinute,
  13316.   u = r[t].stopMinute;
  13317.   s === undefined && (s = new Date, u = n),
  13318.   e += h(s, i, u, o)
  13319. }
  13320. return Math.floor(e / 1000)
  13321. }
  13322. function c() {
  13323. var e = 0,
  13324. t = r[0];
  13325. if (t !== undefined) {
  13326.   var i = t.startTime,
  13327.   s = t.startMinute,
  13328.   o = new Date,
  13329.   u = n;
  13330.   e = h(o, i, u, s)
  13331. }
  13332. return Math.floor(e / 1000)
  13333. }
  13334. function h(e, t, n, r) {
  13335. var i = 10,
  13336. s = Math.abs(e.getTime() - t.getTime()),
  13337. o = n - r;
  13338. return s > (o + i) * 60000 && (s = o * 60000),
  13339. s
  13340. }
  13341. function p(t) {
  13342. var n = parseFloat(t);
  13343. if (isNaN(n) !== !1) throw {
  13344.   name: 'InvalidDurationException',
  13345.   message: 'An invalid duration time (' + t + ') was provided.'
  13346. };
  13347. e.setIdleDuration(n),
  13348. i = n
  13349. }
  13350. function d() {
  13351. r = [
  13352. ],
  13353. a()
  13354. }
  13355. function v() {
  13356. e.on('blur', function () {
  13357.   o = !1,
  13358.   f()
  13359. }),
  13360. e.on('focus', function () {
  13361.   o = !0,
  13362.   a()
  13363. }),
  13364. e.on('idle', function () {
  13365.   i > 0 && (o = !1, f())
  13366. }),
  13367. e.on('wakeup', function () {
  13368.   i > 0 && (o = !0, a())
  13369. })
  13370. }
  13371. function m() {
  13372. return u = t('video,audio').filter(function () {
  13373.   return !this.paused
  13374. }),
  13375. !!u.length
  13376. }
  13377. function g() {
  13378. setTimeout(f, s * 1000)
  13379. }
  13380. function y() {
  13381. if (!u) return;
  13382. u.each(function () {
  13383.   this.addEventListener('pause', g)
  13384. })
  13385. }
  13386. function b() {
  13387. if (!u) return;
  13388. u.each(function () {
  13389.   this.removeEventListener('pause', g)
  13390. })
  13391. }
  13392. function w(e) {
  13393. e && p(e),
  13394. v(),
  13395. a(),
  13396. setInterval(function () {
  13397.   n++
  13398. }, 60000)
  13399. }
  13400. var n = 0,
  13401. r = [
  13402. ],
  13403. i = 60,
  13404. s = 15,
  13405. o = !0,
  13406. u;
  13407. return {
  13408. name: 'activetimer',
  13409. setIdleDurationInSeconds: p,
  13410. getActiveTimeInSeconds: l,
  13411. getTotalTimeInSeconds: c,
  13412. resetRecordedTime: d,
  13413. startTimer: a,
  13414. stopTimer: f,
  13415. initialize: w
  13416. }
  13417. }),
  13418. tp.define('scrollDepth', [
  13419. 'jq'
  13420. ], function (e) {
  13421. function s(s) {
  13422. var o = document,
  13423. u = e(document),
  13424. a = e(window);
  13425. s && s > 0 && (r = s || r),
  13426. function f() {
  13427.   var e = o.body || {
  13428.   },
  13429.   s = o.documentElement || {
  13430.   },
  13431.   l = Math.max(e.scrollHeight, s.scrollHeight, e.offsetHeight, s.offsetHeight, e.clientHeight, s.clientHeight);
  13432.   l > t && (t = l);
  13433.   var c = u.scrollTop() + a.height();
  13434.   c > n && (n = c, n > t && (t = n)),
  13435.   i && clearTimeout(i),
  13436.   i = setTimeout(f, r)
  13437. }()
  13438. }
  13439. function o() {
  13440. return n
  13441. }
  13442. function u() {
  13443. return t
  13444. }
  13445. function a(e, t, n) {
  13446. typeof n != 'function' && (n = function () {
  13447.   return !0
  13448. }),
  13449. c.push({
  13450.   callback: e,
  13451.   position: t.scrollDepth,
  13452.   measureType: t.measureType,
  13453.   repeat: 'once',
  13454.   consumeEventFn: n
  13455. }),
  13456. h(),
  13457. v()
  13458. }
  13459. function f() {
  13460. c = [
  13461. ]
  13462. }
  13463. function h() {
  13464. var t = e(window).scrollTop();
  13465. t > l && (l = t)
  13466. }
  13467. function p() {
  13468. h(),
  13469. v()
  13470. }
  13471. function d(n) {
  13472. if (!n.consumeEventFn()) return;
  13473. if (n.measureType === 'pixels') return n.position <= l;
  13474. if (n.measureType === 'percentage') return l / (t - e(window).height()) >= n.position / 100
  13475. }
  13476. function v() {
  13477. var e = [
  13478. ],
  13479. t = [
  13480. ],
  13481. n;
  13482. for (var r = 0; r < c.length; r++) n = c[r],
  13483. d(n) ? e.push(n)  : t.push(n);
  13484. c = t;
  13485. for (var r = 0; r < e.length; r++) e[r].callback()
  13486. }
  13487. var t = 0,
  13488. n = 0,
  13489. r = 200,
  13490. i,
  13491. l = 0,
  13492. c = [
  13493. ];
  13494. return e(window).scroll(p),
  13495. {
  13496. name: 'scrollDepth',
  13497. initialize: s,
  13498. getMaxScrollDepth: o,
  13499. getMaxDocumentHeight: u,
  13500. addListener: a,
  13501. removeListeners: f
  13502. }
  13503. }),
  13504. tp.define('ifvisible', [
  13505. ], function () {
  13506. var e,
  13507. t,
  13508. n,
  13509. r,
  13510. i,
  13511. s,
  13512. o,
  13513. u,
  13514. a,
  13515. f,
  13516. l,
  13517. c,
  13518. h,
  13519. p;
  13520. return a = {
  13521. },
  13522. n = document,
  13523. l = !1,
  13524. c = 'active',
  13525. o = 60000,
  13526. s = !1,
  13527. t = function () {
  13528. var e,
  13529. t,
  13530. n,
  13531. r,
  13532. i,
  13533. s,
  13534. o;
  13535. return e = function () {
  13536.   return ((1 + Math.random()) * 65536 | 0).toString(16).substring(1)
  13537. },
  13538. i = function () {
  13539.   return e() + e() + '-' + e() + '-' + e() + '-' + e() + '-' + e() + e() + e()
  13540. },
  13541. s = {
  13542. },
  13543. n = '__ceGUID',
  13544. t = function (e, t, r) {
  13545.   return e[n] = undefined,
  13546.   e[n] || (e[n] = 'ifvisible.object.event.identifier'),
  13547.   s[e[n]] || (s[e[n]] = {
  13548.   }),
  13549.   s[e[n]][t] || (s[e[n]][t] = [
  13550.   ]),
  13551.   s[e[n]][t].push(r)
  13552. },
  13553. r = function (e, t, r) {
  13554.   var i,
  13555.   o,
  13556.   u,
  13557.   a,
  13558.   f;
  13559.   if (e[n] && s[e[n]] && s[e[n]][t]) {
  13560.     a = s[e[n]][t],
  13561.     f = [
  13562.     ];
  13563.     for (o = 0, u = a.length; o < u; o++) i = a[o],
  13564.     f.push(i(r || {
  13565.     }));
  13566.     return f
  13567.   }
  13568. },
  13569. o = function (e, t, r) {
  13570.   var i,
  13571.   o,
  13572.   u,
  13573.   a,
  13574.   f;
  13575.   if (r) {
  13576.     if (e[n] && s[e[n]] && s[e[n]][t]) {
  13577.       f = s[e[n]][t];
  13578.       for (o = u = 0, a = f.length; u < a; o = ++u) {
  13579.         i = f[o];
  13580.         if (i === r) return s[e[n]][t].splice(o, 1),
  13581.         i
  13582.       }
  13583.     }
  13584.   } else if (e[n] && s[e[n]] && s[e[n]][t]) return delete s[e[n]][t]
  13585. },
  13586. {
  13587.   add: t,
  13588.   remove: o,
  13589.   fire: r
  13590. }
  13591. }(),
  13592. e = function () {
  13593. var e;
  13594. return e = !1,
  13595. function (t, n, r) {
  13596.   return e || (t.addEventListener ? e = function (e, t, n) {
  13597.     return e.addEventListener(t, n, !1)
  13598.   }
  13599.    : t.attachEvent ? e = function (e, t, n) {
  13600.     return e.attachEvent('on' + t, n, !1)
  13601.   }
  13602.    : e = function (e, t, n) {
  13603.     return e['on' + t] = n
  13604.   }),
  13605.   e(t, n, r)
  13606. }
  13607. }(),
  13608. r = function (e, t) {
  13609. var r;
  13610. return n.createEventObject ? e.fireEvent('on' + t, r)  : (r = n.createEvent('HTMLEvents'), r.initEvent(t, !0, !0), !e.dispatchEvent(r))
  13611. },
  13612. u = function () {
  13613. var e,
  13614. t,
  13615. r,
  13616. i,
  13617. s;
  13618. i = void 0,
  13619. s = 3,
  13620. r = n.createElement('div'),
  13621. e = r.getElementsByTagName('i'),
  13622. t = function () {
  13623.   return r.innerHTML = '<!--[if gt IE ' + ++s + ']><i></i><![endif]-->',
  13624.   e[0]
  13625. };
  13626. while (t()) continue;
  13627. return s > 4 ? s : i
  13628. }(),
  13629. i = !1,
  13630. p = void 0,
  13631. typeof n.hidden != 'undefined' ? (i = 'hidden', p = 'visibilitychange')  : typeof n.mozHidden != 'undefined' ? (i = 'mozHidden', p = 'mozvisibilitychange')  : typeof n.msHidden != 'undefined' ? (i = 'msHidden', p = 'msvisibilitychange')  : typeof n.webkitHidden != 'undefined' && (i = 'webkitHidden', p = 'webkitvisibilitychange'),
  13632. h = function () {
  13633. var t,
  13634. r;
  13635. return t = !1,
  13636. r = function () {
  13637.   return clearTimeout(t),
  13638.   c !== 'active' && a.wakeup(),
  13639.   s = + (new Date),
  13640.   t = setTimeout(function () {
  13641.     if (c === 'active') return a.idle()
  13642.   }, o)
  13643. },
  13644. r(),
  13645. e(n, 'mousemove', r),
  13646. e(n, 'mouseup', r),
  13647. e(n, 'keyup', r),
  13648. e(n, 'touchstart', r),
  13649. e(window, 'scroll', r),
  13650. e(window, 'resize', r),
  13651. a.focus(r),
  13652. a.wakeup(r)
  13653. },
  13654. f = function () {
  13655. var t;
  13656. return l ? !0 : (i === !1 ? (t = 'blur', u < 9 && (t = 'focusout'), e(window, t, function () {
  13657.   return a.blur()
  13658. }), e(window, 'focus', function () {
  13659.   return a.focus()
  13660. }))  : e(n, p, function () {
  13661.   return n[i] ? a.blur()  : a.focus()
  13662. }, !1), l = !0, h())
  13663. },
  13664. a = {
  13665. setIdleDuration: function (e) {
  13666.   return o = e * 1000
  13667. },
  13668. getIdleDuration: function () {
  13669.   return o
  13670. },
  13671. getIdleInfo: function () {
  13672.   var e,
  13673.   t;
  13674.   return e = + (new Date),
  13675.   t = {
  13676.   },
  13677.   c === 'idle' ? (t.isIdle = !0, t.idleFor = e - s, t.timeLeft = 0, t.timeLeftPer = 100)  : (t.isIdle = !1, t.idleFor = e - s, t.timeLeft = s + o - e, t.timeLeftPer = (100 - t.timeLeft * 100 / o).toFixed(2)),
  13678.   t
  13679. },
  13680. focus: function (e) {
  13681.   return typeof e == 'function' ? this.on('focus', e)  : (c = 'active', t.fire(this, 'focus'), t.fire(this, 'wakeup'), t.fire(this, 'statusChanged', {
  13682.     status: c
  13683.   })),
  13684.   this
  13685. },
  13686. blur: function (e) {
  13687.   return typeof e == 'function' ? this.on('blur', e)  : (c = 'hidden', t.fire(this, 'blur'), t.fire(this, 'idle'), t.fire(this, 'statusChanged', {
  13688.     status: c
  13689.   })),
  13690.   this
  13691. },
  13692. idle: function (e) {
  13693.   return typeof e == 'function' ? this.on('idle', e)  : (c = 'idle', t.fire(this, 'idle'), t.fire(this, 'statusChanged', {
  13694.     status: c
  13695.   })),
  13696.   this
  13697. },
  13698. wakeup: function (e) {
  13699.   return typeof e == 'function' ? this.on('wakeup', e)  : (c = 'active', t.fire(this, 'wakeup'), t.fire(this, 'statusChanged', {
  13700.     status: c
  13701.   })),
  13702.   this
  13703. },
  13704. on: function (e, n) {
  13705.   return f(),
  13706.   t.add(this, e, n),
  13707.   this
  13708. },
  13709. off: function (e, n) {
  13710.   return f(),
  13711.   t.remove(this, e, n),
  13712.   this
  13713. },
  13714. onEvery: function (e, t) {
  13715.   var n,
  13716.   r;
  13717.   return f(),
  13718.   n = !1,
  13719.   t && (r = setInterval(function () {
  13720.     if (c === 'active' && n === !1) return t()
  13721.   }, e * 1000)),
  13722.   {
  13723.     stop: function () {
  13724.       return clearInterval(r)
  13725.     },
  13726.     pause: function () {
  13727.       return n = !0
  13728.     },
  13729.     resume: function () {
  13730.       return n = !1
  13731.     },
  13732.     code: r,
  13733.     callback: t
  13734.   }
  13735. },
  13736. now: function (e) {
  13737.   return f(),
  13738.   c === (e || 'active')
  13739. }
  13740. },
  13741. a.name = 'ifvisible',
  13742. a
  13743. }),
  13744. tp.define('doubleClickForPublisher', [
  13745. ], function () {
  13746. function i(e) {
  13747. e && (f(), t = !1),
  13748. s()
  13749. }
  13750. function s() {
  13751. if (t) return !1;
  13752. t = !0;
  13753. try {
  13754.   var e = window.googletag = window.googletag || {
  13755.   };
  13756.   return e.cmd = e.cmd || [
  13757.   ],
  13758.   e.cmd.push(function () {
  13759.     e.pubads().addEventListener('slotRenderEnded', h),
  13760.     e.pubads().addEventListener('impressionViewable', p),
  13761.     e.companionAds().addEventListener('slotRenderEnded', h),
  13762.     e.companionAds().addEventListener('impressionViewable', p)
  13763.   }),
  13764.   e.apiReady && e.cmd.push(function () {
  13765.     l(e.pubads().getSlots()),
  13766.     l(e.companionAds().getSlots())
  13767.   }),
  13768.   !0
  13769. } catch (n) {
  13770.   return v(n),
  13771.   !1
  13772. }
  13773. }
  13774. function o(e) {
  13775. n = e
  13776. }
  13777. function u(e, t) {
  13778. typeof n == 'function' && n(e, t)
  13779. }
  13780. function a() {
  13781. var t = [
  13782. ];
  13783. for (var n in e) {
  13784.   if (e[n] === undefined || e[n] === null || !e.hasOwnProperty(n)) continue;
  13785.   t.push(e[n])
  13786. }
  13787. return t
  13788. }
  13789. function f() {
  13790. e = {
  13791. }
  13792. }
  13793. function l(e) {
  13794. for (var t = 0; t < e.length; t++) {
  13795.   var n = e[t];
  13796.   h({
  13797.     eventSource: r.RECIEVED_FROM_GET_SLOTS,
  13798.     slot: n
  13799.   })
  13800. }
  13801. }
  13802. function c(e) {
  13803. var t;
  13804. try {
  13805.   var n = e.serviceName,
  13806.   r = e.slot;
  13807.   if (!n) {
  13808.     var i = e.slot.getServices();
  13809.     i && i.length && (n = i[0].getName())
  13810.   }
  13811.   var s = r.getResponseInformation() || {
  13812.   },
  13813.   o = r.getSlotId ? r.getSlotId()  : {
  13814.   },
  13815.   u = r.getSlotElementId ? r.getSlotElementId()  : o.getDomId ? o.getDomId()  : null;
  13816.   t = {
  13817.     companion: n ? n === 'companion_ads' : !1,
  13818.     adUnit: r.getCsiId ? r.getCsiId()  : 0,
  13819.     isEmpty: e.isEmpty,
  13820.     elementId: u,
  13821.     advertiserId: e.advertiserId || s.advertiserId,
  13822.     campaignId: e.campaignId || s.campaignId,
  13823.     lineItemId: e.lineItemId || s.lineItemId,
  13824.     creativeId: e.creativeId || s.creativeId,
  13825.     eventSource: e.eventSource || null,
  13826.     size: e.size && e.size.slice(0, 2) || null,
  13827.     viewed: !1,
  13828.     position: null
  13829.   };
  13830.   var a = document.getElementById(u);
  13831.   if (u && a) {
  13832.     t.position = {
  13833.       top: a.offsetTop,
  13834.       left: a.offsetLeft
  13835.     };
  13836.     if (e.isEmpty === undefined) {
  13837.       t.isEmpty = a.offsetWidth <= 0 && a.offsetHeight <= 0;
  13838.       if (!t.isEmpty && !t.size) {
  13839.         var f = r.getSizes();
  13840.         f && f.length && (t.size = [
  13841.           f[0].getWidth(),
  13842.           f[0].getHeight()
  13843.         ])
  13844.       }
  13845.     }
  13846.   }
  13847. } catch (l) {
  13848.   v(l)
  13849. }
  13850. return t
  13851. }
  13852. function h(t) {
  13853. t.eventSource = t.eventSource || r.RENDERED_FOR_CURRENT_UNIT;
  13854. var n = c(t),
  13855. i = d(t.slot);
  13856. e[i] && (n.viewed = e[i].viewed),
  13857. e[i] = n,
  13858. u(n, i)
  13859. }
  13860. function p(t) {
  13861. var n = d(t.slot),
  13862. i = e[n] = e[n] || c(t);
  13863. i.companion === undefined && (i.companion = t.serviceName === 'companion_ads'),
  13864. i.viewed = !0;
  13865. if (!i.eventSource || i.eventSource > r.DID_NOT_RENDER_BUT_VIEWED) i.eventSource = r.DID_NOT_RENDER_BUT_VIEWED;
  13866. u(i, n)
  13867. }
  13868. function d(e) {
  13869. try {
  13870.   var t = e.getSlotId ? e.getSlotId()  : {
  13871.   },
  13872.   n = e.getSlotElementId ? e.getSlotElementId()  : t.getDomId ? t.getDomId()  : null,
  13873.   r = e.getCsiId ? e.getCsiId()  : 0,
  13874.   i = t.getId ? t.getId()  : 0;
  13875.   return [n,
  13876.   i,
  13877.   r].join(':')
  13878. } catch (s) {
  13879.   v(s)
  13880. }
  13881. }
  13882. function v(e) {
  13883. window.tp && window.tp.util && window.tp.util.error && window.tp.util.error('DFP module error: ', e)
  13884. }
  13885. var e = {
  13886. },
  13887. t = !1,
  13888. n,
  13889. r = {
  13890. RENDERED_FOR_CURRENT_UNIT: 1,
  13891. DID_NOT_RENDER_BUT_VIEWED: 2,
  13892. RECIEVED_FROM_GET_SLOTS: 3
  13893. };
  13894. return i(),
  13895. {
  13896. name: 'doubleClickForPublisher',
  13897. initialize: i,
  13898. setCustomHandler: o,
  13899. getAds: a,
  13900. resetAds: f
  13901. }
  13902. }),
  13903. tp.define('doubleClickForPublisher', function () {
  13904. }),
  13905. tp.define('viewportExit', [
  13906. 'jq',
  13907. 'util'
  13908. ], function (e, t) {
  13909. function m() {
  13910. if (l) return;
  13911. l = !0,
  13912. v = p,
  13913. e(document).on('mouseleave', x),
  13914. e(document).on('mousemove', T)
  13915. }
  13916. function g() {
  13917. if (c) return;
  13918. c = !0,
  13919. window.addEventListener('popstate', function (e) {
  13920.   i && e.state && e.state.pianoViewportExitState === n && (i = !1, N('back'))
  13921. });
  13922. var e = window.history.state || {
  13923. };
  13924. e && e.pianoViewportExitState !== r && (e.pianoViewportExitState !== n && (e.pianoViewportExitState = n, window.history.replaceState(e, document.title)), window.history.pushState({
  13925.   pianoViewportExitState: r
  13926. }, document.title)),
  13927. i = !0
  13928. }
  13929. function y(e) {
  13930. a.indexOf(e) !== - 1 ? d[e].visited || (d[e].visited = !0, v += d[e].value)  : t.debug('viewportExit: the detect of the exit side failed')
  13931. }
  13932. function b(t, n) {
  13933. function o() {
  13934.   return n <= 0
  13935. }
  13936. function u() {
  13937.   return t >= r
  13938. }
  13939. function a() {
  13940.   return n >= i
  13941. }
  13942. function f() {
  13943.   return t <= 0
  13944. }
  13945. var r = e(window).width(),
  13946. i = e(window).height(),
  13947. s = '';
  13948. return u() && (s = 'right'),
  13949. a() && (s = 'bottom'),
  13950. f() && (s = 'left'),
  13951. o() && (s = 'top'),
  13952. s
  13953. }
  13954. function w(e) {
  13955. if (e.length === 0) return - 1;
  13956. var t = e[0],
  13957. n = 0;
  13958. for (var r = 1; r < e.length; r++) e[r] < t && (n = r, t = e[r]);
  13959. return n
  13960. }
  13961. function E() {
  13962. if (!s) return '';
  13963. var t = e(window).width(),
  13964. n = e(window).height(),
  13965. r = [
  13966.   u,
  13967.   t - o,
  13968.   n - u,
  13969.   o
  13970. ];
  13971. return a[w(r)]
  13972. }
  13973. function S(e) {
  13974. return e.clientX === e.clientY && e.clientX < 0 && e.clientX >= - 1
  13975. }
  13976. function x(e) {
  13977. var n;
  13978. n = S(e) ? '' : b(e.clientX, e.clientY),
  13979. n || (n = E(), n || t.debug('viewportExit: the detect of the exit side failed')),
  13980. n && y(n),
  13981. N('all'),
  13982. n === 'top' && N('top')
  13983. }
  13984. function T(e) {
  13985. s = !0,
  13986. u = e.clientY,
  13987. o = e.clientX
  13988. }
  13989. function N(e) {
  13990. if (!f) return;
  13991. var n,
  13992. r = [
  13993. ],
  13994. i = [
  13995. ];
  13996. for (var s = 0; s < h.length; s++) n = h[s],
  13997. (n.detectExitMode === e || e === 'back' && n.detectBackButtonForMobile) && n.consumeEventFn() ? r.push(n)  : i.push(n);
  13998. r.length && t.debug('viewportExit: listeners was run fire with type: ', e),
  13999. h = i;
  14000. for (var s = 0; s < r.length; s++) n = r[s],
  14001. n.callback()
  14002. }
  14003. function C(e, t, n) {
  14004. (t.clientDevice === 'mobile' || t.clientDevice === 'tablet') && !!t.detectBackButtonForMobile && g(),
  14005. m(),
  14006. typeof n != 'function' && (n = function () {
  14007.   return !0
  14008. }),
  14009. h.push({
  14010.   callback: e,
  14011.   detectExitMode: t.detectExitMode,
  14012.   detectBackButtonForMobile: t.detectBackButtonForMobile,
  14013.   consumeEventFn: n
  14014. })
  14015. }
  14016. function k() {
  14017. h = [
  14018. ]
  14019. }
  14020. function L() {
  14021. return l
  14022. }
  14023. function A() {
  14024. return v
  14025. }
  14026. function O() {
  14027. v = p
  14028. }
  14029. var n = 'viewport-exit-activated',
  14030. r = 'viewport-exit-prepared',
  14031. i = !1,
  14032. s = !1,
  14033. o = 0,
  14034. u = 0,
  14035. a = [
  14036. 'top',
  14037. 'right',
  14038. 'bottom',
  14039. 'left'
  14040. ],
  14041. f = !0,
  14042. l = !1,
  14043. c = !1,
  14044. h = [
  14045. ],
  14046. p = 0,
  14047. d = {
  14048. top: {
  14049.   visited: !1,
  14050.   value: 1
  14051. },
  14052. right: {
  14053.   visited: !1,
  14054.   value: 2
  14055. },
  14056. bottom: {
  14057.   visited: !1,
  14058.   value: 4
  14059. },
  14060. left: {
  14061.   visited: !1,
  14062.   value: 8
  14063. }
  14064. },
  14065. v = p;
  14066. return {
  14067. name: 'viewportExit',
  14068. initialize: m,
  14069. isInitialized: L,
  14070. addListener: C,
  14071. resetSumOfCodesDirectionToDefault: O,
  14072. getSumOfCodesDirection: A,
  14073. removeListeners: k,
  14074. enable: function () {
  14075.   f = !0
  14076. },
  14077. disable: function () {
  14078.   f = !1
  14079. }
  14080. }
  14081. }),
  14082. tp.define('viewportExit', function () {
  14083. }),
  14084. tp.define('condeUserProvider', [
  14085. 'jq',
  14086. 'api',
  14087. 'util'
  14088. ], function (e, t, n) {
  14089. var r = function () {
  14090. function s(e) {
  14091.   n.setAccessTokenListCookie({
  14092.     value: null
  14093.   }, null, !0);
  14094.   var t = n.getPossibleCookieDomains();
  14095.   for (var r in t) n.deleteCookie('amg_user', t[r]),
  14096.   n.deleteCookie('amg_user_partner', t[r]),
  14097.   n.deleteCookie('amg_user_info', t[r]),
  14098.   n.deleteCookie('amg_user_ext', t[r]),
  14099.   n.deleteCookie('amg_user_update', t[r]);
  14100.   n.deleteCookie('amg_user'),
  14101.   n.deleteCookie('amg_user_partner'),
  14102.   n.deleteCookie('amg_user_info'),
  14103.   n.deleteCookie('amg_user_ext'),
  14104.   n.deleteCookie('amg_user_update'),
  14105.   e && e()
  14106. }
  14107. function o(t) {
  14108.   n.setAccessTokenListCookie({
  14109.     value: t.token_list,
  14110.     cookie_domain: t.cookie_domain
  14111.   }, t.user_token);
  14112.   var r = {
  14113.     path: '/',
  14114.     expires: 730
  14115.   };
  14116.   t.cookie_domain && t.cookie_domain != 'localhost' && e.inArray(t.cookie_domain, n.getPossibleCookieDomains()) >= 0 && (r.domain = t.cookie_domain),
  14117.   e.cookie.raw = !0,
  14118.   n.__protected__.setCookie(t.params.cookieName, t.params.cookieValue, r),
  14119.   n.__protected__.setCookie('amg_user_partner', t.params.externalId, r),
  14120.   n.__protected__.setCookie('amg_user_info', t.params.userName, r),
  14121.   n.__protected__.setCookie('amg_user_ext', t.params.siteUserId, r),
  14122.   t.params.updateToken && n.__protected__.setCookie('amg_user_update', t.params.updateToken, r),
  14123.   e.cookie.raw = !1
  14124. }
  14125. var t = function () {
  14126.   return 'conde'
  14127. },
  14128. r = function () {
  14129.   var e = n.findCookieByName('amg_user_partner');
  14130.   return typeof e != 'undefined' && e && e.length >= 0 ? e : null
  14131. },
  14132. i = function () {
  14133.   return !!n.getUserTokenCookie()
  14134. };
  14135. return {
  14136.   getName: function () {
  14137.     return t()
  14138.   },
  14139.   getToken: function () {
  14140.     return r()
  14141.   },
  14142.   isUserValid: function () {
  14143.     return i()
  14144.   },
  14145.   onLoginSuccess: o,
  14146.   logout: s
  14147. }
  14148. }(),
  14149. i = function () {
  14150. return tp.useCondeUserProvider === !0 || tp.useCondeUserProvider === 'true'
  14151. };
  14152. return {
  14153. name: 'condeUserProvider',
  14154. isUserValid: function () {
  14155.   return r.isUserValid()
  14156. },
  14157. getToken: function () {
  14158.   return r.getToken()
  14159. },
  14160. getName: function () {
  14161.   return r.getName()
  14162. },
  14163. onLoginSuccess: function (e) {
  14164.   return r.onLoginSuccess(e)
  14165. },
  14166. logout: function (e) {
  14167.   return r.logout(e)
  14168. },
  14169. isConfigured: function () {
  14170.   return i()
  14171. }
  14172. }
  14173. }),
  14174. tp.define('condeUserProvider', function () {
  14175. }),
  14176. tp.define('pianoId', [
  14177. 'jq',
  14178. 'jwtDecode',
  14179. 'util',
  14180. 'containerUtils',
  14181. 'postmessage',
  14182. 'log',
  14183. 'observer'
  14184. ], function (e, t, n, r, i, s, o) {
  14185. function A(e) {
  14186. S.filter(function (e) {
  14187.   return e.config.displayMode === 'inline'
  14188. }).filter(function (t) {
  14189.   return !e || e.some(function (e) {
  14190.     return t.container.is(e)
  14191.   })
  14192. }).forEach(function (e) {
  14193.   r.resizeIframe(e, {
  14194.     width: e.container.width()
  14195.   }),
  14196.   i.send('resize', {
  14197.     width: e.container.width()
  14198.   }, e.iframeId)
  14199. })
  14200. }
  14201. function O(e) {
  14202. var n = t(e);
  14203. st({
  14204.   user: n,
  14205.   token: e
  14206. })
  14207. }
  14208. function M(t) {
  14209. if (k && !t) return k;
  14210. var r = e.Deferred();
  14211. k = r.promise(),
  14212. tp.setUsePianoIdUserProvider(!0),
  14213. E = t || {
  14214. };
  14215. var i = n.getQueryParamByName(u);
  14216. E.resetPasswordToken === undefined && i && (E.resetPasswordToken = i);
  14217. var s = n.getQueryParamByName(f),
  14218. o = n.getQueryParamByName(a);
  14219. return !ht() && o ? (O(o), n.removeQueryParamByName(a), setTimeout(r.resolve, 50))  : !ht() && s ? (n.startCall('refreshUserToken'), kt(s).then(function (e) {
  14220.   if (!e) return;
  14221.   try {
  14222.     e.access_token && (O(e.access_token), n.removeQueryParamByName(f), n.doneCall('refreshUserToken'))
  14223.   } catch (t) {
  14224.   }
  14225. }).always(r.resolve))  : setTimeout(r.resolve, 50),
  14226. k
  14227. }
  14228. function _(t) {
  14229. if (C && !t) return C;
  14230. var r = e.Deferred();
  14231. return C = r.promise(),
  14232. t && t.preview ? (setTimeout(r.resolve, 10), C)  : (n.startCall('refreshUserToken'), M(t).always(function () {
  14233.   pt().always(function () {
  14234.     n.doneCall('refreshUserToken'),
  14235.     r.resolve()
  14236.   })
  14237. }), C)
  14238. }
  14239. function D() {
  14240. return M()
  14241. }
  14242. function P(t) {
  14243. _().then(function () {
  14244.   var r = e.extend({
  14245.   }, E, t, {
  14246.     isRegistration: !0
  14247.   });
  14248.   ht() ? B(r)  : x ? (X(t), n.log('Modal login window already shown'))  : (X(t), V(r), nt(r))
  14249. })
  14250. }
  14251. function H(t) {
  14252. _().then(function () {
  14253.   var r = e.extend({
  14254.   }, E, t, {
  14255.     isRegistration: !1
  14256.   }),
  14257.   s = r.formName;
  14258.   if (!s) throw new Error('Form name should be specified, like\ntp.pianosId.showForm({formName: "..."});');
  14259.   var o = function () {
  14260.     if (x) n.log('Modal login window already shown');
  14261.      else {
  14262.       V(r),
  14263.       X(r);
  14264.       if (!r.preview && L) {
  14265.         n.log('Skip show form, register new user');
  14266.         return
  14267.       }
  14268.       if (!r.hideIfComplete) return e.extend(r, {
  14269.         readyCallback: function (e) {
  14270.           i.send('setToken', lt(), e.iframeId)
  14271.         }
  14272.       }),
  14273.       nt(r);
  14274.       Ct(r).then(function (t) {
  14275.         if (t && t.has_all_custom_field_values_filled && r.hideIfComplete) {
  14276.           n.log('Skip show form, all fields are completed');
  14277.           return
  14278.         }
  14279.         var s = e.extend({
  14280.         }, r, {
  14281.           readyCallback: function (e) {
  14282.             i.send('userData', t, e.iframeId)
  14283.           }
  14284.         });
  14285.         nt(s)
  14286.       })
  14287.     }
  14288.   };
  14289.   if (!t.preview && !ht()) {
  14290.     var u = e.extend({
  14291.     }, t, {
  14292.       closedCallback: function () {
  14293.         ht() && o()
  14294.       }
  14295.     });
  14296.     P(u)
  14297.   } else o()
  14298. })
  14299. }
  14300. function B(e, t) {
  14301. var n = ft();
  14302. if (!n) return;
  14303. var r = ot(),
  14304. i = {
  14305.   token: r,
  14306.   user: n,
  14307.   source: t
  14308. };
  14309. if (e) {
  14310.   e.loggedIn && e.loggedIn(i);
  14311.   return
  14312. }
  14313. R('loggedIn', i),
  14314. E.loggedIn && E.loggedIn(i),
  14315. R('loginSuccess');
  14316. if (t === d) {
  14317.   var s = {
  14318.     event: 'loginSuccess',
  14319.     source: t,
  14320.     params: i.user,
  14321.     user_token: i.token
  14322.   };
  14323.   R('fire_loginSuccess', s),
  14324.   U('loginSuccess', s)
  14325. }
  14326. }
  14327. function j(e) {
  14328. var t = {
  14329.   source: e
  14330. };
  14331. R('loggedOut', t),
  14332. E.loggedOut && E.loggedOut(t),
  14333. U('logout', t)
  14334. }
  14335. function F(e, t) {
  14336. var n = {
  14337.   login: 'loginDisplayed',
  14338.   register: 'registerDisplayed'
  14339. },
  14340. r = n[e];
  14341. z(r, {
  14342. }, t)
  14343. }
  14344. function I(e) {
  14345. R('profileUpdate', e),
  14346. E.profileUpdate && E.profileUpdate(e)
  14347. }
  14348. function q(e, t) {
  14349. e && e.customEvent && e.customEvent(t),
  14350. U('customEvent', t)
  14351. }
  14352. function R(e, t) {
  14353. T[e] && T[e].forEach(function (e) {
  14354.   e(t)
  14355. })
  14356. }
  14357. function U(e, t) {
  14358. N[e] && N[e].forEach(function (e) {
  14359.   e(t)
  14360. })
  14361. }
  14362. function z(e, t, n) {
  14363. !n && R(e, t),
  14364. U(e, t)
  14365. }
  14366. function W() {
  14367. callbacks.onShow.splice(0).forEach(function (e) {
  14368.   e()
  14369. })
  14370. }
  14371. function X(e) {
  14372. if (!e) return;
  14373. Object.keys(T).forEach(function (t) {
  14374.   e[t] && T[t].push(e[t])
  14375. })
  14376. }
  14377. function V(e) {
  14378. e.aid || (e.aid = tp.aid),
  14379. e.displayMode || (e.displayMode = 'modal'),
  14380. e.displayMode === 'popup' ? (e.width = e.width || J(), e.height = e.height || 460)  : e.displayMode === 'modal' && (e.width = e.width || J())
  14381. }
  14382. function $(e) {
  14383. b = e
  14384. }
  14385. function J() {
  14386. var e = window.innerWidth || document.documentElement.clientWidth || window.screen.width;
  14387. return Math.min(e, 400)
  14388. }
  14389. function K(e) {
  14390. var n = t(e);
  14391. ct({
  14392.   user: n,
  14393.   token: e
  14394. })
  14395. }
  14396. function Q(e, t, n) {
  14397. L = !1,
  14398. ut(),
  14399. dt().then(function () {
  14400.   n || j(t),
  14401.   e && e()
  14402. })
  14403. }
  14404. function G(e) {
  14405. function t(t) {
  14406.   var i = e.config.trackingId,
  14407.   o = e.config.formName;
  14408.   switch (t.event) {
  14409.     case 'loaded':
  14410.       e.config.displayMode === 'modal' && r.checkBackdropAndContainer(e.container, !0),
  14411.       e.config.loadedCallback && e.config.loadedCallback(e);
  14412.       break;
  14413.     case 'stateReady':
  14414.       e.config.readyCallback && e.config.readyCallback(e);
  14415.       break;
  14416.     case 'resize':
  14417.       r.resizeIframe(e, t.params);
  14418.       break;
  14419.     case 'restoreSize':
  14420.       e.config.displayMode === 'inline' && r.resizeIframe(e, {
  14421.         width: e.container.width()
  14422.       });
  14423.       break;
  14424.     case 'loginSuccess':
  14425.       t.params.source = d,
  14426.       ct(t.params).then(e.config.callback),
  14427.       L = t.params.registration,
  14428.       z('loginSuccess');
  14429.       break;
  14430.     case 'loginFailed':
  14431.       z('loginFailed', t.params);
  14432.       break;
  14433.     case 'registrationSuccess':
  14434.       z('registrationSuccess');
  14435.       break;
  14436.     case 'registrationFailed':
  14437.       z('registrationFailed', t.params);
  14438.       break;
  14439.     case 'lang':
  14440.       yt(t.params.lang, !0);
  14441.       break;
  14442.     case 'customEvent':
  14443.       q(e.config, t.params);
  14444.       break;
  14445.     case 'closed':
  14446.       mt(e, !0),
  14447.       e.config.closedCallback && e.config.closedCallback(e);
  14448.       break;
  14449.     case 'cfFormSubmission':
  14450.       s.__protected__.logCustomFormSubmission(i, o, m);
  14451.       break;
  14452.     case 'formSend':
  14453.     case 'formSkip':
  14454.       mt(e);
  14455.       break;
  14456.     case 'cfAppImpression':
  14457.       s.__protected__.logCustomFormImpression(i, o, g);
  14458.       break;
  14459.     case 'cfAppSubmission':
  14460.       s.__protected__.logCustomFormSubmission(i, o, g);
  14461.       break;
  14462.     case 'cfFormImpression':
  14463.       s.__protected__.logCustomFormImpression(i, o, m);
  14464.       break;
  14465.     case 'changeScreen':
  14466.       F(t.params.screen);
  14467.       break;
  14468.     case 'screenReady':
  14469.       W();
  14470.       break;
  14471.     default:
  14472.       n.debug('Received invalid event type: ' + t.event);
  14473.       return
  14474.   }
  14475. }
  14476. return t
  14477. }
  14478. function Y(e) {
  14479. switch (e.params.event) {
  14480.   case 'cfAppImpression':
  14481.   case 'cfFormImpression':
  14482.     s.__protected__.logCustomFormImpression(e.params.trackingId, e.params.trackingId, y);
  14483.     break;
  14484.   case 'cfFormSubmission':
  14485.   case 'cfFormSubmission':
  14486.     s.__protected__.logCustomFormSubmission(e.params.trackingId, e.params.trackingId, y);
  14487.     break;
  14488.   case 'changeScreen':
  14489.     F(e.params.params.screen, !0);
  14490.     break;
  14491.   case 'loginFailed':
  14492.   case 'registrationFailed':
  14493.   case 'registrationSuccess':
  14494.     z(e.params.event, e.params.params, !0);
  14495.     break;
  14496.   default:
  14497.     n.debug('Received invalid event type: ' + e.params.event);
  14498.     return
  14499. }
  14500. }
  14501. function Z() {
  14502. var e = tp.sandbox || tp.isNonProdEndpoint(),
  14503. t = E.iframeUrl || tp.pianoIdUrl || !e && v || '/';
  14504. return t === '/' && (t = tp.getEndpointRoot(!0)),
  14505. t.replace(/\/$/, '')
  14506. }
  14507. function et() {
  14508. var e = Z();
  14509. return e + '/id/'
  14510. }
  14511. function tt(t, n, r, i) {
  14512. var s = {
  14513.   client_id: n.aid,
  14514.   sender: r.iframeId,
  14515.   origin: i || document.location.origin || document.location.href,
  14516.   site: document.location.origin || document.location.href
  14517. },
  14518. o = wt();
  14519. return o && (s.lang = o),
  14520. n.disableSignUp && (s.disable_sign_up = !0),
  14521. n.screen && (s.screen = n.screen),
  14522. n.resetPasswordToken && (s.reset = n.resetPasswordToken),
  14523. n.stage && (s.stage = n.stage),
  14524. n.resetPasswordLandingUrl && (s.reset_uri = n.resetPasswordLandingUrl),
  14525. n.width && n.displayMode === 'modal' && (s.width = n.width),
  14526. r.iframeUrl && (s.url = r.iframeUrl),
  14527. r.pos && (s.width = r.pos.width, s.height = r.pos.height, s.top = r.pos.top, s.left = r.pos.left),
  14528. n.formName && (s.form_name = n.formName),
  14529. n.formName && !/\.html$/.test(t) && !n.isRegistration && (t += 'form.html'),
  14530. n.hideIfComplete && (s.hide_if_complete = n.hideIfComplete),
  14531. n.preview && (s.preview = n.preview),
  14532. n.templateVersion && (s.templateVersion = n.templateVersion),
  14533. n.template && (s.template = n.template),
  14534. n.accessToken && (s.access_token = n.accessToken),
  14535. [
  14536.   t,
  14537.   e.param(s)
  14538. ].join('?')
  14539. }
  14540. function nt(t) {
  14541. var s = e(t.containerSelector).first(),
  14542. u = 'piano-id-' + (t.isRegistration ? '' : 'form-') + n.randomString();
  14543. t.singleContainer = s.length ? s[0] : undefined;
  14544. var a = {
  14545.   iframeId: u,
  14546.   containerSelector: t.containerSelector,
  14547.   width: t.width,
  14548.   height: t.height
  14549. },
  14550. f = tt(et(), t, a),
  14551. l = et(),
  14552. c,
  14553. h,
  14554. d = !0,
  14555. v;
  14556. t.iframeParams = a;
  14557. if (t.displayMode === 'inline') {
  14558.   var m = r.initInlineContainer(t);
  14559.   c = m.container,
  14560.   h = r.generateIframe(t, a, f),
  14561.   d = m.containerReady,
  14562.   t.observeContainer && (v = o.create(c, A))
  14563. } else if (t.displayMode === 'modal') c = r.getModalContainer(t, function () {
  14564.   return mt(x)
  14565. }),
  14566. h = r.generateIframe(t, a, f);
  14567.  else if (t.displayMode === 'popup') if (n.isIE()) {
  14568.   c = r.generateIframeWrapper(),
  14569.   f = tt(et(), t, a, et() + 'proxy.html'),
  14570.   a.iframeUrl = f,
  14571.   a.pos = r.getPopupPosition(a);
  14572.   var g = tt(et() + 'proxy.html', t, a);
  14573.   t.displayMode = 'inlinePopup',
  14574.   h = r.generateIframe({
  14575.   }, a, g)
  14576. } else {
  14577.   c = r.generatePopup(a, f);
  14578.   try {
  14579.     try {
  14580.       h = e(c.document)
  14581.     } catch (y) {
  14582.       h = e(c)
  14583.     }
  14584.   } catch (y) {
  14585.     h = e()
  14586.   }
  14587. }
  14588. var b = {
  14589.   iframeId: a.iframeId,
  14590.   config: t,
  14591.   element: h,
  14592.   container: c,
  14593.   iframeParams: a,
  14594.   containerReady: d
  14595. },
  14596. w = {
  14597.   center: n.centerScreen(),
  14598.   originUrl: document.location.href
  14599. };
  14600. i.init({
  14601.   postMessageUrl: l,
  14602.   receive: G(b),
  14603.   iframe: b,
  14604.   iframeParams: a
  14605. }, w);
  14606. if (t.displayMode === 'inline') {
  14607.   var E = e('<div>', {
  14608.     'class': p
  14609.   });
  14610.   E.append(h),
  14611.   c.append(E)
  14612. } else t.displayMode === 'modal' ? c.append(h)  : t.displayMode === 'inlinePopup' && (c.append(h), e('body').append(c));
  14613. return n.debug('creating iframe: ', t),
  14614. S.push(b),
  14615. t.displayMode === 'modal' && (x = b, x.observer = v),
  14616. b
  14617. }
  14618. function rt() {
  14619. if (!x) return;
  14620. r.closeModal(x),
  14621. x.element.remove(),
  14622. x.observer && x.observer.disconnect(),
  14623. x = null
  14624. }
  14625. function it(e) {
  14626. var t = {
  14627.   path: '/'
  14628. },
  14629. r = n.__protected__.getCookie(h),
  14630. i = n.extractCookieDomain(e || r);
  14631. return i && (t.domain = i),
  14632. t
  14633. }
  14634. function st(e) {
  14635. if (!e || !e.user || !e.token) return;
  14636. at();
  14637. var t = new Date(e.user.exp * 1000),
  14638. r = it(e.cookie_domain);
  14639. if (e.user.rememberMe === undefined || e.user.rememberMe) r.expires = t;
  14640. n.__protected__.setCookie(l, e.token, r),
  14641. e.cookie_domain && (r.expires = 30, n.__protected__.setCookie(h, e.cookie_domain, r))
  14642. }
  14643. function ot() {
  14644. var e = n.findCookieByName(l);
  14645. return e ? e : null
  14646. }
  14647. function ut(e) {
  14648. return at(e)
  14649. }
  14650. function at(t) {
  14651. var r = it(),
  14652. i = n.getPossibleCookieDomains(r.domain);
  14653. t && n.__protected__.logRemoveTokens(t),
  14654. i.forEach(function (t) {
  14655.   var n = e.extend({
  14656.   }, r, {
  14657.     domain: t
  14658.   });
  14659.   e.removeCookie(l, n)
  14660. })
  14661. }
  14662. function ft() {
  14663. var e = null,
  14664. n = ot();
  14665. if (n) try {
  14666.   e = t(n);
  14667.   if (e) {
  14668.     e.firstName = e.given_name,
  14669.     e.lastName = e.family_name,
  14670.     e.valid = !0,
  14671.     e.uid = e.sub;
  14672.     var r = new Date,
  14673.     i = new Date(e.exp * 1000);
  14674.     i < r && (ut(n), e = null)
  14675.   }
  14676. } catch (s) {
  14677. }
  14678. return e
  14679. }
  14680. function lt() {
  14681. return ot()
  14682. }
  14683. function ct(e, t) {
  14684. st(e);
  14685. var n = vt(e).pipe(function () {
  14686.   !t && B(null, e.source)
  14687. });
  14688. return gt(),
  14689. n
  14690. }
  14691. function ht() {
  14692. return !!ft()
  14693. }
  14694. function pt() {
  14695. n.startCall('refreshUserToken');
  14696. var r = e.Deferred(),
  14697. i = function () {
  14698.   r.reject(),
  14699.   n.doneCall('refreshUserToken')
  14700. };
  14701. return e.ajax({
  14702.   url: et() + 'api/v1/identity/token/verify',
  14703.   data: {
  14704.     client_id: E.aid || tp.aid,
  14705.     token: lt() || ''
  14706.   },
  14707.   dataType: 'jsonp',
  14708.   success: function (e) {
  14709.     !e.error && e.access_token ? ct({
  14710.       token: e.access_token,
  14711.       user: t(e.access_token)
  14712.     }).always(function () {
  14713.       r.resolve()
  14714.     })  : ut(lt()),
  14715.     i()
  14716.   },
  14717.   error: i,
  14718.   xhrFields: {
  14719.     withCredentials: !0
  14720.   },
  14721.   crossDomain: !0
  14722. }),
  14723. setTimeout(i, b * 2),
  14724. r.promise()
  14725. }
  14726. function dt() {
  14727. var t = e.Deferred();
  14728. return e.ajax({
  14729.   url: et() + 'api/v1/identity/logout',
  14730.   data: {
  14731.     client_id: E.aid || tp.aid
  14732.   },
  14733.   dataType: 'jsonp',
  14734.   complete: t.resolve,
  14735.   xhrFields: {
  14736.     withCredentials: !0
  14737.   },
  14738.   crossDomain: !0
  14739. }),
  14740. setTimeout(t.resolve, b),
  14741. t.promise()
  14742. }
  14743. function vt(t) {
  14744. var n = e.Deferred();
  14745. return e.ajax({
  14746.   url: et() + 'api/v1/identity/vxauth/cookie',
  14747.   data: {
  14748.     client_id: E.aid || tp.aid,
  14749.     token: t.token
  14750.   },
  14751.   dataType: 'jsonp',
  14752.   complete: n.resolve,
  14753.   xhrFields: {
  14754.     withCredentials: !0
  14755.   },
  14756.   crossDomain: !0
  14757. }),
  14758. setTimeout(n.resolve, b),
  14759. n.promise()
  14760. }
  14761. function mt(e, t) {
  14762. if (!e) return;
  14763. t ? e.closed || (e.closed = !0, e.config.displayMode === 'inline' ? e.container.empty()  : e.config.displayMode === 'popup' ? e.container.close()  : e.config.displayMode === 'modal' ? rt(e)  : (e.container.empty(), e.container.detach()))  : (i.send('close', {
  14764. }, e.iframeId), S = S.filter(function (t) {
  14765.   return t.iframeId !== e.iframeId
  14766. }), setTimeout(function () {
  14767.   mt(e, !0)
  14768. }, w))
  14769. }
  14770. function gt() {
  14771. S.forEach(function (e) {
  14772.   mt(e)
  14773. }),
  14774. S = [
  14775. ]
  14776. }
  14777. function yt(e, t) {
  14778. var r = it();
  14779. r.expires = 30,
  14780. n.__protected__.setCookie(c, e, r),
  14781. t || S.forEach(function (t) {
  14782.   i.send('lang', {
  14783.     lang: e
  14784.   }, t.iframeId)
  14785. }),
  14786. T.langChange.forEach(function (t) {
  14787.   t && t(e)
  14788. })
  14789. }
  14790. function bt(e) {
  14791. return T.langChange.push(e),
  14792. function () {
  14793.   T.langChange.splice(T.indexOf(e), 1)
  14794. }
  14795. }
  14796. function wt() {
  14797. return n.__protected__.getCookie(c) || ''
  14798. }
  14799. function Et(e) {
  14800. var t = {
  14801.   source: e.source,
  14802.   token: e.user_token,
  14803.   user: e.params,
  14804.   cookie_domain: e.cookie_domain
  14805. };
  14806. ct(t)
  14807. }
  14808. function St(e, t) {
  14809. var n = {
  14810.   token: e.token,
  14811.   user: e.user,
  14812.   cookie_domain: e.cookie_domain
  14813. };
  14814. ct(n, !0).pipe(function () {
  14815.   t(),
  14816.   I(n)
  14817. })
  14818. }
  14819. function xt() {
  14820. return tp.usePianoIdUserProvider === !0 || tp.usePianoIdUserProvider === 'true'
  14821. }
  14822. function Tt() {
  14823. return 'piano_id'
  14824. }
  14825. function Nt(e, t) {
  14826. N[e] = N[e] || [
  14827. ],
  14828. N[e].push(t)
  14829. }
  14830. function Ct(t) {
  14831. var n = e.extend({
  14832. }, E, t),
  14833. r = e.Deferred();
  14834. return e.ajax({
  14835.   url: et() + 'api/v1/identity/userinfo',
  14836.   data: {
  14837.     client_id: E.aid || tp.aid,
  14838.     access_token: lt(),
  14839.     form_name: n.formName
  14840.   },
  14841.   dataType: 'jsonp',
  14842.   success: r.resolve,
  14843.   complete: function () {
  14844.     return r.resolve()
  14845.   },
  14846.   xhrFields: {
  14847.     withCredentials: !0
  14848.   },
  14849.   crossDomain: !0
  14850. }),
  14851. setTimeout(r.resolve, b * 10),
  14852. r.promise()
  14853. }
  14854. function kt(t) {
  14855. var n = e.Deferred(),
  14856. r = function () {
  14857.   n.resolve()
  14858. };
  14859. return e.ajax({
  14860.   url: et() + 'api/v1/identity/socialAuthResponse',
  14861.   data: {
  14862.     response_id: t
  14863.   },
  14864.   dataType: 'jsonp',
  14865.   success: n.resolve,
  14866.   complete: r,
  14867.   xhrFields: {
  14868.     withCredentials: !0
  14869.   },
  14870.   crossDomain: !0
  14871. }),
  14872. setTimeout(r, b * 2),
  14873. n.promise()
  14874. }
  14875. var u = 'reset_token',
  14876. a = 'piano_social_token',
  14877. f = 'piano_social_response_id',
  14878. l = n.getAidSpecifiedName('__utp'),
  14879. c = '__pil',
  14880. h = '__pid',
  14881. p = 'piano-id-container',
  14882. d = 'PIANOID',
  14883. v = 'https://id.tinypass.com',
  14884. m = 'show_form',
  14885. g = 'registration',
  14886. y = 'checkout',
  14887. b = 300,
  14888. w = 600,
  14889. E = {
  14890. },
  14891. S = [
  14892. ],
  14893. x,
  14894. T = {
  14895. loggedIn: [
  14896. ],
  14897. loggedOut: [
  14898. ],
  14899. loginSuccess: [
  14900. ],
  14901. registrationSuccess: [
  14902. ],
  14903. profileUpdate: [
  14904. ],
  14905. langChange: [
  14906. ],
  14907. fire_loginSuccess: [
  14908. ],
  14909. loginDisplayed: [
  14910. ],
  14911. registerDisplayed: [
  14912. ],
  14913. loginFailed: [
  14914. ],
  14915. registrationFailed: [
  14916. ],
  14917. onShow: [
  14918. ]
  14919. },
  14920. N = {
  14921. },
  14922. C,
  14923. k,
  14924. L;
  14925. return e(window).resize(function () {
  14926. return A()
  14927. }),
  14928. {
  14929. name: 'pianoId',
  14930. init: _,
  14931. prepare: D,
  14932. show: P,
  14933. showForm: H,
  14934. loginByToken: K,
  14935. logout: Q,
  14936. getToken: lt,
  14937. getUser: ft,
  14938. getName: Tt,
  14939. isConfigured: xt,
  14940. onLoginSuccess: Et,
  14941. onProfileUpdate: St,
  14942. isUserValid: ht,
  14943. setCallbacks: X,
  14944. getIframeUrl: et,
  14945. updateLang: yt,
  14946. onLangChange: bt,
  14947. getLang: wt,
  14948. registerCallback: Nt,
  14949. __protected__: {
  14950.   offerMessageReceiver: Y
  14951. },
  14952. __private__: {
  14953.   prepareConfig: V,
  14954.   setRequestTimeout: $
  14955. }
  14956. }
  14957. }),
  14958. tp.define('pianoId', function () {
  14959. }),
  14960. tp.define('observer', [
  14961. 'util',
  14962. 'jq'
  14963. ], function (e, t) {
  14964. function s(e) {
  14965. this.callback = e,
  14966. this._isActive = !1,
  14967. this.targets = [
  14968. ],
  14969. this.timeout = 200
  14970. }
  14971. var n = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver,
  14972. r = !!n,
  14973. i = {
  14974. attributes: !0
  14975. };
  14976. return s.prototype._mutationSearch = function () {
  14977. var e = this;
  14978. this.targets.forEach(function (t) {
  14979.   var n = e._getState(t.element);
  14980.   !n === t.currentState && (t.currentState = n, e.callback([{
  14981.     target: t.element
  14982.   }
  14983.   ]))
  14984. }),
  14985. this._isActive && setTimeout(this._mutationSearch.bind(this), this.timeout)
  14986. },
  14987. s.prototype._getState = function (e) {
  14988. var t = [
  14989. ].slice.call(e.attributes),
  14990. n = t.reduce(function (t, n) {
  14991.   return t[n.name] = e.getAttribute(n.name),
  14992.   t
  14993. }, {
  14994. });
  14995. return JSON.stringify(n)
  14996. },
  14997. s.prototype.observe = function (t) {
  14998. this.targets.push({
  14999.   id: e.randomString(),
  15000.   element: t,
  15001.   currentState: this._getState(t)
  15002. }),
  15003. this._isActive || (this._isActive = !0, this._mutationSearch())
  15004. },
  15005. s.prototype.disconnect = function () {
  15006. this._isActive = !1,
  15007. delete this.targets
  15008. },
  15009. {
  15010. name: 'observer',
  15011. create: function (o, u) {
  15012.   o.length || e.error('element must be NODE');
  15013.   var a = r ? n : s,
  15014.   f = new a(function (e) {
  15015.     var n = e.map(function (e) {
  15016.       return t(e.target)
  15017.     });
  15018.     return typeof u == 'function' && u(n)
  15019.   });
  15020.   return f.observe(o[0], i),
  15021.   f
  15022. }
  15023. }
  15024. }),
  15025. tp.define('applePay', [
  15026. 'jq',
  15027. 'postmessage',
  15028. 'util'
  15029. ], function (e, t, n) {
  15030. function c(e) {
  15031. try {
  15032.   o = JSON.parse(e.data)
  15033. } catch (u) {
  15034. }
  15035. if ('startCheckout' === o.event) {
  15036.   var a = window.ApplePaySession && ApplePaySession.canMakePayments();
  15037.   t.broadcast('EVENT_APPLE_PAY_CAN_MAKE_PAYMENTS', {
  15038.     canMakePayments: a
  15039.   })
  15040. } else if (o.clientToken) {
  15041.   var c = o.clientToken;
  15042.   h(),
  15043.   p();
  15044.   var d = setInterval(function () {
  15045.     d !== undefined && i === !0 && s === !0 && (clearInterval(d), braintree.client.create({
  15046.       authorization: c
  15047.     }, function (e, r) {
  15048.       if (e) {
  15049.         t.broadcast('payment-error', {
  15050.           errorCode: 100
  15051.         }),
  15052.         n.log('[TP] Client error: ' + e.message);
  15053.         return
  15054.       }
  15055.       braintree.applePay.create({
  15056.         client: r
  15057.       }, function (e, n) {
  15058.         if (e) {
  15059.           t.broadcast('payment-error', {
  15060.             errorCode: 101
  15061.           });
  15062.           return
  15063.         }
  15064.         f = n,
  15065.         t.broadcast('applePayInit', {
  15066.         })
  15067.       })
  15068.     }))
  15069.   }, 300)
  15070. } else if (o.beginSession) {
  15071.   try {
  15072.     l = f.createPaymentRequest({
  15073.       currencyCode: o.currencyCode,
  15074.       total: {
  15075.         label: o.resourceTitle,
  15076.         amount: o.chargeAmount
  15077.       }
  15078.     })
  15079.   } catch (v) {
  15080.     t.broadcast('payment-error', {
  15081.       errorCode: 101
  15082.     })
  15083.   }
  15084.   var m = new ApplePaySession(r, l);
  15085.   m.onvalidatemerchant = function (e) {
  15086.     f.performValidation({
  15087.       validationURL: e.validationURL,
  15088.       displayName: o.resourceTitle
  15089.     }, function (e, n) {
  15090.       if (e) {
  15091.         m.abort(),
  15092.         t.broadcast('payment-error', {
  15093.           errorCode: 102
  15094.         });
  15095.         return
  15096.       }
  15097.       m.completeMerchantValidation(n)
  15098.     })
  15099.   },
  15100.   m.onpaymentauthorized = function (e) {
  15101.     f.tokenize({
  15102.       token: e.payment.token
  15103.     }, function (e, n) {
  15104.       if (e) {
  15105.         t.broadcast('payment-error', {
  15106.           errorCode: 103
  15107.         }),
  15108.         m.completePayment(ApplePaySession.STATUS_FAILURE);
  15109.         return
  15110.       }
  15111.       m.completePayment(ApplePaySession.STATUS_SUCCESS),
  15112.       t.broadcast('applePayNonce', {
  15113.         nonce: n.nonce
  15114.       })
  15115.     })
  15116.   },
  15117.   m.begin()
  15118. }
  15119. }
  15120. function h() {
  15121. if (v()) return;
  15122. d(u, function () {
  15123.   i = !0
  15124. })
  15125. }
  15126. function p() {
  15127. if (m()) return;
  15128. d(a, function () {
  15129.   s = !0
  15130. })
  15131. }
  15132. function d(e, t) {
  15133. var n = document.createElement('script'),
  15134. r = document.getElementsByTagName('script') [0];
  15135. r.parentNode.insertBefore(n, r),
  15136. n.type = 'text/javascript',
  15137. n.async = !0,
  15138. n.onload = t,
  15139. n.src = e
  15140. }
  15141. function v() {
  15142. var e = document.getElementsByTagName('script');
  15143. for (var t = 0, n = e.length; t < n; t++) if (e[t].src.indexOf(u) > - 1) return !0
  15144. }
  15145. function m() {
  15146. var e = document.getElementsByTagName('script');
  15147. for (var t = 0, n = e.length; t < n; t++) if (e[t].src.indexOf(a) > - 1) return !0
  15148. }
  15149. var r = 2,
  15150. i = !1,
  15151. s = !1,
  15152. o = {
  15153. },
  15154. u = 'https://js.braintreegateway.com/web/3.22.2/js/client.min.js',
  15155. a = 'https://js.braintreegateway.com/web/3.22.2/js/apple-pay.min.js',
  15156. f,
  15157. l;
  15158. return window.addEventListener('message', c, !1),
  15159. {
  15160. name: 'applePay'
  15161. }
  15162. }),
  15163. tp.define('applePay', function () {
  15164. }),
  15165. tp.define('idle', [
  15166. 'jq',
  15167. 'util'
  15168. ], function (e, t) {
  15169. function o() {
  15170. if (n) return;
  15171. n = !0,
  15172. e(document).on('mousemove', a),
  15173. e(document).on('keypress', a),
  15174. e(window).scroll(a)
  15175. }
  15176. function u() {
  15177. r.length && f(),
  15178. i && clearTimeout(i),
  15179. r.length && (i = setTimeout(u, s))
  15180. }
  15181. function a() {
  15182. var e = Date.now();
  15183. for (var t = 0; t < r.length; t++) r[t].startTime = e;
  15184. clearTimeout(i),
  15185. r.length && (i = setTimeout(u, s))
  15186. }
  15187. function f() {
  15188. var e,
  15189. n = [
  15190. ],
  15191. i = [
  15192. ],
  15193. s,
  15194. o,
  15195. u = Date.now();
  15196. for (var a = 0; a < r.length; a++) e = r[a],
  15197. s = u - e.startTime,
  15198. o = !1,
  15199. s >= e.idleTime && (e.consumeEventFn() ? o = !0 : e.startTime = u),
  15200. o ? n.push(e)  : i.push(e);
  15201. n.length && t.debug('idle: run fire'),
  15202. r = i;
  15203. for (var a = 0; a < n.length; a++) e = n[a],
  15204. e.callback()
  15205. }
  15206. function l(e, t, n) {
  15207. o(),
  15208. typeof n != 'function' && (n = function () {
  15209.   return !0
  15210. }),
  15211. r.push({
  15212.   callback: e,
  15213.   idleTime: t * 1000,
  15214.   startTime: Date.now(),
  15215.   consumeEventFn: n
  15216. }),
  15217. i || (i = setTimeout(u, s))
  15218. }
  15219. function c() {
  15220. r = [
  15221. ]
  15222. }
  15223. var n = !1,
  15224. r = [
  15225. ],
  15226. i,
  15227. s = 200;
  15228. return {
  15229. name: 'idle',
  15230. initialize: o,
  15231. addListener: l,
  15232. removeListeners: c
  15233. }
  15234. }),
  15235. tp.define('idle', function () {
  15236. }),
  15237. tp.define('interaction', [
  15238. 'jq',
  15239. 'util'
  15240. ], function (e, t) {
  15241. function r(r, i, s) {
  15242. var o = function (e) {
  15243.   var t = {
  15244.     click: 'click',
  15245.     doubleClick: 'dblclick',
  15246.     rightClick: 'contextmenu',
  15247.     mouseOut: 'mouseout',
  15248.     mouseIn: 'mouseenter'
  15249.   },
  15250.   n = [
  15251.   ];
  15252.   for (var r = 0; r < e.length; r++) {
  15253.     var i = e[r];
  15254.     n.push(t[i])
  15255.   }
  15256.   return n
  15257. };
  15258. typeof s != 'function' && (s = function () {
  15259.   return !0
  15260. }),
  15261. t.__protected__.documentReady(function () {
  15262.   for (var t = 0; t < i.length; t++) {
  15263.     var u = i[t],
  15264.     a = o(u.elementActions).join(' '),
  15265.     f = u.elementSelector,
  15266.     l = u.repetitive;
  15267.     a.trim().length && function (t, i, o) {
  15268.       var u = function () {
  15269.         if (!s()) return;
  15270.         o || e('body').off(i, t, u),
  15271.         r()
  15272.       };
  15273.       e('body').on(i, t, u),
  15274.       n.__private__.boundInteractions.push({
  15275.         action: a,
  15276.         selector: f,
  15277.         func: u
  15278.       })
  15279.     }(f, a, l)
  15280.   }
  15281. })
  15282. }
  15283. function i() {
  15284. e.each(n.__private__.boundInteractions, function (t, n) {
  15285.   e('body').off(n.action, n.selector, n.func)
  15286. }),
  15287. n.__private__.boundInteractions = [
  15288. ]
  15289. }
  15290. var n = {
  15291. __private__: {
  15292. },
  15293. __protected__: {
  15294. }
  15295. };
  15296. return n.name = 'interaction',
  15297. n.bind = r,
  15298. n.unbindAll = i,
  15299. n.__private__.boundInteractions = [
  15300. ],
  15301. n
  15302. }),
  15303. tp.define('interaction', function () {
  15304. }),
  15305. tp.define('require-css/css!styles/offer', [
  15306. ], function () {
  15307. }),
  15308. tp.define('log', [
  15309. 'jq',
  15310. 'util'
  15311. ], function (e, t) {
  15312. var n = function (e) {
  15313. var t = [
  15314. ];
  15315. for (var n in e) {
  15316.   var r = e[n];
  15317.   t.push(encodeURIComponent(n) + '=' + encodeURIComponent(typeof r == 'object' ? JSON.stringify(r)  : r))
  15318. }
  15319. return t.join('&')
  15320. },
  15321. r = function (t, r) {
  15322. var i = tp.getExperienceEndpoint(!1) + t + '?' + n(r);
  15323. e.ajax({
  15324.   url: i,
  15325.   dataType: 'jsonp'
  15326. })
  15327. },
  15328. i = function (e, n, i) {
  15329. var s = {
  15330.   tracking_id: e,
  15331.   event_group_id: n,
  15332.   custom_params: i || ''
  15333. };
  15334. if (!e) {
  15335.   t.log('Parameter trackingId is required to log micro conversion.');
  15336.   return
  15337. }
  15338. if (!n) {
  15339.   t.log('Parameter eventGroupId is required to log micro conversion.');
  15340.   return
  15341. }
  15342. r('/api/v3/conversion/logMicroConversion', s)
  15343. },
  15344. s = function (e, n, i, s, o, u, a, f) {
  15345. var l = {
  15346.   tracking_id: e,
  15347.   term_id: n,
  15348.   term_name: i
  15349. };
  15350. if (!e) {
  15351.   t.log('Parameter trackingId is required to log conversion.');
  15352.   return
  15353. }
  15354. if (!n) {
  15355.   t.log('Parameter termId is required to log conversion.');
  15356.   return
  15357. }
  15358. if (!i) {
  15359.   t.log('Parameter termName is required to log conversion.');
  15360.   return
  15361. }
  15362. typeof s != 'undefined' && (l.step_number = s),
  15363. typeof o != 'undefined' && (l.amount = o),
  15364. typeof u != 'undefined' && (l.currency = u),
  15365. typeof a != 'undefined' && (l.custom_params = a),
  15366. typeof f != 'undefined' && (l.conversion_category = f),
  15367. r('/api/v3/conversion/log', l)
  15368. },
  15369. o = function (e) {
  15370. typeof e == 'object' ? s(e.tracking_id, e.term_id, e.term_name, e.step_number, e.amount, e.currency, e.custom_params, e.conversion_category)  : s.apply(this, arguments)
  15371. },
  15372. u = function (e, n, i, s) {
  15373. var o = {
  15374.   tracking_id: e,
  15375.   step_number: n,
  15376.   step_name: i,
  15377.   custom_params: s || ''
  15378. };
  15379. if (!e) {
  15380.   t.log('Parameter trackingId is required to log funnel step.');
  15381.   return
  15382. }
  15383. if (!n) {
  15384.   t.log('Parameter stepNumber is required to log funnel step.');
  15385.   return
  15386. }
  15387. if (!i) {
  15388.   t.log('Parameter stepName is required to log funnel step.');
  15389.   return
  15390. }
  15391. r('/api/v3/conversion/logFunnelStep', o)
  15392. },
  15393. a = function (e, n, i) {
  15394. n || t.log('Parameter formName is required to log impression.'),
  15395. i || t.log('Parameter source is required to log impression.');
  15396. var s = {
  15397.   aid: tp.aid,
  15398.   pageview_id: tp.main.fetchPageViewId(),
  15399.   custom_form_name: n,
  15400.   custom_form_source: i
  15401. },
  15402. o = tp.user.getProvider().getToken();
  15403. return o && (s.user_token = o),
  15404. e && (s.tracking_id = e),
  15405. r('/api/v3/customform/log/impression', s)
  15406. },
  15407. f = function (e, n, i) {
  15408. n || t.log('Parameter formName is required to log submission.'),
  15409. i || t.log('Parameter source is required to log submission.');
  15410. var s = {
  15411.   aid: tp.aid,
  15412.   pageview_id: tp.main.fetchPageViewId(),
  15413.   custom_form_name: n,
  15414.   custom_form_source: i
  15415. },
  15416. o = tp.user.getProvider().getToken();
  15417. return o && (s.user_token = o),
  15418. e && (s.tracking_id = e),
  15419. r('/api/v3/customform/log/submission', s)
  15420. },
  15421. l = function (r, i) {
  15422. var s = n(i),
  15423. o = r + '?' + s;
  15424. if (navigator.sendBeacon) if (o.length > 6000) {
  15425.   var u = new Blob([s], {
  15426.     type: 'application/x-www-form-urlencoded'
  15427.   });
  15428.   navigator.sendBeacon(r, u)
  15429. } else navigator.sendBeacon(o);
  15430.  else {
  15431.   var a = navigator.appVersion.indexOf('MSIE 9') !== - 1,
  15432.   f;
  15433.   a ? f = {
  15434.     dataType: 'jsonp',
  15435.     url: o
  15436.   }
  15437.    : f = {
  15438.     type: 'post',
  15439.     url: o,
  15440.     async: !1,
  15441.     xhrFields: {
  15442.       withCredentials: !0
  15443.     }
  15444.   },
  15445.   f.error = function () {
  15446.     t.debug('Beacon request has been failed', arguments)
  15447.   },
  15448.   e.ajax(f)
  15449. }
  15450. };
  15451. return {
  15452. name: 'log',
  15453. logMicroConversion: i,
  15454. logConversion: o,
  15455. logFunnelStep: u,
  15456. __protected__: {
  15457.   logCustomFormImpression: a,
  15458.   logCustomFormSubmission: f
  15459. },
  15460. __private__: {
  15461.   doLog: r,
  15462.   logBeaconRequest: l
  15463. }
  15464. }
  15465. }),
  15466. tp.define('gaService', [
  15467. 'jq',
  15468. 'util',
  15469. 'postmessage',
  15470. 'offer',
  15471. 'myaccount',
  15472. 'pianoId'
  15473. ], function (e, t, n, r, i, s) {
  15474. function a() {
  15475. n.subscribe('loaded', function (e) {
  15476.   o && e.params && f(e.params.iframeId, o)
  15477. })
  15478. }
  15479. function f(e, t) {
  15480. n.send(u, {
  15481.   clientId: t
  15482. }, e)
  15483. }
  15484. function l(e) {
  15485. o = e,
  15486. c(o)
  15487. }
  15488. function c(e) {
  15489. h(u, {
  15490.   clientId: e
  15491. })
  15492. }
  15493. function h(e, t) {
  15494. n.broadcast(e, t)
  15495. }
  15496. var o = null,
  15497. u = 'ga.setClientId';
  15498. return a(),
  15499. {
  15500. name: 'gaService',
  15501. setClientId: l
  15502. }
  15503. }),
  15504. tp.define('pianoEsp', [
  15505. 'jq',
  15506. 'util'
  15507. ], function (e, t) {
  15508. var n = !1,
  15509. r = function (r) {
  15510. if (n) return;
  15511. var s = window.PianoESPConfig || {
  15512. };
  15513. e.extend(s, r);
  15514. if (s.id && s.visitor) {
  15515.   window.PianoESPConfig = s,
  15516.   t.debug('pianoESP: initialize PianoESP with config:', window.PianoESPConfig);
  15517.   var o = document.createElement('script');
  15518.   o.setAttribute('id', 'pnesplucidsdksel'),
  15519.   o.type = 'text/javascript',
  15520.   o.src = i() + '/public/sdk/v04/sdk.js?v=' + (localStorage && localStorage.lucidsdkver || 'xxx'),
  15521.   o.async = !0,
  15522.   document.getElementsByTagName('script') [0].parentNode.appendChild(o),
  15523.   n = !0
  15524. }
  15525. },
  15526. i = function () {
  15527. var e = '//api-esp.piano.io';
  15528. return tp.espEndpoint ? e = tp.espEndpoint : tp.isSandbox() && (e = '//sandbox-api-esp.piano.io'),
  15529. e
  15530. };
  15531. return {
  15532. name: 'pianoEsp',
  15533. __protected__: {
  15534.   init: r
  15535. }
  15536. }
  15537. }),
  15538. tp.define('versionService', [
  15539. ], function () {
  15540. function t() {
  15541. return e
  15542. }
  15543. function n() {
  15544. window.__tpVersion = t()
  15545. }
  15546. var e = '9.10.69, server-v9.10.69';
  15547. return n(),
  15548. {
  15549. name: 'versionService',
  15550. getTinypassVersion: t
  15551. }
  15552. }),
  15553. tp.define('amp', [
  15554. 'jq',
  15555. 'util',
  15556. 'api',
  15557. 'user',
  15558. 'pianoId'
  15559. ], function (e, t, n, r, i) {
  15560. function o() {
  15561. window.close()
  15562. }
  15563. function u(n) {
  15564. if (n && n.userState && e.isPlainObject(n.userState)) {
  15565.   var r = Object.keys(n.userState);
  15566.   if (r.filter(s.__private__.isUserStateNameValid).length !== r.length) return t.error('user_state accept only contain letters, numbers and underscore'),
  15567.   !1
  15568. }
  15569. return !0
  15570. }
  15571. function a(n) {
  15572. n = n ? n : {
  15573. };
  15574. var u = r.getProvider();
  15575. if (u.getName() !== i.getName()) {
  15576.   t.log('Current user provider' + u.name + ' is not allowed for amp');
  15577.   return
  15578. }
  15579. var a = n.loginSuccess && e.isFunction(n.loginSuccess) ? n.loginSuccess : o,
  15580. f = function () {
  15581.   s.__private__.bindUserWithReaderId({
  15582.   }, a)
  15583. },
  15584. l = e.extend({
  15585. }, s.__private__.globalConfig, n);
  15586. if (r.isUserValid()) {
  15587.   f();
  15588.   return
  15589. }
  15590. l.loginSuccess = f,
  15591. i.show(l)
  15592. }
  15593. function f(t) {
  15594. t = e.isFunction(t) ? t : o;
  15595. var n = r.getProvider();
  15596. n.getName() === i.getName() ? i.logout(function () {
  15597.   s.__private__.unbindUserWithReaderId(t)
  15598. })  : s.__private__.unbindUserWithReaderId(t)
  15599. }
  15600. function l(e) {
  15601. return /^\w+$/i.test(e)
  15602. }
  15603. function c(t) {
  15604. var n = {
  15605.   user_transient: !0,
  15606.   user_provider: s.__private__.composerOnlyProvider
  15607. };
  15608. t && t.readerId && (n.reader_id = t.readerId),
  15609. t && t.userToken && (n.user_token = t.userToken),
  15610. t && t.userProvider && (n.user_provider = t.userProvider, n.user_transient = !1);
  15611. if (!u(t)) return !1;
  15612. n.user_state = JSON.stringify(t.userState);
  15613. var r = function (n) {
  15614.   n.code === 0 ? t.loginSuccess && e.isFunction(t.loginSuccess) && t.loginSuccess()  : t.loginFail && e.isFunction(t.loginFail) && t.loginFail()
  15615. };
  15616. s.__private__.bindUserWithReaderId(n, r)
  15617. }
  15618. function h(e) {
  15619. var r = {
  15620. };
  15621. r.reader_id = t.getQueryParamByName(s.__private__.READER_ID);
  15622. if (!r.reader_id) {
  15623.   t.log('reader_id cannot be empty');
  15624.   return
  15625. }
  15626. n.callApi(s.__private__.unbindURL, r, e)
  15627. }
  15628. function p(e, r) {
  15629. var i = e || {
  15630. };
  15631. i.reader_id || (i.reader_id = t.getQueryParamByName(s.__private__.READER_ID));
  15632. if (!i.reader_id) {
  15633.   t.log('reader_id cannot be empty');
  15634.   return
  15635. }
  15636. n.callApi(s.__private__.bindURL, i, r)
  15637. }
  15638. var s = {
  15639. __private__: {
  15640. },
  15641. __protected__: {
  15642. }
  15643. };
  15644. return s.name = 'amp',
  15645. s.showLogin = a,
  15646. s.logout = f,
  15647. s.login = c,
  15648. s.__private__.composerOnlyProvider = 'publisher_user',
  15649. s.__private__.globalConfig = {
  15650. displayMode: 'inline',
  15651. containerSelector: 'body',
  15652. loginSuccess: s.__private__.bindUserWithReaderId
  15653. },
  15654. s.__private__.bindURL = '/amp/login',
  15655. s.__private__.unbindURL = '/amp/logout',
  15656. s.__private__.READER_ID = 'reader_id',
  15657. s.__private__.bindUserWithReaderId = p,
  15658. s.__private__.unbindUserWithReaderId = h,
  15659. s.__private__.isUserStateNameValid = l,
  15660. s
  15661. }),
  15662. tp.define('amp', function () {
  15663. }),
  15664. tp.define('performanceMetrics', [
  15665. 'postmessage'
  15666. ], function (e) {
  15667. function u() {
  15668. if (!window.performance || !window.PerformanceObserver) return;
  15669. if (typeof performance.getEntries != 'function') return;
  15670. e.subscribe(o, function (e) {
  15671.   r = e.sender,
  15672.   n = !0,
  15673.   c()
  15674. });
  15675. var t = performance.getEntries();
  15676. a(t);
  15677. var i = new PerformanceObserver(function (e) {
  15678.   a(e.getEntries())
  15679. });
  15680. i.observe({
  15681.   entryTypes: [
  15682.     'frame',
  15683.     'resource'
  15684.   ]
  15685. })
  15686. }
  15687. function a(e) {
  15688. e.forEach(function (e) {
  15689.   f(e)
  15690. })
  15691. }
  15692. function f(e) {
  15693. if (!p(e)) return;
  15694. l(e)
  15695. }
  15696. function l(e) {
  15697. if (!h()) {
  15698.   i.push(e);
  15699.   return
  15700. }
  15701. i.push(e),
  15702. c()
  15703. }
  15704. function c() {
  15705. if (!h()) return;
  15706. i.forEach(function (t) {
  15707.   e.send(s, {
  15708.     entry: t
  15709.   }, r)
  15710. }),
  15711. i = [
  15712. ]
  15713. }
  15714. function h() {
  15715. return n && r
  15716. }
  15717. function p(e) {
  15718. return t.some(function (t) {
  15719.   return e.name.match(t.resourceRegExp)
  15720. })
  15721. }
  15722. var t = [
  15723. {
  15724.   resourceRegExp: new RegExp('/checkout/offer/show'),
  15725.   label: 'showOffer'
  15726. },
  15727. {
  15728.   resourceRegExp: new RegExp('tinypass.min.js$'),
  15729.   label: 'tinypassMinJS'
  15730. },
  15731. {
  15732.   resourceRegExp: new RegExp('/xbuilder/experience/execute'),
  15733.   label: 'experienceExecute'
  15734. }
  15735. ],
  15736. n = !1,
  15737. r,
  15738. i = [
  15739. ],
  15740. s = 'EVENT_TP_PERFORMANCE_DATA',
  15741. o = 'EVENT_LOGGER_READY';
  15742. return u(),
  15743. {
  15744. name: 'performanceMetrics'
  15745. }
  15746. }),
  15747. tp.define('swg', [
  15748. 'postmessage',
  15749. 'user',
  15750. 'jq',
  15751. 'util',
  15752. 'offer',
  15753. 'eventUtils'
  15754. ], function (e, t, n, r, i, s) {
  15755. function l(e) {
  15756. if (a.hasCallback(o)) {
  15757.   var t = {
  15758.     type: 'swg',
  15759.     flow: e
  15760.   };
  15761.   a.fireCallbacks(o, t, null, !0)
  15762. }
  15763. }
  15764. function c(e) {
  15765. var t = n.Deferred();
  15766. return tp.api.callApi('/swg/check', {
  15767.   entitlement: JSON.stringify(e)
  15768. }, function (e) {
  15769.   e.code !== 0 && (r.log(e.message), t.reject()),
  15770.   t.resolve(e.CheckSubscriptionResponse)
  15771. }),
  15772. t.promise()
  15773. }
  15774. function h(t, n, i, s, o) {
  15775. tp.api.callApi('/swg/subscribe', {
  15776.   term_id: s,
  15777.   purchase_data: JSON.stringify(n),
  15778.   user_data: JSON.stringify(i)
  15779. }, function (n) {
  15780.   if (n.code !== 0) {
  15781.     r.log(n.message);
  15782.     return
  15783.   }
  15784.   var i = n.data;
  15785.   p(i),
  15786.   e.broadcast('swgCheckoutComplete'),
  15787.   t.complete().then(function () {
  15788.     l(o)
  15789.   })
  15790. })
  15791. }
  15792. function p(e) {
  15793. e && t.getProvider().loginByToken && t.getProvider().loginByToken(e)
  15794. }
  15795. var o = 'externalCheckoutComplete',
  15796. u = {
  15797. LOGIN_PROMPT: 'loginPrompt',
  15798. DEFERRED_ACCOUNT_CREATION: 'deferredAccountCreation',
  15799. BUY: 'buy'
  15800. },
  15801. a = s.createEventManager([o]),
  15802. f = !1;
  15803. i.registerCallback('showOffer', function () {
  15804. if (f) return;
  15805. (window.SWG = window.SWG || [
  15806. ]).push(function (e) {
  15807.   e.getEntitlements().then(function (t) {
  15808.     f = !0,
  15809.     console.log('* getEntitlements *'),
  15810.     console.log(t),
  15811.     t.enablesThis() && (c(t.getEntitlementForSource('google')).then(function (n) {
  15812.       if (!n) return;
  15813.       switch (n.type) {
  15814.         case 'USER_FOUND':
  15815.           var r = n.user_token;
  15816.           e.showLoginPrompt().then(function () {
  15817.             p(r),
  15818.             l(u.LOGIN_PROMPT)
  15819.           });
  15820.           break;
  15821.         case 'TERM_FOUND':
  15822.           var i = n.term_id;
  15823.           e.completeDeferredAccountCreation({
  15824.             entitlements: t,
  15825.             consent: !0
  15826.           }).then(function (e) {
  15827.             console.log('completeDeferredAccountCreation'),
  15828.             console.log(e);
  15829.             var t = e.purchaseData;
  15830.             e.purchaseData.raw.data && (t = {
  15831.               raw: e.purchaseData.raw.data,
  15832.               signature: e.purchaseData.raw.signature
  15833.             }),
  15834.             h(e, t, e.userData, i, u.DEFERRED_ACCOUNT_CREATION)
  15835.           })
  15836.       }
  15837.     }), t.ack())
  15838.   })
  15839. })
  15840. }), e.subscribe('swgCheckoutStart', function (e) {
  15841. if (!window.SWG) return;
  15842. var t = e.params.sku,
  15843. n = e.params.termId;
  15844. window.SWG.push(function (e) {
  15845.   e.setOnSubscribeResponse(function (e) {
  15846.     e.then(function (e) {
  15847.       console.log('setOnSubscribeResponse'),
  15848.       console.log(e),
  15849.       h(e, e.purchaseData, e.userData, n, u.BUY)
  15850.     })
  15851.   }),
  15852.   e.subscribe(t)
  15853. })
  15854. }); var d = !1, v = function (e) {
  15855. if (d) return;
  15856. if (e) {
  15857.   r.debug('swg: rendering swg markup with config:', e);
  15858.   var t = '{\n   "@context": "http://schema.org",\n   "@type": "NewsArticle",\n   "isAccessibleForFree": ' + e.isAccessibleForFree;
  15859.   e.isAccessibleForFree === !1 && e.productId && (t = t + ',\n' + '   "isPartOf": {\n' + '       "@type": ["CreativeWork", "Product"],\n' + '       "name" : "' + e.resourceName + '",\n' + '       "productID": "' + e.productId + '"\n' + '   }'),
  15860.   t += '\n}';
  15861.   var n = document.createElement('script');
  15862.   n.type = 'application/ld+json',
  15863.   n.innerHTML = t,
  15864.   document.getElementsByTagName('script') [0].parentNode.appendChild(n),
  15865.   d = !0
  15866. }
  15867. }, m = !1, g = function () {
  15868. if (m) return;
  15869. r.debug('swg: adding swg.js library');
  15870. var e = document.createElement('script');
  15871. e.type = 'text/javascript',
  15872. e.setAttribute('subscriptions-control', 'manual'),
  15873. e.async = !0,
  15874. e.src = 'https://news.google.com/swg/js/v1/swg.js',
  15875. document.getElementsByTagName('script') [0].parentNode.appendChild(e),
  15876. m = !0
  15877. }; return {
  15878. name: 'swg',
  15879. __protected__: {
  15880.   injectMarkup: v,
  15881.   addLibrary: g
  15882. },
  15883. registerCallback: function (e, t) {
  15884.   a.addEvent(e),
  15885.   a.registerCallback(e, t)
  15886. }
  15887. }
  15888. }), tp.define('swg', function () {
  15889. }), tp.define('fbpixel', [
  15890. 'jq',
  15891. 'util'
  15892. ], function (e, t) {
  15893. var n = !1,
  15894. r = function () {
  15895. if (n) return;
  15896. var e = tp.getFbPixelId();
  15897. if (!e) {
  15898.   t.error('fbpixel: Facebook Pixel ID is not defined');
  15899.   return
  15900. }
  15901. t.log('fbpixel: Initialize Facebook Pixel tracking', e),
  15902. !function (e, t, n, r, i, s, o) {
  15903.   if (e.fbq) return;
  15904.   i = e.fbq = function () {
  15905.     i.callMethod ? i.callMethod.apply(i, arguments)  : i.queue.push(arguments)
  15906.   },
  15907.   e._fbq || (e._fbq = i),
  15908.   i.push = i,
  15909.   i.loaded = !0,
  15910.   i.version = '2.0',
  15911.   i.queue = [
  15912.   ],
  15913.   s = t.createElement(n),
  15914.   s.async = !0,
  15915.   s.src = r,
  15916.   o = t.getElementsByTagName(n) [0],
  15917.   o.parentNode.insertBefore(s, o)
  15918. }(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js'),
  15919. fbq('set', 'autoConfig', 'false', e),
  15920. fbq('init', e),
  15921. n = !0
  15922. },
  15923. i = function (e, r, i) {
  15924. if (!n) {
  15925.   t.log('fbpixel: Skip tracking event - Facebook Pixel is not initalized', r, i);
  15926.   return
  15927. }
  15928. i || (i = {
  15929. }),
  15930. t.log('fbpixel: Track Facebook Pixel event', r, i),
  15931. fbq(e, r, i)
  15932. },
  15933. s = function (e, t) {
  15934. i('track', e, t)
  15935. },
  15936. o = function (e, t) {
  15937. i('trackCustom', e, t)
  15938. },
  15939. u = function () {
  15940. return n
  15941. };
  15942. return {
  15943. name: 'fbpixel',
  15944. __private__: {
  15945.   isInitialized: u
  15946. },
  15947. __protected__: {
  15948.   init: r,
  15949.   trackEvent: s,
  15950.   trackCustomEvent: o
  15951. }
  15952. }
  15953. }), tp.define('fbsubscriptions', [
  15954. 'jq',
  15955. 'util',
  15956. 'fbpixel',
  15957. 'offer',
  15958. 'user',
  15959. 'api'
  15960. ], function (e, t, n, r, i, s) {
  15961. function a() {
  15962. if (o) return;
  15963. n.__protected__.init(),
  15964. r.registerCallback('loaded', function () {
  15965.   var e = t.getQueryParamByName('surface');
  15966.   (e === 'meter_limit_reached' || e === 'locked_article') && n.__protected__.trackCustomEvent('ViewPaywall')
  15967. }),
  15968. r.registerCallback('loginSuccess', function () {
  15969.   n.__protected__.trackCustomEvent('LogIntoAccount'),
  15970.   n.__protected__.trackCustomEvent('CreateAccount')
  15971. }),
  15972. r.registerCallback('alreadyPurchased', function (e) {
  15973.   var t = e.rid;
  15974.   f(t)
  15975. }),
  15976. r.registerCallback('complete', function (e) {
  15977.   var t = e.rid;
  15978.   f(t),
  15979.   n.__protected__.trackEvent('Purchase')
  15980. }),
  15981. r.registerCallback('close', function () {
  15982.   l()
  15983. }),
  15984. o = !0
  15985. }
  15986. function f(e) {
  15987. if (!e) {
  15988.   t.error('fbsubscriptions: \'rid\' could not be empty on generating subscription payload');
  15989.   return
  15990. }
  15991. var n = {
  15992.   aid: tp.aid,
  15993.   rid: e,
  15994.   account_linking_token: t.getQueryParamByName('account_linking_token'),
  15995.   user_token: i.getProvider().getToken(),
  15996.   user_provider: i.getProvider().getName()
  15997. };
  15998. s.callApi('/fbia/subscriptionPayload/generate', n, function (e) {
  15999.   e && e.data && (u = e.data)
  16000. })
  16001. }
  16002. function l() {
  16003. var e = t.getQueryParamByName('account_linking_token'),
  16004. n = t.getQueryParamByName('redirect_uri');
  16005. window.location = n + '?account_linking_token=' + encodeURIComponent(e) + '&subscription_payload=' + encodeURIComponent(u)
  16006. }
  16007. var o = !1,
  16008. u = '',
  16009. c = function () {
  16010. return o
  16011. };
  16012. return {
  16013. name: 'fbsubscriptions',
  16014. __private__: {
  16015.   isInitialized: c
  16016. },
  16017. __protected__: {
  16018.   init: a
  16019. }
  16020. }
  16021. }), function (e) {
  16022. var t = document,
  16023. n = 'appendChild',
  16024. r = 'styleSheet',
  16025. i = t.createElement('style');
  16026. i.type = 'text/css',
  16027. t.getElementsByTagName('head') [0][n](i),
  16028. i[r] ? i[r].cssText = e : i[n](t.createTextNode(e))
  16029. }('/*---------------------------------------------------------------------------------------\n    Backdrop\n---------------------------------------------------------------------------------------*/\n\n.tp-backdrop {\n    display: none;\n    position: fixed;\n    top: 0px;\n    left: 0px;\n    right: 0px;\n    bottom: 0px;\n    background: #121214;\n    z-index: 300000;\n    opacity: 0;\n    -webkit-transition: opacity .25s linear;\n    -moz-transition: opacity .25s linear;\n    -ms-transition: opacity .25s linear;\n    -o-transition: opacity .25s linear;\n    transition: opacity .25s linear;\n}\n\n.tp-backdrop.tp-active {\n    opacity: .9;\n}\n\n/*---------------------------------------------------------------------------------------\n    Modal container close button\n---------------------------------------------------------------------------------------*/\n\n.tp-modal .tp-close.tp-square {\n    /*background: #578fe0;*/\n    background: #ccc;\n    border-radius: 0;\n    border: 0;\n    top: 0;\n    right: -40px;\n}\n\n\n.tp-modal .tp-close {\n    line-height: 37px;\n    display: none;\n    position: absolute;\n    top: -20px;\n    right: -20px;\n    width: 40px;\n    height: 40px;\n    /*background: transparent url("libs/img/close.png") no-repeat;*/\n    background: #ccc;\n    border: 2px solid #fff;\n    z-index: 300100;\n    border-radius: 40px;\n    opacity: 0;\n    cursor: pointer;\n    color: #fff;\n    font-family: Arial, sans-serif;\n    font-size: 22px;\n    text-align: center;\n    transform: scale(.25, .25);\n    -moz-transform: scale(.25, .25);\n    -ms-transform: scale(.25, .25);\n    -webkit-transform: scale(.25, .25);\n    -o-transform: scale(.25, .25);\n    /*-webkit-transition: all .4s ease-in-out;*/\n    /*-moz-transition: all .4s ease-in-out;*/\n    /*-ms-transition: all .4s ease-in-out;*/\n    /*-o-transition: all .4s ease-in-out;*/\n    /*transition: all .4s ease-in-out;*/\n}\n\n.tp-modal .tp-close.tp-active {\n    display: block;\n    opacity: 1;\n    transform: scale(1.0, 1.0);\n    -moz-transform: scale(1.0, 1.0);\n    -ms-transform: scale(1.0, 1.0);\n    -webkit-transform: scale(1.0, 1.0);\n    -o-transform: scale(1.0, 1.0);\n}\n\n.tp-modal {\n    z-index: 300050;\n}\n\n@media screen and (max-width: 650px) {\n    .tp-modal .tp-close {\n        right: 0;\n    }\n}\n\n\n/*---------------------------------------------------------------------------------------\n    Modal\n---------------------------------------------------------------------------------------*/\n.tp-modal .tp-iframe-wrapper.tp-curtain {\n    width: 600px;\n    height: 480px;\n}\n\n.body-fixed {\n    position: fixed;\n}\n\n.tp-modal-open {\n    overflow: hidden!important;\n    -webkit-overflow-scrolling: touch;\n}\n.tp-modal-open.tp-modal-resizing {\n    -webkit-overflow-scrolling: auto;\n}\n\n/* fix for iOS input elements bug */\n.tp-modal-experiment.body-fixed {\n    position: initial;\n}\n.tp-modal-experiment.tp-modal-open > * {\n    display: none;\n}\n.tp-modal-experiment .tp-modal {\n    position: relative;\n}\n/*Bug fix of firefox v57*/\n.tp-modal-close {\n    overflow: auto;\n}\n\n.tp-iframe-wrapper {\n    position: relative;\n    margin: 40px auto;\n    box-shadow: 0 0 10px rgba(0, 0, 0, 0.21);\n}\n.tp-modal {\n    overflow-x: hidden;\n    overflow-y: scroll;\n    display: none;\n    position: fixed;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n}\n.tp-modal .tp-iframe-wrapper.tp-active {\n    transform: scale(1.0, 1.0);\n    -moz-transform: scale(1.0, 1.0);\n    -ms-transform: scale(1.0, 1.0);\n    -webkit-transform: scale(1.0, 1.0);\n    -o-transform: scale(1.0, 1.0);\n}\n\n.tp-modal .tp-message {\n    font-family: "Graphik Web Regular", Helvetica, Arial, sans-serif;\n    padding: 10px;\n}\n\n.tp-modal .tp-btn-container {\n    padding-left: 10px;\n    padding-bottom: 10px;\n}\n\n.tp-btn {\n    text-decoration: none;\n    cursor: pointer;\n    padding: 0px 18px;\n    line-height: 40px;\n    border-collapse: separate;\n    border-radius: 4px;\n    text-align: center;\n    vertical-align: middle;\n    text-decoration: none;\n    display: inline-block;\n    color: #fff;\n    border: none;\n    box-shadow: inset 0px -1px 0px rgba(216, 218, 221, 0.0);\n    background: #3878D8;\n    background-position: bottom;\n    text-shadow: none;\n    font-family: "Graphik Web Regular", Helvetica, Arial, sans-serif;\n    white-space: nowrap;\n    outline: 0;\n}\n\n.tp-please-wait.tp-active {\n    display: block;\n    opacity: .9;\n    -webkit-transition: opacity .25s linear;\n    -moz-transition: opacity .25s linear;\n    -ms-transition: opacity .25s linear;\n    -o-transition: opacity .25s linear;\n    transition: opacity .25s linear;\n}\n\n.tp-please-wait {\n    position: absolute;\n    top: 0;\n    left: 0;\n    background-color: #999;\n    opacity: 0;\n    width: 100%;\n    height: 100%;\n    display: none;\n    text-align: center;\n    color: #fff;\n    font-weight: lighter;\n    font-family: "Open Sans", sans-serif;\n    font-size: 15px;\n}\n\n.tp-please-wait > .tp-icon {\n    width: 46px;\n    height: 46px;\n    background-image: url(\'data:image/gif;base64,R0lGODlhMAAwAOZnAJmZmbe3t7m5uf39/bu7u7a2tri4uL29vcHBwfv7+/f397+/v/n5+cXFxf///7q6uv7+/svLy8nJydHR0fPz88PDw83NzcfHx76+vvX19by8vPHx8evr6+3t7ePj47W1tefn593d3e/v79vb2+np6c/Pz/z8/NfX19/f38DAwMLCwtPT09nZ2dXV1eXl5crKysbGxuHh4fr6+vj4+MTExJqamszMzMjIyM7OzvLy8tDQ0PT09NTU1Pb29tbW1t7e3uDg4Jubm+7u7urq6tjY2Ozs7Nra2vDw8NLS0uTk5Nzc3JycnObm5ujo6LGxsbKysrOzs+Li4qKiorS0tK+vr6ysrK2traioqKSkpK6urqmpqaWlpaOjo6ampqqqqqGhoZ6enqenp7CwsKCgoKurq5+fn52dnf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpjMGY5MTc1YS1jNWIyLWQ5NDUtYTFjMS1kM2MwZjY3MmM3NWEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjkyNDJGODQzODBBMTFFNDgzNzJBMzE2M0M3NkExREYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjkyNDJGODMzODBBMTFFNDgzNzJBMzE2M0M3NkExREYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGY0YmQyN2MtY2Q5Mi0xNTQzLTk4NzgtODVmNTVmNDQxOTkyIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6YTQ3MGYzNGUtMzgwOC0xMWU0LTkwNzctZjkzMmE2MjQ3OTQ2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQQAZwAsAAAAADAAMAAAB/+AZ4KDhIWGh4iJiouMjY6IZmINK0AkHUIcHj43T2aPnwBiJSRFHZciIkcbGzk5FEctUACfi1AjQxwcpaepq60UFDsZSQW0h1grJCS4uqZCqKqswMEZGT0hXcaDUx5NykO4RaXPvdLBwtY9OQLGAAggIE3eyxxAN1BhZUFBY2EfNiDQ9eihoOCLWY4ANGDCBN68FVYYURlhraCCGTOQIGSEwIULhvBYePlkxUVBjAwY2GgEJUkSjwwvbHwEYMLFGSkZEFjEBYUHlx7ZaROEAGdKGRmyJcLhoalLA0MJpTgqQwaQRGJiRInStEHUQhOqJhgrtBAAHjG0Rmkx8yuAJmP/x5Joe8YKECBpY1z5ashKXBMmPhi6gOIukJV8DaEADNhIoSUhUEhGQSaxISeABwyQ4WlQlR+gUfiwfOiIZs2CBx0IEQJ0CtKGJpwegIPQDdass8AuZEAzBAhXB01QQlwJlt2EtPz+LYSQjxHQR4BBPujLcggKCLGIPiIIdUFLHIh3MIAQESPojXj/XiPB+ASEeLCYz2L69yBJxichVIKIfyJcfHcGGAQMMcAQARDSABEnNFiFgFIUUMAHH0Q0yAMNNrjTd1pIKOFeg5Dhw4g+WCAgFAEEIOEXhCzBQwswtgDibmOkmGIBNRSCAIw88FABdVTYGICFhHjRIw8rrLDF/25lGOBkilIYAoAESa6AhEykAQCFAE4a8ARdZ1RhJRITTPAAaVUIoCaXASJSAZll6kBFYmE88MCaYijyBQ4T6KBDCSXMGVUYBBBgpwAB2JdIFX4CigMOAYC5CABWaFCooQ8cx0gBjuJggQUVtOnIFwUcoIGlhY7UCAAGPPqpDRFEoMGSi0gxBQYH5IqqFZIeAsAUr8IawQsSqIDPGEvUUMMSZWxBBQELLIABrqZqQEaviZDxgrDESnDDBRfA0EADNFSgAgIIpJBCtNQSQKs2Y2AQa7ffhjtuuSqcmy67GEChaFRaICCBt9/CIC4N5ZqL7roLGPBuYgCEIQC44R6csB++C0CBBbZRBdGFEwZgoEIFFaRwQAFZYLGegCy3zEggACH5BAUEAGcALAIAAgAsACwAAAf/gGeCg4SFQVYpJSNRTExJShMqVEGFlZaXgmQSUSAgTSQkQxwcRUUdHUM6VpishVk8Li5MnZ+ho6YdQkIiIihPrZhSFh5JSbGznrakp7siR0cbJ1zAhWIhUR7Ex7TKuM3QGxtFBdSCGjExUdjFLj8wT1djYGBnWlMvLrzgOTkUDdQpgABBh82DDirAnhAJx4+CwwitHqBAIRBdiyrlBFGJ0s/hjh00MFH58WPiQB2UMgoK8sPjjgwZyFX6wiIEyYkLVFaS8BFmhiNYKt1QEsLmDww6Lb3w2aPHiEJkRighGsJC0ksomvZQoAAKIQsjwirRUeOqpSVMuHJ1MUiLESNh/0d4MXvJidoZM5wIUsGCxdsXdDH9wDuDgY8zQXz07YsxsCUohRkw2LHEC5HLLJA4xiRCsuQnBk6IJoJ08yUGMlJLUCFa9CrTllLLSKAkgo/bh2FXIpOgdwISJVoIb1FGdyXfCShM4DHcjHFCYExIN6FgOY/rS54Pij5dAY4V4FdoHyRlgPkBOy4gWY8k6Pgq5s8M4JACyYT7ZMafeXB+QIgp990ngH4rQGDgAC+EocOCOkigHwUGGghFEBaUYGEJ4wXgwIYQMJAdARbigEMK2lGw4YZPnRGGiDhYYEEXxo2Rw4YMOKCXIBW4aIENFZQFmxgICAFBDhUQcoWLNtgQQetOplFRQAEfRPlFIQcoGUEEL3jlmBYBPPnka4SUccOVL7wggZZmcRlAlwVMkV0lWpQpwZw3aOCjSjU4YcCaaxYwzSVizCnBDRdcgIF7GUEhgAF7rnlFK1MMWugFMDQwIDBcOPGAAJwyGsBcwIhBKKUNNEADDRg40cWUQVAyBhZWBEAAAZt2asCj5VxBAwyVmlpBBSoggEAKCyyAwQEHaKDBrA/UGsCfGYEhQKmn/hrssMUem+yytG4qhnNXdXEADdZeS6yx2nJLABRSbMbFFAioYG626T5AxZS61QDrFAIgewABATxBhhR3AhMIACH5BAUEAGcALAIAAgAsACwAAAf/gGeCg4SFggs2RCgeLlFGgk5LhpOUhjVVNz9RHh5JLi5MICBNJCQgE041lauFSEAxMZudn6GjpUMcHCFTrJVfNigor7GcnqCjpLgcRUUdZ1u9hU9GPz/Bw5vGoaQkys0dQkPRhEohIdbCMUQqTltlQUFlXU4wP7nfQiIi4wsjSuXnUESo0ssKjw7g8ok4Es3ICH/lJmgZJ4hMCIVHjmy4sYqFEYf+UgCgOAiAjYUaN2wQMElKCxYeHfIiWQhDyg05hHQxBIMIEZgsPtCcdABnDgoUQhSycuKETxYLhlKycRQpBaGDIvhoesLGSKmGAMRAumNHElWCWvhYe2In2ElW/8ruyJDhiSAELfL6oPG2Egu6dAch4cEj75W+lJwA7kFB0IoVhG0grjSkh2UFZwI8fvxgMiUcCkIreHEGiekVXjxPKiBagZEbE2IjkaLa0JUZuGecsRA7tpnahnIz2FBCh3EdaIELWsKgOYMzJaJH/6r8TBDnz21IL/G7+pkyMsLLOAMDh3kcX7yf0ZIgQfghByzIt5Da+4f27VHstmDDBtbqOuCXgA1X9BdBBA2o14EJDCZQwBkvHHigW8A9MQCDJpwBxhkPRPDChwRUh8IAJA6ghCBdfCjBilgAl0WJJM50RgorSnDDAtRNxgEEEJBYRHJn2HjDBRdAoVoLPCbJEuIhGgxJJAxkTIaCA1Ty6IEhYzRwAQwwNNAAQW9hMUACVDrAQBiTeMGllw3Q8ESO4wDgxQdHODAAlRpU4gSbNFRQAQG0UTSGEwUUgMAGJoSAAytPtNlnBSog8AEXvXyRRQABFFrABx9M1AsVj6oQKQIpCEAFFmWcUYMqYHBBxgcGGIBppoWSFAYCoiJAagoLLIDBAQdoQAABDzwggACxzhrABy2SVEYAupLaKwa/BjssscciK2sAVPT1QAq8+lqtsMMae2ysdk2GBRQY+AqsteWem4V3VTwRAAEaPGBAAWLUR1EgACH5BAUEAGcALAIAAgAsACwAAAf/gGeCg4SFghoSLSExQEonNhhZhpOUkwBnDSw/KChAMTFRHh5JLi4eFlSXlauEOkohIZudn6FJpExMICBGUKyVUhIjI0qvsp6go6W5IE0kJDxYvoViPixGwq+xs8ikLsvNJEMgAdKCAUQs1tevLQhUWGAAS2NbZzQjzM5DQxwcMNIHTpxAZ23EBS/SdOjrV6SILwE+BBJBZyFMOUFejDAs0qFDg1UtfEQcKOFioRscOHYUYmBSmQktYkZ8YNLQg5VCRHCoV0gFDx4xWzypOYmAkJwiRLAoVGWF058aiFJ6kVTEkSMnkThd8UJqpR9Xj2yIourMhAlItFr0OomM2A1w/50IwnD2LAK2lU7AzZEDiSAcOnScXYvXEBW+OSgIOaOlhGMdNwpXIkGhMgUoHxw7Jid5koXKO3bAwICjNA4tnSmFDk2kgYXXFr6kNhQmg+0MIF7AtjDbkJTbGTrYGD68bG9BPZL3oBChefPjhAAomK7gzA3nEZZAFzSGuoINFV6IfzFm+5krM9IrIPFAgnsJV8yfSZ9eiZP3N6aYL8GgP4MIYdwg4AUqmFeEfwycUUMDFzR4AU+9OSHDhDL0oF0ADcIAQ0vH/ZAAhUYMoiEMDTQgRW9WJKCiioRgUGKJUc1GggkrDlFWGCXSQEMFcnW2gglA0miIADpWYCRChakwwMSSQLqEgJEqqIAAamyVcMaSS1Y3yRUVRInAl1R4BQIEEAxw5QAHVEKFlF+mkIIBsl0kgAIOOEDmkr440WYKCyyAARQnsjKGFTnUaSeZPJTjZp9+HnBAAFZMciIUBRSQgAMi1AlBBCYd0CcGGDiqAQGkPiCAAAYYEMCqlYJgqAwY1ATGB6A6esCoBDxgKqqqsloAAU0MQAJhNW1hgKi46npqqqsGUGkBYnTGhROklrors6t+UAV0XHghxgcBpFoAFFnEZ1IgACH5BAUEAGcALAIAAgAsACwAAAf/gGeCg4SFZ1UEFzonI0pEKxEHhpOUlV4VPiwsRiONISE/KChAKC9WlaiFVREnJ0REm51Kn6GjMVFRPmKplV8NLS0+rbBGnLOgtrceHkk6XLyFVjo8wMKumsa0yVHLSS4xU9CDKys81MEnJQdVgjU1YFhZCCfczC4uTEwI0ARISOTnaGjhVcWCPXwgQFxIVWDCBH/kbnQRJ0iLD4QJm1SoVEWHDof+CFAsBINJRhIkPkwaY6OER4e7RhoC0QQlCRBYDKXAUaKnjpgyCwmwOYSDj0JaLODgWUJAUEo3hhTlwAEKIRoWsuKg8bSSEaocivwYFMaGjawWcnad5CVskQ4d/2ISiGDWBoa1lVbAhTtBkIQIgCNMxDspC1whQjicufKicQSuhClFQSxCxJMnEiQ0Vhl50ovKlRsQyJw5TOdJTyofOeIDwY3XEk5TWn1kgwcaFy68XiK7UJkNwDdwgJE7d43ehIJsyMF8QwMY0GEcR96OefMKMBpopz6oDIXvFIRg0L6du6AdO767MNCAhvvB1KegR2+EivsKFZyYt5ChfwYJW+CHnyTckdCDf1MEgUAFKjT4DHU9RNgDBWacMUWDCCDAWW8jKOBhDycIgkWGJH6B3AweemiVIA9kmEIKBvQGwgw0KgACIV28mMICC1Bx2gQMBEljAIUUwCOPGFwRGdMCMgQZJAqGgHEAkhgcoORaCCQgQ5MM7AAfjhiEecCYpzy1QgJobimDSJRYMeaYGhAwxRgjZUGCCSagqaUNqVABZ5wEPCCGiak8gcIAA+CppzhVaABooA8IMIUXUoARBAAABHEGFRlQAAEEiCaapwUUbSEAAZAKoKoBBgQQQAEFfPCBEA448GmoJsygQVBPpCoAq66+GusHENR66wBnJPHlSFxMoeqvrboKq6xFGPtpEU4RJgUVrEYrrKwH0JpACBueJoUWWTzxAaxQOGFFGAFUKE4gACH5BAUEAGcALAIAAgAsACwAAAf/gGeCg4SFS2QGFRETLS0rOA0EVYWUlZaDVws6SCsrPC0+PidELCxGRA1kl6uFXg06ExOcno2ipKYjI0oTWayXYyklJbCynZ+go6VGuUohITZSvoVkETg4wrBInMe2yrrOPyhKTtKCUDYWFtfDExICXlJmgmZcVRhI3yHhKEAL0gER0Km7tiCMLy8S9KHgByQGDVZQIkgUSGNLOUFXJjCMESNKikteXryQGNDAxUIqGnb04AGKpQsSJIyM0OtkoQArWQLhQknDjZgyrdisFIClhyRJdBS6cuHGTwkfhlpqgNSFVXKDFlzYesOfVEs+rLpgQmTQFhgwtl7g+bWSlrFM/0CAqFmgAVoYAtpeKiFXLg5BFRoIhoFFryUrcps0cXFmCw3BDbwarhSiCYnLTrLQ2EzjyWRLMC5frhCggukKXT5XcjKk9RAkGk5XGKOaUhcOuDn8WKCit4ralMDk5sAkBYLjCIAXqlGkeREOyI8rJxSkg/UORTCk2J4iyPRBQq43ecB9QZnvZ8IIWS8EyJQF8BcU/v5EhH0RPqzEx1Bz+osjR9hHGAYEYmDSd0lsAOARnh3goIPRKEfFBhRuIMQSZzjx4AGeKXdCDjlQyIMgXBygwYka0FZbFRRQAGIOHZ5RwIkEEDAFcFG02KIHhGBR44+TfFZCBjvs0GIBhTxR49IDTKZm2AIZRFlkCJUIwOQDAgjg5Fcp9NBDlBlsYBElWzCZpQAGqCKVDgoo4GWUeVnixZkG1OnEeRchNsMMbXr5AitVoFlnAIRaoSIrITCgKJ9tKuWLFoMSGkABBTihxRdajFFDDWNcUYAORSQgg6IM7KnAn+VgUYCklH5wQBEOOAABBAPUaoIJCYg6qqI7EGCTGVQQ2ioHscpKq6245rorEHo50SoExc5a6wC35ioqCQFM9kUVU3QQ7bHU4jrDCDcCl8UOIIigALU9tGdDAWBcFAgAIfkEBQQAZwAsAgACACwALAAAB/+AZ4KDhIVBV1AYMBE4JRYSCAVeQYWVlpeCYQQRFjiNOjoTSCsrPC1IKV6Yq4VaKhE2NhadJSWho6UtLT4nNlasqwcvLxGws422oqSmuycnRDfAlV4wEhLExrTJuKa8zywsJ2LSgk8XN9bXxQ0FgmVBQWBSZAQ43kTgRiMC0lMX/+iuaegC7EoDfCz0jRiBgJUYGDD+nUvBhZygLhaMKFQS4gAmLQ0aQPw3xWKhCAs5hgjxxFIZFSFFwiBjspIGlT9+jPhSyUAFGjRC0qxZ6UOInChQRCjUpYJToC2JWkLwIykQIOMGEVDhtAIBqZhWoLgao8UgLAhUqK0gBSwmIDH/4kb5dQYKgrsq2rm9ZCNGlL9La2C4e7fiXktk/nrwAOQMlhSQU2g4jInF4iRJqFRZsAByVsqVKmBO4gIBFM6ct4C2RMWFaxclBGDAwLnM6kpbXDDZPULD7NmUbhfaDQJElAPIkQMQTghA8efJlTMn1KR6EyYPNGifPF3QFxLgSUQJsF0DmO5ntoQnEcIJgfcEDE+HMqT+kAn04FdBL4GDfw4qcEHAAwR+gJ4HRRThnxM1CECgAALwxFwWHXSQYBOCZAEhhFRMx0OFFZYgiBQbCmCAbbeRIYIQLHbwGRQmGmBAVKv9IMKNQjQ2CBcyGhBAAKqAZsMRR9woQkmEiOHj2I8BqHbYARtsQKQILFRiRgFMFlDAFXsdkEMOUW5QBEGVYPGjlgV8kAVYFlBAwZdRrqIFmgQ0MQAJHVpUhQc77ODml9Gs4kWaIDhgqANA0IiJGEb0kEEGfrqJgzRhfGCCA0IYCgEEOaxgwBlSLLEEF1oEgAMHCijgKKR+msQFBYduCsEAtJqQwK0yMMDADDOk2sOqRxBlwA6azlqrrbjququvjv7glgAdbErrACYgm0CuuvaaKhOfHlYACzMce+u12M6QARHMLVHACyEUkQOvRwwxwg1TmGFRIAAh+QQFBABnACwCAAIALAAsAAAH/4BngoOEhYJPGhUSNjYvMBhnV4aTlJRdAhcSLxERNhYWOCUlOhMlC5KVqYRXCxc3EpqcnqCipBNIKxJkqpVlDzAXrrCbnZ+hOqS4Kzw8DWO8hVcVDcCury+bs8cTtyvLLS0r0INUNA3n1TcqU2FfZjU1ZmdeBi+4POA+PicP0E4VNMxRgyFgCzQV+FrsO0HkgCoqFSIGbOBw3KAXC4kQYdGP0hUVKiIChGKxkAaGG1kYoUJpAQKQEUtOepLSiBEiUgwVQMDzpReZk6aoHEH0RaEtKZLyFAOUUgqiI5QoYTnIwIIFSQU0rVRCaogQE2oI4nL1aoqtlcJ8DfHjRxVBTv8wYLg6BW0lCW1/oLhxJogGuXLtptKLAkUIQQcSH9AqmFILFEAiZzmj+ICVxpQQAInBeYETDaAPYME8KQtnzhYKgAZNmlKU11F8CCBAm0DrSR5ye/hRm/btQjVyJ0niQcCD4w/E/h40fHgUA8g7Lj9TxoV1FyimCNjOePoZJuCZGBHDXUDO6U5AqAeBw8t2AwZ+TofRZP0ZKfDh153+g0ST/ywFYEAABHpHwoEkMCGIFQQSONlvKwwxxIE4CPJFgwEUsBwHHEpI1RlPZFhAAUy1pkQRHHIQgnL3jTjiB61J0EEHRaD4RCFZFPDBjjA2poEQM9J4QlA7IpCDAx7YhYHECCIIASQJBhnCxY4dOOAABDygdQSTTQphQFofWAnBmEPIREYMG2ywJZMwqMLDlWMOIOcZJPFCBAU5pKmmCBFAU8KYEMg5gAkmCKGDhWfUMMYVUFgAwg47UIBnmke0OQ4GDAg6qAkJJCCDDAwwMIMCCvTQQwYZRIpnDh0EIFMXHshJaKeegioqqaWiqioFRkQJlAEczNrpp6GOSuqpqe7ggYZ21QDFCGcMG+qtx2aQwwlPsNiYGVPYoESZpObQhBIS9DhOIAAh+QQFBABnACwCAAIALAAsAAAH/4BngoOEhTVbVAYYNDCNKgRPXTWFlJWWglxTFQ0wFxc3EhIvERE2Ni8PXZerhVsENDQNnJ6goqQ2FhY4JTRXrJdgBSoVFbGcnbWjpbm7JTopv5RdGAjDxcbIoMq4OLs6OhMWZNGCVSkI1dY0KVBXUmdLS4JaATfN4BNISB/RWSnn6IYZUPULwbd8SFaseMCKzIIF/9AxJCcozIV8CnnwKHBpC4aHEFMYmERRUJAGGXm0aGGlkhkCGD4+zFKSkgGNK30gGUPpyYEDMTG0rGkz54kTDQpx0fDzJz+ilS74OHqCyLhBHzQwPRCAJFRDNqoSYWEDgKAvBAho1fD10hUiY/9ZsNAiiEratFDaXroh14iRCmdqGLhLQO+lKn5HjCAS5MuDxw8CGL60QvEIJV60CIBcZbKlBUpCK3lARYBpAVw8V6ISonWIC1BOC1BdqUvrHz8mfDDAW4A82oTK4P6BgkUB3ryDACdkBoVzFCM+BJgeQPlyQWaAaAeiZAr1AL+vn4lBPsYIJ9/LiD8TJkr5FVYCFJi/XpCHKPgjXJlPfz0NDwB6gMEX833wwRPrKZHEgh50NoWBBq7nwoRJAKEcGQh0MEAOKlw3ARMTuiCBIGNs4MCJDiBIWxUggMDEi50JYgKKEBRh3WRBGNFEiyCcYJYgBZwIwZBMqOYDCU3sCALqFYUAMSQEAwyAw2QNDEHClU1MQMkWM0AZpZR6NcABB1aSkMQ7lDzwZZQmuHAjRTWwUMSYZA6RlyUvfGmCCQmc4URJWaDQQQdzjrkAKxMMsGcCjMoQwxS/ICiCEEIMOicM0bzAJ6MJyCADAyKcEYAXZ4ABxhdeFGDDGRscIcKkg3bQITkCZNDopwwwMIMCCvSQQQY7UEBBDhu0+uqkTTxF0RY/dIrrDLv2+muwwxJrrAgtpAbVFEzkqmu0vgJLrbVH/KBiWwA44cMO0UorrrA5dIBEFj96tsQTF7DgghBHHNGBBz7A4ER4vwQCACH5BAUEAGcALAIAAgAsACwAAAf/gGeCg4SFQVhZHwQpKhUIGAFOZ0GFlZaXglhPCykICI0VNDQNDTAXDQZhmKuVAQucnZ8VoaMwphc3EimsrFAHGK+cnqCipaY3uRIvB7yVWwQHv8DCn42jpRe4EsoRETfNg2QaGtG/rwRUXWNLNTVLY2FQCMkv3TYWU81WBATj0RhQpPB6Vi+CjXsWBLDywo8fuQJjwGVSYdCCBRw4VmF58KChhiwAJA4CEMAixhIlqlwKIIAjP1UiC1E5WUKHhS+VxAjYyRFmTJkodeiYoKLSzqNWfl4SMHTCBCSFnhgwsBNKSKWVAMBwigSJBEIBpk6NiNXSlq4r0g6yEqCtASpl/zGpSMuDx64zBdq2xRnXUpi6PFqsWHJGbwAofTFZaMG4xZkrBSIH8JL4EoEWPjILsBI5ssDKlar4OEGahpMPqAuAAV2JC2nSOAQMGTDkASXWhMAQ2U1khQsHwD3UwE0oCIvjLE6YAO5AxnDigoIYmW6EiALmDvhCBzOi+wgfIhxAGK8FeibvIyYAGT/egPkzWZTIV3IDB/sBE94vCME/xIEPAwQ4wBHvtfDDgSGcYYYMAg7wBHReoCDhD0oQNkKAZ5iAAnQRACEhChcI8oEJJJKYFGtXxBADECyeeMYQJCaQAAlXJQYAD1GoGMMKhAgg449QVdaABx5EkaMYlfwog9gMd8VlQBJEFllCJV30sKQMDDCAQFwCuOBCElCiwMUlS2bJwAwT1CgRABeAwISXYK5ig5kzzKAAEypJpAULTbj5pgtbspJlnQoo0MMISLJixQokkNCnn+BEQGihPWSQQRMRfBBGGUEEUUYXUNwQAwccDNHoo4E2Q0AOlFaawQ4UUJDDBhscIYIIQnRQBKmmOprET12c0YOrO8AqK6224qrrrkOYygMWWAXggqXGHlvrrbnqSuoIiPWF2Aax5jDrtcp2QIIOiYJmxhk3nJAEB7iSEAUPDSgoUSAAIfkEBQQAZwAsAgACACwALAAAB/+AZ4KDhIU1Ul5OAQ8ajQZQVVg1hZSVloJfWQIEjQcHGBgLCykICClQXJeqhVJQDwSwnZ+ho6UqKhUEW6uXZlQCAg+vnBqeoKKkCLgVNDQGYLyFXAXAwcOcxqEpycs0DQ0qV9GCVwbm1cIGVliCQUGCXWIH3d8wMGLRXgEB58BO4wa8NbB34QKUVWH27TMH5cu4QQcGFrxxA5+laQr3OZn0UFANAgUv3JAgQRylJVMKqNynpSOlJyJJSrhQhpKVDypVtnT5kuSLFxE0FPryoShOKjwtYfgZoWkYQhVyDBCCwGJSSjVUNI1gQ8UgJw7COthw9VIXrjYsWOgiaIRYBzn/yl7CoFYtgTNLGEAQG0DuJbU4cESoMQWCYQgU/F66gaOE4zARDkPgodiSAccldEwJMaDzgAeVK3nRQVrHAg6eB1QJTQnLhNcTYOwYcKZzKtaFXiNBYkGBid8mauIetGT3ihU6fAMXPhzv8eM6KCSYnqD5oDI8svMoQYJ6AjLWBbUY3+KFEuoywp+x4sPHeBUSZMhPH/7AiRPtAzyRz4CBiPAT3HefFkvs0F9/UzRXBQtENMjDOz4cOMMPzUnAwoVEeHWGEzN0OIMCVlWmxQhGGHGhSWe48KECCjDxTmU16DACiUZYQMgULLLYAxChWaCEEjOOsBohIyjQw5EZvKAY2gYhNPnjDa0d0UMGVCYpFwYo/PBDk0Q4REkAVWawAwU/cNRRjECgkOWWSFlCg5hjUkCBB1l0REYLMcSQZpZ3qRJBnBTksMEGRDzBSxY6eBBFFHmmmUI0DciZg6AbHCGCCy9MocUYYJgxxhVPwPCDC0l4oGijQo0TQBGUHmGpCEJ0UAQHHAxBQhMggMCEC6SaGoUSIUbDxQmDvipErLPWSsKtuvJaqgcWSHEVFCgY24GstNrKbLMu8FCnX4hyECu2ym4bhQRDhraEGBUgoUQSukYxQgkpWPFiNIEAACH5BAUEAGcALAIAAgAsACwAAAf/gGeCg4SFg1QfAQ+LBU+Gj5CRglYBApaLBAQaGgcHGAdnWJKjhE8BBgaWApianJ4YCwsCpJJZAbeoqqybnbCxKQgFtIVYHwW3uKmrD5munr/ACClhw4LGBce4U2RcYGc1NUFlWFkGvwgIKioVVLRaH/DYt1lfpFIf0esVFY6SFiEyNiAw5mRMtTNfBKjbR4OGJA0OHAxwcOSDFwAHBQFwwpBGgwZaHoVhENFBggGiMhIi0/BjAxoGC3mAQDMiCpWGyHyEAeOCIQEDaNL0gfPRE54XkhKqUWTAGZocij4CcCDphRspBk0ZwJVrFqmPuFy9IUECoa4DboJ99KBs2VmC/0yY4NpvbaEuZV+8uBGkgFy5QuxCovEiguEzNhIoNjFB8KMPhg1DQaFY8QfHhrTY2GxDw5nKCUJiJvTFgmkLDc7IWC2jzGhCZk5bMMtaRpDXg2rg2I3DAoPfvzHi/laieAkcZ4AzcD3cjI7nOmycmUF9xpXhZ6RM2K7jgpHqCgJg97J9O4IXCtIrsIBdAJL3SM58UK9gCPYXK/Kv8GKGQo//PTiB2xU8FLjCBEsI0kMGDBqBWwUttFAgAoI8wSCDO1gxWhc++BBhC6LVkEQGO5QYg3B2ARDBCR36EAEhH5RIwYzsCbYAESfk6IOGhIQwIwU55ADKWlOwwAIROMJgSM0XIgCZwwYbYAAWFCMYYSQRLUjxiABBQrnBETagWA0AKSgxQpVGSnKDl0eIIMIPZBx0xQQhmHmmEQ+MYsOXboogRAc8fDVKFS+g8EMIdZ65AC0w9PlnB0VwgMIFTnRRRjhlbOGECifEAAQKhiKqxJDDcCDEo5FyMAQJTYAAAhMuJOGBB1F4CuqhRtQ1zBZndABppEOs2uqrsc5aq60oSFfUFGekuiqrrsJa7LFArGBXDWKc0cSzw0oraxRACFLDaJs2FgUTSaDAgg2LHhQIACH5BAUEAGcALAIAAgAsACwAAAf/gGeCg4SFgldZUAUCBgUfYl5chpOUlVUfAZkGBgKdDw8EoWKSlaWFYgWpmQGbnQKgoRoaBwGmpWFnH7qqmpyeoQSzBwcYU7aGBxAmTQQfvKy+r7HCGBgLB8eDLw7cDiDOBVBnUmdBAGdLYGdVAdQL7ylZxzwQEN0JH1Zjx0/V8CkInJjCMaCePQcbymQbZAAegodUKh0YMOCMwQwfFhKiAvChChVXJmGZQZEihBIaDWnxqKICAoWFgJgoOUBFyklaPlbYKcCQiZ8UV9yk5GQnjaOEAAxJ8NPEmRpDKRE42qABtkEJsjIVE5WSlKpVYWwRZERrgh9dKxloAKNtrTMK/2TIyJq2Epa2Fy40qPFBrtwOdSupyHvhxpkIDBIz0BGY0pQbkG84CaGYQWNKVyRolvBgyIwZiUNeLjRm84sKOT5/3jeaEJgXsF/AgKug9rnWg4JE2B3hRe3fuJPaGD78SI/jPYITsmBhuIQzyHvgUv6FOfMGRDJoz1BA+RktOMLjwHBhewYc3gOUWF/iA5Qd8Hd4P3NDB3stS0RQ2E+BK+4wE0yggw44BHHGCvxRcEJwCAQYIAaDUJDDhBtU0doWKyCh4QSDAOBBDhuECERrEqxgIhKGERLiBkccEcFlGrTAAw8mWkiIESweIYIIGgT2hA8tyMgDDYZsUYSOOwrxQMJaBJxwApAtIPHFJAbsKIIQHXTw3FAvEOHkky2UcoEQWGZZxAheaBQGDiyw4KWTPZmSZQdFcMDBEBPYWIoXN4wwghFtegnhMXTaeScJJITQgCBjLHHGPhH5EEIISvwJKAsGLGRAE3YOgWgTIIDAhAtJeOBBFDEAgcIPP1DqpxE++KeRD0N4SgKoopJqKqqqrjpppS+kpcStoY6q66mpouBrCBzWdQ4OLuR6LKrJGrHobZdRsYAFLIQQQwwj+BBBjxoFAgAh+QQFBABnACwCAAIALAAsAAAH/4BngoOEhWYBZ1ZiUAUFH09ZWlKFlJWWg1MhCQ5CBx8fjQGiAQYBVJOXqYQGRRCuDg5Fn6GiBgYCuFNcqpddHgMDrhCwDrMFo7a4Ag8PT7yUGjPAwK+cxsi3uA8EBAJbz4I2JuPTrhQZWYI1AEFnUl5T2tvcGmTgCQnkwChQvF9U8who0HAgXSob+PCNI0EFnKAxUwQSPHDAyqUHMmQkNLECgENCViYewIChS6UuOzJqTIDgI6UrFEkuOACGEgoGDFS2dPlS5oIFHwoFwEkUCU9LVH4uSJHi2yAQM2bgBOHxaCUDS1MgeDAIioKoUQ1apfSFKYKzWAQRUcB2hpKxl/8+nEWgYsoZMzvYsnUC1xIXuipUIGjXo7CCIX0vaajAuMIWCRkyFMaR2JKTxhWoGIkc2W5lSltoiKYRgAnnDJ8tNVjdAIOIHbB3lEldaAnrBipyUNhNoQZtQjVgCIfRQDfvdr/VXVh+AUaRHNBzJB+0hPkFGklybNg+fdCN7zcQnNi+vd/0MBLSSyAAY8OR9y+6f3jxIv2TJ+9FiPDQnUYE+i9ccUYR+uknVmpd2BDBghIMIoIQELaQHAY2VBgBAYI4AWEHHNqTGhYWhGiBDWEMggKHHRTxVmoN4IBDiDQQMkWKRRTBQYOVCVDCji56UcgJNnLAwRBc9SXGBDrsWELWCpRgAYKQQwxBgpFITICkDjaMUUkBQ5LgZRMwWEXACkhUiWQVl9DgJQlNgADCCVp81IUEPKxAZpWIpCIBm26CwIQLlPGiBQ0+tNBCnWRiyIsKbfrpggtJeECECllgAUYNNYCBRRUY6EDECScUykOdH33gARN/JhFpFDHEAAQKP4QQwggjGMHCp6EaOsGBz2AxwaOResCqq7DKqkStLNwKqg8wfGGVEycEy+qrxYZwrK3KWmBRX1ZEAESr1MZqba1G+FCBh6llQSEPRlhLxAQ3EFDFEg4FAgAh+QQFBABnACwCAAIALAAsAAAH/4BngoOEhWBnFigdPSYmCkIgO1aFlJWWhCMzCY0DnRCfDg4dU1Vfl6eFASQyCa2cnhChDhAfHwVOUqinKAwyrK4mnQOgoUW1BQUBVGa6hQ87DNG+wMLERQe2yAEBBVjNgi8zM9G9rB06BVpjQUFjXgFaTtnb2wZazRMKCuLkIU/NVpLVMyCgCqoXPfTtmwEiyzdBZZwEMEBRgAAvlwT02KhwwsNCZCpafOCt0oYMGxOm+Eipi0UBDx4YqKQkg02UC1hWchnzAYF/hArs2HGzhE5LVnwSWFpSkAcKQ3d4OHppylICGgoMekKhK1SDVCuNwaqhLBdBPHLk6Eok7KUnZf8PHHByZkkHtWrFuLUkRa5cDTWebBi8gcneSwYOYFiMpcERwhEOW8qyGMMCKz6OaD4CRXIlLAtCL5gSQ4RpEWE8UyojesGDIadFqKYUJIXtFBg6CNktJMjsQgiCBy/SoXiHGr8JCUeQoonxDoeSC1JBXcUCFEWyF+ki/cyYCuAraFjBoTwHutK3hK8QgIZ5Dhe6O6FBnwYVJ0PyD/nRfUGD/zRscQYIJBRIwiS/YQHDfw1UIEgJBTbRhEe/CXABDBgGIAgVEjYBAggYqcbFBSReyJ0gRnwIAhMnzJbCDTeQmNNWHzLBhAsweFaABDzCeEUhE9zoggtJzLSXFS+8wKPVBBpUEsOQSXjggYZhZRHBlUrGV8kUSUQpZRQOHhWABTZcGcELIVaCgJQeRBFDDEj8+FBjOFhA5pWdndJAm28CgQIKEqR5SRgp6FACDnWSSSUqC/TpJwo/hLDCAlWcJYgZUnghwAtITGDooXZO8dATPzwaaQhKjGAECywQcYIPLfCwwgqdelpCCTaA9ZAUifwQqRKprtrqqy3ESusEtiIwBlVUIBECqiOoyqqrsBp77AWCUlXFBSxEuyoR1BYr6wQpyKlaFQRcUAIPJ5yAhA00GJAtKoEAACH5BAUEAGcALAIAAgAsACwAAAf/gGeCg4SFZlM3I0NHCjM5RSEvBUuFlZaXglBEGTMMnjIyCaImJgMzLAWYqpVMCq6dn6EJpAO1AxAdAquqIRk9ro2woKOlthAQDjsLu5UbGb6/wbHExscODhRczIISOzvPvq5DJQFnXEtLUloGKzm3yNcmH2HMJRQU3s89Rk67T0DwHID48MHLqhs57uHb4aHKNkFZGAxoQuBDgQJXVG3IkfCehYeFshC8WKCcpS0dNmxMeABkpSskAwT4QKkQiyMqVbZ0WWlLSZkBshSaIuKI0Q02eF7yAtSAAW2DgIiYegSFUkxPAjg1AGWQEyFCpoogcxXTVgECpAgq0QGskBZl/zFRQYtW6BkSHfJ2sBu30he6aM84KVIkr4e+mKY8WPyAiwoOhItIQHypymICBMgg4cCZA+VLXDBjdvJjyBDOWz5XAiOaQIEkpk2DUV1Jg20ND0jo1g2ANiEAB4IHb0KceG/fg4Qf0OCBOAgQZZAPwkAdw4MRz5+nll6mOgYDOpiIZyJGuqAF6BdAQcDEhXsa5sWkSF+Finv3RsxrSME/BZYzUSQhYEPIcYHAgQhgUMMZEXjgoAcf+VaACgh2dUYWDkahYUaqSVGBCiCq8J8gLWgYQwwr0KZBBSyqQAAhTpwYAxBAIPDZEzTQwGIFXRRSwoxAoIDCB4iR0cCRORpQCc0XIQiJwg8h7HQVGRfAcGQDKkRXCRRCQhlCCEkphcgFVR6pBSYYeBmCEiPgQM9DXKQgwQ1kVtmPKgh8yeYIRrAAw5mrbKFBBC9IMCeZRO7ywJ5G9EnECTq0pFYQQWgZAAw2RECooTfc8MRDThDBJwssPOqDDy3wsAISE0ygQwk4WGBBppteYJBLEpD66Amoprpqq6/GOqumL2BQlhU47Nqrqqy6WgKss9pQAaBxkYHACqjywCywz+IQgQa+BcGUCi/g8KoNF2AAxRVBPBQIACH5BAUEAGcALAIAAgAsACwAAAf/gGeCg4SFghJnTRtnPWdDIzZThpOUkzVPJxsZPT0KCjMzDAwyMglnRlA1lauEBR47OxmbnZ+ho6UJCSZDBqyVW0YUwrGznqCipLm6JgMeW76FAR05OcPEtMejyibMAwMzGNCCMBvl1cNNFlNXY6pfgjpCy94DEBAl0C9HR+bVLGK+oKCgV8/eClYXRIjYVy6GuEFUOJyxB8GBAwuVDAhRuPDIQ0M87Fl04IELJRJCNioM97GQipEJZEwxY4hIh5spNbScRMPBAAcdPlgp9KRIkZsdXuykxMLEBgQFCkgZVEMJB6NFQiytJOZD1AJOIHIYe7XKVkplvgYI8O4MjiFD/8YePEvJytq1Q80wIQF3CBW6le4GKCCIhGESKABXgrLWgIGpTSKTgKGYEhnHjrWUAMG5yZPKk6QYEEBazAjOnLuAnkSa9JQYTGIzWc26dQAXuHHTLlTjge8HApLkdqFq9yACyAk8QJGkeRIwxo8nN3DCg3UP0aUjL4DjepQs2bFoGK/ByYIo6GMgyG7lgPsDZLLEmB/jRHYD7w+YRBEDiH8y0WEg4AE6nSEBECgkqNRuUyywgICfnVFFgij88EMYu6XgoIMmnVHDChaGEIIOtAmQgoYL9ALRDyKGoMRqYiAg44nPEBKBi0qMMEJlXqiggoxQGSIFCzmOYAQqgFVQgbyPCCxAiWlGGsECCyztBAUNNCjp4xWVEHDklEScEMFOBzTQAJZK/rUKBmCecIIPLVQgzgMXwACDmViG5QsBRIT5Zgst8BCBAACaUUMNZnwRxgcqSHDDBXWa2YCa0IjBw5+BrrACEhPoUEIJOFhgQwQRvODoo3VWwOVHX8AAZ6acdvppqKOWKoGjkD5QxlZkvMCDprF6CqqopJrqaAqr0qVFChMEO6uoo75wwwOq0abFGSlcEIEFFrxAw1KBAAAh+QQFBABnACwCAAIALAAsAAAH/4BngoOEhUFiND4eRUdHQi4sF05BhZWWl2cAWRMdORQUOzsZGT09CgozFD5iAJiuhE4oRxsbOZ6go6WnMzMMDC5Tr5hcLSIis7W3oqSmqL4MMjI/wpVTTULGjbTKuafOvtEJGQbUgiodHULYxxsgZwVeX2BgZ16D4DIJ+iYv1DBFRdCtIwJF2BQg+fQlMGFiwqsUHDgERAckSzlBTobsMzFggARMUIZElNiBBaWLgpYkYcix4wNLUpIMERmxAcpKOFp2nLGl0gQSQEXavIlzwJkBECAAKUSlSROgJE4QveQCaVIIBQYBOAHCaZMRJ6caKpLUgYMhg6qAWNvVithLT//MmqUwRtALJkzWInmLiYLcDWTOBInhwgVevpgE5BjQAUGwKoULh0CM6cmHyx/GYEjCOclQypW0FBhdIEwED6g9OAF9iXQBKy1SewjD2lKA2wGcKInCO0qZ2oWW4A4wJUSM4zHMACcUZPgH48iVLxcUxIB1AwVYANmOou50QdcNfECCojyKLt8FCVgvAMqNH/B/UEnPhb0AKhp+hNifIn2VBwAKoAUZ++3HQ3oBAAigFEGwoMSDI1QxnRQEVEiAAILQMMKGI3y0HBQWEjDfGVpsaIQRLGixnAYsakCAFIIAYAGKLLCAQw2s1RDAAQew+AEhZNTIAhFE3MDaBxjwyCPqF4XAQOQJUL6EmBULYJDkAU9UMgYPUJ7gQwsYvpVFCgtUiYEG0hVihZdftsBDAzjeVIMBCKRAZpk9XRJAmzzwsIKRNxGAwKB2LhCYKw+46ecKSEygAjVdGFBBBSoMWueIrxSwaKMT6FCCBAbYc8YSS5whxRVQpNAADZOqUCkCbpVTRQlIcOopDjhYYEMEEbwgwQ0XXABDA6u2ugB6KI2BwASdllBCrrr26iuwwhLLagUB0DOVFg14+qwF0b4wbbDDrqpBnnx1QYANudqwq7i/kkvDB1gAV0MXUGigwgU33NDAAgKIsUWc1AQCADs=\');\n    margin: 100px auto 20px auto;\n}\n\n/*---------------------------------------------------------------------------------------\n    Close Button\n---------------------------------------------------------------------------------------*/\n\n.tp-iframe-wrapper.no-width .tp-close,\n.tp-iframe-wrapper.no-height .tp-close,\n.tp-modal.no-width .tp-close,\n.tp-modal.no-height .tp-close {\n    display: none;\n}');
Add Comment
Please, Sign In to add comment